YITH WooCommerce Zoom Magnifier - Version 1.2.20

Version Description

Download this release

Release Info

Developer yithemes
Plugin Icon 128x128 YITH WooCommerce Zoom Magnifier
Version 1.2.20
Comparing to
See all releases

Code changes from version 1.2.19 to 1.2.20

Files changed (34) hide show
  1. README.txt +9 -3
  2. assets/js/yith_magnifier.js +790 -790
  3. init.php +3 -3
  4. languages/yith-woocommerce-zoom-magnifier-es_ES.mo +0 -0
  5. languages/yith-woocommerce-zoom-magnifier-es_ES.po +489 -0
  6. languages/yith-woocommerce-zoom-magnifier.pot +1 -1
  7. plugin-fw/assets/css/yit-plugin-panel-sidebar.css +29 -18
  8. plugin-fw/assets/images/upgrade-page/01.jpg +0 -0
  9. plugin-fw/assets/images/upgrade-page/02.jpg +0 -0
  10. plugin-fw/assets/images/upgrade-page/03.jpg +0 -0
  11. plugin-fw/assets/images/upgrade-page/04.jpg +0 -0
  12. plugin-fw/assets/images/upgrade-page/05.jpg +0 -0
  13. plugin-fw/assets/images/upgrade-page/06.jpg +0 -0
  14. plugin-fw/assets/images/upgrade-page/07.jpg +0 -0
  15. plugin-fw/assets/images/upgrade-page/08.jpg +0 -0
  16. plugin-fw/assets/images/upgrade-page/09.jpg +0 -0
  17. plugin-fw/assets/js/how-to.js +6 -0
  18. plugin-fw/assets/js/multisite-updater.js +1 -1
  19. plugin-fw/assets/js/multisite-updater.min.js +1 -4
  20. plugin-fw/init.php +19 -2
  21. plugin-fw/languages/yith-plugin-fw-es_ES.mo +0 -0
  22. plugin-fw/languages/yith-plugin-fw-es_ES.po +1170 -0
  23. plugin-fw/languages/yith-plugin-fw-it_IT.mo +0 -0
  24. plugin-fw/languages/yith-plugin-fw-it_IT.po +64 -34
  25. plugin-fw/languages/yith-plugin-fw.pot +139 -25
  26. plugin-fw/lib/yit-plugin-panel-sidebar.php +1 -1
  27. plugin-fw/lib/yit-plugin-panel-wc.php +22 -7
  28. plugin-fw/lib/yit-plugin-panel.php +12 -16
  29. plugin-fw/lib/yit-plugin-subpanel.php +1 -1
  30. plugin-fw/lib/yit-upgrade.php +534 -528
  31. plugin-fw/lib/yit-video.php +6 -2
  32. plugin-fw/templates/panel/sidebar/widgets/widget-membership.php +12 -7
  33. plugin-fw/templates/upgrade/upgrade-to-pro-version.php +0 -75
  34. plugin-fw/yit-functions.php +19 -6
README.txt CHANGED
@@ -3,8 +3,8 @@
3
  Contributors: yithemes
4
  Tags: zoom, magnifier, woocommerce, product image, themes, yit, e-commerce, shop, thumbnail, thumbnail slider, zoom image, carousel, image carousel
5
  Requires at least: 3.5.1
6
- Tested up to: 4.5
7
- Stable tag: 1.2.19
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -59,6 +59,11 @@ The size of the Zoom Image is automatically setted. If you want to change these
59
 
60
  == Changelog ==
61
 
 
 
 
 
 
62
  = Version 1.2.19 - Released: May 04, 2016 =
63
 
64
  * Fixed: missing YITH Plugin FW files
@@ -235,7 +240,8 @@ If you have suggestions about how to improve YITH WooCommerce Zoom Magnifier, yo
235
 
236
  = Available Languages =
237
  * English (Default)
238
- * Italiano
 
239
 
