Countdown, Coming Soon – Countdown & Clock - Version 1.7.5

Version Description

  • New Maintenance mode (new)
  • Timer days option (new)
  • Support metabox coming soon section
  • Bug fixes
Download this release

Release Info

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

Code changes from version 1.7.4 to 1.7.5

assets/css/admin.css CHANGED
@@ -711,8 +711,8 @@ div.ycd-tabs-text-header > div.ycd-toggle-icon-open {
711
  }
712
 
713
  .ycd-support-button-red {
714
- border: 2px solid #e74c3c;
715
- color: #e74c3c;
716
  border-radius: 5px;
717
  cursor: pointer !important;
718
  padding: 5px 25px 5px 26px;
@@ -725,6 +725,11 @@ div.ycd-tabs-text-header > div.ycd-toggle-icon-open {
725
  }
726
 
727
  .ycd-support-button-red:hover {
728
- background-color: #e74c3c;
729
- color: #ffffff;
 
 
 
 
 
730
  }
711
  }
712
 
713
  .ycd-support-button-red {
714
+ border: 2px solid #e74c3c !important;
715
+ color: #e74c3c !important;
716
  border-radius: 5px;
717
  cursor: pointer !important;
718
  padding: 5px 25px 5px 26px;
725
  }
726
 
727
  .ycd-support-button-red:hover {
728
+ background-color: #e74c3c !important;
729
+ color: #ffffff !important;
730
+ }
731
+
732
+ .ycd-sub-options-wrapper label {
733
+ font-weight: normal;
734
+ padding-left: 20px;
735
  }
