Countdown, Coming Soon – Countdown & Clock - Version 1.4.8

Version Description

  • After expire behavior for the Clock1, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7 timers
Download this release

Release Info

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

Code changes from version 1.4.7 to 1.4.8

assets/js/Admin.js CHANGED
@@ -36,7 +36,7 @@ YcdAdmin.prototype.changeTimer = function () {
36
  if (!timers.length) {
37
  return false;
38
  }
39
- var modeChecker = jQuery('.ycd-countdown-hide-behavior');
40
 
41
  modeChecker.bind('change', function () {
42
  var args = {};
36
  if (!timers.length) {
37
  return false;
38
  }
39
+ var modeChecker = jQuery('.ycd-timer-mode');
40
 
41
  modeChecker.bind('change', function () {
42
  var args = {};
assets/js/Countdown.js CHANGED
@@ -121,7 +121,7 @@ YcdCountdown.prototype.responsive = function() {
121
  YcdCountdown.prototype.contentClick = function() {
122
  var allOptions = this.allOptions;
123
 
124
- if(allOptions['ycd-countdown-content-click']) {
125
  var id = allOptions['id'];
126
  var circleWrapper = jQuery('.ycd-circle-'+id+'-wrapper');
127
  circleWrapper.css({'cursor': 'pointer'});
121
  YcdCountdown.prototype.contentClick = function() {
122
  var allOptions = this.allOptions;
123
 
124
+ if(allOptions && allOptions['ycd-countdown-content-click']) {
125
  var id = allOptions['id'];
126
  var circleWrapper = jQuery('.ycd-circle-'+id+'-wrapper');
127
  circleWrapper.css({'cursor': 'pointer'});
assets/js/clock/Clock.js CHANGED
@@ -54,6 +54,10 @@ YcdClock.prototype.renderClock = function() {
54
  var that = this;
55
  var id = that.clockId;
56
  var clock = that.callback;
 
 
 
 
57
  jQuery('.ycdClock'+id).each(function(index, element) {
58
  var args = jQuery(element).data('args');
59
  var options = jQuery(element).data('options');
@@ -68,6 +72,8 @@ YcdClock.prototype.renderClock = function() {
68
  settings.timeZone = options['timeZone'];
69
  settings.mode = options['mode'];
70
  settings.allSeconds = options['allSeconds'];
 
 
71
 
72
  var clock = eval(that.callback);
73
  clock(width, context, args, settings);
54
  var that = this;
55
  var id = that.clockId;
56
  var clock = that.callback;
57
+ if (!window.ycdClockStetting) {
58
+ window.ycdClockStetting = [];
59
+ }
60
+
61
  jQuery('.ycdClock'+id).each(function(index, element) {
62
  var args = jQuery(element).data('args');
63
  var options = jQuery(element).data('options');
72
  settings.timeZone = options['timeZone'];
73
  settings.mode = options['mode'];
74
  settings.allSeconds = options['allSeconds'];
75
+ settings.options = options;
76
+ window.ycdClockStetting[options['id']] = {};
77
 
78
  var clock = eval(that.callback);
79
  clock(width, context, args, settings);
assets/js/clock/canvas_clock.js CHANGED
@@ -60,6 +60,29 @@ function YcdParseAllSeconds(allSeconds) {
60
  return obj;
61
  };
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  function ycdClockConti(size, cns, clockd, extraOptions)
64
  {
65
  cns.clearRect(0,0,size,size);
@@ -159,11 +182,24 @@ function ycdClockConti(size, cns, clockd, extraOptions)
159
 
160
  var intervalSec = 50;
161
  if(!isClock) {
162
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
163
  intervalSec = 1000;
164
  }
165
- if(!isClock && extraOptions.allSeconds == -1) {
166
- return false;
 
 
 
 
 
 
 
167
  }
168
 
169
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockConti(size, cns, clockd, extraOptions)}, intervalSec);
@@ -214,13 +250,27 @@ function ycdDigitalClock(size, cns, clockd, extraOptions)
214
  {
215
  ycd_date_add((size/2),size/5*3+size/10,size,cns, clockd, extraOptions);
216
  }
 
217
  var intervalSec = 50;
218
  if(!isClock) {
219
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
220
  intervalSec = 1000;
221
  }
222
- if(!isClock && extraOptions.allSeconds == -1) {
223
- return false;
 
 
 
 
 
 
 
224
  }
225
 
226
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdDigitalClock(size, cns, clockd, extraOptions)},intervalSec);
@@ -495,11 +545,24 @@ function ycdClockFollow(size, cns, clockd, extraOptions)
495
 
496
  var intervalSec = 50;
497
  if(!isClock) {
498
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
499
  intervalSec = 1000;
500
  }
501
- if(!isClock && extraOptions.allSeconds == -1) {
502
- return false;
 
 
 
 
 
 
 
503
  }
504
 
505
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockFollow(size, cns, clockd, extraOptions)},intervalSec);
@@ -581,13 +644,25 @@ function ycdClockCircles(size, cns, clockd, extraOptions)
581
  }
582
 
583
  var intervalSec = 50;
584
-
585
  if(!isClock) {
586
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
587
  intervalSec = 1000;
588
  }
589
- if(!isClock && extraOptions.allSeconds == -1) {
590
- return false;
 
 
 
 
 
 
 
591
  }
592
 
593
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockCircles(size, cns, clockd, extraOptions)},intervalSec);
@@ -759,14 +834,27 @@ function ycdClockDots(size, cns, clockd,extraOptions)
759
 
760
  var intervalSec = 50;
761
  if(!isClock) {
762
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
763
  intervalSec = 1000;
764
  }
765
- if(!isClock && extraOptions.allSeconds == -1) {
766
- return false;
 
 
 
 
 
 
 
767
  }
768
 
769
- window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockDots(size, cns, clockd, extraOptions)},50);
770
  }
771
 
772
  function clock_num(size, cns, clockd)
@@ -1067,13 +1155,25 @@ function ycdClockBars(size, cns, clockd, extraOptions)
1067
  cns.closePath();
1068
 
1069
  var intervalSec = 50;
1070
-
1071
  if(!isClock) {
1072
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
1073
  intervalSec = 1000;
1074
  }
1075
- if(!isClock && extraOptions.allSeconds == -1) {
1076
- return false;
 
 
 
 
 
 
 
1077
  }
1078
 
1079
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockBars(size, cns, clockd, extraOptions)},intervalSec);
@@ -1199,14 +1299,27 @@ function ycdClockPlanets(size, cns, clockd, extraOptions)
1199
  cns.closePath();
1200
 
1201
  var intervalSec = 50;
1202
-
1203
  if(!isClock) {
1204
- extraOptions.allSeconds -= 1;
 
 
 
 
 
 
1205
  intervalSec = 1000;
1206
  }
1207
- if(!isClock && extraOptions.allSeconds == -1) {
1208
- return false;
1209
- }
 
 
 
 
 
 
 
 
1210
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockPlanets(size, cns, clockd, extraOptions)},intervalSec);
1211
  }