240
  If you have created your own language pack, or have an update for an existing one, you can send [gettext PO and MO file](http://codex.wordpress.org/Translating_WordPress "Translating WordPress")
241
  [use](http://yithemes.com/contact/ "Your Inspiration Themes") so we can bundle it into YITH WooCommerce Zoom Magnfier Languages.
3
  Contributors: yithemes
4
  Tags: zoom, magnifier, woocommerce, product image, themes, yit, e-commerce, shop, thumbnail, thumbnail slider, zoom image, carousel, image carousel
5
  Requires at least: 3.5.1
6
+ Tested up to: 4.5.2
7
+ Stable tag: 1.2.20
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
59
 
60
  == Changelog ==
61
 
62
+ = Version 1.2.20 - Released: Jun 13, 2016 =
63
+
64
+ * Added: spanish localization
65
+ * Updated: WooCommerce 2.6 100% compatible
66
+
67
  = Version 1.2.19 - Released: May 04, 2016 =
68
 
69
  * Fixed: missing YITH Plugin FW files
240
 
241
  = Available Languages =
242
  * English (Default)
243
+ * Italian
244
+ * Spanish
245
 
246
  If you have created your own language pack, or have an update for an existing one, you can send [gettext PO and MO file](http://codex.wordpress.org/Translating_WordPress "Translating WordPress")
247
  [use](http://yithemes.com/contact/ "Your Inspiration Themes") so we can bundle it into YITH WooCommerce Zoom Magnfier Languages.
assets/js/yith_magnifier.js CHANGED
@@ -1,791 +1,791 @@
1
- /**
2
- * YITH Magnifier
3
- *
4
- * @version 0.1
5
- * @author Your Inspiration Themes Team <info@yithemes.com>
6
- *
7
- * MIT License.
8
- */
9
-
10
- ;
11
- (function (window, $, undefined) {
12
- 'use strict';
13
-
14
- //include imagesLoaded plugin
15
- if ($.fn.imagesLoaded === undefined) {
16
- /*!
17
- * jQuery imagesLoaded plugin v2.1.1
18
- * http://github.com/desandro/imagesloaded
19
- *
20
- * MIT License. by Paul Irish et al.
21
- */
22
-
23
- /*jshint curly: true, eqeqeq: true, noempty: true, strict: true, undef: true, browser: true */
24
- /*global jQuery: false */
25
-
26
- ;
27
- (function ($, undefined) {
28
- 'use strict';
29
-
30
- // blank image data-uri bypasses webkit log warning (thx doug jones)
31
- var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
32
-
33
- $.fn.imagesLoaded = function (callback) {
34
- var $this = this,
35
- deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
36
- hasNotify = $.isFunction(deferred.notify),
37
- $images = $this.find('img').add($this.filter('img')),
38
- loaded = [],
39
- proper = [],
40
- broken = [];
41
-
42
- // Register deferred callbacks
43
- if ($.isPlainObject(callback)) {
44
- $.each(callback, function (key, value) {
45
- if (key === 'callback') {
46
- callback = value;
47
- } else if (deferred) {
48
- deferred[key](value);
49
- }
50
- });
51
- }
52
-
53
- function doneLoading() {
54
- var $proper = $(proper),
55
- $broken = $(broken);
56
-
57
- if (deferred) {
58
- if (broken.length) {
59
- deferred.reject($images, $proper, $broken);
60
- } else {
61
- deferred.resolve($images);
62
- }
63
- }
64
-
65
- if ($.isFunction(callback)) {
66
- callback.call($this, $images, $proper, $broken);
67
- }
68
- }
69
-
70
- function imgLoadedHandler(event) {
71
- imgLoaded(event.target, event.type === 'error');
72
- }
73
-
74
- function imgLoaded(img, isBroken) {
75
- // don't proceed if BLANK image, or image is already loaded
76
- if (img.src === BLANK || $.inArray(img, loaded) !== -1) {
77
- return;
78
- }
79
-
80
- // store element in loaded images array
81
- loaded.push(img);
82
-
83
- // keep track of broken and properly loaded images
84
- if (isBroken) {
85
- broken.push(img);
86
- } else {
87
- proper.push(img);
88
- }
89
-
90
- // cache image and its state for future calls
91
- $.data(img, 'imagesLoaded', {isBroken: isBroken, src: img.src});
92
-
93
- // trigger deferred progress method if present
94
- if (hasNotify) {
95
- deferred.notifyWith($(img), [isBroken, $images, $(proper), $(broken)]);
96
- }
97
-
98
- // call doneLoading and clean listeners if all images are loaded
99
- if ($images.length === loaded.length) {
100
- setTimeout(doneLoading);
101
- $images.unbind('.imagesLoaded', imgLoadedHandler);
102
- }
103
- }
104
-
105
- // if no images, trigger immediately
106
- if (!$images.length) {
107
- doneLoading();
108
- } else {
109
- $images.bind('load.imagesLoaded error.imagesLoaded', imgLoadedHandler)
110
- .each(function (i, el) {
111
- var src = el.src;
112
-
113
- // find out if this image has been already checked for status
114
- // if it was, and src has not changed, call imgLoaded on it
115
- var cached = $.data(el, 'imagesLoaded');
116
- if (cached && cached.src === src) {
117
- imgLoaded(el, cached.isBroken);
118
- return;
119
- }
120
-
121
- // if complete is true and browser supports natural sizes, try
122
- // to check for image status manually
123
- if (el.complete && el.naturalWidth !== undefined) {
124
- imgLoaded(el, el.naturalWidth === 0 || el.naturalHeight === 0);
125
- return;
126
- }
127
-
128
- // cached images don't fire load sometimes, so we reset src, but only when
129
- // dealing with IE, or image is complete (loaded) and failed manual check
130
- // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
131
- if (el.readyState || el.complete) {
132
- el.src = BLANK;
133
- el.src = src;
134
- }
135
- });
136
- }
137
-
138
- return deferred ? deferred.promise($this) : $this;
139
- };
140
-
141
- })(jQuery);
142
- }
143
-
144
- $.yith_magnifier = function (options, element) {
145
- this.t = element;
146
- this.element = $(element);
147
- this._init(options);
148
- };
149
-
150
- $.yith_magnifier.defaults = {
151
- zoomWidth: 'auto',
152
- zoomHeight: 'auto',
153
- position: 'right',
154
- tint: false,
155
- tintOpacity: 0.5,
156
- lensOpacity: 0.5,
157
- softFocus: false,
158
- smoothMove: 3,
159
- showTitle: true,
160
- titleOpacity: 0.5,
161
- adjustX: 0,
162
- adjustY: 0,
163
-
164
- phoneBehavior: 'inside', //allowed values: inside, disable, default
165
- loadingLabel: 'Loading...',
166
-
167
- enableSlider: true,
168
- slider: 'carouFredSel',
169
- sliderOptions: {},
170
-
171
- onLoad: function () {
172
- return false;
173
- },
174
- onEnter: function () {
175
- return false
176
- },
177
- onLeave: function () {
178
- return false
179
- },
180
- onMove: function () {
181
- return false
182
- },
183
- onClick: function () {
184
- return false;
185
- },
186
-
187
- elements: {
188
- zoom: $('.yith_magnifier_zoom'),
189
- zoomImage: $('.yith_magnifier_zoom img'),
190
- gallery: $('.yith_magnifier_gallery li a')
191
- }
192
- };
193
-
194
- $.yith_magnifier.prototype = {
195
- /**
196
- * Let's start the magnifier
197
- *
198
- * @param {Object} options
199
- *
200
- * @private
201
- */
202
- _init: function (options) {
203
- var self = this;
204
-
205
- $(document).trigger('yith_magnifier_before_init');
206
-
207
- $.each($.yith_magnifier.defaults.elements, function (i, v) {
208
- var el = $.yith_magnifier.defaults.elements;
209
- el[i] = $(v, self);
210
- });
211
- self.options = $.extend(true, {}, $.yith_magnifier.defaults, options);
212
- self.isPhone = self._isPhone();
213
-
214
- self._loading();
215
-
216
- self.element.imagesLoaded(function () {
217
- self.options.onLoad();
218
- self._initZoom();
219
- self._initGallery();
220
- });
221
-
222
- $(document).trigger('yith_magnifier_after_init');
223
- },
224
-
225
-
226
- /**
227
- * Init gallery handlers
228
- *
229
- * @private
230
- *
231
- */
232
- _initGallery: function () {
233
- var self = this;
234
- var elements = self.options.elements;
235
-
236
- var gallery = elements.gallery;
237
- var zoom = elements.zoom;
238
- var zoomImage = elements.zoomImage;
239
-
240
- if (gallery.length > 0) {
241
- gallery.on('click', function (e) {
242
- e.preventDefault();
243
-
244
- var t = $(this);
245
- self.destroy();
246
-
247
- zoom.attr('href', this.href);
248
- zoomImage.attr('src', t.data('small'))
249
- .attr('srcset', t.data('small'))
250
- .attr('src-orig', t.data('small'))
251
- .attr('title', '')
252
- .attr('title', t.attr('title'));
253
-
254
- $.data(self.t, 'yith_magnifier', new $.yith_magnifier(self.options, self.element));
255
- });
256
-
257
- //gallery.filter(':first').trigger('click');
258
-
259
- if (self.options.enableSlider) {
260
- gallery.closest('ul').trigger('yith_magnifier_slider_destroy');
261
- gallery.closest('ul')[self.options.slider](self.options.sliderOptions);
262
- }
263
-
264
- } else {
265
- gallery.on('click', function (e) {
266
- e.preventDefault();
267
- return false;
268
- })
269
- }
270
- },
271
-
272
- /**
273
- * Show a loading icon while image isn't properly loaded
274
- *
275
- * @private
276
- */
277
- _loading: function () {
278
- if (this.options.disableRightClick) {
279
- $(document).on('contextmenu', function (e) {
280
- return false;
281
- });
282
- }
283
-
284
- if (this.mouseTrap === undefined) {
285
- var w = this.options.elements.zoom.width();
286
-
287
- if (this.options.loadingLabel) {
288
- $('<div class="yith_magnifier_loading">' + this.options.loadingLabel + '</div>').css({
289
- 'width': w,
290
- 'text-align': 'center',
291
- opacity: .5
292
- }).appendTo(this.options.elements.zoom.parent());
293
- }
294
- }
295
- },
296
-
297
- /**
298
- * Initialize the zoom images
299
- *
300
- * @private
301
- */
302
- _initZoom: function () {
303
- var self = this;
304
-
305
- self.zoom = self.options.elements.zoom;
306
- self.zoomImage = self.options.elements.zoomImage;
307
-
308
- //wrap the zoom image with a div
309
- var zoom_wrap_css_class = "yith_magnifier_zoom_wrap";
310
-
311
-
312
- if (self.options.zoom_wrap_additional_css) {
313
- if ( !$('.' + zoom_wrap_css_class).length ) {
314
-
315
- zoom_wrap_css_class += " " + self.options.zoom_wrap_additional_css;
316
- }
317
- }
318
-
319
- self.zoom.wrap('<div class="' + zoom_wrap_css_class + '"></div>');
320
-
321
- self.IMG_zoomImage = new Image();
322
- self.IMG_zoomImage.src = self.zoom.attr('href');
323
-
324
- self.IMG_smallImage = new Image();
325
- self.IMG_smallImage.src = self.zoomImage.attr('src');
326
-
327
- if ($.browser.msie && $.browser.version == 8) {
328
- $(self.IMG_zoomImage).load(function () {
329
-
330
- self._initTrap();
331
- });
332
- } else {
333
-
334
- $([self.IMG_zoomImage, self.IMG_smallImage]).imagesLoaded(function () {
335
-
336
- self._initTrap();
337
- });
338
- }
339
-
340
- $(document).trigger('yith_magnifier_after_init_zoom')
341
- },
342
-
343
- /**
344
- * Create the mouse trap
345
- *
346
- * @private
347
- */
348
- _initTrap: function () {
349
- var self = this;
350
- var zoomImg = self.IMG_zoomImage,
351
- thumbImg = self.IMG_smallImage;
352
-
353
- self.mx = 0;
354
- self.my = 0;
355
- self.controlTimer = 0;
356
- self.lens = null;
357
- self.tint = null;
358
- self.softFocus = null;
359
- self.zoomDiv = null;
360
- self.cw = 0;
361
- self.ch = 0;
362
- self.zw = 0;
363
- self.destU = 0;
364
- self.destV = 0;
365
- self.currU = 0;
366
- self.currV = 0;
367
- self.mouseTrap = null;
368
-
369
- var zoom = self.options.elements.zoom;
370
- var zoomImage = self.options.elements.zoomImage;
371
-
372
- //remove loading div
373
- //this.zoom.parent().siblings('.yith_magnifier_loading').remove();
374
- $('.yith_magnifier_loading').remove();
375
-
376
- if (this.element.find('.yith_magnifier_mousetrap')) {
377
- this.element.find('.yith_magnifier_mousetrap').remove();
378
- }
379
-
380
- this.mouseTrap = $('<div class="yith_magnifier_mousetrap" />').css({
381
- width: '100%', //zoomImage.outerWidth(),
382
- height: '100%', //zoomImage.outerHeight(),
383
- top: 0,
384
- left: 0
385
- }).appendTo(zoom.parent());
386
-
387
- // Detect device type, normal mouse or touchy(ipad android) by albanx
388
- var touchy = ("ontouchstart" in document.documentElement) ? true : false;
389
- var event_move = 'touchmove mousemove';
390
- var event_end = 'touchend mouseleave';
391
- var event_ent = 'touchstart mouseenter';
392
- var event_click = 'touchstart click';
393
-
394
- this.mouseTrap.on(event_move, this, function (e) {
395
- self.options.onMove();
396
-
397
- self.mx = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageX : e.pageX;
398
- self.my = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageY : e.pageY;
399
-
400
- }).on(event_end, this, function (e) {
401
-
402
- clearTimeout(self.controlTimer);
403
- //event.data.removeBits();
404
- if (self.lens) {
405
- self.lens.fadeOut(299);
406
- }
407
- if (self.tint) {
408
- self.tint.fadeOut(299);
409
- }
410
- if (self.softFocus) {
411
- self.softFocus.fadeOut(299);
412
- }
413
- self.zoomDiv.fadeOut(300, function () {
414
- self._onLeave();
415
- });
416
-
417
- return false;
418
-
419
- }).on(event_click, this, function (e) {
420
- self.options.onClick();
421
- }).on(event_ent, this, function (e) {
422
- self.options.onEnter();
423
-
424
- if (touchy) {
425
- e.preventDefault();
426
- }
427
-
428
- self.mx = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageX : e.pageX;
429
- self.my = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageY : e.pageY;
430
-
431
- self.zw = e.data;
432
- if (self.zoomDiv) {
433
- self.zoomDiv.stop(true, false);
434
- self.zoomDiv.remove();
435
- }
436
-
437
- var xPos = self.options.adjustX,
438
- yPos = self.options.adjustY;
439
-
440
- var siw = zoomImage.outerWidth();
441
- var sih = zoomImage.outerHeight();
442
-
443
- var w = self.options.zoomWidth;
444
- var h = self.options.zoomHeight;
445
-
446
- if (self.options.zoomWidth == 'auto') {
447
- w = siw;
448
- }
449
-
450
- if (self.options.zoomHeight == 'auto') {
451
- h = sih;
452
- }
453
-
454
- var appendTo = zoom.parent();
455
- switch (self.options.position) {
456
- case 'top':
457
- yPos -= h;
458
- break;
459
- case 'right':
460
- xPos += siw;
461
- break;
462
- case 'bottom':
463
- yPos += sih;
464
- break;
465
- case 'left':
466
- xPos -= w;
467
- break;
468
- case 'inside':
469
- w = siw;
470
- h = sih;
471
- break;
472
-
473
- // All other values, try and find an id in the dom to attach to.
474
- default:
475
- appendTo = $('#' + self.options.position);
476
- // If dom element doesn't exit, just use 'right' position as default.
477
- if (!appendTo.length) {
478
- appendTo = zoom;
479
- xPos += siw; //+ opts.adjustX;
480
- yPos += sih; // + opts.adjustY;
481
- } else {
482
- w = appendTo.innerWidth();
483
- h = appendTo.innerHeight();
484
- }
485
- }
486
-
487
- if (self.isPhone && self.options.phoneBehavior == 'inside') {
488
- w = siw;
489
- h = sih;
490
- xPos = 0;
491
- yPos = 0;
492
- }
493
-
494
- self.zoomDiv = $('<div class="yith_magnifier_zoom_magnifier" />').css({
495
- left: xPos,
496
- top: yPos,
497
- width: w,
498
- height: h,
499
- 'background-repeat': 'no-repeat',
500
- backgroundImage: 'url(' + zoomImg.src + ')'
501
- }).appendTo(appendTo);
502
-
503
- // Add the title from title tag.
504
- if (zoomImage.attr('title') && self.options.showTitle) {
505
- $('<div class="yith_magnifier_title">' + zoomImage.attr('title') + '</div>').appendTo(self.zoomDiv);
506
- }
507
-
508
- if (self.isPhone) {
509
- if (self.options.phoneBehavior != 'disable') {
510
- self.zoomDiv.fadeIn(500);
511
- } else {
512
- self.lens.fadeOut(299);
513
- }
514
- } else {
515
- self.zoomDiv.fadeIn(500);
516
- }
517
-
518
- if (self.lens) {
519
- self.lens.remove();
520
- self.lens = null;
521
- }
522
-
523
- if (zoomImg.width <= 1) {
524
- self.cw = (zoomImage.outerWidth() / zoomImg.naturalWidth) * self.zoomDiv.width();
525
- } else {
526
- self.cw = (zoomImage.outerWidth() / zoomImg.width) * self.zoomDiv.width();
527
- }
528
-
529
- if (zoomImg.height <= 1) {
530
- self.ch = (zoomImage.outerHeight() / zoomImg.naturalHeight) * self.zoomDiv.height();
531
- } else {
532
- self.ch = (zoomImage.outerHeight() / zoomImg.height) * self.zoomDiv.height();
533
- }
534
-
535
- // Attach mouse, initially invisible to prevent first frame glitch
536
- self.lens = $('<div class="yith_magnifier_lens" />').css({
537
- width: self.cw,
538
- height: self.ch
539
- }).appendTo(zoom);
540
-
541
- self.mouseTrap.css('cursor', self.lens.css('cursor'));
542
-
543
- var noTrans = false;
544
-
545
-
546
- // Init tint layer if needed. (Not relevant if using inside mode)
547
- if (self.options.tint) {
548
- //self.lens.css('background', 'url("' + zoomImage.attr('src') + '")');
549
- self.tint = $('<div />').css({
550
- display: 'none',
551
- position: 'absolute',
552
- left: 0,
553
- top: 0,
554
- width: zoomImage.outerWidth(),
555
- height: zoomImage.outerHeight(),
556
- backgroundColor: self.options.tint,
557
- opacity: self.options.tintOpacity
558
- }).appendTo(zoom);
559
-
560
-
561
- self.lens.append($('<img />', {
562
- src: zoomImage.attr('src')
563
- }));
564
-
565
- noTrans = true;
566
- self.tint.fadeIn(500);
567
- }
568
-
569
- if (self.options.softFocus) {
570
- //self.lens.css('background', 'url("' + zoomImage.attr('src') + '")');
571
- self.softFocus = $('<div />').css({
572
- position: 'absolute',
573
- display: 'none',
574
- top: '1px',
575
- left: '1px',
576
- width: zoomImage.outerWidth(),
577
- height: zoomImage.outerHeight(),
578
- //background: 'url("' + zoomImage.attr('src') + '")',
579
- //backgroundSize: '100%',
580
- opacity: .5
581
- }).appendTo(zoom);
582
-
583
- self.softFocus.append($('<img />', {
584
- src: zoomImage.attr('src')
585
- }));
586
-
587
- if (self.lens.find('img').length == 0) {
588
- self.lens.append($('<img />', {
589
- src: zoomImage.attr('src')
590
- }));
591
- }
592
-
593
- noTrans = true;
594
- self.softFocus.fadeIn(500);
595
- }
596
-
597
-
598
- if (!noTrans) {
599
- self.lens.css('opacity', self.options.lensOpacity);
600
- }
601
- if (self.options.position !== 'inside') {
602
- self.lens.fadeIn(500);
603
- }
604
-
605
- // Start processing.
606
- self.zw._controlLoop();
607
-
608
- return; // Don't return false here otherwise opera will not detect change of the mouse pointer type.
609
- });
610
- },
611
-
612
- /**
613
- *
614
- *
615
- * @private
616
- */
617
- _controlLoop: function () {
618
- var self = this;
619
-
620
- if (this.lens) {
621
- var x = (this.mx - this.zoomImage.offset().left - (this.cw * 0.5)) >> 0;
622
- var y = (this.my - this.zoomImage.offset().top - (this.ch * 0.5)) >> 0;
623
-
624
- if (x < 0) {
625
- x = 0;
626
- } else if (x > (this.zoomImage.outerWidth() - this.cw)) {
627
- x = (this.zoomImage.outerWidth() - this.cw);
628
- }
629
-
630
- if (y < 0) {
631
- y = 0;
632
- } else if (y > (this.zoomImage.outerHeight() - this.ch)) {
633
- y = (this.zoomImage.outerHeight() - this.ch);
634
- }
635
-
636
- this.lens.css({
637
- left: x - 2,
638
- top: y - 1
639
- });
640
-
641
- //this.lens.css('background-position', (-x) + 'px ' + (-y) + 'px');
642
-
643
-
644
- this.lens.find('img').css({
645
- width: this.zoomImage.outerWidth(),
646
- height: this.zoomImage.outerHeight(),
647
- marginLeft: (-x) + 'px ',
648
- marginTop: (-y) + 'px'
649
- });
650
-
651
-
652
- if (this.IMG_zoomImage.width <= 1) {
653
- this.destU = (((x) / this.zoomImage.outerWidth()) * this.IMG_zoomImage.naturalWidth) >> 0;
654
- } else {
655
- this.destU = (((x) / this.zoomImage.outerWidth()) * this.IMG_zoomImage.width) >> 0;
656
- }
657
-
658
- if (this.IMG_zoomImage.height <= 1) {
659
- this.destV = (((y) / this.zoomImage.outerHeight()) * this.IMG_zoomImage.naturalHeight) >> 0;
660
- } else {
661
- this.destV = (((y) / this.zoomImage.outerHeight()) * this.IMG_zoomImage.height) >> 0;
662
- }
663
-
664
-
665
- this.currU += (this.destU - this.currU) / this.options.smoothMove;
666
- this.currV += (this.destV - this.currV) / this.options.smoothMove;
667
-
668
- this.zoomDiv.css('background-position', (-(this.currU >> 0) + 'px ') + (-(this.currV >> 0) + 'px'));
669
- }
670
-
671
- this.controlTimer = setTimeout(function () {
672
- self._controlLoop();
673
- }, 30);
674
- },
675
-
676
- /**
677
- * This method is called when the mouse leave the image
678
- *
679
- * @private
680
- */
681
- _onLeave: function () {
682
- this.options.onLeave();
683
-
684
- if (this.zoomDiv) {
685
- this.zoomDiv.remove();
686
- this.zoomDiv = null;
687
- }
688
-
689
- this._removeElements();
690
- },
691
-
692
- /**
693
- * Remove lens, tint and softfocus
694
- *
695
- * @private
696
- */
697
- _removeElements: function () {
698
- if (this.lens) {
699
- this.lens.remove();
700
- this.lens = null;
701
- }
702
-
703
- if (this.tint) {
704
- this.tint.remove();
705
- this.tint = null;
706
- }
707
-
708
- if (this.softFocus) {
709
- this.softFocus.remove();
710
- this.softFocus = null;
711
- }
712
-
713
- if (this.element.find('.yith_magnifier_loading').length > 0) {
714
- this.element.find('.yith_magnifier_loading').remove();
715
- }
716
- },
717
-
718
- /**
719
- * Detect if user is using a phone device (eg iPhone)
720
- *
721
- * @private
722
- */
723
- _isPhone: function () {
724
- var userAgent = navigator.userAgent.toLowerCase();
725
-
726
- return ( userAgent.match(/iphone/i) || userAgent.match(/ipod/i) || userAgent.match(/android/i) );
727
- },
728
-
729
- /**
730
- * Destroy the instance
731
- *
732
- */
733
- destroy: function () {
734
- if (this.zoom) {
735
- this.zoom.unwrap();
736
- }
737
-
738
- if (this.mouseTrap) {
739
- this.mouseTrap.unbind();
740
- this.mouseTrap.remove();
741
- this.mouseTrap = null;
742
- }
743
-
744
- if (this.zoomDiv) {
745
- this.zoomDiv.remove();
746
- this.zoomDiv = null;
747
- }
748
-
749
- if (this.options.disableRightClick) {
750
- $(document).unbind();
751
- }
752
-
753
- this._removeElements();
754
- this.options.elements.gallery.unbind();
755
- this.element.removeData('yith_magnifier');
756
- }
757
- };
758
-
759
- $.fn.yith_magnifier = function (options) {
760
-
761
- if (typeof options === 'string') {
762
- var args = Array.prototype.slice.call(arguments, 1);
763
-
764
- this.each(function () {
765
- var instance = $.data(this, 'yith_magnifier');
766
- if (!instance) {
767
- $.error("cannot call methods on yith_magnifier prior to initialization; " +
768
- "attempted to call method '" + options + "'");
769
- return;
770
- }
771
- if (!$.isFunction(instance[options]) || options.charAt(0) === "_") {
772
- $.error("no such method '" + options + "' for yith_magnifier instance");
773
- return;
774
- }
775
- instance[options].apply(instance, args);
776
- });
777
- } else {
778
- this.each(function () {
779
- var instance = $.data(this, 'yith_magnifier');
780
- if (!instance) {
781
- $.data(this, 'yith_magnifier', new $.yith_magnifier(options, this));
782
- } else {
783
- $.error('yith_magnifier already istantiated.');
784
- }
785
- });
786
- }
787
- return this;
788
- };
789
-
790
-
791
  })(window, jQuery);
1
+ /**
2
+ * YITH Magnifier
3
+ *
4
+ * @version 0.1
5
+ * @author Your Inspiration Themes Team <info@yithemes.com>
6
+ *
7
+ * MIT License.
8
+ */
9
+
10
+ ;
11
+ (function (window, $, undefined) {
12
+ 'use strict';
13
+
14
+ //include imagesLoaded plugin
15
+ if ($.fn.imagesLoaded === undefined) {
16
+ /*!
17
+ * jQuery imagesLoaded plugin v2.1.1
18
+ * http://github.com/desandro/imagesloaded
19
+ *
20
+ * MIT License. by Paul Irish et al.
21
+ */
22
+
23
+ /*jshint curly: true, eqeqeq: true, noempty: true, strict: true, undef: true, browser: true */
24
+ /*global jQuery: false */
25
+
26
+ ;
27
+ (function ($, undefined) {
28
+ 'use strict';
29
+
30
+ // blank image data-uri bypasses webkit log warning (thx doug jones)
31
+ var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
32
+
33
+ $.fn.imagesLoaded = function (callback) {
34
+ var $this = this,
35
+ deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
36
+ hasNotify = $.isFunction(deferred.notify),
37
+ $images = $this.find('img').add($this.filter('img')),
38
+ loaded = [],
39
+ proper = [],
40
+ broken = [];
41
+
42
+ // Register deferred callbacks
43
+ if ($.isPlainObject(callback)) {
44
+ $.each(callback, function (key, value) {
45
+ if (key === 'callback') {
46
+ callback = value;
47
+ } else if (deferred) {
48
+ deferred[key](value);
49
+ }
50
+ });
51
+ }
52
+
53
+ function doneLoading() {
54
+ var $proper = $(proper),
55
+ $broken = $(broken);
56
+
57
+ if (deferred) {
58
+ if (broken.length) {
59
+ deferred.reject($images, $proper, $broken);
60
+ } else {
61
+ deferred.resolve($images);
62
+ }
63
+ }
64
+
65
+ if ($.isFunction(callback)) {
66
+ callback.call($this, $images, $proper, $broken);
67
+ }
68
+ }
69
+
70
+ function imgLoadedHandler(event) {
71
+ imgLoaded(event.target, event.type === 'error');
72
+ }
73
+
74
+ function imgLoaded(img, isBroken) {
75
+ // don't proceed if BLANK image, or image is already loaded
76
+ if (img.src === BLANK || $.inArray(img, loaded) !== -1) {
77
+ return;
78
+ }
79
+
80
+ // store element in loaded images array
81
+ loaded.push(img);
82
+
83
+ // keep track of broken and properly loaded images
84
+ if (isBroken) {
85
+ broken.push(img);
86
+ } else {
87
+ proper.push(img);
88
+ }
89
+
90
+ // cache image and its state for future calls
91
+ $.data(img, 'imagesLoaded', {isBroken: isBroken, src: img.src});
92
+
93
+ // trigger deferred progress method if present
94
+ if (hasNotify) {
95
+ deferred.notifyWith($(img), [isBroken, $images, $(proper), $(broken)]);
96
+ }
97
+
98
+ // call doneLoading and clean listeners if all images are loaded
99
+ if ($images.length === loaded.length) {
100
+ setTimeout(doneLoading);
101
+ $images.unbind('.imagesLoaded', imgLoadedHandler);
102
+ }
103
+ }
104
+
105
+ // if no images, trigger immediately
106
+ if (!$images.length) {
107
+ doneLoading();
108
+ } else {
109
+ $images.bind('load.imagesLoaded error.imagesLoaded', imgLoadedHandler)
110
+ .each(function (i, el) {
111
+ var src = el.src;
112
+
113
+ // find out if this image has been already checked for status
114
+ // if it was, and src has not changed, call imgLoaded on it
115
+ var cached = $.data(el, 'imagesLoaded');
116
+ if (cached && cached.src === src) {
117
+ imgLoaded(el, cached.isBroken);
118
+ return;
119
+ }
120
+
121
+ // if complete is true and browser supports natural sizes, try
122
+ // to check for image status manually
123
+ if (el.complete && el.naturalWidth !== undefined) {
124
+ imgLoaded(el, el.naturalWidth === 0 || el.naturalHeight === 0);
125
+ return;
126
+ }
127
+
128
+ // cached images don't fire load sometimes, so we reset src, but only when
129
+ // dealing with IE, or image is complete (loaded) and failed manual check
130
+ // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
131
+ if (el.readyState || el.complete) {
132
+ el.src = BLANK;
133
+ el.src = src;
134
+ }
135
+ });
136
+ }
137
+
138
+ return deferred ? deferred.promise($this) : $this;
139
+ };
140
+
141
+ })(jQuery);
142
+ }
143
+
144
+ $.yith_magnifier = function (options, element) {
145
+ this.t = element;
146
+ this.element = $(element);
147
+ this._init(options);
148
+ };
149
+
150
+ $.yith_magnifier.defaults = {
151
+ zoomWidth: 'auto',
152
+ zoomHeight: 'auto',
153
+ position: 'right',
154
+ tint: false,
155
+ tintOpacity: 0.5,
156
+ lensOpacity: 0.5,
157
+ softFocus: false,
158
+ smoothMove: 3,
159
+ showTitle: true,
160
+ titleOpacity: 0.5,
161
+ adjustX: 0,
162
+ adjustY: 0,
163
+
164
+ phoneBehavior: 'inside', //allowed values: inside, disable, default
165
+ loadingLabel: 'Loading...',
166
+
167
+ enableSlider: true,
168
+ slider: 'carouFredSel',
169
+ sliderOptions: {},
170
+
171
+ onLoad: function () {
172
+ return false;
173
+ },
174
+ onEnter: function () {
175
+ return false
176
+ },
177
+ onLeave: function () {
178
+ return false
179
+ },
180
+ onMove: function () {
181
+ return false
182
+ },
183
+ onClick: function () {
184
+ return false;
185
+ },
186
+
187
+ elements: {
188
+ zoom: $('.yith_magnifier_zoom'),
189
+ zoomImage: $('.yith_magnifier_zoom img').first(),
190
+ gallery: $('.yith_magnifier_gallery li a')
191
+ }
192
+ };
193
+
194
+ $.yith_magnifier.prototype = {
195
+ /**
196
+ * Let's start the magnifier
197
+ *
198
+ * @param {Object} options
199
+ *
200
+ * @private
201
+ */
202
+ _init: function (options) {
203
+ var self = this;
204
+
205
+ $(document).trigger('yith_magnifier_before_init');
206
+
207
+ $.each($.yith_magnifier.defaults.elements, function (i, v) {
208
+ var el = $.yith_magnifier.defaults.elements;
209
+ el[i] = $(v, self);
210
+ });
211
+ self.options = $.extend(true, {}, $.yith_magnifier.defaults, options);
212
+ self.isPhone = self._isPhone();
213
+
214
+ self._loading();
215
+
216
+ self.element.imagesLoaded(function () {
217
+ self.options.onLoad();
218
+ self._initZoom();
219
+ self._initGallery();
220
+ });
221
+
222
+ $(document).trigger('yith_magnifier_after_init');
223
+ },
224
+
225
+
226
+ /**
227
+ * Init gallery handlers
228
+ *
229
+ * @private
230
+ *
231
+ */
232
+ _initGallery: function () {
233
+ var self = this;
234
+ var elements = self.options.elements;
235
+
236
+ var gallery = elements.gallery;
237
+ var zoom = elements.zoom;
238
+ var zoomImage = elements.zoomImage;
239
+
240
+ if (gallery.length > 0) {
241
+ gallery.on('click', function (e) {
242
+ e.preventDefault();
243
+
244
+ var t = $(this);
245
+ self.destroy();
246
+
247
+ zoom.attr('href', this.href);
248
+ zoomImage.attr('src', t.data('small'))
249
+ .attr('srcset', t.data('small'))
250
+ .attr('src-orig', t.data('small'))
251
+ .attr('title', '')
252
+ .attr('title', t.attr('title'));
253
+
254
+ $.data(self.t, 'yith_magnifier', new $.yith_magnifier(self.options, self.element));
255
+ });
256
+
257
+ //gallery.filter(':first').trigger('click');
258
+
259
+ if (self.options.enableSlider) {
260
+ gallery.closest('ul').trigger('yith_magnifier_slider_destroy');
261
+ gallery.closest('ul')[self.options.slider](self.options.sliderOptions);
262
+ }
263
+
264
+ } else {
265
+ gallery.on('click', function (e) {
266
+ e.preventDefault();
267
+ return false;
268
+ })
269
+ }
270
+ },
271
+
272
+ /**
273
+ * Show a loading icon while image isn't properly loaded
274
+ *
275
+ * @private
276
+ */
277
+ _loading: function () {
278
+ if (this.options.disableRightClick) {
279
+ $(document).on('contextmenu', function (e) {
280
+ return false;
281
+ });
282
+ }
283
+
284
+ if (this.mouseTrap === undefined) {
285
+ var w = this.options.elements.zoom.width();
286
+
287
+ if (this.options.loadingLabel) {
288
+ $('<div class="yith_magnifier_loading">' + this.options.loadingLabel + '</div>').css({
289
+ 'width': w,
290
+ 'text-align': 'center',
291
+ opacity: .5
292
+ }).appendTo(this.options.elements.zoom.parent());
293
+ }
294
+ }
295
+ },
296
+
297
+ /**
298
+ * Initialize the zoom images
299
+ *
300
+ * @private
301
+ */
302
+ _initZoom: function () {
303
+ var self = this;
304
+
305
+ self.zoom = self.options.elements.zoom;
306
+ self.zoomImage = self.options.elements.zoomImage;
307
+
308
+ //wrap the zoom image with a div
309
+ var zoom_wrap_css_class = "yith_magnifier_zoom_wrap";
310
+
311
+
312
+ if (self.options.zoom_wrap_additional_css) {
313
+ if ( !$('.' + zoom_wrap_css_class).length ) {
314
+
315
+ zoom_wrap_css_class += " " + self.options.zoom_wrap_additional_css;
316
+ }
317
+ }
318
+
319
+ self.zoom.wrap('<div class="' + zoom_wrap_css_class + '"></div>');
320
+
321
+ self.IMG_zoomImage = new Image();
322
+ self.IMG_zoomImage.src = self.zoom.attr('href');
323
+
324
+ self.IMG_smallImage = new Image();
325
+ self.IMG_smallImage.src = self.zoomImage.attr('src');
326
+
327
+ if ($.browser.msie && $.browser.version == 8) {
328
+ $(self.IMG_zoomImage).load(function () {
329
+
330
+ self._initTrap();
331
+ });
332
+ } else {
333
+
334
+ $([self.IMG_zoomImage, self.IMG_smallImage]).imagesLoaded(function () {
335
+
336
+ self._initTrap();
337
+ });
338
+ }
339
+
340
+ $(document).trigger('yith_magnifier_after_init_zoom')
341
+ },
342
+
343
+ /**
344
+ * Create the mouse trap
345
+ *
346
+ * @private
347
+ */
348
+ _initTrap: function () {
349
+ var self = this;
350
+ var zoomImg = self.IMG_zoomImage,
351
+ thumbImg = self.IMG_smallImage;
352
+
353
+ self.mx = 0;
354
+ self.my = 0;
355
+ self.controlTimer = 0;
356
+ self.lens = null;
357
+ self.tint = null;
358
+ self.softFocus = null;
359
+ self.zoomDiv = null;
360
+ self.cw = 0;
361
+ self.ch = 0;
362
+ self.zw = 0;
363
+ self.destU = 0;
364
+ self.destV = 0;
365
+ self.currU = 0;
366
+ self.currV = 0;
367
+ self.mouseTrap = null;
368
+
369
+ var zoom = self.options.elements.zoom;
370
+ var zoomImage = self.options.elements.zoomImage;
371
+
372
+ //remove loading div
373
+ //this.zoom.parent().siblings('.yith_magnifier_loading').remove();
374
+ $('.yith_magnifier_loading').remove();
375
+
376
+ if (this.element.find('.yith_magnifier_mousetrap')) {
377
+ this.element.find('.yith_magnifier_mousetrap').remove();
378
+ }
379
+
380
+ this.mouseTrap = $('<div class="yith_magnifier_mousetrap" />').css({
381
+ width: '100%', //zoomImage.outerWidth(),
382
+ height: '100%', //zoomImage.outerHeight(),
383
+ top: 0,
384
+ left: 0
385
+ }).appendTo(zoom.parent());
386
+
387
+ // Detect device type, normal mouse or touchy(ipad android) by albanx
388
+ var touchy = ("ontouchstart" in document.documentElement) ? true : false;
389
+ var event_move = 'touchmove mousemove';
390
+ var event_end = 'touchend mouseleave';
391
+ var event_ent = 'touchstart mouseenter';
392
+ var event_click = 'touchstart click';
393
+
394
+ this.mouseTrap.on(event_move, this, function (e) {
395
+ self.options.onMove();
396
+
397
+ self.mx = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageX : e.pageX;
398
+ self.my = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageY : e.pageY;
399
+
400
+ }).on(event_end, this, function (e) {
401
+
402
+ clearTimeout(self.controlTimer);
403
+ //event.data.removeBits();
404
+ if (self.lens) {
405
+ self.lens.fadeOut(299);
406
+ }
407
+ if (self.tint) {
408
+ self.tint.fadeOut(299);
409
+ }
410
+ if (self.softFocus) {
411
+ self.softFocus.fadeOut(299);
412
+ }
413
+ self.zoomDiv.fadeOut(300, function () {
414
+ self._onLeave();
415
+ });
416
+
417
+ return false;
418
+
419
+ }).on(event_click, this, function (e) {
420
+ self.options.onClick();
421
+ }).on(event_ent, this, function (e) {
422
+ self.options.onEnter();
423
+
424
+ if (touchy) {
425
+ e.preventDefault();
426
+ }
427
+
428
+ self.mx = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageX : e.pageX;
429
+ self.my = ( typeof(e.originalEvent.touches) != 'undefined' ) ? e.originalEvent.touches[0].pageY : e.pageY;
430
+
431
+ self.zw = e.data;
432
+ if (self.zoomDiv) {
433
+ self.zoomDiv.stop(true, false);
434
+ self.zoomDiv.remove();
435
+ }
436
+
437
+ var xPos = self.options.adjustX,
438
+ yPos = self.options.adjustY;
439
+
440
+ var siw = zoomImage.outerWidth();
441
+ var sih = zoomImage.outerHeight();
442
+
443
+ var w = self.options.zoomWidth;
444
+ var h = self.options.zoomHeight;
445
+
446
+ if (self.options.zoomWidth == 'auto') {
447
+ w = siw;
448
+ }
449
+
450
+ if (self.options.zoomHeight == 'auto') {
451
+ h = sih;
452
+ }
453
+
454
+ var appendTo = zoom.parent();
455
+ switch (self.options.position) {
456
+ case 'top':
457
+ yPos -= h;
458
+ break;
459
+ case 'right':
460
+ xPos += siw;
461
+ break;
462
+ case 'bottom':
463
+ yPos += sih;
464
+ break;
465
+ case 'left':
466
+ xPos -= w;
467
+ break;
468
+ case 'inside':
469
+ w = siw;
470
+ h = sih;
471
+ break;
472
+
473
+ // All other values, try and find an id in the dom to attach to.
474
+ default:
475
+ appendTo = $('#' + self.options.position);
476
+ // If dom element doesn't exit, just use 'right' position as default.
477
+ if (!appendTo.length) {
478
+ appendTo = zoom;
479
+ xPos += siw; //+ opts.adjustX;
480
+ yPos += sih; // + opts.adjustY;
481
+ } else {
482
+ w = appendTo.innerWidth();
483
+ h = appendTo.innerHeight();
484
+ }
485
+ }
486
+
487
+ if (self.isPhone && self.options.phoneBehavior == 'inside') {
488
+ w = siw;
489
+ h = sih;
490
+ xPos = 0;
491
+ yPos = 0;
492
+ }
493
+
494
+ self.zoomDiv = $('<div class="yith_magnifier_zoom_magnifier" />').css({
495
+ left: xPos,
496
+ top: yPos,
497
+ width: w,
498
+ height: h,
499
+ 'background-repeat': 'no-repeat',
500
+ backgroundImage: 'url(' + zoomImg.src + ')'
501
+ }).appendTo(appendTo);
502
+
503
+ // Add the title from title tag.
504
+ if (zoomImage.attr('title') && self.options.showTitle) {
505
+ $('<div class="yith_magnifier_title">' + zoomImage.attr('title') + '</div>').appendTo(self.zoomDiv);
506
+ }
507
+
508
+ if (self.isPhone) {
509
+ if (self.options.phoneBehavior != 'disable') {
510
+ self.zoomDiv.fadeIn(500);
511
+ } else {
512
+ self.lens.fadeOut(299);
513
+ }
514
+ } else {
515
+ self.zoomDiv.fadeIn(500);
516
+ }
517
+
518
+ if (self.lens) {
519
+ self.lens.remove();
520
+ self.lens = null;
521
+ }
522
+
523
+ if (zoomImg.width <= 1) {
524
+ self.cw = (zoomImage.outerWidth() / zoomImg.naturalWidth) * self.zoomDiv.width();
525
+ } else {
526
+ self.cw = (zoomImage.outerWidth() / zoomImg.width) * self.zoomDiv.width();
527
+ }
528
+
529
+ if (zoomImg.height <= 1) {
530
+ self.ch = (zoomImage.outerHeight() / zoomImg.naturalHeight) * self.zoomDiv.height();
531
+ } else {
532
+ self.ch = (zoomImage.outerHeight() / zoomImg.height) * self.zoomDiv.height();
533
+ }
534
+
535
+ // Attach mouse, initially invisible to prevent first frame glitch
536
+ self.lens = $('<div class="yith_magnifier_lens" />').css({
537
+ width: self.cw,
538
+ height: self.ch
539
+ }).appendTo(zoom);
540
+
541
+ self.mouseTrap.css('cursor', self.lens.css('cursor'));
542
+
543
+ var noTrans = false;
544
+
545
+
546
+ // Init tint layer if needed. (Not relevant if using inside mode)
547
+ if (self.options.tint) {
548
+ //self.lens.css('background', 'url("' + zoomImage.attr('src') + '")');
549
+ self.tint = $('<div />').css({
550
+ display: 'none',
551
+ position: 'absolute',
552
+ left: 0,
553
+ top: 0,
554
+ width: zoomImage.outerWidth(),
555
+ height: zoomImage.outerHeight(),
556
+ backgroundColor: self.options.tint,
557
+ opacity: self.options.tintOpacity
558
+ }).appendTo(zoom);
559
+
560
+
561
+ self.lens.append($('<img />', {
562
+ src: zoomImage.attr('src')
563
+ }));
564
+
565
+ noTrans = true;
566
+ self.tint.fadeIn(500);
567
+ }
568
+
569
+ if (self.options.softFocus) {
570
+ //self.lens.css('background', 'url("' + zoomImage.attr('src') + '")');
571
+ self.softFocus = $('<div />').css({
572
+ position: 'absolute',
573
+ display: 'none',
574
+ top: '1px',
575
+ left: '1px',
576
+ width: zoomImage.outerWidth(),
577
+ height: zoomImage.outerHeight(),
578
+ //background: 'url("' + zoomImage.attr('src') + '")',
579
+ //backgroundSize: '100%',
580
+ opacity: .5
581
+ }).appendTo(zoom);
582
+
583
+ self.softFocus.append($('<img />', {
584
+ src: zoomImage.attr('src')
585
+ }));
586
+
587
+ if (self.lens.find('img').length == 0) {
588
+ self.lens.append($('<img />', {
589
+ src: zoomImage.attr('src')
590
+ }));
591
+ }
592
+
593
+ noTrans = true;
594
+ self.softFocus.fadeIn(500);
595
+ }
596
+
597
+
598
+ if (!noTrans) {
599
+ self.lens.css('opacity', self.options.lensOpacity);
600
+ }
601
+ if (self.options.position !== 'inside') {
602
+ self.lens.fadeIn(500);
603
+ }
604
+
605
+ // Start processing.
606
+ self.zw._controlLoop();
607
+
608
+ return; // Don't return false here otherwise opera will not detect change of the mouse pointer type.
609
+ });
610
+ },
611
+
612
+ /**
613
+ *
614
+ *
615
+ * @private
616
+ */
617
+ _controlLoop: function () {
618
+ var self = this;
619
+
620
+ if (this.lens) {
621
+ var x = (this.mx - this.zoomImage.offset().left - (this.cw * 0.5)) >> 0;
622
+ var y = (this.my - this.zoomImage.offset().top - (this.ch * 0.5)) >> 0;
623
+
624
+ if (x < 0) {
625
+ x = 0;
626
+ } else if (x > (this.zoomImage.outerWidth() - this.cw)) {
627
+ x = (this.zoomImage.outerWidth() - this.cw);
628
+ }
629
+
630
+ if (y < 0) {
631
+ y = 0;
632
+ } else if (y > (this.zoomImage.outerHeight() - this.ch)) {
633
+ y = (this.zoomImage.outerHeight() - this.ch);
634
+ }
635
+
636
+ this.lens.css({
637
+ left: x - 2,
638
+ top: y - 1
639
+ });
640
+
641
+ //this.lens.css('background-position', (-x) + 'px ' + (-y) + 'px');
642
+
643
+
644
+ this.lens.find('img').css({
645
+ width: this.zoomImage.outerWidth(),
646
+ height: this.zoomImage.outerHeight(),
647
+ marginLeft: (-x) + 'px ',
648
+ marginTop: (-y) + 'px'
649
+ });
650
+
651
+
652
+ if (this.IMG_zoomImage.width <= 1) {
653
+ this.destU = (((x) / this.zoomImage.outerWidth()) * this.IMG_zoomImage.naturalWidth) >> 0;
654
+ } else {
655
+ this.destU = (((x) / this.zoomImage.outerWidth()) * this.IMG_zoomImage.width) >> 0;
656
+ }
657
+
658
+ if (this.IMG_zoomImage.height <= 1) {
659
+ this.destV = (((y) / this.zoomImage.outerHeight()) * this.IMG_zoomImage.naturalHeight) >> 0;
660
+ } else {
661
+ this.destV = (((y) / this.zoomImage.outerHeight()) * this.IMG_zoomImage.height) >> 0;
662
+ }
663
+
664
+
665
+ this.currU += (this.destU - this.currU) / this.options.smoothMove;
666
+ this.currV += (this.destV - this.currV) / this.options.smoothMove;
667
+
668
+ this.zoomDiv.css('background-position', (-(this.currU >> 0) + 'px ') + (-(this.currV >> 0) + 'px'));
669
+ }
670
+
671
+ this.controlTimer = setTimeout(function () {
672
+ self._controlLoop();
673
+ }, 30);
674
+ },
675
+
676
+ /**
677
+ * This method is called when the mouse leave the image
678
+ *
679
+ * @private
680
+ */
681
+ _onLeave: function () {
682
+ this.options.onLeave();
683
+
684
+ if (this.zoomDiv) {
685
+ this.zoomDiv.remove();
686
+ this.zoomDiv = null;
687
+ }
688
+
689
+ this._removeElements();
690
+ },
691
+
692
+ /**
693
+ * Remove lens, tint and softfocus
694
+ *
695
+ * @private
696
+ */
697
+ _removeElements: function () {
698
+ if (this.lens) {
699
+ this.lens.remove();
700
+ this.lens = null;
701
+ }
702
+
703
+ if (this.tint) {
704
+ this.tint.remove();
705
+ this.tint = null;
706
+ }
707
+
708
+ if (this.softFocus) {
709
+ this.softFocus.remove();
710
+ this.softFocus = null;
711
+ }
712
+
713
+ if (this.element.find('.yith_magnifier_loading').length > 0) {
714
+ this.element.find('.yith_magnifier_loading').remove();
715
+ }
716
+ },
717
+
718
+ /**
719
+ * Detect if user is using a phone device (eg iPhone)
720
+ *
721
+ * @private
722
+ */
723
+ _isPhone: function () {
724
+ var userAgent = navigator.userAgent.toLowerCase();
725
+
726
+ return ( userAgent.match(/iphone/i) || userAgent.match(/ipod/i) || userAgent.match(/android/i) );
727
+ },
728
+
729
+ /**
730
+ * Destroy the instance
731
+ *
732
+ */
733
+ destroy: function () {
734
+ if (this.zoom) {
735
+ this.zoom.unwrap();
736
+ }
737
+
738
+ if (this.mouseTrap) {
739
+ this.mouseTrap.unbind();
740
+ this.mouseTrap.remove();
741
+ this.mouseTrap = null;
742
+ }
743
+
744
+ if (this.zoomDiv) {
745
+ this.zoomDiv.remove();
746
+ this.zoomDiv = null;
747
+ }
748
+
749
+ if (this.options.disableRightClick) {
750
+ $(document).unbind();
751
+ }
752
+
753
+ this._removeElements();
754
+ this.options.elements.gallery.unbind();
755
+ this.element.removeData('yith_magnifier');
756
+ }
757
+ };
758
+
759
+ $.fn.yith_magnifier = function (options) {
760
+
761
+ if (typeof options === 'string') {
762
+ var args = Array.prototype.slice.call(arguments, 1);
763
+
764
+ this.each(function () {
765
+ var instance = $.data(this, 'yith_magnifier');
766
+ if (!instance) {
767
+ $.error("cannot call methods on yith_magnifier prior to initialization; " +
768
+ "attempted to call method '" + options + "'");
769
+ return;
770
+ }
771
+ if (!$.isFunction(instance[options]) || options.charAt(0) === "_") {
772
+ $.error("no such method '" + options + "' for yith_magnifier instance");
773
+ return;
774
+ }
775
+ instance[options].apply(instance, args);
776
+ });
777
+ } else {
778
+ this.each(function () {
779
+ var instance = $.data(this, 'yith_magnifier');
780
+ if (!instance) {
781
+ $.data(this, 'yith_magnifier', new $.yith_magnifier(options, this));
782
+ } else {
783
+ $.error('yith_magnifier already istantiated.');
784
+ }
785
+ });
786
+ }
787
+ return this;
788
+ };
789
+
790
+
791
  })(window, jQuery);
init.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: YITH WooCommerce Zoom Magnifier
4
  * Plugin URI: http://yithemes.com/themes/plugins/yith-woocommerce-zoom-magnifier/
5
  * Description: YITH WooCommerce Zoom Magnifier enables you to add a zoom effect to product images and a thumbnail slider for the product image gallery.
6
- * Version: 1.2.19
7
  * Author: YITHEMES
8
  * Author URI: http://yithemes.com/
9
  * Text Domain: yith-woocommerce-zoom-magnifier
@@ -11,7 +11,7 @@
11
  *
12
  * @author Your Inspiration Themes
13
  * @package YITH WooCommerce Magnifier
14
- * @version 1.2.19
15
  */
16
  /* Copyright 2013-2015 Your Inspiration Themes (email : plugins@yithemes.com)
17
 
@@ -76,7 +76,7 @@ if ( ! function_exists ( 'yith_plugin_registration_hook' ) ) {
76
  register_activation_hook ( __FILE__, 'yith_plugin_registration_hook' );
77
 
78
  defined ( 'YITH_YWZM_FREE_INIT' ) || define ( 'YITH_YWZM_FREE_INIT', plugin_basename ( __FILE__ ) );
79
- defined ( 'YITH_YWZM_VERSION' ) || define ( 'YITH_YWZM_VERSION', '1.2.19' );
80
  defined ( 'YITH_YWZM_FILE' ) || define ( 'YITH_YWZM_FILE', __FILE__ );
81
  defined ( 'YITH_YWZM_DIR' ) || define ( 'YITH_YWZM_DIR', plugin_dir_path ( __FILE__ ) );
82
  defined ( 'YITH_YWZM_URL' ) || define ( 'YITH_YWZM_URL', plugins_url ( '/', __FILE__ ) );
3
  * Plugin Name: YITH WooCommerce Zoom Magnifier
4
  * Plugin URI: http://yithemes.com/themes/plugins/yith-woocommerce-zoom-magnifier/
5
  * Description: YITH WooCommerce Zoom Magnifier enables you to add a zoom effect to product images and a thumbnail slider for the product image gallery.
6
+ * Version: 1.2.20
7
  * Author: YITHEMES
8
  * Author URI: http://yithemes.com/
9
  * Text Domain: yith-woocommerce-zoom-magnifier
11
  *
12
  * @author Your Inspiration Themes
13
  * @package YITH WooCommerce Magnifier
14
+ * @version 1.2.20
15
  */
16
  /* Copyright 2013-2015 Your Inspiration Themes (email : plugins@yithemes.com)
17
 
76
  register_activation_hook ( __FILE__, 'yith_plugin_registration_hook' );
77
 
78
  defined ( 'YITH_YWZM_FREE_INIT' ) || define ( 'YITH_YWZM_FREE_INIT', plugin_basename ( __FILE__ ) );
79
+ defined ( 'YITH_YWZM_VERSION' ) || define ( 'YITH_YWZM_VERSION', '1.2.20' );
80
  defined ( 'YITH_YWZM_FILE' ) || define ( 'YITH_YWZM_FILE', __FILE__ );
81
  defined ( 'YITH_YWZM_DIR' ) || define ( 'YITH_YWZM_DIR', plugin_dir_path ( __FILE__ ) );
82
  defined ( 'YITH_YWZM_URL' ) || define ( 'YITH_YWZM_URL', plugins_url ( '/', __FILE__ ) );
languages/yith-woocommerce-zoom-magnifier-es_ES.mo ADDED
Binary file
languages/yith-woocommerce-zoom-magnifier-es_ES.po ADDED
@@ -0,0 +1,489 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: YITH WooCommerce Order Tracking\n"
4
+ "POT-Creation-Date: 2016-06-13 16:57+0200\n"
5
+ "PO-Revision-Date: 2016-06-13 16:57+0200\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Your Inspiration Themes <plugins@yithemes.com>\n"
8
+ "Language: es_ES\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.8.4\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=n!=1;\n"
15
+ "X-Poedit-KeywordsList: __ ;_e;_n:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
16
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-SearchPath-0: .\n"
19
+ "X-Poedit-SearchPathExcluded-0: plugin-fw\n"
20
+
21
+ #: class.yith-wcmg-admin.php:81
22
+ msgid "Image Size"
23
+ msgstr "Tamaño de la imagen"
24
+
25
+ #: class.yith-wcmg-admin.php:82 plugin-options/general-options.php:17
26
+ msgid "The size of the images used within the magnifier box"
27
+ msgstr "El tamaño de las imágenes usadas dentro de la caja de zoom"
28
+
29
+ #: init.php:50
30
+ msgid ""
31
+ "YITH WooCommerce Zoom Magnifier is enabled but not effective. It requires "
32
+ "WooCommerce in order to work."
33
+ msgstr ""
34
+ "YITH WooCommerce Zoom Magnifier está habilitado pero no es efectivo. "
35
+ "Requiere WooCommerce para funcionar."
36
+
37
+ #: init.php:66
38
+ msgid ""
39
+ "You can't activate the free version of YITH WooCommerce Zoom Magnifier while "
40
+ "you are using the premium one."
41
+ msgstr ""
42
+
43
+ #: lib/class.yith-ywzm-custom-types.php:159
44
+ msgid "Do you want to hard crop the image?"
45
+ msgstr "¿Quieres recortar la imagen?"
46
+
47
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:124
48
+ msgid "General"
49
+ msgstr "General"
50
+
51
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:127
52
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:191
53
+ msgid "Premium Version"
54
+ msgstr "Versión Premium"
55
+
56
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:129
57
+ msgid "Product exclusion list"
58
+ msgstr ""
59
+
60
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:188
61
+ msgid "Settings"
62
+ msgstr "Ajustes"
63
+
64
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:216
65
+ msgid "Plugin Documentation"
66
+ msgstr "Documentación del Plugin"
67
+
68
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:229
69
+ msgid ""
70
+ "YITH WooCommerce Zoom Magnifier is available in an outstanding PREMIUM "
71
+ "version with many new options, discover it now."
72
+ msgstr ""
73
+ "YITH WooCommerce Zoom Magnifier está disponible en una espectacular versión "
74
+ "PREMIUM con muchas nuevas opciones, descúbrela ahora."
75
+
76
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:230
77
+ msgid "Premium version"
78
+ msgstr "Versión Pemium"
79
+
80
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:237
81
+ #: plugin-options/general-options.php:217
82
+ msgid "YITH WooCommerce Zoom Magnifier"
83
+ msgstr "YITH WooCommerce Zoom Magnifier"
84
+
85
+ #: lib/class.yith-ywzm-plugin-fw-loader.php:238
86
+ msgid ""
87
+ "In YIT Plugins tab you can find YITH WooCommerce Zoom Magnifier options."
88
+ "<br> From this menu you can access all settings of the YITH plugins "
89
+ "activated."
90
+ msgstr ""
91
+ "En la pestaña YITH Plugins puedes encontrar opciones de YITH WooCommerce "
92
+ "Zoom Magnifier. <br> Desde este menú puedes acceder a todos los ajustes de "
93
+ "los plugin YITH activados."
94
+
95
+ #: plugin-options/general-options.php:16
96
+ msgid "Image size"
97
+ msgstr "Tamaño de imagen"
98
+
99
+ #: plugin-options/general-options.php:36
100
+ msgid "General Settings"
101
+ msgstr "Ajustes Generales"
102
+
103
+ #: plugin-options/general-options.php:42
104
+ msgid "Activate YITH WooCommerce Zoom Magnifier"
105
+ msgstr "Activar YITH WooCommerce Zoom Magnifier"
106
+
107
+ #: plugin-options/general-options.php:43
108
+ msgid "Activate the plugin or use the WooCommerce default product image."
109
+ msgstr ""
110
+ "Activar el plugin o usar la imagen de producto por defecto de WooComerce."
111
+
112
+ #: plugin-options/general-options.php:50
113
+ msgid "Activate on mobile device"
114
+ msgstr "Activar en dispositivos móviles"
115
+
116
+ #: plugin-options/general-options.php:51
117
+ msgid ""
118
+ "Set if zoom and slider functionalities should be shown also on mobile "
119
+ "devices."
120
+ msgstr ""
121
+ "Establecer si las funcionalidades del zoom y el deslizador deberían "
122
+ "mostrarse también en dispositivos móviles."
123
+
124
+ #: plugin-options/general-options.php:59
125
+ msgid "Forced Image Size"
126
+ msgstr "Tamaño de imagen obligatiorio"
127
+
128
+ #: plugin-options/general-options.php:60
129
+ msgid ""
130
+ "If disabled, you will able to customize the sizes of the zoomed images. "
131
+ "Disable it at your own risk; the magnifier could not properly work with "
132
+ "images out of proportion."
133
+ msgstr ""
134
+ "Si está deshabilitado, podrás personalizar los tamaños de las imágenes "
135
+ "aumentadas. Desactívalo bajo tu propio riesgo, la lupa no funciona "
136
+ "correctamente con imágenes desproporcionadas."
137
+
138
+ #: plugin-options/general-options.php:74
139
+ msgid "Magnifier Settings"
140
+ msgstr "Ajustes del xoom"
141
+
142
+ #: plugin-options/general-options.php:80
143
+ msgid "Zoom Box Width"
144
+ msgstr "Ancho del cuadro de zoom"
145
+
146
+ #: plugin-options/general-options.php:81
147
+ msgid "The width of the magnifier box (default: auto)"
148
+ msgstr "El ancho del cuadro de zoom (por defecto: auto)"
149
+
150
+ #: plugin-options/general-options.php:88
151
+ msgid "Zoom Box Height"
152
+ msgstr "Altura del cuadro de zoom"
153
+
154
+ #: plugin-options/general-options.php:89
155
+ msgid "The height of the magnifier box (default: auto)"
156
+ msgstr "La altura del cuadro de zoom (por defecto: auto)"
157
+
158
+ #: plugin-options/general-options.php:97
159
+ msgid "Zoom Box Position"
160
+ msgstr "Posición del cuadro de zoom"
161
+
162
+ #: plugin-options/general-options.php:98
163
+ msgid "The magnifier position"
164
+ msgstr "La posición del cuadro de zoom"
165
+
166
+ #: plugin-options/general-options.php:104
167
+ msgid "Right"
168
+ msgstr "Derecha"
169
+
170
+ #: plugin-options/general-options.php:105
171
+ #: plugin-options/general-options.php:117
172
+ msgid "Inside"
173
+ msgstr "Dentro"
174
+
175
+ #: plugin-options/general-options.php:109
176
+ msgid "Zoom Box Position for mobile devices"
177
+ msgstr "Posición del cuadro de zoom en dispositivos móviles"
178
+
179
+ #: plugin-options/general-options.php:110
180
+ msgid "The magnifier position for the mobile devices (iPhone, Android, etc.)"
181
+ msgstr "La posición del zoom en dispositivos móviles (iPhone, Android, etc.)"
182
+
183
+ #: plugin-options/general-options.php:116
184
+ msgid "Default"
185
+ msgstr "Por defecto"
186
+
187
+ #: plugin-options/general-options.php:118
188
+ msgid "Disable"
189
+ msgstr "Deshabilitar"
190
+
191
+ #: plugin-options/general-options.php:122
192
+ msgid "Loading label"
193
+ msgstr "Etiqueta de cargando"
194
+
195
+ #: plugin-options/general-options.php:125
196
+ #: plugin-options/general-options.php:126
197
+ msgid "Loading..."
198
+ msgstr "Cargando..."
199
+
200
+ #: plugin-options/general-options.php:131
201
+ msgid "Lens Opacity"
202
+ msgstr "Opacidad de la lente"
203
+
204
+ #: plugin-options/general-options.php:142
205
+ msgid "Blur"
206
+ msgstr "Difuminar"
207
+
208
+ #: plugin-options/general-options.php:143
209
+ msgid "Add a blur effect to the small image on mouse hover."
210
+ msgstr ""
211
+ "Añadir un efecto de disolverse a la imagen pequeña con el evento hover del "
212
+ "ratón."
213
+
214
+ #: plugin-options/general-options.php:154
215
+ msgid "Slider Settings"
216
+ msgstr "Ajustes de Deslizador"
217
+
218
+ #: plugin-options/general-options.php:160
219
+ msgid "Activate Slider"
220
+ msgstr "Activar Deslizador"
221
+
222
+ #: plugin-options/general-options.php:161
223
+ msgid "Activate Thumbnail Slider."
224
+ msgstr "Activar miniatura de Deslizador."
225
+
226
+ #: plugin-options/general-options.php:168
227
+ msgid "Activate Responsive Slider"
228
+ msgstr "Activar Deslizador Responsive"
229
+
230
+ #: plugin-options/general-options.php:169
231
+ msgid ""
232
+ "This option fits the thumbnails within the available space. Disable it if "
233
+ "you want to manage freely the thumbnails (eg. add margins, paddings, etc.)"
234
+ msgstr ""
235
+ "Esta opción ajusta las miniaturas dentro del espacio disponible. "
236
+ "Deshabilítala si quieres administrar libremente las miniaturas (p.ej.: "
237
+ "añadir márgenes, rellenos, etc.)"
238
+
239
+ #: plugin-options/general-options.php:176
240
+ msgid "Items"
241
+ msgstr "Elementos"
242
+
243
+ #: plugin-options/general-options.php:177
244
+ msgid "Number of items to show"
245
+ msgstr "Número de elementos que se muestran"
246
+
247
+ #: plugin-options/general-options.php:187
248
+ msgid "Circular carousel"
249
+ msgstr "Carrusel circular"
250
+
251
+ #: plugin-options/general-options.php:188
252
+ msgid "It defines whether the carousel should be circular."
253
+ msgstr "Define si el carrusel debe ser circular"
254
+
255
+ #: plugin-options/general-options.php:195
256
+ msgid "Infinite carousel"
257
+ msgstr "Carrusel infinito"
258
+
259
+ #: plugin-options/general-options.php:196
260
+ msgid ""
261
+ "It defines whether the carousel should be infinite. Note: It is possible to "
262
+ "create a non-circular, infinite carousel, but it is not possible to create a "
263
+ "circular, non-infinite carousel."
264
+ msgstr ""
265
+ "Define si el carrusel debe ser infinito. Nota: es posible crear un carrusel "
266
+ "infinito no circular, pero no es posible crear un carrusel circular no "
267
+ "infinito."
268
+
269
+ #: plugin-options/general-options.php:214
270
+ msgid "Upgrade to the PREMIUM VERSION"
271
+ msgstr "Actualiza a la VERSIÓN PREMIUM"
272
+
273
+ #: plugin-options/general-options.php:218
274
+ msgid "Discover The Advanced Features"
275
+ msgstr "Descubre las características avanzadas"
276
+
277
+ #: plugin-options/general-options.php:219
278
+ msgid ""
279
+ "Upgrade to the PREMIUM VERSION of YITH WOOCOMMERCE ZOOM MAGNIFIER to benefit "
280
+ "from all features!"
281
+ msgstr ""
282
+ "¡Actualiza a la VERSIÓN PREMIUM de YITH WOOCOMMERCE ZOOM MAGNIFIER para "
283
+ "beneficiarte de todas las características!"
284
+
285
+ #: plugin-options/general-options.php:223
286
+ msgid ""
287
+ "See YITH WooCommerce Zoom Magnifier plugin with full premium features in "
288
+ "action"
289
+ msgstr ""
290
+ "Ver cómo es el plugin YITH WooCommerce Zoom Magnifier con todas sus "
291
+ "características premium en acción"
292
+
293
+ #: plugin-options/general-options.php:225
294
+ msgid "Get Support and Pro Features"
295
+ msgstr "Hazte con Características Pro y Soporte"
296
+
297
+ #: plugin-options/general-options.php:226
298
+ msgid ""
299
+ "Purchasing the premium version of the plugin, you will take advantage of the "
300
+ "advanced features of the product, and you will get one year of free updates "
301
+ "and support through our platform available 24h/24."
302
+ msgstr ""
303
+ "Comprando la versión premium del plugin, obtendrás las ventajas de las "
304
+ "características avanzadas del producto, y tendrás un año de actualizaciones "
305
+ "gratuitas y de soporte a través de nuestra plataforma disponible 24h/24."
306
+
307
+ #: templates/admin/premium.php:193
308
+ #, php-format
309
+ msgid ""
310
+ "Upgrade to the %1$s premium version %2$s of %1$s YITH WooCommerce Zoom "
311
+ "Magnifier %2$s to benefit from all features!"
312
+ msgstr ""
313
+
314
+ #: templates/admin/premium.php:196
315
+ #, php-format
316
+ msgid "%1$sUPGRADE%2$s%3$sto the premium version%2$s"
317
+ msgstr ""
318
+
319
+ #: templates/admin/premium.php:202
320
+ #, php-format
321
+ msgid "%1$sPremium Features%2$s"
322
+ msgstr ""
323
+
324
+ #: templates/admin/premium.php:210
325
+ msgid "ZOOM BOX POSITION"
326
+ msgstr ""
327
+
328
+ #: templates/admin/premium.php:213
329
+ #, php-format
330
+ msgid ""
331
+ "Choose where you want to show the %1$szoomed version%2$s of the image of "
332
+ "your products. Place it above or below the original image, on its left or "
333
+ "its right, or you can even place it over it.$2$s"
334
+ msgstr ""
335
+
336
+ #: templates/admin/premium.php:223
337
+ msgid "ENLARGE THE IMAGES"
338
+ msgstr ""
339
+
340
+ #: templates/admin/premium.php:225
341
+ msgid ""
342
+ "Just one click and the product image will appear in a bigger size in a modal "
343
+ "window. A further chance to let users analyze in a better way what you sell."
344
+ msgstr ""
345
+
346
+ #: templates/admin/premium.php:240
347
+ msgid "EXCLUDE PRODUCTS"
348
+ msgstr ""
349
+
350
+ #: templates/admin/premium.php:242
351
+ msgid ""
352
+ "Tailored options to limit the plugin features only to certain products. Some "
353
+ "of these could have too small images to be zoomed, or maybe being part of "
354
+ "categories that do not imply zoomed images. Select the products and the "
355
+ "categories to exclude and delete all your problems"
356
+ msgstr ""
357
+
358
+ #: templates/admin/premium.php:251
359
+ #, php-format
360
+ msgid ""
361
+ "Upgrade to the %1$spremium version%2$s of %1$sYITH WooCommerce Zoom Magnifier"
362
+ "%2$s to benefit from all features!"
363
+ msgstr ""
364
+
365
+ #: templates/admin/premium.php:254
366
+ #, php-format
367
+ msgid "%1$sUPGRADE%2$s %3$sto the premium version%2$s"
368
+ msgstr ""
369
+
370
+ #: yit-common/yith-panel.php:429
371
+ msgid "Select a date"
372
+ msgstr "Selecciona una fecha"
373
+
374
+ #: yit-common/yith-panel.php:430
375
+ msgid "Hours"
376
+ msgstr "Horas"
377
+
378
+ #: yit-common/yith-panel.php:431 yit-common/yith-panel.php:432
379
+ msgid "Minutes"
380
+ msgstr "Minutos"
381
+
382
+ #: yit-common/yith-panel.php:440
383
+ msgid "Upload"
384
+ msgstr "Actualizar"
385
+
386
+ #: yit-common/yith-panel.php:477
387
+ msgid "px"
388
+ msgstr "px"
389
+
390
+ #: yit-common/yith-panel.php:479
391
+ msgid "em"
392
+ msgstr "em"
393
+
394
+ #: yit-common/yith-panel.php:481
395
+ msgid "pt"
396
+ msgstr "pt"
397
+
398
+ #: yit-common/yith-panel.php:483
399
+ msgid "rem"
400
+ msgstr "rem"
401
+
402
+ #: yit-common/yith-panel.php:495
403
+ msgid "Select a font family"
404
+ msgstr "Selecciona un tipo de fuente"
405
+
406
+ #: yit-common/yith-panel.php:505
407
+ msgid "Regular"
408
+ msgstr "Normal"
409
+
410
+ #: yit-common/yith-panel.php:507
411
+ msgid "Bold"
412
+ msgstr "Negrita"
413
+
414
+ #: yit-common/yith-panel.php:509
415
+ msgid "Extra bold"
416
+ msgstr "Extra negrita"
417
+
418
+ #: yit-common/yith-panel.php:511
419
+ msgid "Italic"
420
+ msgstr "Cursiva"
421
+
422
+ #: yit-common/yith-panel.php:513
423
+ msgid "Italic bold"
424
+ msgstr "Negrita cursiva"
425
+
426
+ #: yit-common/yith-panel.php:529
427
+ msgid "Click to preview"
428
+ msgstr "Haz click para previsualizar"
429
+
430
+ #~ msgid "product"
431
+ #~ msgstr "praducto"
432
+
433
+ #~ msgid "products"
434
+ #~ msgstr "productos"
435
+
436
+ #~ msgid "Remove from exclusions"
437
+ #~ msgstr "Quitar de las exclusiones"
438
+
439
+ #~ msgid "Edit product"
440
+ #~ msgstr "Editar producto"
441
+
442
+ #~ msgid "Remove from list"
443
+ #~ msgstr "Eliminar de la lista"
444
+
445
+ #~ msgid "%s product removed successfully"
446
+ #~ msgid_plural "%s products removed successfully"
447
+ #~ msgstr[0] "El producto %s ha sido eliminado con éxito"
448
+ #~ msgstr[1] "Los productos %s han sido eliminados con éxito"
449
+
450
+ #~ msgid "%s product added successfully"
451
+ #~ msgid_plural "%s products added successfully"
452
+ #~ msgstr[0] "El producto %s ha sido añadido con éxito"
453
+ #~ msgstr[1] "Los productos %s han sido añadidos con éxito"
454
+
455
+ #~ msgid "Product updated successfully"
456
+ #~ msgstr "Producto actualizado con éxito"
457
+
458
+ #~ msgid "Single Product Exclusion List"
459
+ #~ msgstr "Lista de Exclusión de Productos"
460
+
461
+ #~ msgid "Add Products"
462
+ #~ msgstr "Añadir productos"
463
+
464
+ #~ msgid "Products to exclude"
465
+ #~ msgstr "Productos para excluir"
466
+
467
+ #~ msgid "Add product exclusion"
468
+ #~ msgstr "Añadir exclusión de producto"
469
+
470
+ #~ msgid "Return to exclusion list"
471
+ #~ msgstr "Devolver a la lista de exclusión"
472
+
473
+ #~ msgid "Select at least one product"
474
+ #~ msgstr "Selecciona al menos un producto"
475
+
476
+ #~ msgid "Exclude product categories"
477
+ #~ msgstr "Excluir categorías de productos"
478
+
479
+ #~ msgid "Top"
480
+ #~ msgstr "Arriba"
481
+
482
+ #~ msgid "Bottom"
483
+ #~ msgstr "Abajo"
484
+
485
+ #~ msgid "Left"
486
+ #~ msgstr "Izquierda"
487
+
488
+ #~ msgid "Product"
489
+ #~ msgstr "Producto"
languages/yith-woocommerce-zoom-magnifier.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: YITH WooCommerce Order Tracking\n"
5
- "POT-Creation-Date: 2016-05-04 10:49+0200\n"
6
  "PO-Revision-Date: 2015-04-22 12:25+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Your Inspiration Themes <plugins@yithemes.com>\n"
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: YITH WooCommerce Order Tracking\n"
5
+ "POT-Creation-Date: 2016-06-13 16:57+0200\n"
6
  "PO-Revision-Date: 2015-04-22 12:25+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Your Inspiration Themes <plugins@yithemes.com>\n"
plugin-fw/assets/css/yit-plugin-panel-sidebar.css CHANGED
@@ -20,8 +20,8 @@
20
  right : 0;
21
  }
22
 
23
- #yit-panel-sidebar.yith-panel-sidebar-hidden #yit-panel-sidebar-widgets-container{
24
- display: none;
25
  }
26
 
27
  .yit-panel-sidebar-widget-wrapper {
@@ -226,45 +226,56 @@ img.yit-panel-sidebar-widget-despacho-image {
226
 
227
  #yit-panel-sidebar-membership-widget .yit-panel-sidebar-widget-content {
228
  background : transparent url('../images/widgets/membership-bg.png') no-repeat;
229
- background-position : 100% 180%;
230
  background-size : 50%;
231
  }
232
 
 
 
 
 
 
 
233
  #yit-panel-sidebar-membership-widget .membership-total-price {
234
  font-size : 25px;
235
  font-weight : 700;
236
- display : inline-block;
 
 
 
 
237
 
238
  }
239
 
240
  #yit-panel-sidebar-membership-widget .membership-offer-text {
241
- display : inline-block;
242
  font-size : 10px;
243
  text-transform : uppercase;
244
- width : 130px;
245
  line-height : 14px;
 
 
246
  }
247
 
248
  #yit-panel-sidebar-membership-widget .membership-offer-text2 {
249
- display : inline-block;
250
  font-size : 10px;
251
  text-transform : uppercase;
252
- width : 36%;
253
  text-align : right;
254
  vertical-align : middle;
255
- margin : 17px 0;
256
  }
257
 
258
  #yit-panel-sidebar-membership-widget .membership-offer-sale-text {
259
- display : inline-block;
260
- font-size : 24px;
261
  color : #ff6340;
262
  text-transform : uppercase;
263
- width : 55%;
264
  text-align : left;
265
  vertical-align : middle;
266
- margin : 17px 0;
267
- font-weight : 700;
 
268
  }
269
 
270
  #yit-panel-sidebar-membership-widget .membership-buttons {
@@ -318,12 +329,12 @@ ul.yit-panel-sidebar-links-list li:before {
318
  border-radius : 50%;
319
  }
320
 
321
- #yit-panel-sidebar-action-hide:hover .yit-panel-sidebar-action-title{
322
- color: #000;
323
  }
324
 
325
- #yit-panel-sidebar-action-hide:hover .yit-panel-sidebar-action-hide-icon{
326
- background: #000;
327
  }
328
 
329
  .hide-on-click .yit-panel-sidebar-action-hide-icon:before {
20
  right : 0;
21
  }
22
 
23
+ #yit-panel-sidebar.yith-panel-sidebar-hidden #yit-panel-sidebar-widgets-container {
24
+ display : none;
25
  }
26
 
27
  .yit-panel-sidebar-widget-wrapper {
226
 
227
  #yit-panel-sidebar-membership-widget .yit-panel-sidebar-widget-content {
228
  background : transparent url('../images/widgets/membership-bg.png') no-repeat;
229
+ background-position : 105% 160%;
230
  background-size : 50%;
231
  }
232
 
233
+ #yit-panel-sidebar-membership-widget .membership-row {
234
+ margin-bottom: 20px;
235
+ clear : both;
236
+ overflow: hidden;
237
+ }
238
+
239
  #yit-panel-sidebar-membership-widget .membership-total-price {
240
  font-size : 25px;
241
  font-weight : 700;
242
+ display : block;
243
+ width : 50%;
244
+ box-sizing : border-box;
245
+ float : left;
246
+ line-height : 37px;
247
 
248
  }
249
 
250
  #yit-panel-sidebar-membership-widget .membership-offer-text {
251
+ display : block;
252
  font-size : 10px;
253
  text-transform : uppercase;
254
+ width : 50%;
255
  line-height : 14px;
256
+ box-sizing : border-box;
257
+ float : left;
258
  }
259
 
260
  #yit-panel-sidebar-membership-widget .membership-offer-text2 {
261
+ display : block;
262
  font-size : 10px;
263
  text-transform : uppercase;
 
264
  text-align : right;
265
  vertical-align : middle;
266
+ float : left;
267
  }
268
 
269
  #yit-panel-sidebar-membership-widget .membership-offer-sale-text {
270
+ display : block;
271
+ font-size : 22px;
272
  color : #ff6340;
273
  text-transform : uppercase;
 
274
  text-align : left;
275
  vertical-align : middle;
276
+ margin-left : 6px;
277
+ font-weight : 600;
278
+ float : left;
279
  }
280
 
281
  #yit-panel-sidebar-membership-widget .membership-buttons {
329
  border-radius : 50%;
330
  }
331
 
332
+ #yit-panel-sidebar-action-hide:hover .yit-panel-sidebar-action-title {
333
+ color : #000;
334
  }
335
 
336
+ #yit-panel-sidebar-action-hide:hover .yit-panel-sidebar-action-hide-icon {
337
+ background : #000;
338
  }
339
 
340
  .hide-on-click .yit-panel-sidebar-action-hide-icon:before {
plugin-fw/assets/images/upgrade-page/01.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/02.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/03.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/04.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/05.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/06.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/07.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/08.jpg DELETED
Binary file
plugin-fw/assets/images/upgrade-page/09.jpg DELETED
Binary file
plugin-fw/assets/js/how-to.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ (function($){
2
+ var how_to_link = $('#yith-how-to-premium').parent();
3
+ if( typeof how_to_link != 'undefined' ){
4
+ how_to_link.prop( 'target', '_blank' );
5
+ }
6
+ })(jQuery);
plugin-fw/assets/js/multisite-updater.js CHANGED
@@ -54,7 +54,7 @@
54
  info = plugin[headers],
55
  name = '' + info.Name,
56
  id = name.replace(regex, '-').trim(),
57
- row = '#' + id.toLowerCase();
58
 
59
  $(row).addClass("update");
60
 
54
  info = plugin[headers],
55
  name = '' + info.Name,
56
  id = name.replace(regex, '-').trim(),
57
+ row = '*[data-slug="' + id.toLowerCase() +'"]';
58
 
59
  $(row).addClass("update");
60
 
plugin-fw/assets/js/multisite-updater.min.js CHANGED
@@ -1,4 +1 @@
1
- (function(m){function n(c,d,k){this.php_js=this.php_js||{};this.php_js.ENV=this.php_js.ENV||{};var a=0,e=0,b=0,f={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},a=function(a){a=(""+a).replace(/[_\-+]/g,".");a=a.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,".");return a.length?a.split("."):[-8]};numVersion=function(a){return a?isNaN(a)?f[a]||-7:parseInt(a,10):0};c=a(c);d=a(d);e=Math.max(c.length,d.length);for(a=0;a<e;a++)if(c[a]!=d[a])if(c[a]=numVersion(c[a]),d[a]=numVersion(d[a]),
2
- c[a]<d[a]){b=-1;break}else if(c[a]>d[a]){b=1;break}if(!k)return b;switch(k){case ">":case "gt":return 0<b;case ">=":case "ge":return 0<=b;case "<=":case "le":return 0>=b;case "==":case "=":case "eq":return 0===b;case "<>":case "!=":case "ne":return 0!==b;case "":case "<":case "lt":return 0>b;default:return null}}var l=m("#menu-plugins"),g=l.find(".update-plugins").find(".update-count").text(),p=plugins.registered,q=plugins.activated;if(0==g||""==g)g=0,l.find(".wp-menu-name").append('<span class="update-plugins"><span class="plugin-count"></span></span>');
3
- (function(c,d,k,a){for(var e in c){var b=c[e],f;for(f in b)if("slug"!=f&&!n(b[f].Version,b[f].Latest,">=")){k=parseInt(k)+1;m(".plugin-count").empty().html(k);var g=""+b[f].Name,l="#"+g.replace(RegExp(" ","g"),"-").trim().toLowerCase();m(l).addClass("update");var h='<tr class="plugin-update-tr"><td colspan="3" class="plugin-update colspanchange"><div class="update-message">'+a.strings.new_version.replace("%plugin_name%",g)+'<a class="thickbox" href="'+a.details_url[e]+'">'+a.strings.latest.replace("%latest%",
4
- b[f].Latest)+"</a>",h="undefined"==typeof d[e]?h+" <em>"+a.strings.unavailable+"</em>"+a.strings.activate.replace("%activate_link%",a.licence_activation_url).replace("%plugin_name%",g):h+'. <a href="'+a.update_url[e]+'">'+a.strings.update_now+"</a>";"undefined"!=typeof a.changelogs[e]&&(h+=a.changelogs[e]);h+="</div></td></tr>";m(h).insertAfter(l)}}})(p,q,g,plugins)})(jQuery);
1
+ !function(e){function a(a,s,t,r){for(var i in a){var p=a[i];for(var l in p)if("slug"!=l&&!n(p[l].Version,p[l].Latest,">=")){t=parseInt(t)+1,e(".plugin-count").empty().html(t);var u=new RegExp(" ","g"),c=p[l],g=""+c.Name,d=g.replace(u,"-").trim(),o='*[data-slug="'+d.toLowerCase()+'"]';e(o).addClass("update");var f='<tr class="plugin-update-tr"><td colspan="3" class="plugin-update colspanchange"><div class="update-message">'+r.strings.new_version.replace("%plugin_name%",g)+'<a class="thickbox" href="'+r.details_url[i]+'">'+r.strings.latest.replace("%latest%",p[l].Latest)+"</a>";f="undefined"==typeof s[i]?f+" <em>"+r.strings.unavailable+"</em>"+r.strings.activate.replace("%activate_link%",r.licence_activation_url).replace("%plugin_name%",g):f+'. <a href="'+r.update_url[i]+'">'+r.strings.update_now+"</a>","undefined"!=typeof r.changelogs[i]&&(f+=r.changelogs[i]),f+="</div></td></tr>",e(f).insertAfter(o)}}}function n(e,a,n){this.php_js=this.php_js||{},this.php_js.ENV=this.php_js.ENV||{};var s=0,t=0,r=0,i={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},p=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]};for(numVersion=function(e){return e?isNaN(e)?i[e]||-7:parseInt(e,10):0},e=p(e),a=p(a),t=Math.max(e.length,a.length),s=0;t>s;s++)if(e[s]!=a[s]){if(e[s]=numVersion(e[s]),a[s]=numVersion(a[s]),e[s]<a[s]){r=-1;break}if(e[s]>a[s]){r=1;break}}if(!n)return r;switch(n){case">":case"gt":return r>0;case">=":case"ge":return r>=0;case"<=":case"le":return 0>=r;case"==":case"=":case"eq":return 0===r;case"<>":case"!=":case"ne":return 0!==r;case"":case"<":case"lt":return 0>r;default:return null}}var s=e("#menu-plugins"),t=s.find(".update-plugins"),r=t.find(".update-count").text(),i=plugins.registered,p=plugins.activated;if(0==r||""==r){var l='<span class="update-plugins"><span class="plugin-count"></span></span>';r=0,s.find(".wp-menu-name").append(l)}a(i,p,r,plugins)}(jQuery);
 
 
 
plugin-fw/init.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
- * Version: 2.9.22
5
  * Author: Yithemes
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
@@ -54,4 +54,21 @@ if ( ! function_exists ( 'yit_maybe_plugin_fw_loader' ) ) {
54
  $plugin_fw_data = array ( $framework_data[ 'Version' ] => $plugin_fw_main_file );
55
  }
56
  }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
+ * Version: 2.9.33
5
  * Author: Yithemes
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
54
  $plugin_fw_data = array ( $framework_data[ 'Version' ] => $plugin_fw_main_file );
55
  }
56
  }
57
+ }
58
+
59
+ if( is_admin() && function_exists( 'WC' ) && version_compare( WC()->version, '2.6', '<' ) ){
60
+ add_action( 'admin_notices', 'yit_before_woocommerce_2_6_update' );
61
+ }
62
+
63
+ if( ! function_exists( 'yit_before_woocommerce_2_6_update' ) ){
64
+ function yit_before_woocommerce_2_6_update(){ ?>
65
+ <div id="message" class="error notice is-dismissible">
66
+ <p>
67
+ <strong>Attention!</strong> In the following days the new version 2.6 will be released for WooCommerce. <strong>Update all YITH plugins before updating WooCommerce</strong> to version 2.6 in order to avoid any possible unexpected errors occur.
68
+ </p>
69
+ <button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button>
70
+ </div>
71
+ <?php
72
+ }
73
+ }
74
+
plugin-fw/languages/yith-plugin-fw-es_ES.mo ADDED
Binary file
plugin-fw/languages/yith-plugin-fw-es_ES.po ADDED
@@ -0,0 +1,1170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2015 YIThemes
2
+ # This file is distributed under the same license as the YITH Plugin Starter package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: YITH Plugin Starter 1.0.0 Plugin FW\n"
6
+ "Report-Msgid-Bugs-To: Your Inspiration Themes <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2016-05-16 16:37+0200\n"
8
+ "PO-Revision-Date: 2016-05-24 15:45+0100\n"
9
+ "Last-Translator: \n"
10
+ "Language-Team: Your Inspiration Themes <info@yithemes.com>\n"
11
+ "Language: es_ES\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.8.7\n"
16
+ "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
17
+ "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
18
+ "esc_html_x:1,2c\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-SourceCharset: UTF-8\n"
21
+ "X-Poedit-Basepath: ..\n"
22
+ "X-Textdomain-Support: yes\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+
25
+ #: lib/yit-cpt-unlimited.php:460 lib/yit-cpt-unlimited.php:574
26
+ #: lib/yit-cpt-unlimited.php:719 lib/yit-cpt-unlimited.php:1632
27
+ #, php-format
28
+ msgid "Add %s"
29
+ msgstr "Añadir %s"
30
+
31
+ #: lib/yit-cpt-unlimited.php:461 lib/yit-cpt-unlimited.php:575
32
+ #, php-format
33
+ msgid "Add New %s"
34
+ msgstr "Añadir nuevo/a %s"
35
+
36
+ #: lib/yit-cpt-unlimited.php:462 lib/yit-cpt-unlimited.php:576
37
+ #: lib/yit-cpt-unlimited.php:1267 lib/yit-cpt-unlimited.php:1304
38
+ #, php-format
39
+ msgid "Edit %s"
40
+ msgstr "Editar %s"
41
+
42
+ #: lib/yit-cpt-unlimited.php:463 lib/yit-cpt-unlimited.php:577
43
+ #, php-format
44
+ msgid "New %s"
45
+ msgstr "Nuevo/a %s"
46
+
47
+ #: lib/yit-cpt-unlimited.php:464 lib/yit-cpt-unlimited.php:578
48
+ #, php-format
49
+ msgid "All %s"
50
+ msgstr "Todo %s"
51
+
52
+ #: lib/yit-cpt-unlimited.php:465 lib/yit-cpt-unlimited.php:579
53
+ #: lib/yit-cpt-unlimited.php:1251 lib/yit-cpt-unlimited.php:1305
54
+ #, php-format
55
+ msgid "View %s"
56
+ msgstr "Ver %s"
57
+
58
+ #: lib/yit-cpt-unlimited.php:466 lib/yit-cpt-unlimited.php:580
59
+ #, php-format
60
+ msgid "Search %s"
61
+ msgstr "Buscar %s"
62
+
63
+ #: lib/yit-cpt-unlimited.php:467 lib/yit-cpt-unlimited.php:581
64
+ #, php-format
65
+ msgid "No %s found"
66
+ msgstr "No se encontraron %s"
67
+
68
+ #: lib/yit-cpt-unlimited.php:468 lib/yit-cpt-unlimited.php:582
69
+ #, php-format
70
+ msgid "No %s found in Trash"
71
+ msgstr "No se encontraron %s en la Papelera"
72
+
73
+ #: lib/yit-cpt-unlimited.php:625
74
+ #, php-format
75
+ msgctxt "taxonomy general name"
76
+ msgid "%s Categories"
77
+ msgstr "%s Categorías"
78
+
79
+ #: lib/yit-cpt-unlimited.php:626
80
+ msgctxt "taxonomy singular name"
81
+ msgid "Category"
82
+ msgstr "Categoría"
83
+
84
+ #: lib/yit-cpt-unlimited.php:627
85
+ msgid "Search Categories"
86
+ msgstr "Buscar Categorías"
87
+
88
+ #: lib/yit-cpt-unlimited.php:628
89
+ msgid "All Categories"
90
+ msgstr "Todas las categorías"
91
+
92
+ #: lib/yit-cpt-unlimited.php:629
93
+ msgid "Parent Category"
94
+ msgstr "Categoría Madre"
95
+
96
+ #: lib/yit-cpt-unlimited.php:630
97
+ msgid "Parent Category:"
98
+ msgstr "Categoría Madre:"
99
+
100
+ #: lib/yit-cpt-unlimited.php:631
101
+ msgid "Edit Category"
102
+ msgstr "Editar Categoría:"
103
+
104
+ #: lib/yit-cpt-unlimited.php:632
105
+ msgid "Update Category"
106
+ msgstr "Actualizar Categoría:"
107
+
108
+ #: lib/yit-cpt-unlimited.php:633
109
+ msgid "Add New Category"
110
+ msgstr "Añadir nueva categoría"
111
+
112
+ #: lib/yit-cpt-unlimited.php:634
113
+ msgid "New Category Name"
114
+ msgstr "Nuevo nombre de categoría"
115
+
116
+ #: lib/yit-cpt-unlimited.php:635
117
+ msgid "Category"
118
+ msgstr "Categoría"
119
+
120
+ #: lib/yit-cpt-unlimited.php:724
121
+ msgid "Categories"
122
+ msgstr "Categorías"
123
+
124
+ #: lib/yit-cpt-unlimited.php:1042
125
+ #, php-format
126
+ msgid "%s Settings"
127
+ msgstr "%s Ajustes"
128
+
129
+ #: lib/yit-cpt-unlimited.php:1048 lib/yit-cpt-unlimited.php:1196
130
+ #: lib/yit-cpt-unlimited.php:1202 lib/yit-plugin-panel.php:74
131
+ msgid "Settings"
132
+ msgstr "Ajustes"
133
+
134
+ #: lib/yit-cpt-unlimited.php:1051
135
+ msgid "Type"
136
+ msgstr "Tipos"
137
+
138
+ #: lib/yit-cpt-unlimited.php:1052
139
+ #, php-format
140
+ msgid "Layout for this %s"
141
+ msgstr "Diseño para este %s"
142
+
143
+ #: lib/yit-cpt-unlimited.php:1058
144
+ msgid "Rewrite"
145
+ msgstr "Reescribir"
146
+
147
+ #: lib/yit-cpt-unlimited.php:1059
148
+ msgid ""
149
+ "Univocal identification name in the URL for each product (slug from post if empty)"
150
+ msgstr ""
151
+ "Nombre de identificación único en la URL para cada producto (slug desde la entrada "
152
+ "si está vacío)"
153
+
154
+ #: lib/yit-cpt-unlimited.php:1064
155
+ msgid "Label in Singular"
156
+ msgstr "Etiqueta en singular"
157
+
158
+ #: lib/yit-cpt-unlimited.php:1065
159
+ msgid "Set a label in singular (title of portfolio if empty)"
160
+ msgstr "Establecer una etiqueta en singular (título del portafolio si está vacío)"
161
+
162
+ #: lib/yit-cpt-unlimited.php:1070
163
+ msgid "Label in Plural"
164
+ msgstr "Etiqueta en Plural"
165
+
166
+ #: lib/yit-cpt-unlimited.php:1071
167
+ msgid "Set a label in plural (title of portfolio if empty)"
168
+ msgstr "Establecer una etiqueta en plural (título del portafolio si está vacío)"
169
+
170
+ #: lib/yit-cpt-unlimited.php:1076
171
+ msgid "Taxonomy"
172
+ msgstr "Taxonomía"
173
+
174
+ #: lib/yit-cpt-unlimited.php:1077
175
+ msgid ""
176
+ "If you want to use categories in the portfolio, set a name for taxonomy. Name "
177
+ "should be a slug (must not contain capital letters nor spaces) and must not be "
178
+ "more than 32 characters long (database structure restriction)."
179
+ msgstr ""
180
+ "Si quieres usar categorías en el portafolio, establece un nombre para la "
181
+ "taxonomía. El nombre debería ser un slug (no debe contener mayúsculas ni espacios) "
182
+ "y no debe ser más largo de 32 caracteres (restricción de estructura de base de "
183
+ "datos)."
184
+
185
+ #: lib/yit-cpt-unlimited.php:1082
186
+ msgid "Taxonomy Rewrite"
187
+ msgstr "Taxonomía de reescritura"
188
+
189
+ #: lib/yit-cpt-unlimited.php:1083
190
+ msgid "Set univocal name for each category page URL."
191
+ msgstr "Establecer nombre único para cada página URL de categoría."
192
+
193
+ #: lib/yit-cpt-unlimited.php:1088
194
+ msgid "Single layout"
195
+ msgstr "Diseño Simple"
196
+
197
+ #: lib/yit-cpt-unlimited.php:1089
198
+ msgid "Layout for single page of this portfolio"
199
+ msgstr "Diseño para cada página de este portafolio"
200
+
201
+ #: lib/yit-cpt-unlimited.php:1130
202
+ msgid "layout settings"
203
+ msgstr "Ajustes de diseño"
204
+
205
+ #: lib/yit-cpt-unlimited.php:1222 lib/yit-cpt-unlimited.php:1235
206
+ msgid "Quick links"
207
+ msgstr "Enlaces rápidos"
208
+
209
+ #: lib/yit-cpt-unlimited.php:1475
210
+ #, php-format
211
+ msgid "Show frontend of the %s"
212
+ msgstr "Mostrar parte delantera de %s"
213
+
214
+ #: lib/yit-cpt-unlimited.php:1482 templates/metaboxes/types/customtabs.php:46
215
+ #: templates/metaboxes/types/customtabs.php:90
216
+ msgid "Name"
217
+ msgstr "Nombre"
218
+
219
+ #: lib/yit-cpt-unlimited.php:1631
220
+ #, php-format
221
+ msgid "Add %s from images"
222
+ msgstr "Añadir %s desde imágenes"
223
+
224
+ #: lib/yit-cpt-unlimited.php:1633
225
+ msgid "Upload multiple files"
226
+ msgstr "Cargar archivos múltiples"
227
+
228
+ #: lib/yit-plugin-panel-sidebar.php:421 templates/panel/sidebar/sidebar.php:3
229
+ msgid "Hide sidebar"
230
+ msgstr "Ocultar barra lateral"
231
+
232
+ #: lib/yit-plugin-panel-sidebar.php:422 templates/panel/sidebar/sidebar.php:3
233
+ msgid "Show sidebar"
234
+ msgstr "Mostrar barra lateral"
235
+
236
+ #: lib/yit-plugin-panel-wc.php:359
237
+ msgid "The changes you have made will be lost if you leave this page."
238
+ msgstr "Los cambios que has hecho se perderán si sales de esta página."
239
+
240
+ #: lib/yit-plugin-panel.php:73
241
+ msgid "Plugin Settings"
242
+ msgstr "Ajustes del plugin"
243
+
244
+ #: lib/yit-plugin-panel.php:293
245
+ msgid "Premium version upgrade"
246
+ msgstr "Actualiza a la versión premium"
247
+
248
+ #: lib/yit-plugin-panel.php:344 lib/yit-plugin-subpanel.php:146
249
+ #: templates/panel/woocommerce/woocommerce-form.php:11
250
+ msgid "Save Changes"
251
+ msgstr "Guardar cambios"
252
+
253
+ #: lib/yit-plugin-panel.php:347 templates/panel/woocommerce/woocommerce-form.php:14
254
+ msgid "If you continue with this action, you will reset all options in this page."
255
+ msgstr "Si sigues con esta acción, se reiniciarán todas las opciones en esta página."
256
+
257
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
258
+ msgid "Reset to default"
259
+ msgstr "Reiniciar a predeterminado"
260
+
261
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
262
+ #: templates/panel/woocommerce/woocommerce-form.php:18
263
+ msgid "Are you sure?"
264
+ msgstr "¿Estás seguro/a?"
265
+
266
+ #: lib/yit-plugin-panel.php:545
267
+ msgid "The element you have entered already exists. Please, enter another name."
268
+ msgstr "El elemento que has introducido ya existe. Por favor, introduce otro nombre."
269
+
270
+ #: lib/yit-plugin-panel.php:546
271
+ msgid "Settings saved"
272
+ msgstr "Ajustes guardados"
273
+
274
+ #: lib/yit-plugin-panel.php:547
275
+ msgid "Settings reset"
276
+ msgstr "Ajustes reiniciados"
277
+
278
+ #: lib/yit-plugin-panel.php:548
279
+ msgid "Element deleted correctly."
280
+ msgstr "Elemento borrado correctamente."
281
+
282
+ #: lib/yit-plugin-panel.php:549 lib/yit-plugin-panel.php:550
283
+ msgid "Element updated correctly."
284
+ msgstr "Elemento actualizado correctamente."
285
+
286
+ #: lib/yit-plugin-panel.php:551
287
+ msgid "Database imported correctly."
288
+ msgstr "Base de datos importada correctamente."
289
+
290
+ #: lib/yit-plugin-panel.php:552
291
+ msgid "An error has occurred during import. Please try again."
292
+ msgstr "Ha ocurrido un error durante la importación. Por favor, inténtalo de nuevo."
293
+
294
+ #: lib/yit-plugin-panel.php:553
295
+ msgid "The added file is not valid."
296
+ msgstr "El archivo añadido no es válido."
297
+
298
+ #: lib/yit-plugin-panel.php:554
299
+ msgid "Sorry, import is disabled."
300
+ msgstr "Lo sentimos, la importación está deshabilitada."
301
+
302
+ #: lib/yit-plugin-panel.php:555
303
+ msgid "Sorting successful."
304
+ msgstr "Clasificación fue realizada con éxito."
305
+
306
+ #: lib/yit-plugin-subpanel.php:149
307
+ msgid ""
308
+ "If you continue with this action, you will reset all the options in this page."
309
+ msgstr "Si continúas con esta acción, reiniciarás todas las opciones de esta página."
310
+
311
+ #: lib/yit-pointers.php:70
312
+ msgid "Plugins Activated"
313
+ msgstr "Plugins Activados"
314
+
315
+ #: lib/yit-pointers.php:71
316
+ msgid ""
317
+ "From now on, you can find all plugin options in YIT Plugin menu.\n"
318
+ " For each plugin installed, customization "
319
+ "settings will be available as a new entry in YIT Plugin menu."
320
+ msgstr ""
321
+ "De ahora en adelante, puedes encontrar todas las opciones del plugin en el menú "
322
+ "YIT Plugin.\n"
323
+ " Para cada plugin instalado, los ajustes de "
324
+ "personalización estarán disponibles como una nueva entrada en el menú YIT Plugin."
325
+
326
+ #: lib/yit-pointers.php:73 lib/yit-pointers.php:89
327
+ msgid "Discover all our plugins available on:"
328
+ msgstr "Descubre todos nuestros plugins disponibles en:"
329
+
330
+ #: lib/yit-pointers.php:74 lib/yit-pointers.php:90
331
+ msgid "and"
332
+ msgstr "y"
333
+
334
+ #: lib/yit-pointers.php:84
335
+ msgid "Plugins Upgraded"
336
+ msgstr "Plugins Actualizados"
337
+
338
+ #: lib/yit-pointers.php:85
339
+ msgid ""
340
+ "From now on, you can find all options of your plugins in YIT Plugin menu.\n"
341
+ " Any time one of our plugins is updated, a new "
342
+ "entry will be added to this menu.\n"
343
+ " For example, after the update, plugin options "
344
+ "(such as for YITH WooCommerce Wishlist, YITH WooCommerce Ajax Search, etc.)\n"
345
+ " will be moved from previous location to YIT "
346
+ "Plugin tab."
347
+ msgstr ""
348
+ "De ahora en adelante, puedes encontrar todas las opciones de tus plugins en el "
349
+ "menú YIT Plugin.\n"
350
+ " Cada vez que uno de nuestros plugins sea "
351
+ "actualizado, se añadirá una nueva entrada a este menú.\n"
352
+ " Por ejemplo, después de actualizar, las "
353
+ "opciones del plugin (como las de YITH WooCommerce Wishlist, YITH WooCommerce Ajax "
354
+ "Search, etc.)\n"
355
+ " se moverán de su posición anterior a la "
356
+ "pestaña YIT Plugin."
357
+
358
+ #: lib/yit-upgrade.php:136
359
+ msgid "There is a new version of %plugin_name% available."
360
+ msgstr "Hay una nueva versión de %plugin_name% disponible."
361
+
362
+ #: lib/yit-upgrade.php:137
363
+ msgid "View version %latest% details."
364
+ msgstr "Ver detalles de la %latest% versión"
365
+
366
+ #: lib/yit-upgrade.php:138
367
+ msgid "Automatic update is unavailable for this plugin,"
368
+ msgstr "Las actualizaciones automáticas no están disponibles para este plugin,"
369
+
370
+ #: lib/yit-upgrade.php:139
371
+ msgid "please <a href=\"%activate_link%\">activate</a> your copy of %plugin_name%."
372
+ msgstr "por favor, <a href=\"%activate_link%\">activa</a> tu copia de %plugin_name%."
373
+
374
+ #: lib/yit-upgrade.php:140
375
+ msgid "Update now."
376
+ msgstr "Actualiza ahora."
377
+
378
+ #: lib/yit-upgrade.php:243
379
+ msgid "YIThemes Repository"
380
+ msgstr "Repositorio YIThemes"
381
+
382
+ #: lib/yit-upgrade.php:277
383
+ msgid "Invalid URL Provided."
384
+ msgstr "La URL proporcionada no es válida."
385
+
386
+ #: lib/yit-upgrade.php:290
387
+ msgid "Could not create Temporary file."
388
+ msgstr "No se pudo crear un archivo temporal."
389
+
390
+ #: lib/yit-upgrade.php:432
391
+ #, php-format
392
+ msgid ""
393
+ "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
394
+ "changelog-button\" title=\"%3$s\">View version %4$s details</a>."
395
+ msgstr ""
396
+ "Hay una nueva versión de %1$s disponible. <a href=\"%2$s\" class=\"thickbox yit-"
397
+ "changelog-button\" title=\"%3$s\">Ver detalles de la versión %4$s</a>."
398
+
399
+ #: lib/yit-upgrade.php:434
400
+ #, php-format
401
+ msgid ""
402
+ "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
403
+ "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>You have to "
404
+ "activate the plugin on a single site of the network to benefit from automatic "
405
+ "updates.</em>"
406
+ msgstr ""
407
+ "Hay una nueva versión de %1$s disponible. <a href=\"%2$s\" class=\"thickbox yit-"
408
+ "changelog-button\" title=\"%3$s\">Ver detalles de la versión %4$s</a>. <em>Tienes "
409
+ "que activar el plugin en un único sitio web desdela red para beneficiarte de las "
410
+ "actualizaciones automáticas.</em>"
411
+
412
+ #: lib/yit-upgrade.php:436
413
+ #, php-format
414
+ msgid ""
415
+ "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
416
+ "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
417
+ "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"License "
418
+ "activation\">activate</a> your copy of %6s.</em>"
419
+ msgstr ""
420
+ "Hay una nueva versión de %1$s disponible. <a href=\"%2$s\" class=\"thickbox yit-"
421
+ "changelog-button\" title=\"%3$s\">Ver detalles de la versión %4$s</a>. <em>Las "
422
+ "actualizaciones automáticas no están disponibles para este plugin, por favor <a "
423
+ "href=\"%5$s\" title=\"License activation\">activa</a> tu copia de %6s.</em>"
424
+
425
+ #: lib/yit-upgrade.php:438
426
+ #, php-format
427
+ msgid ""
428
+ "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
429
+ "changelog-button\" title=\"%3$s\">View version %4$s details</a> or <a href=\"%5$s"
430
+ "\">update now</a>."
431
+ msgstr ""
432
+ "Hay una nueva versión de %1$s disponible. <a href=\"%2$s\" class=\"thickbox yit-"
433
+ "changelog-button\" title=\"%3$s\">Ver detalles de la versión %4$s</a> o <a href="
434
+ "\"%5$s\">actualizar ahora</a>."
435
+
436
+ #: lib/yit-upgrade.php:511
437
+ msgid "You can't update the plugins for this site."
438
+ msgstr "No puedes actualizar los plugins para este sitio web."
439
+
440
+ #: lib/yit-upgrade.php:515
441
+ msgid "You do not have sufficient permissions to update the plugins for this site."
442
+ msgstr ""
443
+ "No tienes suficientes permisos para actualizar los plugins para este sitio web."
444
+
445
+ #: lib/yit-upgrade.php:522
446
+ msgid "Update Plugin"
447
+ msgstr "Actualizar Plugin"
448
+
449
+ #: licence/lib/yit-licence.php:182
450
+ #, php-format
451
+ msgctxt "%s = field name"
452
+ msgid "%s field cannot be empty"
453
+ msgstr "%s el campo no puede estar vacío"
454
+
455
+ #: licence/lib/yit-licence.php:183
456
+ #, php-format
457
+ msgid "%s and %s fields cannot be empty"
458
+ msgstr "Los campos %s y %s no pueden estar vacíos"
459
+
460
+ #: licence/lib/yit-licence.php:184
461
+ msgid "Unable to contact the remote server, please try again later. Thanks!"
462
+ msgstr ""
463
+ "No fue posible contactar con el servidor remoto, por favor, inténtalo de nuevo más "
464
+ "tarde. ¡Gracias!"
465
+
466
+ #: licence/lib/yit-licence.php:185
467
+ #: licence/templates/panel/activation/activation-panel.php:88
468
+ #: licence/templates/panel/activation/activation-panel.php:166
469
+ #: licence/templates/panel/activation/activation-panel.php:197
470
+ #: templates/metaboxes/types/contactform.php:148
471
+ #: templates/metaboxes/types/contactform.php:340
472
+ msgid "Email"
473
+ msgstr "Email"
474
+
475
+ #: licence/lib/yit-licence.php:186
476
+ #: licence/templates/panel/activation/activation-panel.php:89
477
+ #: licence/templates/panel/activation/activation-panel.php:167
478
+ #: licence/templates/panel/activation/activation-panel.php:198
479
+ msgid "License Key"
480
+ msgstr "Clave de Licencia"
481
+
482
+ #: licence/lib/yit-licence.php:187
483
+ msgid "Are you sure you want to deactivate the license for current site?"
484
+ msgstr ""
485
+ "¿Estás seguro/a de que quieres desactivar la licencia para el sitio web actual?"
486
+
487
+ #: licence/lib/yit-licence.php:667
488
+ msgid "Invalid Request"
489
+ msgstr "Solicitud inválida"
490
+
491
+ #: licence/lib/yit-licence.php:668
492
+ msgid "Invalid license key"
493
+ msgstr "Clave de solicitud inválida"
494
+
495
+ #: licence/lib/yit-licence.php:669
496
+ msgid "Software has been deactivated"
497
+ msgstr "El software ha sido desactivado"
498
+
499
+ #: licence/lib/yit-licence.php:670
500
+ msgid "Maximum number of activations exceeded"
501
+ msgstr "Se ha excedido el número máximo de solicitudes"
502
+
503
+ #: licence/lib/yit-licence.php:671
504
+ msgid "Invalid instance ID"
505
+ msgstr "Instancia ID inválida"
506
+
507
+ #: licence/lib/yit-licence.php:672
508
+ msgid "Invalid security key"
509
+ msgstr "Clave de seguridad inválida"
510
+
511
+ #: licence/lib/yit-licence.php:673
512
+ msgid "License key has expired"
513
+ msgstr "La clave de licencia ha caducado"
514
+
515
+ #: licence/lib/yit-licence.php:674
516
+ msgid "License key has been banned"
517
+ msgstr "La clave de licencia ha sido bloqueada"
518
+
519
+ #: licence/lib/yit-licence.php:675
520
+ msgid "Current product is not included with your membership key"
521
+ msgstr "El producto actual no está incluido en tu clave de suscripción"
522
+
523
+ #: licence/lib/yit-licence.php:676
524
+ msgid "Great"
525
+ msgstr "Excelente"
526
+
527
+ #: licence/lib/yit-licence.php:676
528
+ msgid "License successfully activated"
529
+ msgstr "Licencia activada con éxito"
530
+
531
+ #: licence/lib/yit-licence.php:677
532
+ msgid "License key deactivated for website"
533
+ msgstr "Clave de licencia desactivada para nuestro sitio web"
534
+
535
+ #: licence/lib/yit-plugin-licence.php:67 licence/lib/yit-plugin-licence.php:68
536
+ #: licence/lib/yit-theme-licence.php:69 licence/lib/yit-theme-licence.php:70
537
+ #: licence/lib/yit-theme-licence.php:109 licence/lib/yit-theme-licence.php:110
538
+ msgid "License Activation"
539
+ msgstr "Activación de la Licencia"
540
+
541
+ #: licence/lib/yit-theme-licence.php:117 licence/lib/yit-theme-licence.php:118
542
+ #, php-format
543
+ msgid "%s"
544
+ msgstr "%s"
545
+
546
+ #: licence/lib/yit-theme-licence.php:159
547
+ msgid ""
548
+ "I cannot find the license key for activating the theme I have bought some time "
549
+ "ago. Where can I find it?"
550
+ msgstr ""
551
+ "No puedo encontrar la clave de licencia para activar el tema que compré hace "
552
+ "tiempo. ¿Dónde la puedo encontrar?"
553
+
554
+ #: licence/lib/yit-theme-licence.php:163
555
+ msgid ""
556
+ "If you have purchased one of our products before 27 January 2015, you can benefit "
557
+ "from support and updates (the services offered with the license)\n"
558
+ " until 27 January 2016 and you do not have to purchase it again "
559
+ "to get a new license key, because, before this date, your license used to be "
560
+ "activated automatically by our system.\n"
561
+ " After 27 January 2016, instead, if you want to benefit from "
562
+ "support and updates you have to buy a new license and activate it through the "
563
+ "license key you will be\n"
564
+ " provided with and that you can find in your YIThemes account, "
565
+ "in section \"My licenses\"."
566
+ msgstr ""
567
+ "Si has comprado uno de nuestros productos antes del 27 de enero de 2015, puedes "
568
+ "beneficiarte del soporte y actualizaciones (los servicios incluidos con la "
569
+ "licencia)\n"
570
+ " hasta el 27 de enero de 2016 y no tendrás que comprarla otra "
571
+ "vez para conseguir una nueva clave de licencia, porque, antes de esta fecha, tu "
572
+ "licencia se activaba automáticamente por nuestro sistema.\n"
573
+ " Después del 27 de enero de 2016, sin embargo, si quieres "
574
+ "beneficiarte de nuestro soporte y actualizaciones, tienes que comprar una nueva "
575
+ "licencia y activarla a través de la clave de licencia que \n"
576
+ " se te proporcionará y que podrás encontrar en tu cuenta "
577
+ "YIThemes, en la sección \"My licenses\"."
578
+
579
+ #: licence/templates/panel/activation/activation-panel.php:23
580
+ msgid "Yithemes License Activation"
581
+ msgstr "Licencia de Activación Yithemes"
582
+
583
+ #: licence/templates/panel/activation/activation-panel.php:27
584
+ msgid ""
585
+ "Have you updated your licenses? Have you asked for an extension? Update "
586
+ "information concerning your products."
587
+ msgstr "¿Has actualizado tus licencias? ¿Has pedido una extensión? Actualiza"
588
+
589
+ #: licence/templates/panel/activation/activation-panel.php:29
590
+ msgid "Update license information"
591
+ msgstr "Actualizar la información de la licencia"
592
+
593
+ #: licence/templates/panel/activation/activation-panel.php:42
594
+ msgid "Product to activate"
595
+ msgid_plural "Products to activate"
596
+ msgstr[0] "Producto que activar"
597
+ msgstr[1] "Productos que activar"
598
+
599
+ #: licence/templates/panel/activation/activation-panel.php:61
600
+ msgid "Activate"
601
+ msgstr "Activar"
602
+
603
+ #: licence/templates/panel/activation/activation-panel.php:80
604
+ msgid "Activated"
605
+ msgstr "Activado/a"
606
+
607
+ #: licence/templates/panel/activation/activation-panel.php:86
608
+ #: licence/templates/panel/activation/activation-panel.php:164
609
+ #: licence/templates/panel/activation/activation-panel.php:194
610
+ msgid "Product Name"
611
+ msgstr "Nombre de Producto"
612
+
613
+ #: licence/templates/panel/activation/activation-panel.php:92
614
+ #: licence/templates/panel/activation/activation-panel.php:201
615
+ msgid "Expires"
616
+ msgstr "Caduca"
617
+
618
+ #: licence/templates/panel/activation/activation-panel.php:95
619
+ msgid "Remaining"
620
+ msgstr "Queda"
621
+
622
+ #: licence/templates/panel/activation/activation-panel.php:97
623
+ msgid "Membership"
624
+ msgstr "Suscripción"
625
+
626
+ #: licence/templates/panel/activation/activation-panel.php:101
627
+ msgid "License Actions"
628
+ msgstr "Acciones de Licencia"
629
+
630
+ #: licence/templates/panel/activation/activation-panel.php:126
631
+ #, php-format
632
+ msgid "%1s out of %2s"
633
+ msgstr "%1s de %2s"
634
+
635
+ #: licence/templates/panel/activation/activation-panel.php:142
636
+ msgid "Deactivate"
637
+ msgstr "Desactivar"
638
+
639
+ #: licence/templates/panel/activation/activation-panel.php:147
640
+ #: licence/templates/panel/activation/activation-panel.php:204
641
+ msgid "Renew"
642
+ msgstr "Renovado"
643
+
644
+ #: licence/templates/panel/activation/activation-panel.php:160
645
+ msgid "Banned"
646
+ msgstr "Bloqueado"
647
+
648
+ #: licence/templates/panel/activation/activation-panel.php:190
649
+ msgid "Expired"
650
+ msgstr "Caducado"
651
+
652
+ #: licence/templates/panel/activation/activation-panel.php:226
653
+ msgid "Order again"
654
+ msgstr "Comprar de nuevo"
655
+
656
+ #: licence/templates/panel/activation/activation-panel.php:228
657
+ msgid "Renew license"
658
+ msgstr "Renovar licencia"
659
+
660
+ #: templates/metaboxes/types/ajax-products.php:23
661
+ msgid "Search for a product"
662
+ msgstr "Buscar un producto"
663
+
664
+ #: templates/metaboxes/types/categories.php:36
665
+ msgid "No categories."
666
+ msgstr "Ninguna categoría."
667
+
668
+ #: templates/metaboxes/types/categories.php:42
669
+ msgid "+ Add New Category"
670
+ msgstr "+ Añadir Nueva Categoría"
671
+
672
+ #: templates/metaboxes/types/categories.php:46
673
+ msgid "Add"
674
+ msgstr "Añadir"
675
+
676
+ #: templates/metaboxes/types/contactform.php:7
677
+ msgid "Text Input"
678
+ msgstr "Text Input"
679
+
680
+ #: templates/metaboxes/types/contactform.php:8
681
+ msgid "Checkbox"
682
+ msgstr "Casilla"
683
+
684
+ #: templates/metaboxes/types/contactform.php:9
685
+ msgid "Select"
686
+ msgstr "Seleciona"
687
+
688
+ #: templates/metaboxes/types/contactform.php:10
689
+ msgid "Textarea"
690
+ msgstr "Área de texto"
691
+
692
+ #: templates/metaboxes/types/contactform.php:11
693
+ msgid "Radio Input"
694
+ msgstr "Radio Input"
695
+
696
+ #: templates/metaboxes/types/contactform.php:12
697
+ msgid "Password Field"
698
+ msgstr "Campo de contraseña"
699
+
700
+ #: templates/metaboxes/types/contactform.php:13
701
+ msgid "File Upload"
702
+ msgstr "Carga de archivo"
703
+
704
+ #: templates/metaboxes/types/contactform.php:47
705
+ msgid "Theme Icon"
706
+ msgstr "Icono del tema"
707
+
708
+ #: templates/metaboxes/types/contactform.php:48
709
+ msgid "Custom Icon"
710
+ msgstr "Icono Personalizado"
711
+
712
+ #: templates/metaboxes/types/contactform.php:49
713
+ #: templates/metaboxes/types/responsivesliders.php:24
714
+ msgid "None"
715
+ msgstr "Ninguno"
716
+
717
+ #: templates/metaboxes/types/contactform.php:60
718
+ msgid "Add field"
719
+ msgstr "Añadir campo"
720
+
721
+ #: templates/metaboxes/types/contactform.php:69
722
+ #: templates/metaboxes/types/contactform.php:261
723
+ #: templates/metaboxes/types/customtabs.php:37
724
+ #: templates/metaboxes/types/customtabs.php:82
725
+ msgid "Remove"
726
+ msgstr "Borrar"
727
+
728
+ #: templates/metaboxes/types/contactform.php:70
729
+ #: templates/metaboxes/types/contactform.php:262
730
+ msgid "Click to toggle"
731
+ msgstr "Haz click para alternar"
732
+
733
+ #: templates/metaboxes/types/contactform.php:77
734
+ #: templates/metaboxes/types/contactform.php:269
735
+ msgid "Field Title"
736
+ msgstr "Campo de título"
737
+
738
+ #: templates/metaboxes/types/contactform.php:81
739
+ #: templates/metaboxes/types/contactform.php:273
740
+ msgid "Insert the title for the field."
741
+ msgstr "Inserta el título del campo."
742
+
743
+ #: templates/metaboxes/types/contactform.php:86
744
+ #: templates/metaboxes/types/contactform.php:278
745
+ msgid "Data Name"
746
+ msgstr "Nombre del dato."
747
+
748
+ #: templates/metaboxes/types/contactform.php:90
749
+ #: templates/metaboxes/types/contactform.php:282
750
+ msgid ""
751
+ "REQUIRED: Field identification name to be entered into email body. <strong>Note:</"
752
+ "strong>Use only lowercase characters and underscores."
753
+ msgstr ""
754
+ "OBLIGATORIO: El nombre del campo de identificación debe introducirse en el cuerpo "
755
+ "del email. <strong> Nota: </strong> Usa sólo minúsculas y guiones bajos."
756
+
757
+ #: templates/metaboxes/types/contactform.php:95
758
+ #: templates/metaboxes/types/contactform.php:287
759
+ msgid "Field Type"
760
+ msgstr "Tipo de campo"
761
+
762
+ #: templates/metaboxes/types/contactform.php:103
763
+ #: templates/metaboxes/types/contactform.php:295
764
+ msgid "Select the type for this field."
765
+ msgstr "Selecciona el tipo para este campo."
766
+
767
+ #: templates/metaboxes/types/contactform.php:108
768
+ #: templates/metaboxes/types/contactform.php:300
769
+ msgid "Checked"
770
+ msgstr "Campo seleccionado"
771
+
772
+ #: templates/metaboxes/types/contactform.php:112
773
+ #: templates/metaboxes/types/contactform.php:304
774
+ msgid "Select this option if you want this field appears as already checked."
775
+ msgstr "Selecciona esta opción si quieres que este campo aparezca como ya marcado."
776
+
777
+ #: templates/metaboxes/types/contactform.php:117
778
+ #: templates/metaboxes/types/contactform.php:309
779
+ msgid "Add options "
780
+ msgstr "Añadir opciones"
781
+
782
+ #: templates/metaboxes/types/contactform.php:118
783
+ #: templates/metaboxes/types/contactform.php:310
784
+ msgid "Add option"
785
+ msgstr "Añadir opción"
786
+
787
+ #: templates/metaboxes/types/contactform.php:121
788
+ #: templates/metaboxes/types/contactform.php:313
789
+ #: templates/metaboxes/types/contactform.php:436
790
+ msgid "Selected"
791
+ msgstr "Selecionado"
792
+
793
+ #: templates/metaboxes/types/contactform.php:124
794
+ #: templates/metaboxes/types/contactform.php:316
795
+ #: templates/metaboxes/types/contactform.php:436
796
+ msgid "Delete option"
797
+ msgstr "Borrar opción"
798
+
799
+ #: templates/metaboxes/types/contactform.php:130
800
+ #: templates/metaboxes/types/contactform.php:322
801
+ msgid "Error Message"
802
+ msgstr "Mensaje de error"
803
+
804
+ #: templates/metaboxes/types/contactform.php:134
805
+ #: templates/metaboxes/types/contactform.php:326
806
+ msgid "Insert the error message for validation."
807
+ msgstr "Inserta el mensaje de error para la validación."
808
+
809
+ #: templates/metaboxes/types/contactform.php:139
810
+ #: templates/metaboxes/types/contactform.php:331
811
+ msgid "Required"
812
+ msgstr "Campo obligatorio"
813
+
814
+ #: templates/metaboxes/types/contactform.php:143
815
+ #: templates/metaboxes/types/contactform.php:335
816
+ msgid "Select this option if it must be required."
817
+ msgstr "Selecciona esta opción si este campo debe ser obligatorio."
818
+
819
+ #: templates/metaboxes/types/contactform.php:152
820
+ #: templates/metaboxes/types/contactform.php:344
821
+ msgid "Select this option if the email must be valid."
822
+ msgstr "Selecciona esta opción si el email debe ser válido."
823
+
824
+ #: templates/metaboxes/types/contactform.php:157
825
+ #: templates/metaboxes/types/contactform.php:349
826
+ msgid "Reply To"
827
+ msgstr "Responder a"
828
+
829
+ #: templates/metaboxes/types/contactform.php:161
830
+ #: templates/metaboxes/types/contactform.php:353
831
+ msgid "Select this if it is the email you can reply to."
832
+ msgstr "Selecciona si este es el email al que puedes responder."
833
+
834
+ #: templates/metaboxes/types/contactform.php:166
835
+ #: templates/metaboxes/types/contactform.php:358
836
+ msgid "Class"
837
+ msgstr "Clase"
838
+
839
+ #: templates/metaboxes/types/contactform.php:170
840
+ #: templates/metaboxes/types/contactform.php:362
841
+ msgid "Insert additional class(es) (separated by commas) for more personalization."
842
+ msgstr "Inserta clase(s) adicionales (separados por comas) para más personalización."
843
+
844
+ #: templates/metaboxes/types/contactform.php:175
845
+ #: templates/metaboxes/types/contactform.php:367
846
+ msgid "Icon"
847
+ msgstr "Icono"
848
+
849
+ #: templates/metaboxes/types/contactform.php:203
850
+ #: templates/metaboxes/types/contactform.php:391
851
+ #: templates/metaboxes/types/icon-list.php:69
852
+ #: templates/metaboxes/types/select-icon.php:33
853
+ #: templates/metaboxes/types/upload.php:21 templates/panel/types/upload.php:31
854
+ #: templates/panel/woocommerce/woocommerce-upload.php:40
855
+ msgid "Upload"
856
+ msgstr "Actualiza"
857
+
858
+ #: templates/metaboxes/types/contactform.php:209
859
+ #: templates/metaboxes/types/contactform.php:397
860
+ #: templates/metaboxes/types/icon-list.php:75
861
+ #: templates/metaboxes/types/select-icon.php:39
862
+ msgid "Image preview"
863
+ msgstr "Previsualización de imagen"
864
+
865
+ #: templates/metaboxes/types/contactform.php:217
866
+ #: templates/metaboxes/types/contactform.php:405
867
+ msgid "Insert an icon for more personalization."
868
+ msgstr "Inserta un icono para más personalización"
869
+
870
+ #: templates/metaboxes/types/contactform.php:222
871
+ #: templates/metaboxes/types/contactform.php:409
872
+ msgid "Width"
873
+ msgstr "Ancho"
874
+
875
+ #: templates/metaboxes/types/contactform.php:247
876
+ #: templates/metaboxes/types/contactform.php:421
877
+ msgid "Set field length."
878
+ msgstr "Establecer el ancho de campo"
879
+
880
+ #: templates/metaboxes/types/customtabs.php:28
881
+ msgid "Close all"
882
+ msgstr "Cerrar todos"
883
+
884
+ #: templates/metaboxes/types/customtabs.php:28
885
+ msgid "Expand all"
886
+ msgstr "Expandir todos"
887
+
888
+ #: templates/metaboxes/types/customtabs.php:52
889
+ #: templates/metaboxes/types/customtabs.php:95
890
+ msgid "Value"
891
+ msgstr "Valor"
892
+
893
+ #: templates/metaboxes/types/customtabs.php:53
894
+ #: templates/metaboxes/types/customtabs.php:96
895
+ msgid "Content of the tab. (HTML is supported)"
896
+ msgstr "Contenido de la pestaña. (HTML se soporta)"
897
+
898
+ #: templates/metaboxes/types/customtabs.php:65
899
+ msgid "Add custom product tab"
900
+ msgstr "Añadir etiqueta de producto personalizado"
901
+
902
+ #: templates/metaboxes/types/customtabs.php:107
903
+ msgid "Do you want to remove the custom tab?"
904
+ msgstr "¿Quieres borrar la etiqueta personalizada?"
905
+
906
+ #: templates/metaboxes/types/icon-list.php:89
907
+ #, php-format
908
+ msgid "(Default: %s <img src=\"%s\"/>)"
909
+ msgstr "(Por defecto: %s <img src=\"%s\"/>)"
910
+
911
+ #: templates/metaboxes/types/icon-list.php:91
912
+ #, php-format
913
+ msgid "(Default: <i %s></i> )"
914
+ msgstr "(Por defecto: <i %s></i> )"
915
+
916
+ #: templates/metaboxes/types/image-gallery.php:40
917
+ #: templates/metaboxes/types/image-gallery.php:45
918
+ #: templates/metaboxes/types/images.php:38 templates/metaboxes/types/images.php:64
919
+ msgid "Delete image"
920
+ msgstr "Borrar imagen"
921
+
922
+ #: templates/metaboxes/types/image-gallery.php:45
923
+ msgid "Add Images to Gallery"
924
+ msgstr "Añadir imágenes a la Galería"
925
+
926
+ #: templates/metaboxes/types/image-gallery.php:45
927
+ msgid "Add to gallery"
928
+ msgstr "Añadir a la galería"
929
+
930
+ #: templates/metaboxes/types/image-gallery.php:45
931
+ msgid "Add images"
932
+ msgstr "Añadir imágenes"
933
+
934
+ #: templates/metaboxes/types/image-gallery.php:45
935
+ msgid "Delete"
936
+ msgstr "Borrar"
937
+
938
+ #: templates/metaboxes/types/images.php:42
939
+ msgid "Upload new images"
940
+ msgstr "Cargar nuevas imágenes"
941
+
942
+ #: templates/metaboxes/types/images.php:75
943
+ msgid "Are you sure you want to remove this image?"
944
+ msgstr "¿Estás seguro/a de que quieres borrar esta imagen?"
945
+
946
+ #: templates/metaboxes/types/sidebar-layout.php:25
947
+ #: templates/metaboxes/types/sidebars.php:36
948
+ msgid "Left sidebar"
949
+ msgstr "Barra lateral izquierda"
950
+
951
+ #: templates/metaboxes/types/sidebar-layout.php:28
952
+ #: templates/metaboxes/types/sidebars.php:42
953
+ #: templates/metaboxes/types/sidebars.php:45
954
+ msgid "No sidebar"
955
+ msgstr "Sin barra lateral"
956
+
957
+ #: templates/metaboxes/types/sidebar-layout.php:31
958
+ #: templates/metaboxes/types/sidebars.php:39
959
+ msgid "Right sidebar"
960
+ msgstr "Barra lateral derecha"
961
+
962
+ #: templates/metaboxes/types/sidebar-layout.php:34
963
+ #: templates/metaboxes/types/sidebars.php:53
964
+ #: templates/metaboxes/types/sidebars.php:64
965
+ msgid "Choose a sidebar"
966
+ msgstr "Elige una barra lateral"
967
+
968
+ #: templates/metaboxes/types/sidebars.php:51
969
+ msgid "Left Sidebar"
970
+ msgstr "Barra lateral izquierda"
971
+
972
+ #: templates/metaboxes/types/sidebars.php:62
973
+ msgid "Right Sidebar"
974
+ msgstr "Barra lateral derecha"
975
+
976
+ #: templates/metaboxes/types/typography.php:42
977
+ msgid "px"
978
+ msgstr "px"
979
+
980
+ #: templates/metaboxes/types/typography.php:43
981
+ msgid "em"
982
+ msgstr "em"
983
+
984
+ #: templates/metaboxes/types/typography.php:44
985
+ msgid "pt"
986
+ msgstr "pt"
987
+
988
+ #: templates/metaboxes/types/typography.php:45
989
+ msgid "rem"
990
+ msgstr "rem"
991
+
992
+ #: templates/metaboxes/types/typography.php:59
993
+ #: templates/metaboxes/types/typography.php:153
994
+ #: templates/metaboxes/types/typography.php:217
995
+ msgid "Web fonts"
996
+ msgstr "Fuentes web"
997
+
998
+ #: templates/metaboxes/types/typography.php:71
999
+ msgid "Google fonts"
1000
+ msgstr "Fuentes Google"
1001
+
1002
+ #: templates/metaboxes/types/typography.php:96
1003
+ msgid "Regular"
1004
+ msgstr "Normal"
1005
+
1006
+ #: templates/metaboxes/types/typography.php:97
1007
+ msgid "Bold"
1008
+ msgstr "Negrita"
1009
+
1010
+ #: templates/metaboxes/types/typography.php:98
1011
+ msgid "Extra bold"
1012
+ msgstr "Extra negrita"
1013
+
1014
+ #: templates/metaboxes/types/typography.php:99
1015
+ msgid "Italic"
1016
+ msgstr "Cursiva"
1017
+
1018
+ #: templates/metaboxes/types/typography.php:100
1019
+ msgid "Italic bold"
1020
+ msgstr "Cursiva negrita"
1021
+
1022
+ #: templates/panel/sidebar/widgets/widgets.php:17
1023
+ msgid "Join the club"
1024
+ msgstr "Únete al club"
1025
+
1026
+ #: templates/panel/sidebar/widgets/widgets.php:24
1027
+ msgid "Despacho Theme - 100% FREE"
1028
+ msgstr "Despacho Theme - 100% GRATIS"
1029
+
1030
+ #: templates/panel/sidebar/widgets/widgets.php:28
1031
+ msgid "FREE!"
1032
+ msgstr "¡GRATIS!"
1033
+
1034
+ #: templates/panel/sidebar/widgets/widgets.php:34
1035
+ msgid "Important Links"
1036
+ msgstr "Enlaces importantes"
1037
+
1038
+ #: templates/panel/types/upload.php:32
1039
+ msgid "Reset"
1040
+ msgstr "Reinicia"
1041
+
1042
+ #: templates/panel/woocommerce/woocommerce-form.php:17
1043
+ msgid "Reset Defaults"
1044
+ msgstr "Ajustes predeterminados"
1045
+
1046
+ #: templates/upgrade/upgrade-to-pro-version.php:2
1047
+ msgid "Upgrade to Premium Version"
1048
+ msgstr "Actualizar a la Versión Premium"
1049
+
1050
+ #: templates/upgrade/upgrade-to-pro-version.php:3
1051
+ msgid ""
1052
+ "Have you purchased the premium version of a plugin? Don't you know how to activate "
1053
+ "the license after the purchase?"
1054
+ msgstr ""
1055
+ "¿Has comprado la versión premium de un plugin? ¿No sabes cómo activar la licencia "
1056
+ "después de la compra?"
1057
+
1058
+ #: templates/upgrade/upgrade-to-pro-version.php:5
1059
+ msgid ""
1060
+ "To upgrade from a FREE to a PREMIUM plugin is not suffice to insert the license "
1061
+ "key provided after the purchase.\n"
1062
+ " The reason is that they are two distinct products, with significant "
1063
+ "differences both for available options and for number of files included in the "
1064
+ "plugin package.\n"
1065
+ " To start to use the PREMIUM version of the plugin, you simply need to "
1066
+ "download the PREMIUM packet and install it on your site."
1067
+ msgstr ""
1068
+ "Para actualizar a del plugin FREE al PREMIUMT no es suficiente con insertar la "
1069
+ "clave de licencia proporcionada después de la compra.\n"
1070
+ " La razón es que son dos productos diferentes, con diferencias "
1071
+ "significativas en las opciones disponibles para el número de archivos incluidos en "
1072
+ "el paquete del plugin.\n"
1073
+ " Para empezar a usar la versión PREMIUM del plugin, simplemente necesitas "
1074
+ "descargar el paquete PREMIUM e instalarlo en tu sitio web."
1075
+
1076
+ #: templates/upgrade/upgrade-to-pro-version.php:9
1077
+ #, php-format
1078
+ msgid ""
1079
+ "%1$sDo you need to know how to do it?%2$s Easy! %1$sFollow this list of steps%2$s "
1080
+ "and in a few minutes the plugin you purchased will be installed on your site"
1081
+ msgstr ""
1082
+ "%1$s¿Necesitas saber cómo hacerlo?%2$s ¡Fácil! %1$sSigue estos pasos%2$s y en unos "
1083
+ "minutos el plugin que has comprado estará instalado en tu sitio web"
1084
+
1085
+ #: templates/upgrade/upgrade-to-pro-version.php:12
1086
+ msgid "Go to yithemes.com and login to \"My Account\" page"
1087
+ msgstr "Ve a yithemes.com e inicia sesión en la página \"Mi cuenta\""
1088
+
1089
+ #: templates/upgrade/upgrade-to-pro-version.php:18
1090
+ msgid ""
1091
+ "From the menu on the left, click on \"My Downloads\", look for the plugin you want "
1092
+ "to install among the available downloads and click on \"Download\" button"
1093
+ msgstr ""
1094
+ "Desde el menú de la izquierda, haz click en \"Mis Descargas\", busca el plugin que "
1095
+ "te quieres descargar entre las descargas disponibles y haz click en el botón "
1096
+ "\"Descargar\""
1097
+
1098
+ #: templates/upgrade/upgrade-to-pro-version.php:24
1099
+ msgid ""
1100
+ "After downloading the packet, go to your website and login to WordPress "
1101
+ "administration area."
1102
+ msgstr ""
1103
+ "Después de descargar el paquete, ve a tu sitio web y regístrate en el área de "
1104
+ "administración de WordPress."
1105
+
1106
+ #: templates/upgrade/upgrade-to-pro-version.php:30
1107
+ msgid ""
1108
+ "From the menu on the left, click on \"Plugins\". You will be redirected to the "
1109
+ "page where you will find the complete list of all the plugins available on your "
1110
+ "site. Click on \"Add New\" button that you find above on the left to add a new "
1111
+ "plugin"
1112
+ msgstr ""
1113
+ "Desde el menú de la izquierda, haz click en \"Plugins\". Serás redirigido/a a la "
1114
+ "página donde podrás encontrar la lista completa de plugins disponible en tu sitio "
1115
+ "web. Haz click en el botón \"Añadir Nuevo\" que encontrarás arriba a la izquierda "
1116
+ "para añadir un nuevo plugin"
1117
+
1118
+ #: templates/upgrade/upgrade-to-pro-version.php:36
1119
+ msgid ""
1120
+ "You will be redirected to a new page where you will find, above on the left next "
1121
+ "to the page title, the \"Upload Plugin\" button."
1122
+ msgstr ""
1123
+ "Serás redirigido/a a una nueva página donde encontrarás, en la parte superior "
1124
+ "izquierda, junto al título de la página, el botón \"Actualizar Plugin\""
1125
+
1126
+ #: templates/upgrade/upgrade-to-pro-version.php:42
1127
+ msgid ""
1128
+ "Click on \"Upload Plugins\" button to start the upload of the PREMIUM version of "
1129
+ "the plugin previously downloaded. Click on \"Select File\", search for the "
1130
+ "download folder related to the plugin and upload the package. Now you only need to "
1131
+ "wait a few minutes for the upload and the installation on your site. (We used YITH "
1132
+ "Live Chat plugin by way of example)"
1133
+ msgstr ""
1134
+ "Haz click en el botón \"Actualizar Plugins\" para actualizar la versión premium "
1135
+ "del plugin anteriormente descargada. Haz click en \"Seleccionar Archivo\", busca "
1136
+ "la carpeta relacionada al plugin y actualiza el paquete. Ahora sólo necesitas "
1137
+ "esperar unos minutos para actualizarlo e instalarlo en tu sitio web. (Usamos YITH "
1138
+ "Live Chat a modo de ejemplo)"
1139
+
1140
+ #: templates/upgrade/upgrade-to-pro-version.php:48
1141
+ msgid "After completing the installation, click on \"Activate plugin\""
1142
+ msgstr "Después de completar la instalación, haz click en \"Activar plugin\""
1143
+
1144
+ #: templates/upgrade/upgrade-to-pro-version.php:52
1145
+ msgid ""
1146
+ "If everything worked allright, your plugin is now correctly installed on your "
1147
+ "website. Enjoy it :-)"
1148
+ msgstr ""
1149
+ "Si todo funcionó bien, tu plugin está ahora correctamente instalado en tu sitio "
1150
+ "web. Disfrútalo :-)"
1151
+
1152
+ #: templates/upgrade/upgrade-to-pro-version.php:55
1153
+ msgid ""
1154
+ "The last step is the activation of the plugin through its license key you received "
1155
+ "after the purchase. Click on \"License Activation\" that you find in \"YITH Plugins"
1156
+ "\" and insert the license key and the email address you used during the purchase."
1157
+ msgstr ""
1158
+ "El último paso es la activación del plugin a través de la clave de licencia, que "
1159
+ "recibiste después de la compra. Haz click en \"Activación de la licencia\", que "
1160
+ "encontrarás en \"YITH Plugins\" e introduce la dirección de email que usaste "
1161
+ "durante la compra."
1162
+
1163
+ #: templates/upgrade/upgrade-to-pro-version.php:61
1164
+ msgid ""
1165
+ "In case you had difficulty to recover the license key we sent you by email, you "
1166
+ "can easily find it in \"My Licenses\" section of your account on yithemes.com"
1167
+ msgstr ""
1168
+ "En caso de que hayas tenido dificultad para recuperar la clave de licencia que te "
1169
+ "enviamos por email, puedes encontrarla fácilmente en la sección \"Mis Licencias\" "
1170
+ "de tu cuenta en yithemes.com"
plugin-fw/languages/yith-plugin-fw-it_IT.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-it_IT.po CHANGED
@@ -4,21 +4,21 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: YITH Plugin Starter 1.0.0 Plugin FW\n"
6
  "Report-Msgid-Bugs-To: Your Inspiration Themes <plugins@yithemes.com>\n"
7
- "POT-Creation-Date: 2016-03-18 15:29+0100\n"
8
- "PO-Revision-Date: 2016-03-18 15:34+0100\n"
9
  "Last-Translator: \n"
10
  "Language-Team: YIThemes <plugins@yithemes.com>\n"
11
  "Language: it_IT\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Poedit 1.8.1\n"
16
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
17
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
18
  "esc_html_x:1,2c\n"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
  "X-Poedit-SourceCharset: UTF-8\n"
21
- "X-Poedit-Basepath: ../\n"
22
  "X-Textdomain-Support: yes\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
 
@@ -127,7 +127,7 @@ msgid "%s Settings"
127
  msgstr "Impostazioni %s"
128
 
129
  #: lib/yit-cpt-unlimited.php:1048 lib/yit-cpt-unlimited.php:1196
130
- #: lib/yit-cpt-unlimited.php:1202 lib/yit-plugin-panel.php:64
131
  msgid "Settings"
132
  msgstr "Impostazioni"
133
 
@@ -224,79 +224,83 @@ msgstr "Aggiungi %s dalla immagini"
224
  msgid "Upload multiple files"
225
  msgstr ""
226
 
227
- #: lib/yit-plugin-panel-wc.php:345
 
 
 
 
 
 
 
 
228
  msgid "The changes you have made will be lost if you leave this page."
229
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
230
 
231
- #: lib/yit-plugin-panel.php:63
232
  msgid "Plugin Settings"
233
  msgstr "Impostazioni plugin"
234
 
235
- #: lib/yit-plugin-panel.php:99 lib/yit-plugin-subpanel.php:103
236
- msgid "YITH Plugins"
237
- msgstr "YITH Plugins"
238
-
239
- #: lib/yit-plugin-panel.php:276
240
  msgid "Premium version upgrade"
241
  msgstr ""
242
 
243
- #: lib/yit-plugin-panel.php:322 lib/yit-plugin-subpanel.php:146
244
- #: templates/panel/woocommerce/woocommerce-form.php:5
245
  msgid "Save Changes"
246
  msgstr "Salva modifiche"
247
 
248
- #: lib/yit-plugin-panel.php:325 templates/panel/woocommerce/woocommerce-form.php:8
249
  msgid "If you continue with this action, you will reset all options in this page."
250
  msgstr ""
251
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
252
  "reimpostate."
253
 
254
- #: lib/yit-plugin-panel.php:327 lib/yit-plugin-subpanel.php:151
255
  msgid "Reset to default"
256
  msgstr ""
257
 
258
- #: lib/yit-plugin-panel.php:327 lib/yit-plugin-subpanel.php:151
259
- #: templates/panel/woocommerce/woocommerce-form.php:11
260
  msgid "Are you sure?"
261
  msgstr "Sei sicuro?"
262
 
263
- #: lib/yit-plugin-panel.php:461
264
  msgid "The element you have entered already exists. Please, enter another name."
265
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
266
 
267
- #: lib/yit-plugin-panel.php:462
268
  msgid "Settings saved"
269
  msgstr "Impostazioni salvate"
270
 
271
- #: lib/yit-plugin-panel.php:463
272
  msgid "Settings reset"
273
  msgstr "Impostazioni azzerate"
274
 
275
- #: lib/yit-plugin-panel.php:464
276
  msgid "Element deleted correctly."
277
  msgstr "Elemento rimosso correttamente."
278
 
279
- #: lib/yit-plugin-panel.php:465 lib/yit-plugin-panel.php:466
280
  msgid "Element updated correctly."
281
  msgstr "Elemento aggiornato correttamente."
282
 
283
- #: lib/yit-plugin-panel.php:467
284
  msgid "Database imported correctly."
285
  msgstr "Database importato correttamente."
286
 
287
- #: lib/yit-plugin-panel.php:468
288
  msgid "An error has occurred during import. Please try again."
289
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
290
 
291
- #: lib/yit-plugin-panel.php:469
292
  msgid "The added file is not valid."
293
  msgstr "Il file aggiunto non è valido."
294
 
295
- #: lib/yit-plugin-panel.php:470
296
  msgid "Sorry, import is disabled."
297
  msgstr "Ci dispiace, l'importazione è disabilitata."
298
 
299
- #: lib/yit-plugin-panel.php:471
300
  msgid "Sorting successful."
301
  msgstr "Ordinamento effettuato con successo."
302
 
@@ -1003,11 +1007,27 @@ msgstr "Corsivo"
1003
  msgid "Italic bold"
1004
  msgstr "Grassetto corsivo"
1005
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1006
  #: templates/panel/types/upload.php:32
1007
  msgid "Reset"
1008
  msgstr ""
1009
 
1010
- #: templates/panel/woocommerce/woocommerce-form.php:11
1011
  msgid "Reset Defaults"
1012
  msgstr "Ripristina impostazioni iniziali"
1013
 
@@ -1121,12 +1141,8 @@ msgstr ""
1121
  msgid ""
1122
  "The last step is the activation of the plugin through its license key you received "
1123
  "after the purchase. Click on \"License Activation\" that you find in \"YITH Plugins"
1124
- "\" and insert the license key and the email address you used during the purchas."
1125
  msgstr ""
1126
- "Ultimo step è attivare il plugin con la chiave di licenza che hai ricevuto dopo "
1127
- "l'acquisto. Clicca quindi sul link \"License Activation\" che trovi sotto \"YITH "
1128
- "Plugins\" ed inserisci la license key in tuo possesso ed email utilizzata in fase "
1129
- "di acquisto."
1130
 
1131
  #: templates/upgrade/upgrade-to-pro-version.php:61
1132
  msgid ""
@@ -1137,6 +1153,20 @@ msgstr ""
1137
  "facilmente recuperarla dalla sezione \"My Licenses\" all'interno della sezione My "
1138
  "Account del nostro sito yithemes.com."
1139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1140
  #~ msgid "YIT Plugins"
1141
  #~ msgstr "YIT Plugins"
1142
 
4
  msgstr ""
5
  "Project-Id-Version: YITH Plugin Starter 1.0.0 Plugin FW\n"
6
  "Report-Msgid-Bugs-To: Your Inspiration Themes <plugins@yithemes.com>\n"
7
+ "POT-Creation-Date: 2016-05-16 16:37+0200\n"
8
+ "PO-Revision-Date: 2016-05-16 16:37+0200\n"
9
  "Last-Translator: \n"
10
  "Language-Team: YIThemes <plugins@yithemes.com>\n"
11
  "Language: it_IT\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.8.4\n"
16
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
17
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
18
  "esc_html_x:1,2c\n"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
  "X-Poedit-SourceCharset: UTF-8\n"
21
+ "X-Poedit-Basepath: ..\n"
22
  "X-Textdomain-Support: yes\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
 
127
  msgstr "Impostazioni %s"
128
 
129
  #: lib/yit-cpt-unlimited.php:1048 lib/yit-cpt-unlimited.php:1196
130
+ #: lib/yit-cpt-unlimited.php:1202 lib/yit-plugin-panel.php:74
131
  msgid "Settings"
132
  msgstr "Impostazioni"
133
 
224
  msgid "Upload multiple files"
225
  msgstr ""
226
 
227
+ #: lib/yit-plugin-panel-sidebar.php:421 templates/panel/sidebar/sidebar.php:3
228
+ msgid "Hide sidebar"
229
+ msgstr ""
230
+
231
+ #: lib/yit-plugin-panel-sidebar.php:422 templates/panel/sidebar/sidebar.php:3
232
+ msgid "Show sidebar"
233
+ msgstr ""
234
+
235
+ #: lib/yit-plugin-panel-wc.php:359
236
  msgid "The changes you have made will be lost if you leave this page."
237
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
238
 
239
+ #: lib/yit-plugin-panel.php:73
240
  msgid "Plugin Settings"
241
  msgstr "Impostazioni plugin"
242
 
243
+ #: lib/yit-plugin-panel.php:293
 
 
 
 
244
  msgid "Premium version upgrade"
245
  msgstr ""
246
 
247
+ #: lib/yit-plugin-panel.php:344 lib/yit-plugin-subpanel.php:146
248
+ #: templates/panel/woocommerce/woocommerce-form.php:11
249
  msgid "Save Changes"
250
  msgstr "Salva modifiche"
251
 
252
+ #: lib/yit-plugin-panel.php:347 templates/panel/woocommerce/woocommerce-form.php:14
253
  msgid "If you continue with this action, you will reset all options in this page."
254
  msgstr ""
255
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
256
  "reimpostate."
257
 
258
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
259
  msgid "Reset to default"
260
  msgstr ""
261
 
262
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
263
+ #: templates/panel/woocommerce/woocommerce-form.php:18
264
  msgid "Are you sure?"
265
  msgstr "Sei sicuro?"
266
 
267
+ #: lib/yit-plugin-panel.php:545
268
  msgid "The element you have entered already exists. Please, enter another name."
269
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
270
 
271
+ #: lib/yit-plugin-panel.php:546
272
  msgid "Settings saved"
273
  msgstr "Impostazioni salvate"
274
 
275
+ #: lib/yit-plugin-panel.php:547
276
  msgid "Settings reset"
277
  msgstr "Impostazioni azzerate"
278
 
279
+ #: lib/yit-plugin-panel.php:548
280
  msgid "Element deleted correctly."
281
  msgstr "Elemento rimosso correttamente."
282
 
283
+ #: lib/yit-plugin-panel.php:549 lib/yit-plugin-panel.php:550
284
  msgid "Element updated correctly."
285
  msgstr "Elemento aggiornato correttamente."
286
 
287
+ #: lib/yit-plugin-panel.php:551
288
  msgid "Database imported correctly."
289
  msgstr "Database importato correttamente."
290
 
291
+ #: lib/yit-plugin-panel.php:552
292
  msgid "An error has occurred during import. Please try again."
293
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
294
 
295
+ #: lib/yit-plugin-panel.php:553
296
  msgid "The added file is not valid."
297
  msgstr "Il file aggiunto non è valido."
298
 
299
+ #: lib/yit-plugin-panel.php:554
300
  msgid "Sorry, import is disabled."
301
  msgstr "Ci dispiace, l'importazione è disabilitata."
302
 
303
+ #: lib/yit-plugin-panel.php:555
304
  msgid "Sorting successful."
305
  msgstr "Ordinamento effettuato con successo."
306
 
1007
  msgid "Italic bold"
1008
  msgstr "Grassetto corsivo"
1009
 
1010
+ #: templates/panel/sidebar/widgets/widgets.php:17
1011
+ msgid "Join the club"
1012
+ msgstr ""
1013
+
1014
+ #: templates/panel/sidebar/widgets/widgets.php:24
1015
+ msgid "Despacho Theme - 100% FREE"
1016
+ msgstr ""
1017
+
1018
+ #: templates/panel/sidebar/widgets/widgets.php:28
1019
+ msgid "FREE!"
1020
+ msgstr ""
1021
+
1022
+ #: templates/panel/sidebar/widgets/widgets.php:34
1023
+ msgid "Important Links"
1024
+ msgstr ""
1025
+
1026
  #: templates/panel/types/upload.php:32
1027
  msgid "Reset"
1028
  msgstr ""
1029
 
1030
+ #: templates/panel/woocommerce/woocommerce-form.php:17
1031
  msgid "Reset Defaults"
1032
  msgstr "Ripristina impostazioni iniziali"
1033
 
1141
  msgid ""
1142
  "The last step is the activation of the plugin through its license key you received "
1143
  "after the purchase. Click on \"License Activation\" that you find in \"YITH Plugins"
1144
+ "\" and insert the license key and the email address you used during the purchase."
1145
  msgstr ""
 
 
 
 
1146
 
1147
  #: templates/upgrade/upgrade-to-pro-version.php:61
1148
  msgid ""
1153
  "facilmente recuperarla dalla sezione \"My Licenses\" all'interno della sezione My "
1154
  "Account del nostro sito yithemes.com."
1155
 
1156
+ #~ msgid "YITH Plugins"
1157
+ #~ msgstr "YITH Plugins"
1158
+
1159
+ #~ msgid ""
1160
+ #~ "The last step is the activation of the plugin through its license key you "
1161
+ #~ "received after the purchase. Click on \"License Activation\" that you find in "
1162
+ #~ "\"YITH Plugins\" and insert the license key and the email address you used "
1163
+ #~ "during the purchas."
1164
+ #~ msgstr ""
1165
+ #~ "Ultimo step è attivare il plugin con la chiave di licenza che hai ricevuto dopo "
1166
+ #~ "l'acquisto. Clicca quindi sul link \"License Activation\" che trovi sotto "
1167
+ #~ "\"YITH Plugins\" ed inserisci la license key in tuo possesso ed email "
1168
+ #~ "utilizzata in fase di acquisto."
1169
+
1170
  #~ msgid "YIT Plugins"
1171
  #~ msgstr "YIT Plugins"
1172
 
plugin-fw/languages/yith-plugin-fw.pot CHANGED
@@ -5,7 +5,7 @@ msgid ""
5
  msgstr ""
6
  "Project-Id-Version: YITH Plugin Starter 1.0.0 Plugin FW\n"
7
  "Report-Msgid-Bugs-To: Your Inspiration Themes <plugins@yithemes.com>\n"
8
- "POT-Creation-Date: 2016-03-07 15:11+0100\n"
9
  "PO-Revision-Date: 2015-05-05 10:38+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: Your Inspiration Themes <info@yithemes.com>\n"
@@ -13,13 +13,13 @@ msgstr ""
13
  "MIME-Version: 1.0\n"
14
  "Content-Type: text/plain; charset=utf-8\n"
15
  "Content-Transfer-Encoding: 8bit\n"
16
- "X-Generator: Poedit 1.8.1\n"
17
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
18
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
19
  "esc_html_x:1,2c\n"
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
  "X-Poedit-SourceCharset: UTF-8\n"
22
- "X-Poedit-Basepath: ../\n"
23
  "X-Textdomain-Support: yes\n"
24
  "X-Poedit-SearchPath-0: .\n"
25
 
@@ -128,7 +128,7 @@ msgid "%s Settings"
128
  msgstr ""
129
 
130
  #: lib/yit-cpt-unlimited.php:1048 lib/yit-cpt-unlimited.php:1196
131
- #: lib/yit-cpt-unlimited.php:1202 lib/yit-plugin-panel.php:64
132
  msgid "Settings"
133
  msgstr ""
134
 
@@ -220,73 +220,81 @@ msgstr ""
220
  msgid "Upload multiple files"
221
  msgstr ""
222
 
223
- #: lib/yit-plugin-panel-wc.php:341
 
 
 
 
 
 
 
 
224
  msgid "The changes you have made will be lost if you leave this page."
225
  msgstr ""
226
 
227
- #: lib/yit-plugin-panel.php:63
228
  msgid "Plugin Settings"
229
  msgstr ""
230
 
231
- #: lib/yit-plugin-panel.php:99 lib/yit-plugin-subpanel.php:103
232
- msgid "YITH Plugins"
233
  msgstr ""
234
 
235
- #: lib/yit-plugin-panel.php:297 lib/yit-plugin-subpanel.php:146
236
- #: templates/panel/woocommerce/woocommerce-form.php:5
237
  msgid "Save Changes"
238
  msgstr ""
239
 
240
- #: lib/yit-plugin-panel.php:300 templates/panel/woocommerce/woocommerce-form.php:8
241
  msgid "If you continue with this action, you will reset all options in this page."
242
  msgstr ""
243
 
244
- #: lib/yit-plugin-panel.php:302 lib/yit-plugin-subpanel.php:151
245
  msgid "Reset to default"
246
  msgstr ""
247
 
248
- #: lib/yit-plugin-panel.php:302 lib/yit-plugin-subpanel.php:151
249
- #: templates/panel/woocommerce/woocommerce-form.php:11
250
  msgid "Are you sure?"
251
  msgstr ""
252
 
253
- #: lib/yit-plugin-panel.php:436
254
  msgid "The element you have entered already exists. Please, enter another name."
255
  msgstr ""
256
 
257
- #: lib/yit-plugin-panel.php:437
258
  msgid "Settings saved"
259
  msgstr ""
260
 
261
- #: lib/yit-plugin-panel.php:438
262
  msgid "Settings reset"
263
  msgstr ""
264
 
265
- #: lib/yit-plugin-panel.php:439
266
  msgid "Element deleted correctly."
267
  msgstr ""
268
 
269
- #: lib/yit-plugin-panel.php:440 lib/yit-plugin-panel.php:441
270
  msgid "Element updated correctly."
271
  msgstr ""
272
 
273
- #: lib/yit-plugin-panel.php:442
274
  msgid "Database imported correctly."
275
  msgstr ""
276
 
277
- #: lib/yit-plugin-panel.php:443
278
  msgid "An error has occurred during import. Please try again."
279
  msgstr ""
280
 
281
- #: lib/yit-plugin-panel.php:444
282
  msgid "The added file is not valid."
283
  msgstr ""
284
 
285
- #: lib/yit-plugin-panel.php:445
286
  msgid "Sorry, import is disabled."
287
  msgstr ""
288
 
289
- #: lib/yit-plugin-panel.php:446
290
  msgid "Sorting successful."
291
  msgstr ""
292
 
@@ -961,10 +969,116 @@ msgstr ""
961
  msgid "Italic bold"
962
  msgstr ""
963
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
964
  #: templates/panel/types/upload.php:32
965
  msgid "Reset"
966
  msgstr ""
967
 
968
- #: templates/panel/woocommerce/woocommerce-form.php:11
969
  msgid "Reset Defaults"
970
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  msgstr ""
6
  "Project-Id-Version: YITH Plugin Starter 1.0.0 Plugin FW\n"
7
  "Report-Msgid-Bugs-To: Your Inspiration Themes <plugins@yithemes.com>\n"
8
+ "POT-Creation-Date: 2016-05-16 16:37+0200\n"
9
  "PO-Revision-Date: 2015-05-05 10:38+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: Your Inspiration Themes <info@yithemes.com>\n"
13
  "MIME-Version: 1.0\n"
14
  "Content-Type: text/plain; charset=utf-8\n"
15
  "Content-Transfer-Encoding: 8bit\n"
16
+ "X-Generator: Poedit 1.8.4\n"
17
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
18
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
19
  "esc_html_x:1,2c\n"
20
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
21
  "X-Poedit-SourceCharset: UTF-8\n"
22
+ "X-Poedit-Basepath: ..\n"
23
  "X-Textdomain-Support: yes\n"
24
  "X-Poedit-SearchPath-0: .\n"
25
 
128
  msgstr ""
129
 
130
  #: lib/yit-cpt-unlimited.php:1048 lib/yit-cpt-unlimited.php:1196
131
+ #: lib/yit-cpt-unlimited.php:1202 lib/yit-plugin-panel.php:74
132
  msgid "Settings"
133
  msgstr ""
134
 
220
  msgid "Upload multiple files"
221
  msgstr ""
222
 
223
+ #: lib/yit-plugin-panel-sidebar.php:421 templates/panel/sidebar/sidebar.php:3
224
+ msgid "Hide sidebar"
225
+ msgstr ""
226
+
227
+ #: lib/yit-plugin-panel-sidebar.php:422 templates/panel/sidebar/sidebar.php:3
228
+ msgid "Show sidebar"
229
+ msgstr ""
230
+
231
+ #: lib/yit-plugin-panel-wc.php:359
232
  msgid "The changes you have made will be lost if you leave this page."
233
  msgstr ""
234
 
235
+ #: lib/yit-plugin-panel.php:73
236
  msgid "Plugin Settings"
237
  msgstr ""
238
 
239
+ #: lib/yit-plugin-panel.php:293
240
+ msgid "Premium version upgrade"
241
  msgstr ""
242
 
243
+ #: lib/yit-plugin-panel.php:344 lib/yit-plugin-subpanel.php:146
244
+ #: templates/panel/woocommerce/woocommerce-form.php:11
245
  msgid "Save Changes"
246
  msgstr ""
247
 
248
+ #: lib/yit-plugin-panel.php:347 templates/panel/woocommerce/woocommerce-form.php:14
249
  msgid "If you continue with this action, you will reset all options in this page."
250
  msgstr ""
251
 
252
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
253
  msgid "Reset to default"
254
  msgstr ""
255
 
256
+ #: lib/yit-plugin-panel.php:349 lib/yit-plugin-subpanel.php:151
257
+ #: templates/panel/woocommerce/woocommerce-form.php:18
258
  msgid "Are you sure?"
259
  msgstr ""
260
 
261
+ #: lib/yit-plugin-panel.php:545
262
  msgid "The element you have entered already exists. Please, enter another name."
263
  msgstr ""
264
 
265
+ #: lib/yit-plugin-panel.php:546
266
  msgid "Settings saved"
267
  msgstr ""
268
 
269
+ #: lib/yit-plugin-panel.php:547
270
  msgid "Settings reset"
271
  msgstr ""
272
 
273
+ #: lib/yit-plugin-panel.php:548
274
  msgid "Element deleted correctly."
275
  msgstr ""
276
 
277
+ #: lib/yit-plugin-panel.php:549 lib/yit-plugin-panel.php:550
278
  msgid "Element updated correctly."
279
  msgstr ""
280
 
281
+ #: lib/yit-plugin-panel.php:551
282
  msgid "Database imported correctly."
283
  msgstr ""
284
 
285
+ #: lib/yit-plugin-panel.php:552
286
  msgid "An error has occurred during import. Please try again."
287
  msgstr ""
288
 
289
+ #: lib/yit-plugin-panel.php:553
290
  msgid "The added file is not valid."
291
  msgstr ""
292
 
293
+ #: lib/yit-plugin-panel.php:554
294
  msgid "Sorry, import is disabled."
295
  msgstr ""
296
 
297
+ #: lib/yit-plugin-panel.php:555
298
  msgid "Sorting successful."
299
  msgstr ""
300
 
969
  msgid "Italic bold"
970
  msgstr ""
971
 
972
+ #: templates/panel/sidebar/widgets/widgets.php:17
973
+ msgid "Join the club"
974
+ msgstr ""
975
+
976
+ #: templates/panel/sidebar/widgets/widgets.php:24
977
+ msgid "Despacho Theme - 100% FREE"
978
+ msgstr ""
979
+
980
+ #: templates/panel/sidebar/widgets/widgets.php:28
981
+ msgid "FREE!"
982
+ msgstr ""
983
+
984
+ #: templates/panel/sidebar/widgets/widgets.php:34
985
+ msgid "Important Links"
986
+ msgstr ""
987
+
988
  #: templates/panel/types/upload.php:32
989
  msgid "Reset"
990
  msgstr ""
991
 
992
+ #: templates/panel/woocommerce/woocommerce-form.php:17
993
  msgid "Reset Defaults"
994
  msgstr ""
995
+
996
+ #: templates/upgrade/upgrade-to-pro-version.php:2
997
+ msgid "Upgrade to Premium Version"
998
+ msgstr ""
999
+
1000
+ #: templates/upgrade/upgrade-to-pro-version.php:3
1001
+ msgid ""
1002
+ "Have you purchased the premium version of a plugin? Don't you know how to activate "
1003
+ "the license after the purchase?"
1004
+ msgstr ""
1005
+
1006
+ #: templates/upgrade/upgrade-to-pro-version.php:5
1007
+ msgid ""
1008
+ "To upgrade from a FREE to a PREMIUM plugin is not suffice to insert the license "
1009
+ "key provided after the purchase.\n"
1010
+ " The reason is that they are two distinct products, with significant "
1011
+ "differences both for available options and for number of files included in the "
1012
+ "plugin package.\n"
1013
+ " To start to use the PREMIUM version of the plugin, you simply need to "
1014
+ "download the PREMIUM packet and install it on your site."
1015
+ msgstr ""
1016
+
1017
+ #: templates/upgrade/upgrade-to-pro-version.php:9
1018
+ #, php-format
1019
+ msgid ""
1020
+ "%1$sDo you need to know how to do it?%2$s Easy! %1$sFollow this list of steps%2$s "
1021
+ "and in a few minutes the plugin you purchased will be installed on your site"
1022
+ msgstr ""
1023
+
1024
+ #: templates/upgrade/upgrade-to-pro-version.php:12
1025
+ msgid "Go to yithemes.com and login to \"My Account\" page"
1026
+ msgstr ""
1027
+
1028
+ #: templates/upgrade/upgrade-to-pro-version.php:18
1029
+ msgid ""
1030
+ "From the menu on the left, click on \"My Downloads\", look for the plugin you want "
1031
+ "to install among the available downloads and click on \"Download\" button"
1032
+ msgstr ""
1033
+
1034
+ #: templates/upgrade/upgrade-to-pro-version.php:24
1035
+ msgid ""
1036
+ "After downloading the packet, go to your website and login to WordPress "
1037
+ "administration area."
1038
+ msgstr ""
1039
+
1040
+ #: templates/upgrade/upgrade-to-pro-version.php:30
1041
+ msgid ""
1042
+ "From the menu on the left, click on \"Plugins\". You will be redirected to the "
1043
+ "page where you will find the complete list of all the plugins available on your "
1044
+ "site. Click on \"Add New\" button that you find above on the left to add a new "
1045
+ "plugin"
1046
+ msgstr ""
1047
+
1048
+ #: templates/upgrade/upgrade-to-pro-version.php:36
1049
+ msgid ""
1050
+ "You will be redirected to a new page where you will find, above on the left next "
1051
+ "to the page title, the \"Upload Plugin\" button."
1052
+ msgstr ""
1053
+
1054
+ #: templates/upgrade/upgrade-to-pro-version.php:42
1055
+ msgid ""
1056
+ "Click on \"Upload Plugins\" button to start the upload of the PREMIUM version of "
1057
+ "the plugin previously downloaded. Click on \"Select File\", search for the "
1058
+ "download folder related to the plugin and upload the package. Now you only need to "
1059
+ "wait a few minutes for the upload and the installation on your site. (We used YITH "
1060
+ "Live Chat plugin by way of example)"
1061
+ msgstr ""
1062
+
1063
+ #: templates/upgrade/upgrade-to-pro-version.php:48
1064
+ msgid "After completing the installation, click on \"Activate plugin\""
1065
+ msgstr ""
1066
+
1067
+ #: templates/upgrade/upgrade-to-pro-version.php:52
1068
+ msgid ""
1069
+ "If everything worked allright, your plugin is now correctly installed on your "
1070
+ "website. Enjoy it :-)"
1071
+ msgstr ""
1072
+
1073
+ #: templates/upgrade/upgrade-to-pro-version.php:55
1074
+ msgid ""
1075
+ "The last step is the activation of the plugin through its license key you received "
1076
+ "after the purchase. Click on \"License Activation\" that you find in \"YITH Plugins"
1077
+ "\" and insert the license key and the email address you used during the purchase."
1078
+ msgstr ""
1079
+
1080
+ #: templates/upgrade/upgrade-to-pro-version.php:61
1081
+ msgid ""
1082
+ "In case you had difficulty to recover the license key we sent you by email, you "
1083
+ "can easily find it in \"My Licenses\" section of your account on yithemes.com"
1084
+ msgstr ""
plugin-fw/lib/yit-plugin-panel-sidebar.php CHANGED
@@ -180,7 +180,7 @@ if ( !class_exists( 'YIT_Plugin_Panel_Sidebar' ) ) {
180
  $updated_expiration = DAY_IN_SECONDS; // update frequency
181
 
182
  $remote_xml = wp_remote_get( $this->_remote_widget_xml );
183
- if ( !is_wp_error( $remote_xml ) && isset( $remote_xml[ 'response' ][ 'code' ] ) && '200' == $remote_xml[ 'response' ][ 'code' ] ) {
184
  try {
185
  // suppress all XML errors when loading the document
186
  libxml_use_internal_errors( true );
180
  $updated_expiration = DAY_IN_SECONDS; // update frequency
181
 
182
  $remote_xml = wp_remote_get( $this->_remote_widget_xml );
183
+ if ( !is_wp_error( $remote_xml ) && isset( $remote_xml[ 'response' ][ 'code' ] ) && '200' == $remote_xml[ 'response' ][ 'code' ] && class_exists( 'SimpleXmlElement' ) ) {
184
  try {
185
  // suppress all XML errors when loading the document
186
  libxml_use_internal_errors( true );
plugin-fw/lib/yit-plugin-panel-wc.php CHANGED
@@ -335,24 +335,39 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
335
  */
336
  public function admin_enqueue_scripts() {
337
  global $woocommerce, $pagenow;
 
 
338
 
339
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
340
 
341
  wp_enqueue_media();
342
- wp_enqueue_style( 'woocommerce_admin_styles', $woocommerce->plugin_url() . '/assets/css/admin.css', array(), $woocommerce->version );
343
- wp_register_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $woocommerce->version );
344
- wp_register_style( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/css/colorbox.css', array(), $woocommerce->version );
345
- wp_register_style( 'yit-upgrade-to-pro', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrade-to-pro.css', array( 'colorbox' ), $woocommerce->version );
346
 
347
  if ( 'customize.php' != $pagenow ){
348
-
349
  wp_enqueue_style ( 'wp-jquery-ui-dialog' );
350
-
351
  }
352
 
353
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
354
  wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
355
- wp_enqueue_script( 'woocommerce_settings', $woocommerce->plugin_url() . '/assets/js/admin/settings.min.js', array( 'jquery', 'jquery-ui-datepicker','jquery-ui-dialog', 'jquery-ui-sortable', 'iris', 'chosen' ), $woocommerce->version, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  wp_register_script( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/js/jquery.colorbox.js', array( 'jquery' ), '1.6.3', true );
357
  wp_register_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.min.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
358
  wp_localize_script( 'woocommerce_settings', 'woocommerce_settings_params', array(
335
  */
336
  public function admin_enqueue_scripts() {
337
  global $woocommerce, $pagenow;
338
+
339
+ $woocommerce_version = function_exists( 'WC' ) ? WC()->version : $woocommerce->version;
340
 
341
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
342
 
343
  wp_enqueue_media();
344
+ wp_enqueue_style( 'woocommerce_admin_styles', $woocommerce->plugin_url() . '/assets/css/admin.css', array(), $woocommerce_version );
345
+ wp_register_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $woocommerce_version );
346
+ wp_register_style( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/css/colorbox.css', array(), $woocommerce_version );
347
+ wp_register_style( 'yit-upgrade-to-pro', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrade-to-pro.css', array( 'colorbox' ), $woocommerce_version );
348
 
349
  if ( 'customize.php' != $pagenow ){
 
350
  wp_enqueue_style ( 'wp-jquery-ui-dialog' );
 
351
  }
352
 
353
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
354
  wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
355
+
356
+ $woocommerce_settings_deps = array( 'jquery', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'iris' );
357
+
358
+ if( version_compare( '2.5', $woocommerce_version, '<=' ) ){
359
+ // WooCommerce > 2.6
360
+ $woocommerce_settings_deps[] = 'select2';
361
+ }
362
+
363
+ else {
364
+ // WooCommerce < 2.6
365
+ $woocommerce_settings_deps[] = 'jquery-ui-dialog';
366
+ $woocommerce_settings_deps[] = 'chosen';
367
+ }
368
+
369
+ wp_enqueue_script( 'woocommerce_settings', $woocommerce->plugin_url() . '/assets/js/admin/settings.min.js', $woocommerce_settings_deps, $woocommerce_version, true );
370
+
371
  wp_register_script( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/js/jquery.colorbox.js', array( 'jquery' ), '1.6.3', true );
372
  wp_register_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.min.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
373
  wp_localize_script( 'woocommerce_settings', 'woocommerce_settings_params', array(
plugin-fw/lib/yit-plugin-panel.php CHANGED
@@ -155,6 +155,7 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
155
  wp_register_script( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/codemirror.js', array( 'jquery' ), $this->version, true );
156
  wp_register_script( 'codemirror-javascript', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/javascript.js', array( 'jquery', 'codemirror' ), $this->version, true );
157
  wp_register_script( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/js/jquery.colorbox.js', array( 'jquery' ), '1.6.3', true );
 
158
 
159
  //styles
160
  $jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
@@ -175,7 +176,8 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
175
  if( 'admin.php' == $pagenow && strpos( get_current_screen()->id, 'yith_upgrade_premium_version' ) !== false ){
176
  wp_enqueue_style( 'yit-upgrade-to-pro' );
177
  wp_enqueue_script( 'colorbox' );
178
- }
 
179
  }
180
 
181
  /**
@@ -287,10 +289,15 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
287
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
288
  */
289
  public function add_premium_version_upgrade_to_menu(){
290
- global $_parent_pages;
291
-
292
- if( apply_filters( 'yit_show_upgrade_to_premium_version', ! isset( $_parent_pages['yith_upgrade_premium_version'] ) ) ){
293
- add_submenu_page( 'yit_plugin_panel', __( 'Premium version upgrade', 'yith-plugin-fw' ), __( 'Premium version upgrade', 'yith-plugin-fw' ), 'install_plugins', 'yith_upgrade_premium_version', array( $this, 'show_premium_version_upgrade' ) );
 
 
 
 
 
294
  }
295
  }
296
 
@@ -906,16 +913,5 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
906
 
907
  $this->add_videobox( $args );
908
  }
909
-
910
- /**
911
- * Show the upgrade to pro version page
912
- *
913
- * @return void
914
- * @since 2.9.13
915
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
916
- */
917
- public function show_premium_version_upgrade() {
918
- yit_plugin_get_template ( YIT_CORE_PLUGIN_PATH, 'upgrade/upgrade-to-pro-version.php', array( 'core_plugin_url' => YIT_CORE_PLUGIN_URL ) ) ;
919
- }
920
  }
921
  }
155
  wp_register_script( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/codemirror.js', array( 'jquery' ), $this->version, true );
156
  wp_register_script( 'codemirror-javascript', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/javascript.js', array( 'jquery', 'codemirror' ), $this->version, true );
157
  wp_register_script( 'colorbox', YIT_CORE_PLUGIN_URL . '/assets/js/jquery.colorbox.js', array( 'jquery' ), '1.6.3', true );
158
+ wp_enqueue_script( 'yith_how_to', YIT_CORE_PLUGIN_URL . '/assets/js/how-to.js', array('jquery'), $this->version, true );
159
 
160
  //styles
161
  $jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
176
  if( 'admin.php' == $pagenow && strpos( get_current_screen()->id, 'yith_upgrade_premium_version' ) !== false ){
177
  wp_enqueue_style( 'yit-upgrade-to-pro' );
178
  wp_enqueue_script( 'colorbox' );
179
+ }
180
+
181
  }
182
 
183
  /**
289
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
290
  */
291
  public function add_premium_version_upgrade_to_menu(){
292
+ global $submenu;
293
+
294
+ if( apply_filters( 'yit_show_upgrade_to_premium_version', ! isset( $submenu['yit_plugin_panel']['how_to'] ) ) ){
295
+ $submenu['yit_plugin_panel']['how_to'] = array(
296
+ sprintf( '%s%s%s', '<span id="yith-how-to-premium">', __( 'How to install premium version', 'yith-plugin-fw' ), '</span>' ),
297
+ 'install_plugins',
298
+ '//support.yithemes.com/hc/en-us/articles/217840988',
299
+ __( 'How to install premium version', 'yith-plugin-fw' ),
300
+ );
301
  }
302
  }
303
 
913
 
914
  $this->add_videobox( $args );
915
  }
 
 
 
 
 
 
 
 
 
 
 
916
  }
917
  }
plugin-fw/lib/yit-plugin-subpanel.php CHANGED
@@ -100,7 +100,7 @@ if ( ! class_exists( 'YIT_Plugin_SubPanel' ) ) {
100
 
101
  if( ! isset( $admin_page_hooks['yit_plugin_panel'] ) ) {
102
  $position = apply_filters( 'yit_plugins_menu_item_position', '62.32' );
103
- add_menu_page( 'yit_plugin_panel', __( 'YITH Plugins', 'yith-plugin-fw' ), 'nosuchcapability', 'yit_plugin_panel', NULL, $logo, $position );
104
  }
105
 
106
  add_submenu_page( 'yit_plugin_panel', $this->settings['label'], $this->settings['label'], 'manage_options', $this->settings['page'], array( $this, 'yit_panel' ) );
100
 
101
  if( ! isset( $admin_page_hooks['yit_plugin_panel'] ) ) {
102
  $position = apply_filters( 'yit_plugins_menu_item_position', '62.32' );
103
+ add_menu_page( 'yit_plugin_panel', 'YITH Plugins', 'nosuchcapability', 'yit_plugin_panel', NULL, $logo, $position );
104
  }
105
 
106
  add_submenu_page( 'yit_plugin_panel', $this->settings['label'], $this->settings['label'], 'manage_options', $this->settings['page'], array( $this, 'yit_panel' ) );
plugin-fw/lib/yit-upgrade.php CHANGED
@@ -8,546 +8,552 @@
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
  if ( ! defined( 'ABSPATH' ) ) {
11
- exit;
12
  } // Exit if accessed directly
13
 
14
  if ( ! class_exists( 'YIT_Upgrade' ) ) {
15
- /**
16
- * YIT Upgrade
17
- *
18
- * Notify and Update plugin
19
- *
20
- * @class YIT_Upgrade
21
- * @package Yithemes
22
- * @since 1.0
23
- * @author Your Inspiration Themes
24
- * @see WP_Updater Class
25
- */
26
-
27
- class YIT_Upgrade {
28
-
29
- /**
30
- * @var string XML notifier update
31
- */
32
- protected $_xml = 'http://update.yithemes.com/plugins/%plugin_slug%.xml';
33
-
34
- /**
35
- * @var string api server url
36
- */
37
- protected $_package_url = 'http://www.yithemes.com';
38
-
39
- /**
40
- * @var array The registered plugins
41
- */
42
- protected $_plugins = array();
43
-
44
- /**
45
- * @var YIT_Upgrade The main instance
46
- */
47
- protected static $_instance;
48
-
49
- /**
50
- * Construct
51
- *
52
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
53
- * @since 1.0
54
- */
55
- public function __construct() {
56
- add_filter( 'upgrader_pre_download', array( $this, 'upgrader_pre_download') , 10, 3 );
57
- add_action( 'update-custom_upgrade-plugin-multisite', array( $this, 'upgrade_plugin_multisite' ) );
58
-
59
- if( is_network_admin() ){
60
- add_action( 'admin_enqueue_scripts', array( $this, 'network_admin_enqueue_scripts' ) );
61
- }
62
-
63
- $is_debug_enabled = defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG;
64
- if ( $is_debug_enabled ) {
65
- $this->_package_url = defined( 'YIT_LICENCE_DEBUG_LOCALHOST' ) ? YIT_LICENCE_DEBUG_LOCALHOST : 'http://dev.yithemes.com';
66
- add_filter( 'block_local_requests', '__return_false' );
67
- }
68
- }
69
-
70
- /**
71
- * Main plugin Instance
72
- *
73
- * @param $plugin_slug | string The plugin slug
74
- * @param $plugin_init | string The plugin init file
75
- *
76
- * @return void
77
- *
78
- * @since 1.0
79
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
80
- */
81
- public function register( $plugin_slug, $plugin_init ) {
82
-
83
- if( ! function_exists( 'get_plugins' ) ){
84
- include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
85
- }
86
-
87
- $plugins = get_plugins();
88
- $plugin_info = $plugins[ $plugin_init ];
89
-
90
- $this->_plugins[ $plugin_init ] = array(
91
- 'info' => $plugin_info,
92
- 'slug' => $plugin_slug,
93
- );
94
-
95
- /* === HOOKS === */
96
- if( ! is_multisite() || is_plugin_active_for_network( $plugin_init ) ){
97
- add_action( 'admin_init', array( $this, 'remove_wp_plugin_update_row' ), 15 );
98
- add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
99
- } else if( is_multisite() && current_user_can( 'update_plugins' ) ) {
100
- $transient = 'yith_register_' . md5( $plugin_slug );
101
- if( apply_filters( 'yith_register_delete_transient', false ) ){
102
- delete_transient( $transient );
103
- }
104
- $info = get_transient( $transient );
105
- if( false === $info || apply_filters( 'yith_register_delete_transient', false ) ){
106
- $xml = str_replace( '%plugin_slug%', $plugin_slug, $this->_xml );
107
- $remote_xml = wp_remote_get( $xml );
108
-
109
- if( ! is_wp_error( $remote_xml ) && isset( $remote_xml['response']['code'] ) && '200' == $remote_xml['response']['code'] ) {
110
- $plugin_remote_info = new SimpleXmlElement( $remote_xml['body'] );
111
- $info['Latest'] = (string) $plugin_remote_info->latest;
112
- $info['changelog'] = (string) $plugin_remote_info->changelog;
113
- YIT_Plugin_Licence()->check( $plugin_slug, false );
114
- set_transient( $transient, $info, DAY_IN_SECONDS );
115
- }
116
- }
117
-
118
- $this->_plugins[ $plugin_init ]['info']['Latest'] = $info['Latest'];
119
- $this->_plugins[ $plugin_init ]['info']['changelog'] = $info['changelog'];
120
- add_action( 'admin_enqueue_scripts', array( $this, 'multisite_updater_script' ) );
121
- }
122
- }
123
-
124
- /**
125
- * Add the multisite updater scripts
126
- *
127
- * @return void
128
- *
129
- * @since 1.0
130
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
131
- */
132
- public function multisite_updater_script(){
133
-
134
- $update_url = $changelogs = $details_url = array();
135
- $strings = array(
136
- 'new_version' => __( 'There is a new version of %plugin_name% available.', 'yith-plugin-fw' ),
137
- 'latest' => __( 'View version %latest% details.', 'yith-plugin-fw' ),
138
- 'unavailable' => __( 'Automatic update is unavailable for this plugin,', 'yith-plugin-fw' ),
139
- 'activate' => __( 'please <a href="%activate_link%">activate</a> your copy of %plugin_name%.', 'yith-plugin-fw' ),
140
- 'update_now' => __( 'Update now.', 'yith-plugin-fw' )
141
-
142
- );
143
-
144
- foreach( $this->_plugins as $init => $info ){
145
- $update_url[ $init ] = wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin-multisite&plugin=') . $init, 'upgrade-plugin-multisite_' . $init );
146
- $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
147
- $details_url[ $init ] = '#TB_inline' . esc_url( add_query_arg( array( 'width' => 722, 'height' => 914, 'inlineId' => $changelog_id ) , '' ) );
148
- $plugin_changelog = isset( $this->_plugins[ $init ]['info']['changelog'] ) ? $this->_plugins[ $init ]['info']['changelog'] : '';
149
- $changelogs[ $init ] = $this->in_theme_update_message( $this->_plugins[ $init ], $plugin_changelog, $changelog_id, false );
150
- }
151
-
152
- $localize_script_args = array(
153
- 'registered' => $this->_plugins,
154
- 'activated' => YIT_Plugin_Licence()->get_activated_products(),
155
- 'licence_activation_url' => YIT_Plugin_Licence()->get_licence_activation_page_url(),
156
- 'update_url' => $update_url,
157
- 'details_url' => $details_url,
158
- 'strings' => $strings,
159
- 'changelogs' => $changelogs
160
- );
161
- $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
162
- yit_enqueue_script( 'yit-multisite-updater', YIT_CORE_PLUGIN_URL . '/assets/js/multisite-updater' . $suffix . '.js', array( 'jquery' ), false, true );
163
-
164
- wp_localize_script( 'yit-multisite-updater', 'plugins', $localize_script_args );
165
- }
166
-
167
- public function network_admin_enqueue_scripts(){
168
- yit_enqueue_style( 'yit-upgrader', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrader.css' );
169
- }
170
-
171
- /**
172
- * Retrive the zip package file
173
- *
174
- * @param bool $reply Whether to bail without returning the package. Default false.
175
- * @param string $package The package file name.
176
- * @param \WP_Upgrader $upgrader WP_Upgrader instance.
177
- *
178
- * @return string | The download file
179
- *
180
- * @since 1.0
181
- * @see wp-admin/includes/class-wp-upgrader.php
182
- * @access public
183
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
184
- */
185
- public function upgrader_pre_download( $reply, $package, $upgrader ) {
186
- $plugin = false;
187
- $is_bulk = $upgrader->skin instanceof Bulk_Plugin_Upgrader_Skin;
188
-
189
- if( ! $is_bulk ){
190
- $plugin = isset( $upgrader->skin->plugin ) ? $upgrader->skin->plugin : false;
191
- }
192
-
193
- else {
194
- //Bulk action upgrade
195
- $action_url = parse_url( $upgrader->skin->options['url'] );
196
- parse_str( rawurldecode( htmlspecialchars_decode( $action_url['query'] ) ) );
197
- $plugins = explode( ',', $plugins );
198
- foreach( $plugins as $plugin_init ){
199
- $to_upgrade = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_init );
200
- if( $to_upgrade['Name'] == $upgrader->skin->plugin_info['Name'] ){
201
- $plugin = $plugin_init;
202
- }
203
- }
204
- }
205
-
206
- /**
207
- * It isn't YITH Premium plugins, please wordpress update it for me!
208
- */
209
- if( ! $plugin ) {
210
- return $reply;
211
- }
212
-
213
- $plugin_info = YIT_Plugin_Licence()->get_product( $plugin );
214
-
215
- /**
216
- * False ? It isn't YITH Premium plugins, please wordpress update it for me!
217
- */
218
- if( false === $plugin_info ) {
219
- return $reply;
220
- }
221
-
222
- $licence = YIT_Plugin_Licence()->get_licence();
223
- $product_id = $plugin_info['product_id'];
224
- $args = array(
225
- 'email' => $licence[ $product_id ]['email'],
226
- 'licence_key' => $licence[$product_id]['licence_key'],
227
- 'product_id' => $plugin_info['product_id'],
228
- 'secret_key' => $plugin_info['secret_key'],
229
- 'instance' => YIT_Plugin_Licence()->get_home_url(),
230
- 'wc-api' => 'download-api',
231
- 'request' => 'download'
232
- );
233
-
234
- if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) {
235
- //Local file or remote?
236
- return $package;
237
- }
238
-
239
- if ( empty( $package ) ) {
240
- return new WP_Error( 'no_package', $upgrader->strings['no_package'] );
241
- }
242
-
243
- $upgrader->skin->feedback( 'downloading_package', __( 'YIThemes Repository', 'yith-plugin-fw' ) );
244
-
245
- $download_file = $this->_download_url( $package, $args );
246
-
247
- /**
248
- * Regenerate update_plugins transient
249
- */
250
- $this->force_regenerate_update_transient();
251
-
252
- if ( is_wp_error( $download_file ) ) {
253
- return new WP_Error( 'download_failed', $upgrader->strings['download_failed'], $download_file->get_error_message() );
254
- }
255
-
256
- return $download_file;
257
- }
258
-
259
- /**
260
- * Retrive the temp filename
261
- *
262
- * @param string $url The package url
263
- * @param string $body The post data fields
264
- * @param int $timeout Execution timeout (default: 300)
265
- *
266
- * @return string | The temp filename
267
- *
268
- * @since 1.0
269
- * @see wp-admin/includes/class-wp-upgrader.php
270
- * @access protected
271
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
272
- */
273
- protected function _download_url( $url, $body, $timeout = 300 ) {
274
-
275
- //WARNING: The file is not automatically deleted, The script must unlink() the file.
276
- if ( ! $url ) {
277
- return new WP_Error( 'http_no_url', __( 'Invalid URL Provided.', 'yit' ) );
278
- }
279
-
280
- $tmpfname = wp_tempnam( $url );
281
-
282
- $args = array(
283
- 'timeout' => $timeout,
284
- 'stream' => true,
285
- 'filename' => $tmpfname,
286
- 'body' => $body
287
- );
288
-
289
- if ( ! $tmpfname ) {
290
- return new WP_Error( 'http_no_file', __( 'Could not create Temporary file.', 'yit' ) );
291
- }
292
-
293
- $response = wp_safe_remote_post( $url, $args );
294
-
295
- if ( is_wp_error( $response ) ) {
296
- unlink( $tmpfname );
297
- return $response;
298
- }
299
-
300
- if ( 200 != wp_remote_retrieve_response_code( $response ) ) {
301
- unlink( $tmpfname );
302
- return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) );
303
- }
304
-
305
- $content_md5 = wp_remote_retrieve_header( $response, 'content-md5' );
306
-
307
- if ( $content_md5 ) {
308
- $md5_check = verify_file_md5( $tmpfname, $content_md5 );
309
- if ( is_wp_error( $md5_check ) ) {
310
- unlink( $tmpfname );
311
- return $md5_check;
312
- }
313
- }
314
-
315
- return $tmpfname;
316
- }
317
-
318
- /**
319
- * Main plugin Instance
320
- *
321
- * @static
322
- * @return object Main instance
323
- *
324
- * @since 1.0
325
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
326
- */
327
- public static function instance() {
328
- if ( is_null( self::$_instance ) ) {
329
- self::$_instance = new self();
330
- }
331
-
332
- return self::$_instance;
333
- }
334
-
335
- /**
336
- * Delete the update plugins transient
337
- *
338
- * @return void
339
- *
340
- * @since 1.0
341
- * @see update_plugins transient and pre_set_site_transient_update_plugins hooks
342
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
343
- */
344
- public function force_regenerate_update_transient(){
345
- delete_site_transient( 'update_plugins' );
346
- }
347
-
348
- /**
349
- * Check for plugins update
350
- *
351
- * If a new plugin version is available set it in the pre_set_site_transient_update_plugins hooks
352
- *
353
- * @param mixed $transient | update_plugins transient value
354
- * @param bool $save | Default: false. Set true to regenerate the update_transient plugins
355
- *
356
- * @return mixed $transient | The new update_plugins transient value
357
- *
358
- * @since 1.0
359
- * @see update_plugins transient and pre_set_site_transient_update_plugins hooks
360
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
361
- */
362
- public function check_update( $transient, $save = false ) {
363
-
364
- foreach ($this->_plugins as $init => $plugin) {
365
- $xml = str_replace('%plugin_slug%', $this->_plugins[$init]['slug'], $this->_xml);
366
- $remote_xml = wp_remote_get($xml);
367
-
368
- if (!is_wp_error($remote_xml) && isset($remote_xml['response']['code']) && '200' == $remote_xml['response']['code']) {
369
-
370
-
371
- $plugin_remote_info = new SimpleXmlElement($remote_xml['body']);
372
-
373
- if (version_compare($plugin_remote_info->latest, $plugin['info']['Version'], '>') && !isset($transient->response[$init])) {
374
-
375
- $package = YIT_Plugin_Licence()->check($init) ? $this->_package_url : null;
376
-
377
- $obj = new stdClass();
378
- $obj->slug = (string)$init;
379
- $obj->new_version = (string)$plugin_remote_info->latest;
380
- $obj->changelog = (string)$plugin_remote_info->changelog;
381
- $obj->package = $package;
382
- $obj->plugin = $init;
383
- $transient->response[$init] = $obj;
384
- }
385
-
386
- }
387
- }
388
-
389
- if( $save ) {
390
- set_site_transient( 'update_plugins', $transient );
391
- }
392
-
393
- return $transient;
394
- }
395
-
396
- /**
397
- * Add the plugin update row in plugin page
398
- *
399
- * @return void
400
- * @fire "in_theme_update_message-{$init}" action
401
- *
402
- * @since 1.0
403
- * @see after_plugin_row_{$init} action
404
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
405
- */
406
- public function plugin_update_row() {
407
-
408
- $current = get_site_transient( 'update_plugins' );
409
- $init = str_replace( 'after_plugin_row_', '', current_filter() );
410
-
411
- if ( ! isset( $current->response[ $init ] ) ) {
412
- return false;
413
- }
414
-
415
- /**
416
- * stdClass Object
417
- */
418
- $r = $current->response[ $init ];
419
-
420
- $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
421
- $details_url = '#TB_inline' . esc_url( add_query_arg( array( 'width' => 722, 'height' => 914, 'inlineId' => $changelog_id ) , '' ) );
422
-
423
- /**
424
- * @see wp_plugin_update_rows() in wp-single\wp-admin\includes\update.php
425
- */
426
- $wp_list_table = _get_list_table( 'WP_MS_Themes_List_Table' );
427
-
428
- if( is_network_admin() || ! is_multisite() || true ) {
429
- echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">';
430
-
431
- if( ! current_user_can( 'update_plugins' ) ){
432
- printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>.', 'yith-plugin-fw'), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version );
433
- }elseif( is_plugin_active_for_network( $init ) ){
434
- printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>. <em>You have to activate the plugin on a single site of the network to benefit from automatic updates.</em>', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version );
435
- }elseif ( empty( $r->package ) ) {
436
- printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin, please <a href="%5$s" title="License activation">activate</a> your copy of %6s.</em>', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version, YIT_Plugin_Licence()->get_licence_activation_page_url(), $this->_plugins[ $init ]['info']['Name'] );
437
- } else {
438
- printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.', 'yith-plugin-fw'), $this->_plugins[ $init ]['info']['Name'], esc_url($details_url), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $init, 'upgrade-plugin_' . $init ) );
439
- }
440
-
441
- /**
442
- * Fires at the end of the update message container in each
443
- * row of the themes list table.
444
- *
445
- * The dynamic portion of the hook name, `$theme_key`, refers to
446
- * the theme slug as found in the WordPress.org themes repository.
447
- *
448
- * @since Wordpress 3.1.0
449
- * }
450
- */
451
- do_action( "in_theme_update_message-{$init}", $this->_plugins[ $init ], $r->changelog, $changelog_id );
452
-
453
- echo '</div></td></tr>';
454
- }
455
- }
456
-
457
- /**
458
- * Remove the standard plugin_update_row
459
- *
460
- * Remove the standard plugin_update_row and Add a custom plugin update row in plugin page.
461
- *
462
- * @return void
463
- * @fire "in_theme_update_message-{$init}" action
464
- *
465
- * @since 1.0
466
- * @see after_plugin_row_{$init} action
467
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
468
- */
469
- public function remove_wp_plugin_update_row() {
470
- foreach( $this->_plugins as $init => $plugin ){
471
- remove_action( "after_plugin_row_{$init}", 'wp_plugin_update_row', 10, 2 );
472
- add_action( "after_plugin_row_{$init}", array( $this, 'plugin_update_row' ) );
473
- add_action( "in_theme_update_message-{$init}", array( $this, 'in_theme_update_message' ), 10, 3 );
474
- }
475
- }
476
-
477
- public function in_theme_update_message( $plugin, $changelog, $changelog_id, $echo = true ){
478
-
479
- $res = "<div id='{$changelog_id}' class='yit-plugin-changelog-wrapper'>
 
 
 
 
 
 
 
480
  <div class='yit-plugin-changelog'>
481
  <h2 class='yit-plugin-changelog-title'>{$plugin['info']['Name']} - Changelog</h2>
482
  <p>{$changelog}</p>
483
  </div>
484
  </div>";
485
 
486
- if( $echo ){
487
- echo $res;
488
- }
489
- else{
490
- return $res;
491
- }
492
- }
493
-
494
- /**
495
- * Auto-Update Plugin in multisite
496
- *
497
- * Manage the non standard upgrade-plugin-multisite action
498
- *
499
- * @return void
500
- *
501
- * @since 1.0
502
- * @see upgrade-plugin action
503
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
504
- */
505
- public function upgrade_plugin_multisite(){
506
-
507
- $plugin = isset($_REQUEST['plugin']) ? trim($_REQUEST['plugin']) : '';
508
- $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
509
-
510
- if( 'upgrade-plugin-multisite' != $action ){
511
- wp_die( __( 'You can\'t update the plugins for this site.', 'yith-plugin-fw' ) );
512
- }
513
-
514
- if ( ! current_user_can( 'update_plugins' ) ) {
515
- wp_die( __( 'You do not have sufficient permissions to update the plugins for this site.', 'yith-plugin-fw' ) );
516
- }
517
-
518
- $this->check_update( get_site_transient( 'update_plugins') , true );
519
-
520
- check_admin_referer( 'upgrade-plugin-multisite_' . $plugin );
521
-
522
- $title = __( 'Update Plugin', 'yith-plugin-fw' );
523
- $parent_file = 'plugins.php';
524
- $submenu_file = 'plugins.php';
525
-
526
- wp_enqueue_script( 'updates' );
527
- require_once( ABSPATH . 'wp-admin/admin-header.php' );
528
-
529
- $nonce = 'upgrade-plugin-multisite_' . $plugin;
530
- $url = 'update.php?action=upgrade-plugin-multisite&plugin=' . urlencode( $plugin );
531
-
532
- $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) ) );
533
- $upgrader->upgrade( $plugin );
534
-
535
- include( ABSPATH . 'wp-admin/admin-footer.php' );
536
- }
537
- }
538
  }
539
 
540
  if ( ! function_exists( 'YIT_Upgrade' ) ) {
541
- /**
542
- * Main instance of plugin
543
- *
544
- * @return YIT_Upgrade
545
- * @since 1.0
546
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
547
- */
548
- function YIT_Upgrade() {
549
- return YIT_Upgrade::instance();
550
- }
551
  }
552
 
553
  /**
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
  if ( ! defined( 'ABSPATH' ) ) {
11
+ exit;
12
  } // Exit if accessed directly
13
 
14
  if ( ! class_exists( 'YIT_Upgrade' ) ) {
15
+ /**
16
+ * YIT Upgrade
17
+ *
18
+ * Notify and Update plugin
19
+ *
20
+ * @class YIT_Upgrade
21
+ * @package Yithemes
22
+ * @since 1.0
23
+ * @author Your Inspiration Themes
24
+ * @see WP_Updater Class
25
+ */
26
+ class YIT_Upgrade {
27
+
28
+ /**
29
+ * @var string XML notifier update
30
+ */
31
+ protected $_xml = 'http://update.yithemes.com/plugins/%plugin_slug%.xml';
32
+
33
+ /**
34
+ * @var string api server url
35
+ */
36
+ protected $_package_url = 'http://www.yithemes.com';
37
+
38
+ /**
39
+ * @var array The registered plugins
40
+ */
41
+ protected $_plugins = array();
42
+
43
+ /**
44
+ * @var YIT_Upgrade The main instance
45
+ */
46
+ protected static $_instance;
47
+
48
+ /**
49
+ * Construct
50
+ *
51
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
52
+ * @since 1.0
53
+ */
54
+ public function __construct() {
55
+ add_filter( 'upgrader_pre_download', array( $this, 'upgrader_pre_download' ), 10, 3 );
56
+ add_action( 'update-custom_upgrade-plugin-multisite', array( $this, 'upgrade_plugin_multisite' ) );
57
+
58
+ if ( is_network_admin() ) {
59
+ add_action( 'admin_enqueue_scripts', array( $this, 'network_admin_enqueue_scripts' ) );
60
+ }
61
+
62
+ $is_debug_enabled = defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG;
63
+ if ( $is_debug_enabled ) {
64
+ $this->_package_url = defined( 'YIT_LICENCE_DEBUG_LOCALHOST' ) ? YIT_LICENCE_DEBUG_LOCALHOST : 'http://dev.yithemes.com';
65
+ add_filter( 'block_local_requests', '__return_false' );
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Main plugin Instance
71
+ *
72
+ * @param $plugin_slug | string The plugin slug
73
+ * @param $plugin_init | string The plugin init file
74
+ *
75
+ * @return void
76
+ *
77
+ * @since 1.0
78
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
79
+ */
80
+ public function register( $plugin_slug, $plugin_init ) {
81
+
82
+ if ( ! function_exists( 'get_plugins' ) ) {
83
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
84
+ }
85
+
86
+ $plugins = get_plugins();
87
+ $plugin_info = $plugins[ $plugin_init ];
88
+
89
+ $this->_plugins[ $plugin_init ] = array(
90
+ 'info' => $plugin_info,
91
+ 'slug' => $plugin_slug,
92
+ );
93
+
94
+ /* === HOOKS === */
95
+ if ( ! is_multisite() || is_plugin_active_for_network( $plugin_init ) ) {
96
+ add_action( 'admin_init', array( $this, 'remove_wp_plugin_update_row' ), 15 );
97
+ add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
98
+ } else if ( is_multisite() && current_user_can( 'update_plugins' ) ) {
99
+ $transient = 'yith_register_' . md5( $plugin_slug );
100
+ if ( apply_filters( 'yith_register_delete_transient', false ) ) {
101
+ delete_transient( $transient );
102
+ }
103
+ $info = get_transient( $transient );
104
+ if ( false === $info || apply_filters( 'yith_register_delete_transient', false ) ) {
105
+ $xml = str_replace( '%plugin_slug%', $plugin_slug, $this->_xml );
106
+ $remote_xml = wp_remote_get( $xml );
107
+
108
+ if ( ! is_wp_error( $remote_xml ) && isset( $remote_xml['response']['code'] ) && '200' == $remote_xml['response']['code'] ) {
109
+ $plugin_remote_info = new SimpleXmlElement( $remote_xml['body'] );
110
+ $info['Latest'] = (string) $plugin_remote_info->latest;
111
+ $info['changelog'] = (string) $plugin_remote_info->changelog;
112
+ YIT_Plugin_Licence()->check( $plugin_slug, false );
113
+ set_transient( $transient, $info, DAY_IN_SECONDS );
114
+ }
115
+ }
116
+
117
+ $this->_plugins[ $plugin_init ]['info']['Latest'] = $info['Latest'];
118
+ $this->_plugins[ $plugin_init ]['info']['changelog'] = $info['changelog'];
119
+ add_action( 'admin_enqueue_scripts', array( $this, 'multisite_updater_script' ) );
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Add the multisite updater scripts
125
+ *
126
+ * @return void
127
+ *
128
+ * @since 1.0
129
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
130
+ */
131
+ public function multisite_updater_script() {
132
+
133
+ $update_url = $changelogs = $details_url = array();
134
+ $strings = array(
135
+ 'new_version' => __( 'There is a new version of %plugin_name% available.', 'yith-plugin-fw' ),
136
+ 'latest' => __( 'View version %latest% details.', 'yith-plugin-fw' ),
137
+ 'unavailable' => __( 'Automatic update is unavailable for this plugin,', 'yith-plugin-fw' ),
138
+ 'activate' => __( 'please <a href="%activate_link%">activate</a> your copy of %plugin_name%.', 'yith-plugin-fw' ),
139
+ 'update_now' => __( 'Update now.', 'yith-plugin-fw' )
140
+
141
+ );
142
+
143
+ foreach ( $this->_plugins as $init => $info ) {
144
+ $update_url[ $init ] = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin-multisite&plugin=' ) . $init, 'upgrade-plugin-multisite_' . $init );
145
+ $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
146
+ $details_url[ $init ] = '#TB_inline' . esc_url( add_query_arg( array( 'width' => 722, 'height' => 914, 'inlineId' => $changelog_id ), '' ) );
147
+ $plugin_changelog = isset( $this->_plugins[ $init ]['info']['changelog'] ) ? $this->_plugins[ $init ]['info']['changelog'] : '';
148
+ $changelogs[ $init ] = $this->in_theme_update_message( $this->_plugins[ $init ], $plugin_changelog, $changelog_id, false );
149
+ }
150
+
151
+ $localize_script_args = array(
152
+ 'registered' => $this->_plugins,
153
+ 'activated' => YIT_Plugin_Licence()->get_activated_products(),
154
+ 'licence_activation_url' => YIT_Plugin_Licence()->get_licence_activation_page_url(),
155
+ 'update_url' => $update_url,
156
+ 'details_url' => $details_url,
157
+ 'strings' => $strings,
158
+ 'changelogs' => $changelogs
159
+ );
160
+ $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
161
+ yit_enqueue_script( 'yit-multisite-updater', YIT_CORE_PLUGIN_URL . '/assets/js/multisite-updater' . $suffix . '.js', array( 'jquery' ), false, true );
162
+
163
+ wp_localize_script( 'yit-multisite-updater', 'plugins', $localize_script_args );
164
+ }
165
+
166
+ public function network_admin_enqueue_scripts() {
167
+ yit_enqueue_style( 'yit-upgrader', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrader.css' );
168
+ }
169
+
170
+ /**
171
+ * Retrive the zip package file
172
+ *
173
+ * @param bool $reply Whether to bail without returning the package. Default false.
174
+ * @param string $package The package file name.
175
+ * @param \WP_Upgrader $upgrader WP_Upgrader instance.
176
+ *
177
+ * @return string | The download file
178
+ *
179
+ * @since 1.0
180
+ * @see wp-admin/includes/class-wp-upgrader.php
181
+ * @access public
182
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
183
+ */
184
+ public function upgrader_pre_download( $reply, $package, $upgrader ) {
185
+ $plugin = false;
186
+ $is_bulk = $upgrader->skin instanceof Bulk_Plugin_Upgrader_Skin;
187
+
188
+ if ( ! $is_bulk ) {
189
+ $plugin = isset( $upgrader->skin->plugin ) ? $upgrader->skin->plugin : false;
190
+ } else {
191
+ //Bulk action upgrade
192
+ $action_url = parse_url( $upgrader->skin->options['url'] );
193
+ parse_str( rawurldecode( htmlspecialchars_decode( $action_url['query'] ) ) );
194
+ $plugins = explode( ',', $plugins );
195
+ foreach ( $plugins as $plugin_init ) {
196
+ $to_upgrade = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_init );
197
+ if ( $to_upgrade['Name'] == $upgrader->skin->plugin_info['Name'] ) {
198
+ $plugin = $plugin_init;
199
+ }
200
+ }
201
+ }
202
+
203
+ /**
204
+ * It isn't YITH Premium plugins, please wordpress update it for me!
205
+ */
206
+ if ( ! $plugin ) {
207
+ return $reply;
208
+ }
209
+
210
+ $plugin_info = YIT_Plugin_Licence()->get_product( $plugin );
211
+
212
+ /**
213
+ * False ? It isn't YITH Premium plugins, please wordpress update it for me!
214
+ */
215
+ if ( false === $plugin_info ) {
216
+ return $reply;
217
+ }
218
+
219
+ $licence = YIT_Plugin_Licence()->get_licence();
220
+ $product_id = $plugin_info['product_id'];
221
+ $args = array(
222
+ 'email' => $licence[ $product_id ]['email'],
223
+ 'licence_key' => $licence[ $product_id ]['licence_key'],
224
+ 'product_id' => $plugin_info['product_id'],
225
+ 'secret_key' => $plugin_info['secret_key'],
226
+ 'instance' => YIT_Plugin_Licence()->get_home_url(),
227
+ 'wc-api' => 'download-api',
228
+ 'request' => 'download'
229
+ );
230
+
231
+ if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) {
232
+ //Local file or remote?
233
+ return $package;
234
+ }
235
+
236
+ if ( empty( $package ) ) {
237
+ return new WP_Error( 'no_package', $upgrader->strings['no_package'] );
238
+ }
239
+
240
+ $upgrader->skin->feedback( 'downloading_package', __( 'YIThemes Repository', 'yith-plugin-fw' ) );
241
+
242
+ $download_file = $this->_download_url( $package, $args );
243
+
244
+ /**
245
+ * Regenerate update_plugins transient
246
+ */
247
+ $this->force_regenerate_update_transient();
248
+
249
+ if ( is_wp_error( $download_file ) ) {
250
+ return new WP_Error( 'download_failed', $upgrader->strings['download_failed'], $download_file->get_error_message() );
251
+ }
252
+
253
+ return $download_file;
254
+ }
255
+
256
+ /**
257
+ * Retrive the temp filename
258
+ *
259
+ * @param string $url The package url
260
+ * @param string $body The post data fields
261
+ * @param int $timeout Execution timeout (default: 300)
262
+ *
263
+ * @return string | The temp filename
264
+ *
265
+ * @since 1.0
266
+ * @see wp-admin/includes/class-wp-upgrader.php
267
+ * @access protected
268
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
269
+ */
270
+ protected function _download_url( $url, $body, $timeout = 300 ) {
271
+
272
+ //WARNING: The file is not automatically deleted, The script must unlink() the file.
273
+ if ( ! $url ) {
274
+ return new WP_Error( 'http_no_url', __( 'Invalid URL Provided.', 'yit' ) );
275
+ }
276
+
277
+ $tmpfname = wp_tempnam( $url );
278
+
279
+ $args = array(
280
+ 'timeout' => $timeout,
281
+ 'stream' => true,
282
+ 'filename' => $tmpfname,
283
+ 'body' => $body
284
+ );
285
+
286
+ if ( ! $tmpfname ) {
287
+ return new WP_Error( 'http_no_file', __( 'Could not create Temporary file.', 'yit' ) );
288
+ }
289
+
290
+ $response = wp_safe_remote_post( $url, $args );
291
+
292
+ if ( is_wp_error( $response ) ) {
293
+ unlink( $tmpfname );
294
+
295
+ return $response;
296
+ }
297
+
298
+ if ( 200 != wp_remote_retrieve_response_code( $response ) ) {
299
+ unlink( $tmpfname );
300
+
301
+ return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) );
302
+ }
303
+
304
+ $content_md5 = wp_remote_retrieve_header( $response, 'content-md5' );
305
+
306
+ if ( $content_md5 ) {
307
+ $md5_check = verify_file_md5( $tmpfname, $content_md5 );
308
+ if ( is_wp_error( $md5_check ) ) {
309
+ unlink( $tmpfname );
310
+
311
+ return $md5_check;
312
+ }
313
+ }
314
+
315
+ return $tmpfname;
316
+ }
317
+
318
+ /**
319
+ * Main plugin Instance
320
+ *
321
+ * @static
322
+ * @return object Main instance
323
+ *
324
+ * @since 1.0
325
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
326
+ */
327
+ public static function instance() {
328
+ if ( is_null( self::$_instance ) ) {
329
+ self::$_instance = new self();
330
+ }
331
+
332
+ return self::$_instance;
333
+ }
334
+
335
+ /**
336
+ * Delete the update plugins transient
337
+ *
338
+ * @return void
339
+ *
340
+ * @since 1.0
341
+ * @see update_plugins transient and pre_set_site_transient_update_plugins hooks
342
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
343
+ */
344
+ public function force_regenerate_update_transient() {
345
+ delete_site_transient( 'update_plugins' );
346
+ }
347
+
348
+ /**
349
+ * Check for plugins update
350
+ *
351
+ * If a new plugin version is available set it in the pre_set_site_transient_update_plugins hooks
352
+ *
353
+ * @param mixed $transient | update_plugins transient value
354
+ * @param bool $save | Default: false. Set true to regenerate the update_transient plugins
355
+ *
356
+ * @return mixed $transient | The new update_plugins transient value
357
+ *
358
+ * @since 1.0
359
+ * @see update_plugins transient and pre_set_site_transient_update_plugins hooks
360
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
361
+ */
362
+ public function check_update( $transient, $save = false ) {
363
+
364
+ foreach ( $this->_plugins as $init => $plugin ) {
365
+ $xml = str_replace( '%plugin_slug%', $this->_plugins[ $init ]['slug'], $this->_xml );
366
+ $remote_xml = wp_remote_get( $xml );
367
+
368
+ if ( ! is_wp_error( $remote_xml ) && isset( $remote_xml['response']['code'] ) && '200' == $remote_xml['response']['code'] ) {
369
+
370
+ try {
371
+
372
+ $plugin_remote_info = new SimpleXmlElement( $remote_xml['body'] );
373
+
374
+ if ( version_compare( $plugin_remote_info->latest, $plugin['info']['Version'], '>' ) && ! isset( $transient->response[ $init ] ) ) {
375
+
376
+ $package = YIT_Plugin_Licence()->check( $init ) ? $this->_package_url : null;
377
+
378
+ $obj = new stdClass();
379
+ $obj->slug = (string) $init;
380
+ $obj->new_version = (string) $plugin_remote_info->latest;
381
+ $obj->changelog = (string) $plugin_remote_info->changelog;
382
+ $obj->package = $package;
383
+ $obj->plugin = $init;
384
+ $transient->response[ $init ] = $obj;
385
+ }
386
+
387
+ } catch ( Exception $e ) {
388
+
389
+ return $transient;
390
+
391
+ }
392
+
393
+ }
394
+ }
395
+
396
+ if ( $save ) {
397
+ set_site_transient( 'update_plugins', $transient );
398
+ }
399
+
400
+ return $transient;
401
+ }
402
+
403
+ /**
404
+ * Add the plugin update row in plugin page
405
+ *
406
+ * @return void
407
+ * @fire "in_theme_update_message-{$init}" action
408
+ *
409
+ * @since 1.0
410
+ * @see after_plugin_row_{$init} action
411
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
412
+ */
413
+ public function plugin_update_row() {
414
+
415
+ $current = get_site_transient( 'update_plugins' );
416
+ $init = str_replace( 'after_plugin_row_', '', current_filter() );
417
+
418
+ if ( ! isset( $current->response[ $init ] ) ) {
419
+ return false;
420
+ }
421
+
422
+ /**
423
+ * stdClass Object
424
+ */
425
+ $r = $current->response[ $init ];
426
+
427
+ $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
428
+ $details_url = '#TB_inline' . esc_url( add_query_arg( array( 'width' => 722, 'height' => 914, 'inlineId' => $changelog_id ), '' ) );
429
+
430
+ /**
431
+ * @see wp_plugin_update_rows() in wp-single\wp-admin\includes\update.php
432
+ */
433
+ $wp_list_table = _get_list_table( 'WP_MS_Themes_List_Table' );
434
+
435
+ if ( is_network_admin() || ! is_multisite() || true ) {
436
+ echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">';
437
+
438
+ if ( ! current_user_can( 'update_plugins' ) ) {
439
+ printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>.', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version );
440
+ } elseif ( is_plugin_active_for_network( $init ) ) {
441
+ printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>. <em>You have to activate the plugin on a single site of the network to benefit from automatic updates.</em>', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version );
442
+ } elseif ( empty( $r->package ) ) {
443
+ printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin, please <a href="%5$s" title="License activation">activate</a> your copy of %6s.</em>', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version, YIT_Plugin_Licence()->get_licence_activation_page_url(), $this->_plugins[ $init ]['info']['Name'] );
444
+ } else {
445
+ printf( __( 'There is a new version of %1$s available. <a href="%2$s" class="thickbox yit-changelog-button" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.', 'yith-plugin-fw' ), $this->_plugins[ $init ]['info']['Name'], esc_url( $details_url ), esc_attr( $this->_plugins[ $init ]['info']['Name'] ), $r->new_version, wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $init, 'upgrade-plugin_' . $init ) );
446
+ }
447
+
448
+ /**
449
+ * Fires at the end of the update message container in each
450
+ * row of the themes list table.
451
+ *
452
+ * The dynamic portion of the hook name, `$theme_key`, refers to
453
+ * the theme slug as found in the WordPress.org themes repository.
454
+ *
455
+ * @since Wordpress 3.1.0
456
+ * }
457
+ */
458
+ do_action( "in_theme_update_message-{$init}", $this->_plugins[ $init ], $r->changelog, $changelog_id );
459
+
460
+ echo '</div></td></tr>';
461
+ }
462
+ }
463
+
464
+ /**
465
+ * Remove the standard plugin_update_row
466
+ *
467
+ * Remove the standard plugin_update_row and Add a custom plugin update row in plugin page.
468
+ *
469
+ * @return void
470
+ * @fire "in_theme_update_message-{$init}" action
471
+ *
472
+ * @since 1.0
473
+ * @see after_plugin_row_{$init} action
474
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
475
+ */
476
+ public function remove_wp_plugin_update_row() {
477
+ foreach ( $this->_plugins as $init => $plugin ) {
478
+ remove_action( "after_plugin_row_{$init}", 'wp_plugin_update_row', 10, 2 );
479
+ add_action( "after_plugin_row_{$init}", array( $this, 'plugin_update_row' ) );
480
+ add_action( "in_theme_update_message-{$init}", array( $this, 'in_theme_update_message' ), 10, 3 );
481
+ }
482
+ }
483
+
484
+ public function in_theme_update_message( $plugin, $changelog, $changelog_id, $echo = true ) {
485
+
486
+ $res = "<div id='{$changelog_id}' class='yit-plugin-changelog-wrapper'>
487
  <div class='yit-plugin-changelog'>
488
  <h2 class='yit-plugin-changelog-title'>{$plugin['info']['Name']} - Changelog</h2>
489
  <p>{$changelog}</p>
490
  </div>
491
  </div>";
492
 
493
+ if ( $echo ) {
494
+ echo $res;
495
+ } else {
496
+ return $res;
497
+ }
498
+ }
499
+
500
+ /**
501
+ * Auto-Update Plugin in multisite
502
+ *
503
+ * Manage the non standard upgrade-plugin-multisite action
504
+ *
505
+ * @return void
506
+ *
507
+ * @since 1.0
508
+ * @see upgrade-plugin action
509
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
510
+ */
511
+ public function upgrade_plugin_multisite() {
512
+
513
+ $plugin = isset( $_REQUEST['plugin'] ) ? trim( $_REQUEST['plugin'] ) : '';
514
+ $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
515
+
516
+ if ( 'upgrade-plugin-multisite' != $action ) {
517
+ wp_die( __( 'You can\'t update the plugins for this site.', 'yith-plugin-fw' ) );
518
+ }
519
+
520
+ if ( ! current_user_can( 'update_plugins' ) ) {
521
+ wp_die( __( 'You do not have sufficient permissions to update the plugins for this site.', 'yith-plugin-fw' ) );
522
+ }
523
+
524
+ $this->check_update( get_site_transient( 'update_plugins' ), true );
525
+
526
+ check_admin_referer( 'upgrade-plugin-multisite_' . $plugin );
527
+
528
+ $title = __( 'Update Plugin', 'yith-plugin-fw' );
529
+ $parent_file = 'plugins.php';
530
+ $submenu_file = 'plugins.php';
531
+
532
+ wp_enqueue_script( 'updates' );
533
+ require_once( ABSPATH . 'wp-admin/admin-header.php' );
534
+
535
+ $nonce = 'upgrade-plugin-multisite_' . $plugin;
536
+ $url = 'update.php?action=upgrade-plugin-multisite&plugin=' . urlencode( $plugin );
537
+
538
+ $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) ) );
539
+ $upgrader->upgrade( $plugin );
540
+
541
+ include( ABSPATH . 'wp-admin/admin-footer.php' );
542
+ }
543
+ }
 
544
  }
545
 
546
  if ( ! function_exists( 'YIT_Upgrade' ) ) {
547
+ /**
548
+ * Main instance of plugin
549
+ *
550
+ * @return YIT_Upgrade
551
+ * @since 1.0
552
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
553
+ */
554
+ function YIT_Upgrade() {
555
+ return YIT_Upgrade::instance();
556
+ }
557
  }
558
 
559
  /**
plugin-fw/lib/yit-video.php CHANGED
@@ -104,10 +104,13 @@ if ( ! class_exists( 'YIT_Video' ) ) {
104
  ob_start();
105
 
106
  $id = preg_replace( '/[&|&amp;]feature=([\w\-]*)/', '', $id );
107
- $id = preg_replace( '/(youtube|vimeo):/', '', $id ); ?>
 
 
 
108
 
109
  <div class="post_video vimeo">
110
- <iframe wmode="transparent" src="http://player.vimeo.com/video/<?php echo $id; ?>?title=0&amp;byline=0&amp;portrait=0" width="<?php echo $width; ?>" height="<?php echo $height; ?>" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
111
  </div>
112
 
113
  <?php
@@ -131,6 +134,7 @@ if ( ! class_exists( 'YIT_Video' ) ) {
131
  */
132
  public static function video_id_by_url( $url ) {
133
  $parsed = parse_url( esc_url( $url ) );
 
134
  if ( ! isset( $parsed['host'] ) ) {
135
  return false;
136
  }
104
  ob_start();
105
 
106
  $id = preg_replace( '/[&|&amp;]feature=([\w\-]*)/', '', $id );
107
+ $id = preg_replace( '/(youtube|vimeo):/', '', $id );
108
+ $http = is_ssl()? 'https' : 'http';
109
+ ?>
110
+
111
 
112
  <div class="post_video vimeo">
113
+ <iframe wmode="transparent" src="<?php echo $http;?>://player.vimeo.com/video/<?php echo $id; ?>?title=0&amp;byline=0&amp;portrait=0" width="<?php echo $width; ?>" height="<?php echo $height; ?>" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
114
  </div>
115
 
116
  <?php
134
  */
135
  public static function video_id_by_url( $url ) {
136
  $parsed = parse_url( esc_url( $url ) );
137
+
138
  if ( ! isset( $parsed['host'] ) ) {
139
  return false;
140
  }
plugin-fw/templates/panel/sidebar/widgets/widget-membership.php CHANGED
@@ -8,17 +8,22 @@
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
 
11
- if ( ! defined( 'ABSPATH' ) ) {
12
- exit;
13
  } // Exit if accessed directly
14
  ?>
15
 
16
  <div class="membership-wrapper">
17
- <div class="membership-total-price">$10.000+</div>
18
- <div class="membership-offer-text">of themes and plugins for WooCommerce</div>
19
- <div class="membership-offer-text2">with a</div>
20
- <div class="membership-offer-sale-text">95% OFF</div>
 
 
 
 
21
  <div class="membership-buttons">
22
- <a class="button green" href="//yithemes.com/themes/membership/annual-yithemes-club-subscription/" target="_blank">Discover More!</a>
 
23
  </div>
24
  </div>
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
 
11
+ if ( !defined( 'ABSPATH' ) ) {
12
+ exit;
13
  } // Exit if accessed directly
14
  ?>
15
 
16
  <div class="membership-wrapper">
17
+ <div class="membership-row">
18
+ <div class="membership-total-price">$10.000+</div>
19
+ <div class="membership-offer-text">worth of themes<br/>and plugins<br/>for WooCommerce</div>
20
+ </div>
21
+ <div class="membership-row">
22
+ <div class="membership-offer-text2">on a</div>
23
+ <div class="membership-offer-sale-text">95% OFF DISCOUNT</div>
24
+ </div>
25
  <div class="membership-buttons">
26
+ <a class="button green" href="//yithemes.com/themes/membership/annual-yithemes-club-subscription/"
27
+ target="_blank">Discover More!</a>
28
  </div>
29
  </div>
plugin-fw/templates/upgrade/upgrade-to-pro-version.php DELETED
@@ -1,75 +0,0 @@
1
- <div id="upgrade-to-premium">
2
- <h1><?php _e( 'Upgrade to Premium Version', 'yith-plugin-fw' ) ?></h1>
3
- <h3><?php _e( "Have you purchased the premium version of a plugin? Don't you know how to activate the license after the purchase?", 'yith-plugin-fw' ) ?></h3>
4
- <p class="upgrade-how-to">
5
- <?php echo _e( "To upgrade from a FREE to a PREMIUM plugin is not suffice to insert the license key provided after the purchase.
6
- The reason is that they are two distinct products, with significant differences both for available options and for number of files included in the plugin package.
7
- To start to use the PREMIUM version of the plugin, you simply need to download the PREMIUM packet and install it on your site.", 'yith-plugin-fw' ); ?>
8
- </p>
9
- <p class="highlighted"><?php echo sprintf( __( '%1$sDo you need to know how to do it?%2$s Easy! %1$sFollow this list of steps%2$s and in a few minutes the plugin you purchased will be installed on your site', 'yith-plugin-fw' ),'<b>','</b>' ); ?></p>
10
- <ol class="upgrade-steps">
11
- <li class="step">
12
- <?php _e( 'Go to yithemes.com and login to "My Account" page', 'yith-plugin-fw' ); ?>
13
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/01.jpg" title="YIThemes - Login">
14
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/01.jpg" alt="YIThemes - Login">
15
- </a>
16
- </li>
17
- <li class="step">
18
- <?php _e( 'From the menu on the left, click on "My Downloads", look for the plugin you want to install among the available downloads and click on "Download" button' , 'yith-plugin-fw' ); ?>
19
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/02.jpg" title="My Account -> My Downloads">
20
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/02.jpg" alt="My Account -> My Downloads">
21
- </a>
22
- </li>
23
- <li class="step">
24
- <?php _e( "After downloading the packet, go to your website and login to WordPress administration area.", 'yith-plugin-fw' ); ?>
25
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/03.jpg" title="Login to WordPress">
26
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/03.jpg" alt="Login to WordPress">
27
- </a>
28
- </li>
29
- <li class="step">
30
- <?php _e( 'From the menu on the left, click on "Plugins". You will be redirected to the page where you will find the complete list of all the plugins available on your site. Click on "Add New" button that you find above on the left to add a new plugin', 'yith-plugin-fw' ); ?>
31
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/04.jpg" title="Add new plugin">
32
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/04.jpg" alt="Add new plugin">
33
- </a>
34
- </li>
35
- <li class="step">
36
- <?php _e( 'You will be redirected to a new page where you will find, above on the left next to the page title, the "Upload Plugin" button.', 'yith-plugin-fw' ); ?>
37
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/05.jpg" title="Upload plugin">
38
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/05.jpg" alt="Upload plugin">
39
- </a>
40
- </li>
41
- <li class="step">
42
- <?php _e( 'Click on "Upload Plugins" button to start the upload of the PREMIUM version of the plugin previously downloaded. Click on "Select File", search for the download folder related to the plugin and upload the package. Now you only need to wait a few minutes for the upload and the installation on your site. (We used YITH Live Chat plugin by way of example)', 'yith-plugin-fw' ); ?>
43
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/06.jpg" title="Select plugin package">
44
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/06.jpg" alt="Select plugin package">
45
- </a>
46
- </li>
47
- <li class="step">
48
- <?php _e( 'After completing the installation, click on "Activate plugin"', 'yith-plugin-fw' ); ?>
49
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/07.jpg" title="Activate plugin">
50
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/07.jpg" alt="Activate plugin">
51
- </a>
52
- <?php _e( 'If everything worked allright, your plugin is now correctly installed on your website. Enjoy it :-)', 'yith-plugin-fw' ); ?>
53
- </li>
54
- <li class="step">
55
- <?php _e( 'The last step is the activation of the plugin through its license key you received after the purchase. Click on "License Activation" that you find in "YITH Plugins" and insert the license key and the email address you used during the purchase.', 'yith-plugin-fw' ); ?>
56
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/08.jpg" title="Activate license">
57
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/08.jpg" alt="Activate license">
58
- </a>
59
- </li>
60
- <li class="step">
61
- <?php _e( 'In case you had difficulty to recover the license key we sent you by email, you can easily find it in "My Licenses" section of your account on yithemes.com', 'yith-plugin-fw' ); ?>
62
- <a class="image-lightbox" href="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/09.jpg" title="Section My License">
63
- <img class="img-responsive" src="<?php echo $core_plugin_url; ?>/assets/images/upgrade-page/09.jpg" alt="Section My License">
64
- </a>
65
- </li>
66
- </ol>
67
- </div>
68
-
69
- <script>
70
- // Lightbox image
71
- jQuery('document').ready(function($){
72
- $(".image-lightbox").colorbox({rel:'image-lightbox'});
73
- });
74
-
75
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
plugin-fw/yit-functions.php CHANGED
@@ -646,14 +646,27 @@ if ( ! function_exists ( 'yit_ie_version' ) ) {
646
  *
647
  * @return int|float
648
  * @since 1.0.0
649
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
650
  */
651
- function yit_ie_version () {
652
- preg_match ( '/MSIE ([0-9]\.[0-9])/', $_SERVER[ 'HTTP_USER_AGENT' ], $reg );
653
- if ( ! isset( $reg[ 1 ] ) ) {
654
  return - 1;
655
- } else {
656
- return floatval ( $reg[ 1 ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
657
  }
658
  }
659
  }
646
  *
647
  * @return int|float
648
  * @since 1.0.0
649
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>, Andrea Frascaspata<andrea.frascaspata@yithemes.com>
650
  */
651
+ function yit_ie_version() {
652
+
653
+ if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
654
  return - 1;
655
+ }
656
+ preg_match( '/MSIE ([0-9]+\.[0-9])/', $_SERVER['HTTP_USER_AGENT'], $reg );
657
+
658
+ if ( ! isset( $reg[1] ) ) // IE 11 FIX
659
+ {
660
+ preg_match( '/rv:([0-9]+\.[0-9])/', $_SERVER['HTTP_USER_AGENT'], $reg );
661
+ if ( ! isset( $reg[1] ) ) {
662
+ return - 1;
663
+ }
664
+ else {
665
+ return floatval( $reg[1] );
666
+ }
667
+ }
668
+ else {
669
+ return floatval( $reg[1] );
670
  }
671
  }
672
  }