assets/js/ycdTimer.js CHANGED
@@ -193,7 +193,7 @@ YcdTimer.prototype.stopTimer = function() {
193
 
194
  YcdTimer.prototype.resetTimer = function() {
195
  var settings = this.getSettings();
196
- this.remainingTime = (settings['hours'] * 60 * 60 * 1000) +
197
  (settings['minutes'] * 60 * 1000) +
198
  (settings['seconds'] * 1000);
199
  this.renderTimer();
@@ -202,6 +202,9 @@ YcdTimer.prototype.resetTimer = function() {
202
  YcdTimer.prototype.renderTimer = function() {
203
  var deltaTime = this.remainingTime;
204
 
 
 
 
205
  var hoursValue = Math.floor(deltaTime / (1000 * 60 * 60));
206
  deltaTime = deltaTime % (1000 * 60 * 60);
207
 
@@ -210,12 +213,13 @@ YcdTimer.prototype.renderTimer = function() {
210
 
211
  var secondsValue = Math.floor(deltaTime / (1000));
212
 
213
- this.animateTime(hoursValue, minutesValue, secondsValue);
214
  };
215
 
216
- YcdTimer.prototype.animateTime = function(remainingHours, remainingMinutes, remainingSeconds) {
217
  var id = this.getId();
218
  /* position */
 
219
  var hoursValueTarget = jQuery('.ycd-hours-value-'+id);
220
  var minutesValueTarget = jQuery('.ycd-minutes-value-'+id);
221
  var secondsValueTarget = jQuery('.ycd-seconds-value-'+id);
@@ -224,31 +228,42 @@ YcdTimer.prototype.animateTime = function(remainingHours, remainingMinutes, rema
224
  minutesValueTarget.css('top', '0em');
225
  secondsValueTarget.css('top', '0em');
226
 
 
227
  var hoursNext = jQuery('.ycd-hours-next-value-'+id);
228
  var minutesNext = jQuery('.ycd-minutes-next-value-'+id);
229
  var secondsNext = jQuery('.ycd-seconds-next-value-'+id);
230
 
 
231
  hoursNext.css('top', '0em');
232
  minutesNext.css('top', '0em');
233
  secondsNext.css('top', '0em');
234
 
 
235
  var oldHoursString = hoursNext.first().text();
236
  var oldMinutesString = minutesNext.first().text();
237
  var oldSecondsString = secondsNext.first().text();
238
 
 
239
  var hoursString = this.formatTime(remainingHours);
240
  var minutesString = this.formatTime(remainingMinutes);
241
  var secondsString = this.formatTime(remainingSeconds);
242
 
 
243
  hoursValueTarget.text(oldHoursString);
244
  minutesValueTarget.text(oldMinutesString);
245
  secondsValueTarget.text(oldSecondsString);
246
 
 
247
  hoursNext.text(hoursString);
248
  minutesNext.text(minutesString);
249
  secondsNext.text(secondsString);
250
 
251
  /* set and animate */
 
 
 
 
 
252
  if(oldHoursString !== hoursString) {
253
  hoursValueTarget.animate({top: '-=1em'});
254
  jQuery('.ycd-hours-next-value-'+id).animate({top: '-=1em'});
@@ -322,6 +337,7 @@ YcdTimer.prototype.livePreview = function() {
322
  this.changeBackgroundImage();
323
  this.changeAlignment();
324
  this.changeMilliseconds();
 
325
  };
326
 
327
  YcdTimer.prototype.changeMilliseconds = function () {
@@ -341,6 +357,23 @@ YcdTimer.prototype.changeMilliseconds = function () {
341
  });
342
  };
343
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  YcdTimer.prototype.changeAlignment = function() {
345
  var alignment = jQuery('.ycd-timer-content-alignment');
346
 
193
 
194
  YcdTimer.prototype.resetTimer = function() {
195
  var settings = this.getSettings();
196
+ this.remainingTime = (settings['days'] * 24 * 60 * 60 * 1000) + (settings['hours'] * 60 * 60 * 1000) +
197
  (settings['minutes'] * 60 * 1000) +
198
  (settings['seconds'] * 1000);
199
  this.renderTimer();
202
  YcdTimer.prototype.renderTimer = function() {
203
  var deltaTime = this.remainingTime;
204
 
205
+ var daysValue = Math.floor(deltaTime / (1000 * 60 * 60* 24));
206
+ deltaTime = deltaTime % (1000 * 60 * 60* 24);
207
+
208
  var hoursValue = Math.floor(deltaTime / (1000 * 60 * 60));
209
  deltaTime = deltaTime % (1000 * 60 * 60);
210
 
213
 
214
  var secondsValue = Math.floor(deltaTime / (1000));
215
 
216
+ this.animateTime(daysValue, hoursValue, minutesValue, secondsValue);
217
  };
218
 
219
+ YcdTimer.prototype.animateTime = function(remainingDays, remainingHours, remainingMinutes, remainingSeconds) {
220
  var id = this.getId();
221
  /* position */
222
+ var daysValueTarget = jQuery('.ycd-days-value-'+id);
223
  var hoursValueTarget = jQuery('.ycd-hours-value-'+id);
224
  var minutesValueTarget = jQuery('.ycd-minutes-value-'+id);
225
  var secondsValueTarget = jQuery('.ycd-seconds-value-'+id);
228
  minutesValueTarget.css('top', '0em');
229
  secondsValueTarget.css('top', '0em');
230
 
231
+ var daysNext = jQuery('.ycd-days-next-value-'+id);
232
  var hoursNext = jQuery('.ycd-hours-next-value-'+id);
233
  var minutesNext = jQuery('.ycd-minutes-next-value-'+id);
234
  var secondsNext = jQuery('.ycd-seconds-next-value-'+id);
235
 
236
+ daysNext.css('top', '0em');
237
  hoursNext.css('top', '0em');
238
  minutesNext.css('top', '0em');
239
  secondsNext.css('top', '0em');
240
 
241
+ var olDaysString = daysNext.first().text();
242
  var oldHoursString = hoursNext.first().text();
243
  var oldMinutesString = minutesNext.first().text();
244
  var oldSecondsString = secondsNext.first().text();
245
 
246
+ var daysString = this.formatTime(remainingDays);
247
  var hoursString = this.formatTime(remainingHours);
248
  var minutesString = this.formatTime(remainingMinutes);
249
  var secondsString = this.formatTime(remainingSeconds);
250
 
251
+ daysValueTarget.text(olDaysString);
252
  hoursValueTarget.text(oldHoursString);
253
  minutesValueTarget.text(oldMinutesString);
254
  secondsValueTarget.text(oldSecondsString);
255
 
256
+ daysNext.text(daysString);
257
  hoursNext.text(hoursString);
258
  minutesNext.text(minutesString);
259
  secondsNext.text(secondsString);
260
 
261
  /* set and animate */
262
+ if(olDaysString !== daysString) {
263
+ daysValueTarget.animate({top: '-=1em'});
264
+ jQuery('.ycd-hours-next-value-'+id).animate({top: '-=1em'});
265
+ }
266
+
267
  if(oldHoursString !== hoursString) {
268
  hoursValueTarget.animate({top: '-=1em'});
269
  jQuery('.ycd-hours-next-value-'+id).animate({top: '-=1em'});
337
  this.changeBackgroundImage();
338
  this.changeAlignment();
339
  this.changeMilliseconds();
340
+ this.changeDays();
341
  };
342
 
343
  YcdTimer.prototype.changeMilliseconds = function () {
357
  });
358
  };
359
 
360
+ YcdTimer.prototype.changeDays = function () {
361
+ var daysCheckbox = jQuery('#ycd-countdown-timer-days');
362
+ if (!daysCheckbox.length) {
363
+ return false;
364
+ }
365
+
366
+ daysCheckbox.bind('change', function () {
367
+ var days = jQuery('.ycd-days-span');
368
+ if (jQuery(this).is(':checked')) {
369
+ days.removeClass('ycd-hide');
370
+ }
371
+ else {
372
+ days.addClass('ycd-hide');
373
+ }
374
+ });
375
+ };
376
+
377
  YcdTimer.prototype.changeAlignment = function() {
378
  var alignment = jQuery('.ycd-timer-content-alignment');
379
 
assets/views/admin/{comingSoon.php → comingSoon/comingSoon.php} RENAMED
@@ -12,11 +12,12 @@ $defaultData = AdminHelper::defaultData();
12
  <input type="submit" class="btn btn-primary" value="Save Changes">
13
  </div>
14
  </div>
15
- <?php require_once YCD_ADMIN_VIEWS_PATH.'comingSoonSettings.php'; ?>
16
- <?php require_once YCD_ADMIN_VIEWS_PATH.'comingSoonHeader.php'; ?>
17
- <?php require_once YCD_ADMIN_VIEWS_PATH.'comingSoonDesign.php'; ?>
18
  </div>
19
- <div class="col-lg-6">
 
20
  </div>
21
  </div>
22
  </form>
12
  <input type="submit" class="btn btn-primary" value="Save Changes">
13
  </div>
14
  </div>
15
+ <?php require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoonSettings.php'; ?>
16
+ <?php require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoonHeader.php'; ?>
17
+ <?php require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoonDesign.php'; ?>
18
  </div>
19
+ <div class="col-lg-4">
20
+ <?php require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoonSupport.php'; ?>
21
  </div>
22
  </div>
23
  </form>
assets/views/admin/{comingSoonDesign.php → comingSoon/comingSoonDesign.php} RENAMED
File without changes
assets/views/admin/{comingSoonHeader.php → comingSoon/comingSoonHeader.php} RENAMED
File without changes
assets/views/admin/{comingSoonSettings.php → comingSoon/comingSoonSettings.php} RENAMED
@@ -1,5 +1,6 @@
1
  <?php
2
  use ycd\AdminHelper;
 
3
  $defaultData = AdminHelper::defaultData();
4
  $createCountdown = YCD_COUNTDOWN_ADMIN_URL.'edit.php?post_type='.YCD_COUNTDOWN_POST_TYPE.'&page='.YCD_COUNTDOWN_POST_TYPE;
5
  $countdownsIdAndTitle = \ycd\Countdown::getCountdownsIdAndTitle();
@@ -19,6 +20,19 @@ $countdownsIdAndTitle = \ycd\Countdown::getCountdownsIdAndTitle();
19
  </label>
20
  </div>
21
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  <div class="row form-group">
23
  <div class="col-md-6">
24
  <label><?php _e('Headline'); ?></label>
1
  <?php
2
  use ycd\AdminHelper;
3
+ use ycd\MultipleChoiceButton;
4
  $defaultData = AdminHelper::defaultData();
5
  $createCountdown = YCD_COUNTDOWN_ADMIN_URL.'edit.php?post_type='.YCD_COUNTDOWN_POST_TYPE.'&page='.YCD_COUNTDOWN_POST_TYPE;
6
  $countdownsIdAndTitle = \ycd\Countdown::getCountdownsIdAndTitle();
20
  </label>
21
  </div>
22
  </div>
23
+ <div class="row form-group">
24
+ <div class="col-md-6">
25
+ <label><?php _e('Mode'); ?></label>
26
+ </div>
27
+ <div class="col-md-6">
28
+ </div>
29
+ </div>
30
+ <div class="ycd-sub-options-wrapper">
31
+ <?php
32
+ $multipleChoiceButton = new MultipleChoiceButton($defaultData['comingSoonModes'], esc_attr($this->getOptionValue('ycd-coming-soon-mode')));
33
+ echo $multipleChoiceButton;
34
+ ?>
35
+ </div>
36
  <div class="row form-group">
37
  <div class="col-md-6">
38
  <label><?php _e('Headline'); ?></label>
assets/views/admin/comingSoon/comingSoonSupport.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="panel panel-default"style="margin-top: 48px;">
2
+ <div class="panel-heading"><?php _e('Support', YCD_TEXT_DOMAIN)?></div>
3
+ <div class="panel-body">
4
+ <h3 style="margin-top: 0;"><?php _e('Support', YCD_TEXT_DOMAIN)?></h3>
5
+ <p style="text-align: center">
6
+ We love our plugin and do the best to improve all features for You. But sometimes issues happened, or you can't find required feature that you need. Don't worry, just pressing here
7
+ <br>
8
+ <a href="<?php echo YCD_COUNTDOWN_SUPPORT_URL; ?>" style="font-size: 18px; cursor: pointer;" target="_blank">
9
+ <button type="button" id="ycd-report-problem-button" class="ycd-support-button-red" style="margin: 10px;">
10
+ <i class="ai1wm-icon-notification"></i>
11
+ <?php _e('Report issue', YCD_TEXT_DOMAIN)?>
12
+ </button>
13
+ </a><br>
14
+ and we will be happy to help you!</p>
15
+ <style>
16
+ .ycd-support-metabox {
17
+ text-align: left !important;
18
+ }
19
+ </style>
20
+ </div>
21
+ </div>
assets/views/supportMetabox.php CHANGED
@@ -4,7 +4,7 @@
4
  We love our plugin and do the best to improve all features for You. But sometimes issues happened, or you can't find required feature that you need. Don't worry, just pressing here
5
  <br>
6
  <a href="<?php echo YCD_COUNTDOWN_SUPPORT_URL; ?>" style="font-size: 18px; cursor: pointer;" target="_blank">
7
- <button type="button" id="ycd-report-problem-button" class="ycd-support-button-red">
8
  <i class="ai1wm-icon-notification"></i>
9
  Report issue
10
  </button>
4
  We love our plugin and do the best to improve all features for You. But sometimes issues happened, or you can't find required feature that you need. Don't worry, just pressing here
5
  <br>
6
  <a href="<?php echo YCD_COUNTDOWN_SUPPORT_URL; ?>" style="font-size: 18px; cursor: pointer;" target="_blank">
7
+ <button type="button" id="ycd-report-problem-button" class="ycd-support-button-red" style="margin: 10px;">
8
  <i class="ai1wm-icon-notification"></i>
9
  Report issue
10
  </button>
assets/views/timerMainView.php CHANGED
@@ -27,6 +27,28 @@ $textFontFamily = $this->getOptionValue('ycd-text-font-family');
27
  <input type="number" name="ycd-timer-seconds" id="ycdTimeSeconds" min="0" max="60" class="form-control ycd-timer-time-settings" data-type="seconds" value="<?php echo esc_attr($this->getOptionValue('ycd-timer-seconds'))?>">
28
  </div>
29
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  <div class="row form-group">
31
  <div class="col-md-6">
32
  <label for="ycd-countdown-timer-milliseconds" class="ycd-label-of-switch"><?php _e('Enable Miliseconds', YCD_TEXT_DOMAIN); ?></label>
27
  <input type="number" name="ycd-timer-seconds" id="ycdTimeSeconds" min="0" max="60" class="form-control ycd-timer-time-settings" data-type="seconds" value="<?php echo esc_attr($this->getOptionValue('ycd-timer-seconds'))?>">
28
  </div>
29
  </div>
30
+ <div class="row form-group">
31
+ <div class="col-md-6">
32
+ <label for="ycd-countdown-timer-days" class="ycd-label-of-switch"><?php _e('Enable Days', YCD_TEXT_DOMAIN); ?></label>
33
+ </div>
34
+ <div class="col-md-6">
35
+ <label class="ycd-switch">
36
+ <input type="checkbox" id="ycd-countdown-timer-days" name="ycd-countdown-timer-days" class="ycd-accordion-checkbox" <?php echo $this->getOptionValue('ycd-countdown-timer-days'); ?>>
37
+ <span class="ycd-slider ycd-round"></span>
38
+ </label>
39
+ </div>
40
+ </div>
41
+ <div class="ycd-accordion-content ycd-hide-content">
42
+ <div class="row form-group">
43
+ <div class="col-md-6">
44
+ <label for="ycdTimeDays"><?php _e('Days', YCD_TEXT_DOMAIN); ?></label>
45
+ </div>
46
+ <div class="col-md-2">
47
+ <input type="number" name="ycd-timer-days" id="ycdTimeDays" min="0" max="60" class="form-control ycd-timer-time-settings" data-type="days" value="<?php echo esc_attr($this->getOptionValue('ycd-timer-days'))?>">
48
+ </div>
49
+ </div>
50
+ </div>
51
+
52
  <div class="row form-group">
53
  <div class="col-md-6">
54
  <label for="ycd-countdown-timer-milliseconds" class="ycd-label-of-switch"><?php _e('Enable Miliseconds', YCD_TEXT_DOMAIN); ?></label>
classes/countdown/ComingSoon.php CHANGED
@@ -48,10 +48,18 @@ Class ComingSoon {
48
 
49
  public function render() {
50
  $comingSoonThis = $this;
 
51
  require_once YCD_FRONT_VIEWS_PATH.'comingSoonTempleate.php';
52
  exit();
53
  }
54
 
 
 
 
 
 
 
 
55
  public static function defaults() {
56
  $defaults = array();
57
 
@@ -74,6 +82,7 @@ Class ComingSoon {
74
  $defaults['ycd-coming-soon-page-font-family'] = '';
75
  $defaults['ycd-coming-soon-bg-video'] = '';
76
  $defaults['ycd-coming-soon-bg-video-url'] = '';
 
77
  $defaults['checkboxes'] = array(
78
  'ycd-enable-coming-soon',
79
  'ycd-coming-soon-bg-image',
@@ -125,7 +134,7 @@ Class ComingSoon {
125
 
126
  public function adminView() {
127
 
128
- require_once YCD_ADMIN_VIEWS_PATH.'comingSoon.php';
129
  }
130
 
131
  public static function saveComingSoonSettings($postData) {
48
 
49
  public function render() {
50
  $comingSoonThis = $this;
51
+ $this->changeHeaderStatus();
52
  require_once YCD_FRONT_VIEWS_PATH.'comingSoonTempleate.php';
53
  exit();
54
  }
55
 
56
+ private function changeHeaderStatus() {
57
+ $mode = $this->getOptionValue('ycd-coming-soon-mode');
58
+ if ($mode == 'maintenanceMode') {
59
+ status_header(503);
60
+ }
61
+ }
62
+
63
  public static function defaults() {
64
  $defaults = array();
65
 
82
  $defaults['ycd-coming-soon-page-font-family'] = '';
83
  $defaults['ycd-coming-soon-bg-video'] = '';
84
  $defaults['ycd-coming-soon-bg-video-url'] = '';
85
+ $defaults['ycd-coming-soon-mode'] = 'comingSoonMode';
86
  $defaults['checkboxes'] = array(
87
  'ycd-enable-coming-soon',
88
  'ycd-coming-soon-bg-image',
134
 
135
  public function adminView() {
136
 
137
+ require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoon.php';
138
  }
139
 
140
  public static function saveComingSoonSettings($postData) {
classes/countdown/TimerCountdown.php CHANGED
@@ -27,8 +27,8 @@ class TimerCountdown extends Countdown {
27
  );
28
  $defaultOptions = $this->changeDefaultOptionsByNames($defaultOptions, $changingOptions);
29
 
30
- return $defaultOptions;
31
- }
32
 
33
  public function metaboxes($metaboxes) {
34
  unset($metaboxes['generalOptions']);
@@ -52,6 +52,7 @@ class TimerCountdown extends Countdown {
52
  $allDataOptions = $this->getDataAllOptions();
53
 
54
  $options['id'] = $this->getId();
 
55
  $options['hours'] = $this->getOptionValue('ycd-timer-hours');
56
  $options['minutes'] = $this->getOptionValue('ycd-timer-minutes');
57
  $options['seconds'] = $this->getOptionValue('ycd-timer-seconds');
@@ -82,48 +83,48 @@ class TimerCountdown extends Countdown {
82
  if(!is_admin()) {
83
  $important = '!important';
84
  }
85
- ob_start();
86
- ?>
87
- <style type="text/css" id="ycd-digit-font-family-<?php echo $id; ?>">
88
- .ycd-timer-wrapper-<?php echo $id; ?> .ycd-timer-box > span {
89
- font-family: <?php echo $fontFamily ?>;
90
- }
91
- </style>
92
- <style type="text/css" id="ycd-digit-font-size-<?php echo $id; ?>">
93
- .ycd-timer-time.ycd-timer-wrapper-<?php echo $id; ?> {
94
- font-size: <?php echo $fontSize ?>;
95
- }
96
- </style>
97
- <style type="text/css" id="ycd-timer-content-padding-<?php echo $id; ?>">
98
- .ycd-timer-content-wrapper-<?php echo $id; ?> {
99
- padding: <?php echo $timerContentPadding ?>;
100
- }
101
- </style>
102
- <style type="text/css" id="ycd-timer-content-padding-<?php echo $id; ?>">
103
- .ycd-countdown-wrapper .ycd-timer-start-stop-<?php echo $id; ?> {
104
- background-color: <?php echo $startStopBgColor ?>;
105
- color: <?php echo $startStopColor ?>;
106
- }
107
- .ycd-countdown-wrapper .ycd-timer-reset-<?php echo $id; ?> {
108
- background-color: <?php echo $resetBgColor ?>;
109
- color: <?php echo $resetColor ?>;
110
- }
111
- </style>
112
- <style type="text/css">
113
- .ycd-timer-wrapper-<?php echo $id; ?> .ycd-timer-box span {
114
- color: <?php echo $timerColor; ?> <?php echo $important; ?>;
115
- }
116
- .ycd-timer-wrapper-<?php echo $id; ?> {
117
- <?php echo 'background-image: url('.$imageUrl.'); background-repeat: '.$imageRepeat.'; background-size: '.$bgImageSize.'; '; ?>
118
- text-align: <?php echo $textAlign; ?>;
119
- }
120
- </style>
121
- <?php
122
- $styles = ob_get_contents();
123
- ob_end_clean();
124
-
125
- return $styles;
126
- }
127
 
128
  private function getTimerContent() {
129
  $id = $this->getId();
@@ -135,7 +136,7 @@ class TimerCountdown extends Countdown {
135
  $millisecondsClass = 'ycd-hide';
136
  if (!empty($enableMilliseconds)) {
137
  $millisecondsClass = '';
138
- }
139
 
140
  $startTitle = $this->getOptionValue('ycd-timer-button-start-title');
141
  $stopTitle = $this->getOptionValue('ycd-timer-button-stop-title');
@@ -144,36 +145,50 @@ class TimerCountdown extends Countdown {
144
  $resetButtonLabel = $this->getOptionValue('ycd-timer-reset-button-label');
145
  $stopButtonClassName = $this->getOptionValue('ycd-timer-button-stop-custom-class');
146
  $resetButtonClassName = $this->getOptionValue('ycd-timer-reset-button-class-name');
 
147
  $buttonTitle = ($autoCounting) ? $stopTitle: $startTitle;
 
 
 
 
 
148
  ob_start();
149
  ?>
150
- <div class="ycd-countdown-wrapper ycd-timer-content-wrapper-<?php echo esc_attr($id); ?>">
151
- <div class="ycd-timer-time ycd-timer-container ycd-timer-wrapper-<?php echo esc_attr($id); ?>" data-options='<?php echo $options; ?>' data-id="<?php echo esc_attr($id); ?>">
152
- <div class="timer-time-set ycd-timer-box" id="currentTime">
153
- <div class="ycd-timer-span-wrapper">
154
- <span id="ycdHoursValue" class="ycd-hours-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
155
- --><span class="ycd-dots">:</span><!--
156
- --><span id="ycdMinutesValue" class="ycd-minutes-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
157
- --><span class="ycd-dots">:</span><!--
158
- --><span id="ycdSecondsValue" class="ycd-seconds-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
159
- --><span class="ycd-milliseconds <?php echo $millisecondsClass; ?>">.</span><span class="ycd-milliseconds <?php echo $millisecondsClass; ?> ycd-milliseconds-value ycd-milliseconds-value-<?php echo esc_attr($id); ?>">000</span>
160
- </div>
161
- </div>
162
- <div class="timer-time-set ycd-timer-box" id="nextTime" style="opacity: 0;">
163
- <span id="ycdHoursNext"class="ycd-hours-next-value-<?php echo esc_attr($id); ?>">00</span><span>:</span><span id="ycdMinutesNext" class="ycd-minutes-next-value-<?php echo esc_attr($id); ?>">00</span><span>:</span><span id="ycdSecondsNext" class="ycd-seconds-next-value-<?php echo esc_attr($id); ?>">00</span>
164
- </div>
165
- </div>
166
- <div class="ycd-timmer-buttons ycd-timmer-buttons-<?php echo esc_attr($id); ?>">
167
- <?php if (!empty($timerButton)): ?>
168
- <button class="ycd-timer-start-stop ycd-timer-start-stop-<?php echo esc_attr($id); ?> <?php echo $stopButtonClassName; ?>" data-status="<?php echo esc_attr($autoCounting); ?>" data-start="<?php echo esc_attr($startTitle); ?>" data-stop="<?php echo esc_attr($stopTitle);?>"><?php echo esc_attr($buttonTitle); ?></button>
169
- <?php endif; ?>
170
- <?php if (!empty($resetButton)): ?>
171
- <button class="ycd-timer-reset ycd-timer-reset-<?php echo esc_attr($id); ?> <?php echo $resetButtonClassName; ?>"><?php echo esc_attr($resetButtonLabel); ?></button>
172
- <?php endif; ?>
173
- </div>
174
- <?php echo $this->renderSubscriptionForm(); ?>
175
- <?php echo $this->renderProgressBar(); ?>
176
- </div>
 
 
 
 
 
 
 
 
177
  <?php
178
  $content = ob_get_contents();
179
  $content .= $this->contentStyles();
@@ -187,7 +202,7 @@ class TimerCountdown extends Countdown {
187
  if(YCD_PKG_VERSION != YCD_FREE_VERSION) {
188
  ScriptsIncluder::registerScript('ycdGoogleFonts.js');
189
  ScriptsIncluder::enqueueScript('ycdGoogleFonts.js');
190
- }
191
 
192
  ScriptsIncluder::registerScript('ycdTimer.js');
193
  ScriptsIncluder::localizeScript('ycdTimer.js', 'YcdArgs', array('isAdmin' => is_admin()));
27
  );
28
  $defaultOptions = $this->changeDefaultOptionsByNames($defaultOptions, $changingOptions);
29
 
30
+ return $defaultOptions;
31
+ }
32
 
33
  public function metaboxes($metaboxes) {
34
  unset($metaboxes['generalOptions']);
52
  $allDataOptions = $this->getDataAllOptions();
53
 
54
  $options['id'] = $this->getId();
55
+ $options['days'] = $this->getOptionValue('ycd-timer-days');
56
  $options['hours'] = $this->getOptionValue('ycd-timer-hours');
57
  $options['minutes'] = $this->getOptionValue('ycd-timer-minutes');
58
  $options['seconds'] = $this->getOptionValue('ycd-timer-seconds');
83
  if(!is_admin()) {
84
  $important = '!important';
85
  }
86
+ ob_start();
87
+ ?>
88
+ <style type="text/css" id="ycd-digit-font-family-<?php echo $id; ?>">
89
+ .ycd-timer-wrapper-<?php echo $id; ?> .ycd-timer-box > span {
90
+ font-family: <?php echo $fontFamily ?>;
91
+ }
92
+ </style>
93
+ <style type="text/css" id="ycd-digit-font-size-<?php echo $id; ?>">
94
+ .ycd-timer-time.ycd-timer-wrapper-<?php echo $id; ?> {
95
+ font-size: <?php echo $fontSize ?>;
96
+ }
97
+ </style>
98
+ <style type="text/css" id="ycd-timer-content-padding-<?php echo $id; ?>">
99
+ .ycd-timer-content-wrapper-<?php echo $id; ?> {
100
+ padding: <?php echo $timerContentPadding ?>;
101
+ }
102
+ </style>
103
+ <style type="text/css" id="ycd-timer-content-padding-<?php echo $id; ?>">
104
+ .ycd-countdown-wrapper .ycd-timer-start-stop-<?php echo $id; ?> {
105
+ background-color: <?php echo $startStopBgColor ?>;
106
+ color: <?php echo $startStopColor ?>;
107
+ }
108
+ .ycd-countdown-wrapper .ycd-timer-reset-<?php echo $id; ?> {
109
+ background-color: <?php echo $resetBgColor ?>;
110
+ color: <?php echo $resetColor ?>;
111
+ }
112
+ </style>
113
+ <style type="text/css">
114
+ .ycd-timer-wrapper-<?php echo $id; ?> .ycd-timer-box span {
115
+ color: <?php echo $timerColor; ?> <?php echo $important; ?>;
116
+ }
117
+ .ycd-timer-wrapper-<?php echo $id; ?> {
118
+ <?php echo 'background-image: url('.$imageUrl.'); background-repeat: '.$imageRepeat.'; background-size: '.$bgImageSize.'; '; ?>
119
+ text-align: <?php echo $textAlign; ?>;
120
+ }
121
+ </style>
122
+ <?php
123
+ $styles = ob_get_contents();
124
+ ob_end_clean();
125
+
126
+ return $styles;
127
+ }
128
 
129
  private function getTimerContent() {
130
  $id = $this->getId();
136
  $millisecondsClass = 'ycd-hide';
137
  if (!empty($enableMilliseconds)) {
138
  $millisecondsClass = '';
139
+ }
140
 
141
  $startTitle = $this->getOptionValue('ycd-timer-button-start-title');
142
  $stopTitle = $this->getOptionValue('ycd-timer-button-stop-title');
145
  $resetButtonLabel = $this->getOptionValue('ycd-timer-reset-button-label');
146
  $stopButtonClassName = $this->getOptionValue('ycd-timer-button-stop-custom-class');
147
  $resetButtonClassName = $this->getOptionValue('ycd-timer-reset-button-class-name');
148
+ $timerDays = $this->getOptionValue('ycd-countdown-timer-days');
149
  $buttonTitle = ($autoCounting) ? $stopTitle: $startTitle;
150
+
151
+ $daysClassName = 'ycd-hide';
152
+ if (!empty($timerDays)) {
153
+ $daysClassName = '';
154
+ }
155
  ob_start();
156
  ?>
157
+ <div class="ycd-countdown-wrapper ycd-timer-content-wrapper-<?php echo esc_attr($id); ?>">
158
+ <div class="ycd-timer-time ycd-timer-container ycd-timer-wrapper-<?php echo esc_attr($id); ?>" data-options='<?php echo $options; ?>' data-id="<?php echo esc_attr($id); ?>">
159
+ <div class="timer-time-set ycd-timer-box" id="currentTime">
160
+ <div class="ycd-timer-span-wrapper">
161
+ <span id="ycdDaysValue" class="ycd-days-value-<?php echo esc_attr($id); ?> ycd-timer-number ycd-days-span <?php echo $daysClassName; ?>">00</span><!--
162
+ --><span class="ycd-dots ycd-days-span <?php echo $daysClassName; ?>">:</span><!--
163
+ --><span id="ycdHoursValue" class="ycd-hours-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
164
+ --><span class="ycd-dots">:</span><!--
165
+ --><span id="ycdMinutesValue" class="ycd-minutes-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
166
+ --><span class="ycd-dots">:</span><!--
167
+ --><span id="ycdSecondsValue" class="ycd-seconds-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
168
+ --><span class="ycd-milliseconds <?php echo $millisecondsClass; ?>">.</span><span class="ycd-milliseconds <?php echo $millisecondsClass; ?> ycd-milliseconds-value ycd-milliseconds-value-<?php echo esc_attr($id); ?>">000</span>
169
+ </div>
170
+ </div>
171
+ <div class="timer-time-set ycd-timer-box" id="nextTime" style="opacity: 0;">
172
+ <span id="ycdDaysNext" class="ycd-days-next-value-<?php echo esc_attr($id); ?> ycd-timer-number">00</span><!--
173
+ --><span class="ycd-dots">:</span><!--
174
+ --><span id="ycdHoursNext"class="ycd-hours-next-value-<?php echo esc_attr($id); ?>">00</span><!--
175
+ --><span>:</span><!--
176
+ --><span id="ycdMinutesNext" class="ycd-minutes-next-value-<?php echo esc_attr($id); ?>">00</span><!--
177
+ --><span>:</span><!--
178
+ --><span id="ycdSecondsNext" class="ycd-seconds-next-value-<?php echo esc_attr($id); ?>">00</span>
179
+ </div>
180
+ </div>
181
+ <div class="ycd-timmer-buttons ycd-timmer-buttons-<?php echo esc_attr($id); ?>">
182
+ <?php if (!empty($timerButton)): ?>
183
+ <button class="ycd-timer-start-stop ycd-timer-start-stop-<?php echo esc_attr($id); ?> <?php echo $stopButtonClassName; ?>" data-status="<?php echo esc_attr($autoCounting); ?>" data-start="<?php echo esc_attr($startTitle); ?>" data-stop="<?php echo esc_attr($stopTitle);?>"><?php echo esc_attr($buttonTitle); ?></button>
184
+ <?php endif; ?>
185
+ <?php if (!empty($resetButton)): ?>
186
+ <button class="ycd-timer-reset ycd-timer-reset-<?php echo esc_attr($id); ?> <?php echo $resetButtonClassName; ?>"><?php echo esc_attr($resetButtonLabel); ?></button>
187
+ <?php endif; ?>
188
+ </div>
189
+ <?php echo $this->renderSubscriptionForm(); ?>
190
+ <?php echo $this->renderProgressBar(); ?>
191
+ </div>
192
  <?php
193
  $content = ob_get_contents();
194
  $content .= $this->contentStyles();
202
  if(YCD_PKG_VERSION != YCD_FREE_VERSION) {
203
  ScriptsIncluder::registerScript('ycdGoogleFonts.js');
204
  ScriptsIncluder::enqueueScript('ycdGoogleFonts.js');
205
+ }
206
 
207
  ScriptsIncluder::registerScript('ycdTimer.js');
208
  ScriptsIncluder::localizeScript('ycdTimer.js', 'YcdArgs', array('isAdmin' => is_admin()));
config/config.php CHANGED
@@ -31,6 +31,7 @@ class YcdCountdownConfig {
31
  self::addDefine('YCD_VIEWS_PATH', YCD_ASSETS_PATH.'views/');
32
  self::addDefine('YCD_VIEWS_MAIN_PATH', YCD_VIEWS_PATH.'main/');
33
  self::addDefine('YCD_ADMIN_VIEWS_PATH', YCD_VIEWS_PATH.'admin/');
 
34
  self::addDefine('YCD_FRONT_VIEWS_PATH', YCD_VIEWS_PATH.'front/');
35
  self::addDefine('YCD_PREVIEW_VIEWS_PATH', YCD_VIEWS_PATH.'preview/');
36
  self::addDefine('YCD_CSS_PATH', YCD_ASSETS_PATH.'css/');
@@ -67,8 +68,8 @@ class YcdCountdownConfig {
67
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
68
  self::addDefine('YCD_AJAX_SUCCESS', 1);
69
  self::addDefine('YCD_TABLE_LIMIT', 15);
70
- self::addDefine('YCD_VERSION_PRO', 1.60);
71
- self::addDefine('YCD_VERSION', 1.74);
72
  self::addDefine('YCD_FREE_VERSION', 1);
73
  self::addDefine('YCD_SILVER_VERSION', 2);
74
  self::addDefine('YCD_GOLD_VERSION', 3);
31
  self::addDefine('YCD_VIEWS_PATH', YCD_ASSETS_PATH.'views/');
32
  self::addDefine('YCD_VIEWS_MAIN_PATH', YCD_VIEWS_PATH.'main/');
33
  self::addDefine('YCD_ADMIN_VIEWS_PATH', YCD_VIEWS_PATH.'admin/');
34
+ self::addDefine('YCD_ADMIN_COMING_VIEWS_PATH', YCD_ADMIN_VIEWS_PATH.'comingSoon/');
35
  self::addDefine('YCD_FRONT_VIEWS_PATH', YCD_VIEWS_PATH.'front/');
36
  self::addDefine('YCD_PREVIEW_VIEWS_PATH', YCD_VIEWS_PATH.'preview/');
37
  self::addDefine('YCD_CSS_PATH', YCD_ASSETS_PATH.'css/');
68
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
69
  self::addDefine('YCD_AJAX_SUCCESS', 1);
70
  self::addDefine('YCD_TABLE_LIMIT', 15);
71
+ self::addDefine('YCD_VERSION_PRO', 1.61);
72
+ self::addDefine('YCD_VERSION', 1.75);
73
  self::addDefine('YCD_FREE_VERSION', 1);
74
  self::addDefine('YCD_SILVER_VERSION', 2);
75
  self::addDefine('YCD_GOLD_VERSION', 3);
config/optionsConfig.php CHANGED
@@ -167,6 +167,7 @@ class YcdCountdownOptionsConfig {
167
  $options[] = array('name' => 'ycd-countdown-save-duration-each-user', 'type' => 'checkbox', 'defaultValue' => '');
168
  $options[] = array('name' => 'ycd-countdown-restart', 'type' => 'checkbox', 'defaultValue' => '');
169
  $options[] = array('name' => 'ycd-countdown-restart-hour', 'type' => 'text', 'defaultValue' => '1');
 
170
  $options[] = array('name' => 'ycd-timer-hours', 'type' => 'number', 'defaultValue' => 0);
171
  $options[] = array('name' => 'ycd-timer-minutes', 'type' => 'number', 'defaultValue' => 0);
172
  $options[] = array('name' => 'ycd-timer-seconds', 'type' => 'number', 'defaultValue' => 30);
@@ -238,6 +239,7 @@ class YcdCountdownOptionsConfig {
238
  $options[] = array('name' => 'ycd-countdown-clock-mode', 'type' => 'text', 'defaultValue' => 'clock');
239
  $options[] = array('name' => 'ycd-countdown-timer-button', 'type' => 'checkbox', 'defaultValue' => '');
240
  $options[] = array('name' => 'ycd-countdown-timer-milliseconds', 'type' => 'checkbox', 'defaultValue' => '');
 
241
  $options[] = array('name' => 'ycd-timer-auto-counting', 'type' => 'checkbox', 'defaultValue' => 'on');
242
  $options[] = array('name' => 'ycd-timer-button-start-title', 'type' => 'text', 'defaultValue' => __('Start', YCD_TEXT_DOMAIN));
243
  $options[] = array('name' => 'ycd-timer-button-stop-title', 'type' => 'text', 'defaultValue' => __('Stop', YCD_TEXT_DOMAIN));
167
  $options[] = array('name' => 'ycd-countdown-save-duration-each-user', 'type' => 'checkbox', 'defaultValue' => '');
168
  $options[] = array('name' => 'ycd-countdown-restart', 'type' => 'checkbox', 'defaultValue' => '');
169
  $options[] = array('name' => 'ycd-countdown-restart-hour', 'type' => 'text', 'defaultValue' => '1');
170
+ $options[] = array('name' => 'ycd-timer-days', 'type' => 'number', 'defaultValue' => 0);
171
  $options[] = array('name' => 'ycd-timer-hours', 'type' => 'number', 'defaultValue' => 0);
172
  $options[] = array('name' => 'ycd-timer-minutes', 'type' => 'number', 'defaultValue' => 0);
173
  $options[] = array('name' => 'ycd-timer-seconds', 'type' => 'number', 'defaultValue' => 30);
239
  $options[] = array('name' => 'ycd-countdown-clock-mode', 'type' => 'text', 'defaultValue' => 'clock');
240
  $options[] = array('name' => 'ycd-countdown-timer-button', 'type' => 'checkbox', 'defaultValue' => '');
241
  $options[] = array('name' => 'ycd-countdown-timer-milliseconds', 'type' => 'checkbox', 'defaultValue' => '');
242
+ $options[] = array('name' => 'ycd-countdown-timer-days', 'type' => 'checkbox', 'defaultValue' => '');
243
  $options[] = array('name' => 'ycd-timer-auto-counting', 'type' => 'checkbox', 'defaultValue' => 'on');
244
  $options[] = array('name' => 'ycd-timer-button-start-title', 'type' => 'text', 'defaultValue' => __('Start', YCD_TEXT_DOMAIN));
245
  $options[] = array('name' => 'ycd-timer-button-stop-title', 'type' => 'text', 'defaultValue' => __('Stop', YCD_TEXT_DOMAIN));
countdown-builder.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
  * Plugin Name: Countdown builder
4
- * Description: The best countdown plugin
5
- * Version: 1.7.4
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
1
  <?php
2
  /**
3
  * Plugin Name: Countdown builder
4
+ * Description: The best countdown plugin by Adam skaat
5
+ * Version: 1.7.5
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
helpers/AdminHelper.php CHANGED
@@ -278,6 +278,48 @@ class AdminHelper {
278
  ),
279
  )
280
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
 
282
  $data['woo-show-products'] = array(
283
  'template' => array(
278
  ),
279
  )
280
  );
281
+
282
+ $data['comingSoonModes'] =array(
283
+ 'template' => array(
284
+ 'fieldWrapperAttr' => array(
285
+ 'class' => 'col-md-6 ycd-choice-option-wrapper'
286
+ ),
287
+ 'labelAttr' => array(
288
+ 'class' => 'col-md-6 ycd-choice-option-wrapper'
289
+ ),
290
+ 'groupWrapperAttr' => array(
291
+ 'class' => 'row form-group ycd-choice-wrapper'
292
+ )
293
+ ),
294
+ 'buttonPosition' => 'right',
295
+ 'nextNewLine' => true,
296
+ 'fields' => array(
297
+ array(
298
+ 'attr' => array(
299
+ 'type' => 'radio',
300
+ 'name' => 'ycd-coming-soon-mode',
301
+ 'class' => 'ycd-coming-soon-maintenance ycd-form-radio',
302
+ 'data-attr-href' => 'ycd-coming-soon-redirect',
303
+ 'value' => 'comingSoonMode'
304
+ ),
305
+ 'label' => array(
306
+ 'name' => __('Coming soon', YCD_TEXT_DOMAIN)
307
+ )
308
+ ),
309
+ array(
310
+ 'attr' => array(
311
+ 'type' => 'radio',
312
+ 'name' => 'ycd-coming-soon-mode',
313
+ 'class' => 'ycd-coming-soon-maintenance ycd-form-radio',
314
+ 'data-attr-href' => 'ycd-coming-soon-maintenance',
315
+ 'value' => 'maintenanceMode'
316
+ ),
317
+ 'label' => array(
318
+ 'name' => __('Maintenance', YCD_TEXT_DOMAIN)
319
+ )
320
+ )
321
+ )
322
+ );
323
 
324
  $data['woo-show-products'] = array(
325
  'template' => array(
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
- === Countdown, Coming Soon - Countdown & Clock ===
2
  Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.4
6
- Stable tag: 1.7.4
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -65,6 +65,12 @@ Yes you can, we have Circle and Flipclock countdown popups.
65
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
66
 
67
  == Changelog ==
 
 
 
 
 
 
68
  = 1.7.4 =
69
  * Timer start button Custom class name (new)
70
  * Timer reset button Custom class name (new)
1
+ === Countdown, Coming Soon, Maintenance - Countdown & Clock ===
2
  Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.4
6
+ Stable tag: 1.7.5
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
65
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
66
 
67
  == Changelog ==
68
+ = 1.7.5 =
69
+ * New Maintenance mode (new)
70
+ * Timer days option (new)
71
+ * Support metabox coming soon section
72
+ * Bug fixes
73
+
74
  = 1.7.4 =
75
  * Timer start button Custom class name (new)
76
  * Timer reset button Custom class name (new)