YITH WooCommerce Compare - Version 2.5.3

Version Description

Released on 14 July 2021

  • New: support for WooCommerce 5.5
  • New: support for WordPress 5.8
  • Update: YITH plugin framework
Download this release

Release Info

Developer yithemes
Plugin Icon 128x128 YITH WooCommerce Compare
Version 2.5.3
Comparing to
See all releases

Code changes from version 2.5.2 to 2.5.3

Files changed (71) hide show
  1. init.php +5 -5
  2. plugin-fw/.distignore +29 -0
  3. plugin-fw/.jshintrc +26 -0
  4. plugin-fw/Gruntfile.js +198 -0
  5. plugin-fw/assets/css/scss/yith-plugin-ui/_variables.scss +1 -1
  6. plugin-fw/assets/css/scss/yith-plugin-ui/components/_buttons.scss +1 -0
  7. plugin-fw/assets/css/scss/yith-plugin-ui/components/_confirm.scss +1 -0
  8. plugin-fw/assets/css/scss/yith-plugin-ui/mixins/_buttons.scss +2 -0
  9. plugin-fw/assets/css/scss/yith-plugin-ui/mixins/_tables.scss +12 -1
  10. plugin-fw/assets/css/yit-plugin-panel.css +268 -0
  11. plugin-fw/assets/css/yith-fields.css +24 -3
  12. plugin-fw/assets/css/yith-icon.css +19 -7
  13. plugin-fw/assets/css/yith-plugin-ui.css +28 -3
  14. plugin-fw/assets/fonts/yith-icon.eot +0 -0
  15. plugin-fw/assets/fonts/yith-icon.ttf +0 -0
  16. plugin-fw/assets/fonts/yith-icon.woff2 +0 -0
  17. plugin-fw/assets/js/wp-pages.js +51 -9
  18. plugin-fw/assets/js/wp-pages.min.js +1 -1
  19. plugin-fw/assets/js/yith-fields.js +304 -271
  20. plugin-fw/assets/js/yith-fields.min.js +1 -1
  21. plugin-fw/assets/js/yith-ui.js +8 -4
  22. plugin-fw/assets/js/yith-ui.min.js +1 -1
  23. plugin-fw/bin/clean-language-files.js +36 -0
  24. plugin-fw/bin/download-translations-config.json +27 -0
  25. plugin-fw/bin/download-translations.js +57 -0
  26. plugin-fw/composer.json +24 -0
  27. plugin-fw/dist/gutenberg/index.asset.php +1 -1
  28. plugin-fw/dist/gutenberg/index.js +1 -1
  29. plugin-fw/docker-compose.yml +76 -0
  30. plugin-fw/includes/builders/elementor/class-yith-elementor.php +20 -15
  31. plugin-fw/includes/builders/gutenberg/class-yith-gutenberg.php +12 -7
  32. plugin-fw/includes/class-yit-ajax.php +10 -2
  33. plugin-fw/includes/class-yit-assets.php +23 -2
  34. plugin-fw/includes/class-yit-help-desk.php +187 -0
  35. plugin-fw/includes/class-yit-plugin-panel-woocommerce.php +4 -0
  36. plugin-fw/includes/class-yit-plugin-panel.php +117 -26
  37. plugin-fw/includes/class-yith-system-status.php +3 -3
  38. plugin-fw/init.php +2 -2
  39. plugin-fw/languages/yith-plugin-fw-el.mo +0 -0
  40. plugin-fw/languages/yith-plugin-fw-el.po +192 -77
  41. plugin-fw/languages/yith-plugin-fw-es_ES.mo +0 -0
  42. plugin-fw/languages/yith-plugin-fw-es_ES.po +206 -79
  43. plugin-fw/languages/yith-plugin-fw-it_IT.mo +0 -0
  44. plugin-fw/languages/yith-plugin-fw-it_IT.po +206 -80
  45. plugin-fw/languages/yith-plugin-fw-nl_NL.mo +0 -0
  46. plugin-fw/languages/yith-plugin-fw-nl_NL.po +209 -80
  47. plugin-fw/languages/yith-plugin-fw.pot +190 -76
  48. plugin-fw/package.json +49 -0
  49. plugin-fw/phpcs.xml +52 -0
  50. plugin-fw/phpunit.xml.dist +15 -0
  51. plugin-fw/templates/fields/ajax-posts.php +23 -9
  52. plugin-fw/templates/fields/image-dimensions.php +27 -0
  53. plugin-fw/templates/fields/text-array.php +52 -22
  54. plugin-fw/templates/panel/help-tab.php +211 -0
  55. plugin-fw/templates/panel/woocommerce/woocommerce-form.php +1 -1
  56. plugin-fw/tests/bootstrap.php +167 -0
  57. plugin-fw/tests/framework/fixtures/panel-all-options.php +240 -0
  58. plugin-fw/tests/framework/helpers/class-yith-plugin-fw-panels-helper.php +83 -0
  59. plugin-fw/tests/framework/plugin-options/wc-panel-options.php +43 -0
  60. plugin-fw/tests/unit-tests/class-yith-plugin-fw-tests-plugin-panel-wc.php +49 -0
  61. plugin-fw/tools/local-env/docker/phpunit/Dockerfile +12 -0
  62. plugin-fw/tools/local-env/install-wp-tests.sh +154 -0
  63. plugin-fw/tools/local-env/mysql-init.sql +7 -0
  64. plugin-fw/tools/local-env/phpunit-config.ini +6 -0
  65. plugin-fw/tools/local-env/scripts/docker.js +6 -0
  66. plugin-fw/tools/local-env/scripts/install.js +15 -0
  67. plugin-fw/tools/local-env/scripts/start.js +7 -0
  68. plugin-fw/tools/local-env/yith-plugin-fw-loader.php +50 -0
  69. plugin-fw/yit-functions.php +144 -3
  70. plugin-fw/yit-plugin.php +3 -2
  71. readme.txt +11 -4
init.php CHANGED
@@ -3,17 +3,17 @@
3
  * Plugin Name: YITH WooCommerce Compare
4
  * Plugin URI: https://yithemes.com/themes/plugins/yith-woocommerce-compare/
5
  * Description: The <code><strong>YITH WooCommerce Compare</strong></code> plugin allow you to compare in a simple and efficient way products on sale in your shop and analyze their main features in a single table. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>.
6
- * Version: 2.5.2
7
  * Author: YITH
8
  * Author URI: https://yithemes.com/
9
  * Text Domain: yith-woocommerce-compare
10
  * Domain Path: /languages/
11
- * WC requires at least: 4.5
12
- * WC tested up to: 5.4
13
  *
14
  * @author YITH
15
  * @package YITH WooCommerce Compare
16
- * @version 2.5.2
17
  */
18
 
19
  /*
@@ -75,7 +75,7 @@ if ( ! function_exists( 'yith_plugin_registration_hook' ) ) {
75
  register_activation_hook( __FILE__, 'yith_plugin_registration_hook' );
76
 
77
  if ( ! defined( 'YITH_WOOCOMPARE_VERSION' ) ) {
78
- define( 'YITH_WOOCOMPARE_VERSION', '2.5.2' );
79
  }
80
  if ( ! defined( 'YITH_WOOCOMPARE_FREE_INIT' ) ) {
81
  define( 'YITH_WOOCOMPARE_FREE_INIT', plugin_basename( __FILE__ ) );
3
  * Plugin Name: YITH WooCommerce Compare
4
  * Plugin URI: https://yithemes.com/themes/plugins/yith-woocommerce-compare/
5
  * Description: The <code><strong>YITH WooCommerce Compare</strong></code> plugin allow you to compare in a simple and efficient way products on sale in your shop and analyze their main features in a single table. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>.
6
+ * Version: 2.5.3
7
  * Author: YITH
8
  * Author URI: https://yithemes.com/
9
  * Text Domain: yith-woocommerce-compare
10
  * Domain Path: /languages/
11
+ * WC requires at least: 5.3
12
+ * WC tested up to: 5.5
13
  *
14
  * @author YITH
15
  * @package YITH WooCommerce Compare
16
+ * @version 2.5.3
17
  */
18
 
19
  /*
75
  register_activation_hook( __FILE__, 'yith_plugin_registration_hook' );
76
 
77
  if ( ! defined( 'YITH_WOOCOMPARE_VERSION' ) ) {
78
+ define( 'YITH_WOOCOMPARE_VERSION', '2.5.3' );
79
  }
80
  if ( ! defined( 'YITH_WOOCOMPARE_FREE_INIT' ) ) {
81
  define( 'YITH_WOOCOMPARE_FREE_INIT', plugin_basename( __FILE__ ) );
plugin-fw/.distignore ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hidden files and folders
2
+ .*
3
+ .*/
4
+ */.*
5
+
6
+ # NPM, composer, grunt and other utilities
7
+ *.lock
8
+ node_modules
9
+ vendor
10
+ package.json
11
+ package-lock.json
12
+ composer.json
13
+ Gruntfile.js
14
+
15
+ # Local environment and scripts
16
+ bin
17
+ tests
18
+ tools
19
+ docker-compose.yml
20
+ docker-compose.yaml
21
+ phpunit.xml
22
+ phpunit.xml.dist
23
+ phpcs.xml.dist
24
+
25
+ # Gutenberg blocks sources
26
+ includes/builders/gutenberg/src
27
+
28
+ # SCSS folder
29
+ assets/css/scss
plugin-fw/.jshintrc ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "boss": true,
3
+ "curly": true,
4
+ "eqeqeq": true,
5
+ "eqnull": true,
6
+ "es3": true,
7
+ "expr": true,
8
+ "immed": true,
9
+ "noarg": true,
10
+ "onevar": true,
11
+ "trailing": true,
12
+ "undef": true,
13
+ "unused": true,
14
+
15
+ "browser": true,
16
+
17
+ "globals": {
18
+ "_": false,
19
+ "Backbone": false,
20
+ "jQuery": true,
21
+ "console": true,
22
+ "alert": true,
23
+ "JSON": false,
24
+ "wp": false
25
+ }
26
+ }
plugin-fw/Gruntfile.js ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const potInfo = {
2
+ languageFolderPath: './languages/',
3
+ filename : 'yith-plugin-fw.pot',
4
+ headers : {
5
+ poedit : true, // Includes common Poedit headers.
6
+ 'x-poedit-keywordslist': true, // Include a list of all possible gettext functions.
7
+ 'report-msgid-bugs-to' : 'YITH <plugins@yithemes.com>',
8
+ 'language-team' : 'YITH <info@yithemes.com>'
9
+ }
10
+ };
11
+
12
+ module.exports = function ( grunt ) {
13
+ 'use strict';
14
+
15
+ var sass = require( 'node-sass' );
16
+
17
+ grunt.initConfig( {
18
+ dirs: {
19
+ css : 'assets/css',
20
+ scss: 'assets/css/scss',
21
+ js : 'assets/js'
22
+ },
23
+
24
+ uglify: {
25
+ options: {
26
+ ie8 : true,
27
+ parse : {
28
+ strict: false
29
+ },
30
+ output: {
31
+ comments: /@license|@preserve|^!/
32
+ }
33
+ },
34
+ common : {
35
+ files: [{
36
+ expand: true,
37
+ cwd : '<%= dirs.js %>/',
38
+ src : ['*.js', '!*.min.js'],
39
+ dest : '<%= dirs.js %>/',
40
+ rename: function ( dst, src ) {
41
+ // To keep the source js files and make new files as `*.min.js`:
42
+ return dst + '/' + src.replace( '.js', '.min.js' );
43
+ }
44
+ }]
45
+ }
46
+ },
47
+
48
+ // Compile all .scss files.
49
+ sass: {
50
+ compile: {
51
+ options: {
52
+ implementation: sass,
53
+ outputStyle: 'expanded'
54
+ },
55
+ files : [{
56
+ expand: true,
57
+ cwd : '<%= dirs.scss %>/',
58
+ src : ['*.scss'],
59
+ dest : '<%= dirs.css %>/',
60
+ ext : '.css'
61
+ }]
62
+ }
63
+ },
64
+
65
+ jshint: {
66
+ options: {
67
+ jshintrc: '.jshintrc'
68
+ },
69
+ all : [
70
+ '<%= dirs.js %>/*.js',
71
+ '!<%= dirs.js %>/*.min.js'
72
+ ]
73
+ },
74
+
75
+
76
+ // Watch changes for assets.
77
+ watch: {
78
+ css: {
79
+ files: ['<%= dirs.scss %>/**/*.scss'],
80
+ tasks: ['sass']
81
+ }
82
+ },
83
+
84
+ makepot : {
85
+ options: {
86
+ type : 'wp-plugin',
87
+ domainPath : 'languages',
88
+ domain : 'yith-plugin-fw',
89
+ potHeaders : potInfo.headers,
90
+ updatePoFiles: false
91
+ },
92
+ dist : {
93
+ options: {
94
+ potFilename: potInfo.filename,
95
+ exclude : [
96
+ 'bin/.*',
97
+ 'dist/.*',
98
+ 'node_modules/.*',
99
+ 'tests/.*',
100
+ 'tmp/.*',
101
+ 'vendor/.*'
102
+ ]
103
+ }
104
+ }
105
+ },
106
+ update_po: {
107
+ options: {
108
+ template: potInfo.languageFolderPath + potInfo.filename
109
+ },
110
+ build : {
111
+ src: potInfo.languageFolderPath + '*.po'
112
+ }
113
+ },
114
+
115
+ // PHP Code Sniffer.
116
+ phpcs: {
117
+ options: {
118
+ bin: 'vendor/bin/phpcs'
119
+ },
120
+ dist : {
121
+ src: [
122
+ '**/*.php', // Include all php files.
123
+ '!bin/**',
124
+ '!dist/**',
125
+ '!node_modules/**',
126
+ '!tests/**',
127
+ '!tools/**',
128
+ '!tmp/**',
129
+ '!vendor/**'
130
+ ]
131
+ }
132
+ }
133
+
134
+ } );
135
+
136
+ grunt.registerMultiTask( 'update_po', 'This task update .po strings by .pot', function () {
137
+ grunt.log.writeln( 'Updating .po files.' );
138
+
139
+ var done = this.async(),
140
+ options = this.options(),
141
+ template = options.template;
142
+ this.files.forEach( function ( file ) {
143
+ if ( file.src.length ) {
144
+ var counter = file.src.length;
145
+
146
+ grunt.log.writeln( 'Processing ' + file.src.length + ' files.' );
147
+
148
+ file.src.forEach( function ( fileSrc ) {
149
+ grunt.util.spawn( {
150
+ cmd : 'msgmerge',
151
+ args: ['-U', fileSrc, template]
152
+ }, function ( error, result, code ) {
153
+ const output = fileSrc.replace( '.po', '.mo' );
154
+ grunt.log.writeln( 'Updating: ' + fileSrc + ' ...' );
155
+
156
+ if ( error ) {
157
+ grunt.verbose.error();
158
+ } else {
159
+ grunt.verbose.ok();
160
+ }
161
+
162
+ // Updating also the .mo files
163
+ grunt.util.spawn( {
164
+ cmd : 'msgfmt',
165
+ args: [fileSrc, '-o', output]
166
+ }, function ( moError, moResult, moCode ) {
167
+ grunt.log.writeln( 'Updating MO for: ' + fileSrc + ' ...' );
168
+ counter--;
169
+ if ( moError || counter === 0 ) {
170
+ done( moError );
171
+ }
172
+ } );
173
+ if ( error ) {
174
+ done( error );
175
+ }
176
+ } );
177
+ } );
178
+ } else {
179
+ grunt.log.writeln( 'No file to process.' );
180
+ }
181
+ } );
182
+ } );
183
+
184
+ // Load NPM tasks to be used here.
185
+ grunt.loadNpmTasks( 'grunt-wp-i18n' );
186
+ grunt.loadNpmTasks( 'grunt-phpcs' );
187
+ grunt.loadNpmTasks( 'grunt-sass' );
188
+ grunt.loadNpmTasks( 'grunt-contrib-watch' );
189
+
190
+ // Use uglify-es (instead of uglify) to uglify also JS for ES6.
191
+ grunt.loadNpmTasks( 'grunt-contrib-uglify-es' );
192
+
193
+ // Register tasks.
194
+ grunt.registerTask( 'js', ['uglify'] );
195
+
196
+ grunt.registerTask( 'css', ['sass'] );
197
+ grunt.registerTask( 'assets', ['js', 'css'] );
198
+ };
plugin-fw/assets/css/scss/yith-plugin-ui/_variables.scss CHANGED
@@ -18,7 +18,7 @@ $delete_focus: #f0d2cd; // Text on delete buttons
18
  // Outline is used to stylize Secondary buttons.
19
  $outline_text: #0087b3; // outline button - text color
20
  $outline_border: #0094c4; // outline button - border color
21
- $outline_bg: #ffffff; // outline button - background color
22
  $outline_bg_hover: rgba(157, 198, 205, .2); // outline button - background color on hover
23
  $outline_border_hover: #007ba3; // outline button - border color on hover
24
  $outline_focus: #dfeef2; // Outline focus color, for buttons
18
  // Outline is used to stylize Secondary buttons.
19
  $outline_text: #0087b3; // outline button - text color
20
  $outline_border: #0094c4; // outline button - border color
21
+ $outline_bg: rgba(255, 255, 255, 0); // outline button - background color
22
  $outline_bg_hover: rgba(157, 198, 205, .2); // outline button - background color on hover
23
  $outline_border_hover: #007ba3; // outline button - border color on hover
24
  $outline_focus: #dfeef2; // Outline focus color, for buttons
plugin-fw/assets/css/scss/yith-plugin-ui/components/_buttons.scss CHANGED
@@ -17,6 +17,7 @@
17
  display: inline-block;
18
  text-decoration: none;
19
  cursor: pointer;
 
20
 
21
  &:focus {
22
  outline: none;
17
  display: inline-block;
18
  text-decoration: none;
19
  cursor: pointer;
20
+ white-space: nowrap;
21
 
22
  &:focus {
23
  outline: none;
plugin-fw/assets/css/scss/yith-plugin-ui/components/_confirm.scss CHANGED
@@ -20,6 +20,7 @@
20
  cursor: pointer;
21
  display: inline-block;
22
  margin-right: 10px;
 
23
 
24
  &:last-child {
25
  margin-right: 0;
20
  cursor: pointer;
21
  display: inline-block;
22
  margin-right: 10px;
23
+ white-space: nowrap;
24
 
25
  &:last-child {
26
  margin-right: 0;
plugin-fw/assets/css/scss/yith-plugin-ui/mixins/_buttons.scss CHANGED
@@ -8,6 +8,8 @@
8
  cursor: pointer;
9
  transition: all .3s ease-in-out;
10
  text-decoration: none;
 
 
11
  &:focus {
12
  outline: none;
13
  box-shadow: none;
8
  cursor: pointer;
9
  transition: all .3s ease-in-out;
10
  text-decoration: none;
11
+ white-space: nowrap;
12
+
13
  &:focus {
14
  outline: none;
15
  box-shadow: none;
plugin-fw/assets/css/scss/yith-plugin-ui/mixins/_tables.scss CHANGED
@@ -133,7 +133,6 @@
133
 
134
  tbody tr th, tbody tr td {
135
  background: transparent;
136
- border-radius: 5px;
137
  vertical-align: middle;
138
  padding: 25px 0 25px 25px;
139
  }
@@ -142,6 +141,18 @@
142
  padding-right: 25px;
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  tbody tr:hover {
146
  background: var(--yith-table-row-highlight);
147
  }
133
 
134
  tbody tr th, tbody tr td {
135
  background: transparent;
 
136
  vertical-align: middle;
137
  padding: 25px 0 25px 25px;
138
  }
141
  padding-right: 25px;
142
  }
143
 
144
+ tbody tr th:first-child,
145
+ tbody tr td:first-child {
146
+ border-radius: 5px 0 0 5px;
147
+ }
148
+
149
+ tbody tr th:last-child,
150
+ tbody tr td:last-child {
151
+ padding-right: 25px;
152
+ border-radius: 0 5px 5px 0;
153
+ }
154
+
155
+
156
  tbody tr:hover {
157
  background: var(--yith-table-row-highlight);
158
  }
plugin-fw/assets/css/yit-plugin-panel.css CHANGED
@@ -78,6 +78,242 @@
78
  margin : 0;
79
  }
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  /**
83
  Post type Edit
@@ -773,6 +1009,10 @@ button#yith-plugin-fw-float-save-button {
773
  transition : 0.3s ease-in-out;
774
  }
775
 
 
 
 
 
776
  button#yith-plugin-fw-float-save-button.visible {
777
  display : flex;
778
  }
@@ -793,6 +1033,17 @@ button#yith-plugin-fw-float-save-button.green {
793
  transition : all 0.8s linear;
794
  }
795
 
 
 
 
 
 
 
 
 
 
 
 
796
  /* === Responsive === */
797
 
798
  @media (max-width : 767px) {
@@ -803,6 +1054,23 @@ button#yith-plugin-fw-float-save-button.green {
803
 
804
  }
805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
806
  @media (min-width : 768px) and (max-width : 992px) {
807
  }
808
 
78
  margin : 0;
79
  }
80
 
81
+ /**
82
+ Help tab
83
+ */
84
+
85
+ .yith-plugin-fw-panel-help-tab-container {
86
+ background-color : #fff;
87
+ padding : 60px 25px;
88
+ }
89
+
90
+ .yith-plugin-fw-panel-help-tab-content {
91
+ background-color : #f4f4f4;
92
+ border-radius : 15px;
93
+ max-width : 1100px;
94
+ margin : 0 auto;
95
+ padding : 40px 40px 60px;
96
+ }
97
+
98
+ .yith-plugin-fw-panel-help-tab-content p,
99
+ .yith-plugin-fw-panel-help-tab-content a {
100
+ font-size : 16px;
101
+ }
102
+
103
+ .yith-plugin-fw-panel-help-tab-content .row {
104
+ margin : 0 -15px 50px;
105
+ white-space : nowrap;
106
+ }
107
+
108
+ .yith-plugin-fw-panel-help-tab-content .row:last-child {
109
+ margin-bottom : 0;
110
+ }
111
+
112
+ .yith-plugin-fw-panel-help-tab-content .row .column-left,
113
+ .yith-plugin-fw-panel-help-tab-content .row .column-right {
114
+ display : inline-block;
115
+ padding : 0 15px;
116
+ vertical-align : top;
117
+ width : 66%;
118
+ }
119
+
120
+ .yith-plugin-fw-panel-help-tab-content .row .column-right {
121
+ width : 33%;
122
+ }
123
+
124
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video,
125
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-actions,
126
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles,
127
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
128
+ box-sizing : border-box;
129
+ white-space : normal;
130
+ }
131
+
132
+ .yith-plugin-fw-panel-help-tab-content h2.yith-plugin-fw-panel-help-tab-title {
133
+ background : none;
134
+ border : none;
135
+ font-size : 22px;
136
+ line-height : 1.5em;
137
+ padding : 0;
138
+ text-align : center;
139
+ }
140
+
141
+ .yith-plugin-fw-panel-help-tab-content h3 {
142
+ color : #03689f;
143
+ font-size : 15px;
144
+ }
145
+
146
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-panel-tab-description {
147
+ font-size : 18px;
148
+ text-align : center;
149
+ margin-bottom : 40px;
150
+ }
151
+
152
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video {
153
+ text-align : center;
154
+ }
155
+
156
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video p.video-description {
157
+ margin-bottom : 25px;
158
+ }
159
+
160
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-caption p {
161
+ margin : 5px 0;
162
+ }
163
+
164
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-container {
165
+ margin : 0 auto 50px;
166
+ overflow : hidden;
167
+ padding-top : 56.25%;
168
+ position : relative;
169
+ }
170
+
171
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video .video-container iframe {
172
+ border : 0;
173
+ height : 100%;
174
+ left : 0;
175
+ position : absolute;
176
+ top : 0;
177
+ width : 100%;
178
+ }
179
+
180
+ .yith-plugin-fw-panel-help-tab-content .box-with-shadow {
181
+ display : block;
182
+ background-color : #fff;
183
+ border-radius : 5px;
184
+ box-shadow : 0 0 15px 5px rgba(174, 201, 207, 0.3);
185
+ transition : all .2s ease;
186
+ }
187
+
188
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions,
189
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
190
+ margin : 0 auto;
191
+ max-width : 640px;
192
+ }
193
+
194
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions:not( .full-width ) {
195
+ padding-top : 65px !important;
196
+ }
197
+
198
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li {
199
+ margin-bottom : 20px;
200
+ }
201
+
202
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li > a {
203
+ display : block;
204
+ padding : 15px 20px 15px 75px !important;
205
+ text-decoration : none;
206
+ }
207
+
208
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li:hover {
209
+ box-shadow : 0 0 15px 5px rgba(177, 220, 228, 0.6);
210
+ transform : scale(1.04);
211
+ }
212
+
213
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li a:before {
214
+ color : #03689f;
215
+ float : left;
216
+ font-family : 'yith-icon';
217
+ font-size : 36px;
218
+ line-height : 1;
219
+ margin-left : -50px;
220
+ -webkit-font-smoothing : antialiased;
221
+ -moz-osx-font-smoothing : grayscale;
222
+ }
223
+
224
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.read-documentation a:before {
225
+ content : '\f10d';
226
+ }
227
+
228
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.watch-videotutorials a:before {
229
+ content : '\f10e';
230
+ }
231
+
232
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li.check-faqs a:before {
233
+ content : '\f10c';
234
+ }
235
+
236
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 {
237
+ margin : 0 0 5px;
238
+ }
239
+
240
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 a {
241
+ color : #03689f;
242
+ text-decoration : none;
243
+ }
244
+
245
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li .description {
246
+ margin : 0;
247
+ font-size : 14px;
248
+ }
249
+
250
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li .separator {
251
+ display : inline-block;
252
+ margin : 0 5px;
253
+ }
254
+
255
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3 {
256
+ font-size : 18px;
257
+ margin : 0;
258
+ padding : 10px 0;
259
+ position : relative;
260
+
261
+ }
262
+
263
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3:before {
264
+ content : '';
265
+ background : #03689f;
266
+ display : block;
267
+ height : 100%;
268
+ left : -40px;
269
+ position : absolute;
270
+ top : 0;
271
+ width : 15px;
272
+
273
+ }
274
+
275
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles a.button {
276
+ font-size : 16px;
277
+ }
278
+
279
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list {
280
+ margin : 15px 0 30px;
281
+ }
282
+
283
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li {
284
+ display : block;
285
+ margin-bottom : 10px;
286
+ }
287
+
288
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li:before {
289
+ content : '-';
290
+ }
291
+
292
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list a {
293
+ text-decoration : none;
294
+ }
295
+
296
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket > .box-with-shadow {
297
+ padding : 30px !important;
298
+ }
299
+
300
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket h3 {
301
+ color : #b90a0a;
302
+ font-size : 18px;
303
+ margin : 0 0 15px;
304
+ }
305
+
306
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket p {
307
+ margin-bottom : 35px;
308
+ }
309
+
310
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket .button {
311
+ border-radius : 7px;
312
+ display : block;
313
+ font-size : 15px;
314
+ padding : 7px 15px;
315
+ text-align : center;
316
+ }
317
 
318
  /**
319
  Post type Edit
1009
  transition : 0.3s ease-in-out;
1010
  }
1011
 
1012
+ .ywtenv-is-sandbox button#yith-plugin-fw-float-save-button {
1013
+ bottom : 100px;
1014
+ }
1015
+
1016
  button#yith-plugin-fw-float-save-button.visible {
1017
  display : flex;
1018
  }
1033
  transition : all 0.8s linear;
1034
  }
1035
 
1036
+ .rtl button#yith-plugin-fw-float-save-button {
1037
+ right : auto;
1038
+ left : 70px;
1039
+ }
1040
+
1041
+ .rtl button#yith-plugin-fw-float-save-button i {
1042
+ margin-left : 8px;
1043
+ margin-right : 0;
1044
+ }
1045
+
1046
+
1047
  /* === Responsive === */
1048
 
1049
  @media (max-width : 767px) {
1054
 
1055
  }
1056
 
1057
+ @media (max-width : 992px) {
1058
+ .yith-plugin-fw-panel-help-tab-content .row {
1059
+ white-space : normal;
1060
+ margin-bottom : 0;
1061
+ }
1062
+
1063
+ .yith-plugin-fw-panel-help-tab-content .row .column-left,
1064
+ .yith-plugin-fw-panel-help-tab-content .row .column-right {
1065
+ width : 100%;
1066
+ margin-bottom : 50px;
1067
+ }
1068
+
1069
+ .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions {
1070
+ padding-top : 0 !important;
1071
+ }
1072
+ }
1073
+
1074
  @media (min-width : 768px) and (max-width : 992px) {
1075
  }
1076
 
plugin-fw/assets/css/yith-fields.css CHANGED
@@ -1811,21 +1811,24 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1811
  border : 0;
1812
  }
1813
 
1814
- /** MULTI SELECT **/
1815
- .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select {
 
1816
  display : inline-block;
1817
  width : 30%;
1818
  margin-right : 3%;
1819
  max-width : 400px;
1820
  }
1821
 
1822
- .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select label {
 
1823
  display : block;
1824
  font-size : 11px;
1825
  font-weight : 600;
1826
  margin : 0 0 10px 0;
1827
  }
1828
 
 
1829
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select select,
1830
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select span.select2 {
1831
  width : 100% !important;
@@ -1948,6 +1951,24 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1948
  border-color : #007694;
1949
  }
1950
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1951
  /**
1952
  * Copy to clipboard
1953
  */
1811
  border : 0;
1812
  }
1813
 
1814
+ /** MULTI SELECT AND TEXT ARRAY INLINE STYLE **/
1815
+ .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select,
1816
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text {
1817
  display : inline-block;
1818
  width : 30%;
1819
  margin-right : 3%;
1820
  max-width : 400px;
1821
  }
1822
 
1823
+ .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select label,
1824
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text label {
1825
  display : block;
1826
  font-size : 11px;
1827
  font-weight : 600;
1828
  margin : 0 0 10px 0;
1829
  }
1830
 
1831
+ .yith-plugin-ui .yith-plugin-fw-text-array-inline .yith-single-text input,
1832
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select select,
1833
  .yith-plugin-ui .yith-plugin-fw-multi-select .yith-single-select span.select2 {
1834
  width : 100% !important;
1951
  border-color : #007694;
1952
  }
1953
 
1954
+ /**
1955
+ * Image dimensions
1956
+ */
1957
+ .yith-plugin-ui .yith-plugin-fw-image-dimensions > div {
1958
+ display : inline-block;
1959
+ width : 30%;
1960
+ margin-right : 3%;
1961
+ max-width : 100px;
1962
+ }
1963
+
1964
+ .yith-plugin-ui .yith-plugin-fw-image-dimensions label {
1965
+ display : block;
1966
+ font-size : 11px;
1967
+ font-weight : 600;
1968
+ text-transform : uppercase;
1969
+ margin : 0 0 10px 0;
1970
+ }
1971
+
1972
  /**
1973
  * Copy to clipboard
1974
  */
plugin-fw/assets/css/yith-icon.css CHANGED
@@ -6,10 +6,10 @@
6
  /* stylelint-disable function-url-quotes, declaration-colon-newline-after */
7
  @font-face {
8
  font-family: yith-icon;
9
- src: url("../fonts/yith-icon.eot?0e894d67ed2e93cb5f295baa68aeba0d");
10
- src: url("../fonts/yith-icon.eot?0e894d67ed2e93cb5f295baa68aeba0d#iefix") format("embedded-opentype"),
11
- url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"),
12
- url("../fonts/yith-icon.ttf?0e894d67ed2e93cb5f295baa68aeba0d") format("truetype");
13
  font-weight: 400;
14
  font-style: normal;
15
  }
@@ -123,6 +123,10 @@
123
  content: "\e911";
124
  }
125
 
 
 
 
 
126
  .yith-icon-image:before {
127
  content: "\f10a";
128
  }
@@ -135,6 +139,10 @@
135
  content: "\e90e";
136
  }
137
 
 
 
 
 
138
  .yith-icon-magnifier:before {
139
  content: "\e908";
140
  }
@@ -207,6 +215,10 @@
207
  content: "\f108";
208
  }
209
 
 
 
 
 
210
  .yith-icon-warning-triangle:before {
211
  content: "\e923";
212
  }
@@ -225,7 +237,7 @@
225
 
226
  /** Deprecated: use yith-icon-paypal instead */
227
  .yith-icon-paypal-svgrepo-com:before {
228
- content: "\e91b";
229
  }
230
 
231
  /** Deprecated: use yith-icon-arrow-down instead */
@@ -290,10 +302,10 @@
290
 
291
  /** Deprecated: use yith-icon-edit instead */
292
  .yith-icon-pencil:before {
293
- content: "\e907";
294
  }
295
 
296
  /** Deprecated: use yith-icon-reset instead */
297
  .yith-icon-update:before {
298
- content: "\e910";
299
  }
6
  /* stylelint-disable function-url-quotes, declaration-colon-newline-after */
7
  @font-face {
8
  font-family: yith-icon;
9
+ src: url("../fonts/yith-icon.eot?91e38b491fff50f72e9b5b51960fdee6");
10
+ src: url("../fonts/yith-icon.eot?91e38b491fff50f72e9b5b51960fdee6#iefix") format("embedded-opentype"),
11
+ url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"),
12
+ url("../fonts/yith-icon.ttf?91e38b491fff50f72e9b5b51960fdee6") format("truetype");
13
  font-weight: 400;
14
  font-style: normal;
15
  }
123
  content: "\e911";
124
  }
125
 
126
+ .yith-icon-helping-hand:before {
127
+ content: "\f10c";
128
+ }
129
+
130
  .yith-icon-image:before {
131
  content: "\f10a";
132
  }
139
  content: "\e90e";
140
  }
141
 
142
+ .yith-icon-list-search:before {
143
+ content: "\f10d";
144
+ }
145
+
146
  .yith-icon-magnifier:before {
147
  content: "\e908";
148
  }
215
  content: "\f108";
216
  }
217
 
218
+ .yith-icon-video:before {
219
+ content: "\f10e";
220
+ }
221
+
222
  .yith-icon-warning-triangle:before {
223
  content: "\e923";
224
  }
237
 
238
  /** Deprecated: use yith-icon-paypal instead */
239
  .yith-icon-paypal-svgrepo-com:before {
240
+ content: "\e91b";
241
  }
242
 
243
  /** Deprecated: use yith-icon-arrow-down instead */
302
 
303
  /** Deprecated: use yith-icon-edit instead */
304
  .yith-icon-pencil:before {
305
+ content: "\e907";
306
  }
307
 
308
  /** Deprecated: use yith-icon-reset instead */
309
  .yith-icon-update:before {
310
+ content: "\e910";
311
  }
plugin-fw/assets/css/yith-plugin-ui.css CHANGED
@@ -25,7 +25,7 @@
25
  --yith-update-focus: #e7eccc;
26
  --yith-outline-text: #0087b3;
27
  --yith-outline-border: #0094c4;
28
- --yith-outline-bg: #ffffff;
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
@@ -268,6 +268,7 @@
268
  display: inline-block;
269
  text-decoration: none;
270
  cursor: pointer;
 
271
  }
272
 
273
  .yith-plugin-ui .button-primary:focus, .yith-plugin-ui .button-secondary:focus, .wp-core-ui .yith-plugin-ui .button-primary:focus, .wp-core-ui .yith-plugin-ui .button-secondary:focus {
@@ -429,6 +430,7 @@
429
  cursor: pointer;
430
  transition: all .3s ease-in-out;
431
  text-decoration: none;
 
432
  }
433
 
434
  .yith-plugin-ui .yith-plugin-fw__button:focus, .yith-plugin-ui [class^="yith-plugin-fw__button--"]:focus, .yith-plugin-ui [class*=" yith-plugin-fw__button--"]:focus,
@@ -838,6 +840,7 @@
838
  cursor: pointer;
839
  display: inline-block;
840
  margin-right: 10px;
 
841
  }
842
 
843
  .yith-plugin-fw__confirm__wrap .yith-plugin-fw__confirm__button:last-child {
@@ -1237,7 +1240,6 @@ table.yith-plugin-fw__boxed-table tbody tr {
1237
 
1238
  table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
1239
  background: transparent;
1240
- border-radius: 5px;
1241
  vertical-align: middle;
1242
  padding: 25px 0 25px 25px;
1243
  }
@@ -1246,6 +1248,17 @@ table.yith-plugin-fw__boxed-table tbody tr td:last-child {
1246
  padding-right: 25px;
1247
  }
1248
 
 
 
 
 
 
 
 
 
 
 
 
1249
  table.yith-plugin-fw__boxed-table tbody tr:hover {
1250
  background: var(--yith-table-row-highlight);
1251
  }
@@ -1451,7 +1464,6 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1451
 
1452
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
1453
  background: transparent;
1454
- border-radius: 5px;
1455
  vertical-align: middle;
1456
  padding: 25px 0 25px 25px;
1457
  }
@@ -1460,6 +1472,19 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1460
  padding-right: 25px;
1461
  }
1462
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1463
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
1464
  background: var(--yith-table-row-highlight);
1465
  }
25
  --yith-update-focus: #e7eccc;
26
  --yith-outline-text: #0087b3;
27
  --yith-outline-border: #0094c4;
28
+ --yith-outline-bg: rgba(255, 255, 255, 0);
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
268
  display: inline-block;
269
  text-decoration: none;
270
  cursor: pointer;
271
+ white-space: nowrap;
272
  }
273
 
274
  .yith-plugin-ui .button-primary:focus, .yith-plugin-ui .button-secondary:focus, .wp-core-ui .yith-plugin-ui .button-primary:focus, .wp-core-ui .yith-plugin-ui .button-secondary:focus {
430
  cursor: pointer;
431
  transition: all .3s ease-in-out;
432
  text-decoration: none;
433
+ white-space: nowrap;
434
  }
435
 
436
  .yith-plugin-ui .yith-plugin-fw__button:focus, .yith-plugin-ui [class^="yith-plugin-fw__button--"]:focus, .yith-plugin-ui [class*=" yith-plugin-fw__button--"]:focus,
840
  cursor: pointer;
841
  display: inline-block;
842
  margin-right: 10px;
843
+ white-space: nowrap;
844
  }
845
 
846
  .yith-plugin-fw__confirm__wrap .yith-plugin-fw__confirm__button:last-child {
1240
 
1241
  table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
1242
  background: transparent;
 
1243
  vertical-align: middle;
1244
  padding: 25px 0 25px 25px;
1245
  }
1248
  padding-right: 25px;
1249
  }
1250
 
1251
+ table.yith-plugin-fw__boxed-table tbody tr th:first-child,
1252
+ table.yith-plugin-fw__boxed-table tbody tr td:first-child {
1253
+ border-radius: 5px 0 0 5px;
1254
+ }
1255
+
1256
+ table.yith-plugin-fw__boxed-table tbody tr th:last-child,
1257
+ table.yith-plugin-fw__boxed-table tbody tr td:last-child {
1258
+ padding-right: 25px;
1259
+ border-radius: 0 5px 5px 0;
1260
+ }
1261
+
1262
  table.yith-plugin-fw__boxed-table tbody tr:hover {
1263
  background: var(--yith-table-row-highlight);
1264
  }
1464
 
1465
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
1466
  background: transparent;
 
1467
  vertical-align: middle;
1468
  padding: 25px 0 25px 25px;
1469
  }
1472
  padding-right: 25px;
1473
  }
1474
 
1475
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
1476
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
1477
+ .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child {
1478
+ border-radius: 5px 0 0 5px;
1479
+ }
1480
+
1481
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
1482
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
1483
+ .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child {
1484
+ padding-right: 25px;
1485
+ border-radius: 0 5px 5px 0;
1486
+ }
1487
+
1488
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
1489
  background: var(--yith-table-row-highlight);
1490
  }
plugin-fw/assets/fonts/yith-icon.eot CHANGED
Binary file
plugin-fw/assets/fonts/yith-icon.ttf CHANGED
Binary file
plugin-fw/assets/fonts/yith-icon.woff2 CHANGED
Binary file
plugin-fw/assets/js/wp-pages.js CHANGED
@@ -1,12 +1,4 @@
1
- /**
2
- * This file belongs to the YIT Plugin Framework.
3
- *
4
- * This source file is subject to the GNU GENERAL PUBLIC LICENSE (GPL 3.0)
5
- * that is bundled with this package in the file LICENSE.txt.
6
- * It is also available through the world-wide-web at this URL:
7
- * http://www.gnu.org/licenses/gpl-3.0.txt
8
- */
9
-
10
  jQuery( function ( $ ) {
11
  var wrap = $( '.yith-plugin-fw-wp-page-wrapper' ),
12
  notices = $( 'div.updated, div.error, div.notice' ).not( '#message' ),
@@ -28,7 +20,57 @@ jQuery( function ( $ ) {
28
  e.stopPropagation();
29
  message.removeClass( 'yith-plugin-fw-animate__appear-from-top' ).slideUp( 200 );
30
  } )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
 
 
32
  }
33
 
34
  } );
1
+ /* global yith_plugin_fw_wp_pages */
 
 
 
 
 
 
 
 
2
  jQuery( function ( $ ) {
3
  var wrap = $( '.yith-plugin-fw-wp-page-wrapper' ),
4
  notices = $( 'div.updated, div.error, div.notice' ).not( '#message' ),
20
  e.stopPropagation();
21
  message.removeClass( 'yith-plugin-fw-animate__appear-from-top' ).slideUp( 200 );
22
  } )
23
+ }
24
+
25
+ // Confirmation window when deleting custom post types and custom terms through Bulk Actions.
26
+ if ( yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled ) {
27
+ var bulkDeleteConfirmed = false;
28
+
29
+ $( document ).on( 'click', '#doaction, #doaction2', function ( e ) {
30
+ var doActionButton = $( this ),
31
+ bulkActionSelector = doActionButton.siblings( '#bulk-action-selector-top, #bulk-action-selector-bottom' );
32
+
33
+ if ( 'yith' in window && 'ui' in yith ) {
34
+ if ( bulkDeleteConfirmed ) {
35
+ bulkDeleteConfirmed = false;
36
+ } else {
37
+ var confirmOptions = {},
38
+ selectedItems = $( '#the-list .check-column input[type=checkbox]:checked' );
39
+
40
+ if ( selectedItems.length ) {
41
+ switch ( bulkActionSelector.val() ) {
42
+ case 'trash':
43
+ confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title;
44
+ confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message;
45
+ confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button;
46
+ confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button;
47
+ confirmOptions.confirmButtonType = 'delete';
48
+ break;
49
+ case 'delete':
50
+ confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title;
51
+ confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message;
52
+ confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button;
53
+ confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button;
54
+ confirmOptions.confirmButtonType = 'delete';
55
+ break;
56
+ }
57
+
58
+ if ( !$.isEmptyObject( confirmOptions ) ) {
59
+ e.preventDefault();
60
+
61
+ confirmOptions.closeAfterConfirm = false;
62
+ confirmOptions.onConfirm = function () {
63
+ bulkDeleteConfirmed = true;
64
+ doActionButton.trigger( 'click' );
65
+ };
66
+
67
+ yith.ui.confirm( confirmOptions );
68
+ }
69
+ }
70
+ }
71
 
72
+ }
73
+ } );
74
  }
75
 
76
  } );
plugin-fw/assets/js/wp-pages.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(a){var e=a(".yith-plugin-fw-wp-page-wrapper"),p=a("div.updated, div.error, div.notice").not("#message"),i=a("div#message.updated");a(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),p.addClass("inline"),e.length&&e.prepend(p),i.length&&(i.addClass("yith-plugin-fw-animate__appear-from-top").show(),i.on("click",".notice-dismiss",function(a){a.stopPropagation(),i.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)}))});
1
+ jQuery(function(e){var t=e(".yith-plugin-fw-wp-page-wrapper"),i=e("div.updated, div.error, div.notice").not("#message"),n=e("div#message.updated");if(e(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),i.addClass("inline"),t.length&&t.prepend(i),n.length&&(n.addClass("yith-plugin-fw-animate__appear-from-top").show(),n.on("click",".notice-dismiss",function(e){e.stopPropagation(),n.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)})),yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled){var a=!1;e(document).on("click","#doaction, #doaction2",function(t){var i=e(this),n=i.siblings("#bulk-action-selector-top, #bulk-action-selector-bottom");if("yith"in window&&"ui"in yith)if(a)a=!1;else{var _={};if(e("#the-list .check-column input[type=checkbox]:checked").length){switch(n.val()){case"trash":_.title=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button,_.confirmButtonType="delete";break;case"delete":_.title=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button,_.confirmButtonType="delete"}e.isEmptyObject(_)||(t.preventDefault(),_.closeAfterConfirm=!1,_.onConfirm=function(){a=!0,i.trigger("click")},yith.ui.confirm(_))}}})}});
plugin-fw/assets/js/yith-fields.js CHANGED
@@ -1,28 +1,254 @@
1
  /* globals yith_framework_fw_fields, wp */
2
  ( function ( $ ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  var yith_fields_init = function () {
4
- var $datepicker = $( '.yith-plugin-fw-datepicker' ),
5
- $colorpicker = $( '.yith-plugin-fw-colorpicker' ),
6
- $upload = {
7
- imgPreviewHandler : '.yith-plugin-fw-upload-img-preview',
8
- uploadButtonHandler: '.yith-plugin-fw-upload-button',
9
- imgUrlHandler : '.yith-plugin-fw-upload-img-url',
10
- resetButtonHandler : '.yith-plugin-fw-upload-button-reset',
11
- imgUrl : $( '.yith-plugin-fw-upload-img-url' )
12
- },
13
- $wpAddMedia = $( '.add_media' ),
14
- $imageGallery = {
15
- rootSelector : '.yith-plugin-fw-image-gallery',
16
- buttonSelector: '.yith-plugin-fw-image-gallery .image-gallery-button',
17
- sliderWrapper : $( '.yith-plugin-fw-image-gallery ul.slides-wrapper' )
18
- },
19
- $sidebars = $( '.yith-plugin-fw-sidebar-layout' ),
20
- $slider = $( '.yith-plugin-fw-slider-container .ui-slider-horizontal' ),
21
- $icons = $( '.yit-icons-manager-wrapper' ),
22
- $checkgroup = $( ".yith-plugin-ui td.forminp-checkbox" );
23
 
24
  /* Datepicker */
25
  $datepicker.each( function () {
 
 
26
  var currentDatePicker = $( this ),
27
  args = currentDatePicker.data(),
28
  icon = currentDatePicker.next( '.yith-icon-calendar' );
@@ -45,19 +271,22 @@
45
  } );
46
 
47
  /* Colorpicker */
48
- $colorpicker.wpColorPicker( {
49
- palettes: false,
50
- width : 200,
51
- mode : 'hsl',
52
- clear : function () {
53
- var input = $( this );
54
- input.val( input.data( 'default-color' ) );
55
- input.change();
56
- }
57
- } );
58
-
59
-
60
  $colorpicker.each( function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  var select_label = $( this ).data( 'variations-label' ),
62
  wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
63
  wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
@@ -69,206 +298,22 @@
69
 
70
  if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
71
  var button = $( '<span/>' ).attr( {
72
- class: "wp-picker-default-custom"
73
  } );
74
  wrap1.find( '.wp-picker-default' ).wrap( button );
75
  }
76
 
77
  if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
78
  var button = $( '<span/>' ).attr( {
79
- class: "wp-picker-default-custom"
80
  } );
81
  wrap2.find( '.wp-picker-default' ).wrap( button );
82
  }
83
  } );
84
 
85
-
86
- /* Upload */
87
- if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
88
- var _custom_media = true;
89
- // preview
90
- $upload.imgUrl.change( function () {
91
- var url = $( this ).val(),
92
- re = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
93
- preview = $( this ).parent().find( $upload.imgPreviewHandler ).first();
94
-
95
- if ( preview.length < 1 ) {
96
- preview = $( this ).parent().parent().find( $upload.imgPreviewHandler ).first();
97
- }
98
-
99
- if ( re.test( url ) ) {
100
- preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
101
- } else {
102
- preview.html( '' );
103
- }
104
- } ).trigger( 'change' );
105
-
106
- $( document ).on( 'click', $upload.uploadButtonHandler, function ( e ) {
107
- e.preventDefault();
108
-
109
- var t = $( this ),
110
- custom_uploader,
111
- id = t.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
112
-
113
- //If the uploader object has already been created, reopen the dialog
114
- if ( custom_uploader ) {
115
- custom_uploader.open();
116
- return;
117
- }
118
-
119
- var custom_uploader_states = [
120
- // Main states.
121
- new wp.media.controller.Library( {
122
- library : wp.media.query(),
123
- multiple : false,
124
- title : 'Choose Image',
125
- priority : 20,
126
- filterable: 'uploaded'
127
- } )
128
- ];
129
-
130
- // Create the media frame.
131
- custom_uploader = wp.media.frames.downloadable_file = wp.media( {
132
- // Set the title of the modal.
133
- title : 'Choose Image',
134
- library : {
135
- type: ''
136
- },
137
- button : {
138
- text: 'Choose Image'
139
- },
140
- multiple: false,
141
- states : custom_uploader_states
142
- } );
143
-
144
- //When a file is selected, grab the URL and set it as the text field's value
145
- custom_uploader.on( 'select', function () {
146
- var attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
147
-
148
- $( "#" + id ).val( attachment.url );
149
- // Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
150
- if ( $( "#" + id + "-yith-attachment-id" ) ) {
151
- $( "#" + id + "-yith-attachment-id" ).val( attachment.id );
152
- }
153
- $upload.imgUrl.trigger( 'change' );
154
- } );
155
-
156
- //Open the uploader dialog
157
- custom_uploader.open();
158
- } );
159
-
160
- $( document ).on( 'click', $upload.resetButtonHandler, function ( e ) {
161
- var t = $( this ),
162
- id = t.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
163
- input_id = t.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
164
- default_value = $( '#' + id ).data( 'default' );
165
-
166
- $( "#" + input_id ).val( default_value );
167
- $upload.imgUrl.trigger( 'change' );
168
- } );
169
- }
170
-
171
- $wpAddMedia.on( 'click', function () {
172
- _custom_media = false;
173
- } );
174
-
175
- /* Image Gallery */
176
- if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
177
- $( document ).on( 'click', $imageGallery.buttonSelector, function ( e ) {
178
- var $t = $( this ),
179
- $container = $t.closest( $imageGallery.rootSelector ),
180
- $image_gallery_ids = $container.find( '.image_gallery_ids' ),
181
- attachment_ids = $image_gallery_ids.val(),
182
- $gallery_images_wrapper = $container.find( 'ul.slides-wrapper' );
183
-
184
- // Create the media frame.
185
- var image_gallery_frame = wp.media.frames.image_gallery = wp.media( {
186
- // Set the title of the modal.
187
- title : $t.data( 'choose' ),
188
- button: {
189
- text: $t.data( 'update' )
190
- },
191
- states: [
192
- new wp.media.controller.Library( {
193
- title : $t.data( 'choose' ),
194
- filterable: 'all',
195
- multiple : true
196
- } )
197
- ]
198
- } );
199
-
200
- // When an image is selected, run a callback.
201
- image_gallery_frame.on( 'select', function () {
202
- var selection = image_gallery_frame.state().get( 'selection' );
203
- selection.map( function ( attachment ) {
204
- attachment = attachment.toJSON();
205
-
206
- if ( attachment.id ) {
207
- attachment_ids = attachment_ids ? attachment_ids + "," + attachment.id : attachment.id;
208
- $gallery_images_wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + $t.data( 'delete' ) + '">x</a></li></ul></li>' );
209
- }
210
- } );
211
-
212
- $image_gallery_ids.val( attachment_ids );
213
- $image_gallery_ids.trigger( 'change' );
214
- } );
215
-
216
- image_gallery_frame.open();
217
-
218
- } );
219
-
220
- // Image ordering
221
- $imageGallery.sliderWrapper.each( function () {
222
- var $t = $( this );
223
- $t.sortable( {
224
- items : 'li.image',
225
- cursor : 'move',
226
- scrollSensitivity : 40,
227
- forcePlaceholderSize: true,
228
- forceHelperSize : false,
229
- helper : 'clone',
230
- opacity : 0.65,
231
- start : function ( event, ui ) {
232
- ui.item.css( 'background-color', '#f6f6f6' );
233
- },
234
- stop : function ( event, ui ) {
235
- ui.item.removeAttr( 'style' );
236
- },
237
- update : function ( event, ui ) {
238
- var attachment_ids = '';
239
-
240
- $t.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
241
- var attachment_id = $( this ).attr( 'data-attachment_id' );
242
- attachment_ids = attachment_ids + attachment_id + ',';
243
- } );
244
-
245
- $t.closest( $imageGallery.rootSelector ).find( '.image_gallery_ids' ).val( attachment_ids );
246
- }
247
- } );
248
- } );
249
-
250
- // Remove images
251
- $imageGallery.sliderWrapper.on( 'click', 'a.delete', function ( e ) {
252
- e.preventDefault();
253
- var $wrapper = $( this ).closest( $imageGallery.rootSelector ),
254
- $gallery = $wrapper.find( 'ul.slides-wrapper' ),
255
- $image_gallery_ids = $wrapper.find( '.image_gallery_ids' ),
256
- attachment_ids = '';
257
-
258
- $( this ).closest( 'li.image' ).remove();
259
-
260
- $gallery.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
261
- var attachment_id = $( this ).attr( 'data-attachment_id' );
262
- attachment_ids = attachment_ids + attachment_id + ',';
263
- } );
264
-
265
- $image_gallery_ids.val( attachment_ids );
266
- } );
267
- }
268
-
269
-
270
  /* Sidebars */
271
  $sidebars.each( function () {
 
272
  var $images = $( this ).find( 'img' );
273
  $images.on( 'click', function () {
274
  var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
@@ -304,13 +349,15 @@
304
 
305
  /* Slider */
306
  $slider.each( function () {
307
- var val = $( this ).data( 'val' ),
308
- minValue = $( this ).data( 'min' ),
309
- maxValue = $( this ).data( 'max' ),
310
- step = $( this ).data( 'step' ),
311
- labels = $( this ).data( 'labels' );
312
-
313
- $( this ).slider( {
 
 
314
  value: val,
315
  min : minValue,
316
  max : maxValue,
@@ -330,35 +377,8 @@
330
  } );
331
  } );
332
 
333
- // Codemirror.
334
- $( function () {
335
- var codemirrorInit = function () {
336
- if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
337
- $( '.codemirror:not(.codemirror--initialized)' ).each( function () {
338
- var settings = $( this ).data( 'settings' ),
339
- editor = wp.codeEditor.initialize( $( this ), settings );
340
-
341
- $( this ).addClass( 'codemirror--initialized' );
342
- $( this ).data( 'codemirrorInstance', editor );
343
- } );
344
- }
345
- };
346
- $( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
347
- } );
348
-
349
- /* Select All - Deselect All */
350
- $( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
351
- var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
352
- $targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
353
- } );
354
-
355
- $( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
356
- var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
357
- $targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
358
- } );
359
-
360
-
361
  $icons.each( function () {
 
362
  var $container = $( this ),
363
  $preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
364
  $text = $container.find( '.yit-icons-manager-icon-text' );
@@ -386,23 +406,6 @@
386
  } );
387
  } );
388
 
389
- /** Select Images */
390
- $( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
391
- var item = $( this ),
392
- key = item.data( 'key' ),
393
- wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
394
- items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
395
- select = wrapper.find( 'select' ).first();
396
-
397
- if ( select.length ) {
398
- select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
399
- items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
400
- item.addClass( 'yith-plugin-fw-select-images__item--selected' );
401
- }
402
- } );
403
-
404
- $( document.body ).trigger( 'wc-enhanced-select-init' );
405
-
406
  $( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
407
  {
408
  cursor : 'move',
@@ -426,11 +429,41 @@
426
  }
427
  );
428
 
 
429
  $( document.body ).trigger( 'yith-framework-enhanced-select-init' );
 
 
 
430
  };
431
 
432
  $( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
433
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  /* on-off */
435
  $( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
436
  var input = $( this ).prev( 'input' ),
@@ -732,7 +765,7 @@
732
 
733
  $( document.body ).on( 'yith-plugin-fw-init-radio', function () {
734
  $( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
735
- $( this ).val( $( this ).data( 'value' ) );
736
  $( this ).addClass( 'yith-plugin-fw-radio--initialized' );
737
  } );
738
  } ).trigger( 'yith-plugin-fw-init-radio' );
1
  /* globals yith_framework_fw_fields, wp */
2
  ( function ( $ ) {
3
+
4
+ /* Upload */
5
+ var uploadHandler = {
6
+ selectors : {
7
+ imgPreview : '.yith-plugin-fw-upload-img-preview',
8
+ uploadButton: '.yith-plugin-fw-upload-button',
9
+ imgUrl : '.yith-plugin-fw-upload-img-url',
10
+ resetButton : '.yith-plugin-fw-upload-button-reset'
11
+ },
12
+ onImageChange : function () {
13
+ var url = $( this ).val(),
14
+ imageRegex = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
15
+ preview = $( this ).parent().find( uploadHandler.selectors.imgPreview ).first();
16
+
17
+ if ( preview.length < 1 ) {
18
+ preview = $( this ).parent().parent().find( uploadHandler.selectors.imgPreview ).first();
19
+ }
20
+
21
+ if ( imageRegex.test( url ) ) {
22
+ preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
23
+ } else {
24
+ preview.html( '' );
25
+ }
26
+ },
27
+ onButtonClick : function ( e ) {
28
+ e.preventDefault();
29
+
30
+ var button = $( this ),
31
+ custom_uploader,
32
+ id = button.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
33
+
34
+ // If the uploader object has already been created, reopen the dialog
35
+ if ( custom_uploader ) {
36
+ custom_uploader.open();
37
+ return;
38
+ }
39
+
40
+ var custom_uploader_states = [
41
+ new wp.media.controller.Library(
42
+ {
43
+ library : wp.media.query(),
44
+ multiple : false,
45
+ title : 'Choose Image',
46
+ priority : 20,
47
+ filterable: 'uploaded'
48
+ }
49
+ )
50
+ ];
51
+
52
+ // Create the media frame.
53
+ custom_uploader = wp.media.frames.downloadable_file = wp.media(
54
+ {
55
+ // Set the title of the modal.
56
+ title : 'Choose Image',
57
+ library : {
58
+ type: ''
59
+ },
60
+ button : {
61
+ text: 'Choose Image'
62
+ },
63
+ multiple: false,
64
+ states : custom_uploader_states
65
+ }
66
+ );
67
+
68
+ // When a file is selected, grab the URL and set it as the text field's value
69
+ custom_uploader.on( 'select', function () {
70
+ var attachment = custom_uploader.state().get( 'selection' ).first().toJSON(),
71
+ attachmentField = $( "#" + id + "-yith-attachment-id" );
72
+
73
+ $( "#" + id ).val( attachment.url );
74
+ // Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
75
+ if ( attachmentField.length ) {
76
+ attachmentField.val( attachment.id );
77
+ }
78
+ uploadHandler.triggerImageChange();
79
+ } );
80
+
81
+ custom_uploader.open();
82
+ },
83
+ onResetClick : function () {
84
+ var button = $( this ),
85
+ id = button.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
86
+ input_id = button.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
87
+ default_value = $( '#' + id ).data( 'default' );
88
+
89
+ $( "#" + input_id ).val( default_value );
90
+ uploadHandler.triggerImageChange();
91
+ },
92
+ triggerImageChange: function () {
93
+ $( uploadHandler.selectors.imgUrl ).trigger( 'change' );
94
+ },
95
+ initOnce : function () {
96
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
97
+ $( document ).on( 'change', uploadHandler.selectors.imgUrl, uploadHandler.onImageChange );
98
+
99
+ $( document ).on( 'click', uploadHandler.selectors.uploadButton, uploadHandler.onButtonClick );
100
+
101
+ $( document ).on( 'click', uploadHandler.selectors.resetButton, uploadHandler.onResetClick );
102
+ }
103
+ }
104
+ };
105
+
106
+ uploadHandler.initOnce();
107
+
108
+ var imageGallery = {
109
+ selectors: {
110
+ gallery : '.yith-plugin-fw-image-gallery',
111
+ notInitGallery: '.yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)',
112
+ button : '.yith-plugin-fw-image-gallery .image-gallery-button',
113
+ slideWrapper : 'ul.slides-wrapper'
114
+ },
115
+ initOnce : function () {
116
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
117
+ $( document ).on( 'click', imageGallery.selectors.button, function ( e ) {
118
+ var button = $( this ),
119
+ gallery = button.closest( imageGallery.selectors.gallery ),
120
+ imageGalleryIDsField = gallery.find( '.image_gallery_ids' ),
121
+ attachmentIDs = imageGalleryIDsField.val(),
122
+ wrapper = gallery.find( 'ul.slides-wrapper' );
123
+
124
+ // Create the media frame.
125
+ var imageGalleryFrame = wp.media.frames.image_gallery = wp.media(
126
+ {
127
+ // Set the title of the modal.
128
+ title : button.data( 'choose' ),
129
+ button: {
130
+ text: button.data( 'update' )
131
+ },
132
+ states: [
133
+ new wp.media.controller.Library(
134
+ {
135
+ title : button.data( 'choose' ),
136
+ filterable: 'all',
137
+ multiple : true
138
+ }
139
+ )
140
+ ]
141
+ }
142
+ );
143
+
144
+ // When an image is selected, run a callback.
145
+ imageGalleryFrame.on( 'select', function () {
146
+ var selection = imageGalleryFrame.state().get( 'selection' );
147
+ selection.map( function ( attachment ) {
148
+ attachment = attachment.toJSON();
149
+
150
+ if ( attachment.id ) {
151
+ attachmentIDs = attachmentIDs ? attachmentIDs + "," + attachment.id : attachment.id;
152
+ wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + button.data( 'delete' ) + '">x</a></li></ul></li>' );
153
+ }
154
+ } );
155
+
156
+ imageGalleryIDsField.val( attachmentIDs );
157
+ imageGalleryIDsField.trigger( 'change' );
158
+ } );
159
+
160
+ imageGalleryFrame.open();
161
+
162
+ } );
163
+ }
164
+ },
165
+ init : function () {
166
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
167
+ $( imageGallery.selectors.notInitGallery ).each( function () {
168
+ $( this ).addClass( 'yith-plugin-fw-image-gallery--initialized' );
169
+ var slideWrappers = $( this ).find( imageGallery.selectors.slideWrapper );
170
+
171
+ // Image ordering
172
+ slideWrappers.each( function () {
173
+ var currentSlideWrapper = $( this );
174
+ currentSlideWrapper.sortable( {
175
+ items : 'li.image',
176
+ cursor : 'move',
177
+ scrollSensitivity : 40,
178
+ forcePlaceholderSize: true,
179
+ forceHelperSize : false,
180
+ helper : 'clone',
181
+ opacity : 0.65,
182
+ start : function ( event, ui ) {
183
+ ui.item.css( 'background-color', '#f6f6f6' );
184
+ },
185
+ stop : function ( event, ui ) {
186
+ ui.item.removeAttr( 'style' );
187
+ },
188
+ update : function ( event, ui ) {
189
+ var attachment_ids = '';
190
+
191
+ currentSlideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
192
+ var attachment_id = $( this ).attr( 'data-attachment_id' );
193
+ attachment_ids = attachment_ids + attachment_id + ',';
194
+ } );
195
+
196
+ currentSlideWrapper.closest( imageGallery.selectors.gallery ).find( '.image_gallery_ids' ).val( attachment_ids );
197
+ }
198
+ } );
199
+ } );
200
+
201
+ // Remove images
202
+ slideWrappers.on( 'click', 'a.delete', function ( e ) {
203
+ e.preventDefault();
204
+ var _wrapper = $( this ).closest( imageGallery.selectors.gallery ),
205
+ _slideWrapper = _wrapper.find( 'ul.slides-wrapper' ),
206
+ _imageGalleryIDsField = _wrapper.find( '.image_gallery_ids' ),
207
+ _attachmentIDs = '';
208
+
209
+ $( this ).closest( 'li.image' ).remove();
210
+
211
+ _slideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
212
+ var attachment_id = $( this ).attr( 'data-attachment_id' );
213
+ _attachmentIDs = _attachmentIDs + attachment_id + ',';
214
+ } );
215
+
216
+ _imageGalleryIDsField.val( _attachmentIDs );
217
+ } );
218
+ } )
219
+ }
220
+ }
221
+ };
222
+ imageGallery.initOnce();
223
+
224
+
225
+ // Codemirror.
226
+ $( function () {
227
+ var codemirrorInit = function () {
228
+ if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
229
+ $( '.codemirror:not(.codemirror--initialized)' ).each( function () {
230
+ var settings = $( this ).data( 'settings' ),
231
+ editor = wp.codeEditor.initialize( $( this ), settings );
232
+
233
+ $( this ).addClass( 'codemirror--initialized' );
234
+ $( this ).data( 'codemirrorInstance', editor );
235
+ } );
236
+ }
237
+ };
238
+ $( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
239
+ } );
240
+
241
  var yith_fields_init = function () {
242
+ var $datepicker = $( '.yith-plugin-fw-datepicker:not(.yith-plugin-fw-datepicker--initialized)' ),
243
+ $colorpicker = $( '.yith-plugin-fw-colorpicker:not(.yith-plugin-fw-colorpicker--initialized)' ),
244
+ $sidebars = $( '.yith-plugin-fw-sidebar-layout:not(.yith-plugin-fw-sidebar-layout--initialized)' ),
245
+ $slider = $( '.yith-plugin-fw-slider-container:not(.yith-plugin-fw-slider-container--initialized)' ),
246
+ $icons = $( '.yit-icons-manager-wrapper:not(.yit-icons-manager-wrapper--initialized)' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
248
  /* Datepicker */
249
  $datepicker.each( function () {
250
+ $( this ).addClass( 'yith-plugin-fw-datepicker--initialized' );
251
+
252
  var currentDatePicker = $( this ),
253
  args = currentDatePicker.data(),
254
  icon = currentDatePicker.next( '.yith-icon-calendar' );
271
  } );
272
 
273
  /* Colorpicker */
 
 
 
 
 
 
 
 
 
 
 
 
274
  $colorpicker.each( function () {
275
+ $( this ).addClass( 'yith-plugin-fw-colorpicker--initialized' );
276
+
277
+ $( this ).wpColorPicker(
278
+ {
279
+ palettes: false,
280
+ width : 200,
281
+ mode : 'hsl',
282
+ clear : function () {
283
+ var input = $( this );
284
+ input.val( input.data( 'default-color' ) );
285
+ input.trigger( 'change' );
286
+ }
287
+ }
288
+ );
289
+
290
  var select_label = $( this ).data( 'variations-label' ),
291
  wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
292
  wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
298
 
299
  if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
300
  var button = $( '<span/>' ).attr( {
301
+ class: 'wp-picker-default-custom'
302
  } );
303
  wrap1.find( '.wp-picker-default' ).wrap( button );
304
  }
305
 
306
  if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
307
  var button = $( '<span/>' ).attr( {
308
+ class: 'wp-picker-default-custom'
309
  } );
310
  wrap2.find( '.wp-picker-default' ).wrap( button );
311
  }
312
  } );
313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  /* Sidebars */
315
  $sidebars.each( function () {
316
+ $( this ).addClass( 'yith-plugin-fw-sidebar-layout--initialized' );
317
  var $images = $( this ).find( 'img' );
318
  $images.on( 'click', function () {
319
  var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
349
 
350
  /* Slider */
351
  $slider.each( function () {
352
+ $( this ).addClass( 'yith-plugin-fw-slider-container--initialized' );
353
+ var theSlider = $( this ).find( '.ui-slider-horizontal' ),
354
+ val = theSlider.data( 'val' ),
355
+ minValue = theSlider.data( 'min' ),
356
+ maxValue = theSlider.data( 'max' ),
357
+ step = theSlider.data( 'step' ),
358
+ labels = theSlider.data( 'labels' );
359
+
360
+ theSlider.slider( {
361
  value: val,
362
  min : minValue,
363
  max : maxValue,
377
  } );
378
  } );
379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  $icons.each( function () {
381
+ $( this ).addClass( 'yit-icons-manager-wrapper--initialized' );
382
  var $container = $( this ),
383
  $preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
384
  $text = $container.find( '.yit-icons-manager-icon-text' );
406
  } );
407
  } );
408
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  $( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
410
  {
411
  cursor : 'move',
429
  }
430
  );
431
 
432
+ $( document.body ).trigger( 'wc-enhanced-select-init' );
433
  $( document.body ).trigger( 'yith-framework-enhanced-select-init' );
434
+ $( document ).trigger( 'yith-plugin-fw-codemirror-init' );
435
+ uploadHandler.triggerImageChange();
436
+ imageGallery.init();
437
  };
438
 
439
  $( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
440
 
441
+ /** Select Images */
442
+ $( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
443
+ var item = $( this ),
444
+ key = item.data( 'key' ),
445
+ wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
446
+ items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
447
+ select = wrapper.find( 'select' ).first();
448
+
449
+ if ( select.length ) {
450
+ select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
451
+ items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
452
+ item.addClass( 'yith-plugin-fw-select-images__item--selected' );
453
+ }
454
+ } );
455
+
456
+ /* Select All - Deselect All */
457
+ $( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
458
+ var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
459
+ $targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
460
+ } );
461
+
462
+ $( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
463
+ var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
464
+ $targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
465
+ } );
466
+
467
  /* on-off */
468
  $( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
469
  var input = $( this ).prev( 'input' ),
765
 
766
  $( document.body ).on( 'yith-plugin-fw-init-radio', function () {
767
  $( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
768
+ $( this ).find( 'input[type="radio"]' ).filter( '[value="' + $( this ).data( 'value' ) + '"]' ).click();
769
  $( this ).addClass( 'yith-plugin-fw-radio--initialized' );
770
  } );
771
  } ).trigger( 'yith-plugin-fw-init-radio' );
plugin-fw/assets/js/yith-fields.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){e(document).on("yith_fields_init",function(){var t=e(".yith-plugin-fw-datepicker"),i=e(".yith-plugin-fw-colorpicker"),n={imgPreviewHandler:".yith-plugin-fw-upload-img-preview",uploadButtonHandler:".yith-plugin-fw-upload-button",imgUrlHandler:".yith-plugin-fw-upload-img-url",resetButtonHandler:".yith-plugin-fw-upload-button-reset",imgUrl:e(".yith-plugin-fw-upload-img-url")},a=e(".add_media"),l={rootSelector:".yith-plugin-fw-image-gallery",buttonSelector:".yith-plugin-fw-image-gallery .image-gallery-button",sliderWrapper:e(".yith-plugin-fw-image-gallery ul.slides-wrapper")},o=e(".yith-plugin-fw-sidebar-layout"),s=e(".yith-plugin-fw-slider-container .ui-slider-horizontal"),r=e(".yit-icons-manager-wrapper");e(".yith-plugin-ui td.forminp-checkbox");t.each(function(){var t=e(this),i=t.data(),n=t.next(".yith-icon-calendar");i.showAnim=!1,i.beforeShow=function(e,t){t.dpDiv.addClass("yith-plugin-fw-datepicker-div")},i.onClose=function(e,t){t.dpDiv.removeClass("yith-plugin-fw-datepicker-div")},t.datepicker(i),n&&n.on("click",function(){t.datepicker("show")})}),i.wpColorPicker({palettes:!1,width:200,mode:"hsl",clear:function(){var t=e(this);t.val(t.data("default-color")),t.change()}}),i.each(function(){var t=e(this).data("variations-label"),i=e(this).closest(".yith-plugin-fw-colorpicker-field-wrapper"),n=e(this).closest(".yith-single-colorpicker"),a=i.find(".wp-picker-input-wrap"),l=n.find(".wp-picker-input-wrap");if(a.length&&i.find("a.wp-color-result").attr("title",t),n.length&&n.find("a.wp-color-result").attr("title",t),!a.find(".wp-picker-default-custom").length){var o=e("<span/>").attr({"class":"wp-picker-default-custom"});a.find(".wp-picker-default").wrap(o)}l.find(".wp-picker-default-custom").length||(o=e("<span/>").attr({"class":"wp-picker-default-custom"}),l.find(".wp-picker-default").wrap(o))}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(n.imgUrl.change(function(){var t=e(this).val(),i=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(n.imgPreviewHandler).first();a.length<1&&(a=e(this).parent().parent().find(n.imgPreviewHandler).first()),i.test(t)?a.html('<img src="'+t+'" style="max-width:100px; max-height:100px;" />'):a.html("")}).trigger("change"),e(document).on("click",n.uploadButtonHandler,function(t){t.preventDefault();var i,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(i)i.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(i=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var t=i.state().get("selection").first().toJSON();e("#"+a).val(t.url),e("#"+a+"-yith-attachment-id")&&e("#"+a+"-yith-attachment-id").val(t.id),n.imgUrl.trigger("change")}),i.open()}}),e(document).on("click",n.resetButtonHandler,function(t){var i=e(this),a=i.attr("id").replace(/(\[|\])/g,"\\$1"),l=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),o=e("#"+a).data("default");e("#"+l).val(o),n.imgUrl.trigger("change")}));a.on("click",function(){}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("click",l.buttonSelector,function(t){var i=e(this),n=i.closest(l.rootSelector),a=n.find(".image_gallery_ids"),o=a.val(),s=n.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:i.data("choose"),button:{text:i.data("update")},states:[new wp.media.controller.Library({title:i.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+i.data("delete")+'">x</a></li></ul></li>'))}),a.val(o),a.trigger("change")}),r.open()}),l.sliderWrapper.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(i,n){var a="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");a=a+t+","}),t.closest(l.rootSelector).find(".image_gallery_ids").val(a)}})}),l.sliderWrapper.on("click","a.delete",function(t){t.preventDefault();var i=e(this).closest(l.rootSelector),n=i.find("ul.slides-wrapper"),a=i.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),n.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");o=o+t+","}),a.val(o)})),o.each(function(){e(this).find("img").on("click",function(){var t=e(this).closest(".yith-plugin-fw-sidebar-layout"),i=t.find(".yith-plugin-fw-sidebar-layout-sidebar-left-container"),n=t.find(".yith-plugin-fw-sidebar-layout-sidebar-right-container"),a=e(this).data("type");if(e(this).parent().children(":radio").attr("checked",!1),e(this).prev(":radio").attr("checked",!0),void 0!==a)switch(a){case"left":i.show(),n.hide();break;case"right":n.show(),i.hide();break;case"double":i.show(),n.show();break;default:i.hide(),n.hide()}})}),s.each(function(){var t=e(this).data("val"),i=e(this).data("min"),n=e(this).data("max"),a=e(this).data("step"),l=e(this).data("labels");e(this).slider({value:t,min:i,max:n,range:"min",step:a,create:function(){e(this).find(".ui-slider-handle").text(e(this).slider("value"))},slide:function(t,i){e(this).find("input").val(i.value).trigger("change"),e(this).find(".ui-slider-handle").text(i.value),e(this).siblings(".feedback").find("strong").text(i.value+l)}})}),e(function(){e(document).on("yith-plugin-fw-codemirror-init",function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.codeEditor&&e(".codemirror:not(.codemirror--initialized)").each(function(){var t=e(this).data("settings"),i=wp.codeEditor.initialize(e(this),t);e(this).addClass("codemirror--initialized"),e(this).data("codemirrorInstance",i)})}).trigger("yith-plugin-fw-codemirror-init")}),e(document).on("click",".yith-plugin-fw-select-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!0).trigger("change")}),e(document).on("click",".yith-plugin-fw-deselect-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!1).trigger("change")}),r.each(function(){var t=e(this),i=t.find(".yit-icons-manager-icon-preview").first(),n=t.find(".yit-icons-manager-icon-text");t.on("click",".yit-icons-manager-list li",function(a){var l=e(a.target).closest("li"),o=l.data("font"),s=l.data("icon"),r=l.data("key"),c=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",c),n.val(o+":"+c),t.find(".yit-icons-manager-list li").removeClass("active"),l.addClass("active")}),t.on("click",".yit-icons-manager-action-set-default",function(){t.find(".yit-icons-manager-list li.default").trigger("click")})}),e(document).on("click",".yith-plugin-fw-select-images__item",function(){var t=e(this),i=t.data("key"),n=t.closest(".yith-plugin-fw-select-images__wrapper"),a=n.find(".yith-plugin-fw-select-images__item"),l=n.find("select").first();l.length&&(l.val(i).trigger("yith_select_images_value_changed").trigger("change"),a.removeClass("yith-plugin-fw-select-images__item--selected"),t.addClass("yith-plugin-fw-select-images__item--selected"))}),e(document.body).trigger("wc-enhanced-select-init"),e(document).find(".ui-sortable .yith-toggle-elements").sortable({cursor:"move",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop:function(t,i){var n=jQuery(".ui-sortable-handle"),a=0,l=new Array;for(a=0;a<n.length;a++)l[a]=e(n[a]).data("item_key");l.length>0&&e(this).closest(".toggle-element").saveToggleElement(null,l)}}),e(document.body).trigger("yith-framework-enhanced-select-init")}).trigger("yith_fields_init"),e(document).on("click",".yith-plugin-fw-onoff-container span",function(){var t=e(this).prev("input");t.prop("disabled")||t.trigger("click")}),e(document).on("click",".yith-plugin-fw-onoff-container input",function(t){e(this).is(":checked")?e(this).attr("value","yes").addClass("onoffchecked"):e(this).attr("value","no").removeClass("onoffchecked"),e(this).trigger("change")}),e.fn.saveToggleElement=function(t,i){var n=e(this),a="yith_plugin_fw_save_toggle_element",l=n.serializeToggleElement(),o=n.find(".yith-toggle_wrapper"),s=o.attr("id"),r=e.urlParam("tab");l.append("security",o.data("nonce")),void 0!==i&&i.length>0&&l.append("yith_toggle_elements_order_keys",i),n.closest(".metaboxes-tab.yith-plugin-ui").length?(a="yith_plugin_fw_save_toggle_element_metabox",post_id=e(this).closest("form#post").find("#post_ID").val(),yit_metaboxes_nonce=e(this).closest("form#post").find("#yit_metaboxes_nonce").val(),metabox_tab=e(this).closest(".tabs-panel").attr("id"),url=yith_framework_fw_fields.ajax_url+"?action="+a+"&post_ID="+post_id+"&yit_metaboxes_nonce="+yit_metaboxes_nonce+"&toggle_id="+s+"&metabox_tab="+metabox_tab):url=yith_framework_fw_fields.admin_url+"?action="+a+"&tab="+r+"&toggle_id="+s,e.ajax({type:"POST",url:url,data:l,contentType:!1,processData:!1,success:function(i){t&&t.removeClass("show"),e(document).trigger("yith_save_toggle_element_done",[i,n])}})},e.fn.serializeToggleElement=function(){var t=e(this),i=new FormData,n=e(t).find(":input").serializeArray();return e.each(n,function(e,t){el_name=t.name,i.append(t.name,t.value)}),i},e.fn.formatToggleTitle=function(){var t=e(this),i=t.find(":input"),n=t.find("span.title").data("title_format"),a=t.find(".subtitle").data("subtitle_format"),l=new RegExp("[^%%]+(?=[%%])","g");if(void 0!==n)var o=n.match(l);if(void 0!==a)var s=a.match(l);e.each(i,function(t,i){void 0!==e(i).attr("id")&&($field_id=e(i).attr("id"),$field_array=$field_id.split("_"),$field_array.pop(),$field_id=$field_array.join("_"),$field_val=e(i).val(),null!=o&&void 0!==o&&-1!==o.indexOf($field_id)&&(n=n.replace("%%"+$field_id+"%%",$field_val)),null!=s&&void 0!==s&&-1!==s.indexOf($field_id)&&(a=a.replace("%%"+$field_id+"%%",$field_val)))}),""!==n&&t.find("span.title").html(n),""!==a&&t.find(".subtitle").html(a),e(document).trigger("yith-toggle-element-item-title",[t])},e.urlParam=function(e){var t=new RegExp("[?&]"+e+"=([^&#]*)").exec(window.location.search);return null!==t&&(t[1]||0)},e(document).on("click",".yith-toggle-title",function(t){var i=e(t.target),n=i.closest(".yith-toggle-row"),a=n.find(".yith-toggle-content");if(i.hasClass("yith-plugin-fw-onoff")||i.hasClass("yith-icon-drag"))return!1;n.is(".yith-toggle-row-opened")?a.slideUp(400):a.slideDown(400),n.toggleClass("yith-toggle-row-opened")}),e(document).on("click",".yith-add-box-button",function(t){t.preventDefault();var i=e(this),n=i.data("box_id"),a=i.data("closed_label"),l=i.data("opened_label"),o=i.closest(".yith-toggle_wrapper").attr("id"),s=wp.template("yith-toggle-element-add-box-content-"+o);""!==n&&(e("#"+n).html(s({index:"box_id"})).slideToggle(),""!==a&&(i.html()===a?i.html(l).removeClass("closed"):i.html(a).addClass("closed")),e(document).trigger("yith_fields_init"),e(document).trigger("yith-add-box-button-toggle",[i]))}),e(document).on("click",".yith-add-box-buttons .yith-save-button",function(t){t.preventDefault();var i=e(this).parents(".yith-add-box"),n=e(this).closest(".yith-toggle_wrapper").attr("id"),a=i.find(".spinner"),l=e(this).parents(".toggle-element"),o=i.find(":input"),s=0,r=e('<input type="hidden">');l.find(".yith-toggle-row").each(function(){var t=parseInt(e(this).data("item_key"));s<=t&&(s=t+1)}),r.val(s),e(document).trigger("yith-toggle-change-counter",[r,i]),s=r.val();var c=wp.template("yith-toggle-element-item-"+n),d=e(c({index:s}));a.addClass("show"),e.each(o,function(t,i){if(void 0!==e(i).attr("id")){var n=e(i).attr("id"),a=e(i).val();n="radio"===e(i).attr("type")?(n=(n=e(i).closest(".yith-plugin-fw-radio").attr("id")).replace("new_","")+"_"+s)+"-"+a:n.replace("new_","")+"_"+s,e(i).is(":checked")&&e(d).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(d).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(d).find("#"+n).val(a)}}),e(d).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,d,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(d),e(i).find(".yith-plugin-fw-datepicker").datepicker("destroy"),e(i).html(""),e(i).prev(".yith-add-box-button").trigger("click"),l.saveToggleElement();setTimeout(function(){e(l).find(".highlight").removeClass("highlight")},2e3),e(document).trigger("yith_fields_init")}},1e3)}),e(document).on("click",".yith-toggle-row .yith-save-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element"),n=e(this).closest(".yith-toggle-row"),a=n.find(".spinner");n.formatToggleTitle();var l=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-update",[i,n,l]),"yes"===l.val()&&(a.addClass("show"),i.saveToggleElement(a))}),e(document).on("click",".yith-toggle-row .yith-delete-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element");e(this).closest(".yith-toggle-row").remove(),i.saveToggleElement()}),e(document).on("click",".yith-toggle-onoff",function(t){t.preventDefault(),e(this).closest(".toggle-element").saveToggleElement()}),e(document).on("click",".yith-plugin-fw-radio input[type=radio]",function(){var t=e(this).closest(".yith-plugin-fw-radio"),i=e(this).val();t.val(i).data("value",i).trigger("change")}),e(document.body).on("yith-plugin-fw-init-radio",function(){e(".yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)").each(function(){e(this).val(e(this).data("value")),e(this).addClass("yith-plugin-fw-radio--initialized")})}).trigger("yith-plugin-fw-init-radio"),e(document).on("click",".yith-password-eye",function(){var t=e(this),i=e(this).closest(".yith-password-wrapper").find("input");"password"===i.attr("type")?(i.attr("type","text"),t.addClass("yith-password-eye-closed")):(i.attr("type","password"),t.removeClass("yith-password-eye-closed"))}),e(document).on("select2:open",function(t){e(t.target).closest(".yith-plugin-ui").length&&e(".select2-results").closest(".select2-container").addClass("yith-plugin-fw-select2-container")});var t={selectors:{wrapper:".yith-plugin-fw-dimensions",units:{wrapper:".yith-plugin-fw-dimensions__units",single:".yith-plugin-fw-dimensions__unit",value:".yith-plugin-fw-dimensions__unit__value",selectedClass:"yith-plugin-fw-dimensions__unit--selected"},linked:{button:".yith-plugin-fw-dimensions__linked",value:".yith-plugin-fw-dimensions__linked__value",wrapperActiveClass:"yith-plugin-fw-dimensions--linked-active"},dimensions:{number:".yith-plugin-fw-dimensions__dimension__number"}},init:function(){var i=t;e(document).on("click",i.selectors.units.single,i.unitChange),e(document).on("click",i.selectors.linked.button,i.linkedChange),e(document).on("change keyup",i.selectors.dimensions.number,i.numberChange)},unitChange:function(i){var n=e(this).closest(t.selectors.units.single),a=n.closest(t.selectors.units.wrapper),l=a.find(t.selectors.units.single),o=a.find(t.selectors.units.value).first(),s=n.data("value");l.removeClass(t.selectors.units.selectedClass),n.addClass(t.selectors.units.selectedClass),o.val(s).trigger("change")},linkedChange:function(){var i=e(this).closest(t.selectors.linked.button),n=i.closest(t.selectors.wrapper),a=i.find(t.selectors.linked.value);"yes"===a.val()?(n.removeClass(t.selectors.linked.wrapperActiveClass),a.val("no")):(n.addClass(t.selectors.linked.wrapperActiveClass),a.val("yes"),n.find(t.selectors.dimensions.number).first().trigger("change"))},numberChange:function(i){var n=e(this).closest(t.selectors.dimensions.number),a=n.closest(t.selectors.wrapper);a.hasClass(t.selectors.linked.wrapperActiveClass)&&a.find(t.selectors.dimensions.number).val(n.val())}};t.init();e(document).on("click",".yith-plugin-fw-copy-to-clipboard__copy",function(){var t,i=e(this).closest(".yith-plugin-fw-copy-to-clipboard"),n=i.find(".yith-plugin-fw-copy-to-clipboard__field"),a=i.find(".yith-plugin-fw-copy-to-clipboard__tip"),l=i.data("tip-timeout");l&&clearTimeout(l),n.select(),document.execCommand("copy"),(t="getSelection"in window&&window.getSelection())?"empty"in t?t.empty():"removeAllRanges"in t&&t.removeAllRanges():"selection"in document&&document.selection.empty(),a.fadeIn(400),l=setTimeout(function(){a.fadeOut(400)},1500),i.data("tip-timeout",l)});var i={init:function(){e(document).on("click",".yith-plugin-fw__action-button--has-menu",i.open),e(document).on("click",".yith-plugin-fw__action-button__menu",i.stopPropagation),e(document).on("click",i.closeAll)},closeAll:function(){e(".yith-plugin-fw__action-button--opened").removeClass("yith-plugin-fw__action-button--opened")},open:function(t){var n=e(this).closest(".yith-plugin-fw__action-button"),a=n.hasClass("yith-plugin-fw__action-button--opened");t.preventDefault(),t.stopPropagation(),i.closeAll(),a||n.addClass("yith-plugin-fw__action-button--opened")},stopPropagation:function(e){e.stopPropagation()}};i.init(),e(document).on("click","a.yith-plugin-fw__require-confirmation-link",function(t){var i=e(this).closest("a.yith-plugin-fw__require-confirmation-link"),n=i.attr("href");if(n&&"#"!==n&&(t.preventDefault(),t.stopPropagation(),"yith"in window&&"ui"in yith)){var a,l=["title","message","confirmButtonType","cancelButton","confirmButton"],o={};for(a in l){var s=l[a],r=i.data(s);void 0!==r&&(o[s]=r)}o.onConfirm=function(){window.location.href=n},o.closeAfterConfirm=!1,yith.ui.confirm(o)}}),e(document).on("yith-plugin-fw-tips-init",function(){e(".yith-plugin-fw__tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})}).trigger("yith-plugin-fw-tips-init")}(jQuery);
1
+ !function(e){var t={selectors:{imgPreview:".yith-plugin-fw-upload-img-preview",uploadButton:".yith-plugin-fw-upload-button",imgUrl:".yith-plugin-fw-upload-img-url",resetButton:".yith-plugin-fw-upload-button-reset"},onImageChange:function(){var i=e(this).val(),n=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(t.selectors.imgPreview).first();a.length<1&&(a=e(this).parent().parent().find(t.selectors.imgPreview).first()),n.test(i)?a.html('<img src="'+i+'" style="max-width:100px; max-height:100px;" />'):a.html("")},onButtonClick:function(i){i.preventDefault();var n,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(n)n.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(n=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var i=n.state().get("selection").first().toJSON(),l=e("#"+a+"-yith-attachment-id");e("#"+a).val(i.url),l.length&&l.val(i.id),t.triggerImageChange()}),n.open()}},onResetClick:function(){var i=e(this),n=i.attr("id").replace(/(\[|\])/g,"\\$1"),a=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),l=e("#"+n).data("default");e("#"+a).val(l),t.triggerImageChange()},triggerImageChange:function(){e(t.selectors.imgUrl).trigger("change")},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("change",t.selectors.imgUrl,t.onImageChange),e(document).on("click",t.selectors.uploadButton,t.onButtonClick),e(document).on("click",t.selectors.resetButton,t.onResetClick))}};t.initOnce();var i={selectors:{gallery:".yith-plugin-fw-image-gallery",notInitGallery:".yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)",button:".yith-plugin-fw-image-gallery .image-gallery-button",slideWrapper:"ul.slides-wrapper"},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(document).on("click",i.selectors.button,function(t){var n=e(this),a=n.closest(i.selectors.gallery),l=a.find(".image_gallery_ids"),o=l.val(),s=a.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:n.data("choose"),button:{text:n.data("update")},states:[new wp.media.controller.Library({title:n.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+n.data("delete")+'">x</a></li></ul></li>'))}),l.val(o),l.trigger("change")}),r.open()})},init:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(i.selectors.notInitGallery).each(function(){e(this).addClass("yith-plugin-fw-image-gallery--initialized");var t=e(this).find(i.selectors.slideWrapper);t.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(n,a){var l="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");l=l+t+","}),t.closest(i.selectors.gallery).find(".image_gallery_ids").val(l)}})}),t.on("click","a.delete",function(t){t.preventDefault();var n=e(this).closest(i.selectors.gallery),a=n.find("ul.slides-wrapper"),l=n.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),a.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");o=o+t+","}),l.val(o)})})}};i.initOnce(),e(function(){e(document).on("yith-plugin-fw-codemirror-init",function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.codeEditor&&e(".codemirror:not(.codemirror--initialized)").each(function(){var t=e(this).data("settings"),i=wp.codeEditor.initialize(e(this),t);e(this).addClass("codemirror--initialized"),e(this).data("codemirrorInstance",i)})}).trigger("yith-plugin-fw-codemirror-init")});e(document).on("yith_fields_init",function(){var n=e(".yith-plugin-fw-datepicker:not(.yith-plugin-fw-datepicker--initialized)"),a=e(".yith-plugin-fw-colorpicker:not(.yith-plugin-fw-colorpicker--initialized)"),l=e(".yith-plugin-fw-sidebar-layout:not(.yith-plugin-fw-sidebar-layout--initialized)"),o=e(".yith-plugin-fw-slider-container:not(.yith-plugin-fw-slider-container--initialized)"),s=e(".yit-icons-manager-wrapper:not(.yit-icons-manager-wrapper--initialized)");n.each(function(){e(this).addClass("yith-plugin-fw-datepicker--initialized");var t=e(this),i=t.data(),n=t.next(".yith-icon-calendar");i.showAnim=!1,i.beforeShow=function(e,t){t.dpDiv.addClass("yith-plugin-fw-datepicker-div")},i.onClose=function(e,t){t.dpDiv.removeClass("yith-plugin-fw-datepicker-div")},t.datepicker(i),n&&n.on("click",function(){t.datepicker("show")})}),a.each(function(){e(this).addClass("yith-plugin-fw-colorpicker--initialized"),e(this).wpColorPicker({palettes:!1,width:200,mode:"hsl",clear:function(){var t=e(this);t.val(t.data("default-color")),t.trigger("change")}});var t=e(this).data("variations-label"),i=e(this).closest(".yith-plugin-fw-colorpicker-field-wrapper"),n=e(this).closest(".yith-single-colorpicker"),a=i.find(".wp-picker-input-wrap"),l=n.find(".wp-picker-input-wrap");if(a.length&&i.find("a.wp-color-result").attr("title",t),n.length&&n.find("a.wp-color-result").attr("title",t),!a.find(".wp-picker-default-custom").length){var o=e("<span/>").attr({"class":"wp-picker-default-custom"});a.find(".wp-picker-default").wrap(o)}l.find(".wp-picker-default-custom").length||(o=e("<span/>").attr({"class":"wp-picker-default-custom"}),l.find(".wp-picker-default").wrap(o))}),l.each(function(){e(this).addClass("yith-plugin-fw-sidebar-layout--initialized"),e(this).find("img").on("click",function(){var t=e(this).closest(".yith-plugin-fw-sidebar-layout"),i=t.find(".yith-plugin-fw-sidebar-layout-sidebar-left-container"),n=t.find(".yith-plugin-fw-sidebar-layout-sidebar-right-container"),a=e(this).data("type");if(e(this).parent().children(":radio").attr("checked",!1),e(this).prev(":radio").attr("checked",!0),void 0!==a)switch(a){case"left":i.show(),n.hide();break;case"right":n.show(),i.hide();break;case"double":i.show(),n.show();break;default:i.hide(),n.hide()}})}),o.each(function(){e(this).addClass("yith-plugin-fw-slider-container--initialized");var t=e(this).find(".ui-slider-horizontal"),i=t.data("val"),n=t.data("min"),a=t.data("max"),l=t.data("step"),o=t.data("labels");t.slider({value:i,min:n,max:a,range:"min",step:l,create:function(){e(this).find(".ui-slider-handle").text(e(this).slider("value"))},slide:function(t,i){e(this).find("input").val(i.value).trigger("change"),e(this).find(".ui-slider-handle").text(i.value),e(this).siblings(".feedback").find("strong").text(i.value+o)}})}),s.each(function(){e(this).addClass("yit-icons-manager-wrapper--initialized");var t=e(this),i=t.find(".yit-icons-manager-icon-preview").first(),n=t.find(".yit-icons-manager-icon-text");t.on("click",".yit-icons-manager-list li",function(a){var l=e(a.target).closest("li"),o=l.data("font"),s=l.data("icon"),r=l.data("key"),c=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",c),n.val(o+":"+c),t.find(".yit-icons-manager-list li").removeClass("active"),l.addClass("active")}),t.on("click",".yit-icons-manager-action-set-default",function(){t.find(".yit-icons-manager-list li.default").trigger("click")})}),e(document).find(".ui-sortable .yith-toggle-elements").sortable({cursor:"move",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop:function(t,i){var n=jQuery(".ui-sortable-handle"),a=0,l=new Array;for(a=0;a<n.length;a++)l[a]=e(n[a]).data("item_key");l.length>0&&e(this).closest(".toggle-element").saveToggleElement(null,l)}}),e(document.body).trigger("wc-enhanced-select-init"),e(document.body).trigger("yith-framework-enhanced-select-init"),e(document).trigger("yith-plugin-fw-codemirror-init"),t.triggerImageChange(),i.init()}).trigger("yith_fields_init"),e(document).on("click",".yith-plugin-fw-select-images__item",function(){var t=e(this),i=t.data("key"),n=t.closest(".yith-plugin-fw-select-images__wrapper"),a=n.find(".yith-plugin-fw-select-images__item"),l=n.find("select").first();l.length&&(l.val(i).trigger("yith_select_images_value_changed").trigger("change"),a.removeClass("yith-plugin-fw-select-images__item--selected"),t.addClass("yith-plugin-fw-select-images__item--selected"))}),e(document).on("click",".yith-plugin-fw-select-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!0).trigger("change")}),e(document).on("click",".yith-plugin-fw-deselect-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!1).trigger("change")}),e(document).on("click",".yith-plugin-fw-onoff-container span",function(){var t=e(this).prev("input");t.prop("disabled")||t.trigger("click")}),e(document).on("click",".yith-plugin-fw-onoff-container input",function(t){e(this).is(":checked")?e(this).attr("value","yes").addClass("onoffchecked"):e(this).attr("value","no").removeClass("onoffchecked"),e(this).trigger("change")}),e.fn.saveToggleElement=function(t,i){var n=e(this),a="yith_plugin_fw_save_toggle_element",l=n.serializeToggleElement(),o=n.find(".yith-toggle_wrapper"),s=o.attr("id"),r=e.urlParam("tab");l.append("security",o.data("nonce")),void 0!==i&&i.length>0&&l.append("yith_toggle_elements_order_keys",i),n.closest(".metaboxes-tab.yith-plugin-ui").length?(a="yith_plugin_fw_save_toggle_element_metabox",post_id=e(this).closest("form#post").find("#post_ID").val(),yit_metaboxes_nonce=e(this).closest("form#post").find("#yit_metaboxes_nonce").val(),metabox_tab=e(this).closest(".tabs-panel").attr("id"),url=yith_framework_fw_fields.ajax_url+"?action="+a+"&post_ID="+post_id+"&yit_metaboxes_nonce="+yit_metaboxes_nonce+"&toggle_id="+s+"&metabox_tab="+metabox_tab):url=yith_framework_fw_fields.admin_url+"?action="+a+"&tab="+r+"&toggle_id="+s,e.ajax({type:"POST",url:url,data:l,contentType:!1,processData:!1,success:function(i){t&&t.removeClass("show"),e(document).trigger("yith_save_toggle_element_done",[i,n])}})},e.fn.serializeToggleElement=function(){var t=e(this),i=new FormData,n=e(t).find(":input").serializeArray();return e.each(n,function(e,t){el_name=t.name,i.append(t.name,t.value)}),i},e.fn.formatToggleTitle=function(){var t=e(this),i=t.find(":input"),n=t.find("span.title").data("title_format"),a=t.find(".subtitle").data("subtitle_format"),l=new RegExp("[^%%]+(?=[%%])","g");if(void 0!==n)var o=n.match(l);if(void 0!==a)var s=a.match(l);e.each(i,function(t,i){void 0!==e(i).attr("id")&&($field_id=e(i).attr("id"),$field_array=$field_id.split("_"),$field_array.pop(),$field_id=$field_array.join("_"),$field_val=e(i).val(),null!=o&&void 0!==o&&-1!==o.indexOf($field_id)&&(n=n.replace("%%"+$field_id+"%%",$field_val)),null!=s&&void 0!==s&&-1!==s.indexOf($field_id)&&(a=a.replace("%%"+$field_id+"%%",$field_val)))}),""!==n&&t.find("span.title").html(n),""!==a&&t.find(".subtitle").html(a),e(document).trigger("yith-toggle-element-item-title",[t])},e.urlParam=function(e){var t=new RegExp("[?&]"+e+"=([^&#]*)").exec(window.location.search);return null!==t&&(t[1]||0)},e(document).on("click",".yith-toggle-title",function(t){var i=e(t.target),n=i.closest(".yith-toggle-row"),a=n.find(".yith-toggle-content");if(i.hasClass("yith-plugin-fw-onoff")||i.hasClass("yith-icon-drag"))return!1;n.is(".yith-toggle-row-opened")?a.slideUp(400):a.slideDown(400),n.toggleClass("yith-toggle-row-opened")}),e(document).on("click",".yith-add-box-button",function(t){t.preventDefault();var i=e(this),n=i.data("box_id"),a=i.data("closed_label"),l=i.data("opened_label"),o=i.closest(".yith-toggle_wrapper").attr("id"),s=wp.template("yith-toggle-element-add-box-content-"+o);""!==n&&(e("#"+n).html(s({index:"box_id"})).slideToggle(),""!==a&&(i.html()===a?i.html(l).removeClass("closed"):i.html(a).addClass("closed")),e(document).trigger("yith_fields_init"),e(document).trigger("yith-add-box-button-toggle",[i]))}),e(document).on("click",".yith-add-box-buttons .yith-save-button",function(t){t.preventDefault();var i=e(this).parents(".yith-add-box"),n=e(this).closest(".yith-toggle_wrapper").attr("id"),a=i.find(".spinner"),l=e(this).parents(".toggle-element"),o=i.find(":input"),s=0,r=e('<input type="hidden">');l.find(".yith-toggle-row").each(function(){var t=parseInt(e(this).data("item_key"));s<=t&&(s=t+1)}),r.val(s),e(document).trigger("yith-toggle-change-counter",[r,i]),s=r.val();var c=wp.template("yith-toggle-element-item-"+n),d=e(c({index:s}));a.addClass("show"),e.each(o,function(t,i){if(void 0!==e(i).attr("id")){var n=e(i).attr("id"),a=e(i).val();n="radio"===e(i).attr("type")?(n=(n=e(i).closest(".yith-plugin-fw-radio").attr("id")).replace("new_","")+"_"+s)+"-"+a:n.replace("new_","")+"_"+s,e(i).is(":checked")&&e(d).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(d).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(d).find("#"+n).val(a)}}),e(d).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,d,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(d),e(i).find(".yith-plugin-fw-datepicker").datepicker("destroy"),e(i).html(""),e(i).prev(".yith-add-box-button").trigger("click"),l.saveToggleElement();setTimeout(function(){e(l).find(".highlight").removeClass("highlight")},2e3),e(document).trigger("yith_fields_init")}},1e3)}),e(document).on("click",".yith-toggle-row .yith-save-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element"),n=e(this).closest(".yith-toggle-row"),a=n.find(".spinner");n.formatToggleTitle();var l=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-update",[i,n,l]),"yes"===l.val()&&(a.addClass("show"),i.saveToggleElement(a))}),e(document).on("click",".yith-toggle-row .yith-delete-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element");e(this).closest(".yith-toggle-row").remove(),i.saveToggleElement()}),e(document).on("click",".yith-toggle-onoff",function(t){t.preventDefault(),e(this).closest(".toggle-element").saveToggleElement()}),e(document).on("click",".yith-plugin-fw-radio input[type=radio]",function(){var t=e(this).closest(".yith-plugin-fw-radio"),i=e(this).val();t.val(i).data("value",i).trigger("change")}),e(document.body).on("yith-plugin-fw-init-radio",function(){e(".yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)").each(function(){e(this).find('input[type="radio"]').filter('[value="'+e(this).data("value")+'"]').click(),e(this).addClass("yith-plugin-fw-radio--initialized")})}).trigger("yith-plugin-fw-init-radio"),e(document).on("click",".yith-password-eye",function(){var t=e(this),i=e(this).closest(".yith-password-wrapper").find("input");"password"===i.attr("type")?(i.attr("type","text"),t.addClass("yith-password-eye-closed")):(i.attr("type","password"),t.removeClass("yith-password-eye-closed"))}),e(document).on("select2:open",function(t){e(t.target).closest(".yith-plugin-ui").length&&e(".select2-results").closest(".select2-container").addClass("yith-plugin-fw-select2-container")});var n={selectors:{wrapper:".yith-plugin-fw-dimensions",units:{wrapper:".yith-plugin-fw-dimensions__units",single:".yith-plugin-fw-dimensions__unit",value:".yith-plugin-fw-dimensions__unit__value",selectedClass:"yith-plugin-fw-dimensions__unit--selected"},linked:{button:".yith-plugin-fw-dimensions__linked",value:".yith-plugin-fw-dimensions__linked__value",wrapperActiveClass:"yith-plugin-fw-dimensions--linked-active"},dimensions:{number:".yith-plugin-fw-dimensions__dimension__number"}},init:function(){var t=n;e(document).on("click",t.selectors.units.single,t.unitChange),e(document).on("click",t.selectors.linked.button,t.linkedChange),e(document).on("change keyup",t.selectors.dimensions.number,t.numberChange)},unitChange:function(t){var i=e(this).closest(n.selectors.units.single),a=i.closest(n.selectors.units.wrapper),l=a.find(n.selectors.units.single),o=a.find(n.selectors.units.value).first(),s=i.data("value");l.removeClass(n.selectors.units.selectedClass),i.addClass(n.selectors.units.selectedClass),o.val(s).trigger("change")},linkedChange:function(){var t=e(this).closest(n.selectors.linked.button),i=t.closest(n.selectors.wrapper),a=t.find(n.selectors.linked.value);"yes"===a.val()?(i.removeClass(n.selectors.linked.wrapperActiveClass),a.val("no")):(i.addClass(n.selectors.linked.wrapperActiveClass),a.val("yes"),i.find(n.selectors.dimensions.number).first().trigger("change"))},numberChange:function(t){var i=e(this).closest(n.selectors.dimensions.number),a=i.closest(n.selectors.wrapper);a.hasClass(n.selectors.linked.wrapperActiveClass)&&a.find(n.selectors.dimensions.number).val(i.val())}};n.init();e(document).on("click",".yith-plugin-fw-copy-to-clipboard__copy",function(){var t,i=e(this).closest(".yith-plugin-fw-copy-to-clipboard"),n=i.find(".yith-plugin-fw-copy-to-clipboard__field"),a=i.find(".yith-plugin-fw-copy-to-clipboard__tip"),l=i.data("tip-timeout");l&&clearTimeout(l),n.select(),document.execCommand("copy"),(t="getSelection"in window&&window.getSelection())?"empty"in t?t.empty():"removeAllRanges"in t&&t.removeAllRanges():"selection"in document&&document.selection.empty(),a.fadeIn(400),l=setTimeout(function(){a.fadeOut(400)},1500),i.data("tip-timeout",l)});var a={init:function(){e(document).on("click",".yith-plugin-fw__action-button--has-menu",a.open),e(document).on("click",".yith-plugin-fw__action-button__menu",a.stopPropagation),e(document).on("click",a.closeAll)},closeAll:function(){e(".yith-plugin-fw__action-button--opened").removeClass("yith-plugin-fw__action-button--opened")},open:function(t){var i=e(this).closest(".yith-plugin-fw__action-button"),n=i.hasClass("yith-plugin-fw__action-button--opened");t.preventDefault(),t.stopPropagation(),a.closeAll(),n||i.addClass("yith-plugin-fw__action-button--opened")},stopPropagation:function(e){e.stopPropagation()}};a.init(),e(document).on("click","a.yith-plugin-fw__require-confirmation-link",function(t){var i=e(this).closest("a.yith-plugin-fw__require-confirmation-link"),n=i.attr("href");if(n&&"#"!==n&&(t.preventDefault(),t.stopPropagation(),"yith"in window&&"ui"in yith)){var a,l=["title","message","confirmButtonType","cancelButton","confirmButton"],o={};for(a in l){var s=l[a],r=i.data(s);void 0!==r&&(o[s]=r)}o.onConfirm=function(){window.location.href=n},o.closeAfterConfirm=!1,yith.ui.confirm(o)}}),e(document).on("yith-plugin-fw-tips-init",function(){e(".yith-plugin-fw__tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})}).trigger("yith-plugin-fw-tips-init")}(jQuery);
plugin-fw/assets/js/yith-ui.js CHANGED
@@ -32,6 +32,7 @@ window.yith = window.yith || {};
32
  var defaults = {
33
  title : false,
34
  message : false,
 
35
  onConfirm : false,
36
  onCancel : false,
37
  onClose : false,
@@ -111,6 +112,7 @@ window.yith = window.yith || {};
111
  allowWpMenu : options.allowWpMenu,
112
  allowWpMenuInMobile : options.allowWpMenuInMobile,
113
  showClose : options.showClose,
 
114
  onClose : options.onClose,
115
  closeWhenClickingOnOverlay: options.closeWhenClickingOnOverlay
116
  }
@@ -170,6 +172,7 @@ window.yith = window.yith || {};
170
  allowClosingWithEsc : true,
171
  closeWhenClickingOnOverlay: false,
172
  scrollContent : true,
 
173
  onClose : false
174
  },
175
  self = {};
@@ -273,7 +276,9 @@ window.yith = window.yith || {};
273
  container.addClass( 'yith-plugin-fw__modal--allow-wp-menu-in-mobile' );
274
  }
275
 
276
-
 
 
277
  },
278
  initEvents = function () {
279
  dom.close.on( 'click', handleClose );
@@ -292,7 +297,7 @@ window.yith = window.yith || {};
292
  if ( options.allowClosingWithEsc && event.keyCode === 27 ) {
293
  handleClose();
294
  }
295
- }
296
 
297
  initialize();
298
 
@@ -300,7 +305,6 @@ window.yith = window.yith || {};
300
  self.close = handleClose;
301
 
302
  return self;
303
-
304
- }
305
 
306
  } )( window.jQuery, window.yith );
32
  var defaults = {
33
  title : false,
34
  message : false,
35
+ onCreate : false,
36
  onConfirm : false,
37
  onCancel : false,
38
  onClose : false,
112
  allowWpMenu : options.allowWpMenu,
113
  allowWpMenuInMobile : options.allowWpMenuInMobile,
114
  showClose : options.showClose,
115
+ onCreate : options.onCreate,
116
  onClose : options.onClose,
117
  closeWhenClickingOnOverlay: options.closeWhenClickingOnOverlay
118
  }
172
  allowClosingWithEsc : true,
173
  closeWhenClickingOnOverlay: false,
174
  scrollContent : true,
175
+ onCreate : false,
176
  onClose : false
177
  },
178
  self = {};
276
  container.addClass( 'yith-plugin-fw__modal--allow-wp-menu-in-mobile' );
277
  }
278
 
279
+ if ( typeof options.onCreate === 'function' ) {
280
+ options.onCreate();
281
+ }
282
  },
283
  initEvents = function () {
284
  dom.close.on( 'click', handleClose );
297
  if ( options.allowClosingWithEsc && event.keyCode === 27 ) {
298
  handleClose();
299
  }
300
+ };
301
 
302
  initialize();
303
 
305
  self.close = handleClose;
306
 
307
  return self;
308
+ };
 
309
 
310
  } )( window.jQuery, window.yith );
plugin-fw/assets/js/yith-ui.min.js CHANGED
@@ -1 +1 @@
1
- window.yith=window.yith||{},function(n,e){e.ui=e.ui||{};var o=function(n){if("string"==typeof n)return n;var e=[];for(var t of n)t&&e.indexOf(t)<0&&e.push(o(t));return e.join(" ")},t=function(n){n.stopPropagation()};e.ui.confirm=function(t){var l={title:!1,message:!1,onConfirm:!1,onCancel:!1,onClose:!1,classes:{wrap:"",content:"",title:"",message:"",footer:"",cancel:"",confirm:""},confirmButtonType:"confirm",cancelButton:yith_plugin_fw_ui.i18n.cancel,confirmButton:yith_plugin_fw_ui.i18n.confirm,width:350,closeAfterConfirm:!0,allowWpMenu:!1,allowWpMenuInMobile:!1,showClose:!0,closeWhenClickingOnOverlay:!1},i={};t=void 0!==t?t:{},(t=n.extend({},l,t)).classes=n.extend({},l.classes,t.classes);var s={wrap:o(["yith-plugin-fw__confirm__wrap",t.classes.wrap]),content:o(["yith-plugin-fw__confirm__content",t.classes.content]),title:o(["yith-plugin-fw__confirm__title",t.classes.title]),message:o(["yith-plugin-fw__confirm__message",t.classes.message]),footer:o(["yith-plugin-fw__confirm__footer",t.classes.footer]),cancel:o(["yith-plugin-fw__confirm__button","yith-plugin-fw__confirm__button--cancel",t.classes.cancel]),confirm:o(["yith-plugin-fw__confirm__button","yith-plugin-fw__confirm__button--"+t.confirmButtonType,t.classes.confirm])},c={message:!1,footer:!1,cancel:!1,confirm:!1},a=!1,r=function(){a&&a.close(),a=!1},f=function(){"function"==typeof t.onCancel&&t.onCancel(),r()},p=function(){"function"==typeof t.onConfirm&&t.onConfirm(),t.closeAfterConfirm&&r()},m=function(){c.cancel.on("click",f),c.confirm.on("click",p)};(function(){c.message=n('<div class="'+s.message+'">'),c.footer=n('<div class="'+s.footer+'">'),c.cancel=n('<span class="'+s.cancel+'">'+t.cancelButton+"</span>"),c.confirm=n('<span class="'+s.confirm+'">'+t.confirmButton+"</span>"),t.message&&c.message.html(t.message),c.footer.append(c.cancel),c.footer.append(c.confirm),a=e.ui.modal({classes:{wrap:s.wrap,title:s.title,content:s.content},title:t.title,content:[c.message,c.footer],width:t.width,allowWpMenu:t.allowWpMenu,allowWpMenuInMobile:t.allowWpMenuInMobile,showClose:t.showClose,onClose:t.onClose,closeWhenClickingOnOverlay:t.closeWhenClickingOnOverlay})})(),m(),i.elements=n.extend({},c),i.modal=n.extend({},a),i.close=r,i.cancel=f},e.ui.modal=function(e){var l={allowWpMenu:!0,allowWpMenuInMobile:!1,title:!1,content:!1,footer:!1,showClose:!0,closeSelector:!1,classes:{wrap:"",main:"",close:"",title:"",content:"",footer:""},width:500,allowClosingWithEsc:!0,closeWhenClickingOnOverlay:!1,scrollContent:!0,onClose:!1},i={};e=void 0!==e?e:{},(e=n.extend({},l,e)).classes=n.extend({},l.classes,e.classes);var s=n("#wpwrap"),c={wrap:["yith-plugin-ui","yith-plugin-fw__modal__wrap",e.classes.wrap],main:["yith-plugin-fw__modal__main",e.classes.main],close:["yith-plugin-fw__modal__close","yith-icon","yith-icon-close",e.classes.close],title:["yith-plugin-fw__modal__title",e.classes.title],content:["yith-plugin-fw__modal__content",e.classes.content],footer:["yith-plugin-fw__modal__footer",e.classes.footer]},a={wrap:!1,main:!1,close:!1,title:!1,content:!1,footer:!1},r=function(){n(".yith-plugin-fw__modal__wrap").remove(),s.removeClass("yith-plugin-fw__modal--opened"),s.removeClass("yith-plugin-fw__modal--allow-wp-menu"),s.removeClass("yith-plugin-fw__modal--allow-wp-menu-in-mobile"),"function"==typeof e.onClose&&e.onClose()},f=function(){a.wrap=n('<div class="'+o(c.wrap)+'">'),a.main=n('<div class="'+o(c.main)+'">'),a.close=n('<span class="'+o(c.close)+'">'),a.title=n('<div class="'+o(c.title)+'">'),a.content=n('<div class="'+o(c.content)+'">'),a.footer=n('<div class="'+o(c.footer)+'">'),a.main.css({width:e.width}),e.title&&("string"==typeof e.title?a.title.html(e.title):a.title.append(e.title)),e.content&&("string"==typeof e.content?a.content.html(e.content):a.content.append(e.content)),e.showClose&&a.main.append(a.close),a.main.append(a.title),a.main.append(a.content),e.footer&&("string"==typeof e.footer?a.footer.html(e.footer):a.footer.append(e.footer),a.main.append(a.footer)),a.wrap.append(a.main),e.scrollContent&&a.wrap.addClass("yith-plugin-fw__modal__wrap--scroll-content"),s.append(a.wrap),s.addClass("yith-plugin-fw__modal--opened"),e.allowWpMenu&&s.addClass("yith-plugin-fw__modal--allow-wp-menu"),e.allowWpMenuInMobile&&s.addClass("yith-plugin-fw__modal--allow-wp-menu-in-mobile")},p=function(){a.close.on("click",r),e.closeSelector&&s.on("click",e.closeSelector,r),e.closeWhenClickingOnOverlay&&(a.wrap.on("click",r),a.main.on("click",t)),n(document).on("keydown",m)},m=function(n){e.allowClosingWithEsc&&27===n.keyCode&&r()};return r(),f(),p(),i.elements=n.extend({},a),i.close=r,i}}(window.jQuery,window.yith);
1
+ window.yith=window.yith||{},function(n,e){e.ui=e.ui||{};var o=function(n){if("string"==typeof n)return n;var e=[];for(var t of n)t&&e.indexOf(t)<0&&e.push(o(t));return e.join(" ")},t=function(n){n.stopPropagation()};e.ui.confirm=function(t){var l={title:!1,message:!1,onCreate:!1,onConfirm:!1,onCancel:!1,onClose:!1,classes:{wrap:"",content:"",title:"",message:"",footer:"",cancel:"",confirm:""},confirmButtonType:"confirm",cancelButton:yith_plugin_fw_ui.i18n.cancel,confirmButton:yith_plugin_fw_ui.i18n.confirm,width:350,closeAfterConfirm:!0,allowWpMenu:!1,allowWpMenuInMobile:!1,showClose:!0,closeWhenClickingOnOverlay:!1},i={};t=void 0!==t?t:{},(t=n.extend({},l,t)).classes=n.extend({},l.classes,t.classes);var s={wrap:o(["yith-plugin-fw__confirm__wrap",t.classes.wrap]),content:o(["yith-plugin-fw__confirm__content",t.classes.content]),title:o(["yith-plugin-fw__confirm__title",t.classes.title]),message:o(["yith-plugin-fw__confirm__message",t.classes.message]),footer:o(["yith-plugin-fw__confirm__footer",t.classes.footer]),cancel:o(["yith-plugin-fw__confirm__button","yith-plugin-fw__confirm__button--cancel",t.classes.cancel]),confirm:o(["yith-plugin-fw__confirm__button","yith-plugin-fw__confirm__button--"+t.confirmButtonType,t.classes.confirm])},c={message:!1,footer:!1,cancel:!1,confirm:!1},a=!1,r=function(){a&&a.close(),a=!1},f=function(){"function"==typeof t.onCancel&&t.onCancel(),r()},p=function(){"function"==typeof t.onConfirm&&t.onConfirm(),t.closeAfterConfirm&&r()},m=function(){c.cancel.on("click",f),c.confirm.on("click",p)};(function(){c.message=n('<div class="'+s.message+'">'),c.footer=n('<div class="'+s.footer+'">'),c.cancel=n('<span class="'+s.cancel+'">'+t.cancelButton+"</span>"),c.confirm=n('<span class="'+s.confirm+'">'+t.confirmButton+"</span>"),t.message&&c.message.html(t.message),c.footer.append(c.cancel),c.footer.append(c.confirm),a=e.ui.modal({classes:{wrap:s.wrap,title:s.title,content:s.content},title:t.title,content:[c.message,c.footer],width:t.width,allowWpMenu:t.allowWpMenu,allowWpMenuInMobile:t.allowWpMenuInMobile,showClose:t.showClose,onCreate:t.onCreate,onClose:t.onClose,closeWhenClickingOnOverlay:t.closeWhenClickingOnOverlay})})(),m(),i.elements=n.extend({},c),i.modal=n.extend({},a),i.close=r,i.cancel=f},e.ui.modal=function(e){var l={allowWpMenu:!0,allowWpMenuInMobile:!1,title:!1,content:!1,footer:!1,showClose:!0,closeSelector:!1,classes:{wrap:"",main:"",close:"",title:"",content:"",footer:""},width:500,allowClosingWithEsc:!0,closeWhenClickingOnOverlay:!1,scrollContent:!0,onCreate:!1,onClose:!1},i={};e=void 0!==e?e:{},(e=n.extend({},l,e)).classes=n.extend({},l.classes,e.classes);var s=n("#wpwrap"),c={wrap:["yith-plugin-ui","yith-plugin-fw__modal__wrap",e.classes.wrap],main:["yith-plugin-fw__modal__main",e.classes.main],close:["yith-plugin-fw__modal__close","yith-icon","yith-icon-close",e.classes.close],title:["yith-plugin-fw__modal__title",e.classes.title],content:["yith-plugin-fw__modal__content",e.classes.content],footer:["yith-plugin-fw__modal__footer",e.classes.footer]},a={wrap:!1,main:!1,close:!1,title:!1,content:!1,footer:!1},r=function(){n(".yith-plugin-fw__modal__wrap").remove(),s.removeClass("yith-plugin-fw__modal--opened"),s.removeClass("yith-plugin-fw__modal--allow-wp-menu"),s.removeClass("yith-plugin-fw__modal--allow-wp-menu-in-mobile"),"function"==typeof e.onClose&&e.onClose()},f=function(){a.wrap=n('<div class="'+o(c.wrap)+'">'),a.main=n('<div class="'+o(c.main)+'">'),a.close=n('<span class="'+o(c.close)+'">'),a.title=n('<div class="'+o(c.title)+'">'),a.content=n('<div class="'+o(c.content)+'">'),a.footer=n('<div class="'+o(c.footer)+'">'),a.main.css({width:e.width}),e.title&&("string"==typeof e.title?a.title.html(e.title):a.title.append(e.title)),e.content&&("string"==typeof e.content?a.content.html(e.content):a.content.append(e.content)),e.showClose&&a.main.append(a.close),a.main.append(a.title),a.main.append(a.content),e.footer&&("string"==typeof e.footer?a.footer.html(e.footer):a.footer.append(e.footer),a.main.append(a.footer)),a.wrap.append(a.main),e.scrollContent&&a.wrap.addClass("yith-plugin-fw__modal__wrap--scroll-content"),s.append(a.wrap),s.addClass("yith-plugin-fw__modal--opened"),e.allowWpMenu&&s.addClass("yith-plugin-fw__modal--allow-wp-menu"),e.allowWpMenuInMobile&&s.addClass("yith-plugin-fw__modal--allow-wp-menu-in-mobile"),"function"==typeof e.onCreate&&e.onCreate()},p=function(){a.close.on("click",r),e.closeSelector&&s.on("click",e.closeSelector,r),e.closeWhenClickingOnOverlay&&(a.wrap.on("click",r),a.main.on("click",t)),n(document).on("keydown",m)},m=function(n){e.allowClosingWithEsc&&27===n.keyCode&&r()};return r(),f(),p(),i.elements=n.extend({},a),i.close=r,i}}(window.jQuery,window.yith);
plugin-fw/bin/clean-language-files.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jshint ignore: start */
2
+
3
+ /**
4
+ *
5
+ *
6
+ * @author Leanza Francesco <leanzafrancesco@gmail.com>
7
+ */
8
+
9
+ const fs = require( 'fs' );
10
+ const glob = require( 'glob' );
11
+ const chalk = require( 'chalk' );
12
+
13
+ const DELETED = chalk.reset.inverse.bold.green( ' DELETED ' );
14
+ const ERROR = chalk.reset.inverse.bold.red( ' ERROR ' );
15
+
16
+ console.log( chalk.green( '\nCleaning language files...' ) );
17
+ glob( "languages/*.po~", function ( er, files ) {
18
+
19
+ if ( files.length ) {
20
+ console.log( `Processing ${files.length} files:` );
21
+
22
+ files.forEach( ( file ) => {
23
+ fs.unlink( file, ( err ) => {
24
+ if ( err ) {
25
+ console.log( chalk.bold( ` - ${file} ` ) + ERROR );
26
+ console.error( err );
27
+ return;
28
+ }
29
+ console.log( chalk.bold( ` - ${file} ` ) + DELETED );
30
+ } );
31
+ } );
32
+ } else {
33
+ console.log( `No file to clean.\n` );
34
+ }
35
+
36
+ } );
plugin-fw/bin/download-translations-config.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "projectPath": "https://translate.yithemes.com/gp/projects/yith-framework/",
3
+ "textDomain": "yith-plugin-fw",
4
+ "destFolder": "languages/",
5
+ "languages": [
6
+ {
7
+ "id": "es",
8
+ "name": "Spanish",
9
+ "slug": "es_ES"
10
+ },
11
+ {
12
+ "id": "it",
13
+ "name": "Italian",
14
+ "slug": "it_IT"
15
+ },
16
+ {
17
+ "id": "nl",
18
+ "name": "Dutch",
19
+ "slug": "nl_NL"
20
+ },
21
+ {
22
+ "id": "el",
23
+ "name": "Greek",
24
+ "slug": "el"
25
+ }
26
+ ]
27
+ }
plugin-fw/bin/download-translations.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jshint ignore: start */
2
+
3
+ /**
4
+ * This script download translations from https://translate.yithemes.com/
5
+ *
6
+ * @version 1.1.0
7
+ * @author Leanza Francesco <leanzafrancesco@gmail.com>
8
+ */
9
+
10
+ const fs = require( 'fs' );
11
+ const path = require( 'path' );
12
+ const axios = require( 'axios' );
13
+ const chalk = require( 'chalk' );
14
+ const options = require( './download-translations-config' );
15
+
16
+ const SPACE = '\t';
17
+ const DONE = chalk.reset.inverse.bold.green( ' DONE ' );
18
+ const ERROR = chalk.reset.inverse.bold.red( ' ERROR ' );
19
+
20
+ async function download( url, dest ) {
21
+ const destPath = path.resolve( dest );
22
+ const writer = fs.createWriteStream( destPath );
23
+
24
+ const response = await axios( {
25
+ url,
26
+ method : 'GET',
27
+ responseType: 'stream'
28
+ } );
29
+
30
+ response.data.pipe( writer );
31
+
32
+ return new Promise( ( resolve, reject ) => {
33
+ writer.on( 'finish', resolve );
34
+ writer.on( 'error', reject );
35
+ } )
36
+ }
37
+
38
+ const downloadLanguage = function ( language ) {
39
+ const languageName = language.name || language.id;
40
+ const source = options.projectPath + language.id + "/default/export-translations/";
41
+ const fileName = options.textDomain + '-' + language.slug + '.po';
42
+ const dest = options.destFolder + fileName;
43
+ const message = ' - ' + chalk.bold( languageName ) + SPACE;
44
+
45
+ download( source, dest ).then( () => {
46
+ console.log( message + DONE );
47
+ } ).catch( ( err ) => {
48
+ console.log( message + ERROR );
49
+ throw err;
50
+ } );
51
+ };
52
+
53
+ console.log( chalk.green( '\nDownloading Transations from translate.yithemes.com...' ) );
54
+
55
+ options.languages.forEach( ( language ) => {
56
+ downloadLanguage( language );
57
+ } );
plugin-fw/composer.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "yith/plugin-fw",
3
+ "description": "YITH Plugin Framework",
4
+ "type": "wordpress-plugin",
5
+ "license": "GPL-3.0-or-later",
6
+ "prefer-stable": true,
7
+ "minimum-stability": "dev",
8
+ "require-dev": {
9
+ "wp-coding-standards/wpcs": "^2.2",
10
+ "squizlabs/php_codesniffer": "^3.5",
11
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1"
12
+ },
13
+ "scripts": {
14
+ "phpcs": [
15
+ "phpcs -s -p"
16
+ ],
17
+ "phpcs-pre-commit": [
18
+ "phpcs -s -p -n"
19
+ ],
20
+ "phpcbf": [
21
+ "phpcbf -p --standard=WordPress"
22
+ ]
23
+ }
24
+ }
plugin-fw/dist/gutenberg/index.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill', 'wp-url'), 'version' => '2844b0e480878ce2f72473c4114265fe');
1
+ <?php return array('dependencies' => array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill', 'wp-url'), 'version' => '507c6fa0976e1a7dac032f234f666cbf');
plugin-fw/dist/gutenberg/index.js CHANGED
@@ -1 +1 @@
1
- (window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[]).push([[1],{27:function(e,t,o){},28:function(e,t,o){}}]),function(e){function t(t){for(var r,c,l=t[0],s=t[1],i=t[2],p=0,f=[];p<l.length;p++)c=l[p],Object.prototype.hasOwnProperty.call(n,c)&&n[c]&&f.push(n[c][0]),n[c]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r]);for(u&&u(t);f.length;)f.shift()();return a.push.apply(a,i||[]),o()}function o(){for(var e,t=0;t<a.length;t++){for(var o=a[t],r=!0,l=1;l<o.length;l++){var s=o[l];0!==n[s]&&(r=!1)}r&&(a.splice(t--,1),e=c(c.s=o[0]))}return e}var r={},n={0:0},a=[];function c(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,c),o.l=!0,o.exports}c.m=e,c.c=r,c.d=function(e,t,o){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(c.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(o,r,function(t){return e[t]}.bind(null,r));return o},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var l=window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[],s=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var u=s;a.push([29,1]),o()}([function(e,t){e.exports=window.wp.element},function(e,t){e.exports=window.wp.components},function(e,t){e.exports=window.React},function(e,t,o){var r=o(17),n=o(18),a=o(19),c=o(21);e.exports=function(e,t){return r(e)||n(e,t)||a(e,t)||c()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=window.wp.hooks},function(e,t){e.exports=window.lodash},function(e,t,o){var r,n,a,c,l;r=o(22),n=o(10).utf8,a=o(23),c=o(10).bin,(l=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?c.stringToBytes(e):n.stringToBytes(e):a(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var o=r.bytesToWords(e),s=8*e.length,i=1732584193,u=-271733879,p=-1732584194,f=271733878,d=0;d<o.length;d++)o[d]=16711935&(o[d]<<8|o[d]>>>24)|4278255360&(o[d]<<24|o[d]>>>8);o[s>>>5]|=128<<s%32,o[14+(s+64>>>9<<4)]=s;var h=l._ff,b=l._gg,y=l._hh,g=l._ii;for(d=0;d<o.length;d+=16){var m=i,_=u,v=p,x=f;i=h(i,u,p,f,o[d+0],7,-680876936),f=h(f,i,u,p,o[d+1],12,-389564586),p=h(p,f,i,u,o[d+2],17,606105819),u=h(u,p,f,i,o[d+3],22,-1044525330),i=h(i,u,p,f,o[d+4],7,-176418897),f=h(f,i,u,p,o[d+5],12,1200080426),p=h(p,f,i,u,o[d+6],17,-1473231341),u=h(u,p,f,i,o[d+7],22,-45705983),i=h(i,u,p,f,o[d+8],7,1770035416),f=h(f,i,u,p,o[d+9],12,-1958414417),p=h(p,f,i,u,o[d+10],17,-42063),u=h(u,p,f,i,o[d+11],22,-1990404162),i=h(i,u,p,f,o[d+12],7,1804603682),f=h(f,i,u,p,o[d+13],12,-40341101),p=h(p,f,i,u,o[d+14],17,-1502002290),i=b(i,u=h(u,p,f,i,o[d+15],22,1236535329),p,f,o[d+1],5,-165796510),f=b(f,i,u,p,o[d+6],9,-1069501632),p=b(p,f,i,u,o[d+11],14,643717713),u=b(u,p,f,i,o[d+0],20,-373897302),i=b(i,u,p,f,o[d+5],5,-701558691),f=b(f,i,u,p,o[d+10],9,38016083),p=b(p,f,i,u,o[d+15],14,-660478335),u=b(u,p,f,i,o[d+4],20,-405537848),i=b(i,u,p,f,o[d+9],5,568446438),f=b(f,i,u,p,o[d+14],9,-1019803690),p=b(p,f,i,u,o[d+3],14,-187363961),u=b(u,p,f,i,o[d+8],20,1163531501),i=b(i,u,p,f,o[d+13],5,-1444681467),f=b(f,i,u,p,o[d+2],9,-51403784),p=b(p,f,i,u,o[d+7],14,1735328473),i=y(i,u=b(u,p,f,i,o[d+12],20,-1926607734),p,f,o[d+5],4,-378558),f=y(f,i,u,p,o[d+8],11,-2022574463),p=y(p,f,i,u,o[d+11],16,1839030562),u=y(u,p,f,i,o[d+14],23,-35309556),i=y(i,u,p,f,o[d+1],4,-1530992060),f=y(f,i,u,p,o[d+4],11,1272893353),p=y(p,f,i,u,o[d+7],16,-155497632),u=y(u,p,f,i,o[d+10],23,-1094730640),i=y(i,u,p,f,o[d+13],4,681279174),f=y(f,i,u,p,o[d+0],11,-358537222),p=y(p,f,i,u,o[d+3],16,-722521979),u=y(u,p,f,i,o[d+6],23,76029189),i=y(i,u,p,f,o[d+9],4,-640364487),f=y(f,i,u,p,o[d+12],11,-421815835),p=y(p,f,i,u,o[d+15],16,530742520),i=g(i,u=y(u,p,f,i,o[d+2],23,-995338651),p,f,o[d+0],6,-198630844),f=g(f,i,u,p,o[d+7],10,1126891415),p=g(p,f,i,u,o[d+14],15,-1416354905),u=g(u,p,f,i,o[d+5],21,-57434055),i=g(i,u,p,f,o[d+12],6,1700485571),f=g(f,i,u,p,o[d+3],10,-1894986606),p=g(p,f,i,u,o[d+10],15,-1051523),u=g(u,p,f,i,o[d+1],21,-2054922799),i=g(i,u,p,f,o[d+8],6,1873313359),f=g(f,i,u,p,o[d+15],10,-30611744),p=g(p,f,i,u,o[d+6],15,-1560198380),u=g(u,p,f,i,o[d+13],21,1309151649),i=g(i,u,p,f,o[d+4],6,-145523070),f=g(f,i,u,p,o[d+11],10,-1120210379),p=g(p,f,i,u,o[d+2],15,718787259),u=g(u,p,f,i,o[d+9],21,-343485551),i=i+m>>>0,u=u+_>>>0,p=p+v>>>0,f=f+x>>>0}return r.endian([i,u,p,f])})._ff=function(e,t,o,r,n,a,c){var l=e+(t&o|~t&r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._gg=function(e,t,o,r,n,a,c){var l=e+(t&r|o&~r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._hh=function(e,t,o,r,n,a,c){var l=e+(t^o^r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._ii=function(e,t,o,r,n,a,c){var l=e+(o^(t|~r))+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._blocksize=16,l._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var o=r.wordsToBytes(l(e,t));return t&&t.asBytes?o:t&&t.asString?c.bytesToString(o):r.bytesToHex(o)}},function(e,t){e.exports=window.wp.blockEditor},function(e,t){e.exports=window.wp.compose},function(e,t){function o(t){return e.exports=o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o={utf8:{stringToBytes:function(e){return o.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(o.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],o=0;o<e.length;o++)t.push(255&e.charCodeAt(o));return t},bytesToString:function(e){for(var t=[],o=0;o<e.length;o++)t.push(String.fromCharCode(e[o]));return t.join("")}}};e.exports=o},function(e,t){e.exports=window.wp.blocks},function(e,t){e.exports=window.wp.url},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&o(e.prototype,t),r&&o(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(24);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(25).default,n=o(26);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?n(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){var o=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=o){var r,n,a=[],c=!0,l=!1;try{for(o=o.call(e);!(c=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);c=!0);}catch(e){l=!0,n=e}finally{try{c||null==o.return||o.return()}finally{if(l)throw n}}return a}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(20);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,r=new Array(t);o<t;o++)r[o]=e[o];return r},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o,r;o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&r.rotl(e,8)|4278255360&r.rotl(e,24);for(var t=0;t<e.length;t++)e[t]=r.endian(e[t]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],o=0,r=0;o<e.length;o++,r+=8)t[r>>>5]|=e[o]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],o=0;o<32*e.length;o+=8)t.push(e[o>>>5]>>>24-o%32&255);return t},bytesToHex:function(e){for(var t=[],o=0;o<e.length;o++)t.push((e[o]>>>4).toString(16)),t.push((15&e[o]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substr(o,2),16));return t},bytesToBase64:function(e){for(var t=[],r=0;r<e.length;r+=3)for(var n=e[r]<<16|e[r+1]<<8|e[r+2],a=0;a<4;a++)8*r+6*a<=8*e.length?t.push(o.charAt(n>>>6*(3-a)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,n=0;r<e.length;n=++r%4)0!=n&&t.push((o.indexOf(e.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|o.indexOf(e.charAt(r))>>>6-2*n);return t}},e.exports=r},function(e,t){function o(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(o(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&o(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t){function o(t,r){return e.exports=o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,o(t,r)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=o=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=o=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},,,function(e,t,o){"use strict";o.r(t);var r=o(3),n=o.n(r),a=o(0),c=o(2),l=o(6),s=o.n(l),i=o(11),u=o(12);function p(e){if(e.status>=200&&e.status<300)return e;throw e}function f(e){return e.json?e.json():e.text()}var d=Object(a.createElement)("svg",{viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",width:"22",height:"22",role:"img","aria-hidden":"true",focusable:"false"},Object(a.createElement)("path",{width:"22",height:"22",d:"M 18.24 7.628 C 17.291 8.284 16.076 8.971 14.587 9.688 C 15.344 7.186 15.765 4.851 15.849 2.684 C 15.912 0.939 15.133 0.045 13.514 0.003 C 11.558 -0.06 10.275 1.033 9.665 3.284 C 10.007 3.137 10.359 3.063 10.723 3.063 C 11.021 3.063 11.267 3.184 11.459 3.426 C 11.651 3.668 11.736 3.947 11.715 4.262 C 11.695 5.082 11.276 5.961 10.46 6.896 C 9.644 7.833 8.918 8.3 8.282 8.3 C 7.837 8.3 7.625 7.922 7.646 7.165 C 7.667 6.765 7.804 5.955 8.056 4.735 C 8.287 3.579 8.403 2.801 8.403 2.401 C 8.403 1.707 8.224 1.144 7.867 0.713 C 7.509 0.282 6.994 0.098 6.321 0.161 C 5.858 0.203 5.175 0.624 4.27 1.422 C 3.596 2.035 2.923 2.644 2.25 3.254 L 2.976 4.106 C 3.564 3.664 3.922 3.443 4.048 3.443 C 4.448 3.443 4.637 3.717 4.617 4.263 C 4.617 4.306 4.427 4.968 4.049 6.251 C 3.671 7.534 3.471 8.491 3.449 9.122 C 3.407 9.985 3.565 10.647 3.924 11.109 C 4.367 11.677 5.106 11.919 6.142 11.835 C 7.366 11.751 8.591 11.298 9.816 10.479 C 10.323 10.142 10.808 9.753 11.273 9.311 C 11.105 10.153 10.905 10.868 10.673 11.457 C 8.402 12.487 6.762 13.37 5.752 14.107 C 4.321 15.137 3.554 16.241 3.449 17.419 C 3.259 19.459 4.29 20.479 6.541 20.479 C 8.055 20.479 9.517 19.554 10.926 17.703 C 12.125 16.126 13.166 14.022 14.049 11.394 C 15.578 10.635 16.87 9.892 17.928 9.164 C 17.894 9.409 18.319 7.308 18.24 7.628 Z M 7.393 16.095 C 7.056 16.095 6.898 15.947 6.919 15.653 C 6.961 15.106 7.908 14.38 9.759 13.476 C 8.791 15.221 8.002 16.095 7.393 16.095 Z"})),h=o(5),b=o.n(h),y=function(e,t,o){var r=!0;if(t&&t.id&&"value"in t){var n=t.value;["toggle","checkbox"].includes(o)&&(n=!0===n||"yes"===n||1===n),n=b.a.isArray(n)?n:[n],r=void 0!==e[t.id]&&n.includes(e[t.id])}return r},g=function(e,t){var o=e.controlType,r=!0;if(e.deps)if(b.a.isArray(e.deps))for(var n in e.deps){var a=e.deps[n];if(!(r=y(t,a,o)))break}else r=y(t,e.deps,o);return r},m=function(e,t){var o="",r=!1;if(void 0!==e.callback&&(jQuery&&e.callback in jQuery.fn?r=jQuery.fn[e.callback]:e.callback in window&&(r=window[e.callback])),"function"==typeof r)o=r(t,e);else{var a=e.attributes?Object.entries(e.attributes).map((function(e){var o=n()(e,2),r=o[0],a=o[1],c=g(a,t),l=t[r];if(c&&void 0!==l)return r+"="+(a.remove_quotes?l:'"'.concat(l,'"'))})):[],c=a.length?" "+a.join(" "):"";o="[".concat(e.shortcode_name).concat(c,"]")}return o},_=o(1),v=o(7),x=o(13),j=o.n(x),w=o(14),k=o.n(w),O=o(15),C=o.n(O),E=o(16),S=o.n(E),T=o(9),A=o.n(T),M=o(4);o(27);var B=function(e){C()(n,e);var t,o,r=(t=n,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=A()(t);if(o){var n=A()(this).constructor;e=Reflect.construct(r,arguments,n)}else e=r.apply(this,arguments);return S()(this,e)});function n(){var e;return j()(this,n),(e=r.apply(this,arguments)).state={html:"",shortcode:"",shortcodeHash:"",ajaxUpdated:!1,ajaxSuccess:!1,ajaxResponse:!1,loading:!1,firstLoading:!0},e.ajaxTimeout=!1,e}return k()(n,[{key:"componentDidMount",value:function(){this.updateShortcode()}},{key:"componentDidUpdate",value:function(e,t,o){var r=this.state,n=r.shortcode,a=r.shortcodeHash,c=r.ajaxSuccess,l=r.ajaxResponse,s=r.ajaxUpdated;Object(h.isEqual)(e,this.props)||this.updateShortcode(),this.props.blockArgs.do_shortcode&&s&&(c&&Object(M.doAction)("yith_plugin_fw_gutenberg_success_do_shortcode",n,a,l),Object(M.doAction)("yith_plugin_fw_gutenberg_after_do_shortcode",n,a,l),this.setState({ajaxUpdated:!1}))}},{key:"updateShortcode",value:function(){var e=this,t=this.props,o=t.attributes,r=t.blockArgs;this.setState({loading:!0,ajaxSuccess:!1,ajaxResponse:!1});var n=m(r,o),a=s()(n);r.do_shortcode?(this.ajaxTimeout&&clearTimeout(this.ajaxTimeout),Object(M.doAction)("yith_plugin_fw_gutenberg_before_do_shortcode",n,a),this.ajaxTimeout=setTimeout((function(){(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:yithGutenberg.ajaxurl;return t=Object(u.addQueryArgs)(t,e),fetch(t).then(p).then(f)})({action:"yith_plugin_fw_gutenberg_do_shortcode",shortcode:n}).then((function(t){e.setState({loading:!1,firstLoading:!1,html:t.html,shortcode:n,shortcodeHash:a,ajaxSuccess:!0,ajaxUpdated:!0,ajaxResponse:t})})).catch((function(e){console.log({error:e})}))}),300)):this.setState({loading:!1,firstLoading:!1,html:n,shortcode:n,shortcodeHash:a})}},{key:"render",value:function(){var e=this.state,t=e.html,o=e.loading,r=e.firstLoading,n=e.shortcode,c=e.shortcodeHash,l=this.props.blockArgs,s=l.do_shortcode,i=l.title,u=l.empty_message,p="block-editor-yith-plugin-fw-shortcode-block",f=[p],h=s?"html":"shortcode",b=t,y="";r&&o?h="first-loading":s&&!t&&(h="empty-html",b=n,!o&&u&&(y=u));var g=["first-loading","empty-html","shortcode"].includes(h),m=!["first-loading","empty-html"].includes(h),v=!!y;return f.push("".concat(p,"--").concat(h)),f.push("".concat(p,v?"--has-message":"--no-message")),f.push("yith_block_".concat(c)),Object(a.createElement)(a.Fragment,null,Object(a.createElement)("div",{className:f.join(" ")},o?Object(a.createElement)("div",{className:"".concat(p,"__spinner-wrap")},Object(a.createElement)(_.Spinner,null)):"",g&&Object(a.createElement)("div",{className:"".concat(p,"__title components-placeholder__label")},d,i),v&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__message")},y),m&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__content")},b)))}}]),n}(c.Component),N=o(8);function R(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.disableAlpha,s=Object(N.useInstanceId)(R),i="inspector-yith-color-picker-control-".concat(s);return Object(a.createElement)(_.BaseControl,{id:i,label:o,className:"block-editor-yith-color-control ".concat(t),help:c},Object(a.createElement)(_.ColorPicker,{color:n,disableAlpha:l,onChangeComplete:r}))}function P(e){var t=e.label,o=e.colorValue;return Object(a.createElement)(a.Fragment,null,t,!!o&&Object(a.createElement)(_.ColorIndicator,{colorValue:o}))}function I(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.palette,s=e.clearable;l=l||Object(v.__experimentalUseEditorFeature)("color.palette");var i=Object(N.useInstanceId)(I),u="inspector-yith-color-palette-control-".concat(i);return Object(a.createElement)(_.BaseControl,{id:u,className:"block-editor-yith-color-palette-control ".concat(t),help:c},Object(a.createElement)("fieldset",null,Object(a.createElement)("legend",null,Object(a.createElement)("div",{className:"block-editor-yith-color-palette-control__color-indicator"},Object(a.createElement)(_.BaseControl.VisualLabel,null,Object(a.createElement)(P,{colorValue:n,label:o})))),Object(a.createElement)(_.ColorPalette,{value:n,onChange:r,colors:l,clearable:s})))}o(28);for(var H=function(e,t){return function(o){var r=o.attributes,c=(o.className,o.setAttributes),l=function(e,t,o){["colorpicker","color"].includes(o)&&(e=e.color.getAlpha()<1?e.color.toRgbString():e.color.toHexString());var r={};r[t]=e,c(r)};return Object(a.createElement)(a.Fragment,null,!!t.attributes&&Object(a.createElement)(v.InspectorControls,null,Object(a.createElement)(_.PanelBody,null,Object.entries(t.attributes).map((function(t){var o=n()(t,2),c=function(t,o){var n=o.controlType,c=r[t],s=function(e,t){var o="";return e.helps&&e.helps.checked&&e.helps.unchecked?o=t?e.helps.checked:e.helps.unchecked:e.help&&(o=e.help),o}(o,c),i="".concat(e,"__").concat(t,"-field-wrapper"),u=g(o,r);o.wrapper_class&&(i+=" "+o.wrapper_class);var p=!1;if(u)switch(n){case"select":p=Object(a.createElement)(_.SelectControl,{className:i,key:t,value:c,label:o.label,options:o.options,selected:c,help:s,multiple:!!o.multiple,onChange:function(e){l(e,t,n)}});break;case"text":p=Object(a.createElement)(_.TextControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"textarea":p=Object(a.createElement)(_.TextareaControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"toggle":p=Object(a.createElement)(_.ToggleControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"checkbox":p=Object(a.createElement)(_.CheckboxControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"number":case"range":p=Object(a.createElement)(_.RangeControl,{className:i,key:t,value:c,label:o.label,help:s,min:o.min,max:o.max,onChange:function(e){l(e,t,n)}});break;case"color":case"colorpicker":p=Object(a.createElement)(R,{className:i,key:t,label:o.label,help:s,value:c,disableAlpha:o.disableAlpha,onChange:function(e){l(e,t,n)}});break;case"color-palette":p=Object(a.createElement)(I,{className:i,key:t,label:o.label,help:s,value:c,clearable:o.clearable||!1,onChange:function(e){l(e,t,n)}});break;case"radio":p=Object(a.createElement)(_.RadioControl,{key:t,value:c,label:o.label,options:o.options,selected:c,checked:c,help:s,onChange:function(e){l(e,t,n)}});break;default:p=!1}return p}(o[0],o[1]);if(c)return c})))),Object(a.createElement)(B,{attributes:r,blockArgs:t}))}},L=function(){var e=Q[U];Object(M.addAction)(e.key,"yith-plugin-fw/jquery-events",(function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];"jQuery"in window&&(e.delay?setTimeout((function(){jQuery(document).trigger(e.key,Object.values(o))}),e.delay):jQuery(document).trigger(e.key,Object.values(o)))}))},U=0,Q=[{key:"yith_plugin_fw_gutenberg_before_do_shortcode",delay:0},{key:"yith_plugin_fw_gutenberg_success_do_shortcode",delay:200},{key:"yith_plugin_fw_gutenberg_after_do_shortcode",delay:200}];U<Q.length;U++)L();for(var F=function(){var e=n()(V[J],2),t=e[0],o=e[1];Object(i.registerBlockType)("yith/"+t,{title:o.title,description:o.description,category:o.category,attributes:o.attributes,icon:void 0!==o.icon?o.icon:d,keywords:o.keywords,edit:H(t,o),save:function(e){var t=e.attributes;return m(o,t)},deprecated:[{attributes:o.attributes,save:function(e){var t=e.attributes,r=m(o,t),n='<span class="yith_block_'+s()(r)+'">'+r+"</span>";return Object(a.createElement)(a.RawHTML,null,n)}}]})},J=0,V=Object.entries(yithGutenbergBlocks);J<V.length;J++)F()}]);
1
+ (window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[]).push([[1],{27:function(e,t,o){},28:function(e,t,o){}}]),function(e){function t(t){for(var r,c,l=t[0],s=t[1],i=t[2],p=0,f=[];p<l.length;p++)c=l[p],Object.prototype.hasOwnProperty.call(n,c)&&n[c]&&f.push(n[c][0]),n[c]=0;for(r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r]);for(u&&u(t);f.length;)f.shift()();return a.push.apply(a,i||[]),o()}function o(){for(var e,t=0;t<a.length;t++){for(var o=a[t],r=!0,l=1;l<o.length;l++){var s=o[l];0!==n[s]&&(r=!1)}r&&(a.splice(t--,1),e=c(c.s=o[0]))}return e}var r={},n={0:0},a=[];function c(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,c),o.l=!0,o.exports}c.m=e,c.c=r,c.d=function(e,t,o){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(c.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)c.d(o,r,function(t){return e[t]}.bind(null,r));return o},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="";var l=window.webpackJsonp_yith_plugin_framewowrk=window.webpackJsonp_yith_plugin_framewowrk||[],s=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var u=s;a.push([29,1]),o()}([function(e,t){e.exports=window.wp.element},function(e,t){e.exports=window.wp.components},function(e,t){e.exports=window.React},function(e,t,o){var r=o(17),n=o(18),a=o(19),c=o(21);e.exports=function(e,t){return r(e)||n(e,t)||a(e,t)||c()},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=window.wp.hooks},function(e,t){e.exports=window.lodash},function(e,t,o){var r,n,a,c,l;r=o(22),n=o(10).utf8,a=o(23),c=o(10).bin,(l=function(e,t){e.constructor==String?e=t&&"binary"===t.encoding?c.stringToBytes(e):n.stringToBytes(e):a(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var o=r.bytesToWords(e),s=8*e.length,i=1732584193,u=-271733879,p=-1732584194,f=271733878,d=0;d<o.length;d++)o[d]=16711935&(o[d]<<8|o[d]>>>24)|4278255360&(o[d]<<24|o[d]>>>8);o[s>>>5]|=128<<s%32,o[14+(s+64>>>9<<4)]=s;var h=l._ff,b=l._gg,y=l._hh,g=l._ii;for(d=0;d<o.length;d+=16){var m=i,_=u,v=p,x=f;i=h(i,u,p,f,o[d+0],7,-680876936),f=h(f,i,u,p,o[d+1],12,-389564586),p=h(p,f,i,u,o[d+2],17,606105819),u=h(u,p,f,i,o[d+3],22,-1044525330),i=h(i,u,p,f,o[d+4],7,-176418897),f=h(f,i,u,p,o[d+5],12,1200080426),p=h(p,f,i,u,o[d+6],17,-1473231341),u=h(u,p,f,i,o[d+7],22,-45705983),i=h(i,u,p,f,o[d+8],7,1770035416),f=h(f,i,u,p,o[d+9],12,-1958414417),p=h(p,f,i,u,o[d+10],17,-42063),u=h(u,p,f,i,o[d+11],22,-1990404162),i=h(i,u,p,f,o[d+12],7,1804603682),f=h(f,i,u,p,o[d+13],12,-40341101),p=h(p,f,i,u,o[d+14],17,-1502002290),i=b(i,u=h(u,p,f,i,o[d+15],22,1236535329),p,f,o[d+1],5,-165796510),f=b(f,i,u,p,o[d+6],9,-1069501632),p=b(p,f,i,u,o[d+11],14,643717713),u=b(u,p,f,i,o[d+0],20,-373897302),i=b(i,u,p,f,o[d+5],5,-701558691),f=b(f,i,u,p,o[d+10],9,38016083),p=b(p,f,i,u,o[d+15],14,-660478335),u=b(u,p,f,i,o[d+4],20,-405537848),i=b(i,u,p,f,o[d+9],5,568446438),f=b(f,i,u,p,o[d+14],9,-1019803690),p=b(p,f,i,u,o[d+3],14,-187363961),u=b(u,p,f,i,o[d+8],20,1163531501),i=b(i,u,p,f,o[d+13],5,-1444681467),f=b(f,i,u,p,o[d+2],9,-51403784),p=b(p,f,i,u,o[d+7],14,1735328473),i=y(i,u=b(u,p,f,i,o[d+12],20,-1926607734),p,f,o[d+5],4,-378558),f=y(f,i,u,p,o[d+8],11,-2022574463),p=y(p,f,i,u,o[d+11],16,1839030562),u=y(u,p,f,i,o[d+14],23,-35309556),i=y(i,u,p,f,o[d+1],4,-1530992060),f=y(f,i,u,p,o[d+4],11,1272893353),p=y(p,f,i,u,o[d+7],16,-155497632),u=y(u,p,f,i,o[d+10],23,-1094730640),i=y(i,u,p,f,o[d+13],4,681279174),f=y(f,i,u,p,o[d+0],11,-358537222),p=y(p,f,i,u,o[d+3],16,-722521979),u=y(u,p,f,i,o[d+6],23,76029189),i=y(i,u,p,f,o[d+9],4,-640364487),f=y(f,i,u,p,o[d+12],11,-421815835),p=y(p,f,i,u,o[d+15],16,530742520),i=g(i,u=y(u,p,f,i,o[d+2],23,-995338651),p,f,o[d+0],6,-198630844),f=g(f,i,u,p,o[d+7],10,1126891415),p=g(p,f,i,u,o[d+14],15,-1416354905),u=g(u,p,f,i,o[d+5],21,-57434055),i=g(i,u,p,f,o[d+12],6,1700485571),f=g(f,i,u,p,o[d+3],10,-1894986606),p=g(p,f,i,u,o[d+10],15,-1051523),u=g(u,p,f,i,o[d+1],21,-2054922799),i=g(i,u,p,f,o[d+8],6,1873313359),f=g(f,i,u,p,o[d+15],10,-30611744),p=g(p,f,i,u,o[d+6],15,-1560198380),u=g(u,p,f,i,o[d+13],21,1309151649),i=g(i,u,p,f,o[d+4],6,-145523070),f=g(f,i,u,p,o[d+11],10,-1120210379),p=g(p,f,i,u,o[d+2],15,718787259),u=g(u,p,f,i,o[d+9],21,-343485551),i=i+m>>>0,u=u+_>>>0,p=p+v>>>0,f=f+x>>>0}return r.endian([i,u,p,f])})._ff=function(e,t,o,r,n,a,c){var l=e+(t&o|~t&r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._gg=function(e,t,o,r,n,a,c){var l=e+(t&r|o&~r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._hh=function(e,t,o,r,n,a,c){var l=e+(t^o^r)+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._ii=function(e,t,o,r,n,a,c){var l=e+(o^(t|~r))+(n>>>0)+c;return(l<<a|l>>>32-a)+t},l._blocksize=16,l._digestsize=16,e.exports=function(e,t){if(null==e)throw new Error("Illegal argument "+e);var o=r.wordsToBytes(l(e,t));return t&&t.asBytes?o:t&&t.asString?c.bytesToString(o):r.bytesToHex(o)}},function(e,t){e.exports=window.wp.blockEditor},function(e,t){e.exports=window.wp.compose},function(e,t){function o(t){return e.exports=o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o={utf8:{stringToBytes:function(e){return o.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(o.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],o=0;o<e.length;o++)t.push(255&e.charCodeAt(o));return t},bytesToString:function(e){for(var t=[],o=0;o<e.length;o++)t.push(String.fromCharCode(e[o]));return t.join("")}}};e.exports=o},function(e,t){e.exports=window.wp.blocks},function(e,t){e.exports=window.wp.url},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}e.exports=function(e,t,r){return t&&o(e.prototype,t),r&&o(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(24);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(25).default,n=o(26);e.exports=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?n(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var r,n,a=[],c=!0,l=!1;try{for(o=o.call(e);!(c=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);c=!0);}catch(e){l=!0,n=e}finally{try{c||null==o.return||o.return()}finally{if(l)throw n}}return a}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,o){var r=o(20);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,r=new Array(t);o<t;o++)r[o]=e[o];return r},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var o,r;o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&r.rotl(e,8)|4278255360&r.rotl(e,24);for(var t=0;t<e.length;t++)e[t]=r.endian(e[t]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],o=0,r=0;o<e.length;o++,r+=8)t[r>>>5]|=e[o]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],o=0;o<32*e.length;o+=8)t.push(e[o>>>5]>>>24-o%32&255);return t},bytesToHex:function(e){for(var t=[],o=0;o<e.length;o++)t.push((e[o]>>>4).toString(16)),t.push((15&e[o]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substr(o,2),16));return t},bytesToBase64:function(e){for(var t=[],r=0;r<e.length;r+=3)for(var n=e[r]<<16|e[r+1]<<8|e[r+2],a=0;a<4;a++)8*r+6*a<=8*e.length?t.push(o.charAt(n>>>6*(3-a)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,n=0;r<e.length;n=++r%4)0!=n&&t.push((o.indexOf(e.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|o.indexOf(e.charAt(r))>>>6-2*n);return t}},e.exports=r},function(e,t){function o(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(o(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&o(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t){function o(t,r){return e.exports=o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,o(t,r)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function o(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=o=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=o=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),o(t)}e.exports=o,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},,,function(e,t,o){"use strict";o.r(t);var r=o(3),n=o.n(r),a=o(0),c=o(2),l=o(6),s=o.n(l),i=o(11),u=o(12);function p(e){if(e.status>=200&&e.status<300)return e;throw e}function f(e){return e.json?e.json():e.text()}var d=Object(a.createElement)("svg",{viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",width:"22",height:"22",role:"img","aria-hidden":"true",focusable:"false"},Object(a.createElement)("path",{width:"22",height:"22",d:"M 18.24 7.628 C 17.291 8.284 16.076 8.971 14.587 9.688 C 15.344 7.186 15.765 4.851 15.849 2.684 C 15.912 0.939 15.133 0.045 13.514 0.003 C 11.558 -0.06 10.275 1.033 9.665 3.284 C 10.007 3.137 10.359 3.063 10.723 3.063 C 11.021 3.063 11.267 3.184 11.459 3.426 C 11.651 3.668 11.736 3.947 11.715 4.262 C 11.695 5.082 11.276 5.961 10.46 6.896 C 9.644 7.833 8.918 8.3 8.282 8.3 C 7.837 8.3 7.625 7.922 7.646 7.165 C 7.667 6.765 7.804 5.955 8.056 4.735 C 8.287 3.579 8.403 2.801 8.403 2.401 C 8.403 1.707 8.224 1.144 7.867 0.713 C 7.509 0.282 6.994 0.098 6.321 0.161 C 5.858 0.203 5.175 0.624 4.27 1.422 C 3.596 2.035 2.923 2.644 2.25 3.254 L 2.976 4.106 C 3.564 3.664 3.922 3.443 4.048 3.443 C 4.448 3.443 4.637 3.717 4.617 4.263 C 4.617 4.306 4.427 4.968 4.049 6.251 C 3.671 7.534 3.471 8.491 3.449 9.122 C 3.407 9.985 3.565 10.647 3.924 11.109 C 4.367 11.677 5.106 11.919 6.142 11.835 C 7.366 11.751 8.591 11.298 9.816 10.479 C 10.323 10.142 10.808 9.753 11.273 9.311 C 11.105 10.153 10.905 10.868 10.673 11.457 C 8.402 12.487 6.762 13.37 5.752 14.107 C 4.321 15.137 3.554 16.241 3.449 17.419 C 3.259 19.459 4.29 20.479 6.541 20.479 C 8.055 20.479 9.517 19.554 10.926 17.703 C 12.125 16.126 13.166 14.022 14.049 11.394 C 15.578 10.635 16.87 9.892 17.928 9.164 C 17.894 9.409 18.319 7.308 18.24 7.628 Z M 7.393 16.095 C 7.056 16.095 6.898 15.947 6.919 15.653 C 6.961 15.106 7.908 14.38 9.759 13.476 C 8.791 15.221 8.002 16.095 7.393 16.095 Z"})),h=o(5),b=o.n(h),y=function(e,t,o){var r=!0;if(t&&t.id&&"value"in t){var n=t.value;["toggle","checkbox"].includes(o)&&(n=!0===n||"yes"===n||1===n),n=b.a.isArray(n)?n:[n],r=void 0!==e[t.id]&&n.includes(e[t.id])}return r},g=function(e,t){var o=e.controlType,r=!0;if(e.deps)if(b.a.isArray(e.deps))for(var n in e.deps){var a=e.deps[n];if(!(r=y(t,a,o)))break}else r=y(t,e.deps,o);return r},m=function(e,t){var o="",r=!1;if(void 0!==e.callback&&(jQuery&&e.callback in jQuery.fn?r=jQuery.fn[e.callback]:e.callback in window&&(r=window[e.callback])),"function"==typeof r)o=r(t,e);else{var a=e.attributes?Object.entries(e.attributes).map((function(e){var o=n()(e,2),r=o[0],a=o[1],c=g(a,t),l=t[r];if(c&&void 0!==l)return r+"="+(a.remove_quotes?l:'"'.concat(l,'"'))})):[],c=a.length?" "+a.join(" "):"";o="[".concat(e.shortcode_name).concat(c,"]")}return o},_=o(1),v=o(7),x=o(13),j=o.n(x),w=o(14),k=o.n(w),O=o(15),C=o.n(O),E=o(16),S=o.n(E),T=o(9),A=o.n(T),M=o(4);o(27);var B=function(e){C()(n,e);var t,o,r=(t=n,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=A()(t);if(o){var n=A()(this).constructor;e=Reflect.construct(r,arguments,n)}else e=r.apply(this,arguments);return S()(this,e)});function n(){var e;return j()(this,n),(e=r.apply(this,arguments)).state={html:"",shortcode:"",shortcodeHash:"",ajaxUpdated:!1,ajaxSuccess:!1,ajaxResponse:!1,loading:!1,firstLoading:!0},e.ajaxTimeout=!1,e}return k()(n,[{key:"componentDidMount",value:function(){this.updateShortcode()}},{key:"componentDidUpdate",value:function(e,t,o){var r=this.state,n=r.shortcode,a=r.shortcodeHash,c=r.ajaxSuccess,l=r.ajaxResponse,s=r.ajaxUpdated;Object(h.isEqual)(e,this.props)||this.updateShortcode(),this.props.blockArgs.do_shortcode&&s&&(c&&Object(M.doAction)("yith_plugin_fw_gutenberg_success_do_shortcode",n,a,l),Object(M.doAction)("yith_plugin_fw_gutenberg_after_do_shortcode",n,a,l),this.setState({ajaxUpdated:!1}))}},{key:"updateShortcode",value:function(){var e=this,t=this.props,o=t.attributes,r=t.blockArgs;this.setState({loading:!0,ajaxSuccess:!1,ajaxResponse:!1});var n=m(r,o),a=s()(n);r.do_shortcode?(this.ajaxTimeout&&clearTimeout(this.ajaxTimeout),Object(M.doAction)("yith_plugin_fw_gutenberg_before_do_shortcode",n,a),this.ajaxTimeout=setTimeout((function(){(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:yithGutenberg.ajaxurl;return t=Object(u.addQueryArgs)(t,e),fetch(t).then(p).then(f)})({action:"yith_plugin_fw_gutenberg_do_shortcode",shortcode:n}).then((function(t){e.setState({loading:!1,firstLoading:!1,html:t.html,shortcode:n,shortcodeHash:a,ajaxSuccess:!0,ajaxUpdated:!0,ajaxResponse:t})})).catch((function(e){console.log({error:e})}))}),300)):this.setState({loading:!1,firstLoading:!1,html:n,shortcode:n,shortcodeHash:a})}},{key:"render",value:function(){var e=this.state,t=e.html,o=e.loading,r=e.firstLoading,n=e.shortcode,c=e.shortcodeHash,l=this.props.blockArgs,s=l.do_shortcode,i=l.title,u=l.empty_message,p="block-editor-yith-plugin-fw-shortcode-block",f=[p],h=s?"html":"shortcode",b=t,y="";r&&o?h="first-loading":s&&!t&&(h="empty-html",b=n,!o&&u&&(y=u));var g=["first-loading","empty-html","shortcode"].includes(h),m=!["first-loading","empty-html"].includes(h),v=!!y;return f.push("".concat(p,"--").concat(h)),f.push("".concat(p,v?"--has-message":"--no-message")),f.push("yith_block_".concat(c)),Object(a.createElement)(a.Fragment,null,Object(a.createElement)("div",{className:f.join(" ")},o?Object(a.createElement)("div",{className:"".concat(p,"__spinner-wrap")},Object(a.createElement)(_.Spinner,null)):"",g&&Object(a.createElement)("div",{className:"".concat(p,"__title components-placeholder__label")},d,i),v&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__message")},y),m&&Object(a.createElement)(a.RawHTML,{className:"".concat(p,"__content")},b)))}}]),n}(c.Component),N=o(8);function R(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.disableAlpha,s=Object(N.useInstanceId)(R),i="inspector-yith-color-picker-control-".concat(s);return Object(a.createElement)(_.BaseControl,{id:i,label:o,className:"block-editor-yith-color-control ".concat(t),help:c},Object(a.createElement)(_.ColorPicker,{color:n,disableAlpha:l,onChangeComplete:r}))}function P(e){var t=e.label,o=e.colorValue;return Object(a.createElement)(a.Fragment,null,t,!!o&&Object(a.createElement)(_.ColorIndicator,{colorValue:o}))}function I(e){var t=e.className,o=e.label,r=e.onChange,n=e.value,c=e.help,l=e.palette,s=e.clearable;l=l||Object(v.__experimentalUseEditorFeature)("color.palette");var i=Object(N.useInstanceId)(I),u="inspector-yith-color-palette-control-".concat(i);return Object(a.createElement)(_.BaseControl,{id:u,className:"block-editor-yith-color-palette-control ".concat(t),help:c},Object(a.createElement)("fieldset",null,Object(a.createElement)("legend",null,Object(a.createElement)("div",{className:"block-editor-yith-color-palette-control__color-indicator"},Object(a.createElement)(_.BaseControl.VisualLabel,null,Object(a.createElement)(P,{colorValue:n,label:o})))),Object(a.createElement)(_.ColorPalette,{value:n,onChange:r,colors:l,clearable:s})))}o(28);for(var H=function(e,t){return function(o){var r=o.attributes,c=(o.className,o.setAttributes),l=function(e,t,o){["colorpicker","color"].includes(o)&&(e=e.color.getAlpha()<1?e.color.toRgbString():e.color.toHexString());var r={};r[t]=e,c(r)};return Object(a.createElement)(a.Fragment,null,!!t.attributes&&Object(a.createElement)(v.InspectorControls,null,Object(a.createElement)(_.PanelBody,null,Object.entries(t.attributes).map((function(t){var o=n()(t,2),c=function(t,o){var n=o.controlType,c=r[t],s=function(e,t){var o="";return e.helps&&e.helps.checked&&e.helps.unchecked?o=t?e.helps.checked:e.helps.unchecked:e.help&&(o=e.help),o}(o,c),i="".concat(e,"__").concat(t,"-field-wrapper"),u=g(o,r);o.wrapper_class&&(i+=" "+o.wrapper_class);var p=!1;if(u)switch(n){case"select":p=Object(a.createElement)(_.SelectControl,{className:i,key:t,value:c,label:o.label,options:o.options,selected:c,help:s,multiple:!!o.multiple,onChange:function(e){l(e,t,n)}});break;case"text":p=Object(a.createElement)(_.TextControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"textarea":p=Object(a.createElement)(_.TextareaControl,{className:i,key:t,value:c,label:o.label,help:s,onChange:function(e){l(e,t,n)}});break;case"toggle":p=Object(a.createElement)(_.ToggleControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"checkbox":p=Object(a.createElement)(_.CheckboxControl,{className:i,key:t,value:c,label:o.label,help:s,checked:c,onChange:function(e){l(e,t,n)}});break;case"number":case"range":p=Object(a.createElement)(_.RangeControl,{className:i,key:t,value:c,label:o.label,help:s,min:o.min,max:o.max,onChange:function(e){l(e,t,n)}});break;case"color":case"colorpicker":p=Object(a.createElement)(R,{className:i,key:t,label:o.label,help:s,value:c,disableAlpha:o.disableAlpha,onChange:function(e){l(e,t,n)}});break;case"color-palette":p=Object(a.createElement)(I,{className:i,key:t,label:o.label,help:s,value:c,clearable:o.clearable||!1,onChange:function(e){l(e,t,n)}});break;case"radio":p=Object(a.createElement)(_.RadioControl,{key:t,value:c,label:o.label,options:o.options,selected:c,checked:c,help:s,onChange:function(e){l(e,t,n)}});break;default:p=!1}return p}(o[0],o[1]);if(c)return c})))),Object(a.createElement)(B,{attributes:r,blockArgs:t}))}},L=function(){var e=Q[U];Object(M.addAction)(e.key,"yith-plugin-fw/jquery-events",(function(){for(var t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];"jQuery"in window&&(e.delay?setTimeout((function(){jQuery(document).trigger(e.key,Object.values(o))}),e.delay):jQuery(document).trigger(e.key,Object.values(o)))}))},U=0,Q=[{key:"yith_plugin_fw_gutenberg_before_do_shortcode",delay:0},{key:"yith_plugin_fw_gutenberg_success_do_shortcode",delay:200},{key:"yith_plugin_fw_gutenberg_after_do_shortcode",delay:200}];U<Q.length;U++)L();for(var F=function(){var e=n()(V[J],2),t=e[0],o=e[1];Object(i.registerBlockType)("yith/"+t,{title:o.title,description:o.description,category:o.category,attributes:o.attributes,icon:void 0!==o.icon?o.icon:d,keywords:o.keywords,edit:H(t,o),save:function(e){var t=e.attributes;return m(o,t)},deprecated:[{attributes:o.attributes,save:function(e){var t=e.attributes,r=m(o,t),n='<span class="yith_block_'+s()(r)+'">'+r+"</span>";return Object(a.createElement)(a.RawHTML,null,n)}}]})},J=0,V=Object.entries(yithGutenbergBlocks);J<V.length;J++)F()}]);
plugin-fw/docker-compose.yml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.7'
2
+
3
+ services:
4
+
5
+ mysql:
6
+ image: "mariadb:latest"
7
+ environment:
8
+ MYSQL_DATABASE: "yith_plugin_fw_tests"
9
+ MYSQL_ROOT_PASSWORD: "password"
10
+ ports:
11
+ - "3306"
12
+ networks:
13
+ - yithdevnet
14
+ volumes:
15
+ - ./tools/local-env/mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql
16
+ - mysql:/var/lib/mysql
17
+
18
+ ##
19
+ # The WP CLI container.
20
+ ##
21
+ cli:
22
+ image: wordpress:cli-php7.4
23
+ environment:
24
+ APACHE_RUN_USER: "www-data"
25
+ APACHE_RUN_GROUP: "www-data"
26
+ depends_on:
27
+ - mysql
28
+
29
+ networks:
30
+ - yithdevnet
31
+
32
+ volumes:
33
+ - html:/var/www/html
34
+ - ./tools/local-env/install-wp-tests.sh:/var/www/html/install-wp-tests.sh
35
+
36
+ # The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
37
+ init: true
38
+
39
+ ##
40
+ # The PHPUnit container.
41
+ ##
42
+ phpunit:
43
+ build:
44
+ context: ./tools/local-env/docker/phpunit
45
+
46
+ networks:
47
+ - yithdevnet
48
+
49
+ volumes:
50
+ - ./tools/local-env/phpunit-config.ini:/usr/local/etc/php/conf.d/phpunit-config.ini
51
+ - ./tools/local-env/install-wp-tests.sh:/var/www/html/install-wp-tests.sh
52
+ - ./tools/local-env/yith-plugin-fw-loader.php:/var/www/html/wp-content/plugins/yith-plugin-fw-loader/yith-plugin-fw-loader.php
53
+ - .:/var/www/html/wp-content/plugins/yith-plugin-fw-loader/plugin-fw
54
+ - ../../woocommerce:/var/www/html/wp-content/plugins/woocommerce
55
+ - html:/var/www/html
56
+ - phpunit-uploads:/var/www/html/wp-content/uploads
57
+ - testsuite:/tmp
58
+
59
+ # The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
60
+ init: true
61
+
62
+ depends_on:
63
+ - mysql
64
+
65
+ volumes:
66
+ # So that sites aren't wiped every time containers are restarted, MySQL uses a persistent volume.
67
+ mysql: {}
68
+ # Using a volume for the uploads directory improves PHPUnit performance.
69
+ phpunit-uploads: {}
70
+ html: {}
71
+ testsuite: {}
72
+
73
+ networks:
74
+ # Creating our own network allows us to connect between containers using their service name.
75
+ yithdevnet:
76
+ driver: bridge
plugin-fw/includes/builders/elementor/class-yith-elementor.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @class YITH_Elementor
6
  * @package YITH\PluginFramework\Classes
7
- * @since 3.6.0
8
  */
9
 
10
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
@@ -29,7 +29,7 @@ if ( ! class_exists( 'YITH_Elementor' ) ) {
29
  *
30
  * @var array
31
  */
32
- private $widgets;
33
 
34
  /**
35
  * Singleton implementation.
@@ -45,7 +45,11 @@ if ( ! class_exists( 'YITH_Elementor' ) ) {
45
  */
46
  private function __construct() {
47
  if ( defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, '3.0.0', '>=' ) ) {
48
- add_action( 'init', array( $this, 'init' ), 20 );
 
 
 
 
49
  }
50
  }
51
 
@@ -64,16 +68,10 @@ if ( ! class_exists( 'YITH_Elementor' ) ) {
64
 
65
  /**
66
  * Let's start with Elementor
 
 
67
  */
68
  public function init() {
69
- if ( $this->widgets ) {
70
- $this->load_files();
71
- add_action( 'elementor/widgets/widgets_registered', array( $this, 'register_widgets' ) );
72
- add_action( 'elementor/elements/categories_registered', array( $this, 'add_yith_category' ) );
73
-
74
- add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'enqueue_styles' ) );
75
- add_action( 'elementor/frontend/after_enqueue_styles', array( $this, 'enqueue_styles' ) );
76
- }
77
  }
78
 
79
  /**
@@ -87,17 +85,22 @@ if ( ! class_exists( 'YITH_Elementor' ) ) {
87
  * Register Elementor Widgets
88
  */
89
  public function register_widgets() {
 
 
 
 
90
  foreach ( $this->widgets as $widget ) {
91
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new YITH_Elementor_Widget( array(), array( 'yith_data' => $widget ) ) );
92
  }
93
  }
94
 
95
  /**
96
- * Add "YITH" group for Elementor widgets
97
  *
98
  * @param Elementor\Elements_Manager $elements_manager Elements Manager.
99
  */
100
  public function add_yith_category( $elements_manager ) {
 
101
  $elements_manager->add_category(
102
  'yith',
103
  array(
@@ -112,9 +115,11 @@ if ( ! class_exists( 'YITH_Elementor' ) ) {
112
  * Enqueue styles in elementor
113
  */
114
  public function enqueue_styles() {
115
- if ( \Elementor\Plugin::$instance->preview->is_preview_mode() || \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
116
- wp_enqueue_style( 'yith-plugin-fw-icon-font' );
117
- wp_enqueue_style( 'yith-plugin-fw-elementor' );
 
 
118
  }
119
  }
120
  }
4
  *
5
  * @class YITH_Elementor
6
  * @package YITH\PluginFramework\Classes
7
+ * @since 3.6.0
8
  */
9
 
10
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
29
  *
30
  * @var array
31
  */
32
+ private $widgets = array();
33
 
34
  /**
35
  * Singleton implementation.
45
  */
46
  private function __construct() {
47
  if ( defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, '3.0.0', '>=' ) ) {
48
+ add_action( 'elementor/widgets/widgets_registered', array( $this, 'register_widgets' ) );
49
+ add_action( 'elementor/elements/categories_registered', array( $this, 'add_yith_category' ) );
50
+
51
+ add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'enqueue_styles' ) );
52
+ add_action( 'elementor/frontend/after_enqueue_styles', array( $this, 'enqueue_styles' ) );
53
  }
54
  }
55
 
68
 
69
  /**
70
  * Let's start with Elementor
71
+ *
72
+ * @deprecated 3.7.2
73
  */
74
  public function init() {
 
 
 
 
 
 
 
 
75
  }
76
 
77
  /**
85
  * Register Elementor Widgets
86
  */
87
  public function register_widgets() {
88
+ if ( $this->widgets ) {
89
+ $this->load_files();
90
+ }
91
+
92
  foreach ( $this->widgets as $widget ) {
93
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new YITH_Elementor_Widget( array(), array( 'yith_data' => $widget ) ) );
94
  }
95
  }
96
 
97
  /**
98
+ * Add "YITH" category for Elementor widgets
99
  *
100
  * @param Elementor\Elements_Manager $elements_manager Elements Manager.
101
  */
102
  public function add_yith_category( $elements_manager ) {
103
+ // If the category is empty, it'll be automatically hidden by Elementor.
104
  $elements_manager->add_category(
105
  'yith',
106
  array(
115
  * Enqueue styles in elementor
116
  */
117
  public function enqueue_styles() {
118
+ if ( $this->widgets ) {
119
+ if ( \Elementor\Plugin::$instance->preview->is_preview_mode() || \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
120
+ wp_enqueue_style( 'yith-plugin-fw-icon-font' );
121
+ wp_enqueue_style( 'yith-plugin-fw-elementor' );
122
+ }
123
  }
124
  }
125
  }
plugin-fw/includes/builders/gutenberg/class-yith-gutenberg.php CHANGED
@@ -126,19 +126,21 @@ if ( ! class_exists( 'YITH_Gutenberg' ) ) {
126
  }
127
 
128
  if ( ! empty( $this->registered_blocks ) ) {
129
- add_filter( 'block_categories', array( $this, 'block_category' ), 10, 2 );
 
 
 
130
  }
131
  }
132
 
133
  /**
134
  * Add block category
135
  *
136
- * @param array $categories The block categories.
137
- * @param WP_Post $post The current post.
138
  *
139
  * @return array The block categories.
140
  */
141
- public function block_category( $categories, $post ) {
142
  return array_merge(
143
  $categories,
144
  array(
@@ -322,9 +324,12 @@ if ( ! class_exists( 'YITH_Gutenberg' ) ) {
322
  do_action( 'yith_plugin_fw_gutenberg_after_do_shortcode', $shortcode, $current_action );
323
 
324
  $html = ob_get_clean();
325
- if ( is_ajax() ) {
326
- wp_send_json( array( 'html' => $html ) );
327
- }
 
 
 
328
 
329
  // phpcs:enable
330
  }
126
  }
127
 
128
  if ( ! empty( $this->registered_blocks ) ) {
129
+ global $wp_version;
130
+
131
+ $categories_hook = version_compare( $wp_version, '5.8-beta', '>=' ) ? 'block_categories_all' : 'block_categories';
132
+ add_filter( $categories_hook, array( $this, 'block_category' ), 10, 1 );
133
  }
134
  }
135
 
136
  /**
137
  * Add block category
138
  *
139
+ * @param array $categories The block categories.
 
140
  *
141
  * @return array The block categories.
142
  */
143
+ public function block_category( $categories ) {
144
  return array_merge(
145
  $categories,
146
  array(
324
  do_action( 'yith_plugin_fw_gutenberg_after_do_shortcode', $shortcode, $current_action );
325
 
326
  $html = ob_get_clean();
327
+
328
+ wp_send_json(
329
+ array(
330
+ 'html' => $html,
331
+ )
332
+ );
333
 
334
  // phpcs:enable
335
  }
plugin-fw/includes/class-yit-ajax.php CHANGED
@@ -105,8 +105,16 @@ if ( ! class_exists( 'YIT_Ajax' ) ) {
105
  if ( ! current_user_can( 'read_post', $post_id ) ) {
106
  continue;
107
  }
108
- $title = get_the_title( $post_id ) . ( $show_id ? " (#{$post_id})" : '' );
109
- $found_posts[ $post_id ] = apply_filters( 'yith_plugin_fw_json_search_found_post_title', rawurldecode( $title ), $post_id, $request );
 
 
 
 
 
 
 
 
110
  }
111
  }
112
 
105
  if ( ! current_user_can( 'read_post', $post_id ) ) {
106
  continue;
107
  }
108
+
109
+ $the_title = yith_plugin_fw_get_post_formatted_name(
110
+ $post_id,
111
+ array(
112
+ 'post-type' => $args['post_type'],
113
+ 'show-id' => $show_id,
114
+ )
115
+ );
116
+
117
+ $found_posts[ $post_id ] = apply_filters( 'yith_plugin_fw_json_search_found_post_title', rawurldecode( wp_strip_all_tags( $the_title ) ), $post_id, $request );
118
  }
119
  }
120
 
plugin-fw/includes/class-yit-assets.php CHANGED
@@ -63,9 +63,11 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
63
  * Register styles and scripts
64
  */
65
  public function register_styles_and_scripts() {
66
- global $wp_scripts, $woocommerce, $wp_version;
67
 
68
- $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
 
 
69
 
70
  // Register scripts.
71
  wp_register_script( 'yith-ui', YIT_CORE_PLUGIN_URL . '/assets/js/yith-ui' . $suffix . '.js', array( 'jquery' ), $this->version, true );
@@ -111,6 +113,7 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
111
  'search_posts_nonce' => wp_create_nonce( 'search-posts' ),
112
  'search_terms_nonce' => wp_create_nonce( 'search-terms' ),
113
  'search_customers_nonce' => wp_create_nonce( 'search-customers' ),
 
114
  )
115
  );
116
 
@@ -134,6 +137,24 @@ if ( ! class_exists( 'YIT_Assets' ) ) {
134
  )
135
  );
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  // Localize color-picker to avoid issues with WordPress 5.5.
138
  if ( version_compare( $wp_version, '5.5-RC', '>=' ) ) {
139
  wp_localize_script(
63
  * Register styles and scripts
64
  */
65
  public function register_styles_and_scripts() {
66
+ global $wp_scripts, $woocommerce, $wp_version, $pagenow;
67
 
68
+ $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false;
69
+ $screen_id = $screen && is_a( $screen, 'WP_Screen' ) ? $screen->id : '';
70
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
71
 
72
  // Register scripts.
73
  wp_register_script( 'yith-ui', YIT_CORE_PLUGIN_URL . '/assets/js/yith-ui' . $suffix . '.js', array( 'jquery' ), $this->version, true );
113
  'search_posts_nonce' => wp_create_nonce( 'search-posts' ),
114
  'search_terms_nonce' => wp_create_nonce( 'search-terms' ),
115
  'search_customers_nonce' => wp_create_nonce( 'search-customers' ),
116
+ 'search_pages_nonce' => wp_create_nonce( 'search-pages' ),
117
  )
118
  );
119
 
137
  )
138
  );
139
 
140
+ wp_localize_script(
141
+ 'yith-plugin-fw-wp-pages',
142
+ 'yith_plugin_fw_wp_pages',
143
+ array(
144
+ 'bulk_delete_confirmation_enabled' => ! ! apply_filters( "yith_plugin_fw_{$screen_id}_bulk_delete_confirmation_enabled", in_array( $pagenow, array( 'edit.php', 'edit-tags.php' ), true ) ),
145
+ 'i18n' => array(
146
+ 'bulk_trash_confirm_title' => __( 'Confirm trash', 'yith-plugin-fw' ),
147
+ 'bulk_trash_confirm_message' => __( 'Are you sure you want to trash the selected items?', 'yith-plugin-fw' ),
148
+ 'bulk_trash_confirm_button' => _x( 'Yes, move to trash', 'Trash confirmation action', 'yith-plugin-fw' ),
149
+ 'bulk_trash_cancel_button' => __( 'No', 'yith-plugin-fw' ),
150
+ 'bulk_delete_confirm_title' => __( 'Confirm delete', 'yith-plugin-fw' ),
151
+ 'bulk_delete_confirm_message' => __( 'Are you sure you want to delete the selected items?', 'yith-plugin-fw' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
152
+ 'bulk_delete_confirm_button' => _x( 'Yes, delete', 'Delete confirmation action', 'yith-plugin-fw' ),
153
+ 'bulk_delete_cancel_button' => __( 'No', 'yith-plugin-fw' ),
154
+ ),
155
+ )
156
+ );
157
+
158
  // Localize color-picker to avoid issues with WordPress 5.5.
159
  if ( version_compare( $wp_version, '5.5-RC', '>=' ) ) {
160
  wp_localize_script(
plugin-fw/includes/class-yit-help-desk.php ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * YITH Help Desk static Class.
4
+ *
5
+ * @class YIT_Plugin_Panel
6
+ * @package YITH\PluginFramework\Classes
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
+
11
+ if ( ! class_exists( 'YIT_Help_Desk' ) ) {
12
+ /**
13
+ * Class YIT_Help_Desk
14
+ *
15
+ * Contains static utilities for help desk integrations
16
+ */
17
+ class YIT_Help_Desk {
18
+
19
+ /**
20
+ * URL to contact to query zendesk API
21
+ * It can be overridden, by defining YIT_HELP_CENTER_DEBUG_URL constant
22
+ *
23
+ * @const string API url.
24
+ */
25
+ const PRODUCTION_URL = 'https://support.yithemes.com/api/v2/help_center/en-us/';
26
+
27
+ /**
28
+ * Retrieves latest articles flagged with a give set of labels (and featured)
29
+ *
30
+ * @param array $labels Array of labest to search; default to empty array (all featured articles will be retrieved).
31
+ *
32
+ * @return array Array of articles, formatted as follows:
33
+ * [
34
+ * [
35
+ * 'title' => 'Lorem ipsum dolor sit amet',
36
+ * 'url' => 'https://example.com/lorem-ipsum-dolor-sit-amet'
37
+ * ],
38
+ * ...
39
+ * ]
40
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
41
+ */
42
+ public static function get_latest_articles( $labels = array() ) {
43
+ $latest_articles = get_site_transient( 'yith-plugin-fw-latest-hc-articles' );
44
+ $latest_articles = $latest_articles ? $latest_articles : array();
45
+
46
+ $labels = (array) $labels;
47
+
48
+ // add featured label.
49
+ if ( ! in_array( 'featured', $labels, true ) ) {
50
+ $labels[] = 'featured';
51
+ }
52
+
53
+ // format labels to a valid query string param.
54
+ $labels = implode( ',', array_map( 'sanitize_text_field', $labels ) );
55
+
56
+ if ( ! empty( $latest_articles[ $labels ] ) && ! isset( $_GET['yith_plugin_fw_reset_hc_articles'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
57
+ // if we can find articles in cache, return them.
58
+ return $latest_articles[ $labels ];
59
+ } else {
60
+ // otherwise try to retrieve them.
61
+ try {
62
+ $response = self::call(
63
+ 'articles.json',
64
+ 'GET',
65
+ array(
66
+ 'label_names' => $labels,
67
+ 'sort_by' => 'created_at',
68
+ 'sort_order' => 'desc',
69
+ 'per_page' => 5,
70
+ )
71
+ );
72
+ } catch ( Exception $e ) {
73
+ return array();
74
+ }
75
+
76
+ // invalid answer from Zendesk server.
77
+ if ( ! isset( $response['articles'] ) || ! is_array( $response['articles'] ) ) {
78
+ return array();
79
+ }
80
+
81
+ $formatted_articles = array();
82
+
83
+ foreach ( $response['articles'] as $article ) {
84
+ // invalid article from Zendesk server.
85
+ if ( ! isset( $article['html_url'] ) || ! isset( $article['title'] ) ) {
86
+ continue;
87
+ }
88
+
89
+ // add valid articles.
90
+ $formatted_articles[] = array(
91
+ 'title' => $article['title'],
92
+ 'url' => esc_url( $article['html_url'] ),
93
+ );
94
+ }
95
+
96
+ $latest_articles[ $labels ] = $formatted_articles;
97
+
98
+ // update cache.
99
+ set_site_transient( 'yith-plugin-fw-latest-hc-articles', $latest_articles, 15 * DAY_IN_SECONDS );
100
+
101
+ return $formatted_articles;
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Performs any API request to HC API
107
+ *
108
+ * @param string $request Endpoint to call.
109
+ * @param string $method HTTP method for the call.
110
+ * @param array $query Query string parameters to include with the request.
111
+ * @param array $body Parameters to send as json_encoded content of the request.
112
+ * @param array $args Array of parameters to pass to {wp_remote_request}.
113
+ *
114
+ * @return string Parsed body of the answer; if content is valid JSON string, it will be decoded before return.
115
+ * @throws Exception When an error occurs with API call; error contains more details about the type of problem.
116
+ *
117
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
118
+ */
119
+ public static function call( $request, $method = 'GET', $query = array(), $body = array(), $args = array() ) {
120
+ $destination_url = self::get_url( $request );
121
+
122
+ if ( ! empty( $query ) ) {
123
+ $destination_url = add_query_arg( $query, $destination_url );
124
+ }
125
+
126
+ $body = 'GET' === $method ? $body : wp_json_encode( $body );
127
+
128
+ $args = array_merge(
129
+ array(
130
+ 'timeout' => apply_filters( 'yit_plugin_fw_help_desk_request_timeout', 2 ),
131
+ 'reject_unsafe_urls' => true,
132
+ 'blocking' => true,
133
+ 'sslverify' => true,
134
+ 'attempts' => 0,
135
+ ),
136
+ $args,
137
+ array(
138
+ 'method' => $method,
139
+ 'body' => $body,
140
+ )
141
+ );
142
+
143
+ $response = wp_remote_request( $destination_url, $args );
144
+
145
+ if ( is_wp_error( $response ) ) {
146
+ throw new Exception( $response->get_error_message(), 400 );
147
+ } else {
148
+ $resp_body = isset( $response['body'] ) ? @json_decode( $response['body'], true ) : ''; // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
149
+ $status = isset( $response['response'] ) ? absint( $response['response']['code'] ) : false;
150
+
151
+ if ( ! in_array( $status, apply_filters( 'yit_plugin_fw_help_desk_valid_response_statuses', array( 200 ) ), true ) ) {
152
+ throw new Exception( __( 'There was an error with your request; please try again later.', 'yith-plugin-fw' ), $status );
153
+ } else {
154
+ return $resp_body;
155
+ }
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Get formatted url for API calls
161
+ *
162
+ * @param string $request Endpoint to call with url.
163
+ * @return string Formatted url.
164
+ *
165
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
166
+ */
167
+ public static function get_url( $request = '' ) {
168
+ $base_url = self::PRODUCTION_URL;
169
+
170
+ if ( defined( 'YIT_HELP_CENTER_DEBUG_URL' ) ) {
171
+ $alternative_url = filter_var( YIT_HELP_CENTER_DEBUG_URL, FILTER_VALIDATE_URL );
172
+ $base_url = $alternative_url ? $alternative_url : $base_url;
173
+ }
174
+
175
+ if ( 0 !== strrpos( $base_url, '/' ) ) {
176
+ $base_url = trailingslashit( $base_url );
177
+ }
178
+
179
+ if ( $request ) {
180
+ $base_url .= $request;
181
+ }
182
+
183
+ return $base_url;
184
+ }
185
+
186
+ }
187
+ }
plugin-fw/includes/class-yit-plugin-panel-woocommerce.php CHANGED
@@ -216,6 +216,8 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
216
 
217
  if ( 'admin.php' === $pagenow && isset( $_REQUEST['tab'] ) && in_array( $_REQUEST['tab'], $tabs, true ) ) {
218
  $tab = sanitize_key( wp_unslash( $_REQUEST['tab'] ) );
 
 
219
  }
220
 
221
  return apply_filters( 'yith_wc_plugin_panel_current_tab', $tab );
@@ -277,6 +279,8 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
277
 
278
  if ( $custom_tab_options ) {
279
  $this->print_custom_tab( $custom_tab_options );
 
 
280
  } else {
281
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/woocommerce/woocommerce-form.php';
282
  }
216
 
217
  if ( 'admin.php' === $pagenow && isset( $_REQUEST['tab'] ) && in_array( $_REQUEST['tab'], $tabs, true ) ) {
218
  $tab = sanitize_key( wp_unslash( $_REQUEST['tab'] ) );
219
+ } elseif ( isset( $_REQUEST['tab'] ) && 'help' === $_REQUEST['tab'] && ! empty( $this->settings['help_tab'] ) ) {
220
+ $tab = 'help';
221
  }
222
 
223
  return apply_filters( 'yith_wc_plugin_panel_current_tab', $tab );
279
 
280
  if ( $custom_tab_options ) {
281
  $this->print_custom_tab( $custom_tab_options );
282
+ } elseif ( $this->is_help_tab() ) {
283
+ $this->print_help_tab();
284
  } else {
285
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/woocommerce/woocommerce-form.php';
286
  }
plugin-fw/includes/class-yit-plugin-panel.php CHANGED
@@ -475,37 +475,19 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
475
  );
476
  $args = wp_parse_args( $args, $defaults );
477
 
478
- list ( $current_tab, $premium_class, $page, $parent_page, $wrapper_class ) = yith_plugin_fw_extract( $args, 'current_tab', 'premium_class', 'page', 'parent_page', 'wrapper_class' );
479
 
480
  $tabs = '<ul class="yith-plugin-fw-tabs">';
481
 
482
  foreach ( $this->settings['admin-tabs'] as $tab => $tab_value ) {
483
- $active_class = $current_tab === $tab ? ' nav-tab-active' : '';
484
- if ( 'premium' === $tab ) {
485
- $active_class .= ' ' . $premium_class;
486
- }
487
- $active_class = apply_filters( 'yith_plugin_fw_panel_active_tab_class', $active_class, $current_tab, $tab );
488
-
489
- $first_sub_tab = $this->get_first_sub_tab_key( $tab );
490
- $sub_tab = ! ! $first_sub_tab ? $first_sub_tab : '';
491
- $sub_tabs = $this->get_sub_tabs( $tab );
492
- $url = $this->get_nav_url( $page, $tab, $sub_tab, $parent_page );
493
- $icon = ( $current_tab !== $tab && $sub_tabs ) ? '<i class="yith-icon yith-icon-arrow_down"></i>' : '';
494
-
495
- $tabs .= '<li class="yith-plugin-fw-tab-element">';
496
- $tabs .= '<a class="nav-tab' . esc_attr( $active_class ) . '" href="' . esc_url( $url ) . '">' . wp_kses_post( $tab_value ) . $icon . '</a>';
497
-
498
- if ( $current_tab !== $tab && $sub_tabs ) {
499
- $tabs .= '<div class="nav-subtab-wrap"><ul class="nav-subtab">';
500
- foreach ( $sub_tabs as $_key => $_tab ) {
501
- $url = $this->get_nav_url( $page, $tab, $_key );
502
 
503
- $tabs .= '<li class="nav-subtab-item"><a href="' . esc_url( $url ) . '">' . wp_kses_post( $_tab['title'] ) . '</a></li>';
504
- }
505
- $tabs .= '</ul></div>';
506
- }
507
- $tabs .= '</li>';
508
  }
 
509
  $tabs .= '</ul>';
510
  ?>
511
  <h2 class="<?php echo esc_attr( $wrapper_class ); ?>">
@@ -515,6 +497,52 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
515
  $this->print_sub_tabs_nav( $args );
516
  }
517
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  /**
519
  * Retrieve the Nav URL.
520
  *
@@ -600,6 +628,10 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
600
  if ( $custom_tab_options ) {
601
  $this->print_custom_tab( $custom_tab_options );
602
 
 
 
 
 
603
  return;
604
  }
605
 
@@ -725,6 +757,64 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
725
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/custom-tab.php';
726
  }
727
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728
  /**
729
  * Add sections and fields to setting panel.
730
  * Read all options and show sections and fields.
@@ -735,9 +825,10 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
735
  $yit_options = $this->get_main_array_options();
736
  $option_key = $this->get_current_option_key();
737
 
738
- if ( ! $option_key ) {
739
  return;
740
  }
 
741
  foreach ( $yit_options[ $option_key ] as $section => $data ) {
742
  add_settings_section( "yit_settings_{$option_key}_{$section}", $this->get_section_title( $section ), $this->get_section_description( $section ), 'yit' );
743
  foreach ( $data as $option ) {
475
  );
476
  $args = wp_parse_args( $args, $defaults );
477
 
478
+ list ( $wrapper_class ) = yith_plugin_fw_extract( $args, 'wrapper_class' );
479
 
480
  $tabs = '<ul class="yith-plugin-fw-tabs">';
481
 
482
  foreach ( $this->settings['admin-tabs'] as $tab => $tab_value ) {
483
+ $tabs .= $this->get_tab_nav( $tab, $tab_value, $args );
484
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
 
486
+ // help tab.
487
+ if ( $this->has_help_tab() ) {
488
+ $tabs .= $this->get_tab_nav( 'help', _x( 'Help', 'Help tab name', 'yith-plugin-fw' ), $args );
 
 
489
  }
490
+
491
  $tabs .= '</ul>';
492
  ?>
493
  <h2 class="<?php echo esc_attr( $wrapper_class ); ?>">
497
  $this->print_sub_tabs_nav( $args );
498
  }
499
 
500
+ /**
501
+ * Get HTML for single tab in tabs navigation
502
+ *
503
+ * @param string $tab_slug Tab slug.
504
+ * @param string $tab_name Tab name.
505
+ * @param array $args Nav Arguments.
506
+ *
507
+ * @return string Tab HTML
508
+ *
509
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
510
+ * @since 3.4.0
511
+ */
512
+ protected function get_tab_nav( $tab_slug, $tab_name, $args = array() ) {
513
+ list ( $current_tab, $premium_class, $page, $parent_page ) = yith_plugin_fw_extract( $args, 'current_tab', 'premium_class', 'page', 'parent_page' );
514
+
515
+ $active_class = $current_tab === $tab_slug ? ' nav-tab-active' : '';
516
+
517
+ if ( 'premium' === $tab_slug ) {
518
+ $active_class .= ' ' . $premium_class;
519
+ }
520
+ $active_class = apply_filters( 'yith_plugin_fw_panel_active_tab_class', $active_class, $current_tab, $tab_slug );
521
+
522
+ $first_sub_tab = $this->get_first_sub_tab_key( $tab_slug );
523
+ $sub_tab = ! ! $first_sub_tab ? $first_sub_tab : '';
524
+ $sub_tabs = $this->get_sub_tabs( $tab_slug );
525
+ $url = $this->get_nav_url( $page, $tab_slug, $sub_tab, $parent_page );
526
+ $icon = ( $current_tab !== $tab_slug && $sub_tabs ) ? '<i class="yith-icon yith-icon-arrow_down"></i>' : '';
527
+
528
+ $tab = '<li class="yith-plugin-fw-tab-element">';
529
+
530
+ $tab .= '<a class="nav-tab' . esc_attr( $active_class ) . '" href="' . esc_url( $url ) . '">' . wp_kses_post( $tab_name ) . $icon . '</a>';
531
+
532
+ if ( $current_tab !== $tab_slug && $sub_tabs ) {
533
+ $tab .= '<div class="nav-subtab-wrap"><ul class="nav-subtab">';
534
+ foreach ( $sub_tabs as $_key => $_tab ) {
535
+ $url = $this->get_nav_url( $page, $tab_slug, $_key );
536
+
537
+ $tab .= '<li class="nav-subtab-item"><a href="' . esc_url( $url ) . '">' . wp_kses_post( $_tab['title'] ) . '</a></li>';
538
+ }
539
+ $tab .= '</ul></div>';
540
+ }
541
+ $tab .= '</li>';
542
+
543
+ return $tab;
544
+ }
545
+
546
  /**
547
  * Retrieve the Nav URL.
548
  *
628
  if ( $custom_tab_options ) {
629
  $this->print_custom_tab( $custom_tab_options );
630
 
631
+ return;
632
+ } elseif ( $this->is_help_tab() ) {
633
+ $this->print_help_tab();
634
+
635
  return;
636
  }
637
 
757
  include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/custom-tab.php';
758
  }
759
 
760
+ /**
761
+ * Check if panel has help tab
762
+ *
763
+ * @return bool Whether panel has help tab or no.
764
+ */
765
+ public function has_help_tab() {
766
+ return ! empty( $this->settings['help_tab'] ) && ( ! $this->is_free() || ! empty( $this->settings['help_tab']['show_on_free'] ) );
767
+ }
768
+
769
+ /**
770
+ * Checks whether current tab is special Help Tab
771
+ *
772
+ * @return bool Whether current tab is Help Tab
773
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
774
+ */
775
+ public function is_help_tab() {
776
+ return 'help' === $this->get_current_tab();
777
+ }
778
+
779
+ /**
780
+ * Prints special Help Tab
781
+ *
782
+ * @return void
783
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
784
+ */
785
+ public function print_help_tab() {
786
+ $options = isset( $this->settings['help_tab'] ) ? $this->settings['help_tab'] : array();
787
+ $plugin_title = isset( $this->settings['plugin_title'] ) ? $this->settings['plugin_title'] : $this->settings['page_title'];
788
+
789
+ if ( 0 !== strpos( $plugin_title, 'YITH' ) ) {
790
+ $plugin_title = "YITH {$plugin_title}";
791
+ }
792
+
793
+ // parse options.
794
+ $options = wp_parse_args(
795
+ $options,
796
+ array(
797
+ // translators: 1. Plugin name.
798
+ 'title' => sprintf( _x( 'Thank you for purchasing %s!', 'Help tab default title', 'yith-plugin-fw' ), $plugin_title ),
799
+ 'description' => _x( 'We want to help you to enjoy a wonderful experience with all our products.', 'Help tab default description', 'yith-plugin-fw' ),
800
+ 'main_video' => false,
801
+ 'playlists' => array(),
802
+ 'hc_url' => 'https://support.yithemes.com/hc/',
803
+ 'doc_url' => $this->settings['plugin_slug'] ? 'https://docs.yithemes.com/' . $this->settings['plugin_slug'] : '',
804
+ 'submit_ticket_url' => 'https://yithemes.com/my-account/support/submit-a-ticket/',
805
+ 'show_hc_articles' => true,
806
+ 'show_submit_ticket' => true,
807
+ )
808
+ );
809
+
810
+ // set template variables.
811
+ $current_tab = $this->get_current_tab();
812
+ $current_sub_tab = $this->get_current_sub_tab();
813
+ $latest_articles = $this->settings['plugin_slug'] ? YIT_Help_Desk::get_latest_articles( $this->settings['plugin_slug'] ) : array();
814
+
815
+ include YIT_CORE_PLUGIN_TEMPLATE_PATH . '/panel/help-tab.php';
816
+ }
817
+
818
  /**
819
  * Add sections and fields to setting panel.
820
  * Read all options and show sections and fields.
825
  $yit_options = $this->get_main_array_options();
826
  $option_key = $this->get_current_option_key();
827
 
828
+ if ( ! $option_key || ! isset( $yit_options[ $option_key ] ) ) {
829
  return;
830
  }
831
+
832
  foreach ( $yit_options[ $option_key ] as $section => $data ) {
833
  add_settings_section( "yit_settings_{$option_key}_{$section}", $this->get_section_title( $section ), $this->get_section_description( $section ), 'yit' );
834
  foreach ( $data as $option ) {
plugin-fw/includes/class-yith-system-status.php CHANGED
@@ -182,9 +182,9 @@ if ( ! class_exists( 'YITH_System_Status' ) ) {
182
  $this->add_requirements(
183
  esc_html__( 'YITH Plugins', 'yith-plugin-fw' ),
184
  array(
185
- 'min_wp_version' => '5.4',
186
- 'min_wc_version' => '4.5',
187
- 'min_php_version' => '5.6.20',
188
  )
189
  );
190
  $this->add_requirements(
182
  $this->add_requirements(
183
  esc_html__( 'YITH Plugins', 'yith-plugin-fw' ),
184
  array(
185
+ 'min_wp_version' => '5.6',
186
+ 'min_wc_version' => '5.3',
187
+ 'min_php_version' => '7.0',
188
  )
189
  );
190
  $this->add_requirements(
plugin-fw/init.php CHANGED
@@ -1,13 +1,13 @@
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
- * Version: 3.7.0
5
  * Author: YITH
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
8
  *
9
  * @author YITH
10
- * @version 3.7.0
11
  * @package YITH\PluginFramework
12
  */
13
 
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
+ * Version: 3.7.4
5
  * Author: YITH
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
8
  *
9
  * @author YITH
10
+ * @version 3.7.4
11
  * @package YITH\PluginFramework
12
  */
13
 
plugin-fw/languages/yith-plugin-fw-el.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-el.po CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-20 06:53:10+00:00\n"
8
  "PO-Revision-Date: 2021-02-11 18:07:46+0000\n"
9
  "Language: el_GR\n"
10
  "MIME-Version: 1.0\n"
@@ -13,31 +13,64 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Καθαρισμός"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Καθαρισμός χρώματος"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Προεπιλεγμένο"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Επιλογή προεπιλεγμένου χρώματος"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Επιλογή Χρώματος"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Αξία χρώματος"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr ""
43
  "Οι αλλαγές που έχετε δημιουργήσει θα χαθούν αν αφήσετε αυτήν την σελίδα."
@@ -55,12 +88,12 @@ msgstr "Ρυθμίσεις"
55
  msgid "How to install premium version"
56
  msgstr "Πώς να εγκαταστήσετε την προηγμένη έκδοση"
57
 
58
- #: includes/class-yit-plugin-panel.php:620
59
  #: includes/class-yit-plugin-subpanel.php:132
60
  msgid "Save Changes"
61
  msgstr "Αποθήκευση Αλλαγών"
62
 
63
- #: includes/class-yit-plugin-panel.php:625
64
  #: includes/class-yit-plugin-subpanel.php:136
65
  #: templates/panel/woocommerce/woocommerce-form.php:14
66
  msgid ""
@@ -69,73 +102,73 @@ msgstr ""
69
  "Αν συνεχίσετε με αυτή την ενέργεια θα επαναφέρετε όλες τις επιλογές στη "
70
  "σελίδα."
71
 
72
- #: includes/class-yit-plugin-panel.php:625
73
  #: includes/class-yit-plugin-subpanel.php:136
74
  #: templates/panel/woocommerce/woocommerce-form.php:14
75
  msgid "Are you sure?"
76
  msgstr "Είστε σίγουρος;"
77
 
78
- #: includes/class-yit-plugin-panel.php:629
79
  #: includes/class-yit-plugin-subpanel.php:139
80
  msgid "Reset to default"
81
  msgstr "Επαναφορά σε προεπιλεγμένο"
82
 
83
- #: includes/class-yit-plugin-panel.php:868
84
  msgid ""
85
  "The element you have entered already exists. Please, enter another name."
86
  msgstr "Το στοιχείο που εισάγατε υπάρχει ήδη. Παρακαλώ, εισάγετε άλλο όνομα."
87
 
88
- #: includes/class-yit-plugin-panel.php:869
89
  msgid "Settings saved"
90
  msgstr "Ρυθμίσεις αποθηκεύτηκαν"
91
 
92
- #: includes/class-yit-plugin-panel.php:870
93
  msgid "Settings reset"
94
  msgstr "Επαναφορά ρυθμίσεων"
95
 
96
- #: includes/class-yit-plugin-panel.php:871
97
  msgid "Element deleted correctly."
98
  msgstr "Το στοιχείο διαγράφηκε επιτυχώς."
99
 
100
- #: includes/class-yit-plugin-panel.php:872
101
- #: includes/class-yit-plugin-panel.php:873
102
  msgid "Element updated correctly."
103
  msgstr "Το στοιχείο αναβαθμίστηκε επιτυχώς."
104
 
105
- #: includes/class-yit-plugin-panel.php:874
106
  msgid "Database imported correctly."
107
  msgstr "Επιτυχής εισαγωγή βάσης δεδομένων."
108
 
109
- #: includes/class-yit-plugin-panel.php:875
110
  msgid "An error has occurred during import. Please try again."
111
  msgstr "Παρουσιάστηκε σφάλμα κατά την εισαγωγή. Παρακαλώ προσπαθήστε ξανά."
112
 
113
- #: includes/class-yit-plugin-panel.php:876
114
  msgid "The added file is not valid."
115
  msgstr "Το προστιθέμενο αρχείο δεν είναι έγκυρο."
116
 
117
- #: includes/class-yit-plugin-panel.php:877
118
  msgid "Sorry, import is disabled."
119
  msgstr "Συγνώμη, η εισαγωγή είναι απενεργοποιημένη."
120
 
121
- #: includes/class-yit-plugin-panel.php:878
122
  msgid "Sorting successful."
123
  msgstr "Διαλογή επιτυχής."
124
 
125
- #: includes/class-yit-plugin-panel.php:1346
126
  msgid "We need your support"
127
  msgstr "Χρειαζόμαστε την υποστήριξή σας"
128
 
129
- #: includes/class-yit-plugin-panel.php:1347
130
  msgid "to keep updating and improving the plugin. Please,"
131
  msgstr ""
132
  "για να διατηρήσετε την ενημέρωση και τη βελτίωση του πρόσθετου. Παρακαλώ,"
133
 
134
- #: includes/class-yit-plugin-panel.php:1349
135
  msgid "help us by leaving a good review"
136
  msgstr ""
137
 
138
- #: includes/class-yit-plugin-panel.php:1350
139
  msgid ":) Thanks!"
140
  msgstr ":) Ευχαριστώ!"
141
 
@@ -575,10 +608,6 @@ msgstr "Καθορισμένο WP_CACHE"
575
  msgid "Yes"
576
  msgstr "Ναι"
577
 
578
- #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
579
- msgid "No"
580
- msgstr "Όχι"
581
-
582
  #: templates/sysinfo/tabs/main.php:45
583
  msgid "External object cache"
584
  msgstr "Cache εξωτερικού αντικειμένου"
@@ -588,33 +617,20 @@ msgid "Plugins Requirements"
588
  msgstr "Προϋποθέσεις Πρόσθετων"
589
 
590
  #. translators: %s is the title of the post object.
591
- #: yit-functions.php:1823
592
  msgid "Are you sure you want to move \"%s\" to trash?"
593
  msgstr ""
594
 
595
  #. translators: %s is the title of the post object.
596
- #: yit-functions.php:1825 yit-functions.php:1983
597
  msgid "Are you sure you want to delete \"%s\"?"
598
  msgstr ""
599
 
600
- #: yit-functions.php:1825 yit-functions.php:1983
601
- msgid ""
602
- "This action cannot be undone and you will be not able to recover this data."
603
- msgstr ""
604
-
605
- #: yit-functions.php:1891
606
- msgid "Confirm trash"
607
- msgstr ""
608
-
609
- #: yit-functions.php:1908 yit-functions.php:2035
610
- msgid "Confirm delete"
611
- msgstr ""
612
-
613
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
614
  msgid "Further actions"
615
  msgstr ""
616
 
617
- #: yit-plugin.php:203
618
  msgid "License"
619
  msgstr "Άδεια χρήσης προϊόντος"
620
 
@@ -628,21 +644,49 @@ msgctxt "Elementor Widget - section title"
628
  msgid "%s - Options"
629
  msgstr ""
630
 
631
- #: includes/builders/gutenberg/class-yith-gutenberg.php:147
632
  msgctxt "[gutenberg]: Category Name"
633
  msgid "YITH"
634
  msgstr "YITH"
635
 
636
- #: includes/class-yit-assets.php:131
637
  msgctxt "Button text"
638
  msgid "Confirm"
639
  msgstr ""
640
 
641
- #: includes/class-yit-assets.php:132
642
  msgctxt "Button text"
643
  msgid "Cancel"
644
  msgstr ""
645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  #: includes/class-yith-dashboard.php:96
647
  msgctxt "Plugin FW"
648
  msgid "View Changelog"
@@ -737,6 +781,17 @@ msgctxt "Tooltip in the \"Dimensions\" field"
737
  msgid "Link values together"
738
  msgstr "Συνδέστε αξίες"
739
 
 
 
 
 
 
 
 
 
 
 
 
740
  #: templates/fields/onoff.php:28
741
  msgctxt "YES/NO button: use MAX 4 characters!"
742
  msgid "YES"
@@ -747,92 +802,152 @@ msgctxt "YES/NO button: use MAX 4 characters!"
747
  msgid "NO"
748
  msgstr "ΟΧΙ"
749
 
750
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751
  msgctxt "Post action"
752
  msgid "Preview"
753
  msgstr ""
754
 
755
- #: yit-functions.php:1846
756
  msgctxt "Post action"
757
  msgid "View"
758
  msgstr ""
759
 
760
- #: yit-functions.php:1857
761
  msgctxt "Post action"
762
  msgid "Edit"
763
  msgstr ""
764
 
765
- #: yit-functions.php:1865
766
  msgctxt "Post action"
767
  msgid "Duplicate"
768
  msgstr ""
769
 
770
- #: yit-functions.php:1877
771
  msgctxt "Post action"
772
  msgid "Restore"
773
  msgstr ""
774
 
775
- #: yit-functions.php:1885
776
  msgctxt "Post action"
777
  msgid "Trash"
778
  msgstr ""
779
 
780
- #: yit-functions.php:1901
781
  msgctxt "Post action"
782
  msgid "Delete Permanently"
783
  msgstr ""
784
 
785
- #: yit-functions.php:1893
786
- msgctxt "Trash confirmation action"
787
- msgid "Yes, trash"
788
- msgstr ""
789
-
790
- #: yit-functions.php:1910 yit-functions.php:2037
791
- msgctxt "Delete confirmation action"
792
- msgid "Yes, delete"
793
- msgstr ""
794
-
795
- #: yit-functions.php:1997
796
  msgctxt "Term action"
797
  msgid "View"
798
  msgstr ""
799
 
800
- #: yit-functions.php:2007
801
  msgctxt "Term action"
802
  msgid "Edit"
803
  msgstr ""
804
 
805
- #: yit-functions.php:2015
806
  msgctxt "Term action"
807
  msgid "Duplicate"
808
  msgstr ""
809
 
810
- #: yit-functions.php:2028
811
  msgctxt "Term action"
812
  msgid "Delete"
813
  msgstr ""
814
 
815
- #: yit-plugin.php:84
816
  msgctxt "Plugin Row Meta"
817
  msgid "Live Demo"
818
  msgstr "Live Demo"
819
 
820
- #: yit-plugin.php:88
821
  msgctxt "Plugin Row Meta"
822
  msgid "Documentation"
823
  msgstr "Εγχειρίδιο χρήσης"
824
 
825
- #: yit-plugin.php:92
826
  msgctxt "Plugin Row Meta"
827
  msgid "Support"
828
  msgstr "Υποστήριξη"
829
 
830
- #: yit-plugin.php:96
831
  msgctxt "Plugin Row Meta"
832
  msgid "Premium version"
833
  msgstr "Premium έκδοση"
834
 
835
- #: yit-plugin.php:199
836
  msgctxt "Action links"
837
  msgid "Settings"
838
  msgstr "Ρυθμίσεις"
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-07-13 10:11:30+00:00\n"
8
  "PO-Revision-Date: 2021-02-11 18:07:46+0000\n"
9
  "Language: el_GR\n"
10
  "MIME-Version: 1.0\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:146 yit-functions.php:1962
17
+ msgid "Confirm trash"
18
+ msgstr ""
19
+
20
+ #: includes/class-yit-assets.php:147
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+
24
+ #: includes/class-yit-assets.php:149 includes/class-yit-assets.php:153
25
+ #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
26
+ #: yit-functions.php:1964 yit-functions.php:1982
27
+ msgid "No"
28
+ msgstr "Όχι"
29
+
30
+ #: includes/class-yit-assets.php:150 yit-functions.php:1980
31
+ #: yit-functions.php:2108
32
+ msgid "Confirm delete"
33
+ msgstr ""
34
+
35
+ #: includes/class-yit-assets.php:151
36
+ msgid "Are you sure you want to delete the selected items?"
37
+ msgstr ""
38
+
39
+ #: includes/class-yit-assets.php:151 yit-functions.php:1896
40
+ #: yit-functions.php:2056
41
+ msgid ""
42
+ "This action cannot be undone and you will not be able to recover this data."
43
+ msgstr ""
44
+
45
+ #: includes/class-yit-assets.php:164
46
  msgid "Clear"
47
  msgstr "Καθαρισμός"
48
 
49
+ #: includes/class-yit-assets.php:165
50
  msgid "Clear color"
51
  msgstr "Καθαρισμός χρώματος"
52
 
53
+ #: includes/class-yit-assets.php:166
54
  msgid "Default"
55
  msgstr "Προεπιλεγμένο"
56
 
57
+ #: includes/class-yit-assets.php:167
58
  msgid "Select default color"
59
  msgstr "Επιλογή προεπιλεγμένου χρώματος"
60
 
61
+ #: includes/class-yit-assets.php:168
62
  msgid "Select Color"
63
  msgstr "Επιλογή Χρώματος"
64
 
65
+ #: includes/class-yit-assets.php:169
66
  msgid "Color value"
67
  msgstr "Αξία χρώματος"
68
 
69
+ #: includes/class-yit-help-desk.php:152
70
+ msgid "There was an error with your request; please try again later."
71
+ msgstr ""
72
+
73
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
74
  msgid "The changes you have made will be lost if you leave this page."
75
  msgstr ""
76
  "Οι αλλαγές που έχετε δημιουργήσει θα χαθούν αν αφήσετε αυτήν την σελίδα."
88
  msgid "How to install premium version"
89
  msgstr "Πώς να εγκαταστήσετε την προηγμένη έκδοση"
90
 
91
+ #: includes/class-yit-plugin-panel.php:652
92
  #: includes/class-yit-plugin-subpanel.php:132
93
  msgid "Save Changes"
94
  msgstr "Αποθήκευση Αλλαγών"
95
 
96
+ #: includes/class-yit-plugin-panel.php:657
97
  #: includes/class-yit-plugin-subpanel.php:136
98
  #: templates/panel/woocommerce/woocommerce-form.php:14
99
  msgid ""
102
  "Αν συνεχίσετε με αυτή την ενέργεια θα επαναφέρετε όλες τις επιλογές στη "
103
  "σελίδα."
104
 
105
+ #: includes/class-yit-plugin-panel.php:657
106
  #: includes/class-yit-plugin-subpanel.php:136
107
  #: templates/panel/woocommerce/woocommerce-form.php:14
108
  msgid "Are you sure?"
109
  msgstr "Είστε σίγουρος;"
110
 
111
+ #: includes/class-yit-plugin-panel.php:661
112
  #: includes/class-yit-plugin-subpanel.php:139
113
  msgid "Reset to default"
114
  msgstr "Επαναφορά σε προεπιλεγμένο"
115
 
116
+ #: includes/class-yit-plugin-panel.php:959
117
  msgid ""
118
  "The element you have entered already exists. Please, enter another name."
119
  msgstr "Το στοιχείο που εισάγατε υπάρχει ήδη. Παρακαλώ, εισάγετε άλλο όνομα."
120
 
121
+ #: includes/class-yit-plugin-panel.php:960
122
  msgid "Settings saved"
123
  msgstr "Ρυθμίσεις αποθηκεύτηκαν"
124
 
125
+ #: includes/class-yit-plugin-panel.php:961
126
  msgid "Settings reset"
127
  msgstr "Επαναφορά ρυθμίσεων"
128
 
129
+ #: includes/class-yit-plugin-panel.php:962
130
  msgid "Element deleted correctly."
131
  msgstr "Το στοιχείο διαγράφηκε επιτυχώς."
132
 
133
+ #: includes/class-yit-plugin-panel.php:963
134
+ #: includes/class-yit-plugin-panel.php:964
135
  msgid "Element updated correctly."
136
  msgstr "Το στοιχείο αναβαθμίστηκε επιτυχώς."
137
 
138
+ #: includes/class-yit-plugin-panel.php:965
139
  msgid "Database imported correctly."
140
  msgstr "Επιτυχής εισαγωγή βάσης δεδομένων."
141
 
142
+ #: includes/class-yit-plugin-panel.php:966
143
  msgid "An error has occurred during import. Please try again."
144
  msgstr "Παρουσιάστηκε σφάλμα κατά την εισαγωγή. Παρακαλώ προσπαθήστε ξανά."
145
 
146
+ #: includes/class-yit-plugin-panel.php:967
147
  msgid "The added file is not valid."
148
  msgstr "Το προστιθέμενο αρχείο δεν είναι έγκυρο."
149
 
150
+ #: includes/class-yit-plugin-panel.php:968
151
  msgid "Sorry, import is disabled."
152
  msgstr "Συγνώμη, η εισαγωγή είναι απενεργοποιημένη."
153
 
154
+ #: includes/class-yit-plugin-panel.php:969
155
  msgid "Sorting successful."
156
  msgstr "Διαλογή επιτυχής."
157
 
158
+ #: includes/class-yit-plugin-panel.php:1437
159
  msgid "We need your support"
160
  msgstr "Χρειαζόμαστε την υποστήριξή σας"
161
 
162
+ #: includes/class-yit-plugin-panel.php:1438
163
  msgid "to keep updating and improving the plugin. Please,"
164
  msgstr ""
165
  "για να διατηρήσετε την ενημέρωση και τη βελτίωση του πρόσθετου. Παρακαλώ,"
166
 
167
+ #: includes/class-yit-plugin-panel.php:1440
168
  msgid "help us by leaving a good review"
169
  msgstr ""
170
 
171
+ #: includes/class-yit-plugin-panel.php:1441
172
  msgid ":) Thanks!"
173
  msgstr ":) Ευχαριστώ!"
174
 
608
  msgid "Yes"
609
  msgstr "Ναι"
610
 
 
 
 
 
611
  #: templates/sysinfo/tabs/main.php:45
612
  msgid "External object cache"
613
  msgstr "Cache εξωτερικού αντικειμένου"
617
  msgstr "Προϋποθέσεις Πρόσθετων"
618
 
619
  #. translators: %s is the title of the post object.
620
+ #: yit-functions.php:1894
621
  msgid "Are you sure you want to move \"%s\" to trash?"
622
  msgstr ""
623
 
624
  #. translators: %s is the title of the post object.
625
+ #: yit-functions.php:1896 yit-functions.php:2056
626
  msgid "Are you sure you want to delete \"%s\"?"
627
  msgstr ""
628
 
629
+ #: yit-functions.php:1994 yit-functions.php:2002 yit-functions.php:2119
 
 
 
 
 
 
 
 
 
 
 
 
 
630
  msgid "Further actions"
631
  msgstr ""
632
 
633
+ #: yit-plugin.php:204
634
  msgid "License"
635
  msgstr "Άδεια χρήσης προϊόντος"
636
 
644
  msgid "%s - Options"
645
  msgstr ""
646
 
647
+ #: includes/builders/gutenberg/class-yith-gutenberg.php:149
648
  msgctxt "[gutenberg]: Category Name"
649
  msgid "YITH"
650
  msgstr "YITH"
651
 
652
+ #: includes/class-yit-assets.php:134
653
  msgctxt "Button text"
654
  msgid "Confirm"
655
  msgstr ""
656
 
657
+ #: includes/class-yit-assets.php:135
658
  msgctxt "Button text"
659
  msgid "Cancel"
660
  msgstr ""
661
 
662
+ #: includes/class-yit-assets.php:148 yit-functions.php:1965
663
+ msgctxt "Trash confirmation action"
664
+ msgid "Yes, move to trash"
665
+ msgstr ""
666
+
667
+ #: includes/class-yit-assets.php:152 yit-functions.php:1983
668
+ #: yit-functions.php:2110
669
+ msgctxt "Delete confirmation action"
670
+ msgid "Yes, delete"
671
+ msgstr ""
672
+
673
+ #: includes/class-yit-plugin-panel.php:488
674
+ msgctxt "Help tab name"
675
+ msgid "Help"
676
+ msgstr ""
677
+
678
+ #. translators: 1. Plugin name.
679
+ #: includes/class-yit-plugin-panel.php:798
680
+ msgctxt "Help tab default title"
681
+ msgid "Thank you for purchasing %s!"
682
+ msgstr ""
683
+
684
+ #: includes/class-yit-plugin-panel.php:799
685
+ msgctxt "Help tab default description"
686
+ msgid ""
687
+ "We want to help you to enjoy a wonderful experience with all our products."
688
+ msgstr ""
689
+
690
  #: includes/class-yith-dashboard.php:96
691
  msgctxt "Plugin FW"
692
  msgid "View Changelog"
781
  msgid "Link values together"
782
  msgstr "Συνδέστε αξίες"
783
 
784
+ #: templates/fields/image-dimensions.php:18
785
+ msgctxt "Image width field label"
786
+ msgid "Width"
787
+ msgstr ""
788
+
789
+ #: templates/fields/image-dimensions.php:23
790
+ #, fuzzy
791
+ msgctxt "Image height field label"
792
+ msgid "Height"
793
+ msgstr "Δεξιά"
794
+
795
  #: templates/fields/onoff.php:28
796
  msgctxt "YES/NO button: use MAX 4 characters!"
797
  msgid "YES"
802
  msgid "NO"
803
  msgstr "ΟΧΙ"
804
 
805
+ #. translators: 1. Url to EN playlist.
806
+ #: templates/panel/help-tab.php:87
807
+ msgctxt "Help tab view all video link"
808
+ msgid ""
809
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
810
+ "learn more >"
811
+ msgstr ""
812
+
813
+ #: templates/panel/help-tab.php:94
814
+ msgctxt "Help tab Watch Videotutorials link"
815
+ msgid "Videos are also available in:"
816
+ msgstr ""
817
+
818
+ #: templates/panel/help-tab.php:137
819
+ msgctxt "Help tab Watch Videotutorials link"
820
+ msgid "Watch our videotutorials"
821
+ msgstr ""
822
+
823
+ #: templates/panel/help-tab.php:140
824
+ msgctxt "Help tab Watch Videotutorials link"
825
+ msgid "We show you some use cases"
826
+ msgstr ""
827
+
828
+ #: templates/panel/help-tab.php:124
829
+ msgctxt "Help tab Read Documentation link"
830
+ msgid "Read the documentation"
831
+ msgstr ""
832
+
833
+ #: templates/panel/help-tab.php:127
834
+ msgctxt "Help tab Read Documentation link"
835
+ msgid "to learn from basics how it works"
836
+ msgstr ""
837
+
838
+ #: templates/panel/help-tab.php:150
839
+ msgctxt "Help tab view FAQs link"
840
+ msgid "Check the FAQs"
841
+ msgstr ""
842
+
843
+ #: templates/panel/help-tab.php:153
844
+ msgctxt "Help tab view FAQs link"
845
+ msgid "to find answers to your doubts"
846
+ msgstr ""
847
+
848
+ #: templates/panel/help-tab.php:169
849
+ msgctxt "Help tab FAQ title"
850
+ msgid "Last FAQs in our Help Center"
851
+ msgstr ""
852
+
853
+ #: templates/panel/help-tab.php:183
854
+ msgctxt "Help tab FAQ link"
855
+ msgid "View all FAQs >"
856
+ msgstr ""
857
+
858
+ #: templates/panel/help-tab.php:192
859
+ msgctxt "Help tab submit ticket title"
860
+ msgid "Need help?"
861
+ msgstr ""
862
+
863
+ #: templates/panel/help-tab.php:195
864
+ msgctxt "Help tab submit ticket description"
865
+ msgid ""
866
+ "If you are experiencing some technical issue ask help to our developers. "
867
+ "Submit a ticket in our support desk and we will help you as soon as possible."
868
+ msgstr ""
869
+
870
+ #: templates/panel/help-tab.php:203
871
+ msgctxt "Help tab submit ticket button"
872
+ msgid "Submit a ticket"
873
+ msgstr ""
874
+
875
+ #: yit-functions.php:1908
876
  msgctxt "Post action"
877
  msgid "Preview"
878
  msgstr ""
879
 
880
+ #: yit-functions.php:1917
881
  msgctxt "Post action"
882
  msgid "View"
883
  msgstr ""
884
 
885
+ #: yit-functions.php:1928
886
  msgctxt "Post action"
887
  msgid "Edit"
888
  msgstr ""
889
 
890
+ #: yit-functions.php:1936
891
  msgctxt "Post action"
892
  msgid "Duplicate"
893
  msgstr ""
894
 
895
+ #: yit-functions.php:1948
896
  msgctxt "Post action"
897
  msgid "Restore"
898
  msgstr ""
899
 
900
+ #: yit-functions.php:1956
901
  msgctxt "Post action"
902
  msgid "Trash"
903
  msgstr ""
904
 
905
+ #: yit-functions.php:1973
906
  msgctxt "Post action"
907
  msgid "Delete Permanently"
908
  msgstr ""
909
 
910
+ #: yit-functions.php:2070
 
 
 
 
 
 
 
 
 
 
911
  msgctxt "Term action"
912
  msgid "View"
913
  msgstr ""
914
 
915
+ #: yit-functions.php:2080
916
  msgctxt "Term action"
917
  msgid "Edit"
918
  msgstr ""
919
 
920
+ #: yit-functions.php:2088
921
  msgctxt "Term action"
922
  msgid "Duplicate"
923
  msgstr ""
924
 
925
+ #: yit-functions.php:2101
926
  msgctxt "Term action"
927
  msgid "Delete"
928
  msgstr ""
929
 
930
+ #: yit-plugin.php:85
931
  msgctxt "Plugin Row Meta"
932
  msgid "Live Demo"
933
  msgstr "Live Demo"
934
 
935
+ #: yit-plugin.php:89
936
  msgctxt "Plugin Row Meta"
937
  msgid "Documentation"
938
  msgstr "Εγχειρίδιο χρήσης"
939
 
940
+ #: yit-plugin.php:93
941
  msgctxt "Plugin Row Meta"
942
  msgid "Support"
943
  msgstr "Υποστήριξη"
944
 
945
+ #: yit-plugin.php:97
946
  msgctxt "Plugin Row Meta"
947
  msgid "Premium version"
948
  msgstr "Premium έκδοση"
949
 
950
+ #: yit-plugin.php:200
951
  msgctxt "Action links"
952
  msgid "Settings"
953
  msgstr "Ρυθμίσεις"
plugin-fw/languages/yith-plugin-fw-es_ES.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-es_ES.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-20 06:53:10+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 07:56:00+0000\n"
9
  "Language: es\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,66 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Borrar"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Borrar color"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Predeterminado"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Seleccionar color predeterminado"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Seleccionar color"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Valor del color"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Los cambios que has hecho se perderán si abandonas esta página."
43
 
@@ -54,12 +89,12 @@ msgstr "Ajustes"
54
  msgid "How to install premium version"
55
  msgstr "Cómo instalar la versión premium"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Guardar cambios"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -68,74 +103,74 @@ msgstr ""
68
  "Si continúas con esta acción, restablecerás todas las opciones en esta "
69
  "página."
70
 
71
- #: includes/class-yit-plugin-panel.php:625
72
  #: includes/class-yit-plugin-subpanel.php:136
73
  #: templates/panel/woocommerce/woocommerce-form.php:14
74
  msgid "Are you sure?"
75
  msgstr "¿Estás seguro?"
76
 
77
- #: includes/class-yit-plugin-panel.php:629
78
  #: includes/class-yit-plugin-subpanel.php:139
79
  msgid "Reset to default"
80
  msgstr "Restablecer valores predeterminados"
81
 
82
- #: includes/class-yit-plugin-panel.php:868
83
  msgid ""
84
  "The element you have entered already exists. Please, enter another name."
85
  msgstr ""
86
  "El elemento que has introducido ya existe. Por favor, introduce otro nombre."
87
 
88
- #: includes/class-yit-plugin-panel.php:869
89
  msgid "Settings saved"
90
  msgstr "Ajustes guardados"
91
 
92
- #: includes/class-yit-plugin-panel.php:870
93
  msgid "Settings reset"
94
  msgstr "Restablecer ajustes"
95
 
96
- #: includes/class-yit-plugin-panel.php:871
97
  msgid "Element deleted correctly."
98
  msgstr "Elemento eliminado correctamente."
99
 
100
- #: includes/class-yit-plugin-panel.php:872
101
- #: includes/class-yit-plugin-panel.php:873
102
  msgid "Element updated correctly."
103
  msgstr "Elemento actualizado correctamente."
104
 
105
- #: includes/class-yit-plugin-panel.php:874
106
  msgid "Database imported correctly."
107
  msgstr "Base de datos importada correctamente."
108
 
109
- #: includes/class-yit-plugin-panel.php:875
110
  msgid "An error has occurred during import. Please try again."
111
  msgstr ""
112
  "Ha ocurrido un error durante la importación. Por favor, inténtalo de nuevo."
113
 
114
- #: includes/class-yit-plugin-panel.php:876
115
  msgid "The added file is not valid."
116
  msgstr "El archivo añadido no es válido."
117
 
118
- #: includes/class-yit-plugin-panel.php:877
119
  msgid "Sorry, import is disabled."
120
  msgstr "Lo siento, la importación está desactivada."
121
 
122
- #: includes/class-yit-plugin-panel.php:878
123
  msgid "Sorting successful."
124
  msgstr "Clasificación realizada con éxito"
125
 
126
- #: includes/class-yit-plugin-panel.php:1346
127
  msgid "We need your support"
128
  msgstr "Necesitamos tu apoyo"
129
 
130
- #: includes/class-yit-plugin-panel.php:1347
131
  msgid "to keep updating and improving the plugin. Please,"
132
  msgstr "para que podamos seguir actualizando y mejorando el plugin. Por favor,"
133
 
134
- #: includes/class-yit-plugin-panel.php:1349
135
  msgid "help us by leaving a good review"
136
  msgstr "ayúdanos dejando una buena valoración"
137
 
138
- #: includes/class-yit-plugin-panel.php:1350
139
  msgid ":) Thanks!"
140
  msgstr ":) ¡Gracias!"
141
 
@@ -551,7 +586,7 @@ msgid ""
551
  "file of your installation"
552
  msgstr ""
553
  "No hay archivo de registro disponible. Activa la depuración de WordPress "
554
- "añadiendo esto en el archivo %s de tu instalación"
555
 
556
  #: templates/sysinfo/tabs/error-log.php:105
557
  msgid "Copied!"
@@ -581,10 +616,6 @@ msgstr "WP_CACHE definido"
581
  msgid "Yes"
582
  msgstr "Sí"
583
 
584
- #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
585
- msgid "No"
586
- msgstr "No"
587
-
588
  #: templates/sysinfo/tabs/main.php:45
589
  msgid "External object cache"
590
  msgstr "Caché objeto externo"
@@ -594,33 +625,20 @@ msgid "Plugins Requirements"
594
  msgstr "Requerimientos de los plugins"
595
 
596
  #. translators: %s is the title of the post object.
597
- #: yit-functions.php:1823
598
  msgid "Are you sure you want to move \"%s\" to trash?"
599
  msgstr "¿Estás seguro de que quieres mover \"%s\" a la papelera?"
600
 
601
  #. translators: %s is the title of the post object.
602
- #: yit-functions.php:1825 yit-functions.php:1983
603
  msgid "Are you sure you want to delete \"%s\"?"
604
  msgstr "¿Estás seguro de que quieres borrar \"%s\"?"
605
 
606
- #: yit-functions.php:1825 yit-functions.php:1983
607
- msgid ""
608
- "This action cannot be undone and you will be not able to recover this data."
609
- msgstr "Esta acción no se puede revertir y no podrá recuperar estos datos."
610
-
611
- #: yit-functions.php:1891
612
- msgid "Confirm trash"
613
- msgstr "Confirmar el traslado a la papelera"
614
-
615
- #: yit-functions.php:1908 yit-functions.php:2035
616
- msgid "Confirm delete"
617
- msgstr "Confirmar el borrado"
618
-
619
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
620
  msgid "Further actions"
621
  msgstr "Otras acciones"
622
 
623
- #: yit-plugin.php:203
624
  msgid "License"
625
  msgstr "Licencia"
626
 
@@ -634,21 +652,51 @@ msgctxt "Elementor Widget - section title"
634
  msgid "%s - Options"
635
  msgstr "%s - Opciones"
636
 
637
- #: includes/builders/gutenberg/class-yith-gutenberg.php:147
638
  msgctxt "[gutenberg]: Category Name"
639
  msgid "YITH"
640
  msgstr "YITH"
641
 
642
- #: includes/class-yit-assets.php:131
643
  msgctxt "Button text"
644
  msgid "Confirm"
645
  msgstr "Confirmar"
646
 
647
- #: includes/class-yit-assets.php:132
648
  msgctxt "Button text"
649
  msgid "Cancel"
650
  msgstr "Cancelar"
651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  #: includes/class-yith-dashboard.php:96
653
  msgctxt "Plugin FW"
654
  msgid "View Changelog"
@@ -741,6 +789,17 @@ msgctxt "Tooltip in the \"Dimensions\" field"
741
  msgid "Link values together"
742
  msgstr "Enlazar valores juntos"
743
 
 
 
 
 
 
 
 
 
 
 
 
744
  #: templates/fields/onoff.php:28
745
  msgctxt "YES/NO button: use MAX 4 characters!"
746
  msgid "YES"
@@ -751,92 +810,160 @@ msgctxt "YES/NO button: use MAX 4 characters!"
751
  msgid "NO"
752
  msgstr "NO"
753
 
754
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  msgctxt "Post action"
756
  msgid "Preview"
757
  msgstr "Previsualizar"
758
 
759
- #: yit-functions.php:1846
760
  msgctxt "Post action"
761
  msgid "View"
762
  msgstr "Ver"
763
 
764
- #: yit-functions.php:1857
765
  msgctxt "Post action"
766
  msgid "Edit"
767
  msgstr "Editar"
768
 
769
- #: yit-functions.php:1865
770
  msgctxt "Post action"
771
  msgid "Duplicate"
772
  msgstr "Duplicar"
773
 
774
- #: yit-functions.php:1877
775
  msgctxt "Post action"
776
  msgid "Restore"
777
  msgstr "Restaurar"
778
 
779
- #: yit-functions.php:1885
780
  msgctxt "Post action"
781
  msgid "Trash"
782
  msgstr "A la papelera"
783
 
784
- #: yit-functions.php:1901
785
  msgctxt "Post action"
786
  msgid "Delete Permanently"
787
  msgstr "Borrar permanentemente"
788
 
789
- #: yit-functions.php:1893
790
- msgctxt "Trash confirmation action"
791
- msgid "Yes, trash"
792
- msgstr "Si, a la papelera"
793
-
794
- #: yit-functions.php:1910 yit-functions.php:2037
795
- msgctxt "Delete confirmation action"
796
- msgid "Yes, delete"
797
- msgstr "Si, borrar"
798
-
799
- #: yit-functions.php:1997
800
  msgctxt "Term action"
801
  msgid "View"
802
  msgstr "Ver"
803
 
804
- #: yit-functions.php:2007
805
  msgctxt "Term action"
806
  msgid "Edit"
807
  msgstr "Editar"
808
 
809
- #: yit-functions.php:2015
810
  msgctxt "Term action"
811
  msgid "Duplicate"
812
  msgstr "Duplicar"
813
 
814
- #: yit-functions.php:2028
815
  msgctxt "Term action"
816
  msgid "Delete"
817
  msgstr "Borrar"
818
 
819
- #: yit-plugin.php:84
820
  msgctxt "Plugin Row Meta"
821
  msgid "Live Demo"
822
  msgstr "Demostración en vivo"
823
 
824
- #: yit-plugin.php:88
825
  msgctxt "Plugin Row Meta"
826
  msgid "Documentation"
827
  msgstr "Documentación"
828
 
829
- #: yit-plugin.php:92
830
  msgctxt "Plugin Row Meta"
831
  msgid "Support"
832
  msgstr "Soporte"
833
 
834
- #: yit-plugin.php:96
835
  msgctxt "Plugin Row Meta"
836
  msgid "Premium version"
837
  msgstr "Versión premium"
838
 
839
- #: yit-plugin.php:199
840
  msgctxt "Action links"
841
  msgid "Settings"
842
  msgstr "Ajustes"
 
 
 
 
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-07-13 10:11:30+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 11:44:05+0000\n"
9
  "Language: es\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:146 yit-functions.php:1962
17
+ msgid "Confirm trash"
18
+ msgstr "Confirmar el traslado a la papelera"
19
+
20
+ #: includes/class-yit-assets.php:147
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+ "¿Estás seguro de que quieres mover a la papelera los elementos seleccionados?"
24
+
25
+ #: includes/class-yit-assets.php:149 includes/class-yit-assets.php:153
26
+ #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
27
+ #: yit-functions.php:1964 yit-functions.php:1982
28
+ msgid "No"
29
+ msgstr "No"
30
+
31
+ #: includes/class-yit-assets.php:150 yit-functions.php:1980
32
+ #: yit-functions.php:2108
33
+ msgid "Confirm delete"
34
+ msgstr "Confirmar el borrado"
35
+
36
+ #: includes/class-yit-assets.php:151
37
+ msgid "Are you sure you want to delete the selected items?"
38
+ msgstr "¿Estás seguro de que quieres borrar los elementos seleccionados?"
39
+
40
+ #: includes/class-yit-assets.php:151 yit-functions.php:1896
41
+ #: yit-functions.php:2056
42
+ msgid ""
43
+ "This action cannot be undone and you will not be able to recover this data."
44
+ msgstr "Esta acción no se puede revertir y no podrá recuperar estos datos."
45
+
46
+ #: includes/class-yit-assets.php:164
47
  msgid "Clear"
48
  msgstr "Borrar"
49
 
50
+ #: includes/class-yit-assets.php:165
51
  msgid "Clear color"
52
  msgstr "Borrar color"
53
 
54
+ #: includes/class-yit-assets.php:166
55
  msgid "Default"
56
  msgstr "Predeterminado"
57
 
58
+ #: includes/class-yit-assets.php:167
59
  msgid "Select default color"
60
  msgstr "Seleccionar color predeterminado"
61
 
62
+ #: includes/class-yit-assets.php:168
63
  msgid "Select Color"
64
  msgstr "Seleccionar color"
65
 
66
+ #: includes/class-yit-assets.php:169
67
  msgid "Color value"
68
  msgstr "Valor del color"
69
 
70
+ #: includes/class-yit-help-desk.php:152
71
+ msgid "There was an error with your request; please try again later."
72
+ msgstr ""
73
+ "Se ha producido un error en tu solicitud; inténtalo de nuevo más tarde."
74
+
75
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
76
  msgid "The changes you have made will be lost if you leave this page."
77
  msgstr "Los cambios que has hecho se perderán si abandonas esta página."
78
 
89
  msgid "How to install premium version"
90
  msgstr "Cómo instalar la versión premium"
91
 
92
+ #: includes/class-yit-plugin-panel.php:652
93
  #: includes/class-yit-plugin-subpanel.php:132
94
  msgid "Save Changes"
95
  msgstr "Guardar cambios"
96
 
97
+ #: includes/class-yit-plugin-panel.php:657
98
  #: includes/class-yit-plugin-subpanel.php:136
99
  #: templates/panel/woocommerce/woocommerce-form.php:14
100
  msgid ""
103
  "Si continúas con esta acción, restablecerás todas las opciones en esta "
104
  "página."
105
 
106
+ #: includes/class-yit-plugin-panel.php:657
107
  #: includes/class-yit-plugin-subpanel.php:136
108
  #: templates/panel/woocommerce/woocommerce-form.php:14
109
  msgid "Are you sure?"
110
  msgstr "¿Estás seguro?"
111
 
112
+ #: includes/class-yit-plugin-panel.php:661
113
  #: includes/class-yit-plugin-subpanel.php:139
114
  msgid "Reset to default"
115
  msgstr "Restablecer valores predeterminados"
116
 
117
+ #: includes/class-yit-plugin-panel.php:959
118
  msgid ""
119
  "The element you have entered already exists. Please, enter another name."
120
  msgstr ""
121
  "El elemento que has introducido ya existe. Por favor, introduce otro nombre."
122
 
123
+ #: includes/class-yit-plugin-panel.php:960
124
  msgid "Settings saved"
125
  msgstr "Ajustes guardados"
126
 
127
+ #: includes/class-yit-plugin-panel.php:961
128
  msgid "Settings reset"
129
  msgstr "Restablecer ajustes"
130
 
131
+ #: includes/class-yit-plugin-panel.php:962
132
  msgid "Element deleted correctly."
133
  msgstr "Elemento eliminado correctamente."
134
 
135
+ #: includes/class-yit-plugin-panel.php:963
136
+ #: includes/class-yit-plugin-panel.php:964
137
  msgid "Element updated correctly."
138
  msgstr "Elemento actualizado correctamente."
139
 
140
+ #: includes/class-yit-plugin-panel.php:965
141
  msgid "Database imported correctly."
142
  msgstr "Base de datos importada correctamente."
143
 
144
+ #: includes/class-yit-plugin-panel.php:966
145
  msgid "An error has occurred during import. Please try again."
146
  msgstr ""
147
  "Ha ocurrido un error durante la importación. Por favor, inténtalo de nuevo."
148
 
149
+ #: includes/class-yit-plugin-panel.php:967
150
  msgid "The added file is not valid."
151
  msgstr "El archivo añadido no es válido."
152
 
153
+ #: includes/class-yit-plugin-panel.php:968
154
  msgid "Sorry, import is disabled."
155
  msgstr "Lo siento, la importación está desactivada."
156
 
157
+ #: includes/class-yit-plugin-panel.php:969
158
  msgid "Sorting successful."
159
  msgstr "Clasificación realizada con éxito"
160
 
161
+ #: includes/class-yit-plugin-panel.php:1437
162
  msgid "We need your support"
163
  msgstr "Necesitamos tu apoyo"
164
 
165
+ #: includes/class-yit-plugin-panel.php:1438
166
  msgid "to keep updating and improving the plugin. Please,"
167
  msgstr "para que podamos seguir actualizando y mejorando el plugin. Por favor,"
168
 
169
+ #: includes/class-yit-plugin-panel.php:1440
170
  msgid "help us by leaving a good review"
171
  msgstr "ayúdanos dejando una buena valoración"
172
 
173
+ #: includes/class-yit-plugin-panel.php:1441
174
  msgid ":) Thanks!"
175
  msgstr ":) ¡Gracias!"
176
 
586
  "file of your installation"
587
  msgstr ""
588
  "No hay archivo de registro disponible. Activa la depuración de WordPress "
589
+ "añadiendo este código en el archivo %s de tu instalación"
590
 
591
  #: templates/sysinfo/tabs/error-log.php:105
592
  msgid "Copied!"
616
  msgid "Yes"
617
  msgstr "Sí"
618
 
 
 
 
 
619
  #: templates/sysinfo/tabs/main.php:45
620
  msgid "External object cache"
621
  msgstr "Caché objeto externo"
625
  msgstr "Requerimientos de los plugins"
626
 
627
  #. translators: %s is the title of the post object.
628
+ #: yit-functions.php:1894
629
  msgid "Are you sure you want to move \"%s\" to trash?"
630
  msgstr "¿Estás seguro de que quieres mover \"%s\" a la papelera?"
631
 
632
  #. translators: %s is the title of the post object.
633
+ #: yit-functions.php:1896 yit-functions.php:2056
634
  msgid "Are you sure you want to delete \"%s\"?"
635
  msgstr "¿Estás seguro de que quieres borrar \"%s\"?"
636
 
637
+ #: yit-functions.php:1994 yit-functions.php:2002 yit-functions.php:2119
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  msgid "Further actions"
639
  msgstr "Otras acciones"
640
 
641
+ #: yit-plugin.php:204
642
  msgid "License"
643
  msgstr "Licencia"
644
 
652
  msgid "%s - Options"
653
  msgstr "%s - Opciones"
654
 
655
+ #: includes/builders/gutenberg/class-yith-gutenberg.php:149
656
  msgctxt "[gutenberg]: Category Name"
657
  msgid "YITH"
658
  msgstr "YITH"
659
 
660
+ #: includes/class-yit-assets.php:134
661
  msgctxt "Button text"
662
  msgid "Confirm"
663
  msgstr "Confirmar"
664
 
665
+ #: includes/class-yit-assets.php:135
666
  msgctxt "Button text"
667
  msgid "Cancel"
668
  msgstr "Cancelar"
669
 
670
+ #: includes/class-yit-assets.php:148 yit-functions.php:1965
671
+ msgctxt "Trash confirmation action"
672
+ msgid "Yes, move to trash"
673
+ msgstr "Sí, mover a la papelera"
674
+
675
+ #: includes/class-yit-assets.php:152 yit-functions.php:1983
676
+ #: yit-functions.php:2110
677
+ msgctxt "Delete confirmation action"
678
+ msgid "Yes, delete"
679
+ msgstr "Si, borrar"
680
+
681
+ #: includes/class-yit-plugin-panel.php:488
682
+ msgctxt "Help tab name"
683
+ msgid "Help"
684
+ msgstr "Ayuda"
685
+
686
+ #. translators: 1. Plugin name.
687
+ #: includes/class-yit-plugin-panel.php:798
688
+ msgctxt "Help tab default title"
689
+ msgid "Thank you for purchasing %s!"
690
+ msgstr "¡Gracias por comprar %s!"
691
+
692
+ #: includes/class-yit-plugin-panel.php:799
693
+ msgctxt "Help tab default description"
694
+ msgid ""
695
+ "We want to help you to enjoy a wonderful experience with all our products."
696
+ msgstr ""
697
+ "Queremos ayudarte a disfrutar de una experiencia maravillosa con todos "
698
+ "nuestros productos."
699
+
700
  #: includes/class-yith-dashboard.php:96
701
  msgctxt "Plugin FW"
702
  msgid "View Changelog"
789
  msgid "Link values together"
790
  msgstr "Enlazar valores juntos"
791
 
792
+ #: templates/fields/image-dimensions.php:18
793
+ msgctxt "Image width field label"
794
+ msgid "Width"
795
+ msgstr ""
796
+
797
+ #: templates/fields/image-dimensions.php:23
798
+ #, fuzzy
799
+ msgctxt "Image height field label"
800
+ msgid "Height"
801
+ msgstr "Derecha"
802
+
803
  #: templates/fields/onoff.php:28
804
  msgctxt "YES/NO button: use MAX 4 characters!"
805
  msgid "YES"
810
  msgid "NO"
811
  msgstr "NO"
812
 
813
+ #. translators: 1. Url to EN playlist.
814
+ #: templates/panel/help-tab.php:87
815
+ msgctxt "Help tab view all video link"
816
+ msgid ""
817
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
818
+ "learn more >"
819
+ msgstr ""
820
+ "Consulta la <a href=\"%s\" target=\"_blank\">Lista de reproducción en "
821
+ "Youtube</a> para saber más >"
822
+
823
+ #: templates/panel/help-tab.php:94
824
+ msgctxt "Help tab Watch Videotutorials link"
825
+ msgid "Videos are also available in:"
826
+ msgstr "Los vídeos también están disponibles en:"
827
+
828
+ #: templates/panel/help-tab.php:137
829
+ msgctxt "Help tab Watch Videotutorials link"
830
+ msgid "Watch our videotutorials"
831
+ msgstr "Vea nuestros videotutoriales"
832
+
833
+ #: templates/panel/help-tab.php:140
834
+ msgctxt "Help tab Watch Videotutorials link"
835
+ msgid "We show you some use cases"
836
+ msgstr "Te mostramos algunos ejemplos de uso"
837
+
838
+ #: templates/panel/help-tab.php:124
839
+ msgctxt "Help tab Read Documentation link"
840
+ msgid "Read the documentation"
841
+ msgstr "Lee la documentación"
842
+
843
+ #: templates/panel/help-tab.php:127
844
+ msgctxt "Help tab Read Documentation link"
845
+ msgid "to learn from basics how it works"
846
+ msgstr "para aprender desde lo más básico cómo funciona"
847
+
848
+ #: templates/panel/help-tab.php:150
849
+ msgctxt "Help tab view FAQs link"
850
+ msgid "Check the FAQs"
851
+ msgstr "Comprueba los FAQ"
852
+
853
+ #: templates/panel/help-tab.php:153
854
+ msgctxt "Help tab view FAQs link"
855
+ msgid "to find answers to your doubts"
856
+ msgstr "para encontrar respuestas a tus dudas"
857
+
858
+ #: templates/panel/help-tab.php:169
859
+ msgctxt "Help tab FAQ title"
860
+ msgid "Last FAQs in our Help Center"
861
+ msgstr "Últimos FAQs en nuestro Centro de Ayuda"
862
+
863
+ #: templates/panel/help-tab.php:183
864
+ msgctxt "Help tab FAQ link"
865
+ msgid "View all FAQs >"
866
+ msgstr "Ver todos los FAQs >"
867
+
868
+ #: templates/panel/help-tab.php:192
869
+ msgctxt "Help tab submit ticket title"
870
+ msgid "Need help?"
871
+ msgstr "¿Necesitas ayuda?"
872
+
873
+ #: templates/panel/help-tab.php:195
874
+ msgctxt "Help tab submit ticket description"
875
+ msgid ""
876
+ "If you are experiencing some technical issue ask help to our developers. "
877
+ "Submit a ticket in our support desk and we will help you as soon as possible."
878
+ msgstr ""
879
+ "Si tienes algún problema técnico, pide ayuda a nuestros desarrolladores. "
880
+ "Envía un ticket en nuestro panel de soporte y te ayudaremos lo antes posible."
881
+
882
+ #: templates/panel/help-tab.php:203
883
+ msgctxt "Help tab submit ticket button"
884
+ msgid "Submit a ticket"
885
+ msgstr "Enviar ticket"
886
+
887
+ #: yit-functions.php:1908
888
  msgctxt "Post action"
889
  msgid "Preview"
890
  msgstr "Previsualizar"
891
 
892
+ #: yit-functions.php:1917
893
  msgctxt "Post action"
894
  msgid "View"
895
  msgstr "Ver"
896
 
897
+ #: yit-functions.php:1928
898
  msgctxt "Post action"
899
  msgid "Edit"
900
  msgstr "Editar"
901
 
902
+ #: yit-functions.php:1936
903
  msgctxt "Post action"
904
  msgid "Duplicate"
905
  msgstr "Duplicar"
906
 
907
+ #: yit-functions.php:1948
908
  msgctxt "Post action"
909
  msgid "Restore"
910
  msgstr "Restaurar"
911
 
912
+ #: yit-functions.php:1956
913
  msgctxt "Post action"
914
  msgid "Trash"
915
  msgstr "A la papelera"
916
 
917
+ #: yit-functions.php:1973
918
  msgctxt "Post action"
919
  msgid "Delete Permanently"
920
  msgstr "Borrar permanentemente"
921
 
922
+ #: yit-functions.php:2070
 
 
 
 
 
 
 
 
 
 
923
  msgctxt "Term action"
924
  msgid "View"
925
  msgstr "Ver"
926
 
927
+ #: yit-functions.php:2080
928
  msgctxt "Term action"
929
  msgid "Edit"
930
  msgstr "Editar"
931
 
932
+ #: yit-functions.php:2088
933
  msgctxt "Term action"
934
  msgid "Duplicate"
935
  msgstr "Duplicar"
936
 
937
+ #: yit-functions.php:2101
938
  msgctxt "Term action"
939
  msgid "Delete"
940
  msgstr "Borrar"
941
 
942
+ #: yit-plugin.php:85
943
  msgctxt "Plugin Row Meta"
944
  msgid "Live Demo"
945
  msgstr "Demostración en vivo"
946
 
947
+ #: yit-plugin.php:89
948
  msgctxt "Plugin Row Meta"
949
  msgid "Documentation"
950
  msgstr "Documentación"
951
 
952
+ #: yit-plugin.php:93
953
  msgctxt "Plugin Row Meta"
954
  msgid "Support"
955
  msgstr "Soporte"
956
 
957
+ #: yit-plugin.php:97
958
  msgctxt "Plugin Row Meta"
959
  msgid "Premium version"
960
  msgstr "Versión premium"
961
 
962
+ #: yit-plugin.php:200
963
  msgctxt "Action links"
964
  msgid "Settings"
965
  msgstr "Ajustes"
966
+
967
+ #~ msgctxt "Delete confirmation action"
968
+ #~ msgid "Yes, delete permanently"
969
+ #~ msgstr "Sí, borrar permanentemente"
plugin-fw/languages/yith-plugin-fw-it_IT.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-it_IT.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-20 06:53:10+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 07:27:22+0000\n"
9
  "Language: it\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,66 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Rimuovi"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Rimuovi colore"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Predefinito"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Seleziona il colore predefinito"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Seleziona il colore"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Valore del colore"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
43
 
@@ -54,12 +89,12 @@ msgstr "Impostazioni"
54
  msgid "How to install premium version"
55
  msgstr "Come installare la versione premium"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Salva modifiche"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -68,72 +103,72 @@ msgstr ""
68
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
69
  "reimpostate."
70
 
71
- #: includes/class-yit-plugin-panel.php:625
72
  #: includes/class-yit-plugin-subpanel.php:136
73
  #: templates/panel/woocommerce/woocommerce-form.php:14
74
  msgid "Are you sure?"
75
  msgstr "Sei sicuro?"
76
 
77
- #: includes/class-yit-plugin-panel.php:629
78
  #: includes/class-yit-plugin-subpanel.php:139
79
  msgid "Reset to default"
80
  msgstr "Ripristina configurazione predefinita"
81
 
82
- #: includes/class-yit-plugin-panel.php:868
83
  msgid ""
84
  "The element you have entered already exists. Please, enter another name."
85
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
86
 
87
- #: includes/class-yit-plugin-panel.php:869
88
  msgid "Settings saved"
89
  msgstr "Impostazioni salvate"
90
 
91
- #: includes/class-yit-plugin-panel.php:870
92
  msgid "Settings reset"
93
  msgstr "Impostazioni azzerate"
94
 
95
- #: includes/class-yit-plugin-panel.php:871
96
  msgid "Element deleted correctly."
97
  msgstr "Elemento rimosso correttamente."
98
 
99
- #: includes/class-yit-plugin-panel.php:872
100
- #: includes/class-yit-plugin-panel.php:873
101
  msgid "Element updated correctly."
102
  msgstr "Elemento aggiornato correttamente."
103
 
104
- #: includes/class-yit-plugin-panel.php:874
105
  msgid "Database imported correctly."
106
  msgstr "Database importato correttamente."
107
 
108
- #: includes/class-yit-plugin-panel.php:875
109
  msgid "An error has occurred during import. Please try again."
110
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
111
 
112
- #: includes/class-yit-plugin-panel.php:876
113
  msgid "The added file is not valid."
114
  msgstr "Il file aggiunto non è valido."
115
 
116
- #: includes/class-yit-plugin-panel.php:877
117
  msgid "Sorry, import is disabled."
118
  msgstr "Ci dispiace, l'importazione è disabilitata."
119
 
120
- #: includes/class-yit-plugin-panel.php:878
121
  msgid "Sorting successful."
122
  msgstr "Ordinamento effettuato con successo."
123
 
124
- #: includes/class-yit-plugin-panel.php:1346
125
  msgid "We need your support"
126
  msgstr "Abbiamo bisogno del tuo sostegno"
127
 
128
- #: includes/class-yit-plugin-panel.php:1347
129
  msgid "to keep updating and improving the plugin. Please,"
130
  msgstr "per poter continuare ad aggiornare e migliorare il plugin."
131
 
132
- #: includes/class-yit-plugin-panel.php:1349
133
  msgid "help us by leaving a good review"
134
  msgstr "Puoi darci una mano lasciando una recensione positiva"
135
 
136
- #: includes/class-yit-plugin-panel.php:1350
137
  msgid ":) Thanks!"
138
  msgstr ":) Grazie!"
139
 
@@ -581,10 +616,6 @@ msgstr "Defined WP_CACHE"
581
  msgid "Yes"
582
  msgstr "Sì"
583
 
584
- #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
585
- msgid "No"
586
- msgstr "No"
587
-
588
  #: templates/sysinfo/tabs/main.php:45
589
  msgid "External object cache"
590
  msgstr "External object cache"
@@ -594,35 +625,20 @@ msgid "Plugins Requirements"
594
  msgstr "Requisiti plugin"
595
 
596
  #. translators: %s is the title of the post object.
597
- #: yit-functions.php:1823
598
  msgid "Are you sure you want to move \"%s\" to trash?"
599
  msgstr "Sei sicuro di voler spostare \"%s\" nel cestino?"
600
 
601
  #. translators: %s is the title of the post object.
602
- #: yit-functions.php:1825 yit-functions.php:1983
603
  msgid "Are you sure you want to delete \"%s\"?"
604
  msgstr "Sei sicuro di voler eliminare \"%s\"?"
605
 
606
- #: yit-functions.php:1825 yit-functions.php:1983
607
- msgid ""
608
- "This action cannot be undone and you will be not able to recover this data."
609
- msgstr ""
610
- "Quest'azione non può essere annullata e non sarà possibile recuperare questi "
611
- "dati."
612
-
613
- #: yit-functions.php:1891
614
- msgid "Confirm trash"
615
- msgstr "Conferma eliminazione"
616
-
617
- #: yit-functions.php:1908 yit-functions.php:2035
618
- msgid "Confirm delete"
619
- msgstr "Conferma eliminazione"
620
-
621
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
622
  msgid "Further actions"
623
  msgstr "Altre azioni"
624
 
625
- #: yit-plugin.php:203
626
  msgid "License"
627
  msgstr "Chiave di licenza"
628
 
@@ -636,21 +652,51 @@ msgctxt "Elementor Widget - section title"
636
  msgid "%s - Options"
637
  msgstr "%s - Opzioni"
638
 
639
- #: includes/builders/gutenberg/class-yith-gutenberg.php:147
640
  msgctxt "[gutenberg]: Category Name"
641
  msgid "YITH"
642
  msgstr "YITH"
643
 
644
- #: includes/class-yit-assets.php:131
645
  msgctxt "Button text"
646
  msgid "Confirm"
647
  msgstr "Conferma"
648
 
649
- #: includes/class-yit-assets.php:132
650
  msgctxt "Button text"
651
  msgid "Cancel"
652
  msgstr "Annulla"
653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  #: includes/class-yith-dashboard.php:96
655
  msgctxt "Plugin FW"
656
  msgid "View Changelog"
@@ -744,6 +790,17 @@ msgctxt "Tooltip in the \"Dimensions\" field"
744
  msgid "Link values together"
745
  msgstr "Collega i valori"
746
 
 
 
 
 
 
 
 
 
 
 
 
747
  #: templates/fields/onoff.php:28
748
  msgctxt "YES/NO button: use MAX 4 characters!"
749
  msgid "YES"
@@ -754,92 +811,161 @@ msgctxt "YES/NO button: use MAX 4 characters!"
754
  msgid "NO"
755
  msgstr "NO"
756
 
757
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  msgctxt "Post action"
759
  msgid "Preview"
760
  msgstr "Anteprima"
761
 
762
- #: yit-functions.php:1846
763
  msgctxt "Post action"
764
  msgid "View"
765
  msgstr "Visualizza"
766
 
767
- #: yit-functions.php:1857
768
  msgctxt "Post action"
769
  msgid "Edit"
770
  msgstr "Modifica"
771
 
772
- #: yit-functions.php:1865
773
  msgctxt "Post action"
774
  msgid "Duplicate"
775
  msgstr "Duplica"
776
 
777
- #: yit-functions.php:1877
778
  msgctxt "Post action"
779
  msgid "Restore"
780
  msgstr "Ripristina"
781
 
782
- #: yit-functions.php:1885
783
  msgctxt "Post action"
784
  msgid "Trash"
785
  msgstr "Cestina"
786
 
787
- #: yit-functions.php:1901
788
  msgctxt "Post action"
789
  msgid "Delete Permanently"
790
  msgstr "Cancella definitivamente"
791
 
792
- #: yit-functions.php:1893
793
- msgctxt "Trash confirmation action"
794
- msgid "Yes, trash"
795
- msgstr "Sì, cestina"
796
-
797
- #: yit-functions.php:1910 yit-functions.php:2037
798
- msgctxt "Delete confirmation action"
799
- msgid "Yes, delete"
800
- msgstr "Sì, elimina"
801
-
802
- #: yit-functions.php:1997
803
  msgctxt "Term action"
804
  msgid "View"
805
  msgstr "Visualizza"
806
 
807
- #: yit-functions.php:2007
808
  msgctxt "Term action"
809
  msgid "Edit"
810
  msgstr "Modifica"
811
 
812
- #: yit-functions.php:2015
813
  msgctxt "Term action"
814
  msgid "Duplicate"
815
  msgstr "Duplica"
816
 
817
- #: yit-functions.php:2028
818
  msgctxt "Term action"
819
  msgid "Delete"
820
  msgstr "Elimina"
821
 
822
- #: yit-plugin.php:84
823
  msgctxt "Plugin Row Meta"
824
  msgid "Live Demo"
825
  msgstr "Live Demo"
826
 
827
- #: yit-plugin.php:88
828
  msgctxt "Plugin Row Meta"
829
  msgid "Documentation"
830
  msgstr "Documentazione"
831
 
832
- #: yit-plugin.php:92
833
  msgctxt "Plugin Row Meta"
834
  msgid "Support"
835
  msgstr "Assistenza"
836
 
837
- #: yit-plugin.php:96
838
  msgctxt "Plugin Row Meta"
839
  msgid "Premium version"
840
  msgstr "Versione premium"
841
 
842
- #: yit-plugin.php:199
843
  msgctxt "Action links"
844
  msgid "Settings"
845
  msgstr "Impostazioni"
 
 
 
 
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-07-13 10:11:30+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 08:19:01+0000\n"
9
  "Language: it\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:146 yit-functions.php:1962
17
+ msgid "Confirm trash"
18
+ msgstr "Conferma eliminazione"
19
+
20
+ #: includes/class-yit-assets.php:147
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr "Se sicuro di voler spostare nel cestino gli elementi selezionati?"
23
+
24
+ #: includes/class-yit-assets.php:149 includes/class-yit-assets.php:153
25
+ #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
26
+ #: yit-functions.php:1964 yit-functions.php:1982
27
+ msgid "No"
28
+ msgstr "No"
29
+
30
+ #: includes/class-yit-assets.php:150 yit-functions.php:1980
31
+ #: yit-functions.php:2108
32
+ msgid "Confirm delete"
33
+ msgstr "Conferma eliminazione"
34
+
35
+ #: includes/class-yit-assets.php:151
36
+ msgid "Are you sure you want to delete the selected items?"
37
+ msgstr "Se sicuro di voler eliminare gli elementi selezionati?"
38
+
39
+ #: includes/class-yit-assets.php:151 yit-functions.php:1896
40
+ #: yit-functions.php:2056
41
+ msgid ""
42
+ "This action cannot be undone and you will not be able to recover this data."
43
+ msgstr ""
44
+ "Quest'azione non può essere annullata e non sarà possibile recuperare questi "
45
+ "dati."
46
+
47
+ #: includes/class-yit-assets.php:164
48
  msgid "Clear"
49
  msgstr "Rimuovi"
50
 
51
+ #: includes/class-yit-assets.php:165
52
  msgid "Clear color"
53
  msgstr "Rimuovi colore"
54
 
55
+ #: includes/class-yit-assets.php:166
56
  msgid "Default"
57
  msgstr "Predefinito"
58
 
59
+ #: includes/class-yit-assets.php:167
60
  msgid "Select default color"
61
  msgstr "Seleziona il colore predefinito"
62
 
63
+ #: includes/class-yit-assets.php:168
64
  msgid "Select Color"
65
  msgstr "Seleziona il colore"
66
 
67
+ #: includes/class-yit-assets.php:169
68
  msgid "Color value"
69
  msgstr "Valore del colore"
70
 
71
+ #: includes/class-yit-help-desk.php:152
72
+ msgid "There was an error with your request; please try again later."
73
+ msgstr "Si è verificato un errore con la tua richiesta. Riprova più tardi."
74
+
75
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
76
  msgid "The changes you have made will be lost if you leave this page."
77
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
78
 
89
  msgid "How to install premium version"
90
  msgstr "Come installare la versione premium"
91
 
92
+ #: includes/class-yit-plugin-panel.php:652
93
  #: includes/class-yit-plugin-subpanel.php:132
94
  msgid "Save Changes"
95
  msgstr "Salva modifiche"
96
 
97
+ #: includes/class-yit-plugin-panel.php:657
98
  #: includes/class-yit-plugin-subpanel.php:136
99
  #: templates/panel/woocommerce/woocommerce-form.php:14
100
  msgid ""
103
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
104
  "reimpostate."
105
 
106
+ #: includes/class-yit-plugin-panel.php:657
107
  #: includes/class-yit-plugin-subpanel.php:136
108
  #: templates/panel/woocommerce/woocommerce-form.php:14
109
  msgid "Are you sure?"
110
  msgstr "Sei sicuro?"
111
 
112
+ #: includes/class-yit-plugin-panel.php:661
113
  #: includes/class-yit-plugin-subpanel.php:139
114
  msgid "Reset to default"
115
  msgstr "Ripristina configurazione predefinita"
116
 
117
+ #: includes/class-yit-plugin-panel.php:959
118
  msgid ""
119
  "The element you have entered already exists. Please, enter another name."
120
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
121
 
122
+ #: includes/class-yit-plugin-panel.php:960
123
  msgid "Settings saved"
124
  msgstr "Impostazioni salvate"
125
 
126
+ #: includes/class-yit-plugin-panel.php:961
127
  msgid "Settings reset"
128
  msgstr "Impostazioni azzerate"
129
 
130
+ #: includes/class-yit-plugin-panel.php:962
131
  msgid "Element deleted correctly."
132
  msgstr "Elemento rimosso correttamente."
133
 
134
+ #: includes/class-yit-plugin-panel.php:963
135
+ #: includes/class-yit-plugin-panel.php:964
136
  msgid "Element updated correctly."
137
  msgstr "Elemento aggiornato correttamente."
138
 
139
+ #: includes/class-yit-plugin-panel.php:965
140
  msgid "Database imported correctly."
141
  msgstr "Database importato correttamente."
142
 
143
+ #: includes/class-yit-plugin-panel.php:966
144
  msgid "An error has occurred during import. Please try again."
145
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
146
 
147
+ #: includes/class-yit-plugin-panel.php:967
148
  msgid "The added file is not valid."
149
  msgstr "Il file aggiunto non è valido."
150
 
151
+ #: includes/class-yit-plugin-panel.php:968
152
  msgid "Sorry, import is disabled."
153
  msgstr "Ci dispiace, l'importazione è disabilitata."
154
 
155
+ #: includes/class-yit-plugin-panel.php:969
156
  msgid "Sorting successful."
157
  msgstr "Ordinamento effettuato con successo."
158
 
159
+ #: includes/class-yit-plugin-panel.php:1437
160
  msgid "We need your support"
161
  msgstr "Abbiamo bisogno del tuo sostegno"
162
 
163
+ #: includes/class-yit-plugin-panel.php:1438
164
  msgid "to keep updating and improving the plugin. Please,"
165
  msgstr "per poter continuare ad aggiornare e migliorare il plugin."
166
 
167
+ #: includes/class-yit-plugin-panel.php:1440
168
  msgid "help us by leaving a good review"
169
  msgstr "Puoi darci una mano lasciando una recensione positiva"
170
 
171
+ #: includes/class-yit-plugin-panel.php:1441
172
  msgid ":) Thanks!"
173
  msgstr ":) Grazie!"
174
 
616
  msgid "Yes"
617
  msgstr "Sì"
618
 
 
 
 
 
619
  #: templates/sysinfo/tabs/main.php:45
620
  msgid "External object cache"
621
  msgstr "External object cache"
625
  msgstr "Requisiti plugin"
626
 
627
  #. translators: %s is the title of the post object.
628
+ #: yit-functions.php:1894
629
  msgid "Are you sure you want to move \"%s\" to trash?"
630
  msgstr "Sei sicuro di voler spostare \"%s\" nel cestino?"
631
 
632
  #. translators: %s is the title of the post object.
633
+ #: yit-functions.php:1896 yit-functions.php:2056
634
  msgid "Are you sure you want to delete \"%s\"?"
635
  msgstr "Sei sicuro di voler eliminare \"%s\"?"
636
 
637
+ #: yit-functions.php:1994 yit-functions.php:2002 yit-functions.php:2119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  msgid "Further actions"
639
  msgstr "Altre azioni"
640
 
641
+ #: yit-plugin.php:204
642
  msgid "License"
643
  msgstr "Chiave di licenza"
644
 
652
  msgid "%s - Options"
653
  msgstr "%s - Opzioni"
654
 
655
+ #: includes/builders/gutenberg/class-yith-gutenberg.php:149
656
  msgctxt "[gutenberg]: Category Name"
657
  msgid "YITH"
658
  msgstr "YITH"
659
 
660
+ #: includes/class-yit-assets.php:134
661
  msgctxt "Button text"
662
  msgid "Confirm"
663
  msgstr "Conferma"
664
 
665
+ #: includes/class-yit-assets.php:135
666
  msgctxt "Button text"
667
  msgid "Cancel"
668
  msgstr "Annulla"
669
 
670
+ #: includes/class-yit-assets.php:148 yit-functions.php:1965
671
+ msgctxt "Trash confirmation action"
672
+ msgid "Yes, move to trash"
673
+ msgstr "Sì, sposta nel cestino"
674
+
675
+ #: includes/class-yit-assets.php:152 yit-functions.php:1983
676
+ #: yit-functions.php:2110
677
+ msgctxt "Delete confirmation action"
678
+ msgid "Yes, delete"
679
+ msgstr "Sì, elimina"
680
+
681
+ #: includes/class-yit-plugin-panel.php:488
682
+ msgctxt "Help tab name"
683
+ msgid "Help"
684
+ msgstr "Help"
685
+
686
+ #. translators: 1. Plugin name.
687
+ #: includes/class-yit-plugin-panel.php:798
688
+ msgctxt "Help tab default title"
689
+ msgid "Thank you for purchasing %s!"
690
+ msgstr "Grazie per aver acquistato %s!"
691
+
692
+ #: includes/class-yit-plugin-panel.php:799
693
+ msgctxt "Help tab default description"
694
+ msgid ""
695
+ "We want to help you to enjoy a wonderful experience with all our products."
696
+ msgstr ""
697
+ "Vogliamo aiutarti ad avere un'esperienza fantastica con tutti i nostri "
698
+ "prodotti."
699
+
700
  #: includes/class-yith-dashboard.php:96
701
  msgctxt "Plugin FW"
702
  msgid "View Changelog"
790
  msgid "Link values together"
791
  msgstr "Collega i valori"
792
 
793
+ #: templates/fields/image-dimensions.php:18
794
+ msgctxt "Image width field label"
795
+ msgid "Width"
796
+ msgstr ""
797
+
798
+ #: templates/fields/image-dimensions.php:23
799
+ #, fuzzy
800
+ msgctxt "Image height field label"
801
+ msgid "Height"
802
+ msgstr "A destra"
803
+
804
  #: templates/fields/onoff.php:28
805
  msgctxt "YES/NO button: use MAX 4 characters!"
806
  msgid "YES"
811
  msgid "NO"
812
  msgstr "NO"
813
 
814
+ #. translators: 1. Url to EN playlist.
815
+ #: templates/panel/help-tab.php:87
816
+ msgctxt "Help tab view all video link"
817
+ msgid ""
818
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
819
+ "learn more >"
820
+ msgstr ""
821
+ "Per saperne di più, vedi la <a href=\"%s\" target=\"_blank\">Playlist "
822
+ "completa su Youtube</a>>"
823
+
824
+ #: templates/panel/help-tab.php:94
825
+ msgctxt "Help tab Watch Videotutorials link"
826
+ msgid "Videos are also available in:"
827
+ msgstr "I video sono disponibili anche in:"
828
+
829
+ #: templates/panel/help-tab.php:137
830
+ msgctxt "Help tab Watch Videotutorials link"
831
+ msgid "Watch our videotutorials"
832
+ msgstr "Guarda i nostri video tutorial"
833
+
834
+ #: templates/panel/help-tab.php:140
835
+ msgctxt "Help tab Watch Videotutorials link"
836
+ msgid "We show you some use cases"
837
+ msgstr "Ti mostriamo alcuni casi d'uso"
838
+
839
+ #: templates/panel/help-tab.php:124
840
+ msgctxt "Help tab Read Documentation link"
841
+ msgid "Read the documentation"
842
+ msgstr "Consulta la documentazione"
843
+
844
+ #: templates/panel/help-tab.php:127
845
+ msgctxt "Help tab Read Documentation link"
846
+ msgid "to learn from basics how it works"
847
+ msgstr "per imparare dalle basi come funziona"
848
+
849
+ #: templates/panel/help-tab.php:150
850
+ msgctxt "Help tab view FAQs link"
851
+ msgid "Check the FAQs"
852
+ msgstr "Controlla le FAQ"
853
+
854
+ #: templates/panel/help-tab.php:153
855
+ msgctxt "Help tab view FAQs link"
856
+ msgid "to find answers to your doubts"
857
+ msgstr "per trovare le risposte ai tuoi dubbi"
858
+
859
+ #: templates/panel/help-tab.php:169
860
+ msgctxt "Help tab FAQ title"
861
+ msgid "Last FAQs in our Help Center"
862
+ msgstr "Ultime FAQ nel nostro Centro Assistenza"
863
+
864
+ #: templates/panel/help-tab.php:183
865
+ msgctxt "Help tab FAQ link"
866
+ msgid "View all FAQs >"
867
+ msgstr "Vedi tutte le FAQ"
868
+
869
+ #: templates/panel/help-tab.php:192
870
+ msgctxt "Help tab submit ticket title"
871
+ msgid "Need help?"
872
+ msgstr "Ti serve aiuto?"
873
+
874
+ #: templates/panel/help-tab.php:195
875
+ msgctxt "Help tab submit ticket description"
876
+ msgid ""
877
+ "If you are experiencing some technical issue ask help to our developers. "
878
+ "Submit a ticket in our support desk and we will help you as soon as possible."
879
+ msgstr ""
880
+ "Se stai riscontrando problemi tecnici chiedi aiuto ai nostri sviluppatori. "
881
+ "Invia un ticket dalla nostra piattaforma di supporto e ti daremo assistenza "
882
+ "il più presto possibile."
883
+
884
+ #: templates/panel/help-tab.php:203
885
+ msgctxt "Help tab submit ticket button"
886
+ msgid "Submit a ticket"
887
+ msgstr "Invia un ticket"
888
+
889
+ #: yit-functions.php:1908
890
  msgctxt "Post action"
891
  msgid "Preview"
892
  msgstr "Anteprima"
893
 
894
+ #: yit-functions.php:1917
895
  msgctxt "Post action"
896
  msgid "View"
897
  msgstr "Visualizza"
898
 
899
+ #: yit-functions.php:1928
900
  msgctxt "Post action"
901
  msgid "Edit"
902
  msgstr "Modifica"
903
 
904
+ #: yit-functions.php:1936
905
  msgctxt "Post action"
906
  msgid "Duplicate"
907
  msgstr "Duplica"
908
 
909
+ #: yit-functions.php:1948
910
  msgctxt "Post action"
911
  msgid "Restore"
912
  msgstr "Ripristina"
913
 
914
+ #: yit-functions.php:1956
915
  msgctxt "Post action"
916
  msgid "Trash"
917
  msgstr "Cestina"
918
 
919
+ #: yit-functions.php:1973
920
  msgctxt "Post action"
921
  msgid "Delete Permanently"
922
  msgstr "Cancella definitivamente"
923
 
924
+ #: yit-functions.php:2070
 
 
 
 
 
 
 
 
 
 
925
  msgctxt "Term action"
926
  msgid "View"
927
  msgstr "Visualizza"
928
 
929
+ #: yit-functions.php:2080
930
  msgctxt "Term action"
931
  msgid "Edit"
932
  msgstr "Modifica"
933
 
934
+ #: yit-functions.php:2088
935
  msgctxt "Term action"
936
  msgid "Duplicate"
937
  msgstr "Duplica"
938
 
939
+ #: yit-functions.php:2101
940
  msgctxt "Term action"
941
  msgid "Delete"
942
  msgstr "Elimina"
943
 
944
+ #: yit-plugin.php:85
945
  msgctxt "Plugin Row Meta"
946
  msgid "Live Demo"
947
  msgstr "Live Demo"
948
 
949
+ #: yit-plugin.php:89
950
  msgctxt "Plugin Row Meta"
951
  msgid "Documentation"
952
  msgstr "Documentazione"
953
 
954
+ #: yit-plugin.php:93
955
  msgctxt "Plugin Row Meta"
956
  msgid "Support"
957
  msgstr "Assistenza"
958
 
959
+ #: yit-plugin.php:97
960
  msgctxt "Plugin Row Meta"
961
  msgid "Premium version"
962
  msgstr "Versione premium"
963
 
964
+ #: yit-plugin.php:200
965
  msgctxt "Action links"
966
  msgid "Settings"
967
  msgstr "Impostazioni"
968
+
969
+ #~ msgctxt "Delete confirmation action"
970
+ #~ msgid "Yes, delete permanently"
971
+ #~ msgstr "Sì, elimina definitivamente"
plugin-fw/languages/yith-plugin-fw-nl_NL.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-nl_NL.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-20 06:53:10+00:00\n"
8
- "PO-Revision-Date: 2021-05-17 13:15:16+0000\n"
9
  "Language: nl\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -13,31 +13,69 @@ msgstr ""
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgid "Clear"
18
  msgstr "Wissen"
19
 
20
- #: includes/class-yit-assets.php:144
21
  msgid "Clear color"
22
  msgstr "Kleur wissen"
23
 
24
- #: includes/class-yit-assets.php:145
25
  msgid "Default"
26
  msgstr "Standaard"
27
 
28
- #: includes/class-yit-assets.php:146
29
  msgid "Select default color"
30
  msgstr "Standaardkleur selecteren"
31
 
32
- #: includes/class-yit-assets.php:147
33
  msgid "Select Color"
34
  msgstr "Kleur selecteren"
35
 
36
- #: includes/class-yit-assets.php:148
37
  msgid "Color value"
38
  msgstr "Kleurwaarde"
39
 
40
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
 
41
  msgid "The changes you have made will be lost if you leave this page."
42
  msgstr "Als je deze pagina verlaat zullen alle wijzigingen verloren gaan."
43
 
@@ -54,12 +92,12 @@ msgstr "Instellingen"
54
  msgid "How to install premium version"
55
  msgstr "Hoe installeer ik de premium versie"
56
 
57
- #: includes/class-yit-plugin-panel.php:620
58
  #: includes/class-yit-plugin-subpanel.php:132
59
  msgid "Save Changes"
60
  msgstr "Wijzigingen opslaan"
61
 
62
- #: includes/class-yit-plugin-panel.php:625
63
  #: includes/class-yit-plugin-subpanel.php:136
64
  #: templates/panel/woocommerce/woocommerce-form.php:14
65
  msgid ""
@@ -67,72 +105,72 @@ msgid ""
67
  msgstr ""
68
  "Als je doorgaat met deze actie, zal je alle opties op deze pagina resetten."
69
 
70
- #: includes/class-yit-plugin-panel.php:625
71
  #: includes/class-yit-plugin-subpanel.php:136
72
  #: templates/panel/woocommerce/woocommerce-form.php:14
73
  msgid "Are you sure?"
74
  msgstr "Weet je het zeker?"
75
 
76
- #: includes/class-yit-plugin-panel.php:629
77
  #: includes/class-yit-plugin-subpanel.php:139
78
  msgid "Reset to default"
79
  msgstr "Resetten naar standaard"
80
 
81
- #: includes/class-yit-plugin-panel.php:868
82
  msgid ""
83
  "The element you have entered already exists. Please, enter another name."
84
  msgstr "Het element dat je hebt ingevoerd bestaat al. Voer een andere naam in."
85
 
86
- #: includes/class-yit-plugin-panel.php:869
87
  msgid "Settings saved"
88
  msgstr "Instellingen opgeslagen"
89
 
90
- #: includes/class-yit-plugin-panel.php:870
91
  msgid "Settings reset"
92
  msgstr "Instellingen resetten"
93
 
94
- #: includes/class-yit-plugin-panel.php:871
95
  msgid "Element deleted correctly."
96
  msgstr "Element juist verwijderd."
97
 
98
- #: includes/class-yit-plugin-panel.php:872
99
- #: includes/class-yit-plugin-panel.php:873
100
  msgid "Element updated correctly."
101
  msgstr "Element juist geüpdatet."
102
 
103
- #: includes/class-yit-plugin-panel.php:874
104
  msgid "Database imported correctly."
105
  msgstr "Database juist geïmporteerd."
106
 
107
- #: includes/class-yit-plugin-panel.php:875
108
  msgid "An error has occurred during import. Please try again."
109
  msgstr "Er is een fout opgetreden tijdens importeren. Probeer opnieuw."
110
 
111
- #: includes/class-yit-plugin-panel.php:876
112
  msgid "The added file is not valid."
113
  msgstr "Het toegevoegde bestand is niet geldig."
114
 
115
- #: includes/class-yit-plugin-panel.php:877
116
  msgid "Sorry, import is disabled."
117
  msgstr "Sorry, importeren is uitgeschakeld."
118
 
119
- #: includes/class-yit-plugin-panel.php:878
120
  msgid "Sorting successful."
121
  msgstr "Succesvol gesorteerd."
122
 
123
- #: includes/class-yit-plugin-panel.php:1346
124
  msgid "We need your support"
125
  msgstr "We hebben je hulp nodig"
126
 
127
- #: includes/class-yit-plugin-panel.php:1347
128
  msgid "to keep updating and improving the plugin. Please,"
129
  msgstr "om de plugin te blijven bijwerken en verbeteren. A.u.b.,"
130
 
131
- #: includes/class-yit-plugin-panel.php:1349
132
  msgid "help us by leaving a good review"
133
  msgstr "help ons door een goede beoordeling achter te laten"
134
 
135
- #: includes/class-yit-plugin-panel.php:1350
136
  msgid ":) Thanks!"
137
  msgstr ":) Bedankt!"
138
 
@@ -578,10 +616,6 @@ msgstr "Gedefinieerde WP_CACHE"
578
  msgid "Yes"
579
  msgstr "Ja"
580
 
581
- #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
582
- msgid "No"
583
- msgstr "Nee"
584
-
585
  #: templates/sysinfo/tabs/main.php:45
586
  msgid "External object cache"
587
  msgstr "Externe object cache"
@@ -591,35 +625,20 @@ msgid "Plugins Requirements"
591
  msgstr "Plugin benodigdheden"
592
 
593
  #. translators: %s is the title of the post object.
594
- #: yit-functions.php:1823
595
  msgid "Are you sure you want to move \"%s\" to trash?"
596
  msgstr "Weet je zeker dat je \"%s\" naar de prullenbak wilt verplaatsen?"
597
 
598
  #. translators: %s is the title of the post object.
599
- #: yit-functions.php:1825 yit-functions.php:1983
600
  msgid "Are you sure you want to delete \"%s\"?"
601
  msgstr "Weet je zeker dat je \"%s\" wilt verwijderen?"
602
 
603
- #: yit-functions.php:1825 yit-functions.php:1983
604
- msgid ""
605
- "This action cannot be undone and you will be not able to recover this data."
606
- msgstr ""
607
- "Deze actie kan niet ongedaan gemaakt worden and je zult deze gegevens niet "
608
- "kunnen herstellen."
609
-
610
- #: yit-functions.php:1891
611
- msgid "Confirm trash"
612
- msgstr "Verplaatsen naar prullenbak bevestigen"
613
-
614
- #: yit-functions.php:1908 yit-functions.php:2035
615
- msgid "Confirm delete"
616
- msgstr "Verwijderen bevestigen"
617
-
618
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
619
  msgid "Further actions"
620
  msgstr "Verdere acties"
621
 
622
- #: yit-plugin.php:203
623
  msgid "License"
624
  msgstr "Licentie"
625
 
@@ -633,21 +652,51 @@ msgctxt "Elementor Widget - section title"
633
  msgid "%s - Options"
634
  msgstr "%s - Opties"
635
 
636
- #: includes/builders/gutenberg/class-yith-gutenberg.php:147
637
  msgctxt "[gutenberg]: Category Name"
638
  msgid "YITH"
639
  msgstr "YITH"
640
 
641
- #: includes/class-yit-assets.php:131
642
  msgctxt "Button text"
643
  msgid "Confirm"
644
  msgstr "Bevestigen"
645
 
646
- #: includes/class-yit-assets.php:132
647
  msgctxt "Button text"
648
  msgid "Cancel"
649
  msgstr "Annuleren"
650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
651
  #: includes/class-yith-dashboard.php:96
652
  msgctxt "Plugin FW"
653
  msgid "View Changelog"
@@ -740,6 +789,17 @@ msgctxt "Tooltip in the \"Dimensions\" field"
740
  msgid "Link values together"
741
  msgstr "Waarden aan elkaar koppelen"
742
 
 
 
 
 
 
 
 
 
 
 
 
743
  #: templates/fields/onoff.php:28
744
  msgctxt "YES/NO button: use MAX 4 characters!"
745
  msgid "YES"
@@ -750,92 +810,161 @@ msgctxt "YES/NO button: use MAX 4 characters!"
750
  msgid "NO"
751
  msgstr "NEE"
752
 
753
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
  msgctxt "Post action"
755
  msgid "Preview"
756
  msgstr "Voorbeeld"
757
 
758
- #: yit-functions.php:1846
759
  msgctxt "Post action"
760
  msgid "View"
761
  msgstr "Bekijken"
762
 
763
- #: yit-functions.php:1857
764
  msgctxt "Post action"
765
  msgid "Edit"
766
  msgstr "Bewerken"
767
 
768
- #: yit-functions.php:1865
769
  msgctxt "Post action"
770
  msgid "Duplicate"
771
  msgstr "Dupliceren"
772
 
773
- #: yit-functions.php:1877
774
  msgctxt "Post action"
775
  msgid "Restore"
776
  msgstr "Herstellen"
777
 
778
- #: yit-functions.php:1885
779
  msgctxt "Post action"
780
  msgid "Trash"
781
  msgstr "Prullenbak"
782
 
783
- #: yit-functions.php:1901
784
  msgctxt "Post action"
785
  msgid "Delete Permanently"
786
  msgstr "Permanent verijwderen"
787
 
788
- #: yit-functions.php:1893
789
- msgctxt "Trash confirmation action"
790
- msgid "Yes, trash"
791
- msgstr "Ja, verplaatsen naar prullenbak"
792
-
793
- #: yit-functions.php:1910 yit-functions.php:2037
794
- msgctxt "Delete confirmation action"
795
- msgid "Yes, delete"
796
- msgstr "Ja, verwijderen"
797
-
798
- #: yit-functions.php:1997
799
  msgctxt "Term action"
800
  msgid "View"
801
  msgstr "Bekijken"
802
 
803
- #: yit-functions.php:2007
804
  msgctxt "Term action"
805
  msgid "Edit"
806
  msgstr "Bewerken"
807
 
808
- #: yit-functions.php:2015
809
  msgctxt "Term action"
810
  msgid "Duplicate"
811
  msgstr "Dupliceren"
812
 
813
- #: yit-functions.php:2028
814
  msgctxt "Term action"
815
  msgid "Delete"
816
  msgstr "Verwijderen"
817
 
818
- #: yit-plugin.php:84
819
  msgctxt "Plugin Row Meta"
820
  msgid "Live Demo"
821
  msgstr "Live Demo"
822
 
823
- #: yit-plugin.php:88
824
  msgctxt "Plugin Row Meta"
825
  msgid "Documentation"
826
  msgstr "Documentatie"
827
 
828
- #: yit-plugin.php:92
829
  msgctxt "Plugin Row Meta"
830
  msgid "Support"
831
  msgstr "Ondersteuning"
832
 
833
- #: yit-plugin.php:96
834
  msgctxt "Plugin Row Meta"
835
  msgid "Premium version"
836
  msgstr "Premium versie"
837
 
838
- #: yit-plugin.php:199
839
  msgctxt "Action links"
840
  msgid "Settings"
841
  msgstr "Instellingen"
 
 
 
 
4
  msgstr ""
5
  "Project-Id-Version: YITH Framework\n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-07-13 10:11:30+00:00\n"
8
+ "PO-Revision-Date: 2021-06-08 08:45:36+0000\n"
9
  "Language: nl\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
15
 
16
+ #: includes/class-yit-assets.php:146 yit-functions.php:1962
17
+ msgid "Confirm trash"
18
+ msgstr "Verplaatsen naar prullenbak bevestigen"
19
+
20
+ #: includes/class-yit-assets.php:147
21
+ msgid "Are you sure you want to trash the selected items?"
22
+ msgstr ""
23
+ "Weet je zeker dat je het geselecteerde item naar de prullenbak wilt "
24
+ "verplaatsen?"
25
+
26
+ #: includes/class-yit-assets.php:149 includes/class-yit-assets.php:153
27
+ #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
28
+ #: yit-functions.php:1964 yit-functions.php:1982
29
+ msgid "No"
30
+ msgstr "Nee"
31
+
32
+ #: includes/class-yit-assets.php:150 yit-functions.php:1980
33
+ #: yit-functions.php:2108
34
+ msgid "Confirm delete"
35
+ msgstr "Verwijderen bevestigen"
36
+
37
+ #: includes/class-yit-assets.php:151
38
+ msgid "Are you sure you want to delete the selected items?"
39
+ msgstr "Weet je zeker dat je de geselecteerde items wilt verwijderen?"
40
+
41
+ #: includes/class-yit-assets.php:151 yit-functions.php:1896
42
+ #: yit-functions.php:2056
43
+ msgid ""
44
+ "This action cannot be undone and you will not be able to recover this data."
45
+ msgstr ""
46
+ "Deze actie kan niet ongedaan gemaakt worden en je zult deze gegevens niet "
47
+ "kunnen herstellen."
48
+
49
+ #: includes/class-yit-assets.php:164
50
  msgid "Clear"
51
  msgstr "Wissen"
52
 
53
+ #: includes/class-yit-assets.php:165
54
  msgid "Clear color"
55
  msgstr "Kleur wissen"
56
 
57
+ #: includes/class-yit-assets.php:166
58
  msgid "Default"
59
  msgstr "Standaard"
60
 
61
+ #: includes/class-yit-assets.php:167
62
  msgid "Select default color"
63
  msgstr "Standaardkleur selecteren"
64
 
65
+ #: includes/class-yit-assets.php:168
66
  msgid "Select Color"
67
  msgstr "Kleur selecteren"
68
 
69
+ #: includes/class-yit-assets.php:169
70
  msgid "Color value"
71
  msgstr "Kleurwaarde"
72
 
73
+ #: includes/class-yit-help-desk.php:152
74
+ msgid "There was an error with your request; please try again later."
75
+ msgstr ""
76
+ "Er is een fout opgetreden met je verzoek, probeer het later opnieuw a.u.b."
77
+
78
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
79
  msgid "The changes you have made will be lost if you leave this page."
80
  msgstr "Als je deze pagina verlaat zullen alle wijzigingen verloren gaan."
81
 
92
  msgid "How to install premium version"
93
  msgstr "Hoe installeer ik de premium versie"
94
 
95
+ #: includes/class-yit-plugin-panel.php:652
96
  #: includes/class-yit-plugin-subpanel.php:132
97
  msgid "Save Changes"
98
  msgstr "Wijzigingen opslaan"
99
 
100
+ #: includes/class-yit-plugin-panel.php:657
101
  #: includes/class-yit-plugin-subpanel.php:136
102
  #: templates/panel/woocommerce/woocommerce-form.php:14
103
  msgid ""
105
  msgstr ""
106
  "Als je doorgaat met deze actie, zal je alle opties op deze pagina resetten."
107
 
108
+ #: includes/class-yit-plugin-panel.php:657
109
  #: includes/class-yit-plugin-subpanel.php:136
110
  #: templates/panel/woocommerce/woocommerce-form.php:14
111
  msgid "Are you sure?"
112
  msgstr "Weet je het zeker?"
113
 
114
+ #: includes/class-yit-plugin-panel.php:661
115
  #: includes/class-yit-plugin-subpanel.php:139
116
  msgid "Reset to default"
117
  msgstr "Resetten naar standaard"
118
 
119
+ #: includes/class-yit-plugin-panel.php:959
120
  msgid ""
121
  "The element you have entered already exists. Please, enter another name."
122
  msgstr "Het element dat je hebt ingevoerd bestaat al. Voer een andere naam in."
123
 
124
+ #: includes/class-yit-plugin-panel.php:960
125
  msgid "Settings saved"
126
  msgstr "Instellingen opgeslagen"
127
 
128
+ #: includes/class-yit-plugin-panel.php:961
129
  msgid "Settings reset"
130
  msgstr "Instellingen resetten"
131
 
132
+ #: includes/class-yit-plugin-panel.php:962
133
  msgid "Element deleted correctly."
134
  msgstr "Element juist verwijderd."
135
 
136
+ #: includes/class-yit-plugin-panel.php:963
137
+ #: includes/class-yit-plugin-panel.php:964
138
  msgid "Element updated correctly."
139
  msgstr "Element juist geüpdatet."
140
 
141
+ #: includes/class-yit-plugin-panel.php:965
142
  msgid "Database imported correctly."
143
  msgstr "Database juist geïmporteerd."
144
 
145
+ #: includes/class-yit-plugin-panel.php:966
146
  msgid "An error has occurred during import. Please try again."
147
  msgstr "Er is een fout opgetreden tijdens importeren. Probeer opnieuw."
148
 
149
+ #: includes/class-yit-plugin-panel.php:967
150
  msgid "The added file is not valid."
151
  msgstr "Het toegevoegde bestand is niet geldig."
152
 
153
+ #: includes/class-yit-plugin-panel.php:968
154
  msgid "Sorry, import is disabled."
155
  msgstr "Sorry, importeren is uitgeschakeld."
156
 
157
+ #: includes/class-yit-plugin-panel.php:969
158
  msgid "Sorting successful."
159
  msgstr "Succesvol gesorteerd."
160
 
161
+ #: includes/class-yit-plugin-panel.php:1437
162
  msgid "We need your support"
163
  msgstr "We hebben je hulp nodig"
164
 
165
+ #: includes/class-yit-plugin-panel.php:1438
166
  msgid "to keep updating and improving the plugin. Please,"
167
  msgstr "om de plugin te blijven bijwerken en verbeteren. A.u.b.,"
168
 
169
+ #: includes/class-yit-plugin-panel.php:1440
170
  msgid "help us by leaving a good review"
171
  msgstr "help ons door een goede beoordeling achter te laten"
172
 
173
+ #: includes/class-yit-plugin-panel.php:1441
174
  msgid ":) Thanks!"
175
  msgstr ":) Bedankt!"
176
 
616
  msgid "Yes"
617
  msgstr "Ja"
618
 
 
 
 
 
619
  #: templates/sysinfo/tabs/main.php:45
620
  msgid "External object cache"
621
  msgstr "Externe object cache"
625
  msgstr "Plugin benodigdheden"
626
 
627
  #. translators: %s is the title of the post object.
628
+ #: yit-functions.php:1894
629
  msgid "Are you sure you want to move \"%s\" to trash?"
630
  msgstr "Weet je zeker dat je \"%s\" naar de prullenbak wilt verplaatsen?"
631
 
632
  #. translators: %s is the title of the post object.
633
+ #: yit-functions.php:1896 yit-functions.php:2056
634
  msgid "Are you sure you want to delete \"%s\"?"
635
  msgstr "Weet je zeker dat je \"%s\" wilt verwijderen?"
636
 
637
+ #: yit-functions.php:1994 yit-functions.php:2002 yit-functions.php:2119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  msgid "Further actions"
639
  msgstr "Verdere acties"
640
 
641
+ #: yit-plugin.php:204
642
  msgid "License"
643
  msgstr "Licentie"
644
 
652
  msgid "%s - Options"
653
  msgstr "%s - Opties"
654
 
655
+ #: includes/builders/gutenberg/class-yith-gutenberg.php:149
656
  msgctxt "[gutenberg]: Category Name"
657
  msgid "YITH"
658
  msgstr "YITH"
659
 
660
+ #: includes/class-yit-assets.php:134
661
  msgctxt "Button text"
662
  msgid "Confirm"
663
  msgstr "Bevestigen"
664
 
665
+ #: includes/class-yit-assets.php:135
666
  msgctxt "Button text"
667
  msgid "Cancel"
668
  msgstr "Annuleren"
669
 
670
+ #: includes/class-yit-assets.php:148 yit-functions.php:1965
671
+ msgctxt "Trash confirmation action"
672
+ msgid "Yes, move to trash"
673
+ msgstr "Ja, verplaatsen naar prullenbak"
674
+
675
+ #: includes/class-yit-assets.php:152 yit-functions.php:1983
676
+ #: yit-functions.php:2110
677
+ msgctxt "Delete confirmation action"
678
+ msgid "Yes, delete"
679
+ msgstr "Ja, verwijderen"
680
+
681
+ #: includes/class-yit-plugin-panel.php:488
682
+ msgctxt "Help tab name"
683
+ msgid "Help"
684
+ msgstr "Help"
685
+
686
+ #. translators: 1. Plugin name.
687
+ #: includes/class-yit-plugin-panel.php:798
688
+ msgctxt "Help tab default title"
689
+ msgid "Thank you for purchasing %s!"
690
+ msgstr "Bedankt voor het kopen van %s!"
691
+
692
+ #: includes/class-yit-plugin-panel.php:799
693
+ msgctxt "Help tab default description"
694
+ msgid ""
695
+ "We want to help you to enjoy a wonderful experience with all our products."
696
+ msgstr ""
697
+ "We willen je helpen om te genieten van de geweldige ervaringen met al onze "
698
+ "producten."
699
+
700
  #: includes/class-yith-dashboard.php:96
701
  msgctxt "Plugin FW"
702
  msgid "View Changelog"
789
  msgid "Link values together"
790
  msgstr "Waarden aan elkaar koppelen"
791
 
792
+ #: templates/fields/image-dimensions.php:18
793
+ msgctxt "Image width field label"
794
+ msgid "Width"
795
+ msgstr ""
796
+
797
+ #: templates/fields/image-dimensions.php:23
798
+ #, fuzzy
799
+ msgctxt "Image height field label"
800
+ msgid "Height"
801
+ msgstr "Rechts"
802
+
803
  #: templates/fields/onoff.php:28
804
  msgctxt "YES/NO button: use MAX 4 characters!"
805
  msgid "YES"
810
  msgid "NO"
811
  msgstr "NEE"
812
 
813
+ #. translators: 1. Url to EN playlist.
814
+ #: templates/panel/help-tab.php:87
815
+ msgctxt "Help tab view all video link"
816
+ msgid ""
817
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
818
+ "learn more >"
819
+ msgstr ""
820
+ "Bekijk de volledige <a href=\"%s\" target=\"_blank\">Playlist op Youtube</a> "
821
+ "om meer te weten te komen >"
822
+
823
+ #: templates/panel/help-tab.php:94
824
+ msgctxt "Help tab Watch Videotutorials link"
825
+ msgid "Videos are also available in:"
826
+ msgstr "Videos zijn ook beschikbaar in:"
827
+
828
+ #: templates/panel/help-tab.php:137
829
+ msgctxt "Help tab Watch Videotutorials link"
830
+ msgid "Watch our videotutorials"
831
+ msgstr "Bekijk onze video uitleg"
832
+
833
+ #: templates/panel/help-tab.php:140
834
+ msgctxt "Help tab Watch Videotutorials link"
835
+ msgid "We show you some use cases"
836
+ msgstr "We tonen je enkele gebruikscasussen"
837
+
838
+ #: templates/panel/help-tab.php:124
839
+ msgctxt "Help tab Read Documentation link"
840
+ msgid "Read the documentation"
841
+ msgstr "Lees de documentatie"
842
+
843
+ #: templates/panel/help-tab.php:127
844
+ msgctxt "Help tab Read Documentation link"
845
+ msgid "to learn from basics how it works"
846
+ msgstr "om vanaf de basis te leren hoe het werkt"
847
+
848
+ #: templates/panel/help-tab.php:150
849
+ msgctxt "Help tab view FAQs link"
850
+ msgid "Check the FAQs"
851
+ msgstr "Check de FAQs"
852
+
853
+ #: templates/panel/help-tab.php:153
854
+ msgctxt "Help tab view FAQs link"
855
+ msgid "to find answers to your doubts"
856
+ msgstr "om je twijfels te beantwoorden"
857
+
858
+ #: templates/panel/help-tab.php:169
859
+ msgctxt "Help tab FAQ title"
860
+ msgid "Last FAQs in our Help Center"
861
+ msgstr "Laatste FAQs in ons Help Center"
862
+
863
+ #: templates/panel/help-tab.php:183
864
+ msgctxt "Help tab FAQ link"
865
+ msgid "View all FAQs >"
866
+ msgstr "Bekijk alle FAQs >"
867
+
868
+ #: templates/panel/help-tab.php:192
869
+ msgctxt "Help tab submit ticket title"
870
+ msgid "Need help?"
871
+ msgstr "Hulp nodig?"
872
+
873
+ #: templates/panel/help-tab.php:195
874
+ msgctxt "Help tab submit ticket description"
875
+ msgid ""
876
+ "If you are experiencing some technical issue ask help to our developers. "
877
+ "Submit a ticket in our support desk and we will help you as soon as possible."
878
+ msgstr ""
879
+ "Als je een technisch probleem ondervindt, vraag dan hulp aan onze "
880
+ "developers. Je kunt een ticket indienen bij onze supportdesk en we helpen je "
881
+ "zo snel mogelijk verder."
882
+
883
+ #: templates/panel/help-tab.php:203
884
+ msgctxt "Help tab submit ticket button"
885
+ msgid "Submit a ticket"
886
+ msgstr "Verstuur een ticket"
887
+
888
+ #: yit-functions.php:1908
889
  msgctxt "Post action"
890
  msgid "Preview"
891
  msgstr "Voorbeeld"
892
 
893
+ #: yit-functions.php:1917
894
  msgctxt "Post action"
895
  msgid "View"
896
  msgstr "Bekijken"
897
 
898
+ #: yit-functions.php:1928
899
  msgctxt "Post action"
900
  msgid "Edit"
901
  msgstr "Bewerken"
902
 
903
+ #: yit-functions.php:1936
904
  msgctxt "Post action"
905
  msgid "Duplicate"
906
  msgstr "Dupliceren"
907
 
908
+ #: yit-functions.php:1948
909
  msgctxt "Post action"
910
  msgid "Restore"
911
  msgstr "Herstellen"
912
 
913
+ #: yit-functions.php:1956
914
  msgctxt "Post action"
915
  msgid "Trash"
916
  msgstr "Prullenbak"
917
 
918
+ #: yit-functions.php:1973
919
  msgctxt "Post action"
920
  msgid "Delete Permanently"
921
  msgstr "Permanent verijwderen"
922
 
923
+ #: yit-functions.php:2070
 
 
 
 
 
 
 
 
 
 
924
  msgctxt "Term action"
925
  msgid "View"
926
  msgstr "Bekijken"
927
 
928
+ #: yit-functions.php:2080
929
  msgctxt "Term action"
930
  msgid "Edit"
931
  msgstr "Bewerken"
932
 
933
+ #: yit-functions.php:2088
934
  msgctxt "Term action"
935
  msgid "Duplicate"
936
  msgstr "Dupliceren"
937
 
938
+ #: yit-functions.php:2101
939
  msgctxt "Term action"
940
  msgid "Delete"
941
  msgstr "Verwijderen"
942
 
943
+ #: yit-plugin.php:85
944
  msgctxt "Plugin Row Meta"
945
  msgid "Live Demo"
946
  msgstr "Live Demo"
947
 
948
+ #: yit-plugin.php:89
949
  msgctxt "Plugin Row Meta"
950
  msgid "Documentation"
951
  msgstr "Documentatie"
952
 
953
+ #: yit-plugin.php:93
954
  msgctxt "Plugin Row Meta"
955
  msgid "Support"
956
  msgstr "Ondersteuning"
957
 
958
+ #: yit-plugin.php:97
959
  msgctxt "Plugin Row Meta"
960
  msgid "Premium version"
961
  msgstr "Premium versie"
962
 
963
+ #: yit-plugin.php:200
964
  msgctxt "Action links"
965
  msgid "Settings"
966
  msgstr "Instellingen"
967
+
968
+ #~ msgctxt "Delete confirmation action"
969
+ #~ msgid "Yes, delete permanently"
970
+ #~ msgstr "Ja, permanent verwijderen"
plugin-fw/languages/yith-plugin-fw.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2021-05-20 06:53:10+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -24,31 +24,63 @@ msgstr ""
24
  "X-Textdomain-Support: yes\n"
25
  "X-Generator: grunt-wp-i18n 1.0.3\n"
26
 
27
- #: includes/class-yit-assets.php:143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  msgid "Clear"
29
  msgstr ""
30
 
31
- #: includes/class-yit-assets.php:144
32
  msgid "Clear color"
33
  msgstr ""
34
 
35
- #: includes/class-yit-assets.php:145
36
  msgid "Default"
37
  msgstr ""
38
 
39
- #: includes/class-yit-assets.php:146
40
  msgid "Select default color"
41
  msgstr ""
42
 
43
- #: includes/class-yit-assets.php:147
44
  msgid "Select Color"
45
  msgstr ""
46
 
47
- #: includes/class-yit-assets.php:148
48
  msgid "Color value"
49
  msgstr ""
50
 
51
- #: includes/class-yit-plugin-panel-woocommerce.php:419
 
 
 
 
52
  msgid "The changes you have made will be lost if you leave this page."
53
  msgstr ""
54
 
@@ -65,82 +97,82 @@ msgstr ""
65
  msgid "How to install premium version"
66
  msgstr ""
67
 
68
- #: includes/class-yit-plugin-panel.php:620
69
  #: includes/class-yit-plugin-subpanel.php:132
70
  msgid "Save Changes"
71
  msgstr ""
72
 
73
- #: includes/class-yit-plugin-panel.php:625
74
  #: includes/class-yit-plugin-subpanel.php:136
75
  #: templates/panel/woocommerce/woocommerce-form.php:14
76
  msgid "If you continue with this action, you will reset all options in this page."
77
  msgstr ""
78
 
79
- #: includes/class-yit-plugin-panel.php:625
80
  #: includes/class-yit-plugin-subpanel.php:136
81
  #: templates/panel/woocommerce/woocommerce-form.php:14
82
  msgid "Are you sure?"
83
  msgstr ""
84
 
85
- #: includes/class-yit-plugin-panel.php:629
86
  #: includes/class-yit-plugin-subpanel.php:139
87
  msgid "Reset to default"
88
  msgstr ""
89
 
90
- #: includes/class-yit-plugin-panel.php:868
91
  msgid "The element you have entered already exists. Please, enter another name."
92
  msgstr ""
93
 
94
- #: includes/class-yit-plugin-panel.php:869
95
  msgid "Settings saved"
96
  msgstr ""
97
 
98
- #: includes/class-yit-plugin-panel.php:870
99
  msgid "Settings reset"
100
  msgstr ""
101
 
102
- #: includes/class-yit-plugin-panel.php:871
103
  msgid "Element deleted correctly."
104
  msgstr ""
105
 
106
- #: includes/class-yit-plugin-panel.php:872
107
- #: includes/class-yit-plugin-panel.php:873
108
  msgid "Element updated correctly."
109
  msgstr ""
110
 
111
- #: includes/class-yit-plugin-panel.php:874
112
  msgid "Database imported correctly."
113
  msgstr ""
114
 
115
- #: includes/class-yit-plugin-panel.php:875
116
  msgid "An error has occurred during import. Please try again."
117
  msgstr ""
118
 
119
- #: includes/class-yit-plugin-panel.php:876
120
  msgid "The added file is not valid."
121
  msgstr ""
122
 
123
- #: includes/class-yit-plugin-panel.php:877
124
  msgid "Sorry, import is disabled."
125
  msgstr ""
126
 
127
- #: includes/class-yit-plugin-panel.php:878
128
  msgid "Sorting successful."
129
  msgstr ""
130
 
131
- #: includes/class-yit-plugin-panel.php:1346
132
  msgid "We need your support"
133
  msgstr ""
134
 
135
- #: includes/class-yit-plugin-panel.php:1347
136
  msgid "to keep updating and improving the plugin. Please,"
137
  msgstr ""
138
 
139
- #: includes/class-yit-plugin-panel.php:1349
140
  msgid "help us by leaving a good review"
141
  msgstr ""
142
 
143
- #: includes/class-yit-plugin-panel.php:1350
144
  msgid ":) Thanks!"
145
  msgstr ""
146
 
@@ -561,10 +593,6 @@ msgstr ""
561
  msgid "Yes"
562
  msgstr ""
563
 
564
- #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
565
- msgid "No"
566
- msgstr ""
567
-
568
  #: templates/sysinfo/tabs/main.php:45
569
  msgid "External object cache"
570
  msgstr ""
@@ -573,33 +601,21 @@ msgstr ""
573
  msgid "Plugins Requirements"
574
  msgstr ""
575
 
576
- #: yit-functions.php:1823
577
  #. translators: %s is the title of the post object.
578
  msgid "Are you sure you want to move \"%s\" to trash?"
579
  msgstr ""
580
 
581
- #: yit-functions.php:1825 yit-functions.php:1983
582
  #. translators: %s is the title of the post object.
583
  msgid "Are you sure you want to delete \"%s\"?"
584
  msgstr ""
585
 
586
- #: yit-functions.php:1825 yit-functions.php:1983
587
- msgid "This action cannot be undone and you will be not able to recover this data."
588
- msgstr ""
589
-
590
- #: yit-functions.php:1891
591
- msgid "Confirm trash"
592
- msgstr ""
593
-
594
- #: yit-functions.php:1908 yit-functions.php:2035
595
- msgid "Confirm delete"
596
- msgstr ""
597
-
598
- #: yit-functions.php:1921 yit-functions.php:1929 yit-functions.php:2046
599
  msgid "Further actions"
600
  msgstr ""
601
 
602
- #: yit-plugin.php:203
603
  msgid "License"
604
  msgstr ""
605
 
@@ -613,21 +629,48 @@ msgctxt "Elementor Widget - section title"
613
  msgid "%s - Options"
614
  msgstr ""
615
 
616
- #: includes/builders/gutenberg/class-yith-gutenberg.php:147
617
  msgctxt "[gutenberg]: Category Name"
618
  msgid "YITH"
619
  msgstr ""
620
 
621
- #: includes/class-yit-assets.php:131
622
  msgctxt "Button text"
623
  msgid "Confirm"
624
  msgstr ""
625
 
626
- #: includes/class-yit-assets.php:132
627
  msgctxt "Button text"
628
  msgid "Cancel"
629
  msgstr ""
630
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
631
  #: includes/class-yith-dashboard.php:96
632
  msgctxt "Plugin FW"
633
  msgid "View Changelog"
@@ -714,6 +757,16 @@ msgctxt "Tooltip in the \"Dimensions\" field"
714
  msgid "Link values together"
715
  msgstr ""
716
 
 
 
 
 
 
 
 
 
 
 
717
  #: templates/fields/onoff.php:28
718
  msgctxt "YES/NO button: use MAX 4 characters!"
719
  msgid "YES"
@@ -724,92 +777,153 @@ msgctxt "YES/NO button: use MAX 4 characters!"
724
  msgid "NO"
725
  msgstr ""
726
 
727
- #: yit-functions.php:1837
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728
  msgctxt "Post action"
729
  msgid "Preview"
730
  msgstr ""
731
 
732
- #: yit-functions.php:1846
733
  msgctxt "Post action"
734
  msgid "View"
735
  msgstr ""
736
 
737
- #: yit-functions.php:1857
738
  msgctxt "Post action"
739
  msgid "Edit"
740
  msgstr ""
741
 
742
- #: yit-functions.php:1865
743
  msgctxt "Post action"
744
  msgid "Duplicate"
745
  msgstr ""
746
 
747
- #: yit-functions.php:1877
748
  msgctxt "Post action"
749
  msgid "Restore"
750
  msgstr ""
751
 
752
- #: yit-functions.php:1885
753
  msgctxt "Post action"
754
  msgid "Trash"
755
  msgstr ""
756
 
757
- #: yit-functions.php:1901
758
  msgctxt "Post action"
759
  msgid "Delete Permanently"
760
  msgstr ""
761
 
762
- #: yit-functions.php:1893
763
- msgctxt "Trash confirmation action"
764
- msgid "Yes, trash"
765
- msgstr ""
766
-
767
- #: yit-functions.php:1910 yit-functions.php:2037
768
- msgctxt "Delete confirmation action"
769
- msgid "Yes, delete"
770
- msgstr ""
771
-
772
- #: yit-functions.php:1997
773
  msgctxt "Term action"
774
  msgid "View"
775
  msgstr ""
776
 
777
- #: yit-functions.php:2007
778
  msgctxt "Term action"
779
  msgid "Edit"
780
  msgstr ""
781
 
782
- #: yit-functions.php:2015
783
  msgctxt "Term action"
784
  msgid "Duplicate"
785
  msgstr ""
786
 
787
- #: yit-functions.php:2028
788
  msgctxt "Term action"
789
  msgid "Delete"
790
  msgstr ""
791
 
792
- #: yit-plugin.php:84
793
  msgctxt "Plugin Row Meta"
794
  msgid "Live Demo"
795
  msgstr ""
796
 
797
- #: yit-plugin.php:88
798
  msgctxt "Plugin Row Meta"
799
  msgid "Documentation"
800
  msgstr ""
801
 
802
- #: yit-plugin.php:92
803
  msgctxt "Plugin Row Meta"
804
  msgid "Support"
805
  msgstr ""
806
 
807
- #: yit-plugin.php:96
808
  msgctxt "Plugin Row Meta"
809
  msgid "Premium version"
810
  msgstr ""
811
 
812
- #: yit-plugin.php:199
813
  msgctxt "Action links"
814
  msgid "Settings"
815
  msgstr ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: YITH <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2021-07-13 10:11:30+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
24
  "X-Textdomain-Support: yes\n"
25
  "X-Generator: grunt-wp-i18n 1.0.3\n"
26
 
27
+ #: includes/class-yit-assets.php:146 yit-functions.php:1962
28
+ msgid "Confirm trash"
29
+ msgstr ""
30
+
31
+ #: includes/class-yit-assets.php:147
32
+ msgid "Are you sure you want to trash the selected items?"
33
+ msgstr ""
34
+
35
+ #: includes/class-yit-assets.php:149 includes/class-yit-assets.php:153
36
+ #: templates/sysinfo/tabs/main.php:40 templates/sysinfo/tabs/main.php:48
37
+ #: yit-functions.php:1964 yit-functions.php:1982
38
+ msgid "No"
39
+ msgstr ""
40
+
41
+ #: includes/class-yit-assets.php:150 yit-functions.php:1980
42
+ #: yit-functions.php:2108
43
+ msgid "Confirm delete"
44
+ msgstr ""
45
+
46
+ #: includes/class-yit-assets.php:151
47
+ msgid "Are you sure you want to delete the selected items?"
48
+ msgstr ""
49
+
50
+ #: includes/class-yit-assets.php:151 yit-functions.php:1896
51
+ #: yit-functions.php:2056
52
+ msgid "This action cannot be undone and you will not be able to recover this data."
53
+ msgstr ""
54
+
55
+ #: includes/class-yit-assets.php:164
56
  msgid "Clear"
57
  msgstr ""
58
 
59
+ #: includes/class-yit-assets.php:165
60
  msgid "Clear color"
61
  msgstr ""
62
 
63
+ #: includes/class-yit-assets.php:166
64
  msgid "Default"
65
  msgstr ""
66
 
67
+ #: includes/class-yit-assets.php:167
68
  msgid "Select default color"
69
  msgstr ""
70
 
71
+ #: includes/class-yit-assets.php:168
72
  msgid "Select Color"
73
  msgstr ""
74
 
75
+ #: includes/class-yit-assets.php:169
76
  msgid "Color value"
77
  msgstr ""
78
 
79
+ #: includes/class-yit-help-desk.php:152
80
+ msgid "There was an error with your request; please try again later."
81
+ msgstr ""
82
+
83
+ #: includes/class-yit-plugin-panel-woocommerce.php:423
84
  msgid "The changes you have made will be lost if you leave this page."
85
  msgstr ""
86
 
97
  msgid "How to install premium version"
98
  msgstr ""
99
 
100
+ #: includes/class-yit-plugin-panel.php:652
101
  #: includes/class-yit-plugin-subpanel.php:132
102
  msgid "Save Changes"
103
  msgstr ""
104
 
105
+ #: includes/class-yit-plugin-panel.php:657
106
  #: includes/class-yit-plugin-subpanel.php:136
107
  #: templates/panel/woocommerce/woocommerce-form.php:14
108
  msgid "If you continue with this action, you will reset all options in this page."
109
  msgstr ""
110
 
111
+ #: includes/class-yit-plugin-panel.php:657
112
  #: includes/class-yit-plugin-subpanel.php:136
113
  #: templates/panel/woocommerce/woocommerce-form.php:14
114
  msgid "Are you sure?"
115
  msgstr ""
116
 
117
+ #: includes/class-yit-plugin-panel.php:661
118
  #: includes/class-yit-plugin-subpanel.php:139
119
  msgid "Reset to default"
120
  msgstr ""
121
 
122
+ #: includes/class-yit-plugin-panel.php:959
123
  msgid "The element you have entered already exists. Please, enter another name."
124
  msgstr ""
125
 
126
+ #: includes/class-yit-plugin-panel.php:960
127
  msgid "Settings saved"
128
  msgstr ""
129
 
130
+ #: includes/class-yit-plugin-panel.php:961
131
  msgid "Settings reset"
132
  msgstr ""
133
 
134
+ #: includes/class-yit-plugin-panel.php:962
135
  msgid "Element deleted correctly."
136
  msgstr ""
137
 
138
+ #: includes/class-yit-plugin-panel.php:963
139
+ #: includes/class-yit-plugin-panel.php:964
140
  msgid "Element updated correctly."
141
  msgstr ""
142
 
143
+ #: includes/class-yit-plugin-panel.php:965
144
  msgid "Database imported correctly."
145
  msgstr ""
146
 
147
+ #: includes/class-yit-plugin-panel.php:966
148
  msgid "An error has occurred during import. Please try again."
149
  msgstr ""
150
 
151
+ #: includes/class-yit-plugin-panel.php:967
152
  msgid "The added file is not valid."
153
  msgstr ""
154
 
155
+ #: includes/class-yit-plugin-panel.php:968
156
  msgid "Sorry, import is disabled."
157
  msgstr ""
158
 
159
+ #: includes/class-yit-plugin-panel.php:969
160
  msgid "Sorting successful."
161
  msgstr ""
162
 
163
+ #: includes/class-yit-plugin-panel.php:1437
164
  msgid "We need your support"
165
  msgstr ""
166
 
167
+ #: includes/class-yit-plugin-panel.php:1438
168
  msgid "to keep updating and improving the plugin. Please,"
169
  msgstr ""
170
 
171
+ #: includes/class-yit-plugin-panel.php:1440
172
  msgid "help us by leaving a good review"
173
  msgstr ""
174
 
175
+ #: includes/class-yit-plugin-panel.php:1441
176
  msgid ":) Thanks!"
177
  msgstr ""
178
 
593
  msgid "Yes"
594
  msgstr ""
595
 
 
 
 
 
596
  #: templates/sysinfo/tabs/main.php:45
597
  msgid "External object cache"
598
  msgstr ""
601
  msgid "Plugins Requirements"
602
  msgstr ""
603
 
604
+ #: yit-functions.php:1894
605
  #. translators: %s is the title of the post object.
606
  msgid "Are you sure you want to move \"%s\" to trash?"
607
  msgstr ""
608
 
609
+ #: yit-functions.php:1896 yit-functions.php:2056
610
  #. translators: %s is the title of the post object.
611
  msgid "Are you sure you want to delete \"%s\"?"
612
  msgstr ""
613
 
614
+ #: yit-functions.php:1994 yit-functions.php:2002 yit-functions.php:2119
 
 
 
 
 
 
 
 
 
 
 
 
615
  msgid "Further actions"
616
  msgstr ""
617
 
618
+ #: yit-plugin.php:204
619
  msgid "License"
620
  msgstr ""
621
 
629
  msgid "%s - Options"
630
  msgstr ""
631
 
632
+ #: includes/builders/gutenberg/class-yith-gutenberg.php:149
633
  msgctxt "[gutenberg]: Category Name"
634
  msgid "YITH"
635
  msgstr ""
636
 
637
+ #: includes/class-yit-assets.php:134
638
  msgctxt "Button text"
639
  msgid "Confirm"
640
  msgstr ""
641
 
642
+ #: includes/class-yit-assets.php:135
643
  msgctxt "Button text"
644
  msgid "Cancel"
645
  msgstr ""
646
 
647
+ #: includes/class-yit-assets.php:148 yit-functions.php:1965
648
+ msgctxt "Trash confirmation action"
649
+ msgid "Yes, move to trash"
650
+ msgstr ""
651
+
652
+ #: includes/class-yit-assets.php:152 yit-functions.php:1983
653
+ #: yit-functions.php:2110
654
+ msgctxt "Delete confirmation action"
655
+ msgid "Yes, delete"
656
+ msgstr ""
657
+
658
+ #: includes/class-yit-plugin-panel.php:488
659
+ msgctxt "Help tab name"
660
+ msgid "Help"
661
+ msgstr ""
662
+
663
+ #: includes/class-yit-plugin-panel.php:798
664
+ #. translators: 1. Plugin name.
665
+ msgctxt "Help tab default title"
666
+ msgid "Thank you for purchasing %s!"
667
+ msgstr ""
668
+
669
+ #: includes/class-yit-plugin-panel.php:799
670
+ msgctxt "Help tab default description"
671
+ msgid "We want to help you to enjoy a wonderful experience with all our products."
672
+ msgstr ""
673
+
674
  #: includes/class-yith-dashboard.php:96
675
  msgctxt "Plugin FW"
676
  msgid "View Changelog"
757
  msgid "Link values together"
758
  msgstr ""
759
 
760
+ #: templates/fields/image-dimensions.php:18
761
+ msgctxt "Image width field label"
762
+ msgid "Width"
763
+ msgstr ""
764
+
765
+ #: templates/fields/image-dimensions.php:23
766
+ msgctxt "Image height field label"
767
+ msgid "Height"
768
+ msgstr ""
769
+
770
  #: templates/fields/onoff.php:28
771
  msgctxt "YES/NO button: use MAX 4 characters!"
772
  msgid "YES"
777
  msgid "NO"
778
  msgstr ""
779
 
780
+ #: templates/panel/help-tab.php:87
781
+ #. translators: 1. Url to EN playlist.
782
+ msgctxt "Help tab view all video link"
783
+ msgid ""
784
+ "Check the full <a href=\"%s\" target=\"_blank\">Playlist on Youtube</a> to "
785
+ "learn more >"
786
+ msgstr ""
787
+
788
+ #: templates/panel/help-tab.php:94
789
+ msgctxt "Help tab Watch Videotutorials link"
790
+ msgid "Videos are also available in:"
791
+ msgstr ""
792
+
793
+ #: templates/panel/help-tab.php:137
794
+ msgctxt "Help tab Watch Videotutorials link"
795
+ msgid "Watch our videotutorials"
796
+ msgstr ""
797
+
798
+ #: templates/panel/help-tab.php:140
799
+ msgctxt "Help tab Watch Videotutorials link"
800
+ msgid "We show you some use cases"
801
+ msgstr ""
802
+
803
+ #: templates/panel/help-tab.php:124
804
+ msgctxt "Help tab Read Documentation link"
805
+ msgid "Read the documentation"
806
+ msgstr ""
807
+
808
+ #: templates/panel/help-tab.php:127
809
+ msgctxt "Help tab Read Documentation link"
810
+ msgid "to learn from basics how it works"
811
+ msgstr ""
812
+
813
+ #: templates/panel/help-tab.php:150
814
+ msgctxt "Help tab view FAQs link"
815
+ msgid "Check the FAQs"
816
+ msgstr ""
817
+
818
+ #: templates/panel/help-tab.php:153
819
+ msgctxt "Help tab view FAQs link"
820
+ msgid "to find answers to your doubts"
821
+ msgstr ""
822
+
823
+ #: templates/panel/help-tab.php:169
824
+ msgctxt "Help tab FAQ title"
825
+ msgid "Last FAQs in our Help Center"
826
+ msgstr ""
827
+
828
+ #: templates/panel/help-tab.php:183
829
+ msgctxt "Help tab FAQ link"
830
+ msgid "View all FAQs >"
831
+ msgstr ""
832
+
833
+ #: templates/panel/help-tab.php:192
834
+ msgctxt "Help tab submit ticket title"
835
+ msgid "Need help?"
836
+ msgstr ""
837
+
838
+ #: templates/panel/help-tab.php:195
839
+ msgctxt "Help tab submit ticket description"
840
+ msgid ""
841
+ "If you are experiencing some technical issue ask help to our developers. "
842
+ "Submit a ticket in our support desk and we will help you as soon as "
843
+ "possible."
844
+ msgstr ""
845
+
846
+ #: templates/panel/help-tab.php:203
847
+ msgctxt "Help tab submit ticket button"
848
+ msgid "Submit a ticket"
849
+ msgstr ""
850
+
851
+ #: yit-functions.php:1908
852
  msgctxt "Post action"
853
  msgid "Preview"
854
  msgstr ""
855
 
856
+ #: yit-functions.php:1917
857
  msgctxt "Post action"
858
  msgid "View"
859
  msgstr ""
860
 
861
+ #: yit-functions.php:1928
862
  msgctxt "Post action"
863
  msgid "Edit"
864
  msgstr ""
865
 
866
+ #: yit-functions.php:1936
867
  msgctxt "Post action"
868
  msgid "Duplicate"
869
  msgstr ""
870
 
871
+ #: yit-functions.php:1948
872
  msgctxt "Post action"
873
  msgid "Restore"
874
  msgstr ""
875
 
876
+ #: yit-functions.php:1956
877
  msgctxt "Post action"
878
  msgid "Trash"
879
  msgstr ""
880
 
881
+ #: yit-functions.php:1973
882
  msgctxt "Post action"
883
  msgid "Delete Permanently"
884
  msgstr ""
885
 
886
+ #: yit-functions.php:2070
 
 
 
 
 
 
 
 
 
 
887
  msgctxt "Term action"
888
  msgid "View"
889
  msgstr ""
890
 
891
+ #: yit-functions.php:2080
892
  msgctxt "Term action"
893
  msgid "Edit"
894
  msgstr ""
895
 
896
+ #: yit-functions.php:2088
897
  msgctxt "Term action"
898
  msgid "Duplicate"
899
  msgstr ""
900
 
901
+ #: yit-functions.php:2101
902
  msgctxt "Term action"
903
  msgid "Delete"
904
  msgstr ""
905
 
906
+ #: yit-plugin.php:85
907
  msgctxt "Plugin Row Meta"
908
  msgid "Live Demo"
909
  msgstr ""
910
 
911
+ #: yit-plugin.php:89
912
  msgctxt "Plugin Row Meta"
913
  msgid "Documentation"
914
  msgstr ""
915
 
916
+ #: yit-plugin.php:93
917
  msgctxt "Plugin Row Meta"
918
  msgid "Support"
919
  msgstr ""
920
 
921
+ #: yit-plugin.php:97
922
  msgctxt "Plugin Row Meta"
923
  msgid "Premium version"
924
  msgstr ""
925
 
926
+ #: yit-plugin.php:200
927
  msgctxt "Action links"
928
  msgid "Settings"
929
  msgstr ""
plugin-fw/package.json ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "yith-plugin-framewowrk",
3
+ "version": "3.7.4",
4
+ "description": "YITH Plugin Framework",
5
+ "main": "Gruntfile.js",
6
+ "scripts": {
7
+ "build": "npm run -s blocks:build && npm run assets && npm run i18n",
8
+ "assets": "grunt assets",
9
+ "watch": "grunt watch",
10
+ "i18n": "npm run -s i18n:build && npm run -s i18n:translations",
11
+ "i18n:build": "grunt makepot",
12
+ "i18n:translations": "npm run -s i18n:download-translations && npm run -s i18n:update-po && npm run -s i18n:clean",
13
+ "i18n:download-translations": "node ./bin/download-translations.js",
14
+ "i18n:update-po": "grunt update_po",
15
+ "i18n:clean": "node ./bin/clean-language-files.js",
16
+ "phpcs": "grunt phpcs",
17
+ "env:start": "node ./tools/local-env/scripts/start.js",
18
+ "env:stop": "node ./tools/local-env/scripts/docker.js down",
19
+ "env:restart": "npm run env:stop && npm run env:start",
20
+ "env:clean": "node ./tools/local-env/scripts/docker.js down -v --remove-orphans",
21
+ "env:reset": "node ./tools/local-env/scripts/docker.js down --rmi all -v --remove-orphans",
22
+ "env:install": "node ./tools/local-env/scripts/install.js",
23
+ "env:cli": "node ./tools/local-env/scripts/docker.js run cli",
24
+ "blocks:watch": "wp-scripts start ./includes/builders/gutenberg/src/index.js --output-path=dist/gutenberg --progress --colors --watch --mode=development",
25
+ "blocks:build": "wp-scripts build ./includes/builders/gutenberg/src/index.js --output-path=dist/gutenberg --progress --colors",
26
+ "test:php": "node ./tools/local-env/scripts/docker.js run --rm phpunit phpunit"
27
+ },
28
+ "author": "YITH",
29
+ "license": "GPL-3.0+",
30
+ "keywords": [],
31
+ "devDependencies": {
32
+ "@wordpress/scripts": "^12.3.0",
33
+ "axios": "^0.21.1",
34
+ "dotenv": "^8.2.0",
35
+ "grunt": "^1.0.3",
36
+ "grunt-cli": "^1.3.2",
37
+ "grunt-contrib-jshint": "^2.0.0",
38
+ "grunt-contrib-uglify-es": "github:gruntjs/grunt-contrib-uglify#harmony",
39
+ "grunt-contrib-watch": "^1.1.0",
40
+ "grunt-phpcs": "^0.4.0",
41
+ "grunt-sass": "^3.1.0",
42
+ "grunt-wp-i18n": "^1.0.2",
43
+ "node-sass": "^4.0.0",
44
+ "wait-on": "^5.2.1"
45
+ },
46
+ "dependencies": {
47
+ "md5": "^2.3.0"
48
+ }
49
+ }
plugin-fw/phpcs.xml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="WordPress Coding Standards">
3
+ <description>YITH Plugin Framework - PHP_CodeSniffer ruleset.</description>
4
+
5
+ <file>.</file>
6
+
7
+ <!-- Exclude paths -->
8
+ <exclude-pattern>Gruntfile.js</exclude-pattern>
9
+ <exclude-pattern>/assets/*</exclude-pattern>
10
+ <exclude-pattern>/bin/*</exclude-pattern>
11
+ <exclude-pattern>/dist/*</exclude-pattern>
12
+ <exclude-pattern>/languages/*</exclude-pattern>
13
+ <exclude-pattern>*/node_modules/*</exclude-pattern>
14
+ <exclude-pattern>*/tests/*</exclude-pattern>
15
+ <exclude-pattern>*/tools/*</exclude-pattern>
16
+ <exclude-pattern>*/vendor/*</exclude-pattern>
17
+
18
+ <!-- Show progress, show the error codes for each message (source). -->
19
+ <arg value="ps"/>
20
+
21
+ <!-- Strip the filepaths in reports down to the relevant bit. -->
22
+ <arg name="basepath" value="./"/>
23
+
24
+ <!-- Check up to 8 files simultaneously. -->
25
+ <arg name="parallel" value="8"/>
26
+
27
+ <!-- Configs -->
28
+ <config name="minimum_supported_wp_version" value="5.2"/>
29
+ <!-- Check for cross-version support for PHP 5.6 and higher. -->
30
+ <config name="testVersion" value="5.6-"/>
31
+
32
+ <!-- Rules -->
33
+
34
+ <!-- WordPress -->
35
+ <rule ref="WordPress">
36
+ <exclude name="WordPress.DB.DirectDatabaseQuery.NoCaching" />
37
+ <exclude name="WordPress.DB.DirectDatabaseQuery.DirectQuery" />
38
+ <exclude name="WordPress.DB.DirectDatabaseQuery.SchemaChange" />
39
+ </rule>
40
+
41
+ <rule ref="WordPress.Security.ValidatedSanitizedInput">
42
+ <properties>
43
+ <property name="customSanitizingFunctions" type="array" value="wc_clean,wc_sanitize_tooltip,wc_format_decimal,wc_stock_amount,wc_sanitize_permalink,wc_sanitize_textarea"/>
44
+ </properties>
45
+ </rule>
46
+
47
+ <rule ref="WordPress.Security.EscapeOutput">
48
+ <properties>
49
+ <property name="customEscapingFunctions" type="array" value="wc_help_tip,wc_sanitize_tooltip,wc_selected,wc_kses_notice,wc_esc_json,wc_query_string_form_fields,wc_make_phone_clickable,yith_plugin_fw_html_data_to_string,yith_field_deps_data,yith_panel_field_deps_data"/>
50
+ </properties>
51
+ </rule>
52
+ </ruleset>
plugin-fw/phpunit.xml.dist ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <phpunit
3
+ bootstrap="tests/bootstrap.php"
4
+ backupGlobals="false"
5
+ colors="true"
6
+ convertErrorsToExceptions="true"
7
+ convertNoticesToExceptions="true"
8
+ convertWarningsToExceptions="true"
9
+ >
10
+ <testsuites>
11
+ <testsuite>
12
+ <directory suffix=".php">./tests/unit-tests</directory>
13
+ </testsuite>
14
+ </testsuites>
15
+ </phpunit>
plugin-fw/templates/fields/ajax-posts.php CHANGED
@@ -36,13 +36,18 @@ if ( $no_value ) {
36
  $value = array();
37
  }
38
 
39
- $default_data = array(
40
  'action' => 'yith_plugin_fw_json_search_posts',
41
  'placeholder' => __( 'Search Posts', 'yith-plugin-fw' ),
42
  'allow_clear' => false,
43
  );
44
- $data = wp_parse_args( $data, $default_data );
45
- $show_id = isset( $data['show_id'] ) && $data['show_id'];
 
 
 
 
 
46
 
47
  // Separate select2 needed data and other data.
48
  $select2_custom_attributes = array();
@@ -60,13 +65,22 @@ foreach ( $data as $d_key => $d_value ) {
60
  $data_selected = array();
61
  if ( ! empty( $value ) ) {
62
  if ( $multiple ) {
63
- $value = is_array( $value ) ? $value : explode( ',', $value );
64
- foreach ( $value as $_post_id ) {
65
- $data_selected[ $_post_id ] = get_the_title( $_post_id ) . ( $show_id ? " (#{$_post_id})" : '' );
66
- }
67
  } else {
68
- $_post_id = absint( $value );
69
- $data_selected[ $_post_id ] = get_the_title( $_post_id ) . ( $show_id ? " (#{$_post_id})" : '' );
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
  }
72
 
36
  $value = array();
37
  }
38
 
39
+ $default_data = array(
40
  'action' => 'yith_plugin_fw_json_search_posts',
41
  'placeholder' => __( 'Search Posts', 'yith-plugin-fw' ),
42
  'allow_clear' => false,
43
  );
44
+ $data = wp_parse_args( $data, $default_data );
45
+ $show_id = isset( $data['show_id'] ) && $data['show_id'];
46
+ $the_post_type = isset( $data['post_type'] ) ? $data['post_type'] : 'post';
47
+
48
+ if ( ! isset( $data['show_id'] ) && in_array( $data['action'], array( 'woocommerce_json_search_products', 'woocommerce_json_search_products_and_variations' ), true ) ) {
49
+ $show_id = true; // Set show_id to true by default if this is a WC product search, since it includes the product ID by default.
50
+ }
51
 
52
  // Separate select2 needed data and other data.
53
  $select2_custom_attributes = array();
65
  $data_selected = array();
66
  if ( ! empty( $value ) ) {
67
  if ( $multiple ) {
68
+ $value = is_array( $value ) ? $value : explode( ',', $value );
69
+ $selected_ids = array_filter( array_map( 'absint', $value ) );
 
 
70
  } else {
71
+ $selected_ids = array( absint( $value ) );
72
+ }
73
+
74
+ foreach ( $selected_ids as $selected_id ) {
75
+ $the_title = yith_plugin_fw_get_post_formatted_name(
76
+ $selected_id,
77
+ array(
78
+ 'post-type' => $the_post_type,
79
+ 'show-id' => $show_id,
80
+ )
81
+ );
82
+
83
+ $data_selected[ $selected_id ] = wp_strip_all_tags( $the_title );
84
  }
85
  }
86
 
plugin-fw/templates/fields/image-dimensions.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template for displaying the image-dimensions field
4
+ *
5
+ * @var array $field The field.
6
+ * @package YITH\PluginFramework\Templates\Fields
7
+ */
8
+
9
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
+
11
+ list ( $field_id, $class, $name, $value ) = yith_plugin_fw_extract( $field, 'id', 'class', 'name', 'value' );
12
+
13
+ $value = isset( $value ) && is_array( $value ) ? $value : array();
14
+
15
+ ?>
16
+ <div class="yith-plugin-fw-image-dimensions" id="<?php echo esc_attr( $field_id ); ?>">
17
+ <div class="yith-image-width">
18
+ <label for="<?php echo esc_attr( $name . '_width' ); ?>"><?php echo esc_html_x( 'Width', 'Image width field label', 'yith-plugin-fw' ); ?></label>
19
+ <input type="number" id="<?php echo esc_attr( $name . '_width' ); ?>" name="<?php echo esc_attr( $name . '[width]' ); ?>"
20
+ value="<?php echo isset( $value['width'] ) ? absint( $value['width'] ) : 0; ?>" step="1" min="0" />
21
+ </div>
22
+ <div class="yith-image-height">
23
+ <label for="<?php echo esc_attr( $name . '_height' ); ?>"><?php echo esc_html_x( 'Height', 'Image height field label', 'yith-plugin-fw' ); ?></label>
24
+ <input type="number" id="<?php echo esc_attr( $name . '_height' ); ?>" name="<?php echo esc_attr( $name . '[height]' ); ?>"
25
+ value="<?php echo isset( $value['height'] ) ? absint( $value['height'] ) : 0; ?>" step="1" min="0" />
26
+ </div>
27
+ </div>
plugin-fw/templates/fields/text-array.php CHANGED
@@ -8,28 +8,58 @@
8
 
9
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
 
11
- list ( $field_id, $name, $value, $fields, $size ) = yith_plugin_fw_extract( $field, 'id', 'name', 'value', 'fields', 'size' );
 
 
 
 
12
 
13
  $value = isset( $value ) && is_array( $value ) ? $value : array();
14
- ?>
15
- <table class="yith-plugin-fw-text-array-table">
16
- <?php foreach ( $fields as $field_name => $field_label ) : ?>
17
- <?php
18
- $current_name = "{$name}[{$field_name}]";
19
- $current_id = "{$field_id}_{$field_name}";
20
- $current_value = isset( $value[ $field_name ] ) ? $value[ $field_name ] : '';
21
- ?>
22
- <tr>
23
- <td><?php echo esc_html( $field_label ); ?></td>
24
- <td>
25
- <input type="text" id="<?php echo esc_attr( $current_id ); ?>"
26
- name="<?php echo esc_attr( $current_name ); ?>"
27
- value="<?php echo esc_attr( $current_value ); ?>"
28
- <?php if ( isset( $size ) ) : ?>
29
- style="width: <?php echo absint( $size ); ?>px"
30
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  />
32
- </td>
33
- </tr>
34
- <?php endforeach ?>
35
- </table>
 
8
 
9
  defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
10
 
11
+ list ( $field_id, $name, $value, $fields, $size, $inline ) = yith_plugin_fw_extract( $field, 'id', 'name', 'value', 'fields', 'size', 'inline' );
12
+
13
+ if ( empty( $fields ) ) {
14
+ return;
15
+ }
16
 
17
  $value = isset( $value ) && is_array( $value ) ? $value : array();
18
+
19
+ // Let's build the text array!
20
+ $text_array = array();
21
+ foreach ( $fields as $field_name => $single_field ) {
22
+ $text_array[ $field_name ]['label'] = $single_field;
23
+ $text_array[ $field_name ]['name'] = "{$name}[{$field_name}]";
24
+ $text_array[ $field_name ]['id'] = "{$field_id}_{$field_name}";
25
+ $text_array[ $field_name ]['value'] = isset( $value[ $field_name ] ) ? $value[ $field_name ] : '';
26
+ }
27
+
28
+ if ( empty( $inline ) ) : ?>
29
+
30
+ <table class="yith-plugin-fw-text-array-table">
31
+ <?php foreach ( $text_array as $key => $single ) : ?>
32
+ <tr>
33
+ <td><?php echo esc_html( $single['label'] ); ?></td>
34
+ <td>
35
+ <input type="text" id="<?php echo esc_attr( $single['id'] ); ?>"
36
+ name="<?php echo esc_attr( $single['name'] ); ?>"
37
+ value="<?php echo esc_attr( $single['value'] ); ?>"
38
+ <?php if ( isset( $size ) ) : ?>
39
+ style="width: <?php echo absint( $size ); ?>px"
40
+ <?php endif; ?>
41
+ />
42
+ </td>
43
+ </tr>
44
+ <?php endforeach ?>
45
+ </table>
46
+
47
+ <?php else : ?>
48
+
49
+ <div class="yith-plugin-fw-text-array-inline">
50
+ <?php foreach ( $text_array as $key => $single ) : ?>
51
+ <div class="yith-single-text"
52
+ <?php if ( isset( $size ) ) : ?>
53
+ style="width: <?php echo absint( $size ); ?>px"
54
+ <?php endif; ?>
55
+ >
56
+ <label for="<?php echo esc_attr( $single['id'] ); ?>"><?php echo esc_html( $single['label'] ); ?></label>
57
+ <input type="text" id="<?php echo esc_attr( $single['id'] ); ?>"
58
+ name="<?php echo esc_attr( $single['name'] ); ?>"
59
+ value="<?php echo esc_attr( $single['value'] ); ?>"
60
  />
61
+ </div>
62
+ <?php endforeach ?>
63
+ </div>
64
+
65
+ <?php endif; ?>
plugin-fw/templates/panel/help-tab.php ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Template for displaying the Help tab.
4
+ *
5
+ * @var array $options Array of options.
6
+ * @var string $current_tab The current tab.
7
+ * @var string $current_sub_tab The current sub-tab.
8
+ * @var array $latest_articles Latest HC articles.
9
+ *
10
+ * @package YITH\PluginFramework\Templates
11
+ */
12
+
13
+ defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
14
+
15
+ $current_locale = substr( get_user_locale(), 0, 2 );
16
+ $the_title = $options['title'];
17
+ $the_description = $options['description'];
18
+ $show_articles = $options['show_hc_articles'] && ! empty( $latest_articles );
19
+ $show_submit_ticket = $options['show_submit_ticket'] && $options['submit_ticket_url'];
20
+ $has_video = $options['main_video'] && ! empty( $options['main_video']['url'] );
21
+ $show_view_all_faq = ! ! $options['hc_url'];
22
+ $has_any_playlist = ! ! $options['playlists'];
23
+ $has_additional_links = $has_any_playlist || ! ! $options['doc_url'] || $show_view_all_faq;
24
+ $has_default_playlist = $options['playlists'] && ! empty( $options['playlists'] );
25
+
26
+ // search for correct video url.
27
+ $video_url = false;
28
+
29
+ if ( $has_video ) {
30
+ if ( is_array( $options['main_video']['url'] ) ) {
31
+ if ( ! empty( $options['main_video']['url'][ $current_locale ] ) ) {
32
+ $video_url = $options['main_video']['url'][ $current_locale ];
33
+ } elseif ( ! empty( $options['main_video']['url']['en'] ) ) {
34
+ $video_url = $options['main_video']['url']['en'];
35
+ }
36
+ } else {
37
+ $video_url = $options['main_video']['url'];
38
+ }
39
+ }
40
+
41
+ // search for correct playlist.
42
+ $default_playlist = false;
43
+
44
+ if ( $has_default_playlist ) {
45
+ if ( is_array( $options['playlists'] ) ) {
46
+ if ( ! empty( $options['playlists'][ $current_locale ] ) ) {
47
+ $default_playlist = $options['playlists'][ $current_locale ];
48
+ } elseif ( ! empty( $options['playlists']['en'] ) ) {
49
+ $default_playlist = $options['playlists']['en'];
50
+ }
51
+ } else {
52
+ $default_playlist = $options['playlists'];
53
+ }
54
+ }
55
+ ?>
56
+
57
+ <div id='yith_plugin_fw_panel_help_tab' class='yith-plugin-fw-panel-help-tab-container'>
58
+ <div class="yith-plugin-fw-panel-help-tab-content">
59
+ <?php if ( $the_title ) : ?>
60
+ <h2 class="yith-plugin-fw-panel-help-tab-title"><?php echo wp_kses_post( $the_title ); ?></h2>
61
+ <?php endif; ?>
62
+
63
+ <?php if ( $the_description ) : ?>
64
+ <p class="yith-plugin-fw-panel-tab-description">
65
+ <?php echo wp_kses_post( $the_description ); ?>
66
+ </p>
67
+ <?php endif; ?>
68
+
69
+ <?php if ( $has_video || $has_additional_links ) : ?>
70
+ <div class="row">
71
+ <?php if ( $video_url ) : ?>
72
+ <div class="yith-plugin-fw-help-tab-video <?php echo $has_additional_links ? 'column-left' : 'full-width'; ?>">
73
+ <?php if ( isset( $options['main_video']['desc'] ) ) : ?>
74
+ <p class="video-description"><?php echo wp_kses_post( $options['main_video']['desc'] ); ?></p>
75
+ <?php endif; ?>
76
+
77
+ <div class="video-container">
78
+ <iframe src="<?php echo esc_url( $video_url ); ?>"></iframe>
79
+ </div>
80
+
81
+ <?php if ( $has_any_playlist ) : ?>
82
+ <div class="video-caption">
83
+ <?php if ( $default_playlist ) : ?>
84
+ <p>
85
+ <?php
86
+ // translators: 1. Url to EN playlist.
87
+ echo wp_kses_post( sprintf( _x( 'Check the full <a href="%s" target="_blank">Playlist on Youtube</a> to learn more >', 'Help tab view all video link', 'yith-plugin-fw' ), $default_playlist ) );
88
+ ?>
89
+ </p>
90
+ <?php endif; ?>
91
+
92
+ <p>
93
+ <b>
94
+ <?php echo esc_html_x( 'Videos are also available in:', 'Help tab Watch Videotutorials link', 'yith-plugin-fw' ); ?>
95
+ </b>
96
+ <?php $first = true; ?>
97
+ <?php foreach ( $options['playlists'] as $lang => $url ) : ?>
98
+ <?php
99
+ if ( $url === $default_playlist ) {
100
+ continue;
101
+ }
102
+ ?>
103
+ <?php if ( ! $first ) : ?>
104
+ <span class="separator">|</span>
105
+ <?php endif; ?>
106
+
107
+ <a target="_blank" href="<?php echo esc_url( $url ); ?>"><?php echo esc_html( yit_get_language_from_locale( $lang, true ) ); ?></a>
108
+
109
+ <?php $first = false; ?>
110
+ <?php endforeach; ?>
111
+ </p>
112
+ </div>
113
+ <?php endif; ?>
114
+ </div>
115
+ <?php endif; ?>
116
+
117
+ <?php if ( $has_additional_links ) : ?>
118
+ <ul class="yith-plugin-fw-help-tab-actions <?php echo $video_url ? 'column-right' : 'full-width'; ?>">
119
+
120
+ <?php if ( $options['doc_url'] ) : ?>
121
+ <li class="read-documentation box-with-shadow">
122
+ <a target="_blank" href="<?php echo esc_url( $options['doc_url'] ); ?>">
123
+ <h4>
124
+ <?php echo esc_html_x( 'Read the documentation', 'Help tab Read Documentation link', 'yith-plugin-fw' ); ?>
125
+ </h4>
126
+ <p class="description">
127
+ <?php echo esc_html_x( 'to learn from basics how it works', 'Help tab Read Documentation link', 'yith-plugin-fw' ); ?>
128
+ </p>
129
+ </a>
130
+ </li>
131
+ <?php endif; ?>
132
+
133
+ <?php if ( $default_playlist ) : ?>
134
+ <li class="watch-videotutorials box-with-shadow">
135
+ <a target="_blank" href="<?php echo esc_url( $default_playlist ); ?>">
136
+ <h4>
137
+ <?php echo esc_html_x( 'Watch our videotutorials', 'Help tab Watch Videotutorials link', 'yith-plugin-fw' ); ?>
138
+ </h4>
139
+ <p class="description">
140
+ <?php echo esc_html_x( 'We show you some use cases', 'Help tab Watch Videotutorials link', 'yith-plugin-fw' ); ?>
141
+ </p>
142
+ </a>
143
+ </li>
144
+ <?php endif; ?>
145
+
146
+ <?php if ( $show_view_all_faq ) : ?>
147
+ <li class="check-faqs box-with-shadow">
148
+ <a target="_blank" href="<?php echo esc_url( $options['hc_url'] ); ?>">
149
+ <h4>
150
+ <?php echo esc_html_x( 'Check the FAQs', 'Help tab view FAQs link', 'yith-plugin-fw' ); ?>
151
+ </h4>
152
+ <p class="description">
153
+ <?php echo esc_html_x( 'to find answers to your doubts', 'Help tab view FAQs link', 'yith-plugin-fw' ); ?>
154
+ </p>
155
+ </a>
156
+ </li>
157
+ <?php endif; ?>
158
+
159
+ </ul>
160
+ <?php endif; ?>
161
+ </div>
162
+ <?php endif; ?>
163
+
164
+
165
+ <?php if ( $show_articles || $show_submit_ticket ) : ?>
166
+ <div class="row">
167
+ <?php if ( $show_articles ) : ?>
168
+ <div class="yith-plugin-fw-hc-articles <?php echo $show_submit_ticket ? 'column-left' : 'full-width'; ?>">
169
+ <h3 class="yith-plugin-fw-hc-articles-title"><?php echo esc_html_x( 'Last FAQs in our Help Center', 'Help tab FAQ title', 'yith-plugin-fw' ); ?></h3>
170
+
171
+ <ul class="yith-plugin-fw-hc-articles-list">
172
+ <?php foreach ( $latest_articles as $article ) : ?>
173
+ <li>
174
+ <a target="_blank" href="<?php echo esc_url( $article['url'] ); ?>">
175
+ <?php echo esc_html( $article['title'] ); ?>
176
+ </a>
177
+ </li>
178
+ <?php endforeach; ?>
179
+ </ul>
180
+
181
+ <?php if ( $show_view_all_faq ) : ?>
182
+ <a target="_blank" class="button button-secondary" href="<?php echo esc_url( $options['hc_url'] ); ?>">
183
+ <?php echo esc_html_x( 'View all FAQs >', 'Help tab FAQ link', 'yith-plugin-fw' ); ?>
184
+ </a>
185
+ <?php endif; ?>
186
+ </div>
187
+ <?php endif; ?>
188
+
189
+ <?php if ( $show_submit_ticket ) : ?>
190
+ <div class="yith-plugin-fw-submit-ticket <?php echo $show_articles ? 'column-right' : 'full-width'; ?>">
191
+ <div class="box-with-shadow">
192
+ <h3><?php echo esc_html_x( 'Need help?', 'Help tab submit ticket title', 'yith-plugin-fw' ); ?></h3>
193
+ <p>
194
+ <?php
195
+ echo esc_html_x(
196
+ 'If you are experiencing some technical issue ask help to our developers. Submit a ticket in our support desk and we will help you as soon as possible.',
197
+ 'Help tab submit ticket description',
198
+ 'yith-plugin-fw'
199
+ );
200
+ ?>
201
+ </p>
202
+ <a target="_blank" href="<?php echo esc_url( $options['submit_ticket_url'] ); ?>" class="yit-plugin-fw-submit-ticket-button button button-primary">
203
+ <?php echo esc_html_x( 'Submit a ticket', 'Help tab submit ticket button', 'yith-plugin-fw' ); ?>
204
+ </a>
205
+ </div>
206
+ </div>
207
+ <?php endif; ?>
208
+ <?php endif; ?>
209
+ </div>
210
+ </div>
211
+ </div>
plugin-fw/templates/panel/woocommerce/woocommerce-form.php CHANGED
@@ -29,7 +29,7 @@ $reset_warning = __( 'If you continue with this action, you will reset all optio
29
  </p>
30
 
31
  <?php if ( apply_filters( 'yit_framework_show_float_save_button', true ) ) : ?>
32
- <button id="yith-plugin-fw-float-save-button" class="yith-plugin-fw__button--primary yith-plugin-fw-animate__appear-from-bottom" data-default-label="<?php esc_attr_e( 'Save Options', 'yith-plugin-fw' ); ?>" data-saved-label="<?php esc_attr_e( 'Options Saved', 'yith-plugin-fw' ); ?>"><i class="yith-icon yith-icon-save"></i> <?php esc_html_e( 'Save Options', 'yith-plugin-fw' ); ?></button>
33
  <?php endif; ?>
34
  </form>
35
  <form id="plugin-fw-wc-reset" method="post">
29
  </p>
30
 
31
  <?php if ( apply_filters( 'yit_framework_show_float_save_button', true ) ) : ?>
32
+ <button id="yith-plugin-fw-float-save-button" class="button button-primary yith-plugin-fw-animate__appear-from-bottom" data-default-label="<?php esc_attr_e( 'Save Options', 'yith-plugin-fw' ); ?>" data-saved-label="<?php esc_attr_e( 'Options Saved', 'yith-plugin-fw' ); ?>"><i class="yith-icon yith-icon-save"></i> <?php esc_html_e( 'Save Options', 'yith-plugin-fw' ); ?></button>
33
  <?php endif; ?>
34
  </form>
35
  <form id="plugin-fw-wc-reset" method="post">
plugin-fw/tests/bootstrap.php ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
+ /**
3
+ * PHPUnit bootstrap file.
4
+ *
5
+ * @package YITH Plugin Framework
6
+ */
7
+
8
+ /**
9
+ * YITH_Plugin_FW_Unit_Tests_Bootstrap class
10
+ */
11
+ class YITH_Plugin_FW_Unit_Tests_Bootstrap {
12
+ /**
13
+ * Instance of the class
14
+ *
15
+ * @var YITH_Plugin_FW_Unit_Tests_Bootstrap
16
+ */
17
+ protected static $instance = null;
18
+
19
+ /**
20
+ * Directory where wordpress-tests-lib is installed.
21
+ *
22
+ * @var string
23
+ */
24
+ public $wp_tests_dir;
25
+
26
+ /**
27
+ * Testing directory
28
+ *
29
+ * @var string
30
+ */
31
+ public $tests_dir;
32
+
33
+ /**
34
+ * The plugin directory.
35
+ *
36
+ * @var string
37
+ */
38
+ public $plugin_dir;
39
+
40
+ /**
41
+ * WooCommerce directory.
42
+ *
43
+ * @var string
44
+ */
45
+ public $woocommerce_dir;
46
+
47
+ /**
48
+ * Singleton implementation
49
+ *
50
+ * @return YITH_Plugin_FW_Unit_Tests_Bootstrap
51
+ */
52
+ public static function instance() {
53
+ return ! is_null( self::$instance ) ? self::$instance : self::$instance = new self();
54
+ }
55
+
56
+ /**
57
+ * Setup the unit testing environment.
58
+ */
59
+ protected function __construct() {
60
+
61
+ ini_set( 'display_errors', 'on' );
62
+ error_reporting( E_ALL );
63
+
64
+ // Ensure server variable is set for WP email functions.
65
+ if ( ! isset( $_SERVER['SERVER_NAME'] ) ) {
66
+ $_SERVER['SERVER_NAME'] = 'localhost';
67
+ }
68
+
69
+ $this->tests_dir = dirname( __FILE__ );
70
+ $this->plugin_dir = dirname( $this->tests_dir, 2 );
71
+ $this->woocommerce_dir = dirname( $this->plugin_dir ) . '/woocommerce';
72
+ $this->wp_tests_dir = getenv( 'WP_TESTS_DIR' ) ? getenv( 'WP_TESTS_DIR' ) : ( rtrim( sys_get_temp_dir(), '/\\' ) . '/wordpress-tests-lib' );
73
+
74
+ define( 'YITH_PLUGIN_FRAMEWORK_TESTS_DIR', $this->tests_dir );
75
+
76
+ if ( ! file_exists( $this->wp_tests_dir . '/includes/functions.php' ) ) {
77
+ $this->message( "Could not find {$this->wp_tests_dir}/includes/functions.php, have you run [npm run env:install] ?" );
78
+ exit( 1 );
79
+ }
80
+
81
+ require_once $this->wp_tests_dir . '/includes/functions.php';
82
+
83
+ // load plugins.
84
+ tests_add_filter( 'muplugins_loaded', array( $this, 'load_plugins' ) );
85
+ tests_add_filter( 'setup_theme', array( $this, 'install_wc' ) );
86
+ tests_add_filter( 'setup_theme', array( $this, 'show_info' ), 20 );
87
+
88
+ // load the WP testing environment.
89
+ require_once $this->wp_tests_dir . '/includes/bootstrap.php';
90
+
91
+ // load testing framework.
92
+ $this->includes();
93
+ }
94
+
95
+ /**
96
+ * Load plugins
97
+ *
98
+ * @return void
99
+ */
100
+ public function load_plugins() {
101
+ require_once $this->woocommerce_dir . '/woocommerce.php';
102
+ require_once $this->plugin_dir . '/yith-plugin-fw-loader.php';
103
+ }
104
+
105
+ /**
106
+ * Install WooCommerce
107
+ *
108
+ * @return void
109
+ */
110
+ public function install_wc() {
111
+ // Clean existing install first.
112
+ define( 'WP_UNINSTALL_PLUGIN', true );
113
+ define( 'WC_REMOVE_ALL_DATA', true );
114
+ include $this->woocommerce_dir . '/uninstall.php';
115
+
116
+ WC_Install::install();
117
+
118
+ // Reload capabilities after install, see https://core.trac.wordpress.org/ticket/28374.
119
+ if ( version_compare( $GLOBALS['wp_version'], '4.7', '<' ) ) {
120
+ $GLOBALS['wp_roles']->reinit();
121
+ } else {
122
+ $GLOBALS['wp_roles'] = null;
123
+ wp_roles();
124
+ }
125
+
126
+ $this->message( 'Installing WooCommerce...' );
127
+ }
128
+
129
+ /**
130
+ * Include files
131
+ *
132
+ * @return void
133
+ */
134
+ public function includes() {
135
+ $helpers_dir = YITH_PLUGIN_FRAMEWORK_TESTS_DIR . '/framework/helpers';
136
+
137
+ require_once $helpers_dir . '/class-yith-plugin-fw-panels-helper.php';
138
+ }
139
+
140
+ /**
141
+ * Print a message
142
+ *
143
+ * @param string $message The message to be shown.
144
+ * @return void
145
+ */
146
+ public function message( $message ) {
147
+ echo $message . PHP_EOL; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
148
+ }
149
+
150
+ /**
151
+ * Show installation information
152
+ *
153
+ * @return void
154
+ */
155
+ public function show_info() {
156
+ $this->message( '' );
157
+ $this->message( 'I N S T A L L A T I O N I N F O :' );
158
+ $this->message( '> WP Version: ' . get_bloginfo( 'version', 'display' ) );
159
+ $this->message( '> WC Version: ' . get_plugin_data( $this->woocommerce_dir . '/woocommerce.php' )['Version'] );
160
+ $this->message( '> Plugin Dir: ' . $this->plugin_dir );
161
+ $this->message( '> ABSPATH: ' . ( defined( 'ABSPATH' ) ? ABSPATH : 'not defined!' ) );
162
+ $this->message( '' );
163
+ }
164
+
165
+ }
166
+
167
+ YITH_Plugin_FW_Unit_Tests_Bootstrap::instance();
plugin-fw/tests/framework/fixtures/panel-all-options.php ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Options for YITH Plugin Panel WooCommerce
4
+ *
5
+ * @package YITH Plugin Framework
6
+ */
7
+
8
+ return array(
9
+ 'ajax-customers' => array(
10
+ 'type' => 'ajax-customers',
11
+ 'value' => 1,
12
+ 'php_unit_expected' => 1,
13
+ ),
14
+
15
+ 'ajax-customers-multiple' => array(
16
+ 'type' => 'ajax-customers',
17
+ 'multiple' => true,
18
+ 'value' => array( 1, 2, 3 ),
19
+ 'php_unit_expected' => array( 1, 2, 3 ),
20
+ ),
21
+
22
+ 'ajax-posts' => array(
23
+ 'type' => 'ajax-posts',
24
+ 'value' => 1,
25
+ 'php_unit_expected' => 1,
26
+ ),
27
+
28
+ 'ajax-posts-multiple' => array(
29
+ 'type' => 'ajax-posts',
30
+ 'multiple' => true,
31
+ 'value' => array( 1, 2, 3 ),
32
+ 'php_unit_expected' => array( 1, 2, 3 ),
33
+ ),
34
+
35
+ 'ajax-products' => array(
36
+ 'type' => 'ajax-products',
37
+ 'value' => 1,
38
+ 'php_unit_expected' => 1,
39
+ ),
40
+
41
+ 'ajax-products-multiple' => array(
42
+ 'type' => 'ajax-products',
43
+ 'multiple' => true,
44
+ 'value' => array( 1, 2, 3 ),
45
+ 'php_unit_expected' => array( 1, 2, 3 ),
46
+ ),
47
+
48
+ 'ajax-terms' => array(
49
+ 'type' => 'ajax-terms',
50
+ 'value' => 1,
51
+ 'php_unit_expected' => 1,
52
+ ),
53
+
54
+ 'ajax-terms-multiple' => array(
55
+ 'type' => 'ajax-terms',
56
+ 'multiple' => true,
57
+ 'value' => array( 1, 2, 3 ),
58
+ 'php_unit_expected' => array( 1, 2, 3 ),
59
+ ),
60
+
61
+ 'checkbox' => array(
62
+ 'type' => 'checkbox',
63
+ 'value' => 1,
64
+ 'php_unit_expected' => 'yes',
65
+ ),
66
+
67
+ 'checkbox-off' => array(
68
+ 'type' => 'checkbox',
69
+ 'value' => 0,
70
+ 'php_unit_expected' => 'no',
71
+ ),
72
+
73
+ 'checkbox-array' => array(
74
+ 'type' => 'checkbox-array',
75
+ 'value' => array( 'one', 'two', 'three' ),
76
+ 'php_unit_expected' => array( 'one', 'two', 'three' ),
77
+ ),
78
+
79
+ 'colorpicker' => array(
80
+ 'type' => 'colorpicker',
81
+ 'value' => '#123456',
82
+ 'php_unit_expected' => '#123456',
83
+ ),
84
+
85
+ 'country-select' => array(
86
+ 'type' => 'country-select',
87
+ 'value' => 'US:NY',
88
+ 'php_unit_expected' => 'US:NY',
89
+ ),
90
+
91
+ 'date-format' => array(
92
+ 'type' => 'date-format',
93
+ 'value' => 'Y-m-d',
94
+ 'php_unit_expected' => 'Y-m-d',
95
+ ),
96
+
97
+ 'datepicker' => array(
98
+ 'type' => 'datepicker',
99
+ 'value' => '2020-12-25',
100
+ 'php_unit_expected' => '2020-12-25',
101
+ ),
102
+
103
+ 'dimensions' => array(
104
+ 'type' => 'dimensions',
105
+ 'value' => array(
106
+ 'unit' => 'px',
107
+ 'dimensions' => array(
108
+ 'top' => 10,
109
+ 'right' => 20,
110
+ 'bottom' => 10,
111
+ 'left' => 20,
112
+ ),
113
+ 'linked' => 'yes',
114
+ ),
115
+ 'php_unit_expected' => array(
116
+ 'unit' => 'px',
117
+ 'dimensions' => array(
118
+ 'top' => 10,
119
+ 'right' => 20,
120
+ 'bottom' => 10,
121
+ 'left' => 20,
122
+ ),
123
+ 'linked' => 'yes',
124
+ ),
125
+ ),
126
+
127
+ 'hidden' => array(
128
+ 'type' => 'hidden',
129
+ 'value' => 'This is a dummy test!',
130
+ 'php_unit_expected' => 'This is a dummy test!',
131
+ ),
132
+
133
+ 'icons' => array(
134
+ 'type' => 'icons',
135
+ 'value' => 'FontAwesome:music',
136
+ 'php_unit_expected' => 'FontAwesome:music',
137
+ ),
138
+
139
+ 'image-gallery' => array(
140
+ 'type' => 'image-gallery',
141
+ 'value' => '1,2,3',
142
+ 'php_unit_expected' => '1,2,3',
143
+ ),
144
+
145
+ 'multi-colorpicker' => array(
146
+ 'type' => 'multi-colorpicker',
147
+ 'value' => array( '#ffffff', '#000000' ),
148
+ 'php_unit_expected' => array( '#ffffff', '#000000' ),
149
+ ),
150
+
151
+ 'multi-select' => array(
152
+ 'type' => 'multi-select',
153
+ 'value' => array( 'one', 'two' ),
154
+ 'php_unit_expected' => array( 'one', 'two' ),
155
+ ),
156
+
157
+ 'number' => array(
158
+ 'type' => 'number',
159
+ 'value' => 10,
160
+ 'php_unit_expected' => 10,
161
+ ),
162
+
163
+ 'onoff' => array(
164
+ 'type' => 'onoff',
165
+ 'value' => 1,
166
+ 'php_unit_expected' => 'yes',
167
+ ),
168
+
169
+ 'onoff-off' => array(
170
+ 'type' => 'onoff',
171
+ 'value' => 0,
172
+ 'php_unit_expected' => 'no',
173
+ ),
174
+
175
+ 'password' => array(
176
+ 'type' => 'password',
177
+ 'value' => 'password',
178
+ 'php_unit_expected' => 'password',
179
+ ),
180
+
181
+ 'radio' => array(
182
+ 'type' => 'radio',
183
+ 'value' => 'one',
184
+ 'php_unit_expected' => 'one',
185
+ ),
186
+
187
+ 'select' => array(
188
+ 'type' => 'select',
189
+ 'value' => 'one',
190
+ 'php_unit_expected' => 'one',
191
+ ),
192
+
193
+ 'select-images' => array(
194
+ 'type' => 'select-images',
195
+ 'value' => 'one',
196
+ 'php_unit_expected' => 'one',
197
+ ),
198
+
199
+ 'slider' => array(
200
+ 'type' => 'slider',
201
+ 'value' => 50,
202
+ 'php_unit_expected' => 50,
203
+ ),
204
+
205
+ 'text' => array(
206
+ 'type' => 'text',
207
+ 'value' => 'This is a dummy test!',
208
+ 'php_unit_expected' => 'This is a dummy test!',
209
+ ),
210
+
211
+ 'text-array' => array(
212
+ 'type' => 'text-array',
213
+ 'value' => array('one', 'two', "Let's testing quotes and double quotes \""),
214
+ 'php_unit_expected' => array('one', 'two', "Let's testing quotes and double quotes \""),
215
+ ),
216
+
217
+ 'textarea' => array(
218
+ 'type' => 'textarea',
219
+ 'value' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
220
+ 'php_unit_expected' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
221
+ ),
222
+
223
+ 'textarea-codemirror' => array(
224
+ 'type' => 'textarea-codemirror',
225
+ 'value' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
226
+ 'php_unit_expected' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
227
+ ),
228
+
229
+ 'textarea-editor' => array(
230
+ 'type' => 'textarea-editor',
231
+ 'value' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
232
+ 'php_unit_expected' => "Let's testing quotes, double quotes \" and <h1>HTML tags</h1>",
233
+ ),
234
+
235
+ 'upload' => array(
236
+ 'type' => 'upload',
237
+ 'value' => 'http://example.com/image.jpg',
238
+ 'php_unit_expected' => 'http://example.com/image.jpg',
239
+ ),
240
+ );
plugin-fw/tests/framework/helpers/class-yith-plugin-fw-panels-helper.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Panels Helper
4
+ *
5
+ * @package YITH Plugin Framework
6
+ */
7
+
8
+ /**
9
+ * Plugin Panels Helper class.
10
+ */
11
+ class YITH_Plugin_FW_Panels_Helper {
12
+
13
+ /**
14
+ * The WooCommerce Panel page.
15
+ *
16
+ * @var string
17
+ */
18
+ public static $wc_panel_page = 'yith_plugin_fw_test_wc_panel';
19
+
20
+ /**
21
+ * Create WC Panel
22
+ *
23
+ * @return YIT_Plugin_Panel_WooCommerce
24
+ */
25
+ public static function create_wc_panel() {
26
+
27
+ $admin_tabs = array(
28
+ 'wc-panel' => 'WooCommerce Panel',
29
+ );
30
+
31
+ $args = array(
32
+ 'create_menu_page' => true,
33
+ 'parent_slug' => '',
34
+ 'page_title' => 'WooCommerce Panel',
35
+ 'menu_title' => 'WooCommerce Panel',
36
+ 'capability' => 'manage_options',
37
+ 'parent' => '',
38
+ 'parent_page' => 'yit_plugin_panel',
39
+ 'page' => self::$wc_panel_page,
40
+ 'admin-tabs' => $admin_tabs,
41
+ 'options-path' => YITH_PLUGIN_FRAMEWORK_TESTS_DIR . '/framework/plugin-options',
42
+ );
43
+
44
+ return new YIT_Plugin_Panel_WooCommerce( $args );
45
+ }
46
+
47
+ public static function init_vars_wc_panel_options_for_saving( $panel, $tab, $subtab = '' ) {
48
+
49
+ set_current_screen( 'yith-plugins_page_' . $panel->settings['page'] );
50
+ $_POST = array();
51
+ $_GET = array();
52
+
53
+ $_GET['page'] = $panel->settings['page'];
54
+ $_GET['tab'] = $tab;
55
+ $_GET['sub_tab'] = $subtab;
56
+ $_POST['yit_panel_wc_options_nonce'] = wp_create_nonce( 'yit_panel_wc_options_' . $panel->settings['page'] );
57
+
58
+ $prefix = $tab . '-';
59
+
60
+ $options = self::get_fixture( 'all-options' );
61
+ $new_options = array();
62
+
63
+ foreach ( $options as $key => $option ) {
64
+ $prefixed_key = $prefix . $key;
65
+ $value = $option['value'];
66
+ $_POST[ $prefixed_key ] = $value;
67
+
68
+ $new_options[ $prefixed_key ] = $option;
69
+ }
70
+
71
+ return $new_options;
72
+ }
73
+
74
+ /**
75
+ * Get a fixture
76
+ *
77
+ * @param string $fixture The fixture.
78
+ * @return array
79
+ */
80
+ public static function get_fixture( $fixture ) {
81
+ return include YITH_PLUGIN_FRAMEWORK_TESTS_DIR . '/framework/fixtures/panel-' . $fixture . '.php';
82
+ }
83
+ }
plugin-fw/tests/framework/plugin-options/wc-panel-options.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:disable WordPress.WP.GlobalVariablesOverride.Prohibited
2
+ /**
3
+ * Options for YITH Plugin Panel WooCommerce
4
+ *
5
+ * @package YITH Plugin Framework
6
+ */
7
+
8
+ $prefix = str_replace( '-options.php', '', basename( __FILE__ ) ) . '-';
9
+ $options = YITH_Plugin_FW_Panels_Helper::get_fixture( 'all-options' );
10
+ $fields = array();
11
+
12
+ $fields[ $prefix . 'general-options' ] = array(
13
+ 'title' => 'General',
14
+ 'type' => 'title',
15
+ 'id' => 'general-options',
16
+ );
17
+
18
+ foreach ( $options as $key => $values ) {
19
+ $type = $values['type'];
20
+ $prefixed_key = $prefix . $key;
21
+
22
+ $id_title = array(
23
+ 'id' => $prefixed_key,
24
+ 'title' => $prefixed_key,
25
+ );
26
+
27
+ $fields[ $prefixed_key ] = wp_parse_args( $values, $id_title );
28
+ $fields[ $prefixed_key ]['type'] = 'yith-field';
29
+ $fields[ $prefixed_key ]['yith-type'] = $type;
30
+ if ( isset( $fields[ $prefixed_key ]['value'] ) ) {
31
+ unset( $fields[ $prefixed_key ]['value'] );
32
+ }
33
+ }
34
+
35
+
36
+ $fields[ $prefix . 'general-options-end' ] = array(
37
+ 'type' => 'sectionend',
38
+ 'id' => 'general-options',
39
+ );
40
+
41
+ return array(
42
+ 'wc-panel' => $fields,
43
+ );
plugin-fw/tests/unit-tests/class-yith-plugin-fw-tests-plugin-panel-wc.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Test class for Plugin Panel WooCommerce
4
+ *
5
+ * @package YITH Plugin Framework
6
+ */
7
+
8
+ /**
9
+ * Class YITH_Plugin_FW_Tests_Plugin_Panel_WC
10
+ */
11
+ class YITH_Plugin_FW_Tests_Plugin_Panel_WC extends WP_UnitTestCase {
12
+
13
+ /**
14
+ * The panel.
15
+ *
16
+ * @var YIT_Plugin_Panel_WooCommerce
17
+ */
18
+ protected $panel;
19
+
20
+ /**
21
+ * Set Up
22
+ *
23
+ * @return void
24
+ */
25
+ public function setUp() {
26
+ $this->panel = YITH_Plugin_FW_Panels_Helper::create_wc_panel();
27
+
28
+ // Include admin functions to use woocommerce_update_options().
29
+ include_once WC_ABSPATH . '/includes/admin/wc-admin-functions.php';
30
+ }
31
+
32
+ /**
33
+ * Test simple tab with options.
34
+ */
35
+ public function test_simple_tab() {
36
+ $options = YITH_Plugin_FW_Panels_Helper::init_vars_wc_panel_options_for_saving( $this->panel, 'wc-panel' );
37
+
38
+ $this->panel->woocommerce_update_options();
39
+
40
+ foreach ( $options as $key => $option ) {
41
+ $value = get_option( $key );
42
+ $expected = $option['php_unit_expected'];
43
+ $message = sprintf( 'Test for %s [type: %s]', $key, $option['type'] );
44
+
45
+ $this->assertEquals( $expected, $value, $message );
46
+ }
47
+
48
+ }
49
+ }
plugin-fw/tools/local-env/docker/phpunit/Dockerfile ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM phpunit/phpunit:latest
2
+
3
+ RUN apk update && \
4
+ apk add --no-cache sqlite bash mariadb-client php7-mysqli subversion wget
5
+
6
+ RUN apk upgrade subversion
7
+
8
+ ENTRYPOINT []
9
+
10
+ WORKDIR /var/www/html/wp-content/plugins/yith-plugin-fw-loader/plugin-fw
11
+
12
+ CMD /bin/true
plugin-fw/tools/local-env/install-wp-tests.sh ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ if [ $# -lt 3 ]; then
4
+ echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation]"
5
+ exit 1
6
+ fi
7
+
8
+
9
+ echo "INSTALLING...";
10
+ DB_NAME=$1
11
+ DB_USER=$2
12
+ DB_PASS=$3
13
+ DB_HOST=${4-localhost}
14
+ WP_VERSION=${5-latest}
15
+ SKIP_DB_CREATE=${6-false}
16
+
17
+ TMPDIR=${TMPDIR-/tmp}
18
+ TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//")
19
+ WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib}
20
+ WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress/}
21
+
22
+ download() {
23
+ if [ `which curl` ]; then
24
+ curl -s "$1" > "$2";
25
+ elif [ `which wget` ]; then
26
+ wget -nv -O "$2" "$1"
27
+ fi
28
+ }
29
+
30
+ if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then
31
+ WP_TESTS_TAG="branches/$WP_VERSION"
32
+ elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then
33
+ if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
34
+ # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
35
+ WP_TESTS_TAG="tags/${WP_VERSION%??}"
36
+ else
37
+ WP_TESTS_TAG="tags/$WP_VERSION"
38
+ fi
39
+ elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
40
+ WP_TESTS_TAG="trunk"
41
+ else
42
+ # http serves a single offer, whereas https serves multiple. we only want one
43
+ download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json
44
+ grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json
45
+ LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//')
46
+ if [[ -z "$LATEST_VERSION" ]]; then
47
+ echo "Latest WordPress version could not be found"
48
+ exit 1
49
+ fi
50
+ WP_TESTS_TAG="tags/$LATEST_VERSION"
51
+ fi
52
+
53
+ set -ex
54
+
55
+ install_wp() {
56
+
57
+ if [ -d $WP_CORE_DIR ]; then
58
+ return;
59
+ fi
60
+
61
+ mkdir -p $WP_CORE_DIR
62
+
63
+ if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
64
+ mkdir -p $TMPDIR/wordpress-nightly
65
+ download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip
66
+ unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/
67
+ mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR
68
+ else
69
+ if [ $WP_VERSION == 'latest' ]; then
70
+ local ARCHIVE_NAME='latest'
71
+ elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then
72
+ # https serves multiple offers, whereas http serves single.
73
+ download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json
74
+ if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then
75
+ # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x
76
+ LATEST_VERSION=${WP_VERSION%??}
77
+ else
78
+ # otherwise, scan the releases and get the most up to date minor version of the major release
79
+ local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'`
80
+ LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1)
81
+ fi
82
+ if [[ -z "$LATEST_VERSION" ]]; then
83
+ local ARCHIVE_NAME="wordpress-$WP_VERSION"
84
+ else
85
+ local ARCHIVE_NAME="wordpress-$LATEST_VERSION"
86
+ fi
87
+ else
88
+ local ARCHIVE_NAME="wordpress-$WP_VERSION"
89
+ fi
90
+ download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz
91
+ tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR
92
+ fi
93
+
94
+ download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
95
+ }
96
+
97
+ install_test_suite() {
98
+ # portable in-place argument for both GNU sed and Mac OSX sed
99
+ if [[ $(uname -s) == 'Darwin' ]]; then
100
+ local ioption='-i .bak'
101
+ else
102
+ local ioption='-i'
103
+ fi
104
+
105
+ # set up testing suite if it doesn't yet exist
106
+ if [ ! -d $WP_TESTS_DIR ]; then
107
+ # set up testing suite
108
+ mkdir -p $WP_TESTS_DIR
109
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
110
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
111
+ fi
112
+
113
+ if [ ! -f wp-tests-config.php ]; then
114
+ download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php
115
+ # remove all forward slashes in the end
116
+ WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::")
117
+ sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php
118
+ sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php
119
+ sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php
120
+ sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php
121
+ sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php
122
+ fi
123
+
124
+ }
125
+
126
+ install_db() {
127
+
128
+ if [ ${SKIP_DB_CREATE} = "true" ]; then
129
+ return 0
130
+ fi
131
+
132
+ # parse DB_HOST for port or socket references
133
+ local PARTS=(${DB_HOST//\:/ })
134
+ local DB_HOSTNAME=${PARTS[0]};
135
+ local DB_SOCK_OR_PORT=${PARTS[1]};
136
+ local EXTRA=""
137
+
138
+ if ! [ -z $DB_HOSTNAME ] ; then
139
+ if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then
140
+ EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp"
141
+ elif ! [ -z $DB_SOCK_OR_PORT ] ; then
142
+ EXTRA=" --socket=$DB_SOCK_OR_PORT"
143
+ elif ! [ -z $DB_HOSTNAME ] ; then
144
+ EXTRA=" --host=$DB_HOSTNAME --protocol=tcp"
145
+ fi
146
+ fi
147
+
148
+ # create database
149
+ mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA;
150
+ }
151
+
152
+ install_wp
153
+ install_test_suite
154
+ install_db
plugin-fw/tools/local-env/mysql-init.sql ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /**
2
+ * MySQL server init.
3
+ *
4
+ * SQL queries in this file will be executed the first time the MySQL server is started.
5
+ */
6
+
7
+ CREATE DATABASE IF NOT EXISTS yith_plugin_fw_tests;
plugin-fw/tools/local-env/phpunit-config.ini ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ upload_max_filesize = 1G
2
+ post_max_size = 1G
3
+
4
+ opcache.enable = 1
5
+ opcache.enable_cli = 1
6
+ opache.file_cache = /tmp/php-opcache
plugin-fw/tools/local-env/scripts/docker.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ const dotenv = require( 'dotenv' );
2
+ const { execSync } = require( 'child_process' );
3
+ dotenv.config();
4
+
5
+ // Execute any docker-compose command passed to this script.
6
+ execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
plugin-fw/tools/local-env/scripts/install.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const dotenv = require( 'dotenv' );
2
+ const { execSync } = require( 'child_process' );
3
+
4
+ dotenv.config();
5
+
6
+ phpunitExec('/var/www/html/install-wp-tests.sh yith_plugin_fw_tests root password mysql latest true');
7
+
8
+ /**
9
+ * Runs commands in the Docker PHPUnit environment.
10
+ *
11
+ * @param {string} cmd The command to run.
12
+ */
13
+ function phpunitExec( cmd ) {
14
+ execSync( `docker-compose run --rm phpunit ${cmd}`, { stdio: 'inherit' } );
15
+ }
plugin-fw/tools/local-env/scripts/start.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ const dotenv = require( 'dotenv' );
2
+ const { execSync } = require( 'child_process' );
3
+
4
+ dotenv.config();
5
+
6
+ // Start the local-env containers.
7
+ execSync( 'docker-compose up -d', { stdio: 'inherit' } );
plugin-fw/tools/local-env/yith-plugin-fw-loader.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: YITH Plugin Framework Loader
4
+ * Plugin URI:
5
+ * Description: YITH Plugin Framework Loader
6
+ * Version: 1.0.0
7
+ * Author: YITH
8
+ * Author URI: http://yithemes.com/
9
+ * Text Domain: yith-plugin-framework-loader
10
+ * Domain Path: /languages/
11
+ *
12
+ * @author YITH
13
+ * @package YITH Plugin Framework Loader
14
+ * @version 1.0.0
15
+ */
16
+
17
+ if ( ! defined( 'ABSPATH' ) ) {
18
+ exit;
19
+ } // Exit if accessed directly
20
+
21
+ if ( ! function_exists( 'yith_plugin_registration_hook' ) ) {
22
+ require_once 'plugin-fw/yit-plugin-registration-hook.php';
23
+ }
24
+ register_activation_hook( __FILE__, 'yith_plugin_registration_hook' );
25
+
26
+
27
+ add_action( 'plugins_loaded', 'yith_plugin_fw_loader_load_plugin_fw', 15 );
28
+
29
+ /**
30
+ * Plugin Framework Loader.
31
+ *
32
+ * @return void
33
+ */
34
+ function yith_plugin_fw_loader_load_plugin_fw() {
35
+
36
+ if ( ! defined( 'YIT_CORE_PLUGIN' ) ) {
37
+ global $plugin_fw_data;
38
+ if ( ! empty( $plugin_fw_data ) ) {
39
+ $plugin_fw_file = array_shift( $plugin_fw_data );
40
+ require_once $plugin_fw_file;
41
+ }
42
+ }
43
+
44
+ }
45
+
46
+ /* Plugin Framework Version Check */
47
+ if ( ! function_exists( 'yit_maybe_plugin_fw_loader' ) && file_exists( plugin_dir_path( __FILE__ ) . 'plugin-fw/init.php' ) ) {
48
+ require_once plugin_dir_path( __FILE__ ) . 'plugin-fw/init.php';
49
+ }
50
+ yit_maybe_plugin_fw_loader( plugin_dir_path( __FILE__ ) );
plugin-fw/yit-functions.php CHANGED
@@ -905,6 +905,77 @@ if ( ! function_exists( 'yit_wpml_object_id' ) ) {
905
  }
906
  }
907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
908
  if ( ! function_exists( 'yith_get_formatted_price' ) ) {
909
  /**
910
  * Format the price with a currency symbol.
@@ -1822,7 +1893,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1822
  // translators: %s is the title of the post object.
1823
  'confirm-trash-message' => sprintf( __( 'Are you sure you want to move "%s" to trash?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ),
1824
  // translators: %s is the title of the post object.
1825
- 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will be not able to recover this data.', 'yith-plugin-fw' ),
1826
  );
1827
 
1828
  $args = wp_parse_args( $args, $defaults );
@@ -1890,7 +1961,8 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1890
  $actions['trash']['confirm_data'] = array(
1891
  'title' => __( 'Confirm trash', 'yith-plugin-fw' ),
1892
  'message' => $args['confirm-trash-message'],
1893
- 'confirm-button' => _x( 'Yes, trash', 'Trash confirmation action', 'yith-plugin-fw' ),
 
1894
  'confirm-button-type' => 'delete',
1895
  );
1896
  }
@@ -1907,6 +1979,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_post_actions' ) ) {
1907
  $actions['delete']['confirm_data'] = array(
1908
  'title' => __( 'Confirm delete', 'yith-plugin-fw' ),
1909
  'message' => $args['confirm-delete-message'],
 
1910
  'confirm-button' => _x( 'Yes, delete', 'Delete confirmation action', 'yith-plugin-fw' ),
1911
  'confirm-button-type' => 'delete',
1912
  );
@@ -1980,7 +2053,7 @@ if ( ! function_exists( 'yith_plugin_fw_get_default_term_actions' ) ) {
1980
  'more-menu' => array(),
1981
  'duplicate-url' => false,
1982
  // translators: %s is the title of the post object.
1983
- 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will be not able to recover this data.', 'yith-plugin-fw' ),
1984
  );
1985
 
1986
  $args = wp_parse_args( $args, $defaults );
@@ -2077,3 +2150,71 @@ if ( ! function_exists( 'yith_plugin_fw_get_action_buttons' ) ) {
2077
  return $actions_html;
2078
  }
2079
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
905
  }
906
  }
907
 
908
+ if ( ! function_exists( 'yit_get_language_from_locale' ) ) {
909
+ /**
910
+ * Returns language name from locale code
911
+ *
912
+ * @param string $locale Locale to search for.
913
+ * @param bool $show_native Whether to return native language instead of english one.
914
+ *
915
+ * @return string Language name for passed locale; if can't find any, local itself is returned.
916
+ * @since 3.7.1
917
+ * @author Antonio La Rocca <antonio.larocca@yithemes.com>
918
+ */
919
+ function yit_get_language_from_locale( $locale, $show_native = false ) {
920
+ require_once ABSPATH . 'wp-admin/includes/translation-install.php';
921
+ $translations = wp_get_available_translations();
922
+
923
+ if ( in_array( $locale, array( 'en', 'en_US' ), true ) ) {
924
+ /**
925
+ * English (United States) is not included in translations array
926
+ * We return fixed, non-localized string, as WordPress does
927
+ *
928
+ * @see {wp_dropdown_languages}
929
+ */
930
+ return 'English';
931
+ }
932
+
933
+ if ( empty( $translations ) ) {
934
+ return $locale;
935
+ }
936
+
937
+ // perfect match.
938
+ $translation = isset( $translations[ $locale ] ) ? $translations[ $locale ] : false;
939
+
940
+ // check for no-dialect.
941
+ if ( 2 === strlen( $locale ) ) {
942
+
943
+ // first check for common occurrences.
944
+ if ( 'it' === $locale && isset( $translations['it_IT'] ) ) {
945
+ $translation = $translations['it_IT'];
946
+ } elseif ( 'es' === $locale && isset( $translations['es_ES'] ) ) {
947
+ $translation = $translations['es_ES'];
948
+ } elseif ( 'de' === $locale && isset( $translations['de_DE'] ) ) {
949
+ $translation = $translations['de_DE'];
950
+ } else {
951
+ foreach ( $translations as $translation_locale => $translation_details ) {
952
+ $no_dialect_locale = isset( $translation_details['iso'][1] ) ? $translation_details['iso'][1] : substr( $translation_locale, 0, 2 );
953
+
954
+ if ( $locale !== $no_dialect_locale ) {
955
+ continue;
956
+ }
957
+
958
+ $translation = $translation_details;
959
+
960
+ // remove dialect from names.
961
+ $translation['english_name'] = preg_replace( '/(.+) \(.*\)/', '$1', $translation['english_name'] );
962
+
963
+ // we found what we were looking for; break.
964
+ break;
965
+ }
966
+ }
967
+ }
968
+
969
+ if ( ! $translation ) {
970
+ return $locale;
971
+ }
972
+
973
+ $language_name = $show_native ? $translation['native_name'] : $translation['english_name'];
974
+
975
+ return $language_name;
976
+ }
977
+ }
978
+
979
  if ( ! function_exists( 'yith_get_formatted_price' ) ) {
980
  /**
981
  * Format the price with a currency symbol.
1893
  // translators: %s is the title of the post object.
1894
  'confirm-trash-message' => sprintf( __( 'Are you sure you want to move "%s" to trash?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ),
1895
  // translators: %s is the title of the post object.
1896
+ 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
1897
  );
1898
 
1899
  $args = wp_parse_args( $args, $defaults );
1961
  $actions['trash']['confirm_data'] = array(
1962
  'title' => __( 'Confirm trash', 'yith-plugin-fw' ),
1963
  'message' => $args['confirm-trash-message'],
1964
+ 'cancel-button' => __( 'No', 'yith-plugin-fw' ),
1965
+ 'confirm-button' => _x( 'Yes, move to trash', 'Trash confirmation action', 'yith-plugin-fw' ),
1966
  'confirm-button-type' => 'delete',
1967
  );
1968
  }
1979
  $actions['delete']['confirm_data'] = array(
1980
  'title' => __( 'Confirm delete', 'yith-plugin-fw' ),
1981
  'message' => $args['confirm-delete-message'],
1982
+ 'cancel-button' => __( 'No', 'yith-plugin-fw' ),
1983
  'confirm-button' => _x( 'Yes, delete', 'Delete confirmation action', 'yith-plugin-fw' ),
1984
  'confirm-button-type' => 'delete',
1985
  );
2053
  'more-menu' => array(),
2054
  'duplicate-url' => false,
2055
  // translators: %s is the title of the post object.
2056
+ 'confirm-delete-message' => sprintf( __( 'Are you sure you want to delete "%s"?', 'yith-plugin-fw' ), '<strong>' . $title . '</strong>' ) . '<br /><br />' . __( 'This action cannot be undone and you will not be able to recover this data.', 'yith-plugin-fw' ),
2057
  );
2058
 
2059
  $args = wp_parse_args( $args, $defaults );
2150
  return $actions_html;
2151
  }
2152
  }
2153
+
2154
+ if ( ! function_exists( 'yith_plugin_fw_get_post_formatted_name' ) ) {
2155
+ /**
2156
+ * Get the formatted name for posts/products
2157
+ *
2158
+ * @param int|WP_Post|WC_Product $post The post ID, the post object, or the product object.
2159
+ * @param array $args Arguments.
2160
+ *
2161
+ * @return string
2162
+ * @since 3.7.2
2163
+ */
2164
+ function yith_plugin_fw_get_post_formatted_name( $post, $args = array() ) {
2165
+ $defaults = array(
2166
+ 'show-id' => false,
2167
+ 'post-type' => false,
2168
+ );
2169
+ $args = wp_parse_args( $args, $defaults );
2170
+ $post_type = $args['post-type'];
2171
+ $show_id = $args['show-id'];
2172
+
2173
+ if ( is_a( $post, 'WP_Post' ) ) {
2174
+ $post_id = $post->ID;
2175
+ } elseif ( class_exists( 'WC_Product' ) && is_a( $post, 'WC_Product' ) ) {
2176
+ $post_id = $post->get_id();
2177
+ if ( false === $post_type ) {
2178
+ $post_type = is_a( $post, 'WC_Product_Variation' ) ? 'product_variation' : 'product';
2179
+ }
2180
+ } else {
2181
+ $post_id = absint( $post );
2182
+ }
2183
+
2184
+ if ( ! $post_type ) {
2185
+ $post_type = get_post_type( $post_id );
2186
+ }
2187
+
2188
+ $name = null;
2189
+
2190
+ switch ( $post_type ) {
2191
+ case 'product':
2192
+ case 'product_variation':
2193
+ $product = wc_get_product( $post );
2194
+ if ( $product ) {
2195
+ $name = $product->get_formatted_name();
2196
+
2197
+ if ( ! $show_id ) {
2198
+
2199
+ if ( $product->get_sku() ) {
2200
+ $identifier = $product->get_sku();
2201
+ } else {
2202
+ $identifier = '#' . $product->get_id();
2203
+ }
2204
+
2205
+ // Use normal replacing instead of regex since the identifier could be also the product SKU.
2206
+ $name = str_replace( "({$identifier})", '', $name );
2207
+ }
2208
+ }
2209
+ }
2210
+
2211
+ if ( is_null( $name ) ) {
2212
+ $name = get_the_title( $post_id );
2213
+ if ( $show_id ) {
2214
+ $name .= " (#{$post_id})";
2215
+ }
2216
+ }
2217
+
2218
+ return $name;
2219
+ }
2220
+ }
plugin-fw/yit-plugin.php CHANGED
@@ -25,6 +25,7 @@ require_once 'includes/class-yit-plugin-common.php';
25
  require_once 'includes/class-yit-gradients.php';
26
  require_once 'includes/class-yit-plugin-licence.php';
27
  require_once 'includes/class-yit-theme-licence.php';
 
28
  require_once 'includes/class-yit-video.php';
29
  require_once 'includes/class-yit-upgrade.php';
30
  require_once 'includes/class-yit-pointers.php';
@@ -46,9 +47,9 @@ if ( class_exists( 'WP_Block_Type_Registry' ) ) {
46
  require_once 'includes/builders/elementor/class-yith-elementor.php';
47
 
48
  // load from theme folder...
49
- load_textdomain( 'yith-plugin-fw', get_template_directory() . '/core/plugin-fw/yith-plugin-fw-' . apply_filters( 'plugin_locale', get_locale(), 'yith-plugin-fw' ) . '.mo' ) ||
50
  // ...or from plugin folder.
51
- load_textdomain( 'yith-plugin-fw', dirname( __FILE__ ) . '/languages/yith-plugin-fw-' . apply_filters( 'plugin_locale', get_locale(), 'yith-plugin-fw' ) . '.mo' );
52
 
53
  add_filter( 'plugin_row_meta', 'yit_plugin_fw_row_meta', 20, 4 );
54
 
25
  require_once 'includes/class-yit-gradients.php';
26
  require_once 'includes/class-yit-plugin-licence.php';
27
  require_once 'includes/class-yit-theme-licence.php';
28
+ require_once 'includes/class-yit-help-desk.php';
29
  require_once 'includes/class-yit-video.php';
30
  require_once 'includes/class-yit-upgrade.php';
31
  require_once 'includes/class-yit-pointers.php';
47
  require_once 'includes/builders/elementor/class-yith-elementor.php';
48
 
49
  // load from theme folder...
50
+ load_textdomain( 'yith-plugin-fw', get_template_directory() . '/core/plugin-fw/yith-plugin-fw-' . apply_filters( 'plugin_locale', determine_locale(), 'yith-plugin-fw' ) . '.mo' ) ||
51
  // ...or from plugin folder.
52
+ load_textdomain( 'yith-plugin-fw', dirname( __FILE__ ) . '/languages/yith-plugin-fw-' . apply_filters( 'plugin_locale', determine_locale(), 'yith-plugin-fw' ) . '.mo' );
53
 
54
  add_filter( 'plugin_row_meta', 'yit_plugin_fw_row_meta', 20, 4 );
55
 
readme.txt CHANGED
@@ -2,14 +2,14 @@
2
 
3
  Contributors: yithemes
4
  Tags: yith, woocommerce compare, compare products, product compare, product comparison
5
- Requires at least: 5.4
6
- Tested up to: 5.7
7
- Stable tag: 2.5.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  YITH WooCommerce Compare allows you to compare more products of your shop in one complete table.
12
- WooCommerce Compatible up to 5.4
13
 
14
  == Description ==
15
 
@@ -66,6 +66,13 @@ yith-woocommerce-compare-<WORDPRESS LOCALE >.mo
66
 
67
  == Changelog ==
68
 
 
 
 
 
 
 
 
69
  = 2.5.2 = Released on 01 Jun 2021
70
 
71
  * New: support for WooCommerce 5.4
2
 
3
  Contributors: yithemes
4
  Tags: yith, woocommerce compare, compare products, product compare, product comparison
5
+ Requires at least: 5.6
6
+ Tested up to: 5.8
7
+ Stable tag: 2.5.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
  YITH WooCommerce Compare allows you to compare more products of your shop in one complete table.
12
+ WooCommerce Compatible up to 5.5
13
 
14
  == Description ==
15
 
66
 
67
  == Changelog ==
68
 
69
+ = 2.5.3 = Released on 14 July 2021
70
+
71
+ * New: support for WooCommerce 5.5
72
+ * New: support for WordPress 5.8
73
+ * Update: YITH plugin framework
74
+
75
+
76
  = 2.5.2 = Released on 01 Jun 2021
77
 
78
  * New: support for WooCommerce 5.4