1212
 
60
  return obj;
61
  };
62
 
63
+ function YcdClockTimerExpireBehavior(options) {
64
+ var behavior = options['ycd-countdown-expire-behavior'];
65
+ var id = options['id'];
66
+
67
+ if(behavior == 'default') {
68
+ window.ycdClockStetting[id].stopTimer = true;
69
+ }
70
+ if(behavior == 'hideCountdown') {
71
+ jQuery('.ycd-countdown-wrapper canvas').remove();
72
+ clearTimeout(window.YcdClockTimout);
73
+ }
74
+ if(behavior == 'countToUp') {
75
+ window.ycdClockStetting[id].countUp = true;
76
+ }
77
+ if(behavior == 'showText') {
78
+ jQuery('.ycd-countdown-'+options['id']+'-wrapper canvas').replaceWith(options['ycd-expire-text']);
79
+ }
80
+ if(behavior == 'redirectToURL') {
81
+ var url = options['ycd-expire-url'];
82
+ window.location.href = url;
83
+ }
84
+ }
85
+
86
  function ycdClockConti(size, cns, clockd, extraOptions)
87
  {
88
  cns.clearRect(0,0,size,size);
182
 
183
  var intervalSec = 50;
184
  if(!isClock) {
185
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
186
+ extraOptions.allSeconds -= 1;
187
+ }
188
+ else {
189
+ extraOptions.allSeconds += 1;
190
+ }
191
+
192
  intervalSec = 1000;
193
  }
