YITH WooCommerce Zoom Magnifier - Version 1.2.13

Version Description

Download this release

Release Info

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

Code changes from version 1.2.12 to 1.2.13

README.txt CHANGED
@@ -4,7 +4,7 @@ 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.3.1
7
- Stable tag: 1.2.12
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.12 - RELEASED: OCT 29, 2015 =
63
 
64
  * Updated: YITH plugin framework
@@ -74,17 +79,17 @@ The size of the Zoom Image is automatically setted. If you want to change these
74
  = Version 1.2.9 - RELEASED: SEP 04, 2015 =
75
 
76
  * Updated: Languages file
77
- * Fix: Changed plugin text domain from yit to ywmz
78
- * Fix: featured image shown one time on slider.
79
- * Fix: div not shown if loading text is empty.
80
 
81
  = Version 1.2.8 - RELEASED: SEP 01, 2015 =
82
 
83
- * Fix: removed deprecated woocommerce_update_option_X hook.
84
 
85
  = Version 1.2.7 - RELEASED: AUG 27, 2015 =
86
 
87
- * Fix: resolved XSS vulnerability.
88
 
89
  = Version 1.2.6 - RELEASED: AUG 12, 2015 =
90
 
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.3.1
7
+ Stable tag: 1.2.13
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.13 - RELEASED: DEC 21, 2015 =
63
+
64
+ * Fixed: multiple wrap of zoom element with the div with class yith_magnifier_zoom_wrap
65
+ * Updated: jquery-ui.css is no more linked as external resource but shipped within the plugin, as wordpress.org asked
66
+
67
  = Version 1.2.12 - RELEASED: OCT 29, 2015 =
68
 
69
  * Updated: YITH plugin framework
79
  = Version 1.2.9 - RELEASED: SEP 04, 2015 =
80
 
81
  * Updated: Languages file
82
+ * Fixed: Changed plugin text domain from yit to ywmz
83
+ * Fixed: featured image shown one time on slider.
84
+ * Fixed: div not shown if loading text is empty.
85
 
86
  = Version 1.2.8 - RELEASED: SEP 01, 2015 =
87
 
88
+ * Fixed: removed deprecated woocommerce_update_option_X hook.
89
 
90
  = Version 1.2.7 - RELEASED: AUG 27, 2015 =
91
 
92
+ * Fixed: resolved XSS vulnerability.
93
 
94
  = Version 1.2.6 - RELEASED: AUG 12, 2015 =
95
 
assets/css/jquery-ui.css ADDED
@@ -0,0 +1,1177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.10.3 - 2013-05-03
2
+ * http://jqueryui.com
3
+ * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
+ * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden {
10
+ display: none;
11
+ }
12
+ .ui-helper-hidden-accessible {
13
+ border: 0;
14
+ clip: rect(0 0 0 0);
15
+ height: 1px;
16
+ margin: -1px;
17
+ overflow: hidden;
18
+ padding: 0;
19
+ position: absolute;
20
+ width: 1px;
21
+ }
22
+ .ui-helper-reset {
23
+ margin: 0;
24
+ padding: 0;
25
+ border: 0;
26
+ outline: 0;
27
+ line-height: 1.3;
28
+ text-decoration: none;
29
+ font-size: 100%;
30
+ list-style: none;
31
+ }
32
+ .ui-helper-clearfix:before,
33
+ .ui-helper-clearfix:after {
34
+ content: "";
35
+ display: table;
36
+ border-collapse: collapse;
37
+ }
38
+ .ui-helper-clearfix:after {
39
+ clear: both;
40
+ }
41
+ .ui-helper-clearfix {
42
+ min-height: 0; /* support: IE7 */
43
+ }
44
+ .ui-helper-zfix {
45
+ width: 100%;
46
+ height: 100%;
47
+ top: 0;
48
+ left: 0;
49
+ position: absolute;
50
+ opacity: 0;
51
+ filter:Alpha(Opacity=0);
52
+ }
53
+
54
+ .ui-front {
55
+ z-index: 100;
56
+ }
57
+
58
+
59
+ /* Interaction Cues
60
+ ----------------------------------*/
61
+ .ui-state-disabled {
62
+ cursor: default !important;
63
+ }
64
+
65
+
66
+ /* Icons
67
+ ----------------------------------*/
68
+
69
+ /* states and images */
70
+ .ui-icon {
71
+ display: block;
72
+ text-indent: -99999px;
73
+ overflow: hidden;
74
+ background-repeat: no-repeat;
75
+ }
76
+
77
+
78
+ /* Misc visuals
79
+ ----------------------------------*/
80
+
81
+ /* Overlays */
82
+ .ui-widget-overlay {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+ .ui-accordion .ui-accordion-header {
90
+ display: block;
91
+ cursor: pointer;
92
+ position: relative;
93
+ margin-top: 2px;
94
+ padding: .5em .5em .5em .7em;
95
+ min-height: 0; /* support: IE7 */
96
+ }
97
+ .ui-accordion .ui-accordion-icons {
98
+ padding-left: 2.2em;
99
+ }
100
+ .ui-accordion .ui-accordion-noicons {
101
+ padding-left: .7em;
102
+ }
103
+ .ui-accordion .ui-accordion-icons .ui-accordion-icons {
104
+ padding-left: 2.2em;
105
+ }
106
+ .ui-accordion .ui-accordion-header .ui-accordion-header-icon {
107
+ position: absolute;
108
+ left: .5em;
109
+ top: 50%;
110
+ margin-top: -8px;
111
+ }
112
+ .ui-accordion .ui-accordion-content {
113
+ padding: 1em 2.2em;
114
+ border-top: 0;
115
+ overflow: auto;
116
+ }
117
+ .ui-autocomplete {
118
+ position: absolute;
119
+ top: 0;
120
+ left: 0;
121
+ cursor: default;
122
+ }
123
+ .ui-button {
124
+ display: inline-block;
125
+ position: relative;
126
+ padding: 0;
127
+ line-height: normal;
128
+ margin-right: .1em;
129
+ cursor: pointer;
130
+ vertical-align: middle;
131
+ text-align: center;
132
+ overflow: visible; /* removes extra width in IE */
133
+ }
134
+ .ui-button,
135
+ .ui-button:link,
136
+ .ui-button:visited,
137
+ .ui-button:hover,
138
+ .ui-button:active {
139
+ text-decoration: none;
140
+ }
141
+ /* to make room for the icon, a width needs to be set here */
142
+ .ui-button-icon-only {
143
+ width: 2.2em;
144
+ }
145
+ /* button elements seem to need a little more width */
146
+ button.ui-button-icon-only {
147
+ width: 2.4em;
148
+ }
149
+ .ui-button-icons-only {
150
+ width: 3.4em;
151
+ }
152
+ button.ui-button-icons-only {
153
+ width: 3.7em;
154
+ }
155
+
156
+ /* button text element */
157
+ .ui-button .ui-button-text {
158
+ display: block;
159
+ line-height: normal;
160
+ }
161
+ .ui-button-text-only .ui-button-text {
162
+ padding: .4em 1em;
163
+ }
164
+ .ui-button-icon-only .ui-button-text,
165
+ .ui-button-icons-only .ui-button-text {
166
+ padding: .4em;
167
+ text-indent: -9999999px;
168
+ }
169
+ .ui-button-text-icon-primary .ui-button-text,
170
+ .ui-button-text-icons .ui-button-text {
171
+ padding: .4em 1em .4em 2.1em;
172
+ }
173
+ .ui-button-text-icon-secondary .ui-button-text,
174
+ .ui-button-text-icons .ui-button-text {
175
+ padding: .4em 2.1em .4em 1em;
176
+ }
177
+ .ui-button-text-icons .ui-button-text {
178
+ padding-left: 2.1em;
179
+ padding-right: 2.1em;
180
+ }
181
+ /* no icon support for input elements, provide padding by default */
182
+ input.ui-button {
183
+ padding: .4em 1em;
184
+ }
185
+
186
+ /* button icon element(s) */
187
+ .ui-button-icon-only .ui-icon,
188
+ .ui-button-text-icon-primary .ui-icon,
189
+ .ui-button-text-icon-secondary .ui-icon,
190
+ .ui-button-text-icons .ui-icon,
191
+ .ui-button-icons-only .ui-icon {
192
+ position: absolute;
193
+ top: 50%;
194
+ margin-top: -8px;
195
+ }
196
+ .ui-button-icon-only .ui-icon {
197
+ left: 50%;
198
+ margin-left: -8px;
199
+ }
200
+ .ui-button-text-icon-primary .ui-button-icon-primary,
201
+ .ui-button-text-icons .ui-button-icon-primary,
202
+ .ui-button-icons-only .ui-button-icon-primary {
203
+ left: .5em;
204
+ }
205
+ .ui-button-text-icon-secondary .ui-button-icon-secondary,
206
+ .ui-button-text-icons .ui-button-icon-secondary,
207
+ .ui-button-icons-only .ui-button-icon-secondary {
208
+ right: .5em;
209
+ }
210
+
211
+ /* button sets */
212
+ .ui-buttonset {
213
+ margin-right: 7px;
214
+ }
215
+ .ui-buttonset .ui-button {
216
+ margin-left: 0;
217
+ margin-right: -.3em;
218
+ }
219
+
220
+ /* workarounds */
221
+ /* reset extra padding in Firefox, see h5bp.com/l */
222
+ input.ui-button::-moz-focus-inner,
223
+ button.ui-button::-moz-focus-inner {
224
+ border: 0;
225
+ padding: 0;
226
+ }
227
+ .ui-datepicker {
228
+ width: 17em;
229
+ padding: .2em .2em 0;
230
+ display: none;
231
+ }
232
+ .ui-datepicker .ui-datepicker-header {
233
+ position: relative;
234
+ padding: .2em 0;
235
+ }
236
+ .ui-datepicker .ui-datepicker-prev,
237
+ .ui-datepicker .ui-datepicker-next {
238
+ position: absolute;
239
+ top: 2px;
240
+ width: 1.8em;
241
+ height: 1.8em;
242
+ }
243
+ .ui-datepicker .ui-datepicker-prev-hover,
244
+ .ui-datepicker .ui-datepicker-next-hover {
245
+ top: 1px;
246
+ }
247
+ .ui-datepicker .ui-datepicker-prev {
248
+ left: 2px;
249
+ }
250
+ .ui-datepicker .ui-datepicker-next {
251
+ right: 2px;
252
+ }
253
+ .ui-datepicker .ui-datepicker-prev-hover {
254
+ left: 1px;
255
+ }
256
+ .ui-datepicker .ui-datepicker-next-hover {
257
+ right: 1px;
258
+ }
259
+ .ui-datepicker .ui-datepicker-prev span,
260
+ .ui-datepicker .ui-datepicker-next span {
261
+ display: block;
262
+ position: absolute;
263
+ left: 50%;
264
+ margin-left: -8px;
265
+ top: 50%;
266
+ margin-top: -8px;
267
+ }
268
+ .ui-datepicker .ui-datepicker-title {
269
+ margin: 0 2.3em;
270
+ line-height: 1.8em;
271
+ text-align: center;
272
+ }
273
+ .ui-datepicker .ui-datepicker-title select {
274
+ font-size: 1em;
275
+ margin: 1px 0;
276
+ }
277
+ .ui-datepicker select.ui-datepicker-month-year {
278
+ width: 100%;
279
+ }
280
+ .ui-datepicker select.ui-datepicker-month,
281
+ .ui-datepicker select.ui-datepicker-year {
282
+ width: 49%;
283
+ }
284
+ .ui-datepicker table {
285
+ width: 100%;
286
+ font-size: .9em;
287
+ border-collapse: collapse;
288
+ margin: 0 0 .4em;
289
+ }
290
+ .ui-datepicker th {
291
+ padding: .7em .3em;
292
+ text-align: center;
293
+ font-weight: bold;
294
+ border: 0;
295
+ }
296
+ .ui-datepicker td {
297
+ border: 0;
298
+ padding: 1px;
299
+ }
300
+ .ui-datepicker td span,
301
+ .ui-datepicker td a {
302
+ display: block;
303
+ padding: .2em;
304
+ text-align: right;
305
+ text-decoration: none;
306
+ }
307
+ .ui-datepicker .ui-datepicker-buttonpane {
308
+ background-image: none;
309
+ margin: .7em 0 0 0;
310
+ padding: 0 .2em;
311
+ border-left: 0;
312
+ border-right: 0;
313
+ border-bottom: 0;
314
+ }
315
+ .ui-datepicker .ui-datepicker-buttonpane button {
316
+ float: right;
317
+ margin: .5em .2em .4em;
318
+ cursor: pointer;
319
+ padding: .2em .6em .3em .6em;
320
+ width: auto;
321
+ overflow: visible;
322
+ }
323
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
324
+ float: left;
325
+ }
326
+
327
+ /* with multiple calendars */
328
+ .ui-datepicker.ui-datepicker-multi {
329
+ width: auto;
330
+ }
331
+ .ui-datepicker-multi .ui-datepicker-group {
332
+ float: left;
333
+ }
334
+ .ui-datepicker-multi .ui-datepicker-group table {
335
+ width: 95%;
336
+ margin: 0 auto .4em;
337
+ }
338
+ .ui-datepicker-multi-2 .ui-datepicker-group {
339
+ width: 50%;
340
+ }
341
+ .ui-datepicker-multi-3 .ui-datepicker-group {
342
+ width: 33.3%;
343
+ }
344
+ .ui-datepicker-multi-4 .ui-datepicker-group {
345
+ width: 25%;
346
+ }
347
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
348
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
349
+ border-left-width: 0;
350
+ }
351
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
352
+ clear: left;
353
+ }
354
+ .ui-datepicker-row-break {
355
+ clear: both;
356
+ width: 100%;
357
+ font-size: 0;
358
+ }
359
+
360
+ /* RTL support */
361
+ .ui-datepicker-rtl {
362
+ direction: rtl;
363
+ }
364
+ .ui-datepicker-rtl .ui-datepicker-prev {
365
+ right: 2px;
366
+ left: auto;
367
+ }
368
+ .ui-datepicker-rtl .ui-datepicker-next {
369
+ left: 2px;
370
+ right: auto;
371
+ }
372
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
373
+ right: 1px;
374
+ left: auto;
375
+ }
376
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
377
+ left: 1px;
378
+ right: auto;
379
+ }
380
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
381
+ clear: right;
382
+ }
383
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
384
+ float: left;
385
+ }
386
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
387
+ .ui-datepicker-rtl .ui-datepicker-group {
388
+ float: right;
389
+ }
390
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
391
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
392
+ border-right-width: 0;
393
+ border-left-width: 1px;
394
+ }
395
+ .ui-dialog {
396
+ position: absolute;
397
+ top: 0;
398
+ left: 0;
399
+ padding: .2em;
400
+ outline: 0;
401
+ }
402
+ .ui-dialog .ui-dialog-titlebar {
403
+ padding: .4em 1em;
404
+ position: relative;
405
+ }
406
+ .ui-dialog .ui-dialog-title {
407
+ float: left;
408
+ margin: .1em 0;
409
+ white-space: nowrap;
410
+ width: 90%;
411
+ overflow: hidden;
412
+ text-overflow: ellipsis;
413
+ }
414
+ .ui-dialog .ui-dialog-titlebar-close {
415
+ position: absolute;
416
+ right: .3em;
417
+ top: 50%;
418
+ width: 21px;
419
+ margin: -10px 0 0 0;
420
+ padding: 1px;
421
+ height: 20px;
422
+ }
423
+ .ui-dialog .ui-dialog-content {
424
+ position: relative;
425
+ border: 0;
426
+ padding: .5em 1em;
427
+ background: none;
428
+ overflow: auto;
429
+ }
430
+ .ui-dialog .ui-dialog-buttonpane {
431
+ text-align: left;
432
+ border-width: 1px 0 0 0;
433
+ background-image: none;
434
+ margin-top: .5em;
435
+ padding: .3em 1em .5em .4em;
436
+ }
437
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
438
+ float: right;
439
+ }
440
+ .ui-dialog .ui-dialog-buttonpane button {
441
+ margin: .5em .4em .5em 0;
442
+ cursor: pointer;
443
+ }
444
+ .ui-dialog .ui-resizable-se {
445
+ width: 12px;
446
+ height: 12px;
447
+ right: -5px;
448
+ bottom: -5px;
449
+ background-position: 16px 16px;
450
+ }
451
+ .ui-draggable .ui-dialog-titlebar {
452
+ cursor: move;
453
+ }
454
+ .ui-menu {
455
+ list-style: none;
456
+ padding: 2px;
457
+ margin: 0;
458
+ display: block;
459
+ outline: none;
460
+ }
461
+ .ui-menu .ui-menu {
462
+ margin-top: -3px;
463
+ position: absolute;
464
+ }
465
+ .ui-menu .ui-menu-item {
466
+ margin: 0;
467
+ padding: 0;
468
+ width: 100%;
469
+ /* support: IE10, see #8844 */
470
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
471
+ }
472
+ .ui-menu .ui-menu-divider {
473
+ margin: 5px -2px 5px -2px;
474
+ height: 0;
475
+ font-size: 0;
476
+ line-height: 0;
477
+ border-width: 1px 0 0 0;
478
+ }
479
+ .ui-menu .ui-menu-item a {
480
+ text-decoration: none;
481
+ display: block;
482
+ padding: 2px .4em;
483
+ line-height: 1.5;
484
+ min-height: 0; /* support: IE7 */
485
+ font-weight: normal;
486
+ }
487
+ .ui-menu .ui-menu-item a.ui-state-focus,
488
+ .ui-menu .ui-menu-item a.ui-state-active {
489
+ font-weight: normal;
490
+ margin: -1px;
491
+ }
492
+
493
+ .ui-menu .ui-state-disabled {
494
+ font-weight: normal;
495
+ margin: .4em 0 .2em;
496
+ line-height: 1.5;
497
+ }
498
+ .ui-menu .ui-state-disabled a {
499
+ cursor: default;
500
+ }
501
+
502
+ /* icon support */
503
+ .ui-menu-icons {
504
+ position: relative;
505
+ }
506
+ .ui-menu-icons .ui-menu-item a {
507
+ position: relative;
508
+ padding-left: 2em;
509
+ }
510
+
511
+ /* left-aligned */
512
+ .ui-menu .ui-icon {
513
+ position: absolute;
514
+ top: .2em;
515
+ left: .2em;
516
+ }
517
+
518
+ /* right-aligned */
519
+ .ui-menu .ui-menu-icon {
520
+ position: static;
521
+ float: right;
522
+ }
523
+ .ui-progressbar {
524
+ height: 2em;
525
+ text-align: left;
526
+ overflow: hidden;
527
+ }
528
+ .ui-progressbar .ui-progressbar-value {
529
+ margin: -1px;
530
+ height: 100%;
531
+ }
532
+ .ui-progressbar .ui-progressbar-overlay {
533
+ background: url("images/animated-overlay.gif");
534
+ height: 100%;
535
+ filter: alpha(opacity=25);
536
+ opacity: 0.25;
537
+ }
538
+ .ui-progressbar-indeterminate .ui-progressbar-value {
539
+ background-image: none;
540
+ }
541
+ .ui-resizable {
542
+ position: relative;
543
+ }
544
+ .ui-resizable-handle {
545
+ position: absolute;
546
+ font-size: 0.1px;
547
+ display: block;
548
+ }
549
+ .ui-resizable-disabled .ui-resizable-handle,
550
+ .ui-resizable-autohide .ui-resizable-handle {
551
+ display: none;
552
+ }
553
+ .ui-resizable-n {
554
+ cursor: n-resize;
555
+ height: 7px;
556
+ width: 100%;
557
+ top: -5px;
558
+ left: 0;
559
+ }
560
+ .ui-resizable-s {
561
+ cursor: s-resize;
562
+ height: 7px;
563
+ width: 100%;
564
+ bottom: -5px;
565
+ left: 0;
566
+ }
567
+ .ui-resizable-e {
568
+ cursor: e-resize;
569
+ width: 7px;
570
+ right: -5px;
571
+ top: 0;
572
+ height: 100%;
573
+ }
574
+ .ui-resizable-w {
575
+ cursor: w-resize;
576
+ width: 7px;
577
+ left: -5px;
578
+ top: 0;
579
+ height: 100%;
580
+ }
581
+ .ui-resizable-se {
582
+ cursor: se-resize;
583
+ width: 12px;
584
+ height: 12px;
585
+ right: 1px;
586
+ bottom: 1px;
587
+ }
588
+ .ui-resizable-sw {
589
+ cursor: sw-resize;
590
+ width: 9px;
591
+ height: 9px;
592
+ left: -5px;
593
+ bottom: -5px;
594
+ }
595
+ .ui-resizable-nw {
596
+ cursor: nw-resize;
597
+ width: 9px;
598
+ height: 9px;
599
+ left: -5px;
600
+ top: -5px;
601
+ }
602
+ .ui-resizable-ne {
603
+ cursor: ne-resize;
604
+ width: 9px;
605
+ height: 9px;
606
+ right: -5px;
607
+ top: -5px;
608
+ }
609
+ .ui-selectable-helper {
610
+ position: absolute;
611
+ z-index: 100;
612
+ border: 1px dotted black;
613
+ }
614
+ .ui-slider {
615
+ position: relative;
616
+ text-align: left;
617
+ }
618
+ .ui-slider .ui-slider-handle {
619
+ position: absolute;
620
+ z-index: 2;
621
+ width: 1.2em;
622
+ height: 1.2em;
623
+ cursor: default;
624
+ }
625
+ .ui-slider .ui-slider-range {
626
+ position: absolute;
627
+ z-index: 1;
628
+ font-size: .7em;
629
+ display: block;
630
+ border: 0;
631
+ background-position: 0 0;
632
+ }
633
+
634
+ /* For IE8 - See #6727 */
635
+ .ui-slider.ui-state-disabled .ui-slider-handle,
636
+ .ui-slider.ui-state-disabled .ui-slider-range {
637
+ filter: inherit;
638
+ }
639
+
640
+ .ui-slider-horizontal {
641
+ height: .8em;
642
+ }
643
+ .ui-slider-horizontal .ui-slider-handle {
644
+ top: -.3em;
645
+ margin-left: -.6em;
646
+ }
647
+ .ui-slider-horizontal .ui-slider-range {
648
+ top: 0;
649
+ height: 100%;
650
+ }
651
+ .ui-slider-horizontal .ui-slider-range-min {
652
+ left: 0;
653
+ }
654
+ .ui-slider-horizontal .ui-slider-range-max {
655
+ right: 0;
656
+ }
657
+
658
+ .ui-slider-vertical {
659
+ width: .8em;
660
+ height: 100px;
661
+ }
662
+ .ui-slider-vertical .ui-slider-handle {
663
+ left: -.3em;
664
+ margin-left: 0;
665
+ margin-bottom: -.6em;
666
+ }
667
+ .ui-slider-vertical .ui-slider-range {
668
+ left: 0;
669
+ width: 100%;
670
+ }
671
+ .ui-slider-vertical .ui-slider-range-min {
672
+ bottom: 0;
673
+ }
674
+ .ui-slider-vertical .ui-slider-range-max {
675
+ top: 0;
676
+ }
677
+ .ui-spinner {
678
+ position: relative;
679
+ display: inline-block;
680
+ overflow: hidden;
681
+ padding: 0;
682
+ vertical-align: middle;
683
+ }
684
+ .ui-spinner-input {
685
+ border: none;
686
+ background: none;
687
+ color: inherit;
688
+ padding: 0;
689
+ margin: .2em 0;
690
+ vertical-align: middle;
691
+ margin-left: .4em;
692
+ margin-right: 22px;
693
+ }
694
+ .ui-spinner-button {
695
+ width: 16px;
696
+ height: 50%;
697
+ font-size: .5em;
698
+ padding: 0;
699
+ margin: 0;
700
+ text-align: center;
701
+ position: absolute;
702
+ cursor: default;
703
+ display: block;
704
+ overflow: hidden;
705
+ right: 0;
706
+ }
707
+ /* more specificity required here to overide default borders */
708
+ .ui-spinner a.ui-spinner-button {
709
+ border-top: none;
710
+ border-bottom: none;
711
+ border-right: none;
712
+ }
713
+ /* vertical centre icon */
714
+ .ui-spinner .ui-icon {
715
+ position: absolute;
716
+ margin-top: -8px;
717
+ top: 50%;
718
+ left: 0;
719
+ }
720
+ .ui-spinner-up {
721
+ top: 0;
722
+ }
723
+ .ui-spinner-down {
724
+ bottom: 0;
725
+ }
726
+
727
+ /* TR overrides */
728
+ .ui-spinner .ui-icon-triangle-1-s {
729
+ /* need to fix icons sprite */
730
+ background-position: -65px -16px;
731
+ }
732
+ .ui-tabs {
733
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
734
+ padding: .2em;
735
+ }
736
+ .ui-tabs .ui-tabs-nav {
737
+ margin: 0;
738
+ padding: .2em .2em 0;
739
+ }
740
+ .ui-tabs .ui-tabs-nav li {
741
+ list-style: none;
742
+ float: left;
743
+ position: relative;
744
+ top: 0;
745
+ margin: 1px .2em 0 0;
746
+ border-bottom-width: 0;
747
+ padding: 0;
748
+ white-space: nowrap;
749
+ }
750
+ .ui-tabs .ui-tabs-nav li a {
751
+ float: left;
752
+ padding: .5em 1em;
753
+ text-decoration: none;
754
+ }
755
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active {
756
+ margin-bottom: -1px;
757
+ padding-bottom: 1px;
758
+ }
759
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active a,
760
+ .ui-tabs .ui-tabs-nav li.ui-state-disabled a,
761
+ .ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
762
+ cursor: text;
763
+ }
764
+ .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
765
+ .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
766
+ cursor: pointer;
767
+ }
768
+ .ui-tabs .ui-tabs-panel {
769
+ display: block;
770
+ border-width: 0;
771
+ padding: 1em 1.4em;
772
+ background: none;
773
+ }
774
+ .ui-tooltip {
775
+ padding: 8px;
776
+ position: absolute;
777
+ z-index: 9999;
778
+ max-width: 300px;
779
+ -webkit-box-shadow: 0 0 5px #aaa;
780
+ box-shadow: 0 0 5px #aaa;
781
+ }
782
+ body .ui-tooltip {
783
+ border-width: 2px;
784
+ }
785
+
786
+ /* Component containers
787
+ ----------------------------------*/
788
+ .ui-widget {
789
+ font-family: Verdana,Arial,sans-serif;
790
+ font-size: 1.1em;
791
+ }
792
+ .ui-widget .ui-widget {
793
+ font-size: 1em;
794
+ }
795
+ .ui-widget input,
796
+ .ui-widget select,
797
+ .ui-widget textarea,
798
+ .ui-widget button {
799
+ font-family: Verdana,Arial,sans-serif;
800
+ font-size: 1em;
801
+ }
802
+ .ui-widget-content {
803
+ border: 1px solid #aaaaaa;
804
+ background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
805
+ color: #222222;
806
+ }
807
+ .ui-widget-content a {
808
+ color: #222222;
809
+ }
810
+ .ui-widget-header {
811
+ border: 1px solid #aaaaaa;
812
+ background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
813
+ color: #222222;
814
+ font-weight: bold;
815
+ }
816
+ .ui-widget-header a {
817
+ color: #222222;
818
+ }
819
+
820
+ /* Interaction states
821
+ ----------------------------------*/
822
+ .ui-state-default,
823
+ .ui-widget-content .ui-state-default,
824
+ .ui-widget-header .ui-state-default {
825
+ border: 1px solid #d3d3d3;
826
+ background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
827
+ font-weight: normal;
828
+ color: #555555;
829
+ }
830
+ .ui-state-default a,
831
+ .ui-state-default a:link,
832
+ .ui-state-default a:visited {
833
+ color: #555555;
834
+ text-decoration: none;
835
+ }
836
+ .ui-state-hover,
837
+ .ui-widget-content .ui-state-hover,
838
+ .ui-widget-header .ui-state-hover,
839
+ .ui-state-focus,
840
+ .ui-widget-content .ui-state-focus,
841
+ .ui-widget-header .ui-state-focus {
842
+ border: 1px solid #999999;
843
+ background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
844
+ font-weight: normal;
845
+ color: #212121;
846
+ }
847
+ .ui-state-hover a,
848
+ .ui-state-hover a:hover,
849
+ .ui-state-hover a:link,
850
+ .ui-state-hover a:visited {
851
+ color: #212121;
852
+ text-decoration: none;
853
+ }
854
+ .ui-state-active,
855
+ .ui-widget-content .ui-state-active,
856
+ .ui-widget-header .ui-state-active {
857
+ border: 1px solid #aaaaaa;
858
+ background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
859
+ font-weight: normal;
860
+ color: #212121;
861
+ }
862
+ .ui-state-active a,
863
+ .ui-state-active a:link,
864
+ .ui-state-active a:visited {
865
+ color: #212121;
866
+ text-decoration: none;
867
+ }
868
+
869
+ /* Interaction Cues
870
+ ----------------------------------*/
871
+ .ui-state-highlight,
872
+ .ui-widget-content .ui-state-highlight,
873
+ .ui-widget-header .ui-state-highlight {
874
+ border: 1px solid #fcefa1;
875
+ background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
876
+ color: #363636;
877
+ }
878
+ .ui-state-highlight a,
879
+ .ui-widget-content .ui-state-highlight a,
880
+ .ui-widget-header .ui-state-highlight a {
881
+ color: #363636;
882
+ }
883
+ .ui-state-error,
884
+ .ui-widget-content .ui-state-error,
885
+ .ui-widget-header .ui-state-error {
886
+ border: 1px solid #cd0a0a;
887
+ background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
888
+ color: #cd0a0a;
889
+ }
890
+ .ui-state-error a,
891
+ .ui-widget-content .ui-state-error a,
892
+ .ui-widget-header .ui-state-error a {
893
+ color: #cd0a0a;
894
+ }
895
+ .ui-state-error-text,
896
+ .ui-widget-content .ui-state-error-text,
897
+ .ui-widget-header .ui-state-error-text {
898
+ color: #cd0a0a;
899
+ }
900
+ .ui-priority-primary,
901
+ .ui-widget-content .ui-priority-primary,
902
+ .ui-widget-header .ui-priority-primary {
903
+ font-weight: bold;
904
+ }
905
+ .ui-priority-secondary,
906
+ .ui-widget-content .ui-priority-secondary,
907
+ .ui-widget-header .ui-priority-secondary {
908
+ opacity: .7;
909
+ filter:Alpha(Opacity=70);
910
+ font-weight: normal;
911
+ }
912
+ .ui-state-disabled,
913
+ .ui-widget-content .ui-state-disabled,
914
+ .ui-widget-header .ui-state-disabled {
915
+ opacity: .35;
916
+ filter:Alpha(Opacity=35);
917
+ background-image: none;
918
+ }
919
+ .ui-state-disabled .ui-icon {
920
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
921
+ }
922
+
923
+ /* Icons
924
+ ----------------------------------*/
925
+
926
+ /* states and images */
927
+ .ui-icon {
928
+ width: 16px;
929
+ height: 16px;
930
+ }
931
+ .ui-icon,
932
+ .ui-widget-content .ui-icon {
933
+ background-image: url(images/ui-icons_222222_256x240.png);
934
+ }
935
+ .ui-widget-header .ui-icon {
936
+ background-image: url(images/ui-icons_222222_256x240.png);
937
+ }
938
+ .ui-state-default .ui-icon {
939
+ background-image: url(images/ui-icons_888888_256x240.png);
940
+ }
941
+ .ui-state-hover .ui-icon,
942
+ .ui-state-focus .ui-icon {
943
+ background-image: url(images/ui-icons_454545_256x240.png);
944
+ }
945
+ .ui-state-active .ui-icon {
946
+ background-image: url(images/ui-icons_454545_256x240.png);
947
+ }
948
+ .ui-state-highlight .ui-icon {
949
+ background-image: url(images/ui-icons_2e83ff_256x240.png);
950
+ }
951
+ .ui-state-error .ui-icon,
952
+ .ui-state-error-text .ui-icon {
953
+ background-image: url(images/ui-icons_cd0a0a_256x240.png);
954
+ }
955
+
956
+ /* positioning */
957
+ .ui-icon-blank { background-position: 16px 16px; }
958
+ .ui-icon-carat-1-n { background-position: 0 0; }
959
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
960
+ .ui-icon-carat-1-e { background-position: -32px 0; }
961
+ .ui-icon-carat-1-se { background-position: -48px 0; }
962
+ .ui-icon-carat-1-s { background-position: -64px 0; }
963
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
964
+ .ui-icon-carat-1-w { background-position: -96px 0; }
965
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
966
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
967
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
968
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
969
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
970
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
971
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
972
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
973
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
974
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
975
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
976
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
977
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
978
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
979
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
980
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
981
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
982
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
983
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
984
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
985
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
986
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
987
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
988
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
989
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
990
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
991
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
992
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
993
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
994
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
995
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
996
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
997
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
998
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
999
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1000
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1001
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1002
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1003
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1004
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1005
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1006
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1007
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1008
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1009
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1010
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1011
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1012
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1013
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1014
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1015
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1016
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1017
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1018
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1019
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1020
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1021
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1022
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
1023
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
1024
+ .ui-icon-extlink { background-position: -32px -80px; }
1025
+ .ui-icon-newwin { background-position: -48px -80px; }
1026
+ .ui-icon-refresh { background-position: -64px -80px; }
1027
+ .ui-icon-shuffle { background-position: -80px -80px; }
1028
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
1029
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
1030
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
1031
+ .ui-icon-folder-open { background-position: -16px -96px; }
1032
+ .ui-icon-document { background-position: -32px -96px; }
1033
+ .ui-icon-document-b { background-position: -48px -96px; }
1034
+ .ui-icon-note { background-position: -64px -96px; }
1035
+ .ui-icon-mail-closed { background-position: -80px -96px; }
1036
+ .ui-icon-mail-open { background-position: -96px -96px; }
1037
+ .ui-icon-suitcase { background-position: -112px -96px; }
1038
+ .ui-icon-comment { background-position: -128px -96px; }
1039
+ .ui-icon-person { background-position: -144px -96px; }
1040
+ .ui-icon-print { background-position: -160px -96px; }
1041
+ .ui-icon-trash { background-position: -176px -96px; }
1042
+ .ui-icon-locked { background-position: -192px -96px; }
1043
+ .ui-icon-unlocked { background-position: -208px -96px; }
1044
+ .ui-icon-bookmark { background-position: -224px -96px; }
1045
+ .ui-icon-tag { background-position: -240px -96px; }
1046
+ .ui-icon-home { background-position: 0 -112px; }
1047
+ .ui-icon-flag { background-position: -16px -112px; }
1048
+ .ui-icon-calendar { background-position: -32px -112px; }
1049
+ .ui-icon-cart { background-position: -48px -112px; }
1050
+ .ui-icon-pencil { background-position: -64px -112px; }
1051
+ .ui-icon-clock { background-position: -80px -112px; }
1052
+ .ui-icon-disk { background-position: -96px -112px; }
1053
+ .ui-icon-calculator { background-position: -112px -112px; }
1054
+ .ui-icon-zoomin { background-position: -128px -112px; }
1055
+ .ui-icon-zoomout { background-position: -144px -112px; }
1056
+ .ui-icon-search { background-position: -160px -112px; }
1057
+ .ui-icon-wrench { background-position: -176px -112px; }
1058
+ .ui-icon-gear { background-position: -192px -112px; }
1059
+ .ui-icon-heart { background-position: -208px -112px; }
1060
+ .ui-icon-star { background-position: -224px -112px; }
1061
+ .ui-icon-link { background-position: -240px -112px; }
1062
+ .ui-icon-cancel { background-position: 0 -128px; }
1063
+ .ui-icon-plus { background-position: -16px -128px; }
1064
+ .ui-icon-plusthick { background-position: -32px -128px; }
1065
+ .ui-icon-minus { background-position: -48px -128px; }
1066
+ .ui-icon-minusthick { background-position: -64px -128px; }
1067
+ .ui-icon-close { background-position: -80px -128px; }
1068
+ .ui-icon-closethick { background-position: -96px -128px; }
1069
+ .ui-icon-key { background-position: -112px -128px; }
1070
+ .ui-icon-lightbulb { background-position: -128px -128px; }
1071
+ .ui-icon-scissors { background-position: -144px -128px; }
1072
+ .ui-icon-clipboard { background-position: -160px -128px; }
1073
+ .ui-icon-copy { background-position: -176px -128px; }
1074
+ .ui-icon-contact { background-position: -192px -128px; }
1075
+ .ui-icon-image { background-position: -208px -128px; }
1076
+ .ui-icon-video { background-position: -224px -128px; }
1077
+ .ui-icon-script { background-position: -240px -128px; }
1078
+ .ui-icon-alert { background-position: 0 -144px; }
1079
+ .ui-icon-info { background-position: -16px -144px; }
1080
+ .ui-icon-notice { background-position: -32px -144px; }
1081
+ .ui-icon-help { background-position: -48px -144px; }
1082
+ .ui-icon-check { background-position: -64px -144px; }
1083
+ .ui-icon-bullet { background-position: -80px -144px; }
1084
+ .ui-icon-radio-on { background-position: -96px -144px; }
1085
+ .ui-icon-radio-off { background-position: -112px -144px; }
1086
+ .ui-icon-pin-w { background-position: -128px -144px; }
1087
+ .ui-icon-pin-s { background-position: -144px -144px; }
1088
+ .ui-icon-play { background-position: 0 -160px; }
1089
+ .ui-icon-pause { background-position: -16px -160px; }
1090
+ .ui-icon-seek-next { background-position: -32px -160px; }
1091
+ .ui-icon-seek-prev { background-position: -48px -160px; }
1092
+ .ui-icon-seek-end { background-position: -64px -160px; }
1093
+ .ui-icon-seek-start { background-position: -80px -160px; }
1094
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1095
+ .ui-icon-seek-first { background-position: -80px -160px; }
1096
+ .ui-icon-stop { background-position: -96px -160px; }
1097
+ .ui-icon-eject { background-position: -112px -160px; }
1098
+ .ui-icon-volume-off { background-position: -128px -160px; }
1099
+ .ui-icon-volume-on { background-position: -144px -160px; }
1100
+ .ui-icon-power { background-position: 0 -176px; }
1101
+ .ui-icon-signal-diag { background-position: -16px -176px; }
1102
+ .ui-icon-signal { background-position: -32px -176px; }
1103
+ .ui-icon-battery-0 { background-position: -48px -176px; }
1104
+ .ui-icon-battery-1 { background-position: -64px -176px; }
1105
+ .ui-icon-battery-2 { background-position: -80px -176px; }
1106
+ .ui-icon-battery-3 { background-position: -96px -176px; }
1107
+ .ui-icon-circle-plus { background-position: 0 -192px; }
1108
+ .ui-icon-circle-minus { background-position: -16px -192px; }
1109
+ .ui-icon-circle-close { background-position: -32px -192px; }
1110
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
1111
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
1112
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
1113
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
1114
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
1115
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
1116
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
1117
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
1118
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
1119
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
1120
+ .ui-icon-circle-check { background-position: -208px -192px; }
1121
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
1122
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
1123
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
1124
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
1125
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
1126
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
1127
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1128
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1129
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1130
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1131
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1132
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1133
+
1134
+
1135
+ /* Misc visuals
1136
+ ----------------------------------*/
1137
+
1138
+ /* Corner radius */
1139
+ .ui-corner-all,
1140
+ .ui-corner-top,
1141
+ .ui-corner-left,
1142
+ .ui-corner-tl {
1143
+ border-top-left-radius: 4px;
1144
+ }
1145
+ .ui-corner-all,
1146
+ .ui-corner-top,
1147
+ .ui-corner-right,
1148
+ .ui-corner-tr {
1149
+ border-top-right-radius: 4px;
1150
+ }
1151
+ .ui-corner-all,
1152
+ .ui-corner-bottom,
1153
+ .ui-corner-left,
1154
+ .ui-corner-bl {
1155
+ border-bottom-left-radius: 4px;
1156
+ }
1157
+ .ui-corner-all,
1158
+ .ui-corner-bottom,
1159
+ .ui-corner-right,
1160
+ .ui-corner-br {
1161
+ border-bottom-right-radius: 4px;
1162
+ }
1163
+
1164
+ /* Overlays */
1165
+ .ui-widget-overlay {
1166
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1167
+ opacity: .3;
1168
+ filter: Alpha(Opacity=30);
1169
+ }
1170
+ .ui-widget-shadow {
1171
+ margin: -8px 0 0 -8px;
1172
+ padding: 8px;
1173
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1174
+ opacity: .3;
1175
+ filter: Alpha(Opacity=30);
1176
+ border-radius: 8px;
1177
+ }
assets/js/frontend.js CHANGED
@@ -3,7 +3,7 @@
3
  *
4
  * @author Your Inspiration Themes
5
  * @package YITH WooCommerce Zoom Magnifier
6
- * @version 1.2.12
7
  */
8
  jQuery(document).ready(function ($) {
9
 
3
  *
4
  * @author Your Inspiration Themes
5
  * @package YITH WooCommerce Zoom Magnifier
6
+ * @version 1.2.13
7
  */
8
  jQuery(document).ready(function ($) {
9
 
assets/js/yith_magnifier.js CHANGED
@@ -7,7 +7,8 @@
7
  * MIT License.
8
  */
9
 
10
- ;(function (window, $, undefined) {
 
11
  'use strict';
12
 
13
  //include imagesLoaded plugin
@@ -22,7 +23,8 @@
22
  /*jshint curly: true, eqeqeq: true, noempty: true, strict: true, undef: true, browser: true */
23
  /*global jQuery: false */
24
 
25
- ;(function ($, undefined) {
 
26
  'use strict';
27
 
28
  // blank image data-uri bypasses webkit log warning (thx doug jones)
@@ -304,9 +306,9 @@
304
  self.zoomImage = self.options.elements.zoomImage;
305
 
306
  //wrap the zoom image with a div
307
- //if( !self.zoom.parent().hasClass('yith_magnifier_zoom_wrap') ) {
308
- self.zoom.wrap('<div class="yith_magnifier_zoom_wrap"></div>');
309
- //}
310
 
311
  self.IMG_zoomImage = new Image();
312
  self.IMG_zoomImage.src = self.zoom.attr('href');
7
  * MIT License.
8
  */
9
 
10
+ ;
11
+ (function (window, $, undefined) {
12
  'use strict';
13
 
14
  //include imagesLoaded plugin
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)
306
  self.zoomImage = self.options.elements.zoomImage;
307
 
308
  //wrap the zoom image with a div
309
+ if (!self.zoom.parent().hasClass('yith_magnifier_zoom_wrap')) {
310
+ self.zoom.wrap('<div class="yith_magnifier_zoom_wrap"></div>');
311
+ }
312
 
313
  self.IMG_zoomImage = new Image();
314
  self.IMG_zoomImage.src = self.zoom.attr('href');
class.yith-wcmg-frontend.php CHANGED
@@ -2,16 +2,16 @@
2
  /**
3
  * Frontend class
4
  *
5
- * @author Your Inspiration Themes
6
  * @package YITH WooCommerce Zoom Magnifier
7
  * @version 1.1.2
8
  */
9
 
10
- if (!defined('YITH_WCMG')) {
11
  exit;
12
  } // Exit if accessed directly
13
 
14
- if (!class_exists('YITH_WCMG_Frontend')) {
15
  /**
16
  * Admin class.
17
  * The class manage all the Frontend behaviors.
@@ -31,28 +31,28 @@ if (!class_exists('YITH_WCMG_Frontend')) {
31
  * Constructor
32
  *
33
  * @access public
34
- * @since 1.0.0
35
  */
36
- public function __construct($version) {
37
  $this->version = $version;
38
 
39
  // add the action only when the loop is initializate
40
- add_action('template_redirect', array( $this, 'render') );
41
  }
42
 
43
- public function render() {
44
- if ( yith_wcmg_is_enabled() && ! $this->is_video_featured_enabled() ) {
45
  //change the templates
46
- remove_action('woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20);
47
- remove_action('woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20);
48
- add_action('woocommerce_before_single_product_summary', array( $this, 'show_product_images'), 20);
49
- add_action('woocommerce_product_thumbnails', array( $this, 'show_product_thumbnails' ), 20);
50
 
51
  //custom styles and javascripts
52
- add_action( 'wp_enqueue_scripts', array($this, 'enqueue_styles_scripts') );
53
 
54
  //add attributes to product variations
55
- add_filter('woocommerce_available_variation', array($this, 'available_variation'), 10, 3);
56
  }
57
  }
58
 
@@ -62,13 +62,13 @@ if (!class_exists('YITH_WCMG_Frontend')) {
62
  *
63
  * @access public
64
  * @return void
65
- * @since 1.0.0
66
  */
67
- public function show_product_images() {
68
 
69
  /** FIX WOO 2.1 */
70
- $wc_get_template = function_exists('wc_get_template') ? 'wc_get_template' : 'woocommerce_get_template';
71
- $wc_get_template('single-product/product-image-magnifier.php', array(), '', YITH_YWZM_DIR . 'templates/');
72
  }
73
 
74
 
@@ -77,14 +77,14 @@ if (!class_exists('YITH_WCMG_Frontend')) {
77
  *
78
  * @access public
79
  * @return void
80
- * @since 1.0.0
81
  */
82
- public function show_product_thumbnails() {
83
 
84
  /** FIX WOO 2.1 */
85
- $wc_get_template = function_exists('wc_get_template') ? 'wc_get_template' : 'woocommerce_get_template';
86
 
87
- $wc_get_template('single-product/product-thumbnails-magnifier.php', array(), '', YITH_YWZM_DIR . 'templates/');
88
  }
89
 
90
 
@@ -93,34 +93,46 @@ if (!class_exists('YITH_WCMG_Frontend')) {
93
  *
94
  * @access public
95
  * @return void
96
- * @since 1.0.0
97
  */
98
- public function enqueue_styles_scripts() {
99
  global $post;
100
 
101
- $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
102
 
103
- wp_register_script('yith-magnifier-slider', YITH_WCMG_URL . 'assets/js/jquery.carouFredSel' . $suffix . '.js', array(
104
  'jquery',
105
- 'jquery-migrate'
106
- ), '6.2.1', true);
107
- wp_register_script('yith-magnifier', YITH_WCMG_URL . 'assets/js/yith_magnifier' . $suffix . '.js', array('jquery'), $this->version, true);
108
- wp_register_script('yith_wcmg_frontend', YITH_WCMG_URL . 'assets/js/frontend' . $suffix . '.js', array(
109
  'jquery',
110
- 'yith-magnifier'
111
- ), $this->version, true);
112
-
113
- wp_register_style('yith-magnifier', YITH_WCMG_URL . 'assets/css/yith_magnifier.css');
114
-
115
- if ( is_product() || (!empty($post->post_content) && strstr($post->post_content, '[product_page') ) ) {
116
- wp_enqueue_script('yith-magnifier-slider');
117
- wp_enqueue_script('yith-magnifier');
118
- wp_enqueue_script('yith_wcmg_frontend');
119
-
120
- wp_enqueue_style('yith-magnifier');
121
-
122
- $css = file_exists(get_stylesheet_directory() . '/woocommerce/yith_magnifier.css') ? get_stylesheet_directory_uri() . '/woocommerce/yith_magnifier.css' : YITH_WCMG_URL . 'assets/css/frontend.css';
123
- wp_enqueue_style('yith_wcmg_frontend', $css);
 
 
 
 
 
 
 
 
 
 
 
 
124
  }
125
  }
126
 
@@ -130,14 +142,14 @@ if (!class_exists('YITH_WCMG_Frontend')) {
130
  *
131
  * @access public
132
  * @return void
133
- * @since 1.0.0
134
  */
135
- public function available_variation($data, $wc_prod, $variation) {
136
 
137
- $attachment_id = get_post_thumbnail_id($variation->get_variation_id());
138
- $attachment = wp_get_attachment_image_src($attachment_id, 'shop_magnifier');
139
 
140
- $data['image_magnifier'] = $attachment ? current($attachment) : '';
141
 
142
  return $data;
143
  }
@@ -145,14 +157,14 @@ if (!class_exists('YITH_WCMG_Frontend')) {
145
  /**
146
  * Detect if the featured video is enabled
147
  */
148
- public function is_video_featured_enabled() {
149
  global $post;
150
- if (!isset($post->ID)) {
151
  return;
152
  }
153
 
154
- $featured_video = get_post_meta($post->ID, '_video_url', true);
155
- if (!empty($featured_video)) {
156
  return true;
157
  } else {
158
  return false;
2
  /**
3
  * Frontend class
4
  *
5
+ * @author Your Inspiration Themes
6
  * @package YITH WooCommerce Zoom Magnifier
7
  * @version 1.1.2
8
  */
9
 
10
+ if ( ! defined ( 'YITH_WCMG' ) ) {
11
  exit;
12
  } // Exit if accessed directly
13
 
14
+ if ( ! class_exists ( 'YITH_WCMG_Frontend' ) ) {
15
  /**
16
  * Admin class.
17
  * The class manage all the Frontend behaviors.
31
  * Constructor
32
  *
33
  * @access public
34
+ * @since 1.0.0
35
  */
36
+ public function __construct ( $version ) {
37
  $this->version = $version;
38
 
39
  // add the action only when the loop is initializate
40
+ add_action ( 'template_redirect', array ( $this, 'render' ) );
41
  }
42
 
43
+ public function render () {
44
+ if ( yith_wcmg_is_enabled () && ! $this->is_video_featured_enabled () ) {
45
  //change the templates
46
+ remove_action ( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
47
+ remove_action ( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
48
+ add_action ( 'woocommerce_before_single_product_summary', array ( $this, 'show_product_images' ), 20 );
49
+ add_action ( 'woocommerce_product_thumbnails', array ( $this, 'show_product_thumbnails' ), 20 );
50
 
51
  //custom styles and javascripts
52
+ add_action ( 'wp_enqueue_scripts', array ( $this, 'enqueue_styles_scripts' ) );
53
 
54
  //add attributes to product variations
55
+ add_filter ( 'woocommerce_available_variation', array ( $this, 'available_variation' ), 10, 3 );
56
  }
57
  }
58
 
62
  *
63
  * @access public
64
  * @return void
65
+ * @since 1.0.0
66
  */
67
+ public function show_product_images () {
68
 
69
  /** FIX WOO 2.1 */
70
+ $wc_get_template = function_exists ( 'wc_get_template' ) ? 'wc_get_template' : 'woocommerce_get_template';
71
+ $wc_get_template( 'single-product/product-image-magnifier.php', array (), '', YITH_YWZM_DIR . 'templates/' );
72
  }
73
 
74
 
77
  *
78
  * @access public
79
  * @return void
80
+ * @since 1.0.0
81
  */
82
+ public function show_product_thumbnails () {
83
 
84
  /** FIX WOO 2.1 */
85
+ $wc_get_template = function_exists ( 'wc_get_template' ) ? 'wc_get_template' : 'woocommerce_get_template';
86
 
87
+ $wc_get_template( 'single-product/product-thumbnails-magnifier.php', array (), '', YITH_YWZM_DIR . 'templates/' );
88
  }
89
 
90
 
93
  *
94
  * @access public
95
  * @return void
96
+ * @since 1.0.0
97
  */
98
+ public function enqueue_styles_scripts () {
99
  global $post;
100
 
101
+ $suffix = defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
102
 
103
+ wp_register_script ( 'yith-magnifier-slider', YITH_WCMG_URL . 'assets/js/jquery.carouFredSel' . $suffix . '.js', array (
104
  'jquery',
105
+ 'jquery-migrate',
106
+ ), '6.2.1', true );
107
+ wp_register_script ( 'yith-magnifier', YITH_WCMG_URL . 'assets/js/yith_magnifier' . $suffix . '.js', array ( 'jquery' ), $this->version, true );
108
+ wp_register_script ( 'yith_wcmg_frontend', YITH_WCMG_URL . 'assets/js/frontend' . $suffix . '.js', array (
109
  'jquery',
110
+ 'yith-magnifier',
111
+ ), $this->version, true );
112
+
113
+ wp_register_style ( 'yith-magnifier', YITH_WCMG_URL . 'assets/css/yith_magnifier.css' );
114
+
115
+ if ( is_product () || ( ! empty( $post->post_content ) && strstr ( $post->post_content, '[product_page' ) ) ) {
116
+ wp_enqueue_script ( 'yith-magnifier-slider' );
117
+ wp_enqueue_script ( 'yith-magnifier' );
118
+ wp_enqueue_script ( 'yith_wcmg_frontend' );
119
+
120
+ wp_enqueue_style ( 'yith-magnifier' );
121
+
122
+ $css = file_exists ( get_stylesheet_directory () . '/woocommerce/yith_magnifier.css' ) ? get_stylesheet_directory_uri () . '/woocommerce/yith_magnifier.css' : YITH_WCMG_URL . 'assets/css/frontend.css';
123
+ wp_enqueue_style ( 'yith_wcmg_frontend', $css );
124
+ /*
125
+ $append_text_css = '.yith_magnifier_zoom_wrap::after {
126
+ content: "' . __ ( "Roll over image to zoom in", "yith-woocommerce-zoom-magnifier" ) . '";
127
+ margin: 0 auto;
128
+ display: inline-block;
129
+ text-align:center;
130
+ font-size: 10px;
131
+ }
132
+ ';
133
+
134
+ wp_add_inline_style ( 'yith_wcmg_frontend', $append_text_css );
135
+ */
136
  }
137
  }
138
 
142
  *
143
  * @access public
144
  * @return void
145
+ * @since 1.0.0
146
  */
147
+ public function available_variation ( $data, $wc_prod, $variation ) {
148
 
149
+ $attachment_id = get_post_thumbnail_id ( $variation->get_variation_id () );
150
+ $attachment = wp_get_attachment_image_src ( $attachment_id, 'shop_magnifier' );
151
 
152
+ $data[ 'image_magnifier' ] = $attachment ? current ( $attachment ) : '';
153
 
154
  return $data;
155
  }
157
  /**
158
  * Detect if the featured video is enabled
159
  */
160
+ public function is_video_featured_enabled () {
161
  global $post;
162
+ if ( ! isset( $post->ID ) ) {
163
  return;
164
  }
165
 
166
+ $featured_video = get_post_meta ( $post->ID, '_video_url', true );
167
+ if ( ! empty( $featured_video ) ) {
168
  return true;
169
  } else {
170
  return false;
class.yith-wcmg.php CHANGED
@@ -22,7 +22,7 @@ if( !class_exists( 'YITH_WCMG' ) ) {
22
  * @var string
23
  * @since 1.0.0
24
  */
25
- public $version = '1.2.12';
26
 
27
  /**
28
  * Plugin object
22
  * @var string
23
  * @since 1.0.0
24
  */
25
+ public $version = '1.2.13';
26
 
27
  /**
28
  * Plugin object
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.12
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.12
15
  */
16
  /* Copyright 2013-2015 Your Inspiration Themes (email : plugins@yithemes.com)
17
 
@@ -65,7 +65,7 @@ if ( ! defined( 'YITH_YWZM_FREE_INIT' ) ) {
65
  }
66
 
67
  if ( ! defined( 'YITH_YWZM_VERSION' ) ) {
68
- define( 'YITH_YWZM_VERSION', '1.2.12' );
69
  }
70
 
71
  if ( ! defined( 'YITH_YWZM_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.13
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.13
15
  */
16
  /* Copyright 2013-2015 Your Inspiration Themes (email : plugins@yithemes.com)
17
 
65
  }
66
 
67
  if ( ! defined( 'YITH_YWZM_VERSION' ) ) {
68
+ define( 'YITH_YWZM_VERSION', '1.2.13' );
69
  }
70
 
71
  if ( ! defined( 'YITH_YWZM_FILE' ) ) {
lib/class.yith-woocommerce-zoom-magnifier.php CHANGED
@@ -25,7 +25,7 @@ if ( ! class_exists( 'YITH_WooCommerce_Zoom_Magnifier' ) ) {
25
  * @var string
26
  * @since 1.0.0
27
  */
28
- public $version = '1.2.12';
29
 
30
  /**
31
  * Plugin object
25
  * @var string
26
  * @since 1.0.0
27
  */
28
+ public $version = '1.2.13';
29
 
30
  /**
31
  * Plugin object
lib/class.yith-ywzm-plugin-fw-loader.php CHANGED
@@ -66,7 +66,7 @@ if ( ! class_exists( 'YITH_YWZM_Plugin_FW_Loader' ) ) {
66
  */
67
  add_action( 'admin_init', array( $this, 'register_pointer' ) );
68
 
69
- add_action( 'after_setup_theme', array( $this, 'plugin_fw_loader' ), 1 );
70
 
71
  //Add action links
72
  add_filter( 'plugin_action_links_' . plugin_basename( YITH_YWZM_DIR . '/' . basename( YITH_YWZM_FILE ) ), array(
66
  */
67
  add_action( 'admin_init', array( $this, 'register_pointer' ) );
68
 
69
+ add_action( 'plugins_loaded', array( $this, 'plugin_fw_loader' ), 15 );
70
 
71
  //Add action links
72
  add_filter( 'plugin_action_links_' . plugin_basename( YITH_YWZM_DIR . '/' . basename( YITH_YWZM_FILE ) ), array(
plugin-fw/assets/css/metaboxes.css CHANGED
@@ -237,6 +237,27 @@
237
  .chosen .select_wrapper .chosen-container .chosen-drop .chosen-search input{
238
  width: 100%!important;
239
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
 
241
  /* typography */
242
  .the-metabox.typography .select_wrapper.font-family { width:200px; }
237
  .chosen .select_wrapper .chosen-container .chosen-drop .chosen-search input{
238
  width: 100%!important;
239
  }
240
+ .select_wrapper span {
241
+ height: 26px;
242
+ line-height: 26px;
243
+ padding-left: 6px;
244
+ position: absolute;
245
+ z-index: 2;
246
+ overflow: hidden;
247
+ }
248
+
249
+ .the-metabox .select_wrapper select {
250
+ cursor: pointer;
251
+ height: 28px;
252
+ margin: 0;
253
+ opacity: 0;
254
+ padding: 0;
255
+ position: relative;
256
+ width: inherit;
257
+ z-index: 4;
258
+ background-color: #FAFAFA;
259
+ }
260
+
261
 
262
  /* typography */
263
  .the-metabox.typography .select_wrapper.font-family { width:200px; }
plugin-fw/assets/css/yit-plugin-panel.css CHANGED
@@ -631,6 +631,10 @@
631
  width: 6em;
632
  }
633
 
 
 
 
 
634
  /* === YIT FRAMEWORK === */
635
  .plugin-card .plugin-icon img {
636
  max-width: 100%;
631
  width: 6em;
632
  }
633
 
634
+ #wpwrap h2.nav-tab-wrapper {
635
+ border-bottom: 1px solid #ccc;
636
+ }
637
+
638
  /* === YIT FRAMEWORK === */
639
  .plugin-card .plugin-icon img {
640
  max-width: 100%;
plugin-fw/assets/js/yit-plugin-panel.js CHANGED
@@ -177,6 +177,16 @@
177
  //Open the uploader dialog
178
  custom_uploader.open();
179
  });
 
 
 
 
 
 
 
 
 
 
180
  }
181
 
182
  $('.plugin-option .add_media').on('click', function () {
177
  //Open the uploader dialog
178
  custom_uploader.open();
179
  });
180
+
181
+ $( document).on( 'click', '.plugin-option .upload_button_reset', function(e){
182
+ var t = $(this),
183
+ id = t.attr('id'),
184
+ input_id = t.attr('id').replace(/-button_reset$/, ''),
185
+ default_value = $('#' + id).data('default');
186
+
187
+ $("#" + input_id).val( default_value );
188
+ $('.plugin-option .upload_img_url').trigger('change');
189
+ } );
190
  }
191
 
192
  $('.plugin-option .add_media').on('click', function () {
plugin-fw/assets/js/yit-plugin-panel.min.js CHANGED
@@ -1 +1,10 @@
1
- !function(e){function t(t,i,n){var a=!0;if("string"==typeof i){":radio"==i.substr(0,6)&&(i+=":checked");for(var n=n.split(","),o=0;o<n.length;o++){if(e(i).val()==n[o]){a=!0;break}a=!1}}a?e(t+"-container").closest("tr").show():e(t+"-container").closest("tr").hide()}var i=function(){var t="";e(this).attr("multiple")?(e(this).children("option:selected").each(function(i,n){0!=i&&(t+=", "),t+=e(n).text()}),""==t&&e(this).children().children("option:selected").each(function(i,n){0!=i&&(t+=", "),t+=e(n).text()})):(t=e(this).children("option:selected").text(),""==t&&(t=e(this).children().children("option:selected").text())),e(this).parent().find("span").length<=0&&e(this).before("<span></span>"),e(this).parent().children("span").replaceWith("<span>"+t+"</span>")};if(e(".plugin-option .select_wrapper select").not(".chosen").each(i).change(i),e(".plugin-option .select_wrapper").click(function(t){t.stopPropagation(),e(this).find("select[multiple]").not(".chosen").toggle()}),e(".plugin-option .select_wrapper select[multiple]").not(".chosen").click(function(e){e.stopPropagation()}),e(window).click(function(){e(".plugin-option .select_wrapper select[multiple]").not(".chosen").hide()}),e(".plugin-option .chosen .select_wrapper select").chosen(),e(".plugin-option .on_off_container span").on("click",function(){var t=e(this).prev("input"),i=t.prop("checked");i?t.prop("checked",!1).attr("value","no").removeClass("onoffchecked"):t.prop("checked",!0).attr("value","yes").addClass("onoffchecked"),t.change()}),e(".plugin-option .slider_container .ui-slider-horizontal").each(function(){var t=e(this).data("val"),i=e(this).data("min"),n=e(this).data("max"),a=e(this).data("step"),o=e(this).data("labels");e(this).slider({value:t,min:i,max:n,range:"min",step:a,slide:function(t,i){e(this).find("input").val(i.value),e(this).siblings(".feedback").find("strong").text(i.value+o)}})}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media){{var n=!0;wp.media.editor.send.attachment}e(".plugin-option .upload_img_url").change(function(){var t=e(this).val(),i=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico)"),n=e(this).parents().siblings(".upload_img_preview");n.html(i.test(t)?'<img src="'+t+'" style="max-width:600px; max-height:300px;" />':"")}).trigger("change"),e(document).on("click",".plugin-option .upload_button",function(t){t.preventDefault();var i,n=e(this),a=n.attr("id").replace(/-button$/,"");if(i)return void i.open();var o=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];i=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:o}),i.on("select",function(){var t=i.state().get("selection").first().toJSON();e("#"+a).val(t.url),e("#"+a+"-yith-attachment-id")&&e("#"+a+"-yith-attachment-id").val(t.id),e(".plugin-option .upload_img_url").trigger("change")}),i.open()})}e(".plugin-option .add_media").on("click",function(){n=!1}),e("[data-field]").each(function(){var i=e(this),n="#"+i.data("field"),a="#"+i.data("dep"),o=i.data("value");e(a).on("change",function(){t(n,a,o.toString())}).change()}),e(".rm_connectedlist").each(function(){{var t=e(this).find("ul"),i=e(this).find(":hidden");t.sortable({connectWith:t,update:function(){var n={};t.each(function(){var t={};e(this).children().each(function(){t[e(this).data("option")]=e(this).text()}),n[e(this).data("list")]=t}),i.val(JSON.stringify(n).replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0"))}}).disableSelection()}}),e(document).ready(function(){e(".yith-video-link").click(function(t){t.preventDefault();var i=e(this).data("video-id");e("."+i).dialog({dialogClass:"wp-dialog yit-dialog yit-video-dialog",modal:!0,closeOnEscape:!0,width:"auto",resizable:!1,draggable:!1,create:function(){e(this).css("maxWidth","853px")},open:function(){e(".ui-widget-overlay").bind("click",function(){e(this).siblings(".ui-dialog").find(".ui-dialog-content").dialog("close")})}}),e(".ui-dialog :button").blur()})}),e(document).ready(function(){e(".codemirror").each(function(t,i){var n=CodeMirror.fromTextArea(i,{lineNumbers:1,mode:"javascript",showCursorWhenSelecting:!0});e(i).data("codemirrorInstance",n)})}),e(document).ready(function(){e(".google-analytic-generate").click(function(){var t=e("#"+e(this).data("textarea")).data("codemirrorInstance"),i=e("#"+e(this).data("input")).val(),n=e(this).data("basename"),a="(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n";a+="(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement( o ),\n",a+="m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n",a+="})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n",a+="ga('create', '"+i+"', '"+n+"');\n",a+="ga('send', 'pageview');\n",t.replaceRange(a,t.getCursor("start"),t.getCursor("end"))})})}(jQuery);
 
 
 
 
 
 
 
 
 
1
+ (function(a){var l=function(){var b="";a(this).attr("multiple")?(a(this).children("option:selected").each(function(c,d){0!=c&&(b+=", ");b+=a(d).text()}),""==b&&a(this).children().children("option:selected").each(function(c,d){0!=c&&(b+=", ");b+=a(d).text()})):(b=a(this).children("option:selected").text(),""==b&&(b=a(this).children().children("option:selected").text()));0>=a(this).parent().find("span").length&&a(this).before("<span></span>");a(this).parent().children("span").replaceWith("<span>"+b+
2
+ "</span>")};a(".plugin-option .select_wrapper select").not(".chosen").each(l).change(l);a(".plugin-option .select_wrapper").click(function(b){b.stopPropagation();a(this).find("select[multiple]").not(".chosen").toggle()});a(".plugin-option .select_wrapper select[multiple]").not(".chosen").click(function(a){a.stopPropagation()});a(window).click(function(){a(".plugin-option .select_wrapper select[multiple]").not(".chosen").hide()});a(".plugin-option .chosen .select_wrapper select").chosen();a(".plugin-option .on_off_container span").on("click",
3
+ function(){var b=a(this).prev("input");b.prop("checked")?b.prop("checked",!1).attr("value","no").removeClass("onoffchecked"):b.prop("checked",!0).attr("value","yes").addClass("onoffchecked");b.change()});a(".plugin-option .slider_container .ui-slider-horizontal").each(function(){var b=a(this).data("val"),c=a(this).data("min"),d=a(this).data("max"),e=a(this).data("step"),f=a(this).data("labels");a(this).slider({value:b,min:c,max:d,range:"min",step:e,slide:function(b,c){a(this).find("input").val(c.value);
4
+ a(this).siblings(".feedback").find("strong").text(c.value+f)}})});"undefined"!==typeof wp&&"undefined"!==typeof wp.media&&(a(".plugin-option .upload_img_url").change(function(){var b=a(this).val(),c=a(this).parents().siblings(".upload_img_preview");/(http|ftp|https):\/\/[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico)/.test(b)?c.html('<img src="'+b+'" style="max-width:600px; max-height:300px;" />'):c.html("")}).trigger("change"),a(document).on("click",".plugin-option .upload_button",function(b){b.preventDefault();
5
+ var c,d=a(this).attr("id").replace(/-button$/,"");c||(b=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})],c=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:b}),c.on("select",function(){var b=c.state().get("selection").first().toJSON();a("#"+d).val(b.url);a("#"+d+"-yith-attachment-id")&&a("#"+d+"-yith-attachment-id").val(b.id);a(".plugin-option .upload_img_url").trigger("change")}));
6
+ c.open()}),a(document).on("click",".plugin-option .upload_button_reset",function(b){var c=a(this);b=c.attr("id");c=c.attr("id").replace(/-button_reset$/,"");b=a("#"+b).data("default");a("#"+c).val(b);a(".plugin-option .upload_img_url").trigger("change")}));a(".plugin-option .add_media").on("click",function(){});a("[data-field]").each(function(){var b=a(this),c="#"+b.data("field"),d="#"+b.data("dep"),e=b.data("value");a(d).on("change",function(){var b=d,g=e.toString(),h=!0;if("string"==typeof b){":radio"==
7
+ b.substr(0,6)&&(b+=":checked");for(var g=g.split(","),k=0;k<g.length;k++)if(a(b).val()!=g[k])h=!1;else{h=!0;break}}h?a(c+"-container").closest("tr").show():a(c+"-container").closest("tr").hide()}).change()});a(".rm_connectedlist").each(function(){var b=a(this).find("ul"),c=a(this).find(":hidden");b.sortable({connectWith:b,update:function(d,e){var f={};b.each(function(){var b={};a(this).children().each(function(){b[a(this).data("option")]=a(this).text()});f[a(this).data("list")]=b});c.val(JSON.stringify(f).replace(/[\\"']/g,
8
+ "\\$&").replace(/\u0000/g,"\\0"))}}).disableSelection()});a(document).ready(function(){a(".yith-video-link").click(function(b){b.preventDefault();b=a(this).data("video-id");a("."+b).dialog({dialogClass:"wp-dialog yit-dialog yit-video-dialog",modal:!0,closeOnEscape:!0,width:"auto",resizable:!1,draggable:!1,create:function(b,d){a(this).css("maxWidth","853px")},open:function(b,d){a(".ui-widget-overlay").bind("click",function(){a(this).siblings(".ui-dialog").find(".ui-dialog-content").dialog("close")})}});
9
+ a(".ui-dialog :button").blur()})});a(document).ready(function(){a(".codemirror").each(function(b,c){var d=CodeMirror.fromTextArea(c,{lineNumbers:1,mode:"javascript",showCursorWhenSelecting:!0});a(c).data("codemirrorInstance",d)})});a(document).ready(function(){a(".google-analytic-generate").click(function(){var b=a("#"+a(this).data("textarea")).data("codemirrorInstance"),c=a("#"+a(this).data("input")).val(),d=a(this).data("basename"),e;e="(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement( o ),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n";
10
+ e+="})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n";e+="ga('create', '"+c+"', '"+d+"');\n";e+="ga('send', 'pageview');\n";b.replaceRange(e,b.getCursor("start"),b.getCursor("end"))})})})(jQuery);
plugin-fw/init.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
- * Version: 2.1
5
  * Author: Yithemes
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
@@ -20,20 +20,20 @@
20
  */
21
 
22
 
23
- if ( ! defined( 'ABSPATH' ) ) {
24
  exit;
25
  } // Exit if accessed directly
26
 
27
- if ( ! function_exists( 'yit_maybe_plugin_fw_loader' ) ) {
28
  /**
29
  * YITH WooCommerce Ajax Navigation
30
  *
31
  * @since 1.0.0
32
  */
33
- function yit_maybe_plugin_fw_loader( $plugin_path ) {
34
  global $plugin_fw_data;
35
 
36
- $default_headers = array(
37
  'Name' => 'Framework Name',
38
  'Version' => 'Version',
39
  'Author' => 'Author',
@@ -41,19 +41,17 @@ if ( ! function_exists( 'yit_maybe_plugin_fw_loader' ) ) {
41
  'DomainPath' => 'Domain Path',
42
  );
43
 
44
- $framework_data = get_file_data( trailingslashit( $plugin_path ) .'plugin-fw/init.php', $default_headers );
45
- $plugin_fw_main_file = trailingslashit( $plugin_path ) . 'plugin-fw/yit-plugin.php';
46
 
47
- if( ! empty( $plugin_fw_data ) ){
48
- foreach( $plugin_fw_data as $version => $path ){
49
- if( version_compare( $version, $framework_data['Version'], '<' ) ){
50
- $plugin_fw_data = array( $framework_data['Version'] => $plugin_fw_main_file );
51
  }
52
  }
53
- }
54
-
55
- else {
56
- $plugin_fw_data = array( $framework_data['Version'] => $plugin_fw_main_file );
57
  }
58
  }
59
  }
1
  <?php
2
  /**
3
  * Framework Name: YIT Plugin Framework
4
+ * Version: 2.9.6
5
  * Author: Yithemes
6
  * Text Domain: yith-plugin-fw
7
  * Domain Path: /languages/
20
  */
21
 
22
 
23
+ if ( ! defined ( 'ABSPATH' ) ) {
24
  exit;
25
  } // Exit if accessed directly
26
 
27
+ if ( ! function_exists ( 'yit_maybe_plugin_fw_loader' ) ) {
28
  /**
29
  * YITH WooCommerce Ajax Navigation
30
  *
31
  * @since 1.0.0
32
  */
33
+ function yit_maybe_plugin_fw_loader ( $plugin_path ) {
34
  global $plugin_fw_data;
35
 
36
+ $default_headers = array (
37
  'Name' => 'Framework Name',
38
  'Version' => 'Version',
39
  'Author' => 'Author',
41
  'DomainPath' => 'Domain Path',
42
  );
43
 
44
+ $framework_data = get_file_data ( trailingslashit ( $plugin_path ) . 'plugin-fw/init.php', $default_headers );
45
+ $plugin_fw_main_file = trailingslashit ( $plugin_path ) . 'plugin-fw/yit-plugin.php';
46
 
47
+ if ( ! empty( $plugin_fw_data ) ) {
48
+ foreach ( $plugin_fw_data as $version => $path ) {
49
+ if ( version_compare ( $version, $framework_data[ 'Version' ], '<' ) ) {
50
+ $plugin_fw_data = array ( $framework_data[ 'Version' ] => $plugin_fw_main_file );
51
  }
52
  }
53
+ } else {
54
+ $plugin_fw_data = array ( $framework_data[ 'Version' ] => $plugin_fw_main_file );
 
 
55
  }
56
  }
57
  }
plugin-fw/languages/yith-plugin-fw-it_IT.mo CHANGED
Binary file
plugin-fw/languages/yith-plugin-fw-it_IT.po CHANGED
@@ -4,15 +4,15 @@ 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: 2015-05-11 17:13+0100\n"
8
- "PO-Revision-Date: 2015-07-24 16:13+0100\n"
9
  "Last-Translator: \n"
10
- "Language-Team: Your Inspiration Themes <info@yithemes.com>\n"
11
- "Language: en\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\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"
@@ -136,8 +136,9 @@ msgid "Type"
136
  msgstr "Tipologia"
137
 
138
  #: lib/yit-cpt-unlimited.php:1052
139
- msgid "Layout for this "
140
- msgstr "Layout per questo"
 
141
 
142
  #: lib/yit-cpt-unlimited.php:1058
143
  msgid "Rewrite"
@@ -220,10 +221,10 @@ msgid "Add %s from images"
220
  msgstr "Aggiungi %s dalla immagini"
221
 
222
  #: lib/yit-cpt-unlimited.php:1633
223
- msgid "Add with multiupload"
224
- msgstr "Aggiungi con caricamento multiplo"
225
 
226
- #: lib/yit-plugin-panel-wc.php:295
227
  msgid "The changes you have made will be lost if you leave this page."
228
  msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
229
 
@@ -231,71 +232,71 @@ msgstr "Perderai tutti i cambiamenti effettuati se lasci questa pagina."
231
  msgid "Plugin Settings"
232
  msgstr "Impostazioni plugin"
233
 
234
- #: lib/yit-plugin-panel.php:95 lib/yit-plugin-subpanel.php:101
235
  msgid "YIT Plugins"
236
  msgstr "YIT Plugins"
237
 
238
- #: lib/yit-plugin-panel.php:292 lib/yit-plugin-subpanel.php:142
239
  #: templates/panel/woocommerce/woocommerce-form.php:5
240
  msgid "Save Changes"
241
  msgstr "Salva modifiche"
242
 
243
- #: lib/yit-plugin-panel.php:295 templates/panel/woocommerce/woocommerce-form.php:8
244
  msgid "If you continue with this action, you will reset all options in this page."
245
  msgstr ""
246
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
247
  "reimpostate."
248
 
249
- #: lib/yit-plugin-panel.php:297 lib/yit-plugin-subpanel.php:147
250
- msgid "Reset to Default"
251
- msgstr "Ripristina impostazioni iniziali"
252
 
253
- #: lib/yit-plugin-panel.php:297 lib/yit-plugin-subpanel.php:147
254
- #: templates/panel/woocommerce/woocommerce-form.php:10
255
  msgid "Are you sure?"
256
  msgstr "Sei sicuro?"
257
 
258
- #: lib/yit-plugin-panel.php:431
259
  msgid "The element you have entered already exists. Please, enter another name."
260
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
261
 
262
- #: lib/yit-plugin-panel.php:432
263
  msgid "Settings saved"
264
  msgstr "Impostazioni salvate"
265
 
266
- #: lib/yit-plugin-panel.php:433
267
  msgid "Settings reset"
268
  msgstr "Impostazioni azzerate"
269
 
270
- #: lib/yit-plugin-panel.php:434
271
  msgid "Element deleted correctly."
272
  msgstr "Elemento rimosso correttamente."
273
 
274
- #: lib/yit-plugin-panel.php:435 lib/yit-plugin-panel.php:436
275
  msgid "Element updated correctly."
276
  msgstr "Elemento aggiornato correttamente."
277
 
278
- #: lib/yit-plugin-panel.php:437
279
  msgid "Database imported correctly."
280
  msgstr "Database importato correttamente."
281
 
282
- #: lib/yit-plugin-panel.php:438
283
  msgid "An error has occurred during import. Please try again."
284
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
285
 
286
- #: lib/yit-plugin-panel.php:439
287
  msgid "The added file is not valid."
288
  msgstr "Il file aggiunto non è valido."
289
 
290
- #: lib/yit-plugin-panel.php:440
291
  msgid "Sorry, import is disabled."
292
  msgstr "Ci dispiace, l'importazione è disabilitata."
293
 
294
- #: lib/yit-plugin-panel.php:441
295
  msgid "Sorting successful."
296
  msgstr "Ordinamento effettuato con successo."
297
 
298
- #: lib/yit-plugin-subpanel.php:145
299
  msgid ""
300
  "If you continue with this action, you will reset all the options in this page."
301
  msgstr ""
@@ -367,19 +368,19 @@ msgstr ""
367
  msgid "Update now."
368
  msgstr "Aggiorna adesso."
369
 
370
- #: lib/yit-upgrade.php:230
371
  msgid "Yithemes Repository"
372
  msgstr "Repository YIThemes"
373
 
374
- #: lib/yit-upgrade.php:264
375
  msgid "Invalid URL Provided."
376
  msgstr "L'URL inserito non è valido."
377
 
378
- #: lib/yit-upgrade.php:277
379
  msgid "Could not create Temporary file."
380
  msgstr "Non è stato possibile creare il file temporaneo."
381
 
382
- #: lib/yit-upgrade.php:419
383
  #, php-format
384
  msgid ""
385
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
@@ -388,7 +389,7 @@ msgstr ""
388
  "È disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox yit-"
389
  "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</a>."
390
 
391
- #: lib/yit-upgrade.php:421
392
  #, php-format
393
  msgid ""
394
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
@@ -401,21 +402,16 @@ msgstr ""
401
  "<em>Per poter usufruire degli aggiornamenti automatici è necessario attivare il "
402
  "plugin su un solo sito.</em>"
403
 
404
- #: lib/yit-upgrade.php:423
405
  #, php-format
406
  msgid ""
407
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
408
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
409
- "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"Licence "
410
  "activation\">activate</a> your copy of %6s.</em>"
411
  msgstr ""
412
- "È disponibile una nuova versioni di %1$s. <a href=\"%2$s\" class=\"thickbox yit-"
413
- "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</a>. "
414
- "<em>Gli aggiornamenti automatici non sono disponibili per questo plugi, per "
415
- "favore, <a href=\"%5$s\" title=\"Licence activation\">attiva</a> la tua copia di "
416
- "%6s.</em>"
417
 
418
- #: lib/yit-upgrade.php:425
419
  #, php-format
420
  msgid ""
421
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
@@ -426,83 +422,111 @@ msgstr ""
426
  "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</a> "
427
  "oppure <a href=\"%5$s\">aggiorna adesso</a>."
428
 
429
- #: lib/yit-upgrade.php:498
430
  msgid "You can't update the plugins for this site."
431
  msgstr "Non è possibile aggiornare i plugin per questo sito."
432
 
433
- #: lib/yit-upgrade.php:502
434
  msgid "You do not have sufficient permissions to update the plugins for this site."
435
  msgstr ""
436
  "Non sei in possesso delle autorizzazioni necessarie per aggiornare i plugin in "
437
  "questo sito."
438
 
439
- #: lib/yit-upgrade.php:509
440
  msgid "Update Plugin"
441
  msgstr "Aggiorna plugin"
442
 
443
- #: licence/lib/yit-licence.php:161
444
  #, php-format
445
  msgctxt "%s = field name"
446
  msgid "%s field cannot be empty"
447
  msgstr "Il campo %s non può essere vuoto"
448
 
449
- #: licence/lib/yit-licence.php:162
450
  #, php-format
451
  msgid "%s and %s fields cannot be empty"
452
  msgstr "I campi %s e %s non possono essere vuoti"
453
 
454
- #: licence/lib/yit-licence.php:163
455
  msgid "Unable to contact the remote server, please try again later. Thanks!"
456
  msgstr "Impossibile contattare il server remoto, prova più tardi. Grazie!"
457
 
458
- #: licence/lib/yit-licence.php:548
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  msgid "Invalid Request"
460
  msgstr "Richiesta non valida"
461
 
462
- #: licence/lib/yit-licence.php:549
463
- msgid "Invalid licence key"
464
- msgstr "Chiave di licenza non valida"
465
 
466
- #: licence/lib/yit-licence.php:550
467
  msgid "Software has been deactivated"
468
  msgstr "Il software è stato disattivato"
469
 
470
- #: licence/lib/yit-licence.php:551
471
  msgid "Maximum number of activations exceeded"
472
  msgstr "Hai raggiunto il numero massimo di attivazioni"
473
 
474
- #: licence/lib/yit-licence.php:552
475
  msgid "Invalid instance ID"
476
  msgstr "Istanza ID non valida"
477
 
478
- #: licence/lib/yit-licence.php:553
479
  msgid "Invalid security key"
480
  msgstr "Chiave di sicurezza non valida"
481
 
482
- #: licence/lib/yit-licence.php:554
483
- msgid "Licence key has expired"
484
- msgstr "Questa chiave di licenza è scaduta"
 
 
 
 
 
 
 
 
 
 
 
 
485
 
486
- #: licence/lib/yit-licence.php:555
487
- msgid "Licence key has been banned"
488
- msgstr "Questa chiave di licenza è stata bloccata"
489
 
490
- #: licence/lib/yit-plugin-licence.php:64 licence/lib/yit-plugin-licence.php:65
491
- #: licence/lib/yit-theme-licence.php:64 licence/lib/yit-theme-licence.php:65
492
- #: licence/lib/yit-theme-licence.php:107 licence/lib/yit-theme-licence.php:108
493
- msgid "Licence Activation"
494
- msgstr "Attivazione licenza"
495
 
496
- #: licence/lib/yit-theme-licence.php:115 licence/lib/yit-theme-licence.php:116
497
  #, php-format
498
  msgid "%s"
499
  msgstr "%s"
500
 
501
- #: licence/templates/panel/activation/activation-panel.php:19
502
- msgid "Yithemes Licence Activation"
503
- msgstr "Attivazione licenza YIThemes"
504
-
505
- #: licence/templates/panel/activation/activation-panel.php:23
506
  msgid ""
507
  "I cannot find the license key for activating the theme I have bought some time "
508
  "ago. Where can I find it?"
@@ -510,30 +534,25 @@ msgstr ""
510
  "Non riesco a trovare la chiave di licenza per l'attivazione del tema che ho "
511
  "acquistato diverso tempo fa. Dove posso trovarla?"
512
 
513
- #: licence/templates/panel/activation/activation-panel.php:26
514
  msgid ""
515
  "If you have purchased one of our products before 27 January 2015, you can benefit "
516
  "from support and updates (the services offered with the license)\n"
517
- " until 27 January 2016 and you do not have to purchase it again to get "
518
- "a new license key, because, before this date, your license used to be activated "
519
- "automatically by our system.\n"
520
- " After 27 January 2016, instead, if you want to benefit from support "
521
- "and updates you have to buy a new license and activate it through the license key "
522
- "you will be\n"
523
- " provided with and that you can find in your YIThemes account, in "
524
- "section \"My licenses\"."
525
- msgstr ""
526
- "Se hai acquistato un nostro prodotto prima del 27 gennaio 2015 potrai accedere al "
527
- "supporto e scaricare gli aggiornamenti fino al 27 gennaio 2016 e non avrai bisogno "
528
- "di una chiave di licenza,\n"
529
- "in quanto la tua licenza prima di questa data veniva attivata in modo automatico "
530
- "dal nostro sistema.\n"
531
- "Dopo il 27 gennaio 2016, invece, per poter usufruire del servizio di supporto e "
532
- "degli aggiornamenti dovrai riacquistare il prodotto e\n"
533
- "attivarlo con la chiave di licenza che ti sarà fornita e che puoi trovare sul tuo "
534
- "account YIThemes, alla voce \"Le mie licenze\"."
535
-
536
- #: licence/templates/panel/activation/activation-panel.php:37
537
  msgid ""
538
  "Have you updated your licenses? Have you asked for an extension? Update "
539
  "information concerning your products."
@@ -541,71 +560,75 @@ msgstr ""
541
  "Hai aggiornato la tua licenza? Hai richiesto un'estensione? Aggiorna le "
542
  "informazioni dei tuoi prodotti."
543
 
544
- #: licence/templates/panel/activation/activation-panel.php:39
545
- msgid "Update licence information"
546
- msgstr "Aggiorna le informazioni di licenza"
547
 
548
- #: licence/templates/panel/activation/activation-panel.php:49
549
- msgid "Products to be activated"
550
- msgstr "Prodotti da attivare"
 
 
551
 
552
- #: licence/templates/panel/activation/activation-panel.php:68
553
  msgid "Activate"
554
  msgstr "Attiva"
555
 
556
- #: licence/templates/panel/activation/activation-panel.php:87
557
  msgid "Activated"
558
  msgstr "Attivato"
559
 
560
- #: licence/templates/panel/activation/activation-panel.php:91
561
- #: licence/templates/panel/activation/activation-panel.php:123
562
- #: licence/templates/panel/activation/activation-panel.php:147
563
  msgid "Product Name"
564
  msgstr "Nome prodotto"
565
 
566
- #: licence/templates/panel/activation/activation-panel.php:92
567
- #: licence/templates/panel/activation/activation-panel.php:124
568
- #: licence/templates/panel/activation/activation-panel.php:148
569
- #: templates/metaboxes/types/contactform.php:148
570
- #: templates/metaboxes/types/contactform.php:340
571
- msgid "Email"
572
- msgstr "Email"
573
-
574
  #: licence/templates/panel/activation/activation-panel.php:93
575
- #: licence/templates/panel/activation/activation-panel.php:125
576
- #: licence/templates/panel/activation/activation-panel.php:149
577
- msgid "Licence Key"
578
- msgstr "Chiave di licenza"
579
-
580
- #: licence/templates/panel/activation/activation-panel.php:94
581
- #: licence/templates/panel/activation/activation-panel.php:150
582
  msgid "Expires"
583
  msgstr "Scadenza"
584
 
585
- #: licence/templates/panel/activation/activation-panel.php:95
586
  msgid "Remaining"
587
  msgstr "Tempo rimanente"
588
 
589
- #: licence/templates/panel/activation/activation-panel.php:96
590
- #: licence/templates/panel/activation/activation-panel.php:109
591
- #: licence/templates/panel/activation/activation-panel.php:151
592
- #: licence/templates/panel/activation/activation-panel.php:161
593
- msgid "Renew"
594
- msgstr "Rinnova"
595
 
596
- #: licence/templates/panel/activation/activation-panel.php:107
 
 
 
 
597
  #, php-format
598
  msgid "%1s out of %2s"
599
  msgstr "%1s di %2s"
600
 
601
- #: licence/templates/panel/activation/activation-panel.php:119
 
 
 
 
 
 
 
 
 
 
602
  msgid "Banned"
603
  msgstr "Bloccato"
604
 
605
- #: licence/templates/panel/activation/activation-panel.php:143
606
  msgid "Expired"
607
  msgstr "Non più valido"
608
 
 
 
 
 
609
  #: templates/metaboxes/types/ajax-products.php:23
610
  msgid "Search for a product"
611
  msgstr "Cerca un prodotto"
@@ -802,7 +825,7 @@ msgstr "Icona"
802
  #: templates/metaboxes/types/icon-list.php:69
803
  #: templates/metaboxes/types/select-icon.php:33
804
  #: templates/metaboxes/types/upload.php:21 templates/panel/types/upload.php:31
805
- #: templates/panel/woocommerce/woocommerce-upload.php:35
806
  msgid "Upload"
807
  msgstr "Carica"
808
 
@@ -970,10 +993,77 @@ msgstr "Corsivo"
970
  msgid "Italic bold"
971
  msgstr "Grassetto corsivo"
972
 
973
- #: templates/panel/woocommerce/woocommerce-form.php:10
974
  msgid "Reset Defaults"
975
  msgstr "Ripristina impostazioni iniziali"
976
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
977
  #~ msgid "%field_1% and %field_2% fields cannot be empty"
978
  #~ msgstr "I campi %field_1% e %field_2% non possono essere vuoti"
979
 
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: 2015-11-16 12:23+0100\n"
8
+ "PO-Revision-Date: 2015-11-16 12:24+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"
136
  msgstr "Tipologia"
137
 
138
  #: lib/yit-cpt-unlimited.php:1052
139
+ #, php-format
140
+ msgid "Layout for this %s"
141
+ msgstr ""
142
 
143
  #: lib/yit-cpt-unlimited.php:1058
144
  msgid "Rewrite"
221
  msgstr "Aggiungi %s dalla immagini"
222
 
223
  #: lib/yit-cpt-unlimited.php:1633
224
+ msgid "Upload multiple files"
225
+ msgstr ""
226
 
227
+ #: lib/yit-plugin-panel-wc.php:336
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
 
232
  msgid "Plugin Settings"
233
  msgstr "Impostazioni plugin"
234
 
235
+ #: lib/yit-plugin-panel.php:96 lib/yit-plugin-subpanel.php:101
236
  msgid "YIT Plugins"
237
  msgstr "YIT Plugins"
238
 
239
+ #: lib/yit-plugin-panel.php:288 lib/yit-plugin-subpanel.php:143
240
  #: templates/panel/woocommerce/woocommerce-form.php:5
241
  msgid "Save Changes"
242
  msgstr "Salva modifiche"
243
 
244
+ #: lib/yit-plugin-panel.php:291 templates/panel/woocommerce/woocommerce-form.php:8
245
  msgid "If you continue with this action, you will reset all options in this page."
246
  msgstr ""
247
  "Se prosegui con questa azione, tutte le opzioni di questa pagina saranno "
248
  "reimpostate."
249
 
250
+ #: lib/yit-plugin-panel.php:293 lib/yit-plugin-subpanel.php:148
251
+ msgid "Reset to default"
252
+ msgstr ""
253
 
254
+ #: lib/yit-plugin-panel.php:293 lib/yit-plugin-subpanel.php:148
255
+ #: templates/panel/woocommerce/woocommerce-form.php:11
256
  msgid "Are you sure?"
257
  msgstr "Sei sicuro?"
258
 
259
+ #: lib/yit-plugin-panel.php:427
260
  msgid "The element you have entered already exists. Please, enter another name."
261
  msgstr "L'elemento inserito esiste già. Per favore, inserisci un altro nome."
262
 
263
+ #: lib/yit-plugin-panel.php:428
264
  msgid "Settings saved"
265
  msgstr "Impostazioni salvate"
266
 
267
+ #: lib/yit-plugin-panel.php:429
268
  msgid "Settings reset"
269
  msgstr "Impostazioni azzerate"
270
 
271
+ #: lib/yit-plugin-panel.php:430
272
  msgid "Element deleted correctly."
273
  msgstr "Elemento rimosso correttamente."
274
 
275
+ #: lib/yit-plugin-panel.php:431 lib/yit-plugin-panel.php:432
276
  msgid "Element updated correctly."
277
  msgstr "Elemento aggiornato correttamente."
278
 
279
+ #: lib/yit-plugin-panel.php:433
280
  msgid "Database imported correctly."
281
  msgstr "Database importato correttamente."
282
 
283
+ #: lib/yit-plugin-panel.php:434
284
  msgid "An error has occurred during import. Please try again."
285
  msgstr "Si è verificato un errore durante l'importazione. Prova di nuovo."
286
 
287
+ #: lib/yit-plugin-panel.php:435
288
  msgid "The added file is not valid."
289
  msgstr "Il file aggiunto non è valido."
290
 
291
+ #: lib/yit-plugin-panel.php:436
292
  msgid "Sorry, import is disabled."
293
  msgstr "Ci dispiace, l'importazione è disabilitata."
294
 
295
+ #: lib/yit-plugin-panel.php:437
296
  msgid "Sorting successful."
297
  msgstr "Ordinamento effettuato con successo."
298
 
299
+ #: lib/yit-plugin-subpanel.php:146
300
  msgid ""
301
  "If you continue with this action, you will reset all the options in this page."
302
  msgstr ""
368
  msgid "Update now."
369
  msgstr "Aggiorna adesso."
370
 
371
+ #: lib/yit-upgrade.php:250
372
  msgid "Yithemes Repository"
373
  msgstr "Repository YIThemes"
374
 
375
+ #: lib/yit-upgrade.php:284
376
  msgid "Invalid URL Provided."
377
  msgstr "L'URL inserito non è valido."
378
 
379
+ #: lib/yit-upgrade.php:297
380
  msgid "Could not create Temporary file."
381
  msgstr "Non è stato possibile creare il file temporaneo."
382
 
383
+ #: lib/yit-upgrade.php:439
384
  #, php-format
385
  msgid ""
386
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
389
  "È disponibile una nuova versione di %1$s. <a href=\"%2$s\" class=\"thickbox yit-"
390
  "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</a>."
391
 
392
+ #: lib/yit-upgrade.php:441
393
  #, php-format
394
  msgid ""
395
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
402
  "<em>Per poter usufruire degli aggiornamenti automatici è necessario attivare il "
403
  "plugin su un solo sito.</em>"
404
 
405
+ #: lib/yit-upgrade.php:443
406
  #, php-format
407
  msgid ""
408
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
409
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
410
+ "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"License "
411
  "activation\">activate</a> your copy of %6s.</em>"
412
  msgstr ""
 
 
 
 
 
413
 
414
+ #: lib/yit-upgrade.php:445
415
  #, php-format
416
  msgid ""
417
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
422
  "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</a> "
423
  "oppure <a href=\"%5$s\">aggiorna adesso</a>."
424
 
425
+ #: lib/yit-upgrade.php:518
426
  msgid "You can't update the plugins for this site."
427
  msgstr "Non è possibile aggiornare i plugin per questo sito."
428
 
429
+ #: lib/yit-upgrade.php:522
430
  msgid "You do not have sufficient permissions to update the plugins for this site."
431
  msgstr ""
432
  "Non sei in possesso delle autorizzazioni necessarie per aggiornare i plugin in "
433
  "questo sito."
434
 
435
+ #: lib/yit-upgrade.php:529
436
  msgid "Update Plugin"
437
  msgstr "Aggiorna plugin"
438
 
439
+ #: licence/lib/yit-licence.php:170
440
  #, php-format
441
  msgctxt "%s = field name"
442
  msgid "%s field cannot be empty"
443
  msgstr "Il campo %s non può essere vuoto"
444
 
445
+ #: licence/lib/yit-licence.php:171
446
  #, php-format
447
  msgid "%s and %s fields cannot be empty"
448
  msgstr "I campi %s e %s non possono essere vuoti"
449
 
450
+ #: licence/lib/yit-licence.php:172
451
  msgid "Unable to contact the remote server, please try again later. Thanks!"
452
  msgstr "Impossibile contattare il server remoto, prova più tardi. Grazie!"
453
 
454
+ #: licence/lib/yit-licence.php:173
455
+ #: licence/templates/panel/activation/activation-panel.php:89
456
+ #: licence/templates/panel/activation/activation-panel.php:164
457
+ #: licence/templates/panel/activation/activation-panel.php:195
458
+ #: templates/metaboxes/types/contactform.php:148
459
+ #: templates/metaboxes/types/contactform.php:340
460
+ msgid "Email"
461
+ msgstr "Email"
462
+
463
+ #: licence/lib/yit-licence.php:174
464
+ #: licence/templates/panel/activation/activation-panel.php:90
465
+ #: licence/templates/panel/activation/activation-panel.php:165
466
+ #: licence/templates/panel/activation/activation-panel.php:196
467
+ msgid "License Key"
468
+ msgstr ""
469
+
470
+ #: licence/lib/yit-licence.php:175
471
+ msgid "Are you sure you want to deactivate the license for current site?"
472
+ msgstr ""
473
+
474
+ #: licence/lib/yit-licence.php:638
475
  msgid "Invalid Request"
476
  msgstr "Richiesta non valida"
477
 
478
+ #: licence/lib/yit-licence.php:639
479
+ msgid "Invalid license key"
480
+ msgstr ""
481
 
482
+ #: licence/lib/yit-licence.php:640
483
  msgid "Software has been deactivated"
484
  msgstr "Il software è stato disattivato"
485
 
486
+ #: licence/lib/yit-licence.php:641
487
  msgid "Maximum number of activations exceeded"
488
  msgstr "Hai raggiunto il numero massimo di attivazioni"
489
 
490
+ #: licence/lib/yit-licence.php:642
491
  msgid "Invalid instance ID"
492
  msgstr "Istanza ID non valida"
493
 
494
+ #: licence/lib/yit-licence.php:643
495
  msgid "Invalid security key"
496
  msgstr "Chiave di sicurezza non valida"
497
 
498
+ #: licence/lib/yit-licence.php:644
499
+ msgid "License key has expired"
500
+ msgstr ""
501
+
502
+ #: licence/lib/yit-licence.php:645
503
+ msgid "License key has been banned"
504
+ msgstr ""
505
+
506
+ #: licence/lib/yit-licence.php:646
507
+ msgid "Great"
508
+ msgstr ""
509
+
510
+ #: licence/lib/yit-licence.php:646
511
+ msgid "License successfully activated"
512
+ msgstr ""
513
 
514
+ #: licence/lib/yit-licence.php:647
515
+ msgid "License key deactivated for website"
516
+ msgstr ""
517
 
518
+ #: licence/lib/yit-plugin-licence.php:68 licence/lib/yit-plugin-licence.php:69
519
+ #: licence/lib/yit-theme-licence.php:70 licence/lib/yit-theme-licence.php:71
520
+ #: licence/lib/yit-theme-licence.php:110 licence/lib/yit-theme-licence.php:111
521
+ msgid "License Activation"
522
+ msgstr ""
523
 
524
+ #: licence/lib/yit-theme-licence.php:118 licence/lib/yit-theme-licence.php:119
525
  #, php-format
526
  msgid "%s"
527
  msgstr "%s"
528
 
529
+ #: licence/lib/yit-theme-licence.php:160
 
 
 
 
530
  msgid ""
531
  "I cannot find the license key for activating the theme I have bought some time "
532
  "ago. Where can I find it?"
534
  "Non riesco a trovare la chiave di licenza per l'attivazione del tema che ho "
535
  "acquistato diverso tempo fa. Dove posso trovarla?"
536
 
537
+ #: licence/lib/yit-theme-licence.php:163
538
  msgid ""
539
  "If you have purchased one of our products before 27 January 2015, you can benefit "
540
  "from support and updates (the services offered with the license)\n"
541
+ " until 27 January 2016 and you do not have to purchase it again "
542
+ "to get a new license key, because, before this date, your license used to be "
543
+ "activated automatically by our system.\n"
544
+ " After 27 January 2016, instead, if you want to benefit from "
545
+ "support and updates you have to buy a new license and activate it through the "
546
+ "license key you will be\n"
547
+ " provided with and that you can find in your YIThemes account, "
548
+ "in section \"My licenses\"."
549
+ msgstr ""
550
+
551
+ #: licence/templates/panel/activation/activation-panel.php:22
552
+ msgid "Yithemes License Activation"
553
+ msgstr ""
554
+
555
+ #: licence/templates/panel/activation/activation-panel.php:28
 
 
 
 
 
556
  msgid ""
557
  "Have you updated your licenses? Have you asked for an extension? Update "
558
  "information concerning your products."
560
  "Hai aggiornato la tua licenza? Hai richiesto un'estensione? Aggiorna le "
561
  "informazioni dei tuoi prodotti."
562
 
563
+ #: licence/templates/panel/activation/activation-panel.php:30
564
+ msgid "Update license information"
565
+ msgstr ""
566
 
567
+ #: licence/templates/panel/activation/activation-panel.php:43
568
+ msgid "Product to activate"
569
+ msgid_plural "Products to activate"
570
+ msgstr[0] ""
571
+ msgstr[1] ""
572
 
573
+ #: licence/templates/panel/activation/activation-panel.php:62
574
  msgid "Activate"
575
  msgstr "Attiva"
576
 
577
+ #: licence/templates/panel/activation/activation-panel.php:81
578
  msgid "Activated"
579
  msgstr "Attivato"
580
 
581
+ #: licence/templates/panel/activation/activation-panel.php:87
582
+ #: licence/templates/panel/activation/activation-panel.php:162
583
+ #: licence/templates/panel/activation/activation-panel.php:192
584
  msgid "Product Name"
585
  msgstr "Nome prodotto"
586
 
 
 
 
 
 
 
 
 
587
  #: licence/templates/panel/activation/activation-panel.php:93
588
+ #: licence/templates/panel/activation/activation-panel.php:199
 
 
 
 
 
 
589
  msgid "Expires"
590
  msgstr "Scadenza"
591
 
592
+ #: licence/templates/panel/activation/activation-panel.php:96
593
  msgid "Remaining"
594
  msgstr "Tempo rimanente"
595
 
596
+ #: licence/templates/panel/activation/activation-panel.php:97
597
+ #: licence/templates/panel/activation/activation-panel.php:223
598
+ msgid "Membership"
599
+ msgstr ""
 
 
600
 
601
+ #: licence/templates/panel/activation/activation-panel.php:100
602
+ msgid "License Actions"
603
+ msgstr ""
604
+
605
+ #: licence/templates/panel/activation/activation-panel.php:125
606
  #, php-format
607
  msgid "%1s out of %2s"
608
  msgstr "%1s di %2s"
609
 
610
+ #: licence/templates/panel/activation/activation-panel.php:140
611
+ msgid "Deactivate"
612
+ msgstr ""
613
+
614
+ #: licence/templates/panel/activation/activation-panel.php:145
615
+ #: licence/templates/panel/activation/activation-panel.php:202
616
+ #: licence/templates/panel/activation/activation-panel.php:223
617
+ msgid "Renew"
618
+ msgstr "Rinnova"
619
+
620
+ #: licence/templates/panel/activation/activation-panel.php:158
621
  msgid "Banned"
622
  msgstr "Bloccato"
623
 
624
+ #: licence/templates/panel/activation/activation-panel.php:188
625
  msgid "Expired"
626
  msgstr "Non più valido"
627
 
628
+ #: licence/templates/panel/activation/activation-panel.php:223
629
+ msgid "License"
630
+ msgstr ""
631
+
632
  #: templates/metaboxes/types/ajax-products.php:23
633
  msgid "Search for a product"
634
  msgstr "Cerca un prodotto"
825
  #: templates/metaboxes/types/icon-list.php:69
826
  #: templates/metaboxes/types/select-icon.php:33
827
  #: templates/metaboxes/types/upload.php:21 templates/panel/types/upload.php:31
828
+ #: templates/panel/woocommerce/woocommerce-upload.php:40
829
  msgid "Upload"
830
  msgstr "Carica"
831
 
993
  msgid "Italic bold"
994
  msgstr "Grassetto corsivo"
995
 
996
+ #: templates/panel/woocommerce/woocommerce-form.php:11
997
  msgid "Reset Defaults"
998
  msgstr "Ripristina impostazioni iniziali"
999
 
1000
+ #~ msgid "Layout for this "
1001
+ #~ msgstr "Layout per questo"
1002
+
1003
+ #~ msgid "Add with multiupload"
1004
+ #~ msgstr "Aggiungi con caricamento multiplo"
1005
+
1006
+ #~ msgid "Reset to Default"
1007
+ #~ msgstr "Ripristina impostazioni iniziali"
1008
+
1009
+ #~ msgid ""
1010
+ #~ "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
1011
+ #~ "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
1012
+ #~ "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"Licence "
1013
+ #~ "activation\">activate</a> your copy of %6s.</em>"
1014
+ #~ msgstr ""
1015
+ #~ "È disponibile una nuova versioni di %1$s. <a href=\"%2$s\" class=\"thickbox yit-"
1016
+ #~ "changelog-button\" title=\"%3$s\">Visualizza i dettagli della versione %4$s</"
1017
+ #~ "a>. <em>Gli aggiornamenti automatici non sono disponibili per questo plugi, per "
1018
+ #~ "favore, <a href=\"%5$s\" title=\"Licence activation\">attiva</a> la tua copia "
1019
+ #~ "di %6s.</em>"
1020
+
1021
+ #~ msgid "Invalid licence key"
1022
+ #~ msgstr "Chiave di licenza non valida"
1023
+
1024
+ #~ msgid "Licence key has expired"
1025
+ #~ msgstr "Questa chiave di licenza è scaduta"
1026
+
1027
+ #~ msgid "Licence key has been banned"
1028
+ #~ msgstr "Questa chiave di licenza è stata bloccata"
1029
+
1030
+ #~ msgid "Licence Activation"
1031
+ #~ msgstr "Attivazione licenza"
1032
+
1033
+ #~ msgid "Yithemes Licence Activation"
1034
+ #~ msgstr "Attivazione licenza YIThemes"
1035
+
1036
+ #~ msgid ""
1037
+ #~ "If you have purchased one of our products before 27 January 2015, you can "
1038
+ #~ "benefit from support and updates (the services offered with the license)\n"
1039
+ #~ " until 27 January 2016 and you do not have to purchase it again to "
1040
+ #~ "get a new license key, because, before this date, your license used to be "
1041
+ #~ "activated automatically by our system.\n"
1042
+ #~ " After 27 January 2016, instead, if you want to benefit from support "
1043
+ #~ "and updates you have to buy a new license and activate it through the license "
1044
+ #~ "key you will be\n"
1045
+ #~ " provided with and that you can find in your YIThemes account, in "
1046
+ #~ "section \"My licenses\"."
1047
+ #~ msgstr ""
1048
+ #~ "Se hai acquistato un nostro prodotto prima del 27 gennaio 2015 potrai accedere "
1049
+ #~ "al supporto e scaricare gli aggiornamenti fino al 27 gennaio 2016 e non avrai "
1050
+ #~ "bisogno di una chiave di licenza,\n"
1051
+ #~ "in quanto la tua licenza prima di questa data veniva attivata in modo "
1052
+ #~ "automatico dal nostro sistema.\n"
1053
+ #~ "Dopo il 27 gennaio 2016, invece, per poter usufruire del servizio di supporto e "
1054
+ #~ "degli aggiornamenti dovrai riacquistare il prodotto e\n"
1055
+ #~ "attivarlo con la chiave di licenza che ti sarà fornita e che puoi trovare sul "
1056
+ #~ "tuo account YIThemes, alla voce \"Le mie licenze\"."
1057
+
1058
+ #~ msgid "Update licence information"
1059
+ #~ msgstr "Aggiorna le informazioni di licenza"
1060
+
1061
+ #~ msgid "Products to be activated"
1062
+ #~ msgstr "Prodotti da attivare"
1063
+
1064
+ #~ msgid "Licence Key"
1065
+ #~ msgstr "Chiave di licenza"
1066
+
1067
  #~ msgid "%field_1% and %field_2% fields cannot be empty"
1068
  #~ msgstr "I campi %field_1% e %field_2% non possono essere vuoti"
1069
 
plugin-fw/languages/yith-plugin-fw.pot CHANGED
@@ -1,10 +1,11 @@
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: 2015-05-05 10:38+0100\n"
8
  "PO-Revision-Date: 2015-05-05 10:38+0100\n"
9
  "Last-Translator: \n"
10
  "Language-Team: Your Inspiration Themes <info@yithemes.com>\n"
@@ -12,7 +13,7 @@ msgstr ""
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.7.6\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"
@@ -136,7 +137,8 @@ msgid "Type"
136
  msgstr ""
137
 
138
  #: lib/yit-cpt-unlimited.php:1052
139
- msgid "Layout for this "
 
140
  msgstr ""
141
 
142
  #: lib/yit-cpt-unlimited.php:1058
@@ -215,10 +217,10 @@ msgid "Add %s from images"
215
  msgstr ""
216
 
217
  #: lib/yit-cpt-unlimited.php:1633
218
- msgid "Add with multiupload"
219
  msgstr ""
220
 
221
- #: lib/yit-plugin-panel-wc.php:295
222
  msgid "The changes you have made will be lost if you leave this page."
223
  msgstr ""
224
 
@@ -226,69 +228,69 @@ msgstr ""
226
  msgid "Plugin Settings"
227
  msgstr ""
228
 
229
- #: lib/yit-plugin-panel.php:95 lib/yit-plugin-subpanel.php:101
230
  msgid "YIT Plugins"
231
  msgstr ""
232
 
233
- #: lib/yit-plugin-panel.php:292 lib/yit-plugin-subpanel.php:142
234
  #: templates/panel/woocommerce/woocommerce-form.php:5
235
  msgid "Save Changes"
236
  msgstr ""
237
 
238
- #: lib/yit-plugin-panel.php:295 templates/panel/woocommerce/woocommerce-form.php:8
239
  msgid "If you continue with this action, you will reset all options in this page."
240
  msgstr ""
241
 
242
- #: lib/yit-plugin-panel.php:297 lib/yit-plugin-subpanel.php:147
243
- msgid "Reset to Default"
244
  msgstr ""
245
 
246
- #: lib/yit-plugin-panel.php:297 lib/yit-plugin-subpanel.php:147
247
- #: templates/panel/woocommerce/woocommerce-form.php:10
248
  msgid "Are you sure?"
249
  msgstr ""
250
 
251
- #: lib/yit-plugin-panel.php:431
252
  msgid "The element you have entered already exists. Please, enter another name."
253
  msgstr ""
254
 
255
- #: lib/yit-plugin-panel.php:432
256
  msgid "Settings saved"
257
  msgstr ""
258
 
259
- #: lib/yit-plugin-panel.php:433
260
  msgid "Settings reset"
261
  msgstr ""
262
 
263
- #: lib/yit-plugin-panel.php:434
264
  msgid "Element deleted correctly."
265
  msgstr ""
266
 
267
- #: lib/yit-plugin-panel.php:435 lib/yit-plugin-panel.php:436
268
  msgid "Element updated correctly."
269
  msgstr ""
270
 
271
- #: lib/yit-plugin-panel.php:437
272
  msgid "Database imported correctly."
273
  msgstr ""
274
 
275
- #: lib/yit-plugin-panel.php:438
276
  msgid "An error has occurred during import. Please try again."
277
  msgstr ""
278
 
279
- #: lib/yit-plugin-panel.php:439
280
  msgid "The added file is not valid."
281
  msgstr ""
282
 
283
- #: lib/yit-plugin-panel.php:440
284
  msgid "Sorry, import is disabled."
285
  msgstr ""
286
 
287
- #: lib/yit-plugin-panel.php:441
288
  msgid "Sorting successful."
289
  msgstr ""
290
 
291
- #: lib/yit-plugin-subpanel.php:145
292
  msgid ""
293
  "If you continue with this action, you will reset all the options in this page."
294
  msgstr ""
@@ -347,26 +349,26 @@ msgstr ""
347
  msgid "Update now."
348
  msgstr ""
349
 
350
- #: lib/yit-upgrade.php:230
351
  msgid "Yithemes Repository"
352
  msgstr ""
353
 
354
- #: lib/yit-upgrade.php:264
355
  msgid "Invalid URL Provided."
356
  msgstr ""
357
 
358
- #: lib/yit-upgrade.php:277
359
  msgid "Could not create Temporary file."
360
  msgstr ""
361
 
362
- #: lib/yit-upgrade.php:419
363
  #, php-format
364
  msgid ""
365
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
366
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>."
367
  msgstr ""
368
 
369
- #: lib/yit-upgrade.php:421
370
  #, php-format
371
  msgid ""
372
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
@@ -375,16 +377,16 @@ msgid ""
375
  "updates.</em>"
376
  msgstr ""
377
 
378
- #: lib/yit-upgrade.php:423
379
  #, php-format
380
  msgid ""
381
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
382
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
383
- "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"Licence "
384
  "activation\">activate</a> your copy of %6s.</em>"
385
  msgstr ""
386
 
387
- #: lib/yit-upgrade.php:425
388
  #, php-format
389
  msgid ""
390
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
@@ -392,169 +394,207 @@ msgid ""
392
  "\">update now</a>."
393
  msgstr ""
394
 
395
- #: lib/yit-upgrade.php:498
396
  msgid "You can't update the plugins for this site."
397
  msgstr ""
398
 
399
- #: lib/yit-upgrade.php:502
400
  msgid "You do not have sufficient permissions to update the plugins for this site."
401
  msgstr ""
402
 
403
- #: lib/yit-upgrade.php:509
404
  msgid "Update Plugin"
405
  msgstr ""
406
 
407
- #: licence/lib/yit-licence.php:161
408
  #, php-format
409
- msgid "%field% field cannot be empty"
 
410
  msgstr ""
411
 
412
- #: licence/lib/yit-licence.php:162
413
- msgid "%field_1% and %field_2% fields cannot be empty"
 
414
  msgstr ""
415
 
416
- #: licence/lib/yit-licence.php:163
417
  msgid "Unable to contact the remote server, please try again later. Thanks!"
418
  msgstr ""
419
 
420
- #: licence/lib/yit-licence.php:548
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
  msgid "Invalid Request"
422
  msgstr ""
423
 
424
- #: licence/lib/yit-licence.php:549
425
- msgid "Invalid licence key"
426
  msgstr ""
427
 
428
- #: licence/lib/yit-licence.php:550
429
  msgid "Software has been deactivated"
430
  msgstr ""
431
 
432
- #: licence/lib/yit-licence.php:551
433
  msgid "Maximum number of activations exceeded"
434
  msgstr ""
435
 
436
- #: licence/lib/yit-licence.php:552
437
  msgid "Invalid instance ID"
438
  msgstr ""
439
 
440
- #: licence/lib/yit-licence.php:553
441
  msgid "Invalid security key"
442
  msgstr ""
443
 
444
- #: licence/lib/yit-licence.php:554
445
- msgid "Licence key has expired"
446
  msgstr ""
447
 
448
- #: licence/lib/yit-licence.php:555
449
- msgid "Licence key has been banned"
450
  msgstr ""
451
 
452
- #: licence/lib/yit-plugin-licence.php:64 licence/lib/yit-plugin-licence.php:65
453
- #: licence/lib/yit-theme-licence.php:64 licence/lib/yit-theme-licence.php:65
454
- #: licence/lib/yit-theme-licence.php:107 licence/lib/yit-theme-licence.php:108
455
- msgid "Licence Activation"
456
  msgstr ""
457
 
458
- #: licence/lib/yit-theme-licence.php:115 licence/lib/yit-theme-licence.php:116
459
- #, php-format
460
- msgid "%s"
461
  msgstr ""
462
 
463
- #: licence/templates/panel/activation/activation-panel.php:19
464
- msgid "Yithemes Licence Activation"
465
  msgstr ""
466
 
467
- #: licence/templates/panel/activation/activation-panel.php:23
 
 
 
 
 
 
 
 
 
 
 
468
  msgid ""
469
  "I cannot find the license key for activating the theme I have bought some time "
470
  "ago. Where can I find it?"
471
  msgstr ""
472
 
473
- #: licence/templates/panel/activation/activation-panel.php:26
474
  msgid ""
475
  "If you have purchased one of our products before 27 January 2015, you can benefit "
476
  "from support and updates (the services offered with the license)\n"
477
- " until 27 January 2016 and you do not have to purchase it again to get "
478
- "a new license key, because, before this date, your license used to be activated "
479
- "automatically by our system.\n"
480
- " After 27 January 2016, instead, if you want to benefit from support "
481
- "and updates you have to buy a new license and activate it through the license key "
482
- "you will be\n"
483
- " provided with and that you can find in your YIThemes account, in "
484
- "section \"My licenses\"."
485
  msgstr ""
486
 
487
- #: licence/templates/panel/activation/activation-panel.php:37
 
 
 
 
488
  msgid ""
489
  "Have you updated your licenses? Have you asked for an extension? Update "
490
  "information concerning your products."
491
  msgstr ""
492
 
493
- #: licence/templates/panel/activation/activation-panel.php:39
494
- msgid "Update licence information"
495
  msgstr ""
496
 
497
- #: licence/templates/panel/activation/activation-panel.php:49
498
- msgid "Products to be activated"
499
- msgstr ""
 
 
500
 
501
- #: licence/templates/panel/activation/activation-panel.php:68
502
  msgid "Activate"
503
  msgstr ""
504
 
505
- #: licence/templates/panel/activation/activation-panel.php:87
506
  msgid "Activated"
507
  msgstr ""
508
 
509
- #: licence/templates/panel/activation/activation-panel.php:91
510
- #: licence/templates/panel/activation/activation-panel.php:123
511
- #: licence/templates/panel/activation/activation-panel.php:147
512
  msgid "Product Name"
513
  msgstr ""
514
 
515
- #: licence/templates/panel/activation/activation-panel.php:92
516
- #: licence/templates/panel/activation/activation-panel.php:124
517
- #: licence/templates/panel/activation/activation-panel.php:148
518
- #: templates/metaboxes/types/contactform.php:148
519
- #: templates/metaboxes/types/contactform.php:340
520
- msgid "Email"
521
- msgstr ""
522
-
523
  #: licence/templates/panel/activation/activation-panel.php:93
524
- #: licence/templates/panel/activation/activation-panel.php:125
525
- #: licence/templates/panel/activation/activation-panel.php:149
526
- msgid "Licence Key"
527
- msgstr ""
528
-
529
- #: licence/templates/panel/activation/activation-panel.php:94
530
- #: licence/templates/panel/activation/activation-panel.php:150
531
  msgid "Expires"
532
  msgstr ""
533
 
534
- #: licence/templates/panel/activation/activation-panel.php:95
535
  msgid "Remaining"
536
  msgstr ""
537
 
538
- #: licence/templates/panel/activation/activation-panel.php:96
539
- #: licence/templates/panel/activation/activation-panel.php:109
540
- #: licence/templates/panel/activation/activation-panel.php:151
541
- #: licence/templates/panel/activation/activation-panel.php:161
542
- msgid "Renew"
 
 
543
  msgstr ""
544
 
545
- #: licence/templates/panel/activation/activation-panel.php:107
546
  #, php-format
547
  msgid "%1s out of %2s"
548
  msgstr ""
549
 
550
- #: licence/templates/panel/activation/activation-panel.php:119
 
 
 
 
 
 
 
 
 
 
551
  msgid "Banned"
552
  msgstr ""
553
 
554
- #: licence/templates/panel/activation/activation-panel.php:143
555
  msgid "Expired"
556
  msgstr ""
557
 
 
 
 
 
558
  #: templates/metaboxes/types/ajax-products.php:23
559
  msgid "Search for a product"
560
  msgstr ""
@@ -630,7 +670,7 @@ msgstr ""
630
 
631
  #: templates/metaboxes/types/contactform.php:77
632
  #: templates/metaboxes/types/contactform.php:269
633
- msgid "Title Field"
634
  msgstr ""
635
 
636
  #: templates/metaboxes/types/contactform.php:81
@@ -652,7 +692,7 @@ msgstr ""
652
 
653
  #: templates/metaboxes/types/contactform.php:95
654
  #: templates/metaboxes/types/contactform.php:287
655
- msgid "Type field"
656
  msgstr ""
657
 
658
  #: templates/metaboxes/types/contactform.php:103
@@ -747,7 +787,7 @@ msgstr ""
747
  #: templates/metaboxes/types/icon-list.php:69
748
  #: templates/metaboxes/types/select-icon.php:33
749
  #: templates/metaboxes/types/upload.php:21 templates/panel/types/upload.php:31
750
- #: templates/panel/woocommerce/woocommerce-upload.php:35
751
  msgid "Upload"
752
  msgstr ""
753
 
@@ -915,6 +955,6 @@ msgstr ""
915
  msgid "Italic bold"
916
  msgstr ""
917
 
918
- #: templates/panel/woocommerce/woocommerce-form.php:10
919
  msgid "Reset Defaults"
920
  msgstr ""
1
  # Copyright (C) 2015 YIThemes
2
  # This file is distributed under the same license as the YITH Plugin Starter package.
3
+ #, fuzzy
4
  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: 2015-11-16 12:23+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
  "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"
137
  msgstr ""
138
 
139
  #: lib/yit-cpt-unlimited.php:1052
140
+ #, php-format
141
+ msgid "Layout for this %s"
142
  msgstr ""
143
 
144
  #: lib/yit-cpt-unlimited.php:1058
217
  msgstr ""
218
 
219
  #: lib/yit-cpt-unlimited.php:1633
220
+ msgid "Upload multiple files"
221
  msgstr ""
222
 
223
+ #: lib/yit-plugin-panel-wc.php:336
224
  msgid "The changes you have made will be lost if you leave this page."
225
  msgstr ""
226
 
228
  msgid "Plugin Settings"
229
  msgstr ""
230
 
231
+ #: lib/yit-plugin-panel.php:96 lib/yit-plugin-subpanel.php:101
232
  msgid "YIT Plugins"
233
  msgstr ""
234
 
235
+ #: lib/yit-plugin-panel.php:288 lib/yit-plugin-subpanel.php:143
236
  #: templates/panel/woocommerce/woocommerce-form.php:5
237
  msgid "Save Changes"
238
  msgstr ""
239
 
240
+ #: lib/yit-plugin-panel.php:291 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:293 lib/yit-plugin-subpanel.php:148
245
+ msgid "Reset to default"
246
  msgstr ""
247
 
248
+ #: lib/yit-plugin-panel.php:293 lib/yit-plugin-subpanel.php:148
249
+ #: templates/panel/woocommerce/woocommerce-form.php:11
250
  msgid "Are you sure?"
251
  msgstr ""
252
 
253
+ #: lib/yit-plugin-panel.php:427
254
  msgid "The element you have entered already exists. Please, enter another name."
255
  msgstr ""
256
 
257
+ #: lib/yit-plugin-panel.php:428
258
  msgid "Settings saved"
259
  msgstr ""
260
 
261
+ #: lib/yit-plugin-panel.php:429
262
  msgid "Settings reset"
263
  msgstr ""
264
 
265
+ #: lib/yit-plugin-panel.php:430
266
  msgid "Element deleted correctly."
267
  msgstr ""
268
 
269
+ #: lib/yit-plugin-panel.php:431 lib/yit-plugin-panel.php:432
270
  msgid "Element updated correctly."
271
  msgstr ""
272
 
273
+ #: lib/yit-plugin-panel.php:433
274
  msgid "Database imported correctly."
275
  msgstr ""
276
 
277
+ #: lib/yit-plugin-panel.php:434
278
  msgid "An error has occurred during import. Please try again."
279
  msgstr ""
280
 
281
+ #: lib/yit-plugin-panel.php:435
282
  msgid "The added file is not valid."
283
  msgstr ""
284
 
285
+ #: lib/yit-plugin-panel.php:436
286
  msgid "Sorry, import is disabled."
287
  msgstr ""
288
 
289
+ #: lib/yit-plugin-panel.php:437
290
  msgid "Sorting successful."
291
  msgstr ""
292
 
293
+ #: lib/yit-plugin-subpanel.php:146
294
  msgid ""
295
  "If you continue with this action, you will reset all the options in this page."
296
  msgstr ""
349
  msgid "Update now."
350
  msgstr ""
351
 
352
+ #: lib/yit-upgrade.php:250
353
  msgid "Yithemes Repository"
354
  msgstr ""
355
 
356
+ #: lib/yit-upgrade.php:284
357
  msgid "Invalid URL Provided."
358
  msgstr ""
359
 
360
+ #: lib/yit-upgrade.php:297
361
  msgid "Could not create Temporary file."
362
  msgstr ""
363
 
364
+ #: lib/yit-upgrade.php:439
365
  #, php-format
366
  msgid ""
367
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
368
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>."
369
  msgstr ""
370
 
371
+ #: lib/yit-upgrade.php:441
372
  #, php-format
373
  msgid ""
374
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
377
  "updates.</em>"
378
  msgstr ""
379
 
380
+ #: lib/yit-upgrade.php:443
381
  #, php-format
382
  msgid ""
383
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
384
  "changelog-button\" title=\"%3$s\">View version %4$s details</a>. <em>Automatic "
385
+ "update is unavailable for this plugin, please <a href=\"%5$s\" title=\"License "
386
  "activation\">activate</a> your copy of %6s.</em>"
387
  msgstr ""
388
 
389
+ #: lib/yit-upgrade.php:445
390
  #, php-format
391
  msgid ""
392
  "There is a new version of %1$s available. <a href=\"%2$s\" class=\"thickbox yit-"
394
  "\">update now</a>."
395
  msgstr ""
396
 
397
+ #: lib/yit-upgrade.php:518
398
  msgid "You can't update the plugins for this site."
399
  msgstr ""
400
 
401
+ #: lib/yit-upgrade.php:522
402
  msgid "You do not have sufficient permissions to update the plugins for this site."
403
  msgstr ""
404
 
405
+ #: lib/yit-upgrade.php:529
406
  msgid "Update Plugin"
407
  msgstr ""
408
 
409
+ #: licence/lib/yit-licence.php:170
410
  #, php-format
411
+ msgctxt "%s = field name"
412
+ msgid "%s field cannot be empty"
413
  msgstr ""
414
 
415
+ #: licence/lib/yit-licence.php:171
416
+ #, php-format
417
+ msgid "%s and %s fields cannot be empty"
418
  msgstr ""
419
 
420
+ #: licence/lib/yit-licence.php:172
421
  msgid "Unable to contact the remote server, please try again later. Thanks!"
422
  msgstr ""
423
 
424
+ #: licence/lib/yit-licence.php:173
425
+ #: licence/templates/panel/activation/activation-panel.php:89
426
+ #: licence/templates/panel/activation/activation-panel.php:164
427
+ #: licence/templates/panel/activation/activation-panel.php:195
428
+ #: templates/metaboxes/types/contactform.php:148
429
+ #: templates/metaboxes/types/contactform.php:340
430
+ msgid "Email"
431
+ msgstr ""
432
+
433
+ #: licence/lib/yit-licence.php:174
434
+ #: licence/templates/panel/activation/activation-panel.php:90
435
+ #: licence/templates/panel/activation/activation-panel.php:165
436
+ #: licence/templates/panel/activation/activation-panel.php:196
437
+ msgid "License Key"
438
+ msgstr ""
439
+
440
+ #: licence/lib/yit-licence.php:175
441
+ msgid "Are you sure you want to deactivate the license for current site?"
442
+ msgstr ""
443
+
444
+ #: licence/lib/yit-licence.php:638
445
  msgid "Invalid Request"
446
  msgstr ""
447
 
448
+ #: licence/lib/yit-licence.php:639
449
+ msgid "Invalid license key"
450
  msgstr ""
451
 
452
+ #: licence/lib/yit-licence.php:640
453
  msgid "Software has been deactivated"
454
  msgstr ""
455
 
456
+ #: licence/lib/yit-licence.php:641
457
  msgid "Maximum number of activations exceeded"
458
  msgstr ""
459
 
460
+ #: licence/lib/yit-licence.php:642
461
  msgid "Invalid instance ID"
462
  msgstr ""
463
 
464
+ #: licence/lib/yit-licence.php:643
465
  msgid "Invalid security key"
466
  msgstr ""
467
 
468
+ #: licence/lib/yit-licence.php:644
469
+ msgid "License key has expired"
470
  msgstr ""
471
 
472
+ #: licence/lib/yit-licence.php:645
473
+ msgid "License key has been banned"
474
  msgstr ""
475
 
476
+ #: licence/lib/yit-licence.php:646
477
+ msgid "Great"
 
 
478
  msgstr ""
479
 
480
+ #: licence/lib/yit-licence.php:646
481
+ msgid "License successfully activated"
 
482
  msgstr ""
483
 
484
+ #: licence/lib/yit-licence.php:647
485
+ msgid "License key deactivated for website"
486
  msgstr ""
487
 
488
+ #: licence/lib/yit-plugin-licence.php:68 licence/lib/yit-plugin-licence.php:69
489
+ #: licence/lib/yit-theme-licence.php:70 licence/lib/yit-theme-licence.php:71
490
+ #: licence/lib/yit-theme-licence.php:110 licence/lib/yit-theme-licence.php:111
491
+ msgid "License Activation"
492
+ msgstr ""
493
+
494
+ #: licence/lib/yit-theme-licence.php:118 licence/lib/yit-theme-licence.php:119
495
+ #, php-format
496
+ msgid "%s"
497
+ msgstr ""
498
+
499
+ #: licence/lib/yit-theme-licence.php:160
500
  msgid ""
501
  "I cannot find the license key for activating the theme I have bought some time "
502
  "ago. Where can I find it?"
503
  msgstr ""
504
 
505
+ #: licence/lib/yit-theme-licence.php:163
506
  msgid ""
507
  "If you have purchased one of our products before 27 January 2015, you can benefit "
508
  "from support and updates (the services offered with the license)\n"
509
+ " until 27 January 2016 and you do not have to purchase it again "
510
+ "to get a new license key, because, before this date, your license used to be "
511
+ "activated automatically by our system.\n"
512
+ " After 27 January 2016, instead, if you want to benefit from "
513
+ "support and updates you have to buy a new license and activate it through the "
514
+ "license key you will be\n"
515
+ " provided with and that you can find in your YIThemes account, "
516
+ "in section \"My licenses\"."
517
  msgstr ""
518
 
519
+ #: licence/templates/panel/activation/activation-panel.php:22
520
+ msgid "Yithemes License Activation"
521
+ msgstr ""
522
+
523
+ #: licence/templates/panel/activation/activation-panel.php:28
524
  msgid ""
525
  "Have you updated your licenses? Have you asked for an extension? Update "
526
  "information concerning your products."
527
  msgstr ""
528
 
529
+ #: licence/templates/panel/activation/activation-panel.php:30
530
+ msgid "Update license information"
531
  msgstr ""
532
 
533
+ #: licence/templates/panel/activation/activation-panel.php:43
534
+ msgid "Product to activate"
535
+ msgid_plural "Products to activate"
536
+ msgstr[0] ""
537
+ msgstr[1] ""
538
 
539
+ #: licence/templates/panel/activation/activation-panel.php:62
540
  msgid "Activate"
541
  msgstr ""
542
 
543
+ #: licence/templates/panel/activation/activation-panel.php:81
544
  msgid "Activated"
545
  msgstr ""
546
 
547
+ #: licence/templates/panel/activation/activation-panel.php:87
548
+ #: licence/templates/panel/activation/activation-panel.php:162
549
+ #: licence/templates/panel/activation/activation-panel.php:192
550
  msgid "Product Name"
551
  msgstr ""
552
 
 
 
 
 
 
 
 
 
553
  #: licence/templates/panel/activation/activation-panel.php:93
554
+ #: licence/templates/panel/activation/activation-panel.php:199
 
 
 
 
 
 
555
  msgid "Expires"
556
  msgstr ""
557
 
558
+ #: licence/templates/panel/activation/activation-panel.php:96
559
  msgid "Remaining"
560
  msgstr ""
561
 
562
+ #: licence/templates/panel/activation/activation-panel.php:97
563
+ #: licence/templates/panel/activation/activation-panel.php:223
564
+ msgid "Membership"
565
+ msgstr ""
566
+
567
+ #: licence/templates/panel/activation/activation-panel.php:100
568
+ msgid "License Actions"
569
  msgstr ""
570
 
571
+ #: licence/templates/panel/activation/activation-panel.php:125
572
  #, php-format
573
  msgid "%1s out of %2s"
574
  msgstr ""
575
 
576
+ #: licence/templates/panel/activation/activation-panel.php:140
577
+ msgid "Deactivate"
578
+ msgstr ""
579
+
580
+ #: licence/templates/panel/activation/activation-panel.php:145
581
+ #: licence/templates/panel/activation/activation-panel.php:202
582
+ #: licence/templates/panel/activation/activation-panel.php:223
583
+ msgid "Renew"
584
+ msgstr ""
585
+
586
+ #: licence/templates/panel/activation/activation-panel.php:158
587
  msgid "Banned"
588
  msgstr ""
589
 
590
+ #: licence/templates/panel/activation/activation-panel.php:188
591
  msgid "Expired"
592
  msgstr ""
593
 
594
+ #: licence/templates/panel/activation/activation-panel.php:223
595
+ msgid "License"
596
+ msgstr ""
597
+
598
  #: templates/metaboxes/types/ajax-products.php:23
599
  msgid "Search for a product"
600
  msgstr ""
670
 
671
  #: templates/metaboxes/types/contactform.php:77
672
  #: templates/metaboxes/types/contactform.php:269
673
+ msgid "Field Title"
674
  msgstr ""
675
 
676
  #: templates/metaboxes/types/contactform.php:81
692
 
693
  #: templates/metaboxes/types/contactform.php:95
694
  #: templates/metaboxes/types/contactform.php:287
695
+ msgid "Field Type"
696
  msgstr ""
697
 
698
  #: templates/metaboxes/types/contactform.php:103
787
  #: templates/metaboxes/types/icon-list.php:69
788
  #: templates/metaboxes/types/select-icon.php:33
789
  #: templates/metaboxes/types/upload.php:21 templates/panel/types/upload.php:31
790
+ #: templates/panel/woocommerce/woocommerce-upload.php:40
791
  msgid "Upload"
792
  msgstr ""
793
 
955
  msgid "Italic bold"
956
  msgstr ""
957
 
958
+ #: templates/panel/woocommerce/woocommerce-form.php:11
959
  msgid "Reset Defaults"
960
  msgstr ""
plugin-fw/lib/yit-plugin-panel-wc.php CHANGED
@@ -319,22 +319,32 @@ if ( ! class_exists( 'YIT_Plugin_Panel_WooCommerce' ) ) {
319
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
320
  */
321
  public function admin_enqueue_scripts() {
322
- global $woocommerce;
323
 
324
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
325
 
326
  wp_enqueue_media();
327
  wp_enqueue_style( 'woocommerce_admin_styles', $woocommerce->plugin_url() . '/assets/css/admin.css', array(), $woocommerce->version );
328
- wp_enqueue_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $woocommerce->version );
329
- wp_enqueue_style ( 'wp-jquery-ui-dialog' );
 
 
 
 
 
330
 
331
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
332
  wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
333
  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 );
334
- wp_enqueue_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.min.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
335
  wp_localize_script( 'woocommerce_settings', 'woocommerce_settings_params', array(
336
  'i18n_nav_warning' => __( 'The changes you have made will be lost if you leave this page.', 'yith-plugin-fw' )
337
  ) );
 
 
 
 
 
338
  }
339
 
340
  /**
319
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
320
  */
321
  public function admin_enqueue_scripts() {
322
+ global $woocommerce, $pagenow;
323
 
324
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
325
 
326
  wp_enqueue_media();
327
  wp_enqueue_style( 'woocommerce_admin_styles', $woocommerce->plugin_url() . '/assets/css/admin.css', array(), $woocommerce->version );
328
+ wp_register_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $woocommerce->version );
329
+
330
+ if ( 'customize.php' != $pagenow ){
331
+
332
+ wp_enqueue_style ( 'wp-jquery-ui-dialog' );
333
+
334
+ }
335
 
336
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
337
  wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
338
  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 );
339
+ wp_register_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.min.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
340
  wp_localize_script( 'woocommerce_settings', 'woocommerce_settings_params', array(
341
  'i18n_nav_warning' => __( 'The changes you have made will be lost if you leave this page.', 'yith-plugin-fw' )
342
  ) );
343
+
344
+ if( 'admin.php' == $pagenow && strpos( get_current_screen()->id, 'yit-plugins_page' ) !== false ){
345
+ wp_enqueue_style( 'yit-plugin-style' );
346
+ wp_enqueue_script( 'yit-plugin-panel' );
347
+ }
348
  }
349
 
350
  /**
plugin-fw/lib/yit-plugin-panel.php CHANGED
@@ -92,8 +92,12 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
92
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
93
  */
94
  public function add_menu_page() {
95
- $position = apply_filters( 'yit_plugins_menu_item_position', '62.32' );
96
- add_menu_page( 'yit_plugin_panel', __( 'YIT Plugins', 'yith-plugin-fw' ), 'manage_options', 'yit_plugin_panel', NULL, YIT_CORE_PLUGIN_URL . '/assets/images/yithemes-icon.png', $position );
 
 
 
 
97
  }
98
 
99
  /**
@@ -121,27 +125,32 @@ if ( ! class_exists( 'YIT_Plugin_Panel' ) ) {
121
  */
122
  public function admin_enqueue_scripts() {
123
 
124
- global $wp_scripts, $pagenow;
125
 
126
  //scripts
127
- wp_enqueue_media();
128
- wp_enqueue_script( 'jquery-ui' );
129
- wp_enqueue_script( 'jquery-ui-core' );
130
- wp_enqueue_script( 'jquery-ui-slider' );
131
- wp_enqueue_script( 'jquery-ui-dialog' );
132
- wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
133
- wp_enqueue_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
134
- wp_register_script( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/codemirror.js', array( 'jquery' ), $this->version, true );
135
- wp_register_script( 'codemirror-javascript', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/javascript.js', array( 'jquery', 'codemirror' ), $this->version, true );
136
 
137
  //styles
138
- $jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
139
  wp_register_style( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/css/codemirror/codemirror.css' );
140
  wp_enqueue_style( 'jquery-ui-overcast', YIT_CORE_PLUGIN_URL . '/assets/css/overcast/jquery-ui-1.8.9.custom.css', false, '1.8.9', 'all' );
141
- wp_enqueue_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $this->version );
142
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
143
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
144
  wp_enqueue_style( 'yit-jquery-ui-style', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
 
 
 
 
 
145
  }
146
 
147
  /**
92
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
93
  */
94
  public function add_menu_page() {
95
+ global $admin_page_hooks;
96
+
97
+ if( ! isset( $admin_page_hooks['yit_plugin_panel'] ) ){
98
+ $position = apply_filters( 'yit_plugins_menu_item_position', '62.32' );
99
+ add_menu_page( 'yit_plugin_panel', __( 'YIT Plugins', 'yith-plugin-fw' ), 'manage_options', 'yit_plugin_panel', NULL, YIT_CORE_PLUGIN_URL . '/assets/images/yithemes-icon.png', $position );
100
+ }
101
  }
102
 
103
  /**
125
  */
126
  public function admin_enqueue_scripts() {
127
 
128
+ global $wp_scripts, $pagenow;
129
 
130
  //scripts
131
+ wp_enqueue_media();
132
+ wp_enqueue_script( 'jquery-ui' );
133
+ wp_enqueue_script( 'jquery-ui-core' );
134
+ wp_enqueue_script( 'jquery-ui-slider' );
135
+ wp_enqueue_script( 'jquery-ui-dialog' );
136
+ wp_enqueue_script( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/js/chosen/chosen.jquery.js', array( 'jquery' ), '1.1.0', true );
137
+ wp_register_script( 'yit-plugin-panel', YIT_CORE_PLUGIN_URL . '/assets/js/yit-plugin-panel.js', array( 'jquery', 'jquery-chosen' ), $this->version, true );
138
+ wp_register_script( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/codemirror.js', array( 'jquery' ), $this->version, true );
139
+ wp_register_script( 'codemirror-javascript', YIT_CORE_PLUGIN_URL . '/assets/js/codemirror/javascript.js', array( 'jquery', 'codemirror' ), $this->version, true );
140
 
141
  //styles
142
+ $jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
143
  wp_register_style( 'codemirror', YIT_CORE_PLUGIN_URL . '/assets/css/codemirror/codemirror.css' );
144
  wp_enqueue_style( 'jquery-ui-overcast', YIT_CORE_PLUGIN_URL . '/assets/css/overcast/jquery-ui-1.8.9.custom.css', false, '1.8.9', 'all' );
145
+ wp_register_style( 'yit-plugin-style', YIT_CORE_PLUGIN_URL . '/assets/css/yit-plugin-panel.css', $this->version );
146
  wp_enqueue_style( 'raleway-font', '//fonts.googleapis.com/css?family=Raleway:400,500,600,700,800,100,200,300,900' );
147
  wp_enqueue_style( 'jquery-chosen', YIT_CORE_PLUGIN_URL . '/assets/css/chosen/chosen.css' );
148
  wp_enqueue_style( 'yit-jquery-ui-style', '//code.jquery.com/ui/' . $jquery_version . '/themes/smoothness/jquery-ui.css', array(), $jquery_version );
149
+
150
+ if( 'admin.php' == $pagenow && strpos('yit-plugins_page',get_current_screen()->id ) !== false ){
151
+ wp_enqueue_style( 'yit-plugin-style' );
152
+ wp_enqueue_script( 'yit-plugin-panel' );
153
+ }
154
  }
155
 
156
  /**
plugin-fw/lib/yit-plugin-subpanel.php CHANGED
@@ -88,22 +88,25 @@ if ( ! class_exists( 'YIT_Plugin_SubPanel' ) ) {
88
  * @since 1.0
89
  * @author Emanuela Castorina <emanuela.castorina@yithemes.it>
90
  */
91
- public function add_setting_page() {
 
 
92
 
93
- $logo = YIT_CORE_PLUGIN_URL . '/assets/images/yithemes-icon.png';
94
 
95
- $admin_logo = function_exists( 'yit_get_option' ) ? yit_get_option( 'admin-logo-menu' ) : '';
 
 
96
 
97
- if ( isset( $admin_logo ) && ! empty( $admin_logo ) && $admin_logo != '' && $admin_logo) {
98
- $logo = $admin_logo;
99
- }
100
  $position = apply_filters( 'yit_plugins_menu_item_position', '62.32' );
101
  add_menu_page( 'yit_plugin_panel', __( 'YIT Plugins', 'yith-plugin-fw' ), 'nosuchcapability', 'yit_plugin_panel', NULL, $logo, $position );
 
102
 
103
- add_submenu_page( 'yit_plugin_panel', $this->settings['label'], $this->settings['label'], 'manage_options', $this->settings['page'], array( $this, 'yit_panel' ) );
104
- remove_submenu_page( 'yit_plugin_panel', 'yit_plugin_panel' );
105
 
106
- }
107
 
108
  /**
109
  * Show a tabbed panel to setting page
88
  * @since 1.0
89
  * @author Emanuela Castorina <emanuela.castorina@yithemes.it>
90
  */
91
+ public function add_setting_page() {
92
+ global $admin_page_hooks;
93
+ $logo = YIT_CORE_PLUGIN_URL . '/assets/images/yithemes-icon.png';
94
 
95
+ $admin_logo = function_exists( 'yit_get_option' ) ? yit_get_option( 'admin-logo-menu' ) : '';
96
 
97
+ if ( isset( $admin_logo ) && !empty( $admin_logo ) && $admin_logo != '' && $admin_logo ) {
98
+ $logo = $admin_logo;
99
+ }
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', __( 'YIT 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' ) );
107
+ remove_submenu_page( 'yit_plugin_panel', 'yit_plugin_panel' );
108
 
109
+ }
110
 
111
  /**
112
  * Show a tabbed panel to setting page
plugin-fw/lib/yit-upgrade.php CHANGED
@@ -60,8 +60,10 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
60
  add_action( 'admin_enqueue_scripts', array( $this, 'network_admin_enqueue_scripts' ) );
61
  }
62
 
63
- if( defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG ){
64
- $this->_package_url = 'http://dev.yithemes.com';
 
 
65
  }
66
  }
67
 
@@ -129,7 +131,7 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
129
  );
130
 
131
  foreach( $this->_plugins as $init => $info ){
132
- YIT_Plugin_Licence()->check( $init );
133
 
134
  $update_url[ $init ] = wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin-multisite&plugin=') . $init, 'upgrade-plugin-multisite_' . $init );
135
  $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
@@ -157,24 +159,6 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
157
  yit_enqueue_style( 'yit-upgrader', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrader.css' );
158
  }
159
 
160
- /**
161
- * Call the protected method _upgrader_pre_download to retrive the zip package file
162
- *
163
- * @param bool $reply Whether to bail without returning the package. Default false.
164
- * @param string $package The package file name.
165
- * @param \WP_Upgrader $upgrader WP_Upgrader instance.
166
- *
167
- * @return string | The download file
168
- *
169
- * @since 1.0
170
- * @see wp-admin/includes/class-wp-upgrader.php
171
- * @access public
172
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
173
- */
174
- public function upgrader_pre_download( $reply, $package, $upgrader ){
175
- return $this->_upgrader_pre_download( $reply, $package, $upgrader );
176
- }
177
-
178
  /**
179
  * Retrive the zip package file
180
  *
@@ -186,10 +170,10 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
186
  *
187
  * @since 1.0
188
  * @see wp-admin/includes/class-wp-upgrader.php
189
- * @access protected
190
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
191
  */
192
- protected function _upgrader_pre_download( $reply, $package, $upgrader ) {
193
  $plugin = false;
194
  $is_bulk = $upgrader->skin instanceof Bulk_Plugin_Upgrader_Skin;
195
 
@@ -247,7 +231,7 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
247
  return new WP_Error( 'no_package', $upgrader->strings['no_package'] );
248
  }
249
 
250
- $upgrader->skin->feedback( 'downloading_package', __( 'Yithemes Repository', 'yith-plugin-fw' ) );
251
 
252
  $download_file = $this->_download_url( $package, $args );
253
 
@@ -440,7 +424,7 @@ if ( ! class_exists( 'YIT_Upgrade' ) ) {
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="Licence 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
  }
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
 
131
  );
132
 
133
  foreach( $this->_plugins as $init => $info ){
134
+ YIT_Plugin_Licence()->check( $init, false );
135
 
136
  $update_url[ $init ] = wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin-multisite&plugin=') . $init, 'upgrade-plugin-multisite_' . $init );
137
  $changelog_id = str_replace( array( '/', '.php', '.' ), array( '-', '', '-' ), $init );
159
  yit_enqueue_style( 'yit-upgrader', YIT_CORE_PLUGIN_URL . '/assets/css/yit-upgrader.css' );
160
  }
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  /**
163
  * Retrive the zip package file
164
  *
170
  *
171
  * @since 1.0
172
  * @see wp-admin/includes/class-wp-upgrader.php
173
+ * @access public
174
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
175
  */
176
+ public function upgrader_pre_download( $reply, $package, $upgrader ) {
177
  $plugin = false;
178
  $is_bulk = $upgrader->skin instanceof Bulk_Plugin_Upgrader_Skin;
179
 
231
  return new WP_Error( 'no_package', $upgrader->strings['no_package'] );
232
  }
233
 
234
+ $upgrader->skin->feedback( 'downloading_package', __( 'YIThemes Repository', 'yith-plugin-fw' ) );
235
 
236
  $download_file = $this->_download_url( $package, $args );
237
 
424
  }elseif( is_plugin_active_for_network( $init ) ){
425
  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 );
426
  }elseif ( empty( $r->package ) ) {
427
+ 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'] );
428
  } else {
429
  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 ) );
430
  }
plugin-fw/licence/assets/css/yit-licence.css CHANGED
@@ -23,6 +23,7 @@
23
 
24
  .yit-container.product-licence-activation .to-active-wrapper {
25
  margin-bottom: 60px;
 
26
  }
27
 
28
  .yit-container.product-licence-activation .to-active-wrapper form.to-active-form {
@@ -121,17 +122,13 @@
121
  vertical-align: top;
122
  }
123
 
124
- .yit-container.product-licence-activation .spinner.show{
125
- display: inline-block;
126
- vertical-align: middle;
127
  float: none;
128
  }
129
 
130
- .yit-container.product-licence-activation h3.to-active > .spinner.show {
131
- display: inline-block;
132
- float: none;
133
- top: -3px;
134
- position: relative;
135
  }
136
 
137
  .yit-container.product-licence-activation .licence-check-section{
@@ -176,18 +173,24 @@
176
  padding: 12px 19px;
177
  }
178
 
 
179
  .yit-container.product-licence-activation .button-licence.licence-renew {
180
  text-decoration: none;
181
  padding: 7px 12px;
182
  font-size: 9px;
183
  }
184
 
 
 
 
 
 
185
  .yit-container.product-licence-activation .button-licence.licence-renew:focus {
186
  box-shadow: none;
187
  }
188
 
189
  .yit-container.product-licence-activation table:not(.to-active-table) {
190
- width: 100%;
191
  border: 1px solid #dcdcdc;
192
  border-spacing: 0;
193
  border-radius: 5px;
@@ -197,12 +200,18 @@
197
 
198
  .yit-container.product-licence-activation table:not(.to-active-table) th {
199
  border-bottom: 1px solid #dcdcdc;
 
 
 
 
 
200
  }
201
 
202
  .yit-container.product-licence-activation table:not(.to-active-table) td,
203
  .yit-container.product-licence-activation table:not(.to-active-table) th {
204
  border-right: 1px solid #dcdcdc;
205
  }
 
206
  .yit-container.product-licence-activation table td:last-child,
207
  .yit-container.product-licence-activation table th:last-child {
208
  border-right: 0;
@@ -216,8 +225,12 @@
216
  background-color: #ffffff;
217
  }
218
 
 
 
 
 
219
  .yit-container.product-licence-activation table thead tr th {
220
- font-size: 13px;
221
  color: #313131;
222
  text-transform: uppercase;
223
  font-weight: bold;
@@ -228,6 +241,14 @@
228
  line-height: 60px;
229
  }
230
 
 
 
 
 
 
 
 
 
231
  .yit-container.product-licence-activation table tbody tr td{
232
  text-align: center;
233
  line-height: 20px;
@@ -260,15 +281,17 @@
260
  width: 33%;
261
  }
262
 
263
-
264
- .yit-container.product-licence-activation .to-active-table td.product-name {
265
  color: #808a97;
266
  font-size: 12px;
267
  text-transform: uppercase;
268
  font-weight: bold;
269
  line-height: 20px;
 
 
 
 
270
  width: 20%;
271
- padding-left: 20px;
272
  }
273
 
274
  .yit-container.product-licence-activation .to-active-table td.activate-button {
@@ -302,15 +325,12 @@
302
  box-shadow: 0 0 1px rgba(30,140,190,.8);
303
  }
304
 
305
- .yit-container.product-licence-activation input[type=text]{
 
306
  text-transform: uppercase;
307
  text-align: center;
308
  }
309
 
310
- .yit-container.product-licence-activation input[type=email] {
311
- text-align: left;
312
- }
313
-
314
  .yit-container.product-licence-activation input[type=submit]:focus{
315
  outline: 0;
316
  }
@@ -328,19 +348,88 @@
328
  color: #808a97;
329
  }
330
 
 
 
 
 
 
 
 
 
 
 
331
  /* === Responsive === */
332
 
333
- @media (max-width: 767px) {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
 
335
- @media (max-width: 480px) {}
 
 
336
 
337
- @media (min-width: 768px) and (max-width: 992px) {}
 
 
338
 
339
- @media (min-width: 980px) and (max-width: 1199px) {}
 
 
 
340
 
341
  @media (min-width: 1200px) {
342
  .yit-container.product-licence-activation{
343
- width: 900px;
 
 
 
 
344
  }
345
  }
346
 
23
 
24
  .yit-container.product-licence-activation .to-active-wrapper {
25
  margin-bottom: 60px;
26
+ max-width: 900px;
27
  }
28
 
29
  .yit-container.product-licence-activation .to-active-wrapper form.to-active-form {
122
  vertical-align: top;
123
  }
124
 
125
+ .yit-container.product-licence-activation .spinner{
126
+ vertical-align: -5px;
 
127
  float: none;
128
  }
129
 
130
+ .yit-container.product-licence-activation .spinner.show{
131
+ visibility: visible;
 
 
 
132
  }
133
 
134
  .yit-container.product-licence-activation .licence-check-section{
173
  padding: 12px 19px;
174
  }
175
 
176
+ .yit-container.product-licence-activation .button-licence.licence-deactive,
177
  .yit-container.product-licence-activation .button-licence.licence-renew {
178
  text-decoration: none;
179
  padding: 7px 12px;
180
  font-size: 9px;
181
  }
182
 
183
+ .yit-container.product-licence-activation table:not(.expired-table) .button-licence.licence-renew {
184
+ margin-left: 10px;
185
+ }
186
+
187
+ .yit-container.product-licence-activation .button-licence.licence-deactive:focus,
188
  .yit-container.product-licence-activation .button-licence.licence-renew:focus {
189
  box-shadow: none;
190
  }
191
 
192
  .yit-container.product-licence-activation table:not(.to-active-table) {
193
+ width: auto;
194
  border: 1px solid #dcdcdc;
195
  border-spacing: 0;
196
  border-radius: 5px;
200
 
201
  .yit-container.product-licence-activation table:not(.to-active-table) th {
202
  border-bottom: 1px solid #dcdcdc;
203
+ padding: 0 10px;
204
+ }
205
+
206
+ .yit-container.product-licence-activation table tbody tr td.product-licence-key {
207
+ text-transform: lowercase;
208
  }
209
 
210
  .yit-container.product-licence-activation table:not(.to-active-table) td,
211
  .yit-container.product-licence-activation table:not(.to-active-table) th {
212
  border-right: 1px solid #dcdcdc;
213
  }
214
+
215
  .yit-container.product-licence-activation table td:last-child,
216
  .yit-container.product-licence-activation table th:last-child {
217
  border-right: 0;
225
  background-color: #ffffff;
226
  }
227
 
228
+ .yit-container.product-licence-activation table tbody tr:nth-child(2n) {
229
+ background-color: #f4f4f4;
230
+ }
231
+
232
  .yit-container.product-licence-activation table thead tr th {
233
+ font-size: 11px;
234
  color: #313131;
235
  text-transform: uppercase;
236
  font-weight: bold;
241
  line-height: 60px;
242
  }
243
 
244
+ .yit-container.product-licence-activation table tbody tr td.product-licence-membership .dashicons-no-alt {
245
+ color: #b20015;
246
+ }
247
+
248
+ .yit-container.product-licence-activation table tbody tr td.product-licence-membership .dashicons-yes {
249
+ color: #1ca800;
250
+ }
251
+
252
  .yit-container.product-licence-activation table tbody tr td{
253
  text-align: center;
254
  line-height: 20px;
281
  width: 33%;
282
  }
283
 
284
+ .yit-container.product-licence-activation td.product-name {
 
285
  color: #808a97;
286
  font-size: 12px;
287
  text-transform: uppercase;
288
  font-weight: bold;
289
  line-height: 20px;
290
+ padding: 10px 20px;
291
+ }
292
+
293
+ .yit-container.product-licence-activation .to-active-table td.product-name {
294
  width: 20%;
 
295
  }
296
 
297
  .yit-container.product-licence-activation .to-active-table td.activate-button {
325
  box-shadow: 0 0 1px rgba(30,140,190,.8);
326
  }
327
 
328
+ .yit-container.product-licence-activation input[type=text],
329
+ .yit-container.product-licence-activation input[type=email]{
330
  text-transform: uppercase;
331
  text-align: center;
332
  }
333
 
 
 
 
 
334
  .yit-container.product-licence-activation input[type=submit]:focus{
335
  outline: 0;
336
  }
348
  color: #808a97;
349
  }
350
 
351
+ #yith-licence-notice {
352
+ margin-left: 0;
353
+ visibility: hidden;
354
+ min-height: 38px;
355
+ }
356
+
357
+ #yith-licence-notice.visible {
358
+ visibility: visible;
359
+ }
360
+
361
  /* === Responsive === */
362
 
363
+ @media (max-width: 767px) {
364
+ .yit-container.product-licence-activation .activation-faq {
365
+ margin-right: 5px;
366
+ }
367
+ }
368
+
369
+ @media (max-width: 480px) {
370
+ .yit-container.product-licence-activation .activation-faq {
371
+ margin-right: 5px;
372
+ }
373
+ }
374
+
375
+ @media (min-width: 768px) and (max-width: 992px) {
376
+ .yit-container.product-licence-activation .button-licence.licence-deactive,
377
+ .yit-container.product-licence-activation .button-licence.licence-renew {
378
+ margin-bottom: 10px;
379
+ display: block;
380
+ margin-left: 0;
381
+ padding: 5px 7px;
382
+ }
383
+
384
+ .yit-container.product-licence-activation .button-licence.licence-deactive {
385
+ margin-bottom: 10px;
386
+ }
387
+
388
+ .yit-container.product-licence-activation table:not(.to-active-table) th {
389
+ line-height: 20px;
390
+ }
391
+
392
+ .yit-container.product-licence-activation table tbody tr td {
393
+ padding: 5px;
394
+ }
395
+
396
+ .yit-container.product-licence-activation .activation-faq {
397
+ margin-right: 20px;
398
+ }
399
+ }
400
+
401
+ @media (min-width: 980px) and (max-width: 1199px) {
402
+ .yit-container.product-licence-activation .button-licence.licence-deactive,
403
+ .yit-container.product-licence-activation .button-licence.licence-renew {
404
+ display: block;
405
+ margin-left: 0;
406
+ padding: 5px 7px;
407
+ }
408
+
409
+ .yit-container.product-licence-activation .button-licence.licence-renew {
410
+ margin-top: 10px;
411
+ }
412
 
413
+ .yit-container.product-licence-activation table:not(.to-active-table) th {
414
+ line-height: 20px;
415
+ }
416
 
417
+ .yit-container.product-licence-activation table tbody tr td {
418
+ padding: 5px;
419
+ }
420
 
421
+ .yit-container.product-licence-activation .activation-faq {
422
+ width: 75%;
423
+ }
424
+ }
425
 
426
  @media (min-width: 1200px) {
427
  .yit-container.product-licence-activation{
428
+ width: auto;
429
+ }
430
+
431
+ .yit-container.product-licence-activation .activation-faq {
432
+ width: 50%;
433
  }
434
  }
435
 
plugin-fw/licence/assets/js/yit-licence.js CHANGED
@@ -16,20 +16,21 @@
16
  button.on('click', function (e, button) {
17
  e.preventDefault();
18
 
19
- var t = $(this),
20
- form_id = t.data('formid'),
21
- form = $('#' + form_id),
22
- data = form.serialize(),
23
- message = $(form).find('.message'),
24
- message_wrapper = $(form).find('.message-wrapper'),
25
- email = form.find('.user-email'),
26
- licence_key = form.find('.licence-key'),
27
- email_val = form.find('.user-email').val(),
28
- licence_key_val = form.find('.licence-key').val(),
29
- error = false,
30
- error_fields = new Array(),
31
- product_row = form.find('.product-row'),
32
- spinner = $('h3.to-active').find('.spinner');
 
33
 
34
  /* Init Input Fields */
35
  message.empty();
@@ -38,17 +39,17 @@
38
  licence_key.removeClass('require');
39
  product_row.removeClass('error');
40
  spinner.addClass('show');
41
- t.prop("disabled", true).addClass('clicked');
42
 
43
  if ('' == email_val) {
44
  error = true;
45
- error_fields[ error_fields.length ] = 'Email';
46
  email.addClass('require');
47
  }
48
 
49
  if ('' == licence_key_val) {
50
  error = true;
51
- error_fields[ error_fields.length ] = 'Licence Key';
52
  licence_key.addClass('require');
53
  }
54
 
@@ -60,7 +61,7 @@
60
  success: function (response) {
61
 
62
  spinner.removeClass('show');
63
- t.prop("disabled", false).removeClass('clicked');
64
 
65
  if (true == response.activated) {
66
  $('.product-licence-activation').empty().replaceWith(response.template);
@@ -93,10 +94,10 @@
93
  }
94
 
95
  spinner.removeClass('show');
96
- t.prop("disabled", false).removeClass('clicked');
97
  }
98
  });
99
- }
100
 
101
  var licence_update = function (button) {
102
  button.on('click', function (e) {
@@ -119,21 +120,77 @@
119
  }
120
  });
121
  });
122
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
 
124
  var licence_api = function () {
125
- var button = $('.licence-activation'),
126
- check = $('.licence-check');
 
127
 
128
  licence_activation(button);
129
  licence_update(check);
130
- }
 
131
 
132
  licence_api();
133
 
134
  $('body').on('click', '.yit-changelog-button', function (e) {
135
  $('#TB_window').remove();
136
-
137
  });
138
 
139
  })(jQuery);
16
  button.on('click', function (e, button) {
17
  e.preventDefault();
18
 
19
+ var t = $(this),
20
+ form_id = t.data('formid'),
21
+ form = $('#' + form_id),
22
+ data = form.serialize(),
23
+ message = $(form).find('.message'),
24
+ message_wrapper = $(form).find('.message-wrapper'),
25
+ email = form.find('.user-email'),
26
+ licence_key = form.find('.licence-key'),
27
+ email_val = form.find('.user-email').val(),
28
+ licence_key_val = form.find('.licence-key').val(),
29
+ error = false,
30
+ error_fields = new Array(),
31
+ product_row = form.find('.product-row'),
32
+ licence_activation = $('.licence-activation'),
33
+ spinner = $('#products-to-active').find('.spinner');
34
 
35
  /* Init Input Fields */
36
  message.empty();
39
  licence_key.removeClass('require');
40
  product_row.removeClass('error');
41
  spinner.addClass('show');
42
+ t.add(licence_activation).prop("disabled", true).addClass('clicked');
43
 
44
  if ('' == email_val) {
45
  error = true;
46
+ error_fields[ error_fields.length ] = licence_message.email;
47
  email.addClass('require');
48
  }
49
 
50
  if ('' == licence_key_val) {
51
  error = true;
52
+ error_fields[ error_fields.length ] = licence_message.license_key;
53
  licence_key.addClass('require');
54
  }
55
 
61
  success: function (response) {
62
 
63
  spinner.removeClass('show');
64
+ t.add(licence_activation).prop("disabled", false).removeClass('clicked');
65
 
66
  if (true == response.activated) {
67
  $('.product-licence-activation').empty().replaceWith(response.template);
94
  }
95
 
96
  spinner.removeClass('show');
97
+ t.add(licence_activation).prop("disabled", false).removeClass('clicked');
98
  }
99
  });
100
+ };
101
 
102
  var licence_update = function (button) {
103
  button.on('click', function (e) {
120
  }
121
  });
122
  });
123
+ };
124
+
125
+ var licence_deactivate = function (button) {
126
+ button.on('click', function (e) {
127
+ e.preventDefault();
128
+
129
+ var check = script_info.is_debug == true ? true : confirm( licence_message.are_you_sure );
130
+
131
+ if( check == true ){
132
+ var t = $(this),
133
+ licence_key = t.data('licence-key'),
134
+ licence_email = t.data('licence-email'),
135
+ product_init = t.data('product-init'),
136
+ action = t.data('action'),
137
+ renew = $('.licence-renew'),
138
+ deactive = $('.licence-deactive'),
139
+ message = $('#yith-licence-notice'),
140
+ activated_table = $('.activated-table');
141
+
142
+ t.add(renew).add(deactive).prop("disabled", true).addClass('clicked');
143
+ $('#activated-products').find('.spinner').addClass('show');
144
+
145
+ jQuery.ajax({
146
+ type : 'POST',
147
+ url : ajaxurl,
148
+ data : {
149
+ action: action,
150
+ licence_key: licence_key,
151
+ email: licence_email,
152
+ product_init: product_init
153
+ },
154
+ success: function (response) {
155
+ message.css( 'maxWidth', activated_table.width() );
156
+ if (false == response.activated && typeof response.error == 'undefined') {
157
+ $('.product-licence-activation').empty().replaceWith(response.template);
158
+ licence_api();
159
+ }
160
+
161
+ if (false == response.activated && typeof response.error != 'undefined') {
162
+ message.find('p.yith-licence-notice-message').html(response.error);
163
+ message.removeClass('notice-success').addClass('notice-error visible');
164
+ t.add(renew).add(deactive).add(renew).prop("disabled", false).removeClass('clicked');
165
+ $('#activated-products').find('.spinner').removeClass('show');
166
+ }
167
+
168
+ else if (false == response) {
169
+ message.find('p.yith-licence-notice-message').html(licence_message.server);
170
+ message.removeClass('notice-success').addClass('notice-error visible');
171
+ t.add(renew).add(deactive).add(renew).prop("disabled", false).removeClass('clicked');
172
+ $('#activated-products').find('.spinner').removeClass('show');
173
+ }
174
+ }
175
+ });
176
+ }
177
+ });
178
+ };
179
 
180
  var licence_api = function () {
181
+ var button = $('.licence-activation'),
182
+ check = $('.licence-check'),
183
+ deactivated = $('.licence-deactive');
184
 
185
  licence_activation(button);
186
  licence_update(check);
187
+ licence_deactivate(deactivated);
188
+ };
189
 
190
  licence_api();
191
 
192
  $('body').on('click', '.yit-changelog-button', function (e) {
193
  $('#TB_window').remove();
 
194
  });
195
 
196
  })(jQuery);
plugin-fw/licence/lib/yit-licence.php CHANGED
@@ -56,17 +56,48 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
56
  */
57
  protected $_api_uri_query_args = '?wc-api=software-api&request=%request%';
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  /**
60
  * Constructor
61
  *
62
  * @since 1.0
63
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
64
  */
65
- public function __construct(){
66
-
67
- if( defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG ){
68
- $this->_api_uri = 'http://dev.yithemes.com';
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  }
 
 
 
 
 
70
  }
71
 
72
  /**
@@ -114,7 +145,6 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
114
  return $home_url;
115
  }
116
 
117
-
118
  /**
119
  * Check if the request is ajax
120
  *
@@ -146,21 +176,20 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
146
 
147
  wp_enqueue_script( 'yit-licence', $script_path . '/licence/assets/js/' . $filename, array( 'jquery' ), '1.0.0', true );
148
  wp_enqueue_style( 'yit-theme-licence', $style_path . '/licence/assets/css/yit-licence.css' );
149
- }
150
 
151
- /**
152
- * Localize Scripts
153
- *
154
- * @return void
155
- *
156
- * @since 1.0
157
- * @author Andrea Grillo <andrea.grillo@yithemes.com>
158
- */
159
- public function localize_script() {
160
  wp_localize_script( 'yit-licence', 'licence_message', array(
161
- 'error' => sprintf( _x( '%s field cannot be empty', '%s = field name', 'yith-plugin-fw' ), '%field%' ), // sprintf must be used to avoid errors with '%field%' string in translation in .po file
162
- 'errors' => sprintf( __( '%s and %s fields cannot be empty', 'yith-plugin-fw' ), '%field_1%', '%field_2%' ),
163
- 'server' => __( 'Unable to contact the remote server, please try again later. Thanks!', 'yith-plugin-fw' )
 
 
 
 
 
 
 
 
164
  )
165
  );
166
  }
@@ -177,7 +206,6 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
177
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
178
  */
179
  public function activate() {
180
-
181
  $product_init = $_REQUEST['product_init'];
182
  $product = $this->get_product( $product_init );
183
 
@@ -190,7 +218,7 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
190
  );
191
 
192
  $api_uri = esc_url_raw( add_query_arg( $args, $this->get_api_uri( 'activation' ) ) );
193
- $response = wp_remote_get( $api_uri );
194
 
195
  if ( is_wp_error( $response ) ) {
196
  $body = false;
@@ -203,13 +231,14 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
203
  if ( $body && is_array( $body ) && isset( $body['activated'] ) && $body['activated'] ) {
204
 
205
  $option[$product['product_id']] = array(
206
- 'email' => urldecode( $args['email'] ),
207
- 'licence_key' => $args['licence_key'],
208
- 'licence_expires' => $body['licence_expires'],
209
- 'message' => $body['message'],
210
- 'activated' => true,
211
- 'activation_limit' => $body['activation_limit'],
212
- 'activation_remaining' => $body['activation_remaining'],
 
213
  );
214
 
215
  /* === Check for other plugins activation === */
@@ -222,7 +251,74 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
222
  YIT_Upgrade()->force_regenerate_update_transient();
223
 
224
  /* === Licence Activation Template === */
225
- $body['template'] = $this->show_activation_panel();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  }
227
 
228
  wp_send_json( $body );
@@ -240,7 +336,7 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
240
  * @since 1.0
241
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
242
  */
243
- public function check( $product_init ) {
244
 
245
  $status = false;
246
  $body = false;
@@ -261,7 +357,7 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
261
  );
262
 
263
  $api_uri = esc_url_raw( add_query_arg( $args, $this->get_api_uri( 'check' ) ) );
264
- $response = wp_remote_get( $api_uri );
265
 
266
  if ( ! is_wp_error( $response ) ) {
267
  $body = json_decode( $response['body'] );
@@ -279,6 +375,7 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
279
  $licence[ $product_id ]['licence_expires'] = $body['licence_expires'];
280
  $licence[ $product_id ]['activation_remaining'] = $body['activation_remaining'];
281
  $licence[ $product_id ]['activation_limit'] = $body['activation_limit'];
 
282
  $status = (bool) $body['activated'];
283
  }
284
  elseif ( isset( $body['code'] ) ) {
@@ -297,7 +394,8 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
297
  * 106 -> Licence key has expired
298
  * 107 -> Licence key has be banned
299
  *
300
- * Only code 101, 106 and 107 have effect on DB
 
301
  *
302
  */
303
 
@@ -308,15 +406,17 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
308
 
309
  case '106':
310
  $licence[ $product_id ]['activated'] = false;
311
- $licence[ $product_id ]['message'] = $body['additional_info'];
312
  $licence[ $product_id ]['status_code'] = $body['code'];
313
  $licence[ $product_id ]['licence_expires'] = $body['licence_expires'];
 
314
  break;
315
 
316
  case '107':
317
- $licence[ $product_id ]['activated'] = false;
318
- $licence[ $product_id ]['message'] = $body['additional_info'];
319
- $licence[ $product_id ]['status_code'] = $body['code'];
 
320
  break;
321
  }
322
  }
@@ -325,11 +425,28 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
325
  update_option( $this->_licence_option, $licence );
326
 
327
  /* === Update Plugin Licence Information === */
328
- YIT_Upgrade()->force_regenerate_update_transient();
 
 
329
  }
330
  return $status;
331
  }
332
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  /**
334
  * Update Plugins Information
335
  *
@@ -342,17 +459,18 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
342
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
343
  */
344
  public function update_licence_information() {
345
- foreach ( $this->_products as $init => $info ) {
346
- $this->check( $init );
347
- }
348
 
349
  /* === Regenerate Update Plugins Transient === */
350
  YIT_Upgrade()->force_regenerate_update_transient();
351
 
352
  do_action( 'yit_licence_after_check' );
353
 
354
- $response['template'] = $this->show_activation_panel();
355
- wp_send_json( $response );
 
 
356
  }
357
 
358
  /**
@@ -363,7 +481,7 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
363
  * @since 1.0
364
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
365
  */
366
- public function show_activation_panel() {
367
 
368
  $path = defined( 'YIT_CORE_PLUGIN_PATH' ) ? YIT_CORE_PLUGIN_PATH : get_template_directory() . '/core/plugin-fw/';
369
 
@@ -542,20 +660,49 @@ if ( ! class_exists( 'YIT_Licence' ) ) {
542
  * @since 1.0
543
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
544
  */
545
- public function get_error_code_message( $code ) {
546
-
547
- $error_strings = array(
548
- '100' => __( 'Invalid Request', 'yith-plugin-fw' ),
549
- '101' => __( 'Invalid licence key', 'yith-plugin-fw' ),
550
- '102' => __( 'Software has been deactivated', 'yith-plugin-fw' ),
551
- '103' => __( 'Maximum number of activations exceeded', 'yith-plugin-fw' ),
552
- '104' => __( 'Invalid instance ID', 'yith-plugin-fw' ),
553
- '105' => __( 'Invalid security key', 'yith-plugin-fw' ),
554
- '106' => __( 'Licence key has expired', 'yith-plugin-fw' ),
555
- '107' => __( 'Licence key has been banned', 'yith-plugin-fw' )
 
 
 
 
556
  );
557
 
558
- return isset( $error_strings[$code] ) ? $error_strings[$code] : false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  }
560
 
561
  }
56
  */
57
  protected $_api_uri_query_args = '?wc-api=software-api&request=%request%';
58
 
59
+
60
+ /**
61
+ * @var string check for show extra info
62
+ * @since 1.0
63
+ */
64
+ public $show_extra_info = false;
65
+
66
+ /**
67
+ * @var string check for show extra info
68
+ * @since 1.0
69
+ */
70
+ public $show_renew_button = true;
71
+
72
  /**
73
  * Constructor
74
  *
75
  * @since 1.0
76
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
77
  */
78
+ public function __construct() {
79
+ $is_debug_enabled = defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG;
80
+ if ( $is_debug_enabled ) {
81
+ $this->_api_uri = defined( 'YIT_LICENCE_DEBUG_LOCALHOST' ) ? YIT_LICENCE_DEBUG_LOCALHOST : 'http://dev.yithemes.com';
82
+ add_filter( 'block_local_requests', '__return_false' );
83
+ }
84
+
85
+ /* Style adn Script */
86
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
87
+ if( $is_debug_enabled ) {
88
+ //show extra info and renew button in debug mode
89
+ $this->show_extra_info = $this->show_renew_button = true;
90
+ }
91
+
92
+ else {
93
+ $this->show_extra_info = defined( 'YIT_SHOW_EXTRA_LICENCE_INFO' ) && YIT_SHOW_EXTRA_LICENCE_INFO;
94
+ $this->show_renew_button = ! ( defined( 'YIT_HIDE_LICENCE_RENEW_BUTTON' ) && YIT_HIDE_LICENCE_RENEW_BUTTON );
95
  }
96
+
97
+ /* Update Licence Information */
98
+ add_action( 'core_upgrade_preamble', array( $this, 'check_all' ) );
99
+ add_action( 'wp_maybe_auto_update', array( $this, 'check_all' ) );
100
+
101
  }
102
 
103
  /**
145
  return $home_url;
146
  }
147
 
 
148
  /**
149
  * Check if the request is ajax
150
  *
176
 
177
  wp_enqueue_script( 'yit-licence', $script_path . '/licence/assets/js/' . $filename, array( 'jquery' ), '1.0.0', true );
178
  wp_enqueue_style( 'yit-theme-licence', $style_path . '/licence/assets/css/yit-licence.css' );
 
179
 
180
+ /* Localize Scripts */
 
 
 
 
 
 
 
 
181
  wp_localize_script( 'yit-licence', 'licence_message', array(
182
+ 'error' => sprintf( _x( '%s field cannot be empty', '%s = field name', 'yith-plugin-fw' ), '%field%' ), // sprintf must be used to avoid errors with '%field%' string in translation in .po file
183
+ 'errors' => sprintf( __( '%s and %s fields cannot be empty', 'yith-plugin-fw' ), '%field_1%', '%field_2%' ),
184
+ 'server' => __( 'Unable to contact the remote server, please try again later. Thanks!', 'yith-plugin-fw' ),
185
+ 'email' => __( 'Email', 'yith-plugin-fw' ),
186
+ 'license_key' => __( 'License Key', 'yith-plugin-fw' ),
187
+ 'are_you_sure' => __( 'Are you sure you want to deactivate the license for current site?', 'yith-plugin-fw' )
188
+ )
189
+ );
190
+
191
+ wp_localize_script( 'yit-licence', 'script_info', array(
192
+ 'is_debug' => defined( 'YIT_LICENCE_DEBUG' ) && YIT_LICENCE_DEBUG
193
  )
194
  );
195
  }
206
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
207
  */
208
  public function activate() {
 
209
  $product_init = $_REQUEST['product_init'];
210
  $product = $this->get_product( $product_init );
211
 
218
  );
219
 
220
  $api_uri = esc_url_raw( add_query_arg( $args, $this->get_api_uri( 'activation' ) ) );
221
+ $response = wp_remote_get( $api_uri, array( 'timeout' => 30 ) );
222
 
223
  if ( is_wp_error( $response ) ) {
224
  $body = false;
231
  if ( $body && is_array( $body ) && isset( $body['activated'] ) && $body['activated'] ) {
232
 
233
  $option[$product['product_id']] = array(
234
+ 'email' => urldecode( $args['email'] ),
235
+ 'licence_key' => $args['licence_key'],
236
+ 'licence_expires' => $body['licence_expires'],
237
+ 'message' => $body['message'],
238
+ 'activated' => true,
239
+ 'activation_limit' => $body['activation_limit'],
240
+ 'activation_remaining' => $body['activation_remaining'],
241
+ 'is_membership' => isset( $body['is_membership'] ) ? $body['is_membership'] : false,
242
  );
243
 
244
  /* === Check for other plugins activation === */
251
  YIT_Upgrade()->force_regenerate_update_transient();
252
 
253
  /* === Licence Activation Template === */
254
+ $body['template'] = $this->show_activation_panel( $this->get_response_code_message( 200 ) );
255
+ }
256
+
257
+ wp_send_json( $body );
258
+ }
259
+
260
+ /**
261
+ * Deactivate Plugins
262
+ *
263
+ * Send a request to API server to activate plugins
264
+ *
265
+ * @return void
266
+ * @use wp_send_json
267
+ *
268
+ * @since 1.0
269
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
270
+ */
271
+ public function deactivate() {
272
+ $product_init = $_REQUEST['product_init'];
273
+ $product = $this->get_product( $product_init );
274
+
275
+ $args = array(
276
+ 'email' => urlencode( sanitize_email( $_REQUEST['email'] ) ),
277
+ 'licence_key' => sanitize_text_field( $_REQUEST['licence_key'] ),
278
+ 'product_id' => sanitize_text_field( $product['product_id'] ),
279
+ 'secret_key' => sanitize_text_field( $product['secret_key'] ),
280
+ 'instance' => $this->get_home_url()
281
+ );
282
+
283
+ $api_uri = esc_url_raw( add_query_arg( $args, $this->get_api_uri( 'deactivation' ) ) );
284
+ $response = wp_remote_get( $api_uri, array( 'timeout' => 30 ) );
285
+
286
+ if ( is_wp_error( $response ) ) {
287
+ $body = false;
288
+ }
289
+ else {
290
+ $body = json_decode( $response['body'] );
291
+ $body = is_object( $body ) ? get_object_vars( $body ) : false;
292
+ }
293
+
294
+ if ( $body && is_array( $body ) && isset( $body['activated'] ) && ! $body['activated'] && ! isset( $body['error'] ) ) {
295
+
296
+ $option[$product['product_id']] = array(
297
+ 'activated' => false,
298
+ 'email' => urldecode( $args['email'] ),
299
+ 'licence_key' => $args['licence_key'],
300
+ 'licence_expires' => $body['licence_expires'],
301
+ 'message' => $body['message'],
302
+ 'activation_limit' => $body['activation_limit'],
303
+ 'activation_remaining' => $body['activation_remaining'],
304
+ 'is_membership' => isset( $body['is_membership'] ) ? $body['is_membership'] : false,
305
+ );
306
+
307
+ /* === Check for other plugins activation === */
308
+ $options = $this->get_licence();
309
+ $options[$product['product_id']] = $option[$product['product_id']];
310
+
311
+ update_option( $this->_licence_option, $options );
312
+
313
+ /* === Update Plugin Licence Information === */
314
+ YIT_Upgrade()->force_regenerate_update_transient();
315
+
316
+ /* === Licence Activation Template === */
317
+ $body['template'] = $this->show_activation_panel( $this->get_response_code_message( 'deactivated', array( 'instance' => $body['instance'] ) ) );
318
+ }
319
+
320
+ else {
321
+ $body['error'] = $this->get_response_code_message( $body['code'] );
322
  }
323
 
324
  wp_send_json( $body );
336
  * @since 1.0
337
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
338
  */
339
+ public function check( $product_init, $regenerate_transient = true ) {
340
 
341
  $status = false;
342
  $body = false;
357
  );
358
 
359
  $api_uri = esc_url_raw( add_query_arg( $args, $this->get_api_uri( 'check' ) ) );
360
+ $response = wp_remote_get( $api_uri, array( 'timeout' => 30 ) );
361
 
362
  if ( ! is_wp_error( $response ) ) {
363
  $body = json_decode( $response['body'] );
375
  $licence[ $product_id ]['licence_expires'] = $body['licence_expires'];
376
  $licence[ $product_id ]['activation_remaining'] = $body['activation_remaining'];
377
  $licence[ $product_id ]['activation_limit'] = $body['activation_limit'];
378
+ $licence[ $product_id ]['is_membership'] = isset( $body['is_membership'] ) ? $body['is_membership'] : false;
379
  $status = (bool) $body['activated'];
380
  }
381
  elseif ( isset( $body['code'] ) ) {
394
  * 106 -> Licence key has expired
395
  * 107 -> Licence key has be banned
396
  *
397
+ * Only code 101, 106 and 107 have effect on DB during activation
398
+ * All error code have effect on DB during deactivation
399
  *
400
  */
401
 
406
 
407
  case '106':
408
  $licence[ $product_id ]['activated'] = false;
409
+ $licence[ $product_id ]['message'] = $body['error'];
410
  $licence[ $product_id ]['status_code'] = $body['code'];
411
  $licence[ $product_id ]['licence_expires'] = $body['licence_expires'];
412
+ //$licence[ $product_id ]['is_membership'] = isset( $body['is_membership'] ) ? $body['is_membership'] : false;
413
  break;
414
 
415
  case '107':
416
+ $licence[ $product_id ]['activated'] = false;
417
+ $licence[ $product_id ]['message'] = $body['error'];
418
+ $licence[ $product_id ]['status_code'] = $body['code'];
419
+ //$licence[ $product_id ]['is_membership'] = isset( $body['is_membership'] ) ? $body['is_membership'] : false;
420
  break;
421
  }
422
  }
425
  update_option( $this->_licence_option, $licence );
426
 
427
  /* === Update Plugin Licence Information === */
428
+ if( $regenerate_transient ) {
429
+ YIT_Upgrade()->force_regenerate_update_transient();
430
+ }
431
  }
432
  return $status;
433
  }
434
 
435
+ /**
436
+ * Check for licence update
437
+ *
438
+ * @return void
439
+ * @since 2.5
440
+ *
441
+ * @use YIT_Theme_Licence->check()
442
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
443
+ */
444
+ public function check_all(){
445
+ foreach ( $this->_products as $init => $info ) {
446
+ $this->check( $init );
447
+ }
448
+ }
449
+
450
  /**
451
  * Update Plugins Information
452
  *
459
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
460
  */
461
  public function update_licence_information() {
462
+ /* Check licence information for alla products */
463
+ $this->check_all();
 
464
 
465
  /* === Regenerate Update Plugins Transient === */
466
  YIT_Upgrade()->force_regenerate_update_transient();
467
 
468
  do_action( 'yit_licence_after_check' );
469
 
470
+ if( $this->is_ajax() ) {
471
+ $response['template'] = $this->show_activation_panel();
472
+ wp_send_json( $response );
473
+ }
474
  }
475
 
476
  /**
481
  * @since 1.0
482
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
483
  */
484
+ public function show_activation_panel( $notice = '' ) {
485
 
486
  $path = defined( 'YIT_CORE_PLUGIN_PATH' ) ? YIT_CORE_PLUGIN_PATH : get_template_directory() . '/core/plugin-fw/';
487
 
660
  * @since 1.0
661
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
662
  */
663
+ public function get_response_code_message( $code, $args = array() ) {
664
+ extract( $args );
665
+
666
+ $messages = array(
667
+ '100' => __( 'Invalid Request', 'yith-plugin-fw' ),
668
+ '101' => __( 'Invalid license key', 'yith-plugin-fw' ),
669
+ '102' => __( 'Software has been deactivated', 'yith-plugin-fw' ),
670
+ '103' => __( 'Maximum number of activations exceeded', 'yith-plugin-fw' ),
671
+ '104' => __( 'Invalid instance ID', 'yith-plugin-fw' ),
672
+ '105' => __( 'Invalid security key', 'yith-plugin-fw' ),
673
+ '106' => __( 'License key has expired', 'yith-plugin-fw' ),
674
+ '107' => __( 'License key has been banned', 'yith-plugin-fw' ),
675
+ '108' => __( 'Current product is not included with your membership key', 'woocommerce-software-add-on' ),
676
+ '200' => sprintf( '<strong>%s</strong>! %s',__( 'Great', 'yith-plugin-fw' ), __( 'License successfully activated', 'yith-plugin-fw' ) ),
677
+ 'deactivated' => sprintf( '%s <strong>%s</strong>', __( 'License key deactivated for website', 'woocommerce-software-add-on' ), isset( $instance ) ? $instance : '' )
678
  );
679
 
680
+ return isset( $messages[$code] ) ? $messages[$code] : false;
681
+ }
682
+
683
+ /**
684
+ * Get the product name to display
685
+ *
686
+ * @param $product_name
687
+ *
688
+ * @return string the product name
689
+ *
690
+ * @since 2.2
691
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
692
+ */
693
+ public function display_product_name( $product_name ){
694
+ return str_replace( array( 'YITH', 'WooCommerce', 'Premium', 'Theme' ), '', $product_name );
695
+ }
696
+
697
+ public function get_number_of_membership_products(){
698
+ $activated_products = $this->get_activated_products();
699
+ $num_members_products_activate = 0;
700
+ foreach( $activated_products as $activated_product ){
701
+ if( isset( $activated_product['licence']['is_membership'] ) && $activated_product['licence']['is_membership'] ){
702
+ $num_members_products_activate++;
703
+ }
704
+ }
705
+ return $num_members_products_activate;
706
  }
707
 
708
  }
plugin-fw/licence/lib/yit-plugin-licence.php CHANGED
@@ -8,11 +8,11 @@
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
- if ( ! class_exists( 'YIT_Plugin_Licence' ) ) {
16
  /**
17
  * YIT Plugin Licence Panel
18
  *
@@ -23,7 +23,6 @@ if ( ! class_exists( 'YIT_Plugin_Licence' ) ) {
23
  * @since 1.0
24
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
25
  */
26
-
27
  class YIT_Plugin_Licence extends YIT_Licence {
28
 
29
  /**
@@ -59,27 +58,26 @@ if ( ! class_exists( 'YIT_Plugin_Licence' ) ) {
59
  public function __construct() {
60
  parent::__construct();
61
 
62
- if ( ! is_admin() ) {
63
- return;
64
- }
65
 
66
  $this->_settings = array(
67
  'parent_page' => 'yit_plugin_panel',
68
- 'page_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
69
- 'menu_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
70
  'capability' => 'manage_options',
71
  'page' => 'yith_plugins_activation',
72
  );
73
 
74
  add_action( 'admin_menu', array( $this, 'add_submenu_page' ), 99 );
75
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
76
- add_action( 'admin_enqueue_scripts', array( $this, 'localize_script' ), 15 );
77
  add_action( "wp_ajax_activate-{$this->_product_type}", array( $this, 'activate' ) );
 
78
  add_action( "wp_ajax_update_licence_information-{$this->_product_type}", array( $this, 'update_licence_information' ) );
79
  add_action( 'yit_licence_after_check', array( $this, 'licence_after_check' ) );
80
  }
81
 
82
-
83
  public function licence_after_check() {
84
  /* === Regenerate Update Plugins Transient === */
85
  YIT_Upgrade()->force_regenerate_update_transient();
@@ -133,16 +131,20 @@ if ( ! class_exists( 'YIT_Plugin_Licence' ) ) {
133
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
134
  */
135
  public function register( $plugin_init, $secret_key, $product_id ) {
136
- if ( ! function_exists( 'get_plugins' ) ) {
137
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
138
  }
139
 
140
  $plugins = get_plugins();
141
  $plugins[$plugin_init]['secret_key'] = $secret_key;
142
  $plugins[$plugin_init]['product_id'] = $product_id;
143
- $this->_products[$plugin_init] = $plugins[$plugin_init];
144
  }
145
- }
 
 
 
 
146
  }
147
 
148
  /**
@@ -152,7 +154,7 @@ if ( ! class_exists( 'YIT_Plugin_Licence' ) ) {
152
  * @since 1.0
153
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
154
  */
155
- if( ! function_exists( 'YIT_Plugin_Licence' ) ){
156
  function YIT_Plugin_Licence() {
157
  return YIT_Plugin_Licence::instance();
158
  }
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
+ if ( !class_exists( 'YIT_Plugin_Licence' ) ) {
16
  /**
17
  * YIT Plugin Licence Panel
18
  *
23
  * @since 1.0
24
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
25
  */
 
26
  class YIT_Plugin_Licence extends YIT_Licence {
27
 
28
  /**
58
  public function __construct() {
59
  parent::__construct();
60
 
61
+ if ( !is_admin() ) {
62
+ return;
63
+ }
64
 
65
  $this->_settings = array(
66
  'parent_page' => 'yit_plugin_panel',
67
+ 'page_title' => __( 'License Activation', 'yith-plugin-fw' ),
68
+ 'menu_title' => __( 'License Activation', 'yith-plugin-fw' ),
69
  'capability' => 'manage_options',
70
  'page' => 'yith_plugins_activation',
71
  );
72
 
73
  add_action( 'admin_menu', array( $this, 'add_submenu_page' ), 99 );
 
 
74
  add_action( "wp_ajax_activate-{$this->_product_type}", array( $this, 'activate' ) );
75
+ add_action( "wp_ajax_deactivate-{$this->_product_type}", array( $this, 'deactivate' ) );
76
  add_action( "wp_ajax_update_licence_information-{$this->_product_type}", array( $this, 'update_licence_information' ) );
77
  add_action( 'yit_licence_after_check', array( $this, 'licence_after_check' ) );
78
  }
79
 
80
+
81
  public function licence_after_check() {
82
  /* === Regenerate Update Plugins Transient === */
83
  YIT_Upgrade()->force_regenerate_update_transient();
131
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
132
  */
133
  public function register( $plugin_init, $secret_key, $product_id ) {
134
+ if ( !function_exists( 'get_plugins' ) ) {
135
  require_once ABSPATH . 'wp-admin/includes/plugin.php';
136
  }
137
 
138
  $plugins = get_plugins();
139
  $plugins[$plugin_init]['secret_key'] = $secret_key;
140
  $plugins[$plugin_init]['product_id'] = $product_id;
141
+ $this->_products[$plugin_init] = $plugins[$plugin_init];
142
  }
143
+
144
+ public function get_product_type() {
145
+ return $this->_product_type;
146
+ }
147
+ }
148
  }
149
 
150
  /**
154
  * @since 1.0
155
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
156
  */
157
+ if ( !function_exists( 'YIT_Plugin_Licence' ) ) {
158
  function YIT_Plugin_Licence() {
159
  return YIT_Plugin_Licence::instance();
160
  }
plugin-fw/licence/lib/yit-theme-licence.php CHANGED
@@ -8,11 +8,11 @@
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
- if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
16
  /**
17
  * YIT Plugin Licence Panel
18
  *
@@ -23,7 +23,6 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
23
  * @since 1.0
24
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
25
  */
26
-
27
  class YIT_Theme_Licence extends YIT_Licence {
28
 
29
  /**
@@ -50,6 +49,12 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
50
  */
51
  protected $_product_type = 'theme';
52
 
 
 
 
 
 
 
53
  /**
54
  * Constructor
55
  *
@@ -61,16 +66,15 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
61
 
62
  $this->_settings = array(
63
  'parent_page' => 'yit_product_panel',
64
- 'page_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
65
- 'menu_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
66
  'capability' => 'manage_options',
67
  'page' => 'yith_plugins_activation',
68
  );
69
 
70
  add_action( 'admin_menu', array( $this, 'add_submenu_page' ), 99 );
71
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
72
- add_action( 'admin_enqueue_scripts', array( $this, 'localize_script' ), 15 );
73
  add_action( "wp_ajax_activate-{$this->_product_type}", array( $this, 'activate' ) );
 
74
  add_action( "wp_ajax_update_licence_information-{$this->_product_type}", array( $this, 'update_licence_information' ) );
75
  }
76
 
@@ -101,15 +105,15 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
101
  public function add_submenu_page() {
102
 
103
  $admin_tree = array(
104
- 'parent_slug' => apply_filters( 'yit_licence_parent_slug', 'yit_panel'),
105
- 'page_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
106
- 'menu_title' => __( 'Licence Activation', 'yith-plugin-fw' ),
107
- 'capability' => 'manage_options',
108
- 'menu_slug' => 'yit_panel_licence',
109
- 'function' => 'show_activation_panel'
110
- );
111
-
112
- add_submenu_page( $admin_tree['parent_slug'],
113
  sprintf( __( '%s', 'yith-plugin-fw' ), $admin_tree['page_title'] ),
114
  sprintf( __( '%s', 'yith-plugin-fw' ), $admin_tree['menu_title'] ),
115
  $admin_tree['capability'],
@@ -122,8 +126,8 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
122
  * Premium product registration
123
  *
124
  * @param $product_init | string | The product init file
125
- * @param $secret_key | string | The product secret key
126
- * @param $product_id | string | The product slug (product_id)
127
  *
128
  * @return void
129
  *
@@ -131,11 +135,44 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
131
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
132
  */
133
  public function register( $product_init, $secret_key, $product_id ) {
134
- $theme = wp_get_theme();
135
- $products[$product_init]['Name'] = $theme->Name;
136
- $products[$product_init]['secret_key'] = $secret_key;
137
- $products[$product_init]['product_id'] = $product_id;
138
- $this->_products[$product_init] = $products[$product_init];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  }
140
  }
141
  }
@@ -147,7 +184,7 @@ if ( ! class_exists( 'YIT_Theme_Licence' ) ) {
147
  * @since 1.0
148
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
149
  */
150
- if( ! function_exists( 'YIT_Theme_Licence' ) ){
151
  function YIT_Theme_Licence() {
152
  return YIT_Theme_Licence::instance();
153
  }
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
+ if ( !class_exists( 'YIT_Theme_Licence' ) ) {
16
  /**
17
  * YIT Plugin Licence Panel
18
  *
23
  * @since 1.0
24
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
25
  */
 
26
  class YIT_Theme_Licence extends YIT_Licence {
27
 
28
  /**
49
  */
50
  protected $_product_type = 'theme';
51
 
52
+ /**
53
+ * @var string Old theme licence works until 28 January 2016
54
+ * @since 1.0
55
+ */
56
+ protected $_old_licence_expires = 1453939200; //28 January 2016
57
+
58
  /**
59
  * Constructor
60
  *
66
 
67
  $this->_settings = array(
68
  'parent_page' => 'yit_product_panel',
69
+ 'page_title' => __( 'License Activation', 'yith-plugin-fw' ),
70
+ 'menu_title' => __( 'License Activation', 'yith-plugin-fw' ),
71
  'capability' => 'manage_options',
72
  'page' => 'yith_plugins_activation',
73
  );
74
 
75
  add_action( 'admin_menu', array( $this, 'add_submenu_page' ), 99 );
 
 
76
  add_action( "wp_ajax_activate-{$this->_product_type}", array( $this, 'activate' ) );
77
+ add_action( "wp_ajax_deactivate-{$this->_product_type}", array( $this, 'deactivate' ) );
78
  add_action( "wp_ajax_update_licence_information-{$this->_product_type}", array( $this, 'update_licence_information' ) );
79
  }
80
 
105
  public function add_submenu_page() {
106
 
107
  $admin_tree = array(
108
+ 'parent_slug' => apply_filters( 'yit_licence_parent_slug', 'yit_panel' ),
109
+ 'page_title' => __( 'License Activation', 'yith-plugin-fw' ),
110
+ 'menu_title' => __( 'License Activation', 'yith-plugin-fw' ),
111
+ 'capability' => 'manage_options',
112
+ 'menu_slug' => 'yit_panel_license',
113
+ 'function' => 'show_activation_panel'
114
+ );
115
+
116
+ add_submenu_page( $admin_tree['parent_slug'],
117
  sprintf( __( '%s', 'yith-plugin-fw' ), $admin_tree['page_title'] ),
118
  sprintf( __( '%s', 'yith-plugin-fw' ), $admin_tree['menu_title'] ),
119
  $admin_tree['capability'],
126
  * Premium product registration
127
  *
128
  * @param $product_init | string | The product init file
129
+ * @param $secret_key | string | The product secret key
130
+ * @param $product_id | string | The product slug (product_id)
131
  *
132
  * @return void
133
  *
135
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
136
  */
137
  public function register( $product_init, $secret_key, $product_id ) {
138
+ $theme = wp_get_theme();
139
+ $products[$product_init]['Name'] = $theme->Name;
140
+ $products[$product_init]['secret_key'] = $secret_key;
141
+ $products[$product_init]['product_id'] = $product_id;
142
+ $this->_products[$product_init] = $products[$product_init];
143
+ }
144
+
145
+ /**
146
+ * Check for old licence
147
+ *
148
+ * @return bool True for old licence period, false otherwise
149
+ * @since 2.2
150
+ * @author Andrea Grillo <andrea.grillo@yithemes.com>
151
+ */
152
+ public function show_old_licence_message() {
153
+ return time() < $this->_old_licence_expires;
154
+ }
155
+
156
+ public function get_old_licence_message() {
157
+ ob_start(); ?>
158
+ <div class="activation-faq">
159
+ <h3><?php _e( 'I cannot find the license key for activating the theme I have bought some time ago. Where can I find it?', 'yith-plugin-fw' ) ?></h3>
160
+
161
+ <p>
162
+ <?php
163
+ _e( 'If you have purchased one of our products before 27 January 2015, you can benefit from support and updates (the services offered with the license)
164
+ until 27 January 2016 and you do not have to purchase it again to get a new license key, because, before this date, your license used to be activated automatically by our system.
165
+ After 27 January 2016, instead, if you want to benefit from support and updates you have to buy a new license and activate it through the license key you will be
166
+ provided with and that you can find in your YIThemes account, in section "My licenses".', 'yith-plugin-fw' )
167
+ ?>
168
+ </p>
169
+ </div>
170
+ <?php
171
+ echo ob_get_clean();
172
+ }
173
+
174
+ public function get_product_type() {
175
+ return $this->_product_type;
176
  }
177
  }
178
  }
184
  * @since 1.0
185
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
186
  */
187
+ if ( !function_exists( 'YIT_Theme_Licence' ) ) {
188
  function YIT_Theme_Licence() {
189
  return YIT_Theme_Licence::instance();
190
  }
plugin-fw/licence/templates/panel/activation/activation-panel.php CHANGED
@@ -8,45 +8,40 @@
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
 
11
- $to_active_products = $this->get_to_active_products();
12
- $activated_products = $this->get_activated_products();
13
- $no_active_products = $this->get_no_active_licence_key();
14
- $expired_products = isset( $no_active_products[ '106' ] ) ? $no_active_products[ '106' ] : array();
15
- $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_products[ '107' ] : array();
 
 
 
 
16
  ?>
17
 
18
  <div class="yit-container product-licence-activation">
19
- <h2><?php _e( 'Yithemes Licence Activation', 'yith-plugin-fw' ) ?></h2>
20
-
21
- <?php if( is_a( $this, 'YIT_Theme_Licence' ) ) : ?>
22
- <div class="activation-faq">
23
- <h3><?php _e( 'I cannot find the license key for activating the theme I have bought some time ago. Where can I find it?', 'yith-plugin-fw' ) ?></h3>
24
- <p>
25
- <?php
26
- _e( 'If you have purchased one of our products before 27 January 2015, you can benefit from support and updates (the services offered with the license)
27
- until 27 January 2016 and you do not have to purchase it again to get a new license key, because, before this date, your license used to be activated automatically by our system.
28
- After 27 January 2016, instead, if you want to benefit from support and updates you have to buy a new license and activate it through the license key you will be
29
- provided with and that you can find in your YIThemes account, in section "My licenses".', 'yith-plugin-fw' )
30
- ?>
31
- </p>
32
- </div>
33
- <?php endif; ?>
34
 
35
  <div class="licence-check-section">
36
  <form method="post" id="licence-check-update" action="<?php echo admin_url( 'admin-ajax.php' ) ?>">
37
  <span class="licence-label" style="display: block;"><?php _e( 'Have you updated your licenses? Have you asked for an extension? Update information concerning your products.', 'yith-plugin-fw' ); ?></span>
38
- <input type="hidden" name="action" value="update_licence_information-<?php echo $this->_product_type ?>" />
39
- <input type="submit" name="submit" value="<?php _e( 'Update licence information', 'yith-plugin-fw' ) ?>" class="button-licence licence-check" />
40
  <div class="spinner"></div>
41
  </form>
42
  </div>
43
 
44
- <!-- To Active Products -->
 
 
45
 
 
46
 
47
  <?php if( ! empty( $to_active_products ) ) : ?>
48
- <h3 class="to-active">
49
- <?php _e( 'Products to be activated', 'yith-plugin-fw' ) ?>
50
  <span class="spinner"></span>
51
  </h3>
52
  <div class="to-active-wrapper">
@@ -56,23 +51,22 @@ $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_produc
56
  <tbody>
57
  <tr class="product-row">
58
  <td class="product-name">
59
- <?php echo $info['Name'] ?>
60
  </td>
61
  <td>
62
  <input type="email" name="email" placeholder="Your email on Yithemes.com" value="" class="user-email" />
63
  </td>
64
  <td>
65
- <input type="text" name="licence_key" placeholder="Licence Key" value="" class="licence-key" />
66
  </td>
67
  <td class="activate-button">
68
  <input type="submit" name="submit" value="<?php _e( 'Activate', 'yith-plugin-fw' )?>" class="button-licence licence-activation" data-formid="<?php echo $info['product_id'] ?>"/>
69
  </td>
70
  </tr>
71
- <input type="hidden" name="action" value="activate-<?php echo $this->_product_type ?>" />
72
  <input type="hidden" name="product_init" value="<?php echo $init ?>" />
73
  </tbody>
74
  </table>
75
- <div class="spinner"></div>
76
  <div class="message-wrapper">
77
  <span class="message arrow-left"></span>
78
  </div>
@@ -84,29 +78,78 @@ $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_produc
84
  <!-- Activated Products -->
85
 
86
  <?php if( ! empty( $activated_products ) ) : ?>
87
- <h3><?php _e( 'Activated', 'yith-plugin-fw' ) ?></h3>
88
- <table class="expired-table">
 
 
 
89
  <thead>
90
  <tr>
91
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
92
- <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
93
- <th><?php _e( 'Licence Key', 'yith-plugin-fw' ) ?></th>
 
 
 
94
  <th><?php _e( 'Expires', 'yith-plugin-fw' ) ?></th>
95
- <th><?php _e( 'Remaining', 'yith-plugin-fw' ) ?></th>
96
- <th><?php _e( 'Renew', 'yith-plugin-fw' ) ?></th>
 
 
 
 
 
 
 
97
  </tr>
98
  </thead>
99
  <tbody>
100
  <?php foreach( $activated_products as $init => $info ) : ?>
101
  <tr>
102
- <td class="product-name"><?php echo $info['Name'] ?></td>
103
- <td class="product-licence-email"><?php echo $info['licence']['email'] ?></td>
104
- <td class="product-licence-key"><?php echo $info['licence']['licence_key'] ?></td>
105
- <td class="product-licence-expires"><?php echo date("F j, Y", $info['licence']['licence_expires'] ); ?></td>
106
- <td class="product-licence-remaining">
107
- <?php printf( __( '%1s out of %2s', 'yith-plugin-fw' ), $info['licence']['activation_remaining'], $info['licence']['activation_limit'] ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  </td>
109
- <td><a class="button-licence licence-renew" href="<?php echo $this->get_renewing_uri( $info['licence']['licence_key'] ) ?>" target="_blank"><?php _e( 'Renew', 'yith-plugin-fw' ) ?></a></td>
110
  </tr>
111
  <?php endforeach; ?>
112
  </tbody>
@@ -121,16 +164,22 @@ $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_produc
121
  <thead>
122
  <tr>
123
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
124
- <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
125
- <th><?php _e( 'Licence Key', 'yith-plugin-fw' ) ?></th>
 
 
126
  </tr>
127
  </thead>
128
  <tbody>
129
  <?php foreach( $banned_products as $init => $info ) : ?>
130
  <tr>
131
- <td class="product-name"><?php echo $info['Name'] ?></td>
132
- <td class="product-licence-email"><?php echo $info['licence']['email'] ?></td>
133
- <td class="product-licence-key"><?php echo $info['licence']['licence_key'] ?></td>
 
 
 
 
134
  </tr>
135
  <?php endforeach; ?>
136
  </tbody>
@@ -145,20 +194,44 @@ $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_produc
145
  <thead>
146
  <tr>
147
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
148
- <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
149
- <th><?php _e( 'Licence Key', 'yith-plugin-fw' ) ?></th>
 
 
 
 
150
  <th><?php _e( 'Expires', 'yith-plugin-fw' ) ?></th>
151
- <th><?php _e( 'Renew', 'yith-plugin-fw' ) ?></th>
 
 
 
152
  </tr>
153
  </thead>
154
  <tbody>
155
  <?php foreach( $expired_products as $init => $info ) : ?>
156
  <tr>
157
- <td class="product-name"><?php echo $info['Name'] ?></td>
158
- <td class="product-licence-email"><?php echo $info['licence']['email'] ?></td>
159
- <td class="product-licence-key"><?php echo $info['licence']['licence_key'] ?></td>
 
 
 
 
 
 
160
  <td class="product-licence-expires"><?php echo date("F j, Y", $info['licence']['licence_expires'] ); ?></td>
161
- <td><a class="button-licence licence-renew" href="<?php echo $this->get_renewing_uri( $info['licence']['licence_key'] ) ?>" target="_blank"><?php _e( 'Renew', 'yith-plugin-fw' ) ?></a></td>
 
 
 
 
 
 
 
 
 
 
 
162
  </tr>
163
  <?php endforeach; ?>
164
  </tbody>
8
  * http://www.gnu.org/licenses/gpl-3.0.txt
9
  */
10
 
11
+ $to_active_products = $this->get_to_active_products();
12
+ $activated_products = $this->get_activated_products();
13
+ $no_active_products = $this->get_no_active_licence_key();
14
+ $expired_products = isset( $no_active_products[ '106' ] ) ? $no_active_products[ '106' ] : array();
15
+ $banned_products = isset( $no_active_products[ '107' ] ) ? $no_active_products[ '107' ] : array();
16
+ $notice = isset( $notice ) ? $notice : '';
17
+ $notice_class = ! empty( $notice ) ? 'notice notice-success visible' : 'notice notice-success';
18
+ $to_activate_check = $this instanceof YIT_Theme_Licence ? 1 : 2;
19
+ $num_members_products_activate = $this->get_number_of_membership_products();
20
  ?>
21
 
22
  <div class="yit-container product-licence-activation">
23
+ <h2><?php _e( 'Yithemes License Activation', 'yith-plugin-fw' ) ?></h2>
24
+
25
+ <?php $this instanceof YIT_Theme_Licence && $this->show_old_licence_message() && $this->get_old_licence_message(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  <div class="licence-check-section">
28
  <form method="post" id="licence-check-update" action="<?php echo admin_url( 'admin-ajax.php' ) ?>">
29
  <span class="licence-label" style="display: block;"><?php _e( 'Have you updated your licenses? Have you asked for an extension? Update information concerning your products.', 'yith-plugin-fw' ); ?></span>
30
+ <input type="hidden" name="action" value="update_licence_information-<?php echo $this->get_product_type(); ?>" />
31
+ <input type="submit" name="submit" value="<?php _e( 'Update license information', 'yith-plugin-fw' ) ?>" class="button-licence licence-check" />
32
  <div class="spinner"></div>
33
  </form>
34
  </div>
35
 
36
+ <div id="yith-licence-notice" class="<?php echo $notice_class ?>">
37
+ <p class="yith-licence-notice-message"><?php echo $notice ?></p>
38
+ </div>
39
 
40
+ <!-- To Active Products -->
41
 
42
  <?php if( ! empty( $to_active_products ) ) : ?>
43
+ <h3 id="products-to-active" class="to-active">
44
+ <?php echo _n( 'Product to activate', 'Products to activate', $to_activate_check, 'yith-plugin-fw' ) ?>
45
  <span class="spinner"></span>
46
  </h3>
47
  <div class="to-active-wrapper">
51
  <tbody>
52
  <tr class="product-row">
53
  <td class="product-name">
54
+ <?php echo $this->display_product_name( $info['Name'] ) ?>
55
  </td>
56
  <td>
57
  <input type="email" name="email" placeholder="Your email on Yithemes.com" value="" class="user-email" />
58
  </td>
59
  <td>
60
+ <input type="text" name="licence_key" placeholder="License Key" value="" class="licence-key" />
61
  </td>
62
  <td class="activate-button">
63
  <input type="submit" name="submit" value="<?php _e( 'Activate', 'yith-plugin-fw' )?>" class="button-licence licence-activation" data-formid="<?php echo $info['product_id'] ?>"/>
64
  </td>
65
  </tr>
66
+ <input type="hidden" name="action" value="activate-<?php echo $this->get_product_type(); ?>" />
67
  <input type="hidden" name="product_init" value="<?php echo $init ?>" />
68
  </tbody>
69
  </table>
 
70
  <div class="message-wrapper">
71
  <span class="message arrow-left"></span>
72
  </div>
78
  <!-- Activated Products -->
79
 
80
  <?php if( ! empty( $activated_products ) ) : ?>
81
+ <h3 id="activated-products">
82
+ <?php _e( 'Activated', 'yith-plugin-fw' ) ?>
83
+ <span class="spinner"></span>
84
+ </h3>
85
+ <table class="activated-table">
86
  <thead>
87
  <tr>
88
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
89
+ <?php if( $this->show_extra_info ) : ?>
90
+ <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
91
+ <th><?php _e( 'License Key', 'yith-plugin-fw' ) ?></th>
92
+ <?php endif; ?>
93
+
94
  <th><?php _e( 'Expires', 'yith-plugin-fw' ) ?></th>
95
+
96
+ <?php if( $this->show_extra_info ) : ?>
97
+ <th><?php _e( 'Remaining', 'yith-plugin-fw' ) ?></th>
98
+ <?php if( $num_members_products_activate ) : ?>
99
+ <th><?php _e( 'Membership', 'yith-plugin-fw' ) ?></th>
100
+ <?php endif; ?>
101
+ <?php endif; ?>
102
+
103
+ <th><?php _e( 'License Actions', 'yith-plugin-fw' ) ?></th>
104
  </tr>
105
  </thead>
106
  <tbody>
107
  <?php foreach( $activated_products as $init => $info ) : ?>
108
  <tr>
109
+ <td class="product-name">
110
+ <?php echo $this->display_product_name( $info['Name'] ) ?>
111
+ </td>
112
+
113
+ <?php if( $this->show_extra_info ) : ?>
114
+ <td class="product-licence-email">
115
+ <?php echo $info['licence']['email'] ?>
116
+ </td>
117
+ <td class="product-licence-key">
118
+ <?php echo $info['licence']['licence_key'] ?>
119
+ </td>
120
+ <?php endif; ?>
121
+
122
+ <td class="product-licence-expires">
123
+ <?php echo date("F j, Y", $info['licence']['licence_expires'] ); ?>
124
+ </td>
125
+
126
+ <?php if( $this->show_extra_info ) : ?>
127
+ <td class="product-licence-remaining">
128
+ <?php printf( __( '%1s out of %2s', 'yith-plugin-fw' ), $info['licence']['activation_remaining'], $info['licence']['activation_limit'] ); ?>
129
+ </td>
130
+ <?php if( $num_members_products_activate ) : ?>
131
+ <td class="product-licence-membership">
132
+ <span class="dashicons dashicons-<?php echo $info['licence']['is_membership'] ? 'yes' : 'no-alt' ?>"></span>
133
+ </td>
134
+ <?php endif; ?>
135
+ <?php endif; ?>
136
+
137
+ <td>
138
+ <a class="button-licence licence-deactive"
139
+ href="#"
140
+ data-licence-email="<?php echo $info['licence']['email'] ?>"
141
+ data-licence-key="<?php echo $info['licence']['licence_key'] ?>"
142
+ data-product-init="<?php echo $init ?>"
143
+ data-action="deactivate-<?php echo $this->get_product_type(); ?>">
144
+ <?php _e( 'Deactivate', 'yith-plugin-fw' ) ?>
145
+ </a>
146
+
147
+ <?php if( ! $info['licence']['is_membership'] && $this->show_renew_button ) : ?>
148
+ <a class="button-licence licence-renew" href="<?php echo $this->get_renewing_uri( $info['licence']['licence_key'] ) ?>" target="_blank">
149
+ <?php _e( 'Renew', 'yith-plugin-fw' ) ?>
150
+ </a>
151
+ <?php endif; ?>
152
  </td>
 
153
  </tr>
154
  <?php endforeach; ?>
155
  </tbody>
164
  <thead>
165
  <tr>
166
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
167
+ <?php if( $this->show_extra_info ) : ?>
168
+ <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
169
+ <th><?php _e( 'License Key', 'yith-plugin-fw' ) ?></th>
170
+ <?php endif; ?>
171
  </tr>
172
  </thead>
173
  <tbody>
174
  <?php foreach( $banned_products as $init => $info ) : ?>
175
  <tr>
176
+ <td class="product-name">
177
+ <?php echo $this->display_product_name( $info['Name'] ) ?>
178
+ </td>
179
+ <?php if( $this->show_extra_info ) : ?>
180
+ <td class="product-licence-email"><?php echo $info['licence']['email'] ?></td>
181
+ <td class="product-licence-key"><?php echo $info['licence']['licence_key'] ?></td>
182
+ <?php endif; ?>
183
  </tr>
184
  <?php endforeach; ?>
185
  </tbody>
194
  <thead>
195
  <tr>
196
  <th><?php _e( 'Product Name', 'yith-plugin-fw' ) ?></th>
197
+
198
+ <?php if( $this->show_extra_info ) : ?>
199
+ <th><?php _e( 'Email', 'yith-plugin-fw' ) ?></th>
200
+ <th><?php _e( 'License Key', 'yith-plugin-fw' ) ?></th>
201
+ <?php endif; ?>
202
+
203
  <th><?php _e( 'Expires', 'yith-plugin-fw' ) ?></th>
204
+
205
+ <?php if( $this->show_renew_button ) : ?>
206
+ <th><?php _e( 'Renew', 'yith-plugin-fw' ) ?></th>
207
+ <?php endif; ?>
208
  </tr>
209
  </thead>
210
  <tbody>
211
  <?php foreach( $expired_products as $init => $info ) : ?>
212
  <tr>
213
+ <td class="product-name">
214
+ <?php echo $this->display_product_name( $info['Name'] ) ?>
215
+ </td>
216
+
217
+ <?php if( $this->show_extra_info ) : ?>
218
+ <td class="product-licence-email"><?php echo $info['licence']['email'] ?></td>
219
+ <td class="product-licence-key"><?php echo $info['licence']['licence_key'] ?></td>
220
+ <?php endif; ?>
221
+
222
  <td class="product-licence-expires"><?php echo date("F j, Y", $info['licence']['licence_expires'] ); ?></td>
223
+
224
+ <?php if( $this->show_renew_button ) : ?>
225
+ <td>
226
+ <a class="button-licence licence-renew" href="<?php echo $this->get_renewing_uri( $info['licence']['licence_key'] ) ?>" target="_blank">
227
+ <?php if( $info['licence']['is_membership'] ) : ?>
228
+ <?php _e( 'Order again', 'yith-plugin-fw' ) ?>
229
+ <?php else : ?>
230
+ <?php __( 'Renew license', 'yith-plugin-fw' ) ?>
231
+ <?php endif; ?>
232
+ </a>
233
+ </td>
234
+ <?php endif; ?>
235
  </tr>
236
  <?php endforeach; ?>
237
  </tbody>
plugin-fw/templates/metaboxes/types/number.php CHANGED
@@ -14,12 +14,25 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  extract( $args );
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  ?>
18
  <div id="<?php echo $id ?>-container" <?php if ( isset($deps) ): ?>data-field="<?php echo $id ?>" data-dep="<?php echo $deps['ids'] ?>" data-value="<?php echo $deps['values'] ?>" <?php endif ?>>
19
  <div class="rm_number">
20
  <label for="<?php echo $id ?>"><?php echo $label ?></label>
21
  <span class="field">
22
- <input class="number" type="text" id="<?php echo $id ?>" name="<?php echo $name ?>" <?php echo $min.' '.$max ?> value="<?php echo esc_attr( $value ) ?>" <?php if( isset( $std ) ) : ?>data-std="<?php echo $std ?>"<?php endif ?>" />
23
  <?php yit_string( '<span class="description">', $desc, '</span>' ); ?>
24
  </span>
25
  </div>
14
 
15
  extract( $args );
16
 
17
+ $min_max_attr = $step_attr = '';
18
+
19
+ if( isset( $min ) ){
20
+ $min_max_attr .= " min='{$min}'";
21
+ }
22
+
23
+ if( isset( $max ) ){
24
+ $min_max_attr .= " max='{$max}'";
25
+ }
26
+
27
+ if( isset( $step ) ){
28
+ $step_attr .= "step='{$step}'";
29
+ }
30
  ?>
31
  <div id="<?php echo $id ?>-container" <?php if ( isset($deps) ): ?>data-field="<?php echo $id ?>" data-dep="<?php echo $deps['ids'] ?>" data-value="<?php echo $deps['values'] ?>" <?php endif ?>>
32
  <div class="rm_number">
33
  <label for="<?php echo $id ?>"><?php echo $label ?></label>
34
  <span class="field">
35
+ <input class="number" type="text" id="<?php echo $id ?>" name="<?php echo $name ?>" <?php echo $step_attr ?> <?php echo $min_max_attr ?> value="<?php echo esc_attr( $value ) ?>" <?php if( isset( $std ) ) : ?>data-std="<?php echo $std ?>"<?php endif ?>" />
36
  <?php yit_string( '<span class="description">', $desc, '</span>' ); ?>
37
  </span>
38
  </div>
plugin-fw/templates/panel/types/upload.php CHANGED
@@ -26,9 +26,10 @@ $name = $this->get_name_field( $option['id'] );
26
  ?>
27
  <div id="<?php echo $id ?>-container" >
28
  <div id="<?php echo $id ?>-container" class="yit_options rm_option rm_input rm_text rm_upload" <?php if ( isset( $option['deps'] ) ): ?>data-field="<?php echo $id ?>" data-dep="<?php echo $this->get_id_field( $option['deps']['ids'] ) ?>" data-value="<?php echo $option['deps']['values'] ?>" <?php endif ?>>
29
- <div class="option">
30
  <input type="text" name="<?php echo $name ?>" id="<?php echo $id ?>" value="<?php echo $db_value == '1' ? '' : esc_attr( $db_value ) ?>" class="upload_img_url" />
31
  <input type="button" value="<?php _e( 'Upload', 'yith-plugin-fw' ) ?>" id="<?php echo $id ?>-button" class="upload_button button" />
 
32
  </div>
33
  <div class="clear"></div>
34
  <span class="description"><?php echo $option['desc'] ?></span>
26
  ?>
27
  <div id="<?php echo $id ?>-container" >
28
  <div id="<?php echo $id ?>-container" class="yit_options rm_option rm_input rm_text rm_upload" <?php if ( isset( $option['deps'] ) ): ?>data-field="<?php echo $id ?>" data-dep="<?php echo $this->get_id_field( $option['deps']['ids'] ) ?>" data-value="<?php echo $option['deps']['values'] ?>" <?php endif ?>>
29
+ <div class="option yit-upload">
30
  <input type="text" name="<?php echo $name ?>" id="<?php echo $id ?>" value="<?php echo $db_value == '1' ? '' : esc_attr( $db_value ) ?>" class="upload_img_url" />
31
  <input type="button" value="<?php _e( 'Upload', 'yith-plugin-fw' ) ?>" id="<?php echo $id ?>-button" class="upload_button button" />
32
+ <input type="button" value="<?php _e( 'Reset', 'yith-plugin-fw' ) ?>" id="<?php echo $id ?>-button_reset" class="upload_button_reset button" data-default="<?php echo $option['std'] ?>"/>
33
  </div>
34
  <div class="clear"></div>
35
  <span class="description"><?php echo $option['desc'] ?></span>
plugin-fw/yit-functions.php CHANGED
@@ -8,11 +8,11 @@
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
- if ( ! function_exists( 'yit_plugin_locate_template' ) ) {
16
  /**
17
  * Locate the templates and return the path of the file found
18
  *
@@ -23,12 +23,12 @@ if ( ! function_exists( 'yit_plugin_locate_template' ) ) {
23
  * @return string
24
  * @since 2.0.0
25
  */
26
- function yit_plugin_locate_template( $plugin_basename, $path, $var = NULL ) {
27
 
28
  $template_path = '/theme/templates/' . $path;
29
 
30
- $located = locate_template( array(
31
- $template_path
32
  ) );
33
 
34
  if ( ! $located ) {
@@ -40,7 +40,7 @@ if ( ! function_exists( 'yit_plugin_locate_template' ) ) {
40
 
41
  }
42
 
43
- if ( ! function_exists( 'yit_plugin_get_template' ) ) {
44
  /**
45
  * Retrieve a template file.
46
  *
@@ -52,30 +52,30 @@ if ( ! function_exists( 'yit_plugin_get_template' ) ) {
52
  * @return string
53
  * @since 2.0.0
54
  */
55
- function yit_plugin_get_template( $plugin_basename, $path, $var = null, $return = false ) {
56
 
57
- $located = yit_plugin_locate_template( $plugin_basename, $path, $var );
58
 
59
- if ( $var && is_array( $var ) ) {
60
- extract( $var );
61
  }
62
 
63
  if ( $return ) {
64
- ob_start();
65
  }
66
 
67
  // include file located
68
- if( file_exists( $located ) ){
69
- include( $located );
70
  }
71
 
72
  if ( $return ) {
73
- return ob_get_clean();
74
  }
75
  }
76
  }
77
 
78
- if ( ! function_exists( 'yit_plugin_content' ) ) {
79
  /**
80
  * Return post content with read more link (if needed)
81
  *
@@ -88,85 +88,79 @@ if ( ! function_exists( 'yit_plugin_content' ) ) {
88
  * @return string
89
  * @since 2.0.0
90
  */
91
- function yit_plugin_content( $what = 'content', $limit = 25, $more_text = '', $split = '[...]', $in_paragraph = 'true' ) {
92
  if ( $what == 'content' ) {
93
- $content = get_the_content( $more_text );
94
- }
95
- else {
96
  if ( $what == 'excerpt' ) {
97
- $content = get_the_excerpt();
98
- }
99
- else {
100
  $content = $what;
101
  }
102
  }
103
 
104
  if ( $limit == 0 ) {
105
  if ( $what == 'excerpt' ) {
106
- $content = apply_filters( 'the_excerpt', $content );
107
- }
108
- else {
109
- $content = preg_replace( '/<img[^>]+./', '', $content ); //remove images
110
- $content = apply_filters( 'the_content', $content );
111
- $content = str_replace( ']]>', ']]&gt;', $content );
112
  }
113
 
114
  return $content;
115
  }
116
 
117
  // remove the tag more from the content
118
- if ( preg_match( "/<(a)[^>]*class\s*=\s*(['\"])more-link\\2[^>]*>(.*?)<\/\\1>/", $content, $matches ) ) {
119
 
120
- if ( strpos( $matches[0], '[button' ) ) {
121
- $more_link = str_replace( 'href="#"', 'href="' . get_permalink() . '"', do_shortcode( $matches[3] ) );
122
- }
123
- else {
124
- $more_link = $matches[0];
125
  }
126
 
127
- $content = str_replace( $more_link, '', $content );
128
  $split = '';
129
  }
130
 
131
  if ( empty( $content ) ) {
132
  return;
133
  }
134
- $content = explode( ' ', $content );
135
 
136
  if ( ! empty( $more_text ) && ! isset( $more_link ) ) {
137
  //array_pop( $content );
138
- $more_link = strpos( $more_text, '<a class="btn"' ) ? $more_text : '<a class="read-more' . apply_filters( 'yit_simple_read_more_classes', ' ' ) . '" href="' . get_permalink() . '">' . $more_text . '</a>';
139
  $split = '';
140
- }
141
- elseif ( ! isset( $more_link ) ) {
142
  $more_link = '';
143
  }
144
 
145
  // split
146
- if ( count( $content ) >= $limit ) {
147
  $split_content = '';
148
  for ( $i = 0; $i < $limit; $i ++ ) {
149
- $split_content .= $content[$i] . ' ';
150
  }
151
 
152
  $content = $split_content . $split;
153
- }
154
- else {
155
- $content = implode( " ", $content );
156
  }
157
 
158
  // TAGS UNCLOSED
159
- $tags = array();
160
  // get all tags opened
161
- preg_match_all( "/(<([\w]+)[^>]*>)/", $content, $tags_opened, PREG_SET_ORDER );
162
  foreach ( $tags_opened as $tag ) {
163
- $tags[] = $tag[2];
164
  }
165
 
166
  // get all tags closed and remove it from the tags opened.. the rest will be closed at the end of the content
167
- preg_match_all( "/(<\/([\w]+)[^>]*>)/", $content, $tags_closed, PREG_SET_ORDER );
168
  foreach ( $tags_closed as $tag ) {
169
- unset( $tags[array_search( $tag[2], $tags )] );
170
  }
171
 
172
  // close the tags
@@ -178,16 +172,16 @@ if ( ! function_exists( 'yit_plugin_content' ) ) {
178
 
179
  //$content = preg_replace( '/\[.+\]/', '', $content );
180
  if ( $in_paragraph == true ): $content .= $more_link; endif;
181
- $content = preg_replace( '/<img[^>]+./', '', $content ); //remove images
182
- $content = apply_filters( 'the_content', $content );
183
- $content = str_replace( ']]>', ']]&gt;', $content ); // echo str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $content );
184
  if ( $in_paragraph == false ): $content .= $more_link; endif;
185
 
186
  return $content;
187
  }
188
  }
189
 
190
- if ( ! function_exists( 'yit_plugin_string' ) ) {
191
  /**
192
  * Simple echo a string, with a before and after string, only if the main string is not empty.
193
  *
@@ -199,10 +193,10 @@ if ( ! function_exists( 'yit_plugin_string' ) ) {
199
  * @return string The complete string, if the main string is not empty or null
200
  * @since 2.0.0
201
  */
202
- function yit_plugin_string( $before = '', $string = '', $after = '', $echo = true ) {
203
  $html = '';
204
 
205
- if ( $string != '' AND ! is_null( $string ) ) {
206
  $html = $before . $string . $after;
207
  }
208
 
@@ -214,7 +208,7 @@ if ( ! function_exists( 'yit_plugin_string' ) ) {
214
  }
215
  }
216
 
217
- if ( ! function_exists( 'yit_plugin_decode_title' ) ) {
218
  /**
219
  * Change some special characters to put easily html into a string
220
  *
@@ -228,14 +222,14 @@ if ( ! function_exists( 'yit_plugin_decode_title' ) ) {
228
  *
229
  * @since 1.0
230
  */
231
- function yit_plugin_decode_title( $title ) {
232
- $replaces = apply_filters( 'yit_title_special_characters', array() );
233
 
234
- return preg_replace( array_keys( $replaces ), array_values( $replaces ), $title );
235
  }
236
  }
237
 
238
- if ( ! function_exists( 'yit_plugin_get_attachment_id' ) ) {
239
 
240
  /**
241
  * Return the ID of an attachment.
@@ -247,49 +241,49 @@ if ( ! function_exists( 'yit_plugin_get_attachment_id' ) ) {
247
  * @since 2.0.0
248
  */
249
 
250
- function yit_plugin_get_attachment_id( $url ) {
251
 
252
- $upload_dir = wp_upload_dir();
253
- $dir = trailingslashit( $upload_dir['baseurl'] );
254
 
255
- if ( false === strpos( $url, $dir ) ) {
256
  return false;
257
  }
258
 
259
- $file = basename( $url );
260
 
261
- $query = array(
262
  'post_type' => 'attachment',
263
  'fields' => 'ids',
264
- 'meta_query' => array(
265
- array(
266
  'value' => $file,
267
  'compare' => 'LIKE',
268
- )
269
- )
270
  );
271
 
272
- $query['meta_query'][0]['key'] = '_wp_attached_file';
273
- $ids = get_posts( $query );
274
 
275
  foreach ( $ids as $id ) {
276
- $attachment_image = wp_get_attachment_image_src( $id, 'full' );
277
- if ( $url == array_shift( $attachment_image ) || $url == str_replace( 'https://', 'http://', array_shift( $attachment_image ) ) ) {
278
  return $id;
279
  }
280
  }
281
- $query['meta_query'][0]['key'] = '_wp_attachment_metadata';
282
- $ids = get_posts( $query );
283
 
284
  foreach ( $ids as $id ) {
285
 
286
- $meta = wp_get_attachment_metadata( $id );
287
- if ( ! isset( $meta['sizes'] ) ) {
288
  continue;
289
  }
290
 
291
- foreach ( (array) $meta['sizes'] as $size => $values ) {
292
- if ( $values['file'] == $file && $url == str_replace( 'https://', 'http://', array_shift( wp_get_attachment_image_src( $id, $size ) ) ) ) {
293
 
294
  return $id;
295
  }
@@ -300,7 +294,7 @@ if ( ! function_exists( 'yit_plugin_get_attachment_id' ) ) {
300
  }
301
  }
302
 
303
- if ( ! function_exists( 'yit_enqueue_script' ) ) {
304
  /**
305
  * Enqueues script.
306
  *
@@ -310,19 +304,18 @@ if ( ! function_exists( 'yit_enqueue_script' ) ) {
310
  * @author Simone D'Amico <simone.damico@yithemes.com>
311
  * @see yit_register_script() For parameter information.
312
  */
313
- function yit_enqueue_script( $handle, $src, $deps = array(), $ver = false, $in_footer = true ) {
314
 
315
- if ( function_exists( 'YIT_Asset' ) && ! is_admin() ) {
316
  $enqueue = true;
317
- YIT_Asset()->set( 'script', $handle, compact( 'src', 'deps', 'ver', 'in_footer', 'enqueue' ) );
318
- }
319
- else {
320
- wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
321
  }
322
  }
323
  }
324
 
325
- if ( ! function_exists( 'yit_enqueue_style' ) ) {
326
  /**
327
  * Enqueues style.
328
  *
@@ -332,54 +325,53 @@ if ( ! function_exists( 'yit_enqueue_style' ) ) {
332
  * @author Simone D'Amico <simone.damico@yithemes.com>
333
  * @see yit_register_style() For parameter information.
334
  */
335
- function yit_enqueue_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
336
 
337
- if ( function_exists( 'YIT_Asset' ) ) {
338
  $enqueue = true;
339
- $who = YIT_Asset()->get_stylesheet_handle( get_stylesheet_uri(), 'style' );
340
  $where = 'before';
341
 
342
- if( false == $who ){
343
  $who = '';
344
  }
345
 
346
- YIT_Asset()->set( 'style', $handle, compact( 'src', 'deps', 'ver', 'media', 'enqueue' ), $where, $who );
347
- }
348
- else {
349
- wp_enqueue_style( $handle, $src, $deps, $ver, $media );
350
  }
351
  }
352
  }
353
 
354
- if ( ! function_exists( 'yit_get_post_meta' ) ) {
355
  /**
356
  * Retrieve the value of a metabox.
357
  *
358
  * This function retrieve the value of a metabox attached to a post. It return either a single value or an array.
359
  *
360
- * @param int $id Post ID.
361
- * @param string $meta The meta key to retrieve.
362
  *
363
  * @return mixed Single value or array
364
  * @since 2.0.0
365
  */
366
- function yit_get_post_meta( $id, $meta ) {
367
- if ( ! strpos( $meta, '[' ) ) {
368
- return get_post_meta( $id, $meta, true );
369
  }
370
 
371
- $sub_meta = explode( '[', $meta );
372
 
373
- $meta = get_post_meta( $id, $meta, true );
374
- for ( $i = 0; $i < count( $sub_meta ); $i ++ ) {
375
- $meta = $meta[rtrim( $sub_meta[$i], ']' )];
376
  }
377
 
378
  return $meta;
379
  }
380
  }
381
 
382
- if ( ! function_exists( 'yit_string' ) ) {
383
  /**
384
  * Simple echo a string, with a before and after string, only if the main string is not empty.
385
  *
@@ -391,10 +383,10 @@ if ( ! function_exists( 'yit_string' ) ) {
391
  * @return string The complete string, if the main string is not empty or null
392
  * @since 2.0.0
393
  */
394
- function yit_string( $before = '', $string = '', $after = '', $echo = true ) {
395
  $html = '';
396
 
397
- if ( $string != '' AND ! is_null( $string ) ) {
398
  $html = $before . $string . $after;
399
  }
400
 
@@ -407,7 +399,7 @@ if ( ! function_exists( 'yit_string' ) ) {
407
  }
408
 
409
 
410
- if ( ! function_exists( 'yit_pagination' ) ) {
411
  /**
412
  * Print pagination
413
  *
@@ -417,12 +409,12 @@ if ( ! function_exists( 'yit_pagination' ) ) {
417
  * @return string
418
  * @since 2.0.0
419
  */
420
- function yit_pagination( $pages = '', $range = 10 ) {
421
  $showitems = ( $range * 2 ) + 1;
422
 
423
- $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : false;
424
  if ( $paged === false ) {
425
- $paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : false;
426
  }
427
  if ( $paged === false ) {
428
  $paged = 1;
@@ -446,60 +438,60 @@ if ( ! function_exists( 'yit_pagination' ) ) {
446
  if ( 1 != $pages ) {
447
  $html .= "<div class='general-pagination clearfix'>";
448
  if ( $paged > 2 ) {
449
- $html .= sprintf( '<a class="%s" href="%s">&laquo;</a>', 'yit_pagination_first', get_pagenum_link( 1 ) );
450
  }
451
  if ( $paged > 1 ) {
452
- $html .= sprintf( '<a class="%s" href="%s">&lsaquo;</a>', 'yit_pagination_previous', get_pagenum_link( $paged - 1 ) );
453
  }
454
 
455
  for ( $i = 1; $i <= $pages; $i ++ ) {
456
  if ( 1 != $pages && ( ! ( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems ) ) {
457
  $class = ( $paged == $i ) ? " class='selected'" : '';
458
- $html .= "<a href='" . get_pagenum_link( $i ) . "'$class >$i</a>";
459
  }
460
  }
461
 
462
  if ( $paged < $pages ) {
463
- $html .= sprintf( '<a class="%s" href="%s">&rsaquo;</a>', 'yit_pagination_next', get_pagenum_link( $paged + 1 ) );
464
  }
465
  if ( $paged < $pages - 1 ) {
466
- $html .= sprintf( '<a class="%s" href="%s">&raquo;</a>', 'yit_pagination_last', get_pagenum_link( $pages ) );
467
  }
468
 
469
  $html .= "</div>\n";
470
  }
471
 
472
- echo apply_filters( 'yit_pagination_html', $html );
473
  }
474
  }
475
 
476
- if ( ! function_exists( 'yit_registered_sidebars' ) ) {
477
  /**
478
  * Retrieve all registered sidebars
479
  *
480
  * @return array
481
  * @since 2.0.0
482
  */
483
- function yit_registered_sidebars() {
484
  global $wp_registered_sidebars;
485
 
486
- $return = array();
487
 
488
  if ( empty( $wp_registered_sidebars ) ) {
489
- $return = array( '' => '' );
490
  }
491
 
492
- foreach ( ( array ) $wp_registered_sidebars as $the_ ) {
493
- $return[$the_['name']] = $the_['name'];
494
  }
495
 
496
- ksort( $return );
497
 
498
  return $return;
499
  }
500
  }
501
 
502
- if ( ! function_exists( 'yit_layout_option' ) ) {
503
  /**
504
  * Retrieve a layout option
505
  *
@@ -511,20 +503,18 @@ if ( ! function_exists( 'yit_layout_option' ) ) {
511
  * @return array
512
  * @since 2.0.0
513
  */
514
- function yit_layout_option( $key, $id = false, $type = "post", $model = "post_type" ) {
515
 
516
  $option = '';
517
 
518
- if ( defined( 'YIT' ) ) {
519
- $option = YIT_Layout_Panel()->get_option( $key, $id, $type, $model );
520
- }
521
- else {
522
- if ( ! $id && ( is_single() || is_page() ) ) {
523
  global $post;
524
  $id = $post->ID;
525
- }
526
- elseif ( $id != 'all' ) {
527
- $option = get_post_meta( $id, $key );
528
  }
529
  }
530
 
@@ -532,32 +522,31 @@ if ( ! function_exists( 'yit_layout_option' ) ) {
532
  }
533
  }
534
 
535
- if ( ! function_exists( 'yit_curPageURL' ) ) {
536
  /**
537
  * Retrieve the current complete url
538
  *
539
  * @since 1.0
540
  */
541
- function yit_curPageURL() {
542
  $pageURL = 'http';
543
- if ( isset( $_SERVER["HTTPS"] ) AND $_SERVER["HTTPS"] == "on" ) {
544
  $pageURL .= "s";
545
  }
546
 
547
  $pageURL .= "://";
548
 
549
- if ( isset( $_SERVER["SERVER_PORT"] ) AND $_SERVER["SERVER_PORT"] != "80" ) {
550
- $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
551
- }
552
- else {
553
- $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
554
  }
555
 
556
  return $pageURL;
557
  }
558
  }
559
 
560
- if ( ! function_exists( 'yit_get_excluded_categories' ) ) {
561
  /**
562
  *
563
  * Retrieve the escluded categories, set on Theme Options
@@ -569,7 +558,7 @@ if ( ! function_exists( 'yit_get_excluded_categories' ) ) {
569
  * @since 2.0.0
570
  */
571
 
572
- function yit_get_excluded_categories( $k = 1 ) {
573
 
574
  global $post;
575
 
@@ -577,20 +566,20 @@ if ( ! function_exists( 'yit_get_excluded_categories' ) ) {
577
  return;
578
  }
579
 
580
- $cf_cats = get_post_meta( $post->ID, 'blog-cats', true);
581
 
582
- if ( ! empty( $cf_cats ) ){
583
  return $cf_cats;
584
  }
585
 
586
- $cats = function_exists( 'yit_get_option' ) ? yit_get_option( 'blog-excluded-cats' ) : '';
587
 
588
 
589
- if ( ! is_array( $cats ) || empty( $cats ) || ! isset( $cats[$k] ) ) {
590
  return;
591
  }
592
 
593
- $cats = array_map( 'trim', $cats[$k] );
594
 
595
  $i = 0;
596
  $query = '';
@@ -600,15 +589,15 @@ if ( ! function_exists( 'yit_get_excluded_categories' ) ) {
600
  $i ++;
601
  }
602
 
603
- ltrim( ',', $query );
604
 
605
  return $query;
606
  }
607
  }
608
 
609
 
610
- if ( ! function_exists( 'yit_add_extra_theme_headers' ) ) {
611
- add_filter( 'extra_theme_headers', 'yit_add_extra_theme_headers' );
612
 
613
  /**
614
  * Check the framework core version
@@ -619,13 +608,14 @@ if ( ! function_exists( 'yit_add_extra_theme_headers' ) ) {
619
  * @since 2.0.0
620
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
621
  */
622
- function yit_add_extra_theme_headers( $headers ) {
623
  $headers[] = 'Core Framework Version';
 
624
  return $headers;
625
  }
626
  }
627
 
628
- if ( ! function_exists( 'yit_check_plugin_support' ) ) {
629
  /**
630
  * Check the framework core version
631
  *
@@ -633,75 +623,76 @@ if ( ! function_exists( 'yit_check_plugin_support' ) ) {
633
  * @since 2.0.0
634
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
635
  */
636
- function yit_check_plugin_support() {
637
 
638
- $headers['core'] = wp_get_theme()->get( 'Core Framework Version' );
639
- $headers['author'] = wp_get_theme()->get( 'Author' );
640
 
641
- if( ! $headers['core'] && defined( 'YIT_CORE_VERSION' ) ) {
642
- $headers['core'] = YIT_CORE_VERSION;
643
  }
644
 
645
- if ( ( ! empty( $headers['core'] ) && version_compare( $headers['core'], '2.0.0', '<=' ) ) || $headers['author'] != 'Your Inspiration Themes' ) {
646
  return true;
647
- }
648
- else {
649
  return false;
650
  }
651
  }
652
  }
653
 
654
- if( !function_exists( 'yit_ie_version' ) ) {
655
  /**
656
  * Retrieve IE version.
657
  *
658
  * @return int|float
659
- * @since 1.0.0
660
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
661
  */
662
- function yit_ie_version() {
663
- preg_match('/MSIE ([0-9]\.[0-9])/',$_SERVER['HTTP_USER_AGENT'],$reg);
664
- if ( ! isset( $reg[1] ) )
665
- { return -1; }
666
- else
667
- { return floatval( $reg[1] ); }
 
668
  }
669
  }
670
 
671
- if( ! function_exists( 'yit_avoid_duplicate' ) ) {
672
  /**
673
  * Check if something exists. If yes, add a -N to the value where N is a number.
674
  *
675
- * @param mixed $value
676
- * @param array $array
677
  * @param string $check
 
678
  * @return mixed
679
- * @since 2.0.0
680
  * @author Antonino Scarf� <antonino.scarfi@yithemes.com>
681
  */
682
- function yit_avoid_duplicate( $value, $array, $check = 'value' ) {
683
- $match = array();
684
 
685
- if( !is_array( $array ) ) {
686
  return $value;
687
  }
688
 
689
- if ( ( $check == 'value' && ! in_array( $value, $array ) ) || ( $check == 'key' && ! isset( $array[$value] ) ) ) {
690
  return $value;
691
  } else {
692
- if ( ! preg_match( '/([a-z]+)-([0-9]+)/', $value, $match ) ) {
693
  $i = 2;
694
  } else {
695
- $i = intval( $match[2] ) + 1;
696
- $value = $match[1];
697
  }
698
 
699
- return yit_avoid_duplicate( $value . '-' . $i, $array, $check );
700
  }
701
  }
702
  }
703
 
704
- if( !function_exists( 'yit_title_special_characters' ) ) {
705
  /**
706
  * The chars used in yit_decode_title() and yit_encode_title()
707
  *
@@ -709,22 +700,23 @@ if( !function_exists( 'yit_title_special_characters' ) ) {
709
  * string: This is [my title] with | a new line
710
  * return: This is <span class="highlight">my title</span> with <br /> a new line
711
  *
712
- * @param string $title The string to convert
 
713
  * @return string The html
714
  *
715
  * @since 1.0
716
  */
717
- function yit_title_special_characters( $chars )
718
- {
719
- return array_merge( $chars, array(
720
  '/[=\[](.*?)[=\]]/' => '<span class="title-highlight">$1</span>',
721
- '/\|/' => '<br />',
722
  ) );
723
  }
724
- add_filter( 'yit_title_special_characters', 'yit_title_special_characters' );
 
725
  }
726
 
727
- if( !function_exists( 'yit_decode_title' ) ) {
728
  /**
729
  * Change some special characters to put easily html into a string
730
  *
@@ -732,20 +724,20 @@ if( !function_exists( 'yit_decode_title' ) ) {
732
  * string: This is [my title] with | a new line
733
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
734
  *
735
- * @param string $title The string to convert
 
736
  * @return string The html
737
  *
738
  * @since 1.0
739
  */
740
- function yit_decode_title( $title )
741
- {
742
- $replaces = apply_filters( 'yit_title_special_characters', array() );
743
 
744
- return preg_replace( array_keys( $replaces ), array_values( $replaces ), $title );
745
  }
746
  }
747
 
748
- if( !function_exists( 'yit_encode_title' ) ) {
749
  /**
750
  * Change some special characters to put easily html into a string
751
  *
@@ -753,20 +745,20 @@ if( !function_exists( 'yit_encode_title' ) ) {
753
  * string: This is [my title] with | a new line
754
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
755
  *
756
- * @param string $title The string to convert
 
757
  * @return string The html
758
  *
759
  * @since 1.0
760
  */
761
- function yit_encode_title( $title )
762
- {
763
- $replaces = apply_filters( 'yit_title_special_characters', array() );
764
 
765
- return preg_replace( array_values( $replaces ), array_keys( $replaces ), $title );
766
  }
767
  }
768
 
769
- if( !function_exists( 'yit_remove_chars_title' ) ) {
770
  /**
771
  * Change some special characters to put easily html into a string
772
  *
@@ -774,30 +766,30 @@ if( !function_exists( 'yit_remove_chars_title' ) ) {
774
  * string: This is [my title] with | a new line
775
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
776
  *
777
- * @param string $title The string to convert
 
778
  * @return string The html
779
  *
780
  * @since 1.0
781
  */
782
- function yit_remove_chars_title( $title )
783
- {
784
- $replaces = apply_filters( 'yit_title_special_characters', array() );
785
 
786
- return preg_replace( array_keys( $replaces ), '$1', $title );
787
  }
788
  }
789
 
790
- if( ! function_exists( 'is_shop_installed' ) ) {
791
  /**
792
  * Detect if there is a shop plugin installed
793
  *
794
  * @return bool
795
- * @since 2.0.0
796
  * @author Francesco Grasso <francesco.grasso@yithemes.com
797
  */
798
- function is_shop_installed() {
799
  global $woocommerce;
800
- if( isset( $woocommerce ) || defined( 'JIGOSHOP_VERSION' ) ) {
801
  return true;
802
  } else {
803
  return false;
@@ -805,7 +797,7 @@ if( ! function_exists( 'is_shop_installed' ) ) {
805
  }
806
  }
807
 
808
- if ( ! function_exists( 'yit_load_js_file' ) ) {
809
  /**
810
  * Load .min.js file if WP_Debug is not defined
811
  *
@@ -815,52 +807,52 @@ if ( ! function_exists( 'yit_load_js_file' ) ) {
815
  * @since 2.0.0
816
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
817
  */
818
- function yit_load_js_file( $filename ) {
819
 
820
- if ( ! ( ( defined( 'WP_DEBUG' ) && WP_DEBUG ) || ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) ) {
821
- $filename = str_replace( '.js', '.min.js', $filename );
822
  }
823
 
824
  return $filename;
825
  }
826
  }
827
 
828
- if ( ! function_exists( 'yit_wpml_register_string' ) ) {
829
  /**
830
  * Register a string in wpml trnslation
831
  *
832
  * @param $contenxt context name
833
- * @param $name string name
834
- * @param $value value to translate
835
  *
836
  * @since 2.0.0
837
  * @author Andrea Frascaspata <andrea.frascaspata@yithemes.com>
838
  */
839
- function yit_wpml_register_string( $contenxt , $name , $value ) {
840
  // wpml string translation
841
- do_action( 'wpml_register_single_string', $contenxt, $name, $value );
842
  }
843
  }
844
 
845
- if ( ! function_exists( 'yit_wpml_string_translate' ) ) {
846
  /**
847
  * Get a string translation
848
  *
849
- * @param $contenxt context name
850
- * @param $name string name
851
  * @param $default_value value to translate
852
  *
853
  * @return string the string translated
854
  * @since 2.0.0
855
  * @author Andrea Frascaspata <andrea.frascaspata@yithemes.com>
856
  */
857
- function yit_wpml_string_translate( $contenxt, $name, $default_value ) {
858
- return apply_filters( 'wpml_translate_single_string', $default_value, $contenxt, $name );
859
  }
860
 
861
  }
862
 
863
- if ( ! function_exists( 'yit_wpml_object_id' ) ) {
864
  /**
865
  * Get id of post translation in current language
866
  *
@@ -873,16 +865,49 @@ if ( ! function_exists( 'yit_wpml_object_id' ) ) {
873
  * @since 2.0.0
874
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
875
  */
876
- function yit_wpml_object_id( $element_id, $element_type = 'post', $return_original_if_missing = false, $ulanguage_code = null ) {
877
- if( function_exists( 'wpml_object_id' ) ){
878
- return wpml_object_id( $element_id, $element_type, $return_original_if_missing, $ulanguage_code );
879
- }
880
- elseif( function_exists( 'icl_object_id' ) ){
881
- return icl_object_id( $element_id, $element_type, $return_original_if_missing, $ulanguage_code );
882
- }
883
- else{
884
  return $element_id;
885
  }
886
  }
887
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
888
  }
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
+ if ( ! function_exists ( 'yit_plugin_locate_template' ) ) {
16
  /**
17
  * Locate the templates and return the path of the file found
18
  *
23
  * @return string
24
  * @since 2.0.0
25
  */
26
+ function yit_plugin_locate_template ( $plugin_basename, $path, $var = NULL ) {
27
 
28
  $template_path = '/theme/templates/' . $path;
29
 
30
+ $located = locate_template ( array (
31
+ $template_path,
32
  ) );
33
 
34
  if ( ! $located ) {
40
 
41
  }
42
 
43
+ if ( ! function_exists ( 'yit_plugin_get_template' ) ) {
44
  /**
45
  * Retrieve a template file.
46
  *
52
  * @return string
53
  * @since 2.0.0
54
  */
55
+ function yit_plugin_get_template ( $plugin_basename, $path, $var = null, $return = false ) {
56
 
57
+ $located = yit_plugin_locate_template ( $plugin_basename, $path, $var );
58
 
59
+ if ( $var && is_array ( $var ) ) {
60
+ extract ( $var );
61
  }
62
 
63
  if ( $return ) {
64
+ ob_start ();
65
  }
66
 
67
  // include file located
68
+ if ( file_exists ( $located ) ) {
69
+ include ( $located );
70
  }
71
 
72
  if ( $return ) {
73
+ return ob_get_clean ();
74
  }
75
  }
76
  }
77
 
78
+ if ( ! function_exists ( 'yit_plugin_content' ) ) {
79
  /**
80
  * Return post content with read more link (if needed)
81
  *
88
  * @return string
89
  * @since 2.0.0
90
  */
91
+ function yit_plugin_content ( $what = 'content', $limit = 25, $more_text = '', $split = '[...]', $in_paragraph = 'true' ) {
92
  if ( $what == 'content' ) {
93
+ $content = get_the_content ( $more_text );
94
+ } else {
 
95
  if ( $what == 'excerpt' ) {
96
+ $content = get_the_excerpt ();
97
+ } else {
 
98
  $content = $what;
99
  }
100
  }
101
 
102
  if ( $limit == 0 ) {
103
  if ( $what == 'excerpt' ) {
104
+ $content = apply_filters ( 'the_excerpt', $content );
105
+ } else {
106
+ $content = preg_replace ( '/<img[^>]+./', '', $content ); //remove images
107
+ $content = apply_filters ( 'the_content', $content );
108
+ $content = str_replace ( ']]>', ']]&gt;', $content );
 
109
  }
110
 
111
  return $content;
112
  }
113
 
114
  // remove the tag more from the content
115
+ if ( preg_match ( "/<(a)[^>]*class\s*=\s*(['\"])more-link\\2[^>]*>(.*?)<\/\\1>/", $content, $matches ) ) {
116
 
117
+ if ( strpos ( $matches[ 0 ], '[button' ) ) {
118
+ $more_link = str_replace ( 'href="#"', 'href="' . get_permalink () . '"', do_shortcode ( $matches[ 3 ] ) );
119
+ } else {
120
+ $more_link = $matches[ 0 ];
 
121
  }
122
 
123
+ $content = str_replace ( $more_link, '', $content );
124
  $split = '';
125
  }
126
 
127
  if ( empty( $content ) ) {
128
  return;
129
  }
130
+ $content = explode ( ' ', $content );
131
 
132
  if ( ! empty( $more_text ) && ! isset( $more_link ) ) {
133
  //array_pop( $content );
134
+ $more_link = strpos ( $more_text, '<a class="btn"' ) ? $more_text : '<a class="read-more' . apply_filters ( 'yit_simple_read_more_classes', ' ' ) . '" href="' . get_permalink () . '">' . $more_text . '</a>';
135
  $split = '';
136
+ } elseif ( ! isset( $more_link ) ) {
 
137
  $more_link = '';
138
  }
139
 
140
  // split
141
+ if ( count ( $content ) >= $limit ) {
142
  $split_content = '';
143
  for ( $i = 0; $i < $limit; $i ++ ) {
144
+ $split_content .= $content[ $i ] . ' ';
145
  }
146
 
147
  $content = $split_content . $split;
148
+ } else {
149
+ $content = implode ( " ", $content );
 
150
  }
151
 
152
  // TAGS UNCLOSED
153
+ $tags = array ();
154
  // get all tags opened
155
+ preg_match_all ( "/(<([\w]+)[^>]*>)/", $content, $tags_opened, PREG_SET_ORDER );
156
  foreach ( $tags_opened as $tag ) {
157
+ $tags[] = $tag[ 2 ];
158
  }
159
 
160
  // get all tags closed and remove it from the tags opened.. the rest will be closed at the end of the content
161
+ preg_match_all ( "/(<\/([\w]+)[^>]*>)/", $content, $tags_closed, PREG_SET_ORDER );
162
  foreach ( $tags_closed as $tag ) {
163
+ unset( $tags[ array_search ( $tag[ 2 ], $tags ) ] );
164
  }
165
 
166
  // close the tags
172
 
173
  //$content = preg_replace( '/\[.+\]/', '', $content );
174
  if ( $in_paragraph == true ): $content .= $more_link; endif;
175
+ $content = preg_replace ( '/<img[^>]+./', '', $content ); //remove images
176
+ $content = apply_filters ( 'the_content', $content );
177
+ $content = str_replace ( ']]>', ']]&gt;', $content ); // echo str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $content );
178
  if ( $in_paragraph == false ): $content .= $more_link; endif;
179
 
180
  return $content;
181
  }
182
  }
183
 
184
+ if ( ! function_exists ( 'yit_plugin_string' ) ) {
185
  /**
186
  * Simple echo a string, with a before and after string, only if the main string is not empty.
187
  *
193
  * @return string The complete string, if the main string is not empty or null
194
  * @since 2.0.0
195
  */
196
+ function yit_plugin_string ( $before = '', $string = '', $after = '', $echo = true ) {
197
  $html = '';
198
 
199
+ if ( $string != '' AND ! is_null ( $string ) ) {
200
  $html = $before . $string . $after;
201
  }
202
 
208
  }
209
  }
210
 
211
+ if ( ! function_exists ( 'yit_plugin_decode_title' ) ) {
212
  /**
213
  * Change some special characters to put easily html into a string
214
  *
222
  *
223
  * @since 1.0
224
  */
225
+ function yit_plugin_decode_title ( $title ) {
226
+ $replaces = apply_filters ( 'yit_title_special_characters', array () );
227
 
228
+ return preg_replace ( array_keys ( $replaces ), array_values ( $replaces ), $title );
229
  }
230
  }
231
 
232
+ if ( ! function_exists ( 'yit_plugin_get_attachment_id' ) ) {
233
 
234
  /**
235
  * Return the ID of an attachment.
241
  * @since 2.0.0
242
  */
243
 
244
+ function yit_plugin_get_attachment_id ( $url ) {
245
 
246
+ $upload_dir = wp_upload_dir ();
247
+ $dir = trailingslashit ( $upload_dir[ 'baseurl' ] );
248
 
249
+ if ( false === strpos ( $url, $dir ) ) {
250
  return false;
251
  }
252
 
253
+ $file = basename ( $url );
254
 
255
+ $query = array (
256
  'post_type' => 'attachment',
257
  'fields' => 'ids',
258
+ 'meta_query' => array (
259
+ array (
260
  'value' => $file,
261
  'compare' => 'LIKE',
262
+ ),
263
+ ),
264
  );
265
 
266
+ $query[ 'meta_query' ][ 0 ][ 'key' ] = '_wp_attached_file';
267
+ $ids = get_posts ( $query );
268
 
269
  foreach ( $ids as $id ) {
270
+ $attachment_image = wp_get_attachment_image_src ( $id, 'full' );
271
+ if ( $url == array_shift ( $attachment_image ) || $url == str_replace ( 'https://', 'http://', array_shift ( $attachment_image ) ) ) {
272
  return $id;
273
  }
274
  }
275
+ $query[ 'meta_query' ][ 0 ][ 'key' ] = '_wp_attachment_metadata';
276
+ $ids = get_posts ( $query );
277
 
278
  foreach ( $ids as $id ) {
279
 
280
+ $meta = wp_get_attachment_metadata ( $id );
281
+ if ( ! isset( $meta[ 'sizes' ] ) ) {
282
  continue;
283
  }
284
 
285
+ foreach ( (array)$meta[ 'sizes' ] as $size => $values ) {
286
+ if ( $values[ 'file' ] == $file && $url == str_replace ( 'https://', 'http://', array_shift ( wp_get_attachment_image_src ( $id, $size ) ) ) ) {
287
 
288
  return $id;
289
  }
294
  }
295
  }
296
 
297
+ if ( ! function_exists ( 'yit_enqueue_script' ) ) {
298
  /**
299
  * Enqueues script.
300
  *
304
  * @author Simone D'Amico <simone.damico@yithemes.com>
305
  * @see yit_register_script() For parameter information.
306
  */
307
+ function yit_enqueue_script ( $handle, $src, $deps = array (), $ver = false, $in_footer = true ) {
308
 
309
+ if ( function_exists ( 'YIT_Asset' ) && ! is_admin () ) {
310
  $enqueue = true;
311
+ YIT_Asset ()->set ( 'script', $handle, compact ( 'src', 'deps', 'ver', 'in_footer', 'enqueue' ) );
312
+ } else {
313
+ wp_enqueue_script ( $handle, $src, $deps, $ver, $in_footer );
 
314
  }
315
  }
316
  }
317
 
318
+ if ( ! function_exists ( 'yit_enqueue_style' ) ) {
319
  /**
320
  * Enqueues style.
321
  *
325
  * @author Simone D'Amico <simone.damico@yithemes.com>
326
  * @see yit_register_style() For parameter information.
327
  */
328
+ function yit_enqueue_style ( $handle, $src, $deps = array (), $ver = false, $media = 'all' ) {
329
 
330
+ if ( function_exists ( 'YIT_Asset' ) ) {
331
  $enqueue = true;
332
+ $who = YIT_Asset ()->get_stylesheet_handle ( get_stylesheet_uri (), 'style' );
333
  $where = 'before';
334
 
335
+ if ( false == $who ) {
336
  $who = '';
337
  }
338
 
339
+ YIT_Asset ()->set ( 'style', $handle, compact ( 'src', 'deps', 'ver', 'media', 'enqueue' ), $where, $who );
340
+ } else {
341
+ wp_enqueue_style ( $handle, $src, $deps, $ver, $media );
 
342
  }
343
  }
344
  }
345
 
346
+ if ( ! function_exists ( 'yit_get_post_meta' ) ) {
347
  /**
348
  * Retrieve the value of a metabox.
349
  *
350
  * This function retrieve the value of a metabox attached to a post. It return either a single value or an array.
351
  *
352
+ * @param int $id Post ID.
353
+ * @param string $meta The meta key to retrieve.
354
  *
355
  * @return mixed Single value or array
356
  * @since 2.0.0
357
  */
358
+ function yit_get_post_meta ( $id, $meta ) {
359
+ if ( ! strpos ( $meta, '[' ) ) {
360
+ return get_post_meta ( $id, $meta, true );
361
  }
362
 
363
+ $sub_meta = explode ( '[', $meta );
364
 
365
+ $meta = get_post_meta ( $id, $meta, true );
366
+ for ( $i = 0; $i < count ( $sub_meta ); $i ++ ) {
367
+ $meta = $meta[ rtrim ( $sub_meta[ $i ], ']' ) ];
368
  }
369
 
370
  return $meta;
371
  }
372
  }
373
 
374
+ if ( ! function_exists ( 'yit_string' ) ) {
375
  /**
376
  * Simple echo a string, with a before and after string, only if the main string is not empty.
377
  *
383
  * @return string The complete string, if the main string is not empty or null
384
  * @since 2.0.0
385
  */
386
+ function yit_string ( $before = '', $string = '', $after = '', $echo = true ) {
387
  $html = '';
388
 
389
+ if ( $string != '' AND ! is_null ( $string ) ) {
390
  $html = $before . $string . $after;
391
  }
392
 
399
  }
400
 
401
 
402
+ if ( ! function_exists ( 'yit_pagination' ) ) {
403
  /**
404
  * Print pagination
405
  *
409
  * @return string
410
  * @since 2.0.0
411
  */
412
+ function yit_pagination ( $pages = '', $range = 10 ) {
413
  $showitems = ( $range * 2 ) + 1;
414
 
415
+ $paged = ( get_query_var ( 'paged' ) ) ? get_query_var ( 'paged' ) : false;
416
  if ( $paged === false ) {
417
+ $paged = ( get_query_var ( 'page' ) ) ? get_query_var ( 'page' ) : false;
418
  }
419
  if ( $paged === false ) {
420
  $paged = 1;
438
  if ( 1 != $pages ) {
439
  $html .= "<div class='general-pagination clearfix'>";
440
  if ( $paged > 2 ) {
441
+ $html .= sprintf ( '<a class="%s" href="%s">&laquo;</a>', 'yit_pagination_first', get_pagenum_link ( 1 ) );
442
  }
443
  if ( $paged > 1 ) {
444
+ $html .= sprintf ( '<a class="%s" href="%s">&lsaquo;</a>', 'yit_pagination_previous', get_pagenum_link ( $paged - 1 ) );
445
  }
446
 
447
  for ( $i = 1; $i <= $pages; $i ++ ) {
448
  if ( 1 != $pages && ( ! ( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems ) ) {
449
  $class = ( $paged == $i ) ? " class='selected'" : '';
450
+ $html .= "<a href='" . get_pagenum_link ( $i ) . "'$class >$i</a>";
451
  }
452
  }
453
 
454
  if ( $paged < $pages ) {
455
+ $html .= sprintf ( '<a class="%s" href="%s">&rsaquo;</a>', 'yit_pagination_next', get_pagenum_link ( $paged + 1 ) );
456
  }
457
  if ( $paged < $pages - 1 ) {
458
+ $html .= sprintf ( '<a class="%s" href="%s">&raquo;</a>', 'yit_pagination_last', get_pagenum_link ( $pages ) );
459
  }
460
 
461
  $html .= "</div>\n";
462
  }
463
 
464
+ echo apply_filters ( 'yit_pagination_html', $html );
465
  }
466
  }
467
 
468
+ if ( ! function_exists ( 'yit_registered_sidebars' ) ) {
469
  /**
470
  * Retrieve all registered sidebars
471
  *
472
  * @return array
473
  * @since 2.0.0
474
  */
475
+ function yit_registered_sidebars () {
476
  global $wp_registered_sidebars;
477
 
478
+ $return = array ();
479
 
480
  if ( empty( $wp_registered_sidebars ) ) {
481
+ $return = array ( '' => '' );
482
  }
483
 
484
+ foreach ( ( array )$wp_registered_sidebars as $the_ ) {
485
+ $return[ $the_[ 'name' ] ] = $the_[ 'name' ];
486
  }
487
 
488
+ ksort ( $return );
489
 
490
  return $return;
491
  }
492
  }
493
 
494
+ if ( ! function_exists ( 'yit_layout_option' ) ) {
495
  /**
496
  * Retrieve a layout option
497
  *
503
  * @return array
504
  * @since 2.0.0
505
  */
506
+ function yit_layout_option ( $key, $id = false, $type = "post", $model = "post_type" ) {
507
 
508
  $option = '';
509
 
510
+ if ( defined ( 'YIT' ) ) {
511
+ $option = YIT_Layout_Panel ()->get_option ( $key, $id, $type, $model );
512
+ } else {
513
+ if ( ! $id && ( is_single () || is_page () ) ) {
 
514
  global $post;
515
  $id = $post->ID;
516
+ } elseif ( $id != 'all' ) {
517
+ $option = get_post_meta ( $id, $key );
 
518
  }
519
  }
520
 
522
  }
523
  }
524
 
525
+ if ( ! function_exists ( 'yit_curPageURL' ) ) {
526
  /**
527
  * Retrieve the current complete url
528
  *
529
  * @since 1.0
530
  */
531
+ function yit_curPageURL () {
532
  $pageURL = 'http';
533
+ if ( isset( $_SERVER[ "HTTPS" ] ) AND $_SERVER[ "HTTPS" ] == "on" ) {
534
  $pageURL .= "s";
535
  }
536
 
537
  $pageURL .= "://";
538
 
539
+ if ( isset( $_SERVER[ "SERVER_PORT" ] ) AND $_SERVER[ "SERVER_PORT" ] != "80" ) {
540
+ $pageURL .= $_SERVER[ "SERVER_NAME" ] . ":" . $_SERVER[ "SERVER_PORT" ] . $_SERVER[ "REQUEST_URI" ];
541
+ } else {
542
+ $pageURL .= $_SERVER[ "SERVER_NAME" ] . $_SERVER[ "REQUEST_URI" ];
 
543
  }
544
 
545
  return $pageURL;
546
  }
547
  }
548
 
549
+ if ( ! function_exists ( 'yit_get_excluded_categories' ) ) {
550
  /**
551
  *
552
  * Retrieve the escluded categories, set on Theme Options
558
  * @since 2.0.0
559
  */
560
 
561
+ function yit_get_excluded_categories ( $k = 1 ) {
562
 
563
  global $post;
564
 
566
  return;
567
  }
568
 
569
+ $cf_cats = get_post_meta ( $post->ID, 'blog-cats', true );
570
 
571
+ if ( ! empty( $cf_cats ) ) {
572
  return $cf_cats;
573
  }
574
 
575
+ $cats = function_exists ( 'yit_get_option' ) ? yit_get_option ( 'blog-excluded-cats' ) : '';
576
 
577
 
578
+ if ( ! is_array ( $cats ) || empty( $cats ) || ! isset( $cats[ $k ] ) ) {
579
  return;
580
  }
581
 
582
+ $cats = array_map ( 'trim', $cats[ $k ] );
583
 
584
  $i = 0;
585
  $query = '';
589
  $i ++;
590
  }
591
 
592
+ ltrim ( ',', $query );
593
 
594
  return $query;
595
  }
596
  }
597
 
598
 
599
+ if ( ! function_exists ( 'yit_add_extra_theme_headers' ) ) {
600
+ add_filter ( 'extra_theme_headers', 'yit_add_extra_theme_headers' );
601
 
602
  /**
603
  * Check the framework core version
608
  * @since 2.0.0
609
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
610
  */
611
+ function yit_add_extra_theme_headers ( $headers ) {
612
  $headers[] = 'Core Framework Version';
613
+
614
  return $headers;
615
  }
616
  }
617
 
618
+ if ( ! function_exists ( 'yit_check_plugin_support' ) ) {
619
  /**
620
  * Check the framework core version
621
  *
623
  * @since 2.0.0
624
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
625
  */
626
+ function yit_check_plugin_support () {
627
 
628
+ $headers[ 'core' ] = wp_get_theme ()->get ( 'Core Framework Version' );
629
+ $headers[ 'author' ] = wp_get_theme ()->get ( 'Author' );
630
 
631
+ if ( ! $headers[ 'core' ] && defined ( 'YIT_CORE_VERSION' ) ) {
632
+ $headers[ 'core' ] = YIT_CORE_VERSION;
633
  }
634
 
635
+ if ( ( ! empty( $headers[ 'core' ] ) && version_compare ( $headers[ 'core' ], '2.0.0', '<=' ) ) || $headers[ 'author' ] != 'Your Inspiration Themes' ) {
636
  return true;
637
+ } else {
 
638
  return false;
639
  }
640
  }
641
  }
642
 
643
+ if ( ! function_exists ( 'yit_ie_version' ) ) {
644
  /**
645
  * Retrieve 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
  }
660
 
661
+ if ( ! function_exists ( 'yit_avoid_duplicate' ) ) {
662
  /**
663
  * Check if something exists. If yes, add a -N to the value where N is a number.
664
  *
665
+ * @param mixed $value
666
+ * @param array $array
667
  * @param string $check
668
+ *
669
  * @return mixed
670
+ * @since 2.0.0
671
  * @author Antonino Scarf� <antonino.scarfi@yithemes.com>
672
  */
673
+ function yit_avoid_duplicate ( $value, $array, $check = 'value' ) {
674
+ $match = array ();
675
 
676
+ if ( ! is_array ( $array ) ) {
677
  return $value;
678
  }
679
 
680
+ if ( ( $check == 'value' && ! in_array ( $value, $array ) ) || ( $check == 'key' && ! isset( $array[ $value ] ) ) ) {
681
  return $value;
682
  } else {
683
+ if ( ! preg_match ( '/([a-z]+)-([0-9]+)/', $value, $match ) ) {
684
  $i = 2;
685
  } else {
686
+ $i = intval ( $match[ 2 ] ) + 1;
687
+ $value = $match[ 1 ];
688
  }
689
 
690
+ return yit_avoid_duplicate ( $value . '-' . $i, $array, $check );
691
  }
692
  }
693
  }
694
 
695
+ if ( ! function_exists ( 'yit_title_special_characters' ) ) {
696
  /**
697
  * The chars used in yit_decode_title() and yit_encode_title()
698
  *
700
  * string: This is [my title] with | a new line
701
  * return: This is <span class="highlight">my title</span> with <br /> a new line
702
  *
703
+ * @param string $title The string to convert
704
+ *
705
  * @return string The html
706
  *
707
  * @since 1.0
708
  */
709
+ function yit_title_special_characters ( $chars ) {
710
+ return array_merge ( $chars, array (
 
711
  '/[=\[](.*?)[=\]]/' => '<span class="title-highlight">$1</span>',
712
+ '/\|/' => '<br />',
713
  ) );
714
  }
715
+
716
+ add_filter ( 'yit_title_special_characters', 'yit_title_special_characters' );
717
  }
718
 
719
+ if ( ! function_exists ( 'yit_decode_title' ) ) {
720
  /**
721
  * Change some special characters to put easily html into a string
722
  *
724
  * string: This is [my title] with | a new line
725
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
726
  *
727
+ * @param string $title The string to convert
728
+ *
729
  * @return string The html
730
  *
731
  * @since 1.0
732
  */
733
+ function yit_decode_title ( $title ) {
734
+ $replaces = apply_filters ( 'yit_title_special_characters', array () );
 
735
 
736
+ return preg_replace ( array_keys ( $replaces ), array_values ( $replaces ), $title );
737
  }
738
  }
739
 
740
+ if ( ! function_exists ( 'yit_encode_title' ) ) {
741
  /**
742
  * Change some special characters to put easily html into a string
743
  *
745
  * string: This is [my title] with | a new line
746
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
747
  *
748
+ * @param string $title The string to convert
749
+ *
750
  * @return string The html
751
  *
752
  * @since 1.0
753
  */
754
+ function yit_encode_title ( $title ) {
755
+ $replaces = apply_filters ( 'yit_title_special_characters', array () );
 
756
 
757
+ return preg_replace ( array_values ( $replaces ), array_keys ( $replaces ), $title );
758
  }
759
  }
760
 
761
+ if ( ! function_exists ( 'yit_remove_chars_title' ) ) {
762
  /**
763
  * Change some special characters to put easily html into a string
764
  *
766
  * string: This is [my title] with | a new line
767
  * return: This is <span class="title-highlight">my title</span> with <br /> a new line
768
  *
769
+ * @param string $title The string to convert
770
+ *
771
  * @return string The html
772
  *
773
  * @since 1.0
774
  */
775
+ function yit_remove_chars_title ( $title ) {
776
+ $replaces = apply_filters ( 'yit_title_special_characters', array () );
 
777
 
778
+ return preg_replace ( array_keys ( $replaces ), '$1', $title );
779
  }
780
  }
781
 
782
+ if ( ! function_exists ( 'is_shop_installed' ) ) {
783
  /**
784
  * Detect if there is a shop plugin installed
785
  *
786
  * @return bool
787
+ * @since 2.0.0
788
  * @author Francesco Grasso <francesco.grasso@yithemes.com
789
  */
790
+ function is_shop_installed () {
791
  global $woocommerce;
792
+ if ( isset( $woocommerce ) || defined ( 'JIGOSHOP_VERSION' ) ) {
793
  return true;
794
  } else {
795
  return false;
797
  }
798
  }
799
 
800
+ if ( ! function_exists ( 'yit_load_js_file' ) ) {
801
  /**
802
  * Load .min.js file if WP_Debug is not defined
803
  *
807
  * @since 2.0.0
808
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
809
  */
810
+ function yit_load_js_file ( $filename ) {
811
 
812
+ if ( ! ( ( defined ( 'WP_DEBUG' ) && WP_DEBUG ) || ( defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) ) {
813
+ $filename = str_replace ( '.js', '.min.js', $filename );
814
  }
815
 
816
  return $filename;
817
  }
818
  }
819
 
820
+ if ( ! function_exists ( 'yit_wpml_register_string' ) ) {
821
  /**
822
  * Register a string in wpml trnslation
823
  *
824
  * @param $contenxt context name
825
+ * @param $name string name
826
+ * @param $value value to translate
827
  *
828
  * @since 2.0.0
829
  * @author Andrea Frascaspata <andrea.frascaspata@yithemes.com>
830
  */
831
+ function yit_wpml_register_string ( $contenxt, $name, $value ) {
832
  // wpml string translation
833
+ do_action ( 'wpml_register_single_string', $contenxt, $name, $value );
834
  }
835
  }
836
 
837
+ if ( ! function_exists ( 'yit_wpml_string_translate' ) ) {
838
  /**
839
  * Get a string translation
840
  *
841
+ * @param $contenxt context name
842
+ * @param $name string name
843
  * @param $default_value value to translate
844
  *
845
  * @return string the string translated
846
  * @since 2.0.0
847
  * @author Andrea Frascaspata <andrea.frascaspata@yithemes.com>
848
  */
849
+ function yit_wpml_string_translate ( $contenxt, $name, $default_value ) {
850
+ return apply_filters ( 'wpml_translate_single_string', $default_value, $contenxt, $name );
851
  }
852
 
853
  }
854
 
855
+ if ( ! function_exists ( 'yit_wpml_object_id' ) ) {
856
  /**
857
  * Get id of post translation in current language
858
  *
865
  * @since 2.0.0
866
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
867
  */
868
+ function yit_wpml_object_id ( $element_id, $element_type = 'post', $return_original_if_missing = false, $ulanguage_code = null ) {
869
+ if ( function_exists ( 'wpml_object_id_filter' ) ) {
870
+ return wpml_object_id_filter( $element_id, $element_type, $return_original_if_missing, $ulanguage_code );
871
+ } elseif ( function_exists ( 'icl_object_id' ) ) {
872
+ return icl_object_id ( $element_id, $element_type, $return_original_if_missing, $ulanguage_code );
873
+ } else {
 
 
874
  return $element_id;
875
  }
876
  }
877
 
878
+ }
879
+
880
+
881
+ if ( ! function_exists ( 'yith_get_formatted_price' ) ) {
882
+ /**
883
+ * Format the price with a currency symbol.
884
+ *
885
+ * @param float $price
886
+ * @param array $args (default: array())
887
+ *
888
+ * @return string
889
+ */
890
+ function yith_get_formatted_price ( $price, $args = array () ) {
891
+ extract ( apply_filters ( 'wc_price_args', wp_parse_args ( $args, array (
892
+ 'ex_tax_label' => false,
893
+ 'currency' => '',
894
+ 'decimal_separator' => wc_get_price_decimal_separator (),
895
+ 'thousand_separator' => wc_get_price_thousand_separator (),
896
+ 'decimals' => wc_get_price_decimals (),
897
+ 'price_format' => get_woocommerce_price_format (),
898
+ ) ) ) );
899
+
900
+ $negative = $price < 0;
901
+ $price = apply_filters ( 'raw_woocommerce_price', floatval ( $negative ? $price * - 1 : $price ) );
902
+ $price = apply_filters ( 'formatted_woocommerce_price', number_format ( $price, $decimals, $decimal_separator, $thousand_separator ), $price, $decimals, $decimal_separator, $thousand_separator );
903
+
904
+ if ( apply_filters ( 'woocommerce_price_trim_zeros', false ) && $decimals > 0 ) {
905
+ $price = wc_trim_zeros ( $price );
906
+ }
907
+
908
+ $formatted_price = ( $negative ? '-' : '' ) . sprintf ( $price_format, get_woocommerce_currency_symbol ( $currency ), $price );
909
+ $return = $formatted_price;
910
+
911
+ return apply_filters ( 'wc_price', $return, $price, $args );
912
+ }
913
  }
plugin-options/general-options.php CHANGED
@@ -126,6 +126,7 @@ $magnifier_settings = array(
126
  'default' => __( 'Loading...', 'yith-woocommerce-zoom-magnifier' ),
127
  'type' => 'text',
128
  ),
 
129
  array(
130
  'name' => __( 'Lens Opacity', 'yith-woocommerce-zoom-magnifier' ),
131
  'desc' => '',
126
  'default' => __( 'Loading...', 'yith-woocommerce-zoom-magnifier' ),
127
  'type' => 'text',
128
  ),
129
+
130
  array(
131
  'name' => __( 'Lens Opacity', 'yith-woocommerce-zoom-magnifier' ),
132
  'desc' => '',
yit-common/yith-panel.php CHANGED
@@ -6,549 +6,561 @@
6
  * @version 0.1.0
7
  */
8
 
9
- if ( ! class_exists( 'YITH_Panel' ) ) {
10
- /*
11
- * The class manages the theme options for the Plugin
12
- */
13
-
14
- class YITH_Panel {
15
-
16
- /**
17
- * Class version
18
- *
19
- * @var string
20
- */
21
- public $version = '0.1.0';
22
-
23
- /**
24
- * Parameters for add_submenu_page
25
- *
26
- * add_submenu_page(
27
- * 'themes.php', // The file name of a standard WordPress admin page
28
- * 'Theme Options', // The text to be displayed in the title tags of the page when the menu is selected
29
- * 'Theme Options', // The text to be used for the menu
30
- * 'administrator', // The capability (or role) required for this menu to be displayed to the user.
31
- * 'theme-options', // The slug name to refer to this menu by (should be unique for this menu).
32
- * 'theme_options_display_page' // The function to be called to output the content for this page.
33
- * );
34
- *
35
- * @access protected
36
- */
37
- protected $_submenu = array();
38
-
39
- /**
40
- * Initial Options definition:
41
- * 'tab' => array(
42
- * 'label',
43
- * 'sections' => array(
44
- * 'fields' => array(
45
- * 'option1',
46
- * 'option2',
47
- * ...
48
- * )
49
- * )
50
- * )
51
- *
52
- * @var array
53
- * @access public
54
- */
55
- public $options = array();
56
-
57
- /**
58
- * Options group name
59
- *
60
- * @var string
61
- * @access public
62
- */
63
- public $option_group = 'panel_group';
64
-
65
- /**
66
- * Option name
67
- *
68
- * @var string
69
- * @access public
70
- */
71
- public $option_name = 'panel_options';
72
-
73
- /**
74
- * Banner links
75
- *
76
- * @var string
77
- * @access public
78
- */
79
- public $banner_url = 'http://yithemes.com/?ap_id=plugin';
80
- public $banner_img = '';
81
-
82
- /**
83
- * Constructor
84
- *
85
- * @param array $submenu Parameters for add_submenu_page
86
- * @param array $options Array of plugin options
87
- *
88
- */
89
- public function __construct( $submenu, $options, $banner = array(), $option_group = false, $option_name = false ) {
90
- $this->_submenu = apply_filters( 'yith_panel_submenu', $submenu );
91
- $this->options = apply_filters( 'yith_panel_options', $options );
92
-
93
- if ( ! empty( $banner ) ) {
94
- $this->banner_url = $banner['url'];
95
- $this->banner_img = $banner['img'];
96
- }
97
-
98
- if ( $option_group ) {
99
- $this->option_group = $option_group;
100
- }
101
-
102
- if ( $option_name ) {
103
- $this->option_name = $option_name;
104
- }
105
-
106
- //add new menu item
107
- //register new settings option group
108
- //include js and css files
109
- //print browser
110
- add_action( 'admin_menu', array( $this, 'add_submenu_page' ) );
111
- add_action( 'admin_init', array( $this, 'panel_register_setting' ) );
112
- add_action( 'admin_enqueue_scripts', array( $this, 'panel_enqueue' ) );
113
-
114
- // add the typography javascript vars
115
- add_action( 'yith_panel_after_panel', array( $this, 'js_typo_vars' ) );
116
- }
117
-
118
- /**
119
- * Create new submenu page
120
- *
121
- * @return void
122
- * @access public
123
- * @link http://codex.wordpress.org/Function_Reference/add_submenu_page
124
- */
125
- public function add_submenu_page() {
126
- $submenu = $this->_submenu;
127
- add_submenu_page(
128
- $submenu[0],
129
- $submenu[1],
130
- $submenu[2],
131
- $submenu[3],
132
- $submenu[4],
133
- array( $this, isset( $submenu[5] ) ? $submenu[5] : 'display_panel_page' )
134
- );
135
- }
136
-
137
- /**
138
- * Print the Panel page
139
- *
140
- * @return void
141
- * @access public
142
- */
143
- public function display_panel_page() {
144
- // Create a header in the default WordPress 'wrap' container
145
- $page = $this->_get_tab();
146
- ?>
147
- <div id="icon-themes" class="icon32"><br/></div>
148
- <h2 class="nav-tab-wrapper">
149
- <?php foreach ( $this->options as $k => $tab ): ?>
150
- <a class="nav-tab<?php if ( $page == $k ): ?> nav-tab-active<?php endif ?>"
151
- href="<?php echo esc_url( add_query_arg( 'panel_page', $k ) ); ?>"><?php echo $tab['label'] ?></a>
152
- <?php endforeach ?>
153
- <?php do_action( 'yith_panel_after_tabs' ); ?>
154
- </h2>
155
-
156
- <div class="wrap">
157
- <?php $this->printBanner() ?>
158
- <?php do_action( 'yith_panel_before_panel' ); ?>
159
- <form action="options.php" method="post">
160
-
161
- <?php do_settings_sections( $this->option_name ); ?>
162
- <?php settings_fields( $this->option_group ) ?>
163
-
164
- <p class="submit">
165
- <input type="hidden" name="panel_page" value="<?php echo $page ?>"/>
166
- <input class="button-primary" type="submit" name="save_options" value="Save Options"/>
167
- </p>
168
- </form>
169
- <?php do_action( 'yith_panel_after_panel' ); ?>
170
- </div>
171
- <?php
172
- }
173
-
174
- /**
175
- * Add the vars for the typography options
176
- */
177
- public function js_typo_vars() {
178
- global $yith_panel_if_typography;
179
- if ( ! isset( $yith_panel_if_typography ) || ! $yith_panel_if_typography ) {
180
- return;
181
- }
182
-
183
- $web_fonts = array(
184
- "Arial",
185
- "Arial Black",
186
- "Comic Sans MS",
187
- "Courier New",
188
- "Georgia",
189
- "Impact",
190
- "Lucida Console",
191
- "Lucida Sans Unicode",
192
- "Thaoma",
193
- "Trebuchet MS",
194
- "Verdana"
195
- );
196
-
197
- // http://niubbys.altervista.org/google_fonts.php
198
- $google_fonts = file_get_contents( dirname( __FILE__ ) . '/assets/js/google_fonts.json' );
199
- ?>
200
- <script type="text/javascript">
201
- var yit_google_fonts = '<?php echo $google_fonts ?>',
202
- yit_web_fonts = '{"items":<?php echo json_encode( $web_fonts ) ?>}',
203
- yit_family_string = '';
204
- </script>
205
- <?php
206
- }
207
-
208
- /**
209
- * Register a new settings option group
210
- *
211
- * @return void
212
- * @access public
213
- * @link http://codex.wordpress.org/Function_Reference/register_setting
214
- * @link http://codex.wordpress.org/Function_Reference/add_settings_section
215
- * @link http://codex.wordpress.org/Function_Reference/add_settings_field
216
- */
217
- public function panel_register_setting() {
218
- $page = $this->_get_tab();
219
- $tab = isset( $this->options[ $page ] ) ? $this->options[ $page ] : array();
220
-
221
- if ( ! empty( $tab['sections'] ) ) {
222
- //add sections and fields
223
- foreach ( $tab['sections'] as $section_name => $section ) {
224
- //add the section
225
- add_settings_section(
226
- $section_name,
227
- $section['title'],
228
- array( $this, 'panel_section_content' ),
229
- $this->option_name
230
- );
231
-
232
- //add the fields
233
- foreach ( $section['fields'] as $option_name => $option ) {
234
- $option['id'] = $option_name;
235
- $option['label_for'] = $option_name;
236
-
237
- //register settings group
238
- register_setting(
239
- $this->option_group,
240
- $option_name,
241
- array( $this, 'panel_sanitize' )
242
- );
243
-
244
- add_settings_field(
245
- $option_name,
246
- $option['title'],
247
- array( $this, 'panel_field_content' ),
248
- $this->option_name,
249
- $section_name,
250
- $option
251
- );
252
- }
253
- }
254
- }
255
- }
256
-
257
- /**
258
- * Display sections content
259
- *
260
- * @return void
261
- * @access public
262
- */
263
- public function panel_section_content( $section ) {
264
- $page = $this->_get_tab();
265
- if ( isset( $this->options[ $page ]['sections'][ $section['id'] ]['description'] ) ) {
266
- echo "<p class='section-description'>" . $this->options[ $page ]['sections'][ $section['id'] ]['description'] . "</p>";
267
- }
268
- }
269
-
270
- /**
271
- * Sanitize the option's value
272
- *
273
- * @param array $input
274
- *
275
- * @return array
276
- * @access public
277
- */
278
- public function panel_sanitize( $input ) {
279
- return apply_filters( 'yith_panel_sanitize', $input );
280
- }
281
-
282
- /**
283
- * Get the active tab. If the page isn't provided, the function
284
- * will return the first tab name
285
- *
286
- * @return string
287
- * @access protected
288
- */
289
- public function _get_tab() {
290
- $panel_page = ! empty( $_REQUEST['panel_page'] ) ? sanitize_title_for_query( $_REQUEST['panel_page'] ) : '';
291
- $tabs = array_keys( $this->options );
292
- return ! empty( $panel_page ) ? $panel_page : $tabs[0];
293
- }
294
-
295
- /**
296
- * Enqueue scripts and styles
297
- *
298
- * @return void
299
- * @access public
300
- */
301
- public function panel_enqueue( $hook ) {
302
- global $pagenow;
303
-
304
- if ( $pagenow == $this->_submenu[0] && isset( $_GET['page'] ) && $_GET['page'] == $this->_submenu[4] ) {
305
- wp_enqueue_style( 'wp-color-picker' );
306
- wp_enqueue_style( 'jquery-ui', 'http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css' );
307
- wp_enqueue_script( 'jquery-ui-datepicker' );
308
-
309
- wp_enqueue_style( 'yith-panel-css', plugin_dir_url( __FILE__ ) . 'assets/css/yith-panel.css', array( 'wp-color-picker' ), $this->version );
310
- wp_enqueue_script( 'yith-panel-js', plugin_dir_url( __FILE__ ) . 'assets/js/yith-panel.js', array(
311
- 'jquery',
312
- 'wp-color-picker'
313
- ), $this->version, true );
314
-
315
- wp_enqueue_media();
316
-
317
- do_action( 'yith_panel_enqueue' );
318
- }
319
- }
320
-
321
-
322
- /**
323
- * Display field content
324
- *
325
- * @return void
326
- * @access public
327
- */
328
- public function panel_field_content( $field ) {
329
- $value = get_option( $field['id'], isset( $field['std'] ) ? $field['std'] : '' );
330
- $id = $field['id'];
331
- $name = $field['id'];
332
-
333
- $echo = '';
334
-
335
- switch ( $field['type'] ) {
336
- case 'text':
337
- $echo = "<input type='text' id='{$id}' name='{$name}' value='{$value}' class='regular-text code' />";
338
-
339
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
340
- $echo .= "<p class='description'>{$field['description']}</p>";
341
- }
342
- break;
343
-
344
- case 'textarea':
345
- $echo = "<textarea name='{$name}' id='{$id}' class='large-text code' rows='10' cols='50'>{$value}</textarea>";
346
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
347
- $echo .= "<p class='description'>{$field['description']}</p>";
348
- }
349
- break;
350
-
351
- case 'checkbox':
352
- $echo = "<input type='checkbox' id='{$id}' name='{$name}' value='1' " . checked( $value, true, false ) . " />";
353
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
354
- $echo .= " <label for='{$id}'><span class='description'>{$field['description']}</span></label>";
355
- }
356
- break;
357
-
358
- case 'select':
359
- $echo = "<select name='{$name}' id='{$id}'>";
360
- foreach ( $field['options'] as $v => $label ) {
361
- $echo .= "<option value='{$v}'" . selected( $value, $v, false ) . ">{$label}</option>";
362
- }
363
- $echo .= "</select>";
364
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
365
- $echo .= "<p class='description'>{$field['description']}</p>";
366
- }
367
- break;
368
-
369
- case 'skin':
370
- $echo = "<select name='{$name}' id='{$id}' class='skin' data-path='{$field['path']}'>";
371
- foreach ( $field['options'] as $v => $label ) {
372
- $echo .= "<option value='{$v}'" . selected( $value, $v, false ) . ">{$label}</option>";
373
- }
374
- $echo .= "</select>";
375
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
376
- $echo .= "<p class='description'>{$field['description']}</p><div class='skin-preview'></div>";
377
- }
378
- break;
379
-
380
- case 'number':
381
- $mms = '';
382
- if ( isset( $field['min'] ) ) {
383
- $mms .= " min='{$field['min']}'";
384
- }
385
-
386
- if ( isset( $field['max'] ) ) {
387
- $mms .= " max='{$field['max']}'";
388
- }
389
-
390
- if ( isset( $field['step'] ) ) {
391
- $mms .= " step='{$field['step']}'";
392
- }
393
-
394
- $echo = "<input type='number' id='{$id}' name='{$name}' value='{$value}' class='small-text' {$mms} />";
395
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
396
- $echo .= "<p class='description'>{$field['description']}</p>";
397
- }
398
- break;
399
-
400
- case 'colorpicker':
401
- $std = isset( $field['std'] ) ? $field['std'] : '';
402
-
403
- $echo = "<input type='text' id='{$id}' name='{$name}' value='{$value}' class='medium-text code panel-colorpicker' data-default-color='{$std}' />";
404
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
405
- $echo .= "<p class='description'>{$field['description']}</p>";
406
- }
407
- break;
408
-
409
- case 'datepicker':
410
- $std = isset( $field['std'] ) ? $field['std'] : array(
411
- 'date' => '',
412
- 'hh' => 0,
413
- 'mm' => 0,
414
- 'ss' => 0
415
- );
416
- $value = ! empty( $value ) ? $value : array( 'date' => '', 'hh' => 0, 'mm' => 0, 'ss' => 0 );
417
-
418
- $echo = "<input type='text' id='{$id}_date' name='{$name}[date]' value='{$value['date']}' class='medium-text code panel-datepicker' colorpicker='" . __( 'Select a date', 'yit' ) . "' /> - ";
419
- $echo .= "<input type='text' id='{$id}_hh' name='{$name}[hh]' value='{$value['hh']}' class='small-text code' colorpicker='" . __( 'Hours', 'yit' ) . "' /> : ";
420
- $echo .= "<input type='text' id='{$id}_mm' name='{$name}[mm]' value='{$value['mm']}' class='small-text code' colorpicker='" . __( 'Minutes', 'yit' ) . "' /> : ";
421
- $echo .= "<input type='text' id='{$id}_ss' name='{$name}[ss]' value='{$value['ss']}' class='small-text code' colorpicker='" . __( 'Minutes', 'yit' ) . "' />";
422
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
423
- $echo .= "<p class='description'>{$field['description']}</p>";
424
- }
425
- break;
426
-
427
- case 'upload':
428
- $echo = '<div class="uploader">';
429
- $echo .= " <input type='text' id='{$id}' name='{$name}' value='{$value}' class='regular-text code' /> <input type='button' name='' id='{$id}_button' class='button' value='" . __( 'Upload', 'yit' ) . "'>";
430
- $echo .= '</div>';
431
- if ( isset( $field['description'] ) && $field['description'] != '' ) {
432
- $echo .= "<p class='description'>{$field['description']}</p>";
433
- }
434
- break;
435
-
436
- case 'checkboxes':
437
- $echo = '<div class="checkboxes">';
438
- foreach ( $field['options'] as $check_value => $check_label ) {
439
- $echo .= "<label><input type='checkbox' id='{$id}_{$check_value}' name='{$name}[]' value='$check_value' " . checked( in_array( $check_value, $value ), true, false ) . " /> {$check_label}</label><br />";
440
- }
441
-
442
- $echo .= " <p class='description'>{$field['description']}</p>";
443
- break;
444
-
445
- case 'typography':
446
- $value = wp_parse_args( $value, $field['std'] ); ?>
447
- <div class="typography_container typography">
448
- <div class="option">
449
- <!-- Size -->
450
- <div class="spinner_container">
451
- <input class="typography_size number small-text" type="number"
452
- name="<?php echo $name ?>[size]" id="<?php echo $id ?>-size"
453
- value="<?php echo $value['size'] ?>"
454
- data-min="<?php if ( isset( $field['min'] ) ) {
455
- echo $field['min'];
456
- } ?>" data-max="<?php if ( isset( $field['max'] ) ) {
457
- echo $field['max'];
458
- } ?>"/>
459
- </div>
460
-
461
- <!-- Unit -->
462
- <div class="select-wrapper font-unit">
463
- <select class="typography_unit" name="<?php echo $name ?>[unit]"
464
- id="<?php echo $id ?>-unit">
465
- <option
466
- value="px" <?php selected( $value['unit'], 'px' ) ?>><?php _e( 'px', 'yit' ) ?></option>
467
- <option
468
- value="em" <?php selected( $value['unit'], 'em' ) ?>><?php _e( 'em', 'yit' ) ?></option>
469
- <option
470
- value="pt" <?php selected( $value['unit'], 'pt' ) ?>><?php _e( 'pt', 'yit' ) ?></option>
471
- <option
472
- value="rem" <?php selected( $value['unit'], 'rem' ) ?>><?php _e( 'rem', 'yit' ) ?></option>
473
- </select>
474
- </div>
475
-
476
- <!-- Family -->
477
- <div class="select-wrapper font-family">
478
- <select class="typography_family" name="<?php echo $name ?>[family]"
479
- id="<?php echo $id ?>-family" data-instance="false">
480
- <?php if ( $value['family'] ): ?>
481
- <option
482
- value="<?php echo stripslashes( $value['family'] ) ?>"><?php echo $value['family'] ?></option>
483
- <?php else: ?>
484
- <option value=""><?php _e( 'Select a font family', 'yit' ) ?></option>
485
- <?php endif ?>
486
- </select>
487
- </div>
488
-
489
- <!-- Style -->
490
- <div class="select-wrapper font-style">
491
- <select class="typography_style" name="<?php echo $name ?>[style]"
492
- id="<?php echo $id ?>-style">
493
- <option
494
- value="regular" <?php selected( $value['style'], 'regular' ) ?>><?php _e( 'Regular', 'yit' ) ?></option>
495
- <option
496
- value="bold" <?php selected( $value['style'], 'bold' ) ?>><?php _e( 'Bold', 'yit' ) ?></option>
497
- <option
498
- value="extra-bold" <?php selected( $value['style'], 'extra-bold' ) ?>><?php _e( 'Extra bold', 'yit' ) ?></option>
499
- <option
500
- value="italic" <?php selected( $value['style'], 'italic' ) ?>><?php _e( 'Italic', 'yit' ) ?></option>
501
- <option
502
- value="bold-italic" <?php selected( $value['style'], 'bold-italic' ) ?>><?php _e( 'Italic bold', 'yit' ) ?></option>
503
- </select>
504
- </div>
505
-
506
- <!-- Color -->
507
- <input type='text' id='<?php echo $id ?>-color' name='<?php echo $name ?>[color]'
508
- value='<?php echo $value['color'] ?>'
509
- class='medium-text code panel-colorpicker typography_color'
510
- data-default-color='<?php echo $field['std']['color'] ?>'/>
511
-
512
- </div>
513
- <div class="clear"></div>
514
- <div class="font-preview">
515
- <p>The quick brown fox jumps over the lazy dog</p>
516
- <!-- Refresh -->
517
- <div class="refresh_container">
518
- <button class="refresh"><?php _e( 'Click to preview', 'yit' ) ?></button>
519
- </div>
520
- </div>
521
- </div>
522
- <?php
523
- global $yith_panel_if_typography;
524
- $yith_panel_if_typography = true;
525
- break;
526
-
527
- default:
528
- do_action( 'yith_panel_field_' . $field['type'] );
529
- break;
530
- }
531
-
532
- echo $echo;
533
- }
534
-
535
- /**
536
- * Print the banner
537
- *
538
- * @access protected
539
- * @return void
540
- */
541
- public function printBanner() {
542
- if ( ! $this->banner_url || ! $this->banner_img ) {
543
- return;
544
- }
545
- ?>
546
- <div class="yith_banner">
547
- <a href="<?php echo $this->banner_url ?>" target="_blank">
548
- <img src="<?php echo $this->banner_img ?>" alt=""/>
549
- </a>
550
- </div>
551
- <?php
552
- }
553
- }
 
 
 
 
 
 
 
 
 
 
 
 
554
  }
6
  * @version 0.1.0
7
  */
8
 
9
+ if (!class_exists('YITH_Panel')) {
10
+ /*
11
+ * The class manages the theme options for the Plugin
12
+ */
13
+
14
+ class YITH_Panel
15
+ {
16
+
17
+ /**
18
+ * Class version
19
+ *
20
+ * @var string
21
+ */
22
+ public $version = '0.1.0';
23
+
24
+ /**
25
+ * Parameters for add_submenu_page
26
+ *
27
+ * add_submenu_page(
28
+ * 'themes.php', // The file name of a standard WordPress admin page
29
+ * 'Theme Options', // The text to be displayed in the title tags of the page when the menu is selected
30
+ * 'Theme Options', // The text to be used for the menu
31
+ * 'administrator', // The capability (or role) required for this menu to be displayed to the user.
32
+ * 'theme-options', // The slug name to refer to this menu by (should be unique for this menu).
33
+ * 'theme_options_display_page' // The function to be called to output the content for this page.
34
+ * );
35
+ *
36
+ * @access protected
37
+ */
38
+ protected $_submenu = array();
39
+
40
+ /**
41
+ * Initial Options definition:
42
+ * 'tab' => array(
43
+ * 'label',
44
+ * 'sections' => array(
45
+ * 'fields' => array(
46
+ * 'option1',
47
+ * 'option2',
48
+ * ...
49
+ * )
50
+ * )
51
+ * )
52
+ *
53
+ * @var array
54
+ * @access public
55
+ */
56
+ public $options = array();
57
+
58
+ /**
59
+ * Options group name
60
+ *
61
+ * @var string
62
+ * @access public
63
+ */
64
+ public $option_group = 'panel_group';
65
+
66
+ /**
67
+ * Option name
68
+ *
69
+ * @var string
70
+ * @access public
71
+ */
72
+ public $option_name = 'panel_options';
73
+
74
+ /**
75
+ * Banner links
76
+ *
77
+ * @var string
78
+ * @access public
79
+ */
80
+ public $banner_url = 'http://yithemes.com/?ap_id=plugin';
81
+ public $banner_img = '';
82
+
83
+ /**
84
+ * Constructor
85
+ *
86
+ * @param array $submenu Parameters for add_submenu_page
87
+ * @param array $options Array of plugin options
88
+ *
89
+ */
90
+ public function __construct($submenu, $options, $banner = array(), $option_group = false, $option_name = false)
91
+ {
92
+ $this->_submenu = apply_filters('yith_panel_submenu', $submenu);
93
+ $this->options = apply_filters('yith_panel_options', $options);
94
+
95
+ if (!empty($banner)) {
96
+ $this->banner_url = $banner['url'];
97
+ $this->banner_img = $banner['img'];
98
+ }
99
+
100
+ if ($option_group) {
101
+ $this->option_group = $option_group;
102
+ }
103
+
104
+ if ($option_name) {
105
+ $this->option_name = $option_name;
106
+ }
107
+
108
+ //add new menu item
109
+ //register new settings option group
110
+ //include js and css files
111
+ //print browser
112
+ add_action('admin_menu', array($this, 'add_submenu_page'));
113
+ add_action('admin_init', array($this, 'panel_register_setting'));
114
+ add_action('admin_enqueue_scripts', array($this, 'panel_enqueue'));
115
+
116
+ // add the typography javascript vars
117
+ add_action('yith_panel_after_panel', array($this, 'js_typo_vars'));
118
+ }
119
+
120
+ /**
121
+ * Create new submenu page
122
+ *
123
+ * @return void
124
+ * @access public
125
+ * @link http://codex.wordpress.org/Function_Reference/add_submenu_page
126
+ */
127
+ public function add_submenu_page()
128
+ {
129
+ $submenu = $this->_submenu;
130
+ add_submenu_page(
131
+ $submenu[0],
132
+ $submenu[1],
133
+ $submenu[2],
134
+ $submenu[3],
135
+ $submenu[4],
136
+ array($this, isset($submenu[5]) ? $submenu[5] : 'display_panel_page')
137
+ );
138
+ }
139
+
140
+ /**
141
+ * Print the Panel page
142
+ *
143
+ * @return void
144
+ * @access public
145
+ */
146
+ public function display_panel_page()
147
+ {
148
+ // Create a header in the default WordPress 'wrap' container
149
+ $page = $this->_get_tab();
150
+ ?>
151
+ <div id="icon-themes" class="icon32"><br/></div>
152
+ <h2 class="nav-tab-wrapper">
153
+ <?php foreach ($this->options as $k => $tab): ?>
154
+ <a class="nav-tab<?php if ($page == $k): ?> nav-tab-active<?php endif ?>"
155
+ href="<?php echo esc_url(add_query_arg('panel_page', $k)); ?>"><?php echo $tab['label'] ?></a>
156
+ <?php endforeach ?>
157
+ <?php do_action('yith_panel_after_tabs'); ?>
158
+ </h2>
159
+
160
+ <div class="wrap">
161
+ <?php $this->printBanner() ?>
162
+ <?php do_action('yith_panel_before_panel'); ?>
163
+ <form action="options.php" method="post">
164
+
165
+ <?php do_settings_sections($this->option_name); ?>
166
+ <?php settings_fields($this->option_group) ?>
167
+
168
+ <p class="submit">
169
+ <input type="hidden" name="panel_page" value="<?php echo $page ?>"/>
170
+ <input class="button-primary" type="submit" name="save_options" value="Save Options"/>
171
+ </p>
172
+ </form>
173
+ <?php do_action('yith_panel_after_panel'); ?>
174
+ </div>
175
+ <?php
176
+ }
177
+
178
+ /**
179
+ * Add the vars for the typography options
180
+ */
181
+ public function js_typo_vars()
182
+ {
183
+ global $yith_panel_if_typography;
184
+ if (!isset($yith_panel_if_typography) || !$yith_panel_if_typography) {
185
+ return;
186
+ }
187
+
188
+ $web_fonts = array(
189
+ "Arial",
190
+ "Arial Black",
191
+ "Comic Sans MS",
192
+ "Courier New",
193
+ "Georgia",
194
+ "Impact",
195
+ "Lucida Console",
196
+ "Lucida Sans Unicode",
197
+ "Thaoma",
198
+ "Trebuchet MS",
199
+ "Verdana"
200
+ );
201
+
202
+ // http://niubbys.altervista.org/google_fonts.php
203
+ $google_fonts = file_get_contents(dirname(__FILE__) . '/assets/js/google_fonts.json');
204
+ ?>
205
+ <script type="text/javascript">
206
+ var yit_google_fonts = '<?php echo $google_fonts ?>',
207
+ yit_web_fonts = '{"items":<?php echo json_encode( $web_fonts ) ?>}',
208
+ yit_family_string = '';
209
+ </script>
210
+ <?php
211
+ }
212
+
213
+ /**
214
+ * Register a new settings option group
215
+ *
216
+ * @return void
217
+ * @access public
218
+ * @link http://codex.wordpress.org/Function_Reference/register_setting
219
+ * @link http://codex.wordpress.org/Function_Reference/add_settings_section
220
+ * @link http://codex.wordpress.org/Function_Reference/add_settings_field
221
+ */
222
+ public function panel_register_setting()
223
+ {
224
+ $page = $this->_get_tab();
225
+ $tab = isset($this->options[$page]) ? $this->options[$page] : array();
226
+
227
+ if (!empty($tab['sections'])) {
228
+ //add sections and fields
229
+ foreach ($tab['sections'] as $section_name => $section) {
230
+ //add the section
231
+ add_settings_section(
232
+ $section_name,
233
+ $section['title'],
234
+ array($this, 'panel_section_content'),
235
+ $this->option_name
236
+ );
237
+
238
+ //add the fields
239
+ foreach ($section['fields'] as $option_name => $option) {
240
+ $option['id'] = $option_name;
241
+ $option['label_for'] = $option_name;
242
+
243
+ //register settings group
244
+ register_setting(
245
+ $this->option_group,
246
+ $option_name,
247
+ array($this, 'panel_sanitize')
248
+ );
249
+
250
+ add_settings_field(
251
+ $option_name,
252
+ $option['title'],
253
+ array($this, 'panel_field_content'),
254
+ $this->option_name,
255
+ $section_name,
256
+ $option
257
+ );
258
+ }
259
+ }
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Display sections content
265
+ *
266
+ * @return void
267
+ * @access public
268
+ */
269
+ public function panel_section_content($section)
270
+ {
271
+ $page = $this->_get_tab();
272
+ if (isset($this->options[$page]['sections'][$section['id']]['description'])) {
273
+ echo "<p class='section-description'>" . $this->options[$page]['sections'][$section['id']]['description'] . "</p>";
274
+ }
275
+ }
276
+
277
+ /**
278
+ * Sanitize the option's value
279
+ *
280
+ * @param array $input
281
+ *
282
+ * @return array
283
+ * @access public
284
+ */
285
+ public function panel_sanitize($input)
286
+ {
287
+ return apply_filters('yith_panel_sanitize', $input);
288
+ }
289
+
290
+ /**
291
+ * Get the active tab. If the page isn't provided, the function
292
+ * will return the first tab name
293
+ *
294
+ * @return string
295
+ * @access protected
296
+ */
297
+ public function _get_tab()
298
+ {
299
+ $panel_page = !empty($_REQUEST['panel_page']) ? sanitize_title_for_query($_REQUEST['panel_page']) : '';
300
+ $tabs = array_keys($this->options);
301
+ return !empty($panel_page) ? $panel_page : $tabs[0];
302
+ }
303
+
304
+ /**
305
+ * Enqueue scripts and styles
306
+ *
307
+ * @return void
308
+ * @access public
309
+ */
310
+ public function panel_enqueue($hook)
311
+ {
312
+ global $pagenow;
313
+
314
+ if ($pagenow == $this->_submenu[0] && isset($_GET['page']) && $_GET['page'] == $this->_submenu[4]) {
315
+ wp_enqueue_style('wp-color-picker');
316
+ wp_enqueue_style('yith-ywzm-jquery-ui', plugin_dir_url(__FILE__) . 'assets/css/jquery-ui.css');
317
+ wp_enqueue_script('jquery-ui-datepicker');
318
+
319
+ wp_enqueue_style('yith-panel-css', plugin_dir_url(__FILE__) . 'assets/css/yith-panel.css', array('wp-color-picker'), $this->version);
320
+ wp_enqueue_script('yith-panel-js', plugin_dir_url(__FILE__) . 'assets/js/yith-panel.js', array(
321
+ 'jquery',
322
+ 'wp-color-picker'
323
+ ), $this->version, true);
324
+
325
+ wp_enqueue_media();
326
+
327
+ do_action('yith_panel_enqueue');
328
+ }
329
+ }
330
+
331
+
332
+ /**
333
+ * Display field content
334
+ *
335
+ * @return void
336
+ * @access public
337
+ */
338
+ public function panel_field_content($field)
339
+ {
340
+ $value = get_option($field['id'], isset($field['std']) ? $field['std'] : '');
341
+ $id = $field['id'];
342
+ $name = $field['id'];
343
+
344
+ $echo = '';
345
+
346
+ switch ($field['type']) {
347
+ case 'text':
348
+ $echo = "<input type='text' id='{$id}' name='{$name}' value='{$value}' class='regular-text code' />";
349
+
350
+ if (isset($field['description']) && $field['description'] != '') {
351
+ $echo .= "<p class='description'>{$field['description']}</p>";
352
+ }
353
+ break;
354
+
355
+ case 'textarea':
356
+ $echo = "<textarea name='{$name}' id='{$id}' class='large-text code' rows='10' cols='50'>{$value}</textarea>";
357
+ if (isset($field['description']) && $field['description'] != '') {
358
+ $echo .= "<p class='description'>{$field['description']}</p>";
359
+ }
360
+ break;
361
+
362
+ case 'checkbox':
363
+ $echo = "<input type='checkbox' id='{$id}' name='{$name}' value='1' " . checked($value, true, false) . " />";
364
+ if (isset($field['description']) && $field['description'] != '') {
365
+ $echo .= " <label for='{$id}'><span class='description'>{$field['description']}</span></label>";
366
+ }
367
+ break;
368
+
369
+ case 'select':
370
+ $echo = "<select name='{$name}' id='{$id}'>";
371
+ foreach ($field['options'] as $v => $label) {
372
+ $echo .= "<option value='{$v}'" . selected($value, $v, false) . ">{$label}</option>";
373
+ }
374
+ $echo .= "</select>";
375
+ if (isset($field['description']) && $field['description'] != '') {
376
+ $echo .= "<p class='description'>{$field['description']}</p>";
377
+ }
378
+ break;
379
+
380
+ case 'skin':
381
+ $echo = "<select name='{$name}' id='{$id}' class='skin' data-path='{$field['path']}'>";
382
+ foreach ($field['options'] as $v => $label) {
383
+ $echo .= "<option value='{$v}'" . selected($value, $v, false) . ">{$label}</option>";
384
+ }
385
+ $echo .= "</select>";
386
+ if (isset($field['description']) && $field['description'] != '') {
387
+ $echo .= "<p class='description'>{$field['description']}</p><div class='skin-preview'></div>";
388
+ }
389
+ break;
390
+
391
+ case 'number':
392
+ $mms = '';
393
+ if (isset($field['min'])) {
394
+ $mms .= " min='{$field['min']}'";
395
+ }
396
+
397
+ if (isset($field['max'])) {
398
+ $mms .= " max='{$field['max']}'";
399
+ }
400
+
401
+ if (isset($field['step'])) {
402
+ $mms .= " step='{$field['step']}'";
403
+ }
404
+
405
+ $echo = "<input type='number' id='{$id}' name='{$name}' value='{$value}' class='small-text' {$mms} />";
406
+ if (isset($field['description']) && $field['description'] != '') {
407
+ $echo .= "<p class='description'>{$field['description']}</p>";
408
+ }
409
+ break;
410
+
411
+ case 'colorpicker':
412
+ $std = isset($field['std']) ? $field['std'] : '';
413
+
414
+ $echo = "<input type='text' id='{$id}' name='{$name}' value='{$value}' class='medium-text code panel-colorpicker' data-default-color='{$std}' />";
415
+ if (isset($field['description']) && $field['description'] != '') {
416
+ $echo .= "<p class='description'>{$field['description']}</p>";
417
+ }
418
+ break;
419
+
420
+ case 'datepicker':
421
+ $std = isset($field['std']) ? $field['std'] : array(
422
+ 'date' => '',
423
+ 'hh' => 0,
424
+ 'mm' => 0,
425
+ 'ss' => 0
426
+ );
427
+ $value = !empty($value) ? $value : array('date' => '', 'hh' => 0, 'mm' => 0, 'ss' => 0);
428
+
429
+ $echo = "<input type='text' id='{$id}_date' name='{$name}[date]' value='{$value['date']}' class='medium-text code panel-datepicker' colorpicker='" . __('Select a date', 'yit') . "' /> - ";
430
+ $echo .= "<input type='text' id='{$id}_hh' name='{$name}[hh]' value='{$value['hh']}' class='small-text code' colorpicker='" . __('Hours', 'yit') . "' /> : ";
431
+ $echo .= "<input type='text' id='{$id}_mm' name='{$name}[mm]' value='{$value['mm']}' class='small-text code' colorpicker='" . __('Minutes', 'yit') . "' /> : ";
432
+ $echo .= "<input type='text' id='{$id}_ss' name='{$name}[ss]' value='{$value['ss']}' class='small-text code' colorpicker='" . __('Minutes', 'yit') . "' />";
433
+ if (isset($field['description']) && $field['description'] != '') {
434
+ $echo .= "<p class='description'>{$field['description']}</p>";
435
+ }
436
+ break;
437
+
438
+ case 'upload':
439
+ $echo = '<div class="uploader">';
440
+ $echo .= " <input type='text' id='{$id}' name='{$name}' value='{$value}' class='regular-text code' /> <input type='button' name='' id='{$id}_button' class='button' value='" . __('Upload', 'yit') . "'>";
441
+ $echo .= '</div>';
442
+ if (isset($field['description']) && $field['description'] != '') {
443
+ $echo .= "<p class='description'>{$field['description']}</p>";
444
+ }
445
+ break;
446
+
447
+ case 'checkboxes':
448
+ $echo = '<div class="checkboxes">';
449
+ foreach ($field['options'] as $check_value => $check_label) {
450
+ $echo .= "<label><input type='checkbox' id='{$id}_{$check_value}' name='{$name}[]' value='$check_value' " . checked(in_array($check_value, $value), true, false) . " /> {$check_label}</label><br />";
451
+ }
452
+
453
+ $echo .= " <p class='description'>{$field['description']}</p>";
454
+ break;
455
+
456
+ case 'typography':
457
+ $value = wp_parse_args($value, $field['std']); ?>
458
+ <div class="typography_container typography">
459
+ <div class="option">
460
+ <!-- Size -->
461
+ <div class="spinner_container">
462
+ <input class="typography_size number small-text" type="number"
463
+ name="<?php echo $name ?>[size]" id="<?php echo $id ?>-size"
464
+ value="<?php echo $value['size'] ?>"
465
+ data-min="<?php if (isset($field['min'])) {
466
+ echo $field['min'];
467
+ } ?>" data-max="<?php if (isset($field['max'])) {
468
+ echo $field['max'];
469
+ } ?>"/>
470
+ </div>
471
+
472
+ <!-- Unit -->
473
+ <div class="select-wrapper font-unit">
474
+ <select class="typography_unit" name="<?php echo $name ?>[unit]"
475
+ id="<?php echo $id ?>-unit">
476
+ <option
477
+ value="px" <?php selected($value['unit'], 'px') ?>><?php _e('px', 'yit') ?></option>
478
+ <option
479
+ value="em" <?php selected($value['unit'], 'em') ?>><?php _e('em', 'yit') ?></option>
480
+ <option
481
+ value="pt" <?php selected($value['unit'], 'pt') ?>><?php _e('pt', 'yit') ?></option>
482
+ <option
483
+ value="rem" <?php selected($value['unit'], 'rem') ?>><?php _e('rem', 'yit') ?></option>
484
+ </select>
485
+ </div>
486
+
487
+ <!-- Family -->
488
+ <div class="select-wrapper font-family">
489
+ <select class="typography_family" name="<?php echo $name ?>[family]"
490
+ id="<?php echo $id ?>-family" data-instance="false">
491
+ <?php if ($value['family']): ?>
492
+ <option
493
+ value="<?php echo stripslashes($value['family']) ?>"><?php echo $value['family'] ?></option>
494
+ <?php else: ?>
495
+ <option value=""><?php _e('Select a font family', 'yit') ?></option>
496
+ <?php endif ?>
497
+ </select>
498
+ </div>
499
+
500
+ <!-- Style -->
501
+ <div class="select-wrapper font-style">
502
+ <select class="typography_style" name="<?php echo $name ?>[style]"
503
+ id="<?php echo $id ?>-style">
504
+ <option
505
+ value="regular" <?php selected($value['style'], 'regular') ?>><?php _e('Regular', 'yit') ?></option>
506
+ <option
507
+ value="bold" <?php selected($value['style'], 'bold') ?>><?php _e('Bold', 'yit') ?></option>
508
+ <option
509
+ value="extra-bold" <?php selected($value['style'], 'extra-bold') ?>><?php _e('Extra bold', 'yit') ?></option>
510
+ <option
511
+ value="italic" <?php selected($value['style'], 'italic') ?>><?php _e('Italic', 'yit') ?></option>
512
+ <option
513
+ value="bold-italic" <?php selected($value['style'], 'bold-italic') ?>><?php _e('Italic bold', 'yit') ?></option>
514
+ </select>
515
+ </div>
516
+
517
+ <!-- Color -->
518
+ <input type='text' id='<?php echo $id ?>-color' name='<?php echo $name ?>[color]'
519
+ value='<?php echo $value['color'] ?>'
520
+ class='medium-text code panel-colorpicker typography_color'
521
+ data-default-color='<?php echo $field['std']['color'] ?>'/>
522
+
523
+ </div>
524
+ <div class="clear"></div>
525
+ <div class="font-preview">
526
+ <p>The quick brown fox jumps over the lazy dog</p>
527
+ <!-- Refresh -->
528
+ <div class="refresh_container">
529
+ <button class="refresh"><?php _e('Click to preview', 'yit') ?></button>
530
+ </div>
531
+ </div>
532
+ </div>
533
+ <?php
534
+ global $yith_panel_if_typography;
535
+ $yith_panel_if_typography = true;
536
+ break;
537
+
538
+ default:
539
+ do_action('yith_panel_field_' . $field['type']);
540
+ break;
541
+ }
542
+
543
+ echo $echo;
544
+ }
545
+
546
+ /**
547
+ * Print the banner
548
+ *
549
+ * @access protected
550
+ * @return void
551
+ */
552
+ public function printBanner()
553
+ {
554
+ if (!$this->banner_url || !$this->banner_img) {
555
+ return;
556
+ }
557
+ ?>
558
+ <div class="yith_banner">
559
+ <a href="<?php echo $this->banner_url ?>" target="_blank">
560
+ <img src="<?php echo $this->banner_img ?>" alt=""/>
561
+ </a>
562
+ </div>
563
+ <?php
564
+ }
565
+ }
566
  }