Countdown, Coming Soon – Countdown & Clock - Version 2.4.0

Version Description

  • Fixed Clock1 options
  • Fixed Clock2 options
  • Fixed Clock3 options
  • Fixed Coming Soon options
  • Fixed Countdown button options
  • Bug fixed types section
Download this release

Release Info

Developer adamskaat
Plugin Icon 128x128 Countdown, Coming Soon – Countdown & Clock
Version 2.4.0
Comparing to
See all releases

Code changes from version 2.3.9.13 to 2.4.0

assets/js/Countdown.js CHANGED
@@ -811,7 +811,7 @@ YcdCountdown.prototype.render = function(currentCountdown) {
811
  YcdCountdown.prototype.runCountdown = function (currentCountdown) {
812
  var options = this.getOptions();
813
  var allOptions = this.getAllOptions();
814
- console.log(allOptions);
815
  function countdownComplete(unit, value, total){
816
 
817
  if(total <= 0){
811
  YcdCountdown.prototype.runCountdown = function (currentCountdown) {
812
  var options = this.getOptions();
813
  var allOptions = this.getAllOptions();
814
+
815
  function countdownComplete(unit, value, total){
816
 
817
  if(total <= 0){
assets/js/moment-timezone.js ADDED
@@ -0,0 +1,696 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! moment-timezone.js
2
+ //! version : 0.5.34
3
+ //! Copyright (c) JS Foundation and other contributors
4
+ //! license : MIT
5
+ //! github.com/moment/moment-timezone
6
+
7
+ (function (root, factory) {
8
+ "use strict";
9
+
10
+ /*global define*/
11
+ if (typeof module === 'object' && module.exports) {
12
+ module.exports = factory(require('moment')); // Node
13
+ } else if (typeof define === 'function' && define.amd) {
14
+ define(['moment'], factory); // AMD
15
+ } else {
16
+ factory(root.moment); // Browser
17
+ }
18
+ }(this, function (moment) {
19
+ "use strict";
20
+
21
+ // Resolves es6 module loading issue
22
+ if (moment.version === undefined && moment.default) {
23
+ moment = moment.default;
24
+ }
25
+
26
+ // Do not load moment-timezone a second time.
27
+ // if (moment.tz !== undefined) {
28
+ // logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
29
+ // return moment;
30
+ // }
31
+
32
+ var VERSION = "0.5.34",
33
+ zones = {},
34
+ links = {},
35
+ countries = {},
36
+ names = {},
37
+ guesses = {},
38
+ cachedGuess;
39
+
40
+ if (!moment || typeof moment.version !== 'string') {
41
+ logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
42
+ }
43
+
44
+ var momentVersion = moment.version.split('.'),
45
+ major = +momentVersion[0],
46
+ minor = +momentVersion[1];
47
+
48
+ // Moment.js version check
49
+ if (major < 2 || (major === 2 && minor < 6)) {
50
+ logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
51
+ }
52
+
53
+ /************************************
54
+ Unpacking
55
+ ************************************/
56
+
57
+ function charCodeToInt(charCode) {
58
+ if (charCode > 96) {
59
+ return charCode - 87;
60
+ } else if (charCode > 64) {
61
+ return charCode - 29;
62
+ }
63
+ return charCode - 48;
64
+ }
65
+
66
+ function unpackBase60(string) {
67
+ var i = 0,
68
+ parts = string.split('.'),
69
+ whole = parts[0],
70
+ fractional = parts[1] || '',
71
+ multiplier = 1,
72
+ num,
73
+ out = 0,
74
+ sign = 1;
75
+
76
+ // handle negative numbers
77
+ if (string.charCodeAt(0) === 45) {
78
+ i = 1;
79
+ sign = -1;
80
+ }
81
+
82
+ // handle digits before the decimal
83
+ for (i; i < whole.length; i++) {
84
+ num = charCodeToInt(whole.charCodeAt(i));
85
+ out = 60 * out + num;
86
+ }
87
+
88
+ // handle digits after the decimal
89
+ for (i = 0; i < fractional.length; i++) {
90
+ multiplier = multiplier / 60;
91
+ num = charCodeToInt(fractional.charCodeAt(i));
92
+ out += num * multiplier;
93
+ }
94
+
95
+ return out * sign;
96
+ }
97
+
98
+ function arrayToInt (array) {
99
+ for (var i = 0; i < array.length; i++) {
100
+ array[i] = unpackBase60(array[i]);
101
+ }
102
+ }
103
+
104
+ function intToUntil (array, length) {
105
+ for (var i = 0; i < length; i++) {
106
+ array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
107
+ }
108
+
109
+ array[length - 1] = Infinity;
110
+ }
111
+
112
+ function mapIndices (source, indices) {
113
+ var out = [], i;
114
+
115
+ for (i = 0; i < indices.length; i++) {
116
+ out[i] = source[indices[i]];
117
+ }
118
+
119
+ return out;
120
+ }
121
+
122
+ function unpack (string) {
123
+ var data = string.split('|'),
124
+ offsets = data[2].split(' '),
125
+ indices = data[3].split(''),
126
+ untils = data[4].split(' ');
127
+
128
+ arrayToInt(offsets);
129
+ arrayToInt(indices);
130
+ arrayToInt(untils);
131
+
132
+ intToUntil(untils, indices.length);
133
+
134
+ return {
135
+ name : data[0],
136
+ abbrs : mapIndices(data[1].split(' '), indices),
137
+ offsets : mapIndices(offsets, indices),
138
+ untils : untils,
139
+ population : data[5] | 0
140
+ };
141
+ }
142
+
143
+ /************************************
144
+ Zone object
145
+ ************************************/
146
+
147
+ function Zone (packedString) {
148
+ if (packedString) {
149
+ this._set(unpack(packedString));
150
+ }
151
+ }
152
+
153
+ Zone.prototype = {
154
+ _set : function (unpacked) {
155
+ this.name = unpacked.name;
156
+ this.abbrs = unpacked.abbrs;
157
+ this.untils = unpacked.untils;
158
+ this.offsets = unpacked.offsets;
159
+ this.population = unpacked.population;
160
+ },
161
+
162
+ _index : function (timestamp) {
163
+ var target = +timestamp,
164
+ untils = this.untils,
165
+ i;
166
+
167
+ for (i = 0; i < untils.length; i++) {
168
+ if (target < untils[i]) {
169
+ return i;
170
+ }
171
+ }
172
+ },
173
+
174
+ countries : function () {
175
+ var zone_name = this.name;
176
+ return Object.keys(countries).filter(function (country_code) {
177
+ return countries[country_code].zones.indexOf(zone_name) !== -1;
178
+ });
179
+ },
180
+
181
+ parse : function (timestamp) {
182
+ var target = +timestamp,
183
+ offsets = this.offsets,
184
+ untils = this.untils,
185
+ max = untils.length - 1,
186
+ offset, offsetNext, offsetPrev, i;
187
+
188
+ for (i = 0; i < max; i++) {
189
+ offset = offsets[i];
190
+ offsetNext = offsets[i + 1];
191
+ offsetPrev = offsets[i ? i - 1 : i];
192
+
193
+ if (offset < offsetNext && tz.moveAmbiguousForward) {
194
+ offset = offsetNext;
195
+ } else if (offset > offsetPrev && tz.moveInvalidForward) {
196
+ offset = offsetPrev;
197
+ }
198
+
199
+ if (target < untils[i] - (offset * 60000)) {
200
+ return offsets[i];
201
+ }
202
+ }
203
+
204
+ return offsets[max];
205
+ },
206
+
207
+ abbr : function (mom) {
208
+ return this.abbrs[this._index(mom)];
209
+ },
210
+
211
+ offset : function (mom) {
212
+ logError("zone.offset has been deprecated in favor of zone.utcOffset");
213
+ return this.offsets[this._index(mom)];
214
+ },
215
+
216
+ utcOffset : function (mom) {
217
+ return this.offsets[this._index(mom)];
218
+ }
219
+ };
220
+
221
+ /************************************
222
+ Country object
223
+ ************************************/
224
+
225
+ function Country (country_name, zone_names) {
226
+ this.name = country_name;
227
+ this.zones = zone_names;
228
+ }
229
+
230
+ /************************************
231
+ Current Timezone
232
+ ************************************/
233
+
234
+ function OffsetAt(at) {
235
+ var timeString = at.toTimeString();
236
+ var abbr = timeString.match(/\([a-z ]+\)/i);
237
+ if (abbr && abbr[0]) {
238
+ // 17:56:31 GMT-0600 (CST)
239
+ // 17:56:31 GMT-0600 (Central Standard Time)
240
+ abbr = abbr[0].match(/[A-Z]/g);
241
+ abbr = abbr ? abbr.join('') : undefined;
242
+ } else {
243
+ // 17:56:31 CST
244
+ // 17:56:31 GMT+0800 (台北標準時間)
245
+ abbr = timeString.match(/[A-Z]{3,5}/g);
246
+ abbr = abbr ? abbr[0] : undefined;
247
+ }
248
+
249
+ if (abbr === 'GMT') {
250
+ abbr = undefined;
251
+ }
252
+
253
+ this.at = +at;
254
+ this.abbr = abbr;
255
+ this.offset = at.getTimezoneOffset();
256
+ }
257
+
258
+ function ZoneScore(zone) {
259
+ this.zone = zone;
260
+ this.offsetScore = 0;
261
+ this.abbrScore = 0;
262
+ }
263
+
264
+ ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
265
+ this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
266
+ if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
267
+ this.abbrScore++;
268
+ }
269
+ };
270
+
271
+ function findChange(low, high) {
272
+ var mid, diff;
273
+
274
+ while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
275
+ mid = new OffsetAt(new Date(low.at + diff));
276
+ if (mid.offset === low.offset) {
277
+ low = mid;
278
+ } else {
279
+ high = mid;
280
+ }
281
+ }
282
+
283
+ return low;
284
+ }
285
+
286
+ function userOffsets() {
287
+ var startYear = new Date().getFullYear() - 2,
288
+ last = new OffsetAt(new Date(startYear, 0, 1)),
289
+ offsets = [last],
290
+ change, next, i;
291
+
292
+ for (i = 1; i < 48; i++) {
293
+ next = new OffsetAt(new Date(startYear, i, 1));
294
+ if (next.offset !== last.offset) {
295
+ change = findChange(last, next);
296
+ offsets.push(change);
297
+ offsets.push(new OffsetAt(new Date(change.at + 6e4)));
298
+ }
299
+ last = next;
300
+ }
301
+
302
+ for (i = 0; i < 4; i++) {
303
+ offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
304
+ offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
305
+ }
306
+
307
+ return offsets;
308
+ }
309
+
310
+ function sortZoneScores (a, b) {
311
+ if (a.offsetScore !== b.offsetScore) {
312
+ return a.offsetScore - b.offsetScore;
313
+ }
314
+ if (a.abbrScore !== b.abbrScore) {
315
+ return a.abbrScore - b.abbrScore;
316
+ }
317
+ if (a.zone.population !== b.zone.population) {
318
+ return b.zone.population - a.zone.population;
319
+ }
320
+ return b.zone.name.localeCompare(a.zone.name);
321
+ }
322
+
323
+ function addToGuesses (name, offsets) {
324
+ var i, offset;
325
+ arrayToInt(offsets);
326
+ for (i = 0; i < offsets.length; i++) {
327
+ offset = offsets[i];
328
+ guesses[offset] = guesses[offset] || {};
329
+ guesses[offset][name] = true;
330
+ }
331
+ }
332
+
333
+ function guessesForUserOffsets (offsets) {
334
+ var offsetsLength = offsets.length,
335
+ filteredGuesses = {},
336
+ out = [],
337
+ i, j, guessesOffset;
338
+
339
+ for (i = 0; i < offsetsLength; i++) {
340
+ guessesOffset = guesses[offsets[i].offset] || {};
341
+ for (j in guessesOffset) {
342
+ if (guessesOffset.hasOwnProperty(j)) {
343
+ filteredGuesses[j] = true;
344
+ }
345
+ }
346
+ }
347
+
348
+ for (i in filteredGuesses) {
349
+ if (filteredGuesses.hasOwnProperty(i)) {
350
+ out.push(names[i]);
351
+ }
352
+ }
353
+
354
+ return out;
355
+ }
356
+
357
+ function rebuildGuess () {
358
+
359
+ // use Intl API when available and returning valid time zone
360
+ try {
361
+ var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
362
+ if (intlName && intlName.length > 3) {
363
+ var name = names[normalizeName(intlName)];
364
+ if (name) {
365
+ return name;
366
+ }
367
+ logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
368
+ }
369
+ } catch (e) {
370
+ // Intl unavailable, fall back to manual guessing.
371
+ }
372
+
373
+ var offsets = userOffsets(),
374
+ offsetsLength = offsets.length,
375
+ guesses = guessesForUserOffsets(offsets),
376
+ zoneScores = [],
377
+ zoneScore, i, j;
378
+
379
+ for (i = 0; i < guesses.length; i++) {
380
+ zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
381
+ for (j = 0; j < offsetsLength; j++) {
382
+ zoneScore.scoreOffsetAt(offsets[j]);
383
+ }
384
+ zoneScores.push(zoneScore);
385
+ }
386
+
387
+ zoneScores.sort(sortZoneScores);
388
+
389
+ return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
390
+ }
391
+
392
+ function guess (ignoreCache) {
393
+ if (!cachedGuess || ignoreCache) {
394
+ cachedGuess = rebuildGuess();
395
+ }
396
+ return cachedGuess;
397
+ }
398
+
399
+ /************************************
400
+ Global Methods
401
+ ************************************/
402
+
403
+ function normalizeName (name) {
404
+ return (name || '').toLowerCase().replace(/\//g, '_');
405
+ }
406
+
407
+ function addZone (packed) {
408
+ var i, name, split, normalized;
409
+
410
+ if (typeof packed === "string") {
411
+ packed = [packed];
412
+ }
413
+
414
+ for (i = 0; i < packed.length; i++) {
415
+ split = packed[i].split('|');
416
+ name = split[0];
417
+ normalized = normalizeName(name);
418
+ zones[normalized] = packed[i];
419
+ names[normalized] = name;
420
+ addToGuesses(normalized, split[2].split(' '));
421
+ }
422
+ }
423
+
424
+ function getZone (name, caller) {
425
+
426
+ name = normalizeName(name);
427
+
428
+ var zone = zones[name];
429
+ var link;
430
+
431
+ if (zone instanceof Zone) {
432
+ return zone;
433
+ }
434
+
435
+ if (typeof zone === 'string') {
436
+ zone = new Zone(zone);
437
+ zones[name] = zone;
438
+ return zone;
439
+ }
440
+
441
+ // Pass getZone to prevent recursion more than 1 level deep
442
+ if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
443
+ zone = zones[name] = new Zone();
444
+ zone._set(link);
445
+ zone.name = names[name];
446
+ return zone;
447
+ }
448
+
449
+ return null;
450
+ }
451
+
452
+ function getNames () {
453
+ var i, out = [];
454
+
455
+ for (i in names) {
456
+ if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
457
+ out.push(names[i]);
458
+ }
459
+ }
460
+
461
+ return out.sort();
462
+ }
463
+
464
+ function getCountryNames () {
465
+ return Object.keys(countries);
466
+ }
467
+
468
+ function addLink (aliases) {
469
+ var i, alias, normal0, normal1;
470
+
471
+ if (typeof aliases === "string") {
472
+ aliases = [aliases];
473
+ }
474
+
475
+ for (i = 0; i < aliases.length; i++) {
476
+ alias = aliases[i].split('|');
477
+
478
+ normal0 = normalizeName(alias[0]);
479
+ normal1 = normalizeName(alias[1]);
480
+
481
+ links[normal0] = normal1;
482
+ names[normal0] = alias[0];
483
+
484
+ links[normal1] = normal0;
485
+ names[normal1] = alias[1];
486
+ }
487
+ }
488
+
489
+ function addCountries (data) {
490
+ var i, country_code, country_zones, split;
491
+ if (!data || !data.length) return;
492
+ for (i = 0; i < data.length; i++) {
493
+ split = data[i].split('|');
494
+ country_code = split[0].toUpperCase();
495
+ country_zones = split[1].split(' ');
496
+ countries[country_code] = new Country(
497
+ country_code,
498
+ country_zones
499
+ );
500
+ }
501
+ }
502
+
503
+ function getCountry (name) {
504
+ name = name.toUpperCase();
505
+ return countries[name] || null;
506
+ }
507
+
508
+ function zonesForCountry(country, with_offset) {
509
+ country = getCountry(country);
510
+
511
+ if (!country) return null;
512
+
513
+ var zones = country.zones.sort();
514
+
515
+ if (with_offset) {
516
+ return zones.map(function (zone_name) {
517
+ var zone = getZone(zone_name);
518
+ return {
519
+ name: zone_name,
520
+ offset: zone.utcOffset(new Date())
521
+ };
522
+ });
523
+ }
524
+
525
+ return zones;
526
+ }
527
+
528
+ function loadData (data) {
529
+ addZone(data.zones);
530
+ addLink(data.links);
531
+ addCountries(data.countries);
532
+ tz.dataVersion = data.version;
533
+ }
534
+
535
+ function zoneExists (name) {
536
+ if (!zoneExists.didShowError) {
537
+ zoneExists.didShowError = true;
538
+ logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
539
+ }
540
+ return !!getZone(name);
541
+ }
542
+
543
+ function needsOffset (m) {
544
+ var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
545
+ return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
546
+ }
547
+
548
+ function logError (message) {
549
+ if (typeof console !== 'undefined' && typeof console.error === 'function') {
550
+ console.error(message);
551
+ }
552
+ }
553
+
554
+ /************************************
555
+ moment.tz namespace
556
+ ************************************/
557
+
558
+ function tz (input) {
559
+ var args = Array.prototype.slice.call(arguments, 0, -1),
560
+ name = arguments[arguments.length - 1],
561
+ zone = getZone(name),
562
+ out = moment.utc.apply(null, args);
563
+
564
+ if (zone && !moment.isMoment(input) && needsOffset(out)) {
565
+ out.add(zone.parse(out), 'minutes');
566
+ }
567
+
568
+ out.tz(name);
569
+
570
+ return out;
571
+ }
572
+
573
+ tz.version = VERSION;
574
+ tz.dataVersion = '';
575
+ tz._zones = zones;
576
+ tz._links = links;
577
+ tz._names = names;
578
+ tz._countries = countries;
579
+ tz.add = addZone;
580
+ tz.link = addLink;
581
+ tz.load = loadData;
582
+ tz.zone = getZone;
583
+ tz.zoneExists = zoneExists; // deprecated in 0.1.0
584
+ tz.guess = guess;
585
+ tz.names = getNames;
586
+ tz.Zone = Zone;
587
+ tz.unpack = unpack;
588
+ tz.unpackBase60 = unpackBase60;
589
+ tz.needsOffset = needsOffset;
590
+ tz.moveInvalidForward = true;
591
+ tz.moveAmbiguousForward = false;
592
+ tz.countries = getCountryNames;
593
+ tz.zonesForCountry = zonesForCountry;
594
+
595
+ /************************************
596
+ Interface with Moment.js
597
+ ************************************/
598
+
599
+ var fn = moment.fn;
600
+
601
+ moment.tz = tz;
602
+
603
+ moment.defaultZone = null;
604
+
605
+ moment.updateOffset = function (mom, keepTime) {
606
+ var zone = moment.defaultZone,
607
+ offset;
608
+
609
+ if (mom._z === undefined) {
610
+ if (zone && needsOffset(mom) && !mom._isUTC) {
611
+ mom._d = moment.utc(mom._a)._d;
612
+ mom.utc().add(zone.parse(mom), 'minutes');
613
+ }
614
+ mom._z = zone;
615
+ }
616
+ if (mom._z) {
617
+ offset = mom._z.utcOffset(mom);
618
+ if (Math.abs(offset) < 16) {
619
+ offset = offset / 60;
620
+ }
621
+ if (mom.utcOffset !== undefined) {
622
+ var z = mom._z;
623
+ mom.utcOffset(-offset, keepTime);
624
+ mom._z = z;
625
+ } else {
626
+ mom.zone(offset, keepTime);
627
+ }
628
+ }
629
+ };
630
+
631
+ fn.tz = function (name, keepTime) {
632
+ if (name) {
633
+ if (typeof name !== 'string') {
634
+ throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
635
+ }
636
+ this._z = getZone(name);
637
+ if (this._z) {
638
+ moment.updateOffset(this, keepTime);
639
+ } else {
640
+ logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
641
+ }
642
+ return this;
643
+ }
644
+ if (this._z) { return this._z.name; }
645
+ };
646
+
647
+ function abbrWrap (old) {
648
+ return function () {
649
+ if (this._z) { return this._z.abbr(this); }
650
+ return old.call(this);
651
+ };
652
+ }
653
+
654
+ function resetZoneWrap (old) {
655
+ return function () {
656
+ this._z = null;
657
+ return old.apply(this, arguments);
658
+ };
659
+ }
660
+
661
+ function resetZoneWrap2 (old) {
662
+ return function () {
663
+ if (arguments.length > 0) this._z = null;
664
+ return old.apply(this, arguments);
665
+ };
666
+ }
667
+
668
+ fn.zoneName = abbrWrap(fn.zoneName);
669
+ fn.zoneAbbr = abbrWrap(fn.zoneAbbr);
670
+ fn.utc = resetZoneWrap(fn.utc);
671
+ fn.local = resetZoneWrap(fn.local);
672
+ fn.utcOffset = resetZoneWrap2(fn.utcOffset);
673
+
674
+ moment.tz.setDefault = function(name) {
675
+ if (major < 2 || (major === 2 && minor < 9)) {
676
+ logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
677
+ }
678
+ moment.defaultZone = name ? getZone(name) : null;
679
+ return moment;
680
+ };
681
+
682
+ // Cloning a moment should include the _z property.
683
+ var momentProperties = moment.momentProperties;
684
+ if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
685
+ // moment 2.8.1+
686
+ momentProperties.push('_z');
687
+ momentProperties.push('_a');
688
+ } else if (momentProperties) {
689
+ // moment 2.7.0
690
+ momentProperties._z = null;
691
+ }
692
+
693
+ // INJECT DATA
694
+
695
+ return moment;
696
+ }));
assets/views/admin/comingSoon/comingSoonDesign.php CHANGED
@@ -2,6 +2,7 @@
2
  use ycd\AdminHelper;
3
  $defaultData = AdminHelper::defaultData();
4
  $proSpan = '';
 
5
  ?>
6
  <div class="panel panel-default">
7
  <div class="panel-heading"><?php _e('Design', YCD_TEXT_DOMAIN)?></div>
@@ -41,12 +42,15 @@ $proSpan = '';
41
  <label for="ycd-coming-headline-color"><?php _e('Font Family', YCD_TEXT_DOMAIN); ?></label>
42
  </div>
43
  <div class="col-md-6">
44
- <?php AdminHelper::selectBox($defaultData['font-family'], esc_attr($this->getOptionValue('ycd-coming-soon-page-font-family')), array('name' => 'ycd-coming-soon-page-font-family', 'class' => 'js-ycd-select js-countdown-font-family')); ?>
 
 
 
45
  </div>
46
  </div>
47
  <div class="row form-group">
48
  <div class="col-md-6">
49
- <label for="ycd-coming-soon-bg-image" class="ycd-label-of-switch"><?php _e('Background Image', YCD_TEXT_DOMAIN); echo esc_attr($proSpan); ?></label>
50
  </div>
51
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
52
  <label class="ycd-switch">
@@ -61,7 +65,10 @@ $proSpan = '';
61
  <label for="" class="ycd-label-of-select"><?php _e('Background Size', YCD_TEXT_DOMAIN); ?></label>
62
  </div>
63
  <div class="col-md-6 ycd-circles-width-wrapper">
64
- <?php AdminHelper::selectBox($defaultData['bg-image-size'], esc_attr($this->getOPtionValue('ycd-coming-soon-image-size')), array('name' => 'ycd-coming-soon-image-size', 'class' => 'js-ycd-select js-ycd-bg-size')); ?>
 
 
 
65
  </div>
66
  </div>
67
  <div class="row form-group">
@@ -69,7 +76,10 @@ $proSpan = '';
69
  <label for="" class="ycd-label-of-select"><?php _e('Background Repeat', YCD_TEXT_DOMAIN); ?></label>
70
  </div>
71
  <div class="col-md-6 ycd-circles-width-wrapper">
72
- <?php AdminHelper::selectBox($defaultData['bg-image-repeat'], esc_attr($this->getOPtionValue('ycd-coming-soon-bg-image-repeat')), array('name' => 'ycd-coming-soon-bg-image-repeat', 'class' => 'js-ycd-select js-bg-image-repeat')); ?>
 
 
 
73
  </div>
74
  </div>
75
  <div class="row form-group">
@@ -83,7 +93,7 @@ $proSpan = '';
83
  </div>
84
  <div class="row form-group">
85
  <div class="col-md-6">
86
- <label for="ycd-coming-soon-bg-video" class="ycd-label-of-switch"><?php _e('Background Video', YCD_TEXT_DOMAIN); echo esc_html($proSpan); ?></label>
87
  </div>
88
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
89
  <label class="ycd-switch">
2
  use ycd\AdminHelper;
3
  $defaultData = AdminHelper::defaultData();
4
  $proSpan = '';
5
+ $allowed_html = AdminHelper::getAllowedTags();
6
  ?>
7
  <div class="panel panel-default">
8
  <div class="panel-heading"><?php _e('Design', YCD_TEXT_DOMAIN)?></div>
42
  <label for="ycd-coming-headline-color"><?php _e('Font Family', YCD_TEXT_DOMAIN); ?></label>
43
  </div>
44
  <div class="col-md-6">
45
+ <?php
46
+ $fontFamily = AdminHelper::selectBox($defaultData['font-family'], esc_attr($this->getOptionValue('ycd-coming-soon-page-font-family')), array('name' => 'ycd-coming-soon-page-font-family', 'class' => 'js-ycd-select js-countdown-font-family'));
47
+ echo wp_kses($fontFamily, $allowed_html);
48
+ ?>
49
  </div>
50
  </div>
51
  <div class="row form-group">
52
  <div class="col-md-6">
53
+ <label for="ycd-coming-soon-bg-image" class="ycd-label-of-switch"><?php _e('Background Image', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
54
  </div>
55
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
56
  <label class="ycd-switch">
65
  <label for="" class="ycd-label-of-select"><?php _e('Background Size', YCD_TEXT_DOMAIN); ?></label>
66
  </div>
67
  <div class="col-md-6 ycd-circles-width-wrapper">
68
+ <?php
69
+ $bgSize = AdminHelper::selectBox($defaultData['bg-image-size'], esc_attr($this->getOPtionValue('ycd-coming-soon-image-size')), array('name' => 'ycd-coming-soon-image-size', 'class' => 'js-ycd-select js-ycd-bg-size'));
70
+ echo wp_kses($bgSize, $allowed_html);
71
+ ?>
72
  </div>
73
  </div>
74
  <div class="row form-group">
76
  <label for="" class="ycd-label-of-select"><?php _e('Background Repeat', YCD_TEXT_DOMAIN); ?></label>
77
  </div>
78
  <div class="col-md-6 ycd-circles-width-wrapper">
79
+ <?php
80
+ $bgImageRepeat = AdminHelper::selectBox($defaultData['bg-image-repeat'], esc_attr($this->getOPtionValue('ycd-coming-soon-bg-image-repeat')), array('name' => 'ycd-coming-soon-bg-image-repeat', 'class' => 'js-ycd-select js-bg-image-repeat'));
81
+ echo wp_kses($bgImageRepeat, $allowed_html);
82
+ ?>
83
  </div>
84
  </div>
85
  <div class="row form-group">
93
  </div>
94
  <div class="row form-group">
95
  <div class="col-md-6">
96
+ <label for="ycd-coming-soon-bg-video" class="ycd-label-of-switch"><?php _e('Background Video', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
97
  </div>
98
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
99
  <label class="ycd-switch">
assets/views/admin/comingSoon/comingSoonOptions.php CHANGED
@@ -8,6 +8,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
8
  $isPro = '-pro';
9
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
10
  }
 
11
  ?>
12
  <div class="panel panel-default">
13
  <div class="panel-heading"><?php _e('Options', YCD_TEXT_DOMAIN)?></div>
@@ -16,7 +17,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
16
  <!-- Start automatically enable countdown -->
17
  <div class="row form-group">
18
  <div class="col-md-6">
19
- <label for="ycd-coming-soon-automat-enable" class="ycd-label-of-switch"><?php _e('Automatically start by date', YCD_TEXT_DOMAIN); ?></label>
20
  </div>
21
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
22
  <label class="ycd-switch">
@@ -32,7 +33,10 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
32
  </div>
33
  <div class="col-md-6">
34
  <div class="ycd-select-wrapper">
35
- <?php AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-coming-soon-start-timezone')), array('name' => 'ycd-coming-soon-start-timezone', 'class' => 'js-ycd-select')); ?>
 
 
 
36
  </div>
37
  </div>
38
  </div>
@@ -49,7 +53,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
49
  <!-- Start automatically expiration countdown -->
50
  <div class="row form-group">
51
  <div class="col-md-6">
52
- <label for="ycd-coming-soon-automat-expiration" class="ycd-label-of-switch"><?php _e('Automatically Expire by date', YCD_TEXT_DOMAIN); ?></label>
53
  </div>
54
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
55
  <label class="ycd-switch">
@@ -65,7 +69,10 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
65
  </div>
66
  <div class="col-md-6">
67
  <div class="ycd-select-wrapper">
68
- <?php AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-coming-soon-expiration-timezone')), array('name' => 'ycd-coming-soon-expiration-timezone', 'class' => 'js-ycd-select')); ?>
 
 
 
69
  </div>
70
  </div>
71
  </div>
@@ -83,7 +90,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
83
  <!-- start User role options -->
84
  <div class="row form-group">
85
  <div class="col-md-6">
86
- <label for="ycd-coming-soon-for-loggdin" class="ycd-label-of-switch"><?php _e('Show on selected user roles', YCD_TEXT_DOMAIN); ?></label>
87
  </div>
88
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
89
  <label class="ycd-switch">
@@ -97,14 +104,17 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
97
  <label for="ycd-coming-soon-user-roles"><?php _e('Select user role(s)', YCD_TEXT_DOMAIN)?></label>
98
  </div>
99
  <div class="col-md-6">
100
- <?php HelperFunction::createSelectBox($defaultData['userRoles'], $userSavedRoles, array('name' => 'ycd-coming-soon-user-roles[]', 'class' => 'js-ycd-select ycd-countdowns', 'multiple' => 'multiple', 'id' => 'ycd-coming-soon-user-roles')); ?>
 
 
 
101
  </div>
102
  </div>
103
  <!-- end User role options -->
104
  <!-- start white list option -->
105
  <div class="row form-group">
106
  <div class="col-md-6">
107
- <label for="ycd-coming-soon-whitelist-ip" class="ycd-label-of-switch"><?php _e('White list IP address', YCD_TEXT_DOMAIN); ?></label>
108
  </div>
109
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
110
  <label class="ycd-switch">
8
  $isPro = '-pro';
9
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
10
  }
11
+ $allowed_html = AdminHelper::getAllowedTags();
12
  ?>
13
  <div class="panel panel-default">
14
  <div class="panel-heading"><?php _e('Options', YCD_TEXT_DOMAIN)?></div>
17
  <!-- Start automatically enable countdown -->
18
  <div class="row form-group">
19
  <div class="col-md-6">
20
+ <label for="ycd-coming-soon-automat-enable" class="ycd-label-of-switch"><?php _e('Automatically start by date', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
21
  </div>
22
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
23
  <label class="ycd-switch">
33
  </div>
34
  <div class="col-md-6">
35
  <div class="ycd-select-wrapper">
36
+ <?php
37
+ $timeZone = AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-coming-soon-start-timezone')), array('name' => 'ycd-coming-soon-start-timezone', 'class' => 'js-ycd-select'));
38
+ echo wp_kses($timeZone, $allowed_html);
39
+ ?>
40
  </div>
41
  </div>
42
  </div>
53
  <!-- Start automatically expiration countdown -->
54
  <div class="row form-group">
55
  <div class="col-md-6">
56
+ <label for="ycd-coming-soon-automat-expiration" class="ycd-label-of-switch"><?php _e('Automatically Expire by date', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
57
  </div>
58
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
59
  <label class="ycd-switch">
69
  </div>
70
  <div class="col-md-6">
71
  <div class="ycd-select-wrapper">
72
+ <?php
73
+ $timeZone = AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-coming-soon-expiration-timezone')), array('name' => 'ycd-coming-soon-expiration-timezone', 'class' => 'js-ycd-select'));
74
+ echo wp_kses($timeZone, $allowed_html);
75
+ ?>
76
  </div>
77
  </div>
78
  </div>
90
  <!-- start User role options -->
91
  <div class="row form-group">
92
  <div class="col-md-6">
93
+ <label for="ycd-coming-soon-for-loggdin" class="ycd-label-of-switch"><?php _e('Show on selected user roles', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
94
  </div>
95
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
96
  <label class="ycd-switch">
104
  <label for="ycd-coming-soon-user-roles"><?php _e('Select user role(s)', YCD_TEXT_DOMAIN)?></label>
105
  </div>
106
  <div class="col-md-6">
107
+ <?php
108
+ $userRoles = HelperFunction::createSelectBox($defaultData['userRoles'], $userSavedRoles, array('name' => 'ycd-coming-soon-user-roles[]', 'class' => 'js-ycd-select ycd-countdowns', 'multiple' => 'multiple', 'id' => 'ycd-coming-soon-user-roles'));
109
+ echo wp_kses($userRoles, $allowed_html);
110
+ ?>
111
  </div>
112
  </div>
113
  <!-- end User role options -->
114
  <!-- start white list option -->
115
  <div class="row form-group">
116
  <div class="col-md-6">
117
+ <label for="ycd-coming-soon-whitelist-ip" class="ycd-label-of-switch"><?php _e('White list IP address', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
118
  </div>
119
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
120
  <label class="ycd-switch">
assets/views/admin/comingSoon/comingSoonSettings.php CHANGED
@@ -9,6 +9,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
 
12
  ?>
13
  <div class="panel panel-default">
14
  <div class="panel-heading"><?php _e('Settings', YCD_TEXT_DOMAIN)?></div>
@@ -66,7 +67,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
66
  </div>
67
  <div class="row form-group">
68
  <div class="col-md-6">
69
- <label for="ycd-coming-soon-bg-image" class="ycd-label-of-switch"><?php _e('Add Countdown', YCD_TEXT_DOMAIN); ?></label>
70
  </div>
71
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
72
  <label class="ycd-switch">
@@ -86,7 +87,8 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
86
  echo '<a href="'.esc_attr($createCountdown).'">Create Countdown</a>';
87
  }
88
  else {
89
- AdminHelper::selectBox($countdownsIdAndTitle, esc_attr($this->getOptionValue('ycd-coming-soon-countdown')), array('name' => 'ycd-coming-soon-countdown', 'class' => 'js-ycd-select'));
 
90
  }
91
  ?>
92
  </div>
@@ -96,7 +98,10 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
96
  <label for="" class="ycd-label-of-select"><?php _e('Position', YCD_TEXT_DOMAIN); ?></label>
97
  </div>
98
  <div class="col-md-6 ycd-circles-width-wrapper">
99
- <?php AdminHelper::selectBox($defaultData['coming-soon-countdown-position'], esc_attr($this->getOPtionValue('ycd-coming-soon-countdown-position')), array('name' => 'ycd-coming-soon-countdown-position', 'class' => 'js-ycd-select')); ?>
 
 
 
100
  </div>
101
  </div>
102
  </div>
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
12
+ $allowed_html = AdminHelper::getAllowedTags();
13
  ?>
14
  <div class="panel panel-default">
15
  <div class="panel-heading"><?php _e('Settings', YCD_TEXT_DOMAIN)?></div>
67
  </div>
68
  <div class="row form-group">
69
  <div class="col-md-6">
70
+ <label for="ycd-coming-soon-bg-image" class="ycd-label-of-switch"><?php _e('Add Countdown', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
71
  </div>
72
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
73
  <label class="ycd-switch">
87
  echo '<a href="'.esc_attr($createCountdown).'">Create Countdown</a>';
88
  }
89
  else {
90
+ $selectIdAndTitle = AdminHelper::selectBox($countdownsIdAndTitle, esc_attr($this->getOptionValue('ycd-coming-soon-countdown')), array('name' => 'ycd-coming-soon-countdown', 'class' => 'js-ycd-select'));
91
+ echo wp_kses($selectIdAndTitle, $allowed_html);
92
  }
93
  ?>
94
  </div>
98
  <label for="" class="ycd-label-of-select"><?php _e('Position', YCD_TEXT_DOMAIN); ?></label>
99
  </div>
100
  <div class="col-md-6 ycd-circles-width-wrapper">
101
+ <?php
102
+ $possition = AdminHelper::selectBox($defaultData['coming-soon-countdown-position'], esc_attr($this->getOPtionValue('ycd-coming-soon-countdown-position')), array('name' => 'ycd-coming-soon-countdown-position', 'class' => 'js-ycd-select'));
103
+ echo wp_kses($possition, $allowed_html);
104
+ ?>
105
  </div>
106
  </div>
107
  </div>
assets/views/countdownButton.php CHANGED
@@ -2,6 +2,7 @@
2
  use ycd\AdminHelper;
3
  use ycd\MultipleChoiceButton;
4
  $defaults = AdminHelper::defaultData();
 
5
  ?>
6
  <div class="ycd-bootstrap-wrapper">
7
  <div class="row form-group">
@@ -108,7 +109,10 @@ $defaults = AdminHelper::defaultData();
108
  <label for="ycd-button-border-width"><?php _e('Font family', YCD_TEXT_DOMAIN)?></label>
109
  </div>
110
  <div class="col-md-7">
111
- <?php AdminHelper::selectBox(array(), esc_attr($typeObj->getOptionValue('ycd-button-font-family')), array('name' => 'ycd-button-font-family', 'class' => 'js-ycd-select js-countdown-font-family')); ?>
 
 
 
112
  </div>
113
  </div>
114
  <div class="row form-group">
@@ -158,7 +162,10 @@ $defaults = AdminHelper::defaultData();
158
  <label for="" class="ycd-label-of-input"><?php _e('Select Animation', YCD_TEXT_DOMAIN); ?></label>
159
  </div>
160
  <div class="col-md-4">
161
- <?php AdminHelper::selectBox(@$defaults['hover-animation'], esc_attr($typeObj->getOptionValue('ycd-button-hover-animation-name')), array('name' => 'ycd-button-hover-animation-name', 'class' => 'js-ycd-select ycd-button-hover-animation-name')); ?>
 
 
 
162
  </div>
163
  <div class="col-md-1">
164
  <span class="ycd-btn-hover-preview-icon"></span>
@@ -215,7 +222,10 @@ $defaults = AdminHelper::defaultData();
215
  <label for="ycd-button-action-url-tab" class=""><?php _e('Horizontal Align', YCD_TEXT_DOMAIN); ?></label>
216
  </div>
217
  <div class="col-md-7">
218
- <?php AdminHelper::selectBox(array(),$typeObj->getOptionValue('ycd-button-horizontal'), array('class' => 'js-ycd-select', 'name' => 'ycd-button-horizontal')); ?>
 
 
 
219
  </div>
220
  </div>
221
  <div class="row form-group">
@@ -240,6 +250,7 @@ $defaults = AdminHelper::defaultData();
240
  <div class="ycd-multichoice-wrapper">
241
  <?php
242
  $multipleChoiceButton = new MultipleChoiceButton($defaults['countdown-behavior'], esc_attr('redirect'));
 
243
  ?>
244
  </div>
245
  <div id="ycd-countdown-button-redirect" class="ycd-sub-option ycd-hide">
2
  use ycd\AdminHelper;
3
  use ycd\MultipleChoiceButton;
4
  $defaults = AdminHelper::defaultData();
5
+ $allowed_html = AdminHelper::getAllowedTags();
6
  ?>
7
  <div class="ycd-bootstrap-wrapper">
8
  <div class="row form-group">
109
  <label for="ycd-button-border-width"><?php _e('Font family', YCD_TEXT_DOMAIN)?></label>
110
  </div>
111
  <div class="col-md-7">
112
+ <?php
113
+ $fontFamilySelect = AdminHelper::selectBox(array(), esc_attr($typeObj->getOptionValue('ycd-button-font-family')), array('name' => 'ycd-button-font-family', 'class' => 'js-ycd-select js-countdown-font-family'));
114
+ echo wp_kses($fontFamilySelect, $allowed_html);
115
+ ?>
116
  </div>
117
  </div>
118
  <div class="row form-group">
162
  <label for="" class="ycd-label-of-input"><?php _e('Select Animation', YCD_TEXT_DOMAIN); ?></label>
163
  </div>
164
  <div class="col-md-4">
165
+ <?php
166
+ $hoverAnSelect = AdminHelper::selectBox(@$defaults['hover-animation'], esc_attr($typeObj->getOptionValue('ycd-button-hover-animation-name')), array('name' => 'ycd-button-hover-animation-name', 'class' => 'js-ycd-select ycd-button-hover-animation-name'));
167
+ echo wp_kses($hoverAnSelect, $allowed_html);
168
+ ?>
169
  </div>
170
  <div class="col-md-1">
171
  <span class="ycd-btn-hover-preview-icon"></span>
222
  <label for="ycd-button-action-url-tab" class=""><?php _e('Horizontal Align', YCD_TEXT_DOMAIN); ?></label>
223
  </div>
224
  <div class="col-md-7">
225
+ <?php
226
+ $horizontalSelect = AdminHelper::selectBox(array(),$typeObj->getOptionValue('ycd-button-horizontal'), array('class' => 'js-ycd-select', 'name' => 'ycd-button-horizontal'));
227
+ echo wp_kses($horizontalSelect, $allowed_html);
228
+ ?>
229
  </div>
230
  </div>
231
  <div class="row form-group">
250
  <div class="ycd-multichoice-wrapper">
251
  <?php
252
  $multipleChoiceButton = new MultipleChoiceButton($defaults['countdown-behavior'], esc_attr('redirect'));
253
+ echo wp_kses($multipleChoiceButton, $allowed_html);
254
  ?>
255
  </div>
256
  <div id="ycd-countdown-button-redirect" class="ycd-sub-option ycd-hide">
assets/views/generalOptions.php CHANGED
@@ -104,7 +104,7 @@ if (class_exists('ycd\AdminHelperPro')) {
104
  <div class="ycd-accordion-content ycd-hide-content">
105
  <div class="row">
106
  <div class="col-md-6">
107
- <label for="ycd-countdown-save-duration-each-user" class="ycd-label-of-switch"><?php _e('Save For Each User', YCD_TEXT_DOMAIN); ?></label>
108
  </div>
109
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
110
  <label class="ycd-switch">
@@ -115,7 +115,7 @@ if (class_exists('ycd\AdminHelperPro')) {
115
  </div>
116
  <div class="row">
117
  <div class="col-md-6">
118
- <label for="ycd-countdown-restart" class="ycd-label-of-switch"><?php _e('Restart', YCD_TEXT_DOMAIN); ?></label>
119
  </div>
120
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
121
  <label class="ycd-switch">
104
  <div class="ycd-accordion-content ycd-hide-content">
105
  <div class="row">
106
  <div class="col-md-6">
107
+ <label for="ycd-countdown-save-duration-each-user" class="ycd-label-of-switch"><?php _e('Save For Each User', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
108
  </div>
109
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
110
  <label class="ycd-switch">
115
  </div>
116
  <div class="row">
117
  <div class="col-md-6">
118
+ <label for="ycd-countdown-restart" class="ycd-label-of-switch"><?php _e('Restart', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
119
  </div>
120
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
121
  <label class="ycd-switch">
assets/views/main/clock1View.php CHANGED
@@ -8,6 +8,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
8
  $isPro = '-pro';
9
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
10
  }
 
11
  ?>
12
  <div class="ycd-bootstrap-wrapper">
13
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
@@ -33,7 +34,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
33
 
34
  <div class="row form-group">
35
  <div class="col-md-6">
36
- <label for="ycd-clock1-indicate-color" class=""><?php _e('Indicate color', YCD_TEXT_DOMAIN); ?></label>
37
  </div>
38
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
39
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -44,7 +45,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
44
 
45
  <div class="row form-group">
46
  <div class="col-md-6">
47
- <label for="ycd-clock1-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); ?></label>
48
  </div>
49
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
50
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -55,7 +56,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
55
 
56
  <div class="row form-group">
57
  <div class="col-md-6">
58
- <label for="ycd-clock1-dial2-color" class=""><?php _e('Detail 2 color', YCD_TEXT_DOMAIN); ?></label>
59
  </div>
60
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
61
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -66,7 +67,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
66
 
67
  <div class="row form-group">
68
  <div class="col-md-6">
69
- <label for="ycd-clock1-dial3-color" class=""><?php _e('Detail 3 color', YCD_TEXT_DOMAIN); ?></label>
70
  </div>
71
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
72
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -77,7 +78,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
77
 
78
  <div class="row form-group">
79
  <div class="col-md-6">
80
- <label for="ycd-clock1-time-color" class=""><?php _e('Time color', YCD_TEXT_DOMAIN); ?></label>
81
  </div>
82
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
83
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -88,7 +89,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
88
 
89
  <div class="row form-group">
90
  <div class="col-md-6">
91
- <label for="ycd-clock1-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); ?></label>
92
  </div>
93
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
94
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -98,7 +99,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
98
  </div>
99
  <div class="row form-group">
100
  <div class="col-md-6">
101
- <label for="ycd-clock1-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); ?></label>
102
  </div>
103
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
104
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
8
  $isPro = '-pro';
9
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
10
  }
11
+ $allowed_html = AdminHelper::getAllowedTags();
12
  ?>
13
  <div class="ycd-bootstrap-wrapper">
14
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
34
 
35
  <div class="row form-group">
36
  <div class="col-md-6">
37
+ <label for="ycd-clock1-indicate-color" class=""><?php _e('Indicate color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
38
  </div>
39
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
40
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
45
 
46
  <div class="row form-group">
47
  <div class="col-md-6">
48
+ <label for="ycd-clock1-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
49
  </div>
50
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
51
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
56
 
57
  <div class="row form-group">
58
  <div class="col-md-6">
59
+ <label for="ycd-clock1-dial2-color" class=""><?php _e('Detail 2 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
60
  </div>
61
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
62
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
67
 
68
  <div class="row form-group">
69
  <div class="col-md-6">
70
+ <label for="ycd-clock1-dial3-color" class=""><?php _e('Detail 3 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
71
  </div>
72
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
73
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
78
 
79
  <div class="row form-group">
80
  <div class="col-md-6">
81
+ <label for="ycd-clock1-time-color" class=""><?php _e('Time color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
82
  </div>
83
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
84
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
89
 
90
  <div class="row form-group">
91
  <div class="col-md-6">
92
+ <label for="ycd-clock1-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
93
  </div>
94
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
95
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
99
  </div>
100
  <div class="row form-group">
101
  <div class="col-md-6">
102
+ <label for="ycd-clock1-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
103
  </div>
104
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
105
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
assets/views/main/clock2View.php CHANGED
@@ -9,6 +9,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
 
12
  ?>
13
  <div class="ycd-bootstrap-wrapper">
14
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
@@ -34,7 +35,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
34
 
35
  <div class="row form-group">
36
  <div class="col-md-6">
37
- <label for="ycd-clock2-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); ?></label>
38
  </div>
39
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
40
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -45,7 +46,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
45
 
46
  <div class="row form-group">
47
  <div class="col-md-6">
48
- <label for="ycd-clock2-dial2-color" class=""><?php _e('Detail 2 color', YCD_TEXT_DOMAIN); ?></label>
49
  </div>
50
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
51
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -56,7 +57,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
56
 
57
  <div class="row form-group">
58
  <div class="col-md-6">
59
- <label for="ycd-clock2-dial3-color" class=""><?php _e('Detail 3 color', YCD_TEXT_DOMAIN); ?></label>
60
  </div>
61
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
62
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -67,7 +68,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
67
 
68
  <div class="row form-group">
69
  <div class="col-md-6">
70
- <label for="ycd-clock2-time-color" class=""><?php _e('Time color', YCD_TEXT_DOMAIN); ?></label>
71
  </div>
72
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
73
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -78,7 +79,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
78
 
79
  <div class="row form-group">
80
  <div class="col-md-6">
81
- <label for="ycd-clock2-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); ?></label>
82
  </div>
83
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
84
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -88,7 +89,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
88
  </div>
89
  <div class="row form-group">
90
  <div class="col-md-6">
91
- <label for="ycd-clock2-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); ?></label>
92
  </div>
93
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
94
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
12
+ $allowed_html = AdminHelper::getAllowedTags();
13
  ?>
14
  <div class="ycd-bootstrap-wrapper">
15
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
35
 
36
  <div class="row form-group">
37
  <div class="col-md-6">
38
+ <label for="ycd-clock2-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
39
  </div>
40
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
41
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
46
 
47
  <div class="row form-group">
48
  <div class="col-md-6">
49
+ <label for="ycd-clock2-dial2-color" class=""><?php _e('Detail 2 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
50
  </div>
51
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
52
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
57
 
58
  <div class="row form-group">
59
  <div class="col-md-6">
60
+ <label for="ycd-clock2-dial3-color" class=""><?php _e('Detail 3 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html);?></label>
61
  </div>
62
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
63
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
68
 
69
  <div class="row form-group">
70
  <div class="col-md-6">
71
+ <label for="ycd-clock2-time-color" class=""><?php _e('Time color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
72
  </div>
73
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
74
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
79
 
80
  <div class="row form-group">
81
  <div class="col-md-6">
82
+ <label for="ycd-clock2-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
83
  </div>
84
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
85
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
89
  </div>
90
  <div class="row form-group">
91
  <div class="col-md-6">
92
+ <label for="ycd-clock2-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
93
  </div>
94
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
95
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
assets/views/main/clock3View.php CHANGED
@@ -9,7 +9,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
12
-
13
  ?>
14
  <div class="ycd-bootstrap-wrapper">
15
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
@@ -35,7 +35,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
35
 
36
  <div class="row form-group">
37
  <div class="col-md-6">
38
- <label for="ycd-clock3-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); ?></label>
39
  </div>
40
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
41
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -46,7 +46,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
46
 
47
  <div class="row form-group">
48
  <div class="col-md-6">
49
- <label for="ycd-clock3-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); ?></label>
50
  </div>
51
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
52
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -56,7 +56,7 @@ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
56
  </div>
57
  <div class="row form-group">
58
  <div class="col-md-6">
59
- <label for="ycd-clock3-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); ?></label>
60
  </div>
61
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
62
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
9
  $isPro = '-pro';
10
  $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
11
  }
12
+ $allowed_html = AdminHelper::getAllowedTags();
13
  ?>
14
  <div class="ycd-bootstrap-wrapper">
15
  <?php require_once(dirname(__FILE__).'/clockTimerSettings.php'); ?>
35
 
36
  <div class="row form-group">
37
  <div class="col-md-6">
38
+ <label for="ycd-clock3-dial1-color" class=""><?php _e('Detail 1 color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
39
  </div>
40
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
41
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
46
 
47
  <div class="row form-group">
48
  <div class="col-md-6">
49
+ <label for="ycd-clock3-date-color" class=""><?php _e('Date color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
50
  </div>
51
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
52
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
56
  </div>
57
  <div class="row form-group">
58
  <div class="col-md-6">
59
+ <label for="ycd-clock3-time-bg-color" class=""><?php _e('Background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html);?></label>
60
  </div>
61
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro);Pro; ?>">
62
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
assets/views/main/clockTimerSettings.php CHANGED
@@ -4,11 +4,12 @@ use ycd\MultipleChoiceButton;
4
  ?>
5
  <?php
6
  require_once(dirname(__FILE__).'/generalStartDateOption.php');
 
7
  ?>
8
  <div class="ycd-multichoice-wrapper">
9
  <?php
10
  $multipleChoiceButton = new MultipleChoiceButton($defaultData['clockMode'], esc_attr($this->getOptionValue('ycd-countdown-clock-mode')));
11
-
12
  ?>
13
  </div>
14
  <div id="ycd-countdown-clock-mode-clock" class="ycd-countdown-show-text ycd-hide">
@@ -17,7 +18,10 @@ use ycd\MultipleChoiceButton;
17
  <label class="ycd-label-of-input"><?php _e('Time zone', YCD_TEXT_DOMAIN); ?></label>
18
  </div>
19
  <div class="col-md-5">
20
- <?php AdminHelper::selectBox($defaultData['clock-time-zone'], esc_attr($this->getOptionValue('ycd-clock-time-zone')), array('name' => 'ycd-clock-time-zone','data-target-index' => '4', 'class' => 'js-ycd-select js-circle-time-zone')); ?>
 
 
 
21
  </div>
22
  </div>
23
  <div class="row form-group">
@@ -25,7 +29,10 @@ use ycd\MultipleChoiceButton;
25
  <label class="ycd-label-of-input"><?php _e('Clock mode', YCD_TEXT_DOMAIN); ?></label>
26
  </div>
27
  <div class="col-md-5">
28
- <?php AdminHelper::selectBox($defaultData['clock-mode'], esc_attr($this->getOptionValue('ycd-clock-mode')), array('name' => 'ycd-clock-mode','data-target-index' => '4', 'class' => 'js-ycd-select ycd-clock-mode')); ?>
 
 
 
29
  </div>
30
  </div>
31
  </div>
4
  ?>
5
  <?php
6
  require_once(dirname(__FILE__).'/generalStartDateOption.php');
7
+ $allowed_html = AdminHelper::getAllowedTags();
8
  ?>
9
  <div class="ycd-multichoice-wrapper">
10
  <?php
11
  $multipleChoiceButton = new MultipleChoiceButton($defaultData['clockMode'], esc_attr($this->getOptionValue('ycd-countdown-clock-mode')));
12
+ echo wp_kses($multipleChoiceButton, $allowed_html);
13
  ?>
14
  </div>
15
  <div id="ycd-countdown-clock-mode-clock" class="ycd-countdown-show-text ycd-hide">
18
  <label class="ycd-label-of-input"><?php _e('Time zone', YCD_TEXT_DOMAIN); ?></label>
19
  </div>
20
  <div class="col-md-5">
21
+ <?php
22
+ $timeZone = AdminHelper::selectBox($defaultData['clock-time-zone'], esc_attr($this->getOptionValue('ycd-clock-time-zone')), array('name' => 'ycd-clock-time-zone','data-target-index' => '4', 'class' => 'js-ycd-select js-circle-time-zone'));
23
+ echo wp_kses($timeZone, $allowed_html);
24
+ ?>
25
  </div>
26
  </div>
27
  <div class="row form-group">
29
  <label class="ycd-label-of-input"><?php _e('Clock mode', YCD_TEXT_DOMAIN); ?></label>
30
  </div>
31
  <div class="col-md-5">
32
+ <?php
33
+ $clockMode = AdminHelper::selectBox($defaultData['clock-mode'], esc_attr($this->getOptionValue('ycd-clock-mode')), array('name' => 'ycd-clock-mode','data-target-index' => '4', 'class' => 'js-ycd-select ycd-clock-mode'));
34
+ echo wp_kses($clockMode, $allowed_html);
35
+ ?>
36
  </div>
37
  </div>
38
  </div>
assets/views/main/generalStartDateOption.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  use ycd\AdminHelper;
3
  $defaultData = AdminHelper::defaultData();
 
4
  ?>
5
  <div class="row">
6
  <div class="col-md-6">
@@ -30,7 +31,10 @@
30
  </div>
31
  <div class="col-md-6">
32
  <div class="ycd-select-wrapper">
33
- <?php AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-countdown-start-time-zone')), array('name' => 'ycd-countdown-start-time-zone', 'class' => 'js-ycd-select js-circle-time-zone')); ?>
 
 
 
34
  </div>
35
  </div>
36
  </div>
1
  <?php
2
  use ycd\AdminHelper;
3
  $defaultData = AdminHelper::defaultData();
4
+ $allowed_html = AdminHelper::getAllowedTags();
5
  ?>
6
  <div class="row">
7
  <div class="col-md-6">
31
  </div>
32
  <div class="col-md-6">
33
  <div class="ycd-select-wrapper">
34
+ <?php
35
+ $timeZone = AdminHelper::selectBox($defaultData['time-zone'], esc_attr($this->getOptionValue('ycd-countdown-start-time-zone')), array('name' => 'ycd-countdown-start-time-zone', 'class' => 'js-ycd-select js-circle-time-zone'));
36
+ echo wp_kses($timeZone, $allowed_html);
37
+ ?>
38
  </div>
39
  </div>
40
  </div>
assets/views/main/simpleMainView.php CHANGED
@@ -267,7 +267,7 @@ $allowed_html = AdminHelper::getAllowedTags();
267
  </div>
268
  <div class="row form-group">
269
  <div class="col-md-6">
270
- <label for="ycd-simple-text-color" class=""><?php _e('color', YCD_TEXT_DOMAIN); ?></label>
271
  </div>
272
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
273
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -277,7 +277,7 @@ $allowed_html = AdminHelper::getAllowedTags();
277
  </div>
278
  <div class="row form-group">
279
  <div class="col-md-4">
280
- <label for="ycd-simple-text-margin" class=""><?php _e('margin', YCD_TEXT_DOMAIN); ?></label>
281
  </div>
282
  <div class="col-md-2 ycd-option-wrapper">
283
  <label for="ycd-simple-text-margin-top" class="yrm-label">Top</label>
267
  </div>
268
  <div class="row form-group">
269
  <div class="col-md-6">
270
+ <label for="ycd-simple-text-color" class=""><?php _e('color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
271
  </div>
272
  <div class="col-md-6 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
273
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
277
  </div>
278
  <div class="row form-group">
279
  <div class="col-md-4">
280
+ <label for="ycd-simple-text-margin" class=""><?php _e('margin', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
281
  </div>
282
  <div class="col-md-2 ycd-option-wrapper">
283
  <label for="ycd-simple-text-margin-top" class="yrm-label">Top</label>
assets/views/main/stickyMainView.php CHANGED
@@ -37,7 +37,7 @@ $allowed_html = AdminHelper::getAllowedTags();
37
  </div>
38
  <div class="row form-group">
39
  <div class="col-md-6">
40
- <label class="ycd-label-of-input" for="ycd-sticky-button-bg-color"><?php _e('Background color', YCD_TEXT_DOMAIN); ?></label>
41
  </div>
42
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
43
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -47,7 +47,7 @@ $allowed_html = AdminHelper::getAllowedTags();
47
  </div>
48
  <div class="row form-group">
49
  <div class="col-md-6">
50
- <label class="ycd-label-of-input" for="ycd-sticky-button-color"><?php _e('Text color', YCD_TEXT_DOMAIN); ?></label>
51
  </div>
52
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
53
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -210,7 +210,7 @@ $allowed_html = AdminHelper::getAllowedTags();
210
  </div>
211
  <div class="row form-group">
212
  <div class="col-md-6">
213
- <label class="ycd-label-of-input" for="ycd-sticky-text-color"><?php _e('Color', YCD_TEXT_DOMAIN); ?></label>
214
  </div>
215
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
216
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -279,7 +279,7 @@ $allowed_html = AdminHelper::getAllowedTags();
279
  </div>
280
  <div class="row form-group">
281
  <div class="col-md-6">
282
- <label class="ycd-label-of-input"><?php _e('Color', YCD_TEXT_DOMAIN); ?></label>
283
  </div>
284
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
285
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -325,7 +325,7 @@ $allowed_html = AdminHelper::getAllowedTags();
325
  <div class="ycd-sub-options-settings">
326
  <div class="row form-group">
327
  <div class="col-md-6">
328
- <label class="ycd-label-of-input"><?php _e('Background color', YCD_TEXT_DOMAIN); ?></label>
329
  </div>
330
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
331
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
37
  </div>
38
  <div class="row form-group">
39
  <div class="col-md-6">
40
+ <label class="ycd-label-of-input" for="ycd-sticky-button-bg-color"><?php _e('Background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
41
  </div>
42
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
43
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
47
  </div>
48
  <div class="row form-group">
49
  <div class="col-md-6">
50
+ <label class="ycd-label-of-input" for="ycd-sticky-button-color"><?php _e('Text color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
51
  </div>
52
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
53
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
210
  </div>
211
  <div class="row form-group">
212
  <div class="col-md-6">
213
+ <label class="ycd-label-of-input" for="ycd-sticky-text-color"><?php _e('Color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
214
  </div>
215
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
216
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
279
  </div>
280
  <div class="row form-group">
281
  <div class="col-md-6">
282
+ <label class="ycd-label-of-input"><?php _e('Color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
283
  </div>
284
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
285
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
325
  <div class="ycd-sub-options-settings">
326
  <div class="row form-group">
327
  <div class="col-md-6">
328
+ <label class="ycd-label-of-input"><?php _e('Background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
329
  </div>
330
  <div class="col-md-5 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
331
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
assets/views/main/timerMainView.php CHANGED
@@ -147,7 +147,7 @@ $allowed_html = AdminHelper::getAllowedTags();
147
  </div>
148
  <div class="row form-group">
149
  <div class="col-md-6">
150
- <label for="ycd-timer-stop-bg-color" ><?php _e('background color', YCD_TEXT_DOMAIN); ?> </label>
151
  </div>
152
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
153
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -157,7 +157,7 @@ $allowed_html = AdminHelper::getAllowedTags();
157
  </div>
158
  <div class="row form-group">
159
  <div class="col-md-6">
160
- <label for="ycd-timer-stop-color" ><?php _e('color', YCD_TEXT_DOMAIN); ?> </label>
161
  </div>
162
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
163
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -195,7 +195,7 @@ $allowed_html = AdminHelper::getAllowedTags();
195
  </div>
196
  <div class="row form-group">
197
  <div class="col-md-6">
198
- <label for="ycd-timer-reset-button-run" ><?php _e('AutoPlay after restart', YCD_TEXT_DOMAIN); ?></label>
199
  </div>
200
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
201
  <label class="ycd-switch">
@@ -206,7 +206,7 @@ $allowed_html = AdminHelper::getAllowedTags();
206
  </div>
207
  <div class="row form-group">
208
  <div class="col-md-6">
209
- <label for="ycd-timer-reset-bg-color" ><?php _e('background color', YCD_TEXT_DOMAIN); ?> </label>
210
  </div>
211
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
212
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -216,7 +216,7 @@ $allowed_html = AdminHelper::getAllowedTags();
216
  </div>
217
  <div class="row form-group">
218
  <div class="col-md-6">
219
- <label for="ycd-timer-reset-color" ><?php _e('color', YCD_TEXT_DOMAIN); ?> </label>
220
  </div>
221
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
222
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -257,7 +257,7 @@ $allowed_html = AdminHelper::getAllowedTags();
257
  <!-- Timer end sound sub options end -->
258
  <div class="row form-group">
259
  <div class="col-md-6">
260
- <label for="ycd-countdown-text-size" class="ycd-label-of-select"><?php _e('Font Family', YCD_TEXT_DOMAIN); ?></label>
261
  </div>
262
  <div class="col-md-4 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
263
  <?php
@@ -309,7 +309,7 @@ $allowed_html = AdminHelper::getAllowedTags();
309
  </div>
310
  <div class="row form-group">
311
  <div class="col-md-6">
312
- <label for="ycd-timer-color" ><?php _e('Numbers Color', YCD_TEXT_DOMAIN); ?> </label>
313
  </div>
314
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
315
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
@@ -319,7 +319,7 @@ $allowed_html = AdminHelper::getAllowedTags();
319
  </div>
320
  <div class="row form-group">
321
  <div class="col-md-6">
322
- <label for="ycd-timer-bg-image" class="ycd-label-of-switch"><?php _e('Background Image', YCD_TEXT_DOMAIN); ?></label>
323
  </div>
324
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
325
  <label class="ycd-switch">
147
  </div>
148
  <div class="row form-group">
149
  <div class="col-md-6">
150
+ <label for="ycd-timer-stop-bg-color" ><?php _e('background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?> </label>
151
  </div>
152
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
153
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
157
  </div>
158
  <div class="row form-group">
159
  <div class="col-md-6">
160
+ <label for="ycd-timer-stop-color" ><?php _e('color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?> </label>
161
  </div>
162
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
163
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
195
  </div>
196
  <div class="row form-group">
197
  <div class="col-md-6">
198
+ <label for="ycd-timer-reset-button-run" ><?php _e('AutoPlay after restart', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
199
  </div>
200
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
201
  <label class="ycd-switch">
206
  </div>
207
  <div class="row form-group">
208
  <div class="col-md-6">
209
+ <label for="ycd-timer-reset-bg-color" ><?php _e('background color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?> </label>
210
  </div>
211
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
212
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
216
  </div>
217
  <div class="row form-group">
218
  <div class="col-md-6">
219
+ <label for="ycd-timer-reset-color" ><?php _e('color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?> </label>
220
  </div>
221
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
222
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
257
  <!-- Timer end sound sub options end -->
258
  <div class="row form-group">
259
  <div class="col-md-6">
260
+ <label for="ycd-countdown-text-size" class="ycd-label-of-select"><?php _e('Font Family', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
261
  </div>
262
  <div class="col-md-4 ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
263
  <?php
309
  </div>
310
  <div class="row form-group">
311
  <div class="col-md-6">
312
+ <label for="ycd-timer-color" ><?php _e('Numbers Color', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?> </label>
313
  </div>
314
  <div class="col-md-4 ycd-timer-font-size ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
315
  <div class="minicolors minicolors-theme-default minicolors-position-bottom minicolors-position-left">
319
  </div>
320
  <div class="row form-group">
321
  <div class="col-md-6">
322
+ <label for="ycd-timer-bg-image" class="ycd-label-of-switch"><?php _e('Background Image', YCD_TEXT_DOMAIN); echo wp_kses($proSpan, $allowed_html); ?></label>
323
  </div>
324
  <div class="col-md-6 ycd-circles-width-wrapper ycd-option-wrapper<?php echo esc_attr($isPro); ?>">
325
  <label class="ycd-switch">
assets/views/types.php CHANGED
@@ -11,7 +11,7 @@ $allowed_html = AdminHelper::getAllowedTags();
11
  <div>
12
  <h3 class="ycd-page-h3"><?php _e('Add New Countdown', YCD_TEXT_DOMAIN); ?></h3>
13
  </div>
14
- <?php echo wp_kses(TypesNavBar::render(), $allowed_html); ?>
15
 
16
  <div class="ycd-bootstrap-wrapper ycd-types-wrapper">
17
  <div class="row ycd-mb-20">
@@ -45,7 +45,7 @@ $allowed_html = AdminHelper::getAllowedTags();
45
  </span>
46
  </div>
47
  <?php foreach ($extensionsResult['passive'] as $extension): ?>
48
- <a class="create-countdown-link" <?php AdminHelper::buildCreateCountdownAttrs($type); ?> href="<?php echo esc_attr(YCD_COUNTDOWN_PRO_URL).'#yrm-analytics'; ?>">
49
  <div class="countdowns-div">
50
  <div class="ycd-type-div <?php echo esc_attr($extension['shortKey']);?>-countdown-pro ycd-pro-version"></div>
51
  <p class="ycd-type-title-pro ycd-type-title-extensions-pro"><?php _e('PRO EXTENSION', YCD_TEXT_DOMAIN); ?></p>
11
  <div>
12
  <h3 class="ycd-page-h3"><?php _e('Add New Countdown', YCD_TEXT_DOMAIN); ?></h3>
13
  </div>
14
+ <?php echo TypesNavBar::render(); ?>
15
 
16
  <div class="ycd-bootstrap-wrapper ycd-types-wrapper">
17
  <div class="row ycd-mb-20">
45
  </span>
46
  </div>
47
  <?php foreach ($extensionsResult['passive'] as $extension): ?>
48
+ <a class="create-countdown-link" <?php wp_kses(AdminHelper::buildCreateCountdownAttrs($type), $allowed_html); ?> href="<?php echo esc_attr(YCD_COUNTDOWN_PRO_URL).'#yrm-analytics'; ?>">
49
  <div class="countdowns-div">
50
  <div class="ycd-type-div <?php echo esc_attr($extension['shortKey']);?>-countdown-pro ycd-pro-version"></div>
51
  <p class="ycd-type-title-pro ycd-type-title-extensions-pro"><?php _e('PRO EXTENSION', YCD_TEXT_DOMAIN); ?></p>
countdown-builder.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Countdown builder
4
  * Description: The best countdown plugin by Adam skaat
5
- * Version: 2.3.9.13
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
2
  /**
3
  * Plugin Name: Countdown builder
4
  * Description: The best countdown plugin by Adam skaat
5
+ * Version: 2.4.0
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
helpers/AdminHelper.php CHANGED
@@ -1493,6 +1493,8 @@ class AdminHelper {
1493
  $allowed_html = array(
1494
  'div' => $generalArray,
1495
  'p' => $generalArray,
 
 
1496
  'input' => array(
1497
  'type' => array(),
1498
  'id' => array(),
1493
  $allowed_html = array(
1494
  'div' => $generalArray,
1495
  'p' => $generalArray,
1496
+ 'ul' => $generalArray,
1497
+ 'li' => $generalArray,
1498
  'input' => array(
1499
  'type' => array(),
1500
  'id' => array(),
helpers/TypesNavBar.php CHANGED
@@ -10,7 +10,11 @@ class TypesNavBar
10
  ?>
11
  <div id="crontrol-header-ycd-groups">
12
  <ul class="nav nav-tab-wrapper">
13
- <?php self::renderOptions()?>
 
 
 
 
14
  </ul>
15
  </div>
16
  <?php
10
  ?>
11
  <div id="crontrol-header-ycd-groups">
12
  <ul class="nav nav-tab-wrapper">
13
+ <?php
14
+ $allowed_html = AdminHelper::getAllowedTags();
15
+ $options = self::renderOptions();
16
+ echo wp_kses($options, $allowed_html);
17
+ ?>
18
  </ul>
19
  </div>
20
  <?php
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
- Tested up to: 6.0
6
- Stable tag: 2.3.9.13
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -67,6 +67,14 @@ Yes you can, we have Circle and Flipclock countdown popups.
67
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
68
 
69
  == Changelog ==
 
 
 
 
 
 
 
 
70
  = 2.3.5 =
71
  * Fixed moment js file
72
 
2
  Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
+ Tested up to: 6.0.1
6
+ Stable tag: 2.4.0
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
67
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
68
 
69
  == Changelog ==
70
+ = 2.4.0 =
71
+ * Fixed Clock1 options
72
+ * Fixed Clock2 options
73
+ * Fixed Clock3 options
74
+ * Fixed Coming Soon options
75
+ * Fixed Countdown button options
76
+ * Bug fixed types section
77
+
78
  = 2.3.5 =
79
  * Fixed moment js file
80