194
+ var stoSecond = -1;
195
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
196
+ stoSecond = 0;
197
+ }
198
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
199
+ YcdClockTimerExpireBehavior(extraOptions.options);
200
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
201
+ return false
202
+ }
203
  }
204
 
205
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockConti(size, cns, clockd, extraOptions)}, intervalSec);
250
  {
251
  ycd_date_add((size/2),size/5*3+size/10,size,cns, clockd, extraOptions);
252
  }
253
+
254
  var intervalSec = 50;
255
  if(!isClock) {
256
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
257
+ extraOptions.allSeconds -= 1;
258
+ }
259
+ else {
260
+ extraOptions.allSeconds += 1;
261
+ }
262
+
263
  intervalSec = 1000;
264
  }
265
+ var stoSecond = -1;
266
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
267
+ stoSecond = 0;
268
+ }
269
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
270
+ YcdClockTimerExpireBehavior(extraOptions.options);
271
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
272
+ return false
273
+ }
274
  }
275
 
276
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdDigitalClock(size, cns, clockd, extraOptions)},intervalSec);
545
 
546
  var intervalSec = 50;
547
  if(!isClock) {
548
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
549
+ extraOptions.allSeconds -= 1;
550
+ }
551
+ else {
552
+ extraOptions.allSeconds += 1;
553
+ }
554
+
555
  intervalSec = 1000;
556
  }
557
+ var stoSecond = -1;
558
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
559
+ stoSecond = 0;
560
+ }
561
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
562
+ YcdClockTimerExpireBehavior(extraOptions.options);
563
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
564
+ return false
565
+ }
566
  }
567
 
568
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockFollow(size, cns, clockd, extraOptions)},intervalSec);
644
  }
645
 
646
  var intervalSec = 50;
 
647
  if(!isClock) {
648
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
649
+ extraOptions.allSeconds -= 1;
650
+ }
651
+ else {
652
+ extraOptions.allSeconds += 1;
653
+ }
654
+
655
  intervalSec = 1000;
656
  }
657
+ var stoSecond = -1;
658
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
659
+ stoSecond = 0;
660
+ }
661
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
662
+ YcdClockTimerExpireBehavior(extraOptions.options);
663
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
664
+ return false
665
+ }
666
  }
667
 
668
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockCircles(size, cns, clockd, extraOptions)},intervalSec);
834
 
835
  var intervalSec = 50;
836
  if(!isClock) {
837
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
838
+ extraOptions.allSeconds -= 1;
839
+ }
840
+ else {
841
+ extraOptions.allSeconds += 1;
842
+ }
843
+
844
  intervalSec = 1000;
845
  }
846
+ var stoSecond = -1;
847
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
848
+ stoSecond = 0;
849
+ }
850
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
851
+ YcdClockTimerExpireBehavior(extraOptions.options);
852
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
853
+ return false
854
+ }
855
  }
856
 
857
+ window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockDots(size, cns, clockd, extraOptions)}, intervalSec);
858
  }
859
 
860
  function clock_num(size, cns, clockd)
1155
  cns.closePath();
1156
 
1157
  var intervalSec = 50;
 
1158
  if(!isClock) {
1159
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
1160
+ extraOptions.allSeconds -= 1;
1161
+ }
1162
+ else {
1163
+ extraOptions.allSeconds += 1;
1164
+ }
1165
+
1166
  intervalSec = 1000;
1167
  }
1168
+ var stoSecond = -1;
1169
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
1170
+ stoSecond = 0;
1171
+ }
1172
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
1173
+ YcdClockTimerExpireBehavior(extraOptions.options);
1174
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
1175
+ return false
1176
+ }
1177
  }
1178
 
1179
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockBars(size, cns, clockd, extraOptions)},intervalSec);
1299
  cns.closePath();
1300
 
1301
  var intervalSec = 50;
 
1302
  if(!isClock) {
1303
+ if(!window.ycdClockStetting[extraOptions.options['id']].countUp) {
1304
+ extraOptions.allSeconds -= 1;
1305
+ }
1306
+ else {
1307
+ extraOptions.allSeconds += 1;
1308
+ }
1309
+
1310
  intervalSec = 1000;
1311
  }
1312
+ var stoSecond = -1;
1313
+ if(extraOptions.options['ycd-countdown-expire-behavior'] == 'countToUp') {
1314
+ stoSecond = 0;
1315
+ }
1316
+ if(!isClock && extraOptions.allSeconds == stoSecond) {
1317
+ YcdClockTimerExpireBehavior(extraOptions.options);
1318
+ if (window.ycdClockStetting[extraOptions.options['id']].stopTimer) {
1319
+ return false
1320
+ }
1321
+ }
1322
+
1323
  window.YcdClockTimout = clockd.timer=setTimeout(function(){ycdClockPlanets(size, cns, clockd, extraOptions)},intervalSec);
1324
  }
1325
 
assets/js/ycdTimer.js CHANGED
@@ -1,5 +1,6 @@
1
  function YcdTimer() {
2
  this.ycdAudio = false;
 
3
  }
4
 
5
  YcdTimer.prototype.setAlarm = function() {
@@ -226,7 +227,20 @@ YcdTimer.prototype.formatTime = function(intergerValue) {
226
  };
227
 
228
  YcdTimer.prototype.decrementTimer = function() {
229
- this.remainingTime -= (1 * 1000);
 
 
 
 
 
 
 
 
 
 
 
 
 
230
 
231
  if(this.remainingTime < 1000) {
232
  this.endBehavior();
1
  function YcdTimer() {
2
  this.ycdAudio = false;
3
+ this.countdown = true;
4
  }
5
 
6
  YcdTimer.prototype.setAlarm = function() {
227
  };
228
 
229
  YcdTimer.prototype.decrementTimer = function() {
230
+ var options = this.getSettings();
231
+ var behavior = options['ycd-countdown-expire-behavior'];
232
+
233
+ if(behavior == 'countToUp' && this.remainingTime < 1000) {
234
+ this.countdown = false;
235
+ }
236
+
237
+ if (!this.countdown) {
238
+ this.remainingTime += (1 * 1000);
239
+ }
240
+ else {
241
+ this.remainingTime -= (1 * 1000);
242
+ }
243
+
244
 
245
  if(this.remainingTime < 1000) {
246
  this.endBehavior();
classes/countdown/Clock1Countdown.php CHANGED
@@ -12,7 +12,6 @@ class Clock1Countdown extends Countdown {
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
15
- unset($mtaboxes['afterCountdownExpire']);
16
 
17
  return $mtaboxes;
18
  }
@@ -115,6 +114,9 @@ class Clock1Countdown extends Countdown {
115
  $id = $this->getId();
116
 
117
  $options = $this->getCanvasOptions();
 
 
 
118
  $width = @$options['width'];
119
  $args = $this->getClockArgs();
120
 
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
 
15
 
16
  return $mtaboxes;
17
  }
114
  $id = $this->getId();
115
 
116
  $options = $this->getCanvasOptions();
117
+ $allOptions = $this->getDataAllOptions();
118
+ $options = $options + $allOptions;
119
+ $options['id'] = $id;
120
  $width = @$options['width'];
121
  $args = $this->getClockArgs();
122
 
classes/countdown/Clock2Countdown.php CHANGED
@@ -12,7 +12,6 @@ class Clock2Countdown extends Countdown {
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
15
- unset($mtaboxes['afterCountdownExpire']);
16
 
17
  return $mtaboxes;
18
  }
@@ -114,6 +113,9 @@ class Clock2Countdown extends Countdown {
114
  $id = $this->getId();
115
 
116
  $options = $this->getCanvasOptions();
 
 
 
117
  $width = @$options['width'];
118
  $args = $this->getClockArgs();
119
 
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
 
15
 
16
  return $mtaboxes;
17
  }
113
  $id = $this->getId();
114
 
115
  $options = $this->getCanvasOptions();
116
+ $allOptions = $this->getDataAllOptions();
117
+ $options = $options + $allOptions;
118
+ $options['id'] = $id;
119
  $width = @$options['width'];
120
  $args = $this->getClockArgs();
121
 
classes/countdown/Clock3Countdown.php CHANGED
@@ -12,7 +12,6 @@ class Clock3Countdown extends Countdown {
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
15
- unset($mtaboxes['afterCountdownExpire']);
16
 
17
  return $mtaboxes;
18
  }
@@ -115,6 +114,9 @@ class Clock3Countdown extends Countdown {
115
  $id = $this->getId();
116
 
117
  $options = $this->getCanvasOptions();
 
 
 
118
  $width = @$options['width'];
119
  $args = $this->getClockArgs();
120
 
12
 
13
  public function metaboxes($mtaboxes) {
14
  unset($mtaboxes['generalOptions']);
 
15
 
16
  return $mtaboxes;
17
  }
114
  $id = $this->getId();
115
 
116
  $options = $this->getCanvasOptions();
117
+ $allOptions = $this->getDataAllOptions();
118
+ $options = $options + $allOptions;
119
+ $options['id'] = $id;
120
  $width = @$options['width'];
121
  $args = $this->getClockArgs();
122
 
config/config.php CHANGED
@@ -55,8 +55,8 @@ class YcdCountdownConfig {
55
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
56
  self::addDefine('YCD_AJAX_SUCCESS', 1);
57
  self::addDefine('YCD_TABLE_LIMIT', 15);
58
- self::addDefine('YCD_VERSION', 1.47);
59
- self::addDefine('YCD_VERSION_PRO', 1.31);
60
  self::addDefine('YCD_FREE_VERSION', 1);
61
  self::addDefine('YCD_SILVER_VERSION', 2);
62
  self::addDefine('YCD_GOLD_VERSION', 3);
55
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
56
  self::addDefine('YCD_AJAX_SUCCESS', 1);
57
  self::addDefine('YCD_TABLE_LIMIT', 15);
58
+ self::addDefine('YCD_VERSION', 1.48);
59
+ self::addDefine('YCD_VERSION_PRO', 1.32);
60
  self::addDefine('YCD_FREE_VERSION', 1);
61
  self::addDefine('YCD_SILVER_VERSION', 2);
62
  self::addDefine('YCD_GOLD_VERSION', 3);
countdown-builder.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Countdown builder
4
  * Description: The best countdown plugin
5
- * Version: 1.4.7
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
5
+ * Version: 1.4.8
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
helpers/AdminHelper.php CHANGED
@@ -324,7 +324,7 @@ class AdminHelper {
324
  'attr' => array(
325
  'type' => 'radio',
326
  'name' => 'ycd-countdown-clock-mode',
327
- 'class' => 'ycd-countdown-hide-behavior ycd-form-radio',
328
  'data-attr-href' => 'ycd-countdown-clock-mode-clock',
329
  'value' => 'clock'
330
  ),
@@ -336,7 +336,7 @@ class AdminHelper {
336
  'attr' => array(
337
  'type' => 'radio',
338
  'name' => 'ycd-countdown-clock-mode',
339
- 'class' => 'ycd-countdown-hide-behavior ycd-form-radio',
340
  'data-attr-href' => 'ycd-countdown-clock-mode-countdown',
341
  'value' => 'timer'
342
  ),
324
  'attr' => array(
325
  'type' => 'radio',
326
  'name' => 'ycd-countdown-clock-mode',
327
+ 'class' => 'ycd-countdown-hide-behavior ycd-form-radio ycd-timer-mode',
328
  'data-attr-href' => 'ycd-countdown-clock-mode-clock',
329
  'value' => 'clock'
330
  ),
336
  'attr' => array(
337
  'type' => 'radio',
338
  'name' => 'ycd-countdown-clock-mode',
339
+ 'class' => 'ycd-countdown-hide-behavior ycd-form-radio ycd-timer-mode',
340
  'data-attr-href' => 'ycd-countdown-clock-mode-countdown',
341
  'value' => 'timer'
342
  ),
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.2
6
- Stable tag: 1.4.7
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -64,6 +64,9 @@ You need to select the .zip file, there is no need to extract the zip file, just
64
 
65
 
66
  == Changelog ==
 
 
 
67
  = 1.4.7 =
68
  * New timer feature for the Clock1, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7
69
  * Bug fixed
@@ -286,4 +289,4 @@ You need to select the .zip file, there is no need to extract the zip file, just
286
  * Code improvement
287
 
288
  = 1.0 =
289
- * Plugin publish
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.2
6
+ Stable tag: 1.4.8
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
64
 
65
 
66
  == Changelog ==
67
+ = 1.4.8 =
68
+ * After expire behavior for the Clock1, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7 timers
69
+
70
  = 1.4.7 =
71
  * New timer feature for the Clock1, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7
72
  * Bug fixed
289
  * Code improvement
290
 
291
  = 1.0 =
292
+ * Plugin publish