Under Construction - Version 2.60

Version Description

  • 2017/10/02
  • continuing with UX improvements
  • minor code improvements
  • new theme - Bulldozer
  • new survey - How do you use UCP?
  • added deactivation survey
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Under Construction
Version 2.60
Comparing to
See all releases

Code changes from version 2.55 to 2.60

css/ucp-admin-plugins.css ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * UnderConstructionPage
3
+ * Backend CSS - plugin deactivation survey
4
+ * (c) Web factory Ltd, 2015 - 2017
5
+ */
6
+
7
+ @import url('//fonts.googleapis.com/css?family=Roboto:900');
8
+
9
+ .ui-widget-overlay {
10
+ opacity: 0.85;
11
+ }
12
+
13
+ .ucp-survey-dialog .ui-dialog-titlebar {
14
+ text-align: center;
15
+ font-weight: bold;
16
+ }
17
+
18
+ .ucp-survey-dialog .ui-dialog-content {
19
+ padding: 20px 25px;
20
+ font-size: 15px;
21
+ }
22
+
23
+ .ucp-survey-dialog b {
24
+ font-weight: bold;
25
+ }
26
+
27
+ .ucp-survey-dialog .footer {
28
+ margin: 20px 0 0 0;
29
+ text-align: center;
30
+ }
31
+
32
+ .ucp-survey-dialog .footer #emailme {
33
+ margin: 0 5px -3px 0;
34
+ }
35
+
36
+ .ucp-survey-dialog .footer .button {
37
+ border-radius: 0;
38
+ font-size: 15px;
39
+ box-shadow: none;
40
+ text-shadow: none;
41
+ margin-top: 5px;
42
+ }
43
+
44
+ .ucp-survey-dialog .footer .dismiss-survey {
45
+ padding-top: 25px;
46
+ display: block;
47
+ }
48
+
49
+ .ucp-survey-dialog .ui-dialog-content p {
50
+ margin: 0 0 20px 0;
51
+ font-size: 15px;
52
+ }
53
+
54
+ .ucp-survey-dialog .question-wrapper {
55
+ border: 2px solid rgba(0,0,0,0.2);
56
+ padding: 15px 10px;
57
+ background-color: rgba(250,250,250,0.55);
58
+ margin-bottom: 5px;
59
+ opacity: 0.75;
60
+ width: 100%;
61
+ display: inline-block;
62
+ text-align: center;
63
+ box-sizing: border-box;
64
+ }
65
+
66
+ .ucp-survey-dialog .question-wrapper .details {
67
+ display: none;
68
+ }
69
+
70
+ .ucp-survey-dialog .question-wrapper:hover {
71
+ opacity: 1;
72
+ border: 2px solid rgba(0, 142, 194, 1);
73
+ cursor: pointer;
74
+ font-weight: 500;
75
+ }
76
+
77
+ .ucp-survey-dialog .question-wrapper.selected {
78
+ opacity: 1;
79
+ border: 2px solid rgba(0, 142, 194, 1);
80
+ font-weight: 500;
81
+ }
82
+
83
+ .ucp-survey-dialog .question-wrapper.selected .details {
84
+ display: block;
85
+ font-weight: 400;
86
+ }
87
+
88
+ .ucp-survey-dialog .question-wrapper b {
89
+ font-weight: bold;
90
+ font-size: 14px;
91
+ }
92
+
93
+ .ucp-survey-dialog .question-wrapper .dashicons.big {
94
+ color: rgba(0, 0, 0, 1);
95
+ display: inline;
96
+ height: 61px;
97
+ font-size: 61px;
98
+ margin-bottom: 10px;
99
+ }
100
+
101
+ .ucp-survey-dialog .question-wrapper img {
102
+ margin-bottom: 10px;
103
+ height: 50px;
104
+ }
105
+
106
+ .ucp-survey-dialog .question-wrapper .question {
107
+ display: inline-block;
108
+ width: 100%;
109
+ }
110
+
111
+ .ucp-survey-dialog .question-wrapper i {
112
+ padding-top: 5px;
113
+ font-size: 14px;
114
+ }
115
+
116
+ .ucp-logo {
117
+ font-variant: small-caps;
118
+ font-family: Roboto, sans-serif;
119
+ font-weight: 900;
120
+ }
css/ucp-admin.css CHANGED
@@ -4,7 +4,7 @@
4
  * (c) Web factory Ltd, 2015 - 2017
5
  */
6
 
7
- @import url('//fonts.googleapis.com/css?family=Roboto:900');
8
 
9
  .settings_page_ucp h1 {
10
  margin-bottom: 30px;
@@ -54,6 +54,11 @@ p.submit {
54
  opacity: 0.6;
55
  }
56
 
 
 
 
 
 
57
  .button span {
58
  display: none;
59
  }
@@ -83,10 +88,10 @@ p.submit {
83
  }
84
 
85
  div.ucp-thumb, .ucp-thumb-special {
86
- max-width: 300px;
87
  width: calc(31% - 20px);
88
- margin: 0 10px 5px 0;
89
- display: inline-block;
90
  text-align: center;
91
  padding: 10px;
92
  border: 2px solid transparent;
@@ -242,13 +247,14 @@ span.select2-container .select2-search--inline .select2-search__field {
242
 
243
  .question-wrapper {
244
  border: 2px solid rgba(0,0,0,0.2);
245
- padding: 10px;
246
  background-color: rgba(250,250,250,0.55);
247
  margin-bottom: 5px;
248
  opacity: 0.75;
249
- width: 29%;
250
  display: inline-block;
251
  text-align: center;
 
252
  }
253
 
254
  .question-wrapper:hover {
@@ -313,7 +319,7 @@ span.select2-container .select2-search--inline .select2-search__field {
313
  .settings_page_ucp .ui-tabs .ui-tabs-nav li { list-style: none; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
314
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a { text-decoration: none; }
315
  .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; border-bottom: 1px solid #F1F1F1 !important; }
316
- .settings_page_ucp .ui-tabs ul.ui-tabs-nav li.ui-state-active { border-top: 3px solid #FF7900; background: #ffffff; }
317
  .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
318
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a, .settings_page_ucp .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
319
  .settings_page_ucp .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 20px; background: #ffffff; }
@@ -329,10 +335,6 @@ span.select2-container .select2-search--inline .select2-search__field {
329
  letter-spacing: 1px;
330
  }
331
 
332
- .settings_page_ucp .ui-tabs ul.ui-tabs-nav li.ui-state-active {
333
- border-top: 3px solid #FF7900;
334
- }
335
-
336
  .settings_page_ucp .ui-tabs ul.ui-tabs-nav li.ui-state-active .icon {
337
  color: #FF7900;
338
  }
@@ -372,7 +374,7 @@ span.select2-container .select2-search--inline .select2-search__field {
372
  margin-left: 0;
373
  }
374
 
375
- .settings_page_ucp ul.ui-tabs-nav{
376
  padding-bottom: 0;
377
  width: 100%;
378
  box-sizing: border-box;
@@ -393,13 +395,52 @@ span.select2-container .select2-search--inline .select2-search__field {
393
  }
394
 
395
  #ucp_tabs li span.dashicons-star-filled {
396
- color: #FFC107;
397
  }
398
 
399
  .ucp-tab-content {
400
  max-width: 1050px;
401
  }
402
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  @media screen and (max-width: 782px) {
404
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a {
405
  padding: 5px 10px;
@@ -540,9 +581,13 @@ Any+Time is a trademark of Andrew M. Andrews III */
540
  #ucp-earlybird span {
541
  text-align: center;
542
  display: block;
543
- font-weight: bold;
544
  font-family: Roboto, sans-serif;
545
- font-size: 14px;
 
 
 
 
 
546
  }
547
 
548
  #ucp-earlybird p {
@@ -581,4 +626,4 @@ h3.ucp-pro-logo span {
581
  color: #FF7900;
582
  vertical-align: super;
583
  font-size: smaller;
584
- }
4
  * (c) Web factory Ltd, 2015 - 2017
5
  */
6
 
7
+ @import url('//fonts.googleapis.com/css?family=Roboto:900');
8
 
9
  .settings_page_ucp h1 {
10
  margin-bottom: 30px;
54
  opacity: 0.6;
55
  }
56
 
57
+ .settings_page_ucp button, .settings_page_ucp .button-primary, .settings_page_ucp .button-secondary {
58
+ -webkit-border-radius: 0;
59
+ border-radius: 0;
60
+ }
61
+
62
  .button span {
63
  display: none;
64
  }
88
  }
89
 
90
  div.ucp-thumb, .ucp-thumb-special {
91
+ max-width: 300px;
92
  width: calc(31% - 20px);
93
+ margin: 0 10px 5px 0;
94
+ display: inline-block;
95
  text-align: center;
96
  padding: 10px;
97
  border: 2px solid transparent;
247
 
248
  .question-wrapper {
249
  border: 2px solid rgba(0,0,0,0.2);
250
+ padding: 15px 10px;
251
  background-color: rgba(250,250,250,0.55);
252
  margin-bottom: 5px;
253
  opacity: 0.75;
254
+ width: 100%;
255
  display: inline-block;
256
  text-align: center;
257
+ box-sizing: border-box;
258
  }
259
 
260
  .question-wrapper:hover {
319
  .settings_page_ucp .ui-tabs .ui-tabs-nav li { list-style: none; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
320
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a { text-decoration: none; }
321
  .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; border-bottom: 1px solid #F1F1F1 !important; }
322
+ .settings_page_ucp ul.ui-tabs-nav.ucp-main-tab li.ui-state-active { border-top: 3px solid #FF7900; background: #ffffff; }
323
  .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .settings_page_ucp .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
324
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a, .settings_page_ucp .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
325
  .settings_page_ucp .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 20px; background: #ffffff; }
335
  letter-spacing: 1px;
336
  }
337
 
 
 
 
 
338
  .settings_page_ucp .ui-tabs ul.ui-tabs-nav li.ui-state-active .icon {
339
  color: #FF7900;
340
  }
374
  margin-left: 0;
375
  }
376
 
377
+ .settings_page_ucp ul.ui-tabs-nav.ucp-main-tab {
378
  padding-bottom: 0;
379
  width: 100%;
380
  box-sizing: border-box;
395
  }
396
 
397
  #ucp_tabs li span.dashicons-star-filled {
398
+ color: #FFC107;
399
  }
400
 
401
  .ucp-tab-content {
402
  max-width: 1050px;
403
  }
404
 
405
+ .settings_page_ucp .ucp-tabs-2nd-level {
406
+ margin: 0;
407
+ }
408
+
409
+ .settings_page_ucp .ucp-tabs-2nd-level ul.ui-tabs-nav li a {
410
+ padding: 0 5px;
411
+ margin: 0 0 -1px 0;
412
+ font-size: 1.3em;
413
+ font-weight: 600;
414
+ border-bottom: 2px solid transparent;
415
+ }
416
+
417
+ .settings_page_ucp .ucp-tabs-2nd-level ul.ui-tabs-nav li {
418
+ margin: 0 10px 1px 10px;
419
+ min-width: initial;
420
+ }
421
+
422
+ .settings_page_ucp .ucp-tabs-2nd-level ul.ui-tabs-nav {
423
+ border-bottom: 1px solid #dddddd;
424
+ }
425
+
426
+ s.settings_page_ucp .ucp-tabs-2nd-level li.ui-state-active a:before {
427
+ display: inline-block;
428
+ content: " ";
429
+ position: absolute;
430
+ width: 100%;
431
+ height: 2px;
432
+ background: #23282d;
433
+ bottom: 0;
434
+ }
435
+
436
+ .settings_page_ucp .ucp-tabs-2nd-level ul.ui-tabs-nav li.ui-state-active a {
437
+ border-bottom: 2px solid black;
438
+ }
439
+
440
+ .ucp-tabs-2nd-level .form-table {
441
+ margin: 0;
442
+ }
443
+
444
  @media screen and (max-width: 782px) {
445
  .settings_page_ucp .ui-tabs .ui-tabs-nav li a {
446
  padding: 5px 10px;
581
  #ucp-earlybird span {
582
  text-align: center;
583
  display: block;
 
584
  font-family: Roboto, sans-serif;
585
+ font-size: 18px;
586
+ line-height: 200%;
587
+ }
588
+
589
+ #ucp-earlybird span b {
590
+ color: #ff7920;
591
  }
592
 
593
  #ucp-earlybird p {
626
  color: #FF7900;
627
  vertical-align: super;
628
  font-size: smaller;
629
+ }
images/thumbnails/bulldozer.png ADDED
Binary file
js/ucp-admin-plugins.js CHANGED
@@ -1,18 +1,97 @@
1
  /*
2
  * UnderConstructionPage
3
- * Backend plugins enhancement
4
  * (c) Web factory Ltd, 2015 - 2017
5
  */
6
 
7
 
8
  jQuery(function($) {
9
  // ask users to confirm plugin deactivation
10
- $('#the-list tr[data-slug="under-construction-page"] span.deactivate a').on('click', function(e) {
11
- if (confirm(ucp.deactivate_confirmation)) {
12
- return true;
13
- } else {
14
- e.preventDefault();
15
- return false;
16
- }
17
  }); // confirm plugin deactivation
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }); // onload
1
  /*
2
  * UnderConstructionPage
3
+ * Plugin deactivation survey
4
  * (c) Web factory Ltd, 2015 - 2017
5
  */
6
 
7
 
8
  jQuery(function($) {
9
  // ask users to confirm plugin deactivation
10
+ $('#the-list tr span.deactivate a[data-under-construction-page="true"]').on('click', function(e) {
11
+ $('#ucp-deactivate-survey').dialog('open');
12
+
13
+ e.preventDefault();
14
+ return false;
 
 
15
  }); // confirm plugin deactivation
16
+
17
+
18
+ // turn questions into checkboxes
19
+ $('#ucp-deactivate-survey').on('click', '.question-wrapper', function(e) {
20
+ $('#ucp-deactivate-survey .question-wrapper').removeClass('selected');
21
+ $(this).addClass('selected');
22
+
23
+ if ($('input', this).length) {
24
+ $('input', this).focus();
25
+ }
26
+
27
+ e.preventDefault();
28
+ return false;
29
+ });
30
+
31
+
32
+ // cancel deactivation - close dialog
33
+ $('.ucp-cancel-deactivate').on('click', function(e) {
34
+ $('#ucp-deactivate-survey').dialog('close');
35
+
36
+ return false;
37
+ }); // close dialog
38
+
39
+
40
+ // just deactivate - don't provide feedback
41
+ $('.ucp-deactivate-direct').on('click', function(e) {
42
+ deactivate_link = $('#the-list tr span.deactivate a[data-under-construction-page="true"]').attr('href');
43
+
44
+ location.href = deactivate_link;
45
+ $('#ucp-deactivate-survey').dialog('close');
46
+
47
+ return false;
48
+ }); // deactivate
49
+
50
+
51
+ // deactivate + feedback
52
+ $('.ucp-deactivate').on('click', function(e) {
53
+ e.preventDefault();
54
+
55
+ if ($('#ucp-deactivate-survey .question-wrapper.selected').length != 1) {
56
+ alert('Please select a reason you\'re deactivating UCP.');
57
+ return false;
58
+ }
59
+
60
+ answer = $('#ucp-deactivate-survey .question-wrapper.selected').data('value');
61
+ answer += '-' + $('#ucp-deactivate-survey .question-wrapper').index($('#ucp-deactivate-survey .question-wrapper.selected'));
62
+ custom_answer = $('#ucp-deactivate-survey .question-wrapper.selected .ucp-deactivation-details').val();
63
+
64
+ $.post(ajaxurl, { survey: $(this).data('survey'),
65
+ answers: answer,
66
+ emailme: '',
67
+ custom_answer: custom_answer,
68
+ _ajax_nonce: ucp.nonce_submit_survey,
69
+ action: 'ucp_submit_survey'
70
+ });
71
+
72
+
73
+ alert('Thank you for your input! The plugin will now deactivate.');
74
+ $('#ucp-deactivate-survey').dialog('close');
75
+
76
+ deactivate_link = $('#the-list tr span.deactivate a[data-under-construction-page="true"]').attr('href');
77
+ location.href = deactivate_link;
78
+
79
+ return false;
80
+ }); // deactivate + feedback
81
+
82
+
83
+ // init deactivate survey dialog
84
+ $('#ucp-deactivate-survey').dialog({'dialogClass': 'wp-dialog ucp-survey-dialog ucp-deactivate-dialog',
85
+ 'modal': 1,
86
+ 'resizable': false,
87
+ 'zIndex': 9999,
88
+ 'width': 550,
89
+ 'height': 'auto',
90
+ 'show': 'fade',
91
+ 'hide': 'fade',
92
+ 'open': function(event, ui) { },
93
+ 'close': function(event, ui) { },
94
+ 'autoOpen': false,
95
+ 'closeOnEscape': true
96
+ });
97
  }); // onload
js/ucp-admin.js CHANGED
@@ -11,10 +11,20 @@ jQuery(document).ready(function($) {
11
  // init tabs
12
  $('#ucp_tabs').tabs({
13
  activate: function(event, ui) {
14
- Cookies.set('ucp_tabs_selected', $('#ucp_tabs').tabs('option', 'active'), { expires: 180 });
15
  },
16
- active: $('#ucp_tabs').tabs({ active: Cookies.get('ucp_tabs_selected') })
17
  }).show();
 
 
 
 
 
 
 
 
 
 
18
 
19
  // init select2
20
  $('#whitelisted_users').select2({ 'placeholder': ucp.whitelisted_users_placeholder});
@@ -34,7 +44,7 @@ jQuery(document).ready(function($) {
34
  'modal': 1,
35
  'resizable': false,
36
  'zIndex': 9999,
37
- 'width': 705,
38
  'height': 'auto',
39
  'show': 'fade',
40
  'hide': 'fade',
@@ -72,19 +82,16 @@ jQuery(document).ready(function($) {
72
  // submit and hide survey
73
  $('.submit-survey').on('click', function(e) {
74
  if ($('.question-wrapper.selected').length != 1) {
75
- alert('Please choose your preferred autoresponder service.');
76
  return false;
77
  }
78
 
79
- answers = '';
80
- $('.question-wrapper.selected').each(function(i, el) {
81
- answers += $(el).data('value') + ',';
82
- });
83
-
84
  $.post(ajaxurl, { survey: $(this).data('survey'),
85
  answers: answers,
86
  emailme: $('#features-survey-dialog #emailme:checked').val(),
87
- custom_answer: '',
88
  _ajax_nonce: ucp.nonce_submit_survey,
89
  action: 'ucp_submit_survey'
90
  });
@@ -102,14 +109,14 @@ jQuery(document).ready(function($) {
102
  e.preventDefault();
103
  button = $(this);
104
 
105
- if ($('#support_email').val().length < 5 || $('#support_email').is(':invalid')) {
106
  alert('We need your email address, don\'t you think?');
107
  $('#support_email').select().focus();
108
  return false;
109
  }
110
 
111
  if ($('#support_message').val().length < 15) {
112
- alert('An empty message won\'t do anybody any good.');
113
  $('#support_message').select().focus();
114
  return false;
115
  }
@@ -124,7 +131,7 @@ jQuery(document).ready(function($) {
124
  if (data.success) {
125
  alert('Message sent! Our agents will get back to you ASAP.');
126
  } else {
127
- alert(data.message);
128
  }
129
  }).fail(function() {
130
  alert('Something is not right. Please reload the page and try again');
@@ -160,7 +167,7 @@ jQuery(document).ready(function($) {
160
  action: 'ucp_submit_earlybird'},
161
  function(data) {
162
  if (data.success) {
163
- alert('You made it on the list! Expect an email from us soon!');
164
  } else {
165
  alert(data.message);
166
  }
@@ -173,6 +180,14 @@ jQuery(document).ready(function($) {
173
  return false;
174
  }); // earlybird list
175
 
 
 
 
 
 
 
 
 
176
 
177
  // select theme via thumb
178
  $('.ucp-thumb').on('click', function(e) {
@@ -242,9 +257,24 @@ jQuery(document).ready(function($) {
242
  return false;
243
  }
244
  }
245
-
246
  return true;
247
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
 
249
 
250
  // show all social icons
11
  // init tabs
12
  $('#ucp_tabs').tabs({
13
  activate: function(event, ui) {
14
+ Cookies.set('ucp_tabs', $('#ucp_tabs').tabs('option', 'active'), { expires: 365 });
15
  },
16
+ active: Cookies.get('ucp_tabs')
17
  }).show();
18
+
19
+ // init 2nd level of tabs
20
+ $('.ucp-tabs-2nd-level').each(function() {
21
+ $(this).tabs({
22
+ activate: function(event, ui) {
23
+ Cookies.set($(this).attr('id'), $(this).tabs('option', 'active'), { expires: 365 });
24
+ },
25
+ active: Cookies.get($(this).attr('id'))
26
+ });
27
+ });
28
 
29
  // init select2
30
  $('#whitelisted_users').select2({ 'placeholder': ucp.whitelisted_users_placeholder});
44
  'modal': 1,
45
  'resizable': false,
46
  'zIndex': 9999,
47
+ 'width': 550,
48
  'height': 'auto',
49
  'show': 'fade',
50
  'hide': 'fade',
82
  // submit and hide survey
83
  $('.submit-survey').on('click', function(e) {
84
  if ($('.question-wrapper.selected').length != 1) {
85
+ alert('Please choose the way you use UCP.');
86
  return false;
87
  }
88
 
89
+ answers = $('.question-wrapper.selected').data('value');
90
+ answers += '-' + $('.question-wrapper').index($('.question-wrapper.selected'));
91
+
 
 
92
  $.post(ajaxurl, { survey: $(this).data('survey'),
93
  answers: answers,
94
  emailme: $('#features-survey-dialog #emailme:checked').val(),
 
95
  _ajax_nonce: ucp.nonce_submit_survey,
96
  action: 'ucp_submit_survey'
97
  });
109
  e.preventDefault();
110
  button = $(this);
111
 
112
+ if ($('#support_email').val().length < 5 || /\S+@\S+\.\S+/.test($('#support_email').val()) == false) {
113
  alert('We need your email address, don\'t you think?');
114
  $('#support_email').select().focus();
115
  return false;
116
  }
117
 
118
  if ($('#support_message').val().length < 15) {
119
+ alert('A message that short won\'t do anybody any good.');
120
  $('#support_message').select().focus();
121
  return false;
122
  }
131
  if (data.success) {
132
  alert('Message sent! Our agents will get back to you ASAP.');
133
  } else {
134
+ alert(data.data);
135
  }
136
  }).fail(function() {
137
  alert('Something is not right. Please reload the page and try again');
167
  action: 'ucp_submit_earlybird'},
168
  function(data) {
169
  if (data.success) {
170
+ alert('You\'re on the list ;) Expect an email from us soon!');
171
  } else {
172
  alert(data.message);
173
  }
180
  return false;
181
  }); // earlybird list
182
 
183
+ // fix for enter press in support email
184
+ $('#support_email').on('keypress', function(e) {
185
+ if (e.which == 13) {
186
+ e.preventDefault();
187
+ $('#ucp-send-support-message').trigger('click');
188
+ return false;
189
+ }
190
+ }); // if enter on support email
191
 
192
  // select theme via thumb
193
  $('.ucp-thumb').on('click', function(e) {
257
  return false;
258
  }
259
  }
260
+
261
  return true;
262
  });
263
+
264
+
265
+ // check if there are invalid fields
266
+ // assume they are social icons
267
+ $('.settings_page_ucp .wrap').on('click', '#submit', function(e) {
268
+ if ($('#ucp_form input:invalid').not('.skip-save').length) {
269
+ $('#ucp_tabs').tabs('option', 'active', 2);
270
+ $('#ucp_form input:invalid').first().focus();
271
+ alert('Please correct the errors before saving.');
272
+
273
+ return false;
274
+ }
275
+
276
+ return true;
277
+ }); // form submit
278
 
279
 
280
  // show all social icons
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: maintenance mode, maintenance page, coming soon page, landing page, under
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
  Tested up to: 4.8
7
- Stable tag: 2.55
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -110,15 +110,24 @@ Or if needed, upload manually;
110
  24. Setup theme
111
  25. Stop theme
112
  26. Clock theme
113
- 27. Main settings
114
- 28. Design settings
115
- 29. Content settings
116
- 30. Access settings
117
- 31. Support
 
118
 
119
 
120
  == Changelog ==
121
 
 
 
 
 
 
 
 
 
122
  = 2.55 =
123
  * 2017/09/18
124
  * big UX improvements and more coming soon
4
  Requires at least: 4.0
5
  Requires PHP: 5.2
6
  Tested up to: 4.8
7
+ Stable tag: 2.60
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
110
  24. Setup theme
111
  25. Stop theme
112
  26. Clock theme
113
+ 27. Bulldozer theme
114
+ 28. Main settings
115
+ 29. Design settings
116
+ 30. Content settings
117
+ 31. Access settings
118
+ 32. Support
119
 
120
 
121
  == Changelog ==
122
 
123
+ = 2.60 =
124
+ * 2017/10/02
125
+ * continuing with UX improvements
126
+ * minor code improvements
127
+ * new theme - Bulldozer
128
+ * new survey - How do you use UCP?
129
+ * added deactivation survey
130
+
131
  = 2.55 =
132
  * 2017/09/18
133
  * big UX improvements and more coming soon
themes/bulldozer/bulldozer.png ADDED
Binary file
themes/bulldozer/index.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * UnderConstructionPage
4
+ * Bulldozer theme
5
+ * (c) Web factory Ltd, 2015 - 2017
6
+ */
7
+
8
+
9
+ // this is an include only WP file
10
+ if (!defined('ABSPATH')) {
11
+ die;
12
+ }
13
+ ?>
14
+ <!DOCTYPE html>
15
+ <html lang="en">
16
+ <head>
17
+ <meta charset="utf-8">
18
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
19
+ <meta name="viewport" content="width=device-width, initial-scale=1">
20
+ <title>[title]</title>
21
+ <meta name="description" content="[description]">
22
+ <meta name="generator" content="[generator]">
23
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:400,900">
24
+ [head]
25
+ </head>
26
+
27
+ <body>
28
+ <div class="container">
29
+ <div class="row">
30
+ <div class="col-xs-12 col-md-12 col-lg-12">
31
+ <h1>[heading1]</h1>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <div id="hero-image">
37
+ <img src="[theme-url]bulldozer.png" alt="Bulldozer at Work" title="Bulldozer at Work">
38
+ </div>
39
+ <div class="container">
40
+
41
+ <div class="row">
42
+ <div class="col-xs-12 col-md-8 col-md-offset-2 col-lg-offset-2 col-lg-8">
43
+ <p class="content">[content]</p>
44
+ </div>
45
+ </div>
46
+
47
+ <div class="row" id="social">
48
+ <div class="col-xs-12 col-md-12 col-lg-12">
49
+ [social-icons]
50
+ </div>
51
+ </div>
52
+
53
+ </div>
54
+ [footer]
55
+ </body>
56
+ </html>
themes/bulldozer/style.css ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * UnderConstructionPage
3
+ * Bulldozer theme CSS
4
+ * (c) Web factory Ltd, 2015 - 2017
5
+ */
6
+
7
+
8
+ html {
9
+ height: 100%;
10
+ padding: 0;
11
+ margin: 0;
12
+ }
13
+
14
+ body {
15
+ font-weight: 400;
16
+ font-size: 14px;
17
+ line-height: 120%;
18
+ color: #414042;
19
+ background: linear-gradient(to bottom, #9be2fe 0%, #67d1fb 100%);
20
+ padding: 0;
21
+ margin: 0;
22
+ background-repeat: repeat;
23
+ background-attachment: fixed;
24
+ }
25
+
26
+ #hero-image {
27
+ text-align: center;
28
+ margin: 20px auto 40px auto;
29
+ border-bottom: 2px solid rgba(0, 0, 0, 0.9);
30
+ }
31
+
32
+ #hero-image img {
33
+ max-width: 80%;
34
+ }
35
+
36
+ h1 {
37
+ font-size: 34px;
38
+ color: #414042;
39
+ font-family: "Roboto", sans-serif;
40
+ font-weight: 900;
41
+ margin: 60px 0 30px 0;
42
+ text-align: center;
43
+ }
44
+
45
+ .content {
46
+ text-align: center;
47
+ font-family: "Helvetica", "Arial", sans-serif;
48
+ }
49
+
50
+ #social {
51
+ text-align: center;
52
+ margin-top: 30px;
53
+ }
54
+
55
+ #social a i {
56
+ color: #414042;
57
+ margin: 10px;
58
+ box-sizing: content-box;
59
+ }
60
+
61
+ #social a:hover i {
62
+ color: #ffba33;
63
+ }
64
+
65
+ @media(max-width:767px){
66
+ #hero-image {
67
+ border-bottom: 1px solid rgba(0, 0, 0, 0.7);
68
+ }
69
+ h1 {
70
+ font-size: 30px;
71
+ margin: 10px 0 30px 0;
72
+ }
73
+ #hero-image img {
74
+ max-width: 95%;
75
+ }
76
+ }
under-construction.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin URI: https://underconstructionpage.com/
5
  Description: Put your site behind a great looking under construction page while you do maintenance work.
6
  Author: Web factory Ltd
7
- Version: 2.55
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: under-construction-page
10
  Domain Path: lang
@@ -92,6 +92,9 @@ class UCP {
92
  add_action('wp_ajax_ucp_submit_survey', array(__CLASS__, 'submit_survey_ajax'));
93
  add_action('wp_ajax_ucp_submit_earlybird', array(__CLASS__, 'submit_earlybird_ajax'));
94
  add_action('wp_ajax_ucp_submit_support_message', array(__CLASS__, 'submit_support_message_ajax'));
 
 
 
95
  } else {
96
  // main plugin logic
97
  add_action('wp', array(__CLASS__, 'display_construction_page'), 0, 1);
@@ -276,8 +279,7 @@ class UCP {
276
  $meta = self::get_meta();
277
 
278
  // survey is shown min 5min after install
279
- // all surveys are disabled
280
- if (false && empty($surveys['autoresponders']) && current_time('timestamp') - $meta['first_install'] > 300) {
281
  $open_survey = true;
282
  } else {
283
  $open_survey = false;
@@ -308,6 +310,10 @@ class UCP {
308
  }
309
 
310
  if ('plugins.php' == $hook) {
 
 
 
 
311
  wp_enqueue_script('ucp-admin-plugins', UCP_PLUGIN_URL . 'js/ucp-admin-plugins.js', array('jquery'), self::$version, true);
312
  wp_localize_script('ucp-admin-plugins', 'ucp', $js_localize);
313
  }
@@ -360,6 +366,8 @@ class UCP {
360
  static function submit_support_message_ajax() {
361
  check_ajax_referer('ucp_submit_support_message');
362
 
 
 
363
  $email = sanitize_text_field($_POST['support_email']);
364
  if (!is_email($email)) {
365
  wp_send_json_error('Please double-check your email address.');
@@ -376,6 +384,7 @@ class UCP {
376
  $body .= ' Site URL: ' . get_bloginfo('url') . "\r\n";
377
  $body .= ' WordPress URL: ' . get_bloginfo('wpurl') . "\r\n";
378
  $body .= ' Theme: ' . $theme->get('Name') . ' v' . $theme->get('Version') . "\r\n";
 
379
  }
380
  $headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email;
381
 
@@ -395,9 +404,12 @@ class UCP {
395
  $meta = self::get_meta();
396
  $surveys = get_option(UCP_SURVEYS_KEY);
397
 
398
- $vars = wp_parse_args($_POST, array('survey' => '', 'answers' => '', 'custom_answer' => '', 'emailme' => ''));
399
  $vars['answers'] = trim($vars['answers'], ',');
400
  $vars['custom_answer'] = trim(strip_tags($vars['custom_answer']));
 
 
 
401
 
402
  if (empty($vars['survey']) || empty($vars['answers'])) {
403
  wp_send_json_error();
@@ -408,7 +420,7 @@ class UCP {
408
  'survey' => $vars['survey'],
409
  'email' => $vars['emailme'],
410
  'answers' => $vars['answers'],
411
- 'custom_answer' => $options['theme'],
412
  'first_version' => $meta['first_version'],
413
  'version' => UCP::$version,
414
  'codebase' => 'free',
@@ -441,13 +453,13 @@ class UCP {
441
  if (empty($vars['email']) || empty($vars['type'])) {
442
  wp_send_json_error('Please tell us your email and how you use UCP.');
443
  }
444
-
445
  $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
446
  $request_args = array('action' => 'submit_survey',
447
  'survey' => 'earlybird',
448
  'email' => $vars['email'],
449
  'answers' => $vars['type'],
450
- 'custom_answer' => $options['theme'],
451
  'first_version' => $meta['first_version'],
452
  'version' => UCP::$version,
453
  'codebase' => 'free',
@@ -601,7 +613,7 @@ class UCP {
601
  } elseif ($tmp[0] < '8') {
602
  $out .= '<p id="linkback">Create a <a href="https://underconstructionpage.com/" target="_blank">free under construction page for WordPress</a> like this one in under a minute.</p>';
603
  } elseif ($tmp[0] < 'c') {
604
- $out .= '<p id="linkback">Join more than 80,000 webmasters using the <a href="https://wordpress.org/plugins/under-construction-page/" target="_blank">free Under Construction Page plugin for WordPress</a>.</p>';
605
  } else {
606
  $out .= '<p id="linkback">Create free <a href="https://underconstructionpage.com/" target="_blank">maintenance mode pages for WordPress</a>.</p>';
607
  }
@@ -792,13 +804,13 @@ class UCP {
792
  }
793
 
794
  // no sense in loading a new CSS file for 2 lines of CSS
795
- $custom_css = '<style type="text/css">#wpadminbar ul li#wp-admin-bar-ucp-info { padding: 5px 0; } #wpadminbar ul li#wp-admin-bar-ucp-settings, #wpadminbar ul li#wp-admin-bar-ucp-status { } #wpadminbar i.ucp-status-dot { font-size: 17px; margin-top: -7px; color: #02ca02; height: 17px; display: inline-block; } #wpadminbar i.ucp-status-dot-enabled { color: #87c826; } #wpadminbar i.ucp-status-dot-disabled { color: #ea1919; } #wpadminbar #ucp-status-wrapper { display: inline; border: 1px solid rgba(240,245,250,.7); padding: 0; margin: 0 0 0 5px; background: rgb(35, 40, 45); } #wpadminbar .ucp-status-btn { padding: 0 7px; color: #fff; } #wpadminbar #ucp-status-wrapper.off #ucp-status-off { background: #ea1919;} #wpadminbar #ucp-status-wrapper.on #ucp-status-on { background: #66b317; } </style>';
796
 
797
  echo $custom_css;
798
  } // admin_bar_style
799
 
800
 
801
- // add admin bar notice when construction is enabled
802
  static function admin_bar() {
803
  global $wp_admin_bar;
804
 
@@ -842,7 +854,7 @@ class UCP {
842
  'href' => admin_url('options-general.php?page=ucp'),
843
  'parent' => 'under-construction-page'
844
  ));
845
- } // admin_bar_notice
846
 
847
 
848
  // show under construction notice on WP login form
@@ -859,6 +871,8 @@ class UCP {
859
  static function plugin_action_links($links) {
860
  $settings_link = '<a href="' . admin_url('options-general.php?page=ucp') . '" title="' . __('UnderConstruction Settings', 'under-construction-page') . '">' . __('Settings', 'under-construction-page') . '</a>';
861
  array_unshift($links, $settings_link);
 
 
862
 
863
  return $links;
864
  } // plugin_action_links
@@ -1106,7 +1120,7 @@ class UCP {
1106
  <td>';
1107
 
1108
  echo '<div class="toggle-wrapper">
1109
- <input type="checkbox" id="status" class="dn" ' . self::checked(1, $options['status']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[status]">
1110
  <label for="status" class="toggle"><span class="toggle_handler"></span></label>
1111
  </div>';
1112
 
@@ -1117,7 +1131,7 @@ class UCP {
1117
  <th scope="row"><label for="end_date_toggle">' . __('Automatic End Date &amp; Time', 'under-construction-page') . '</label></th>
1118
  <td>';
1119
  echo '<div class="toggle-wrapper">
1120
- <input type="checkbox" id="end_date_toggle" class="dn" ' . self::checked(1, (empty($options['end_date']) || $options['end_date'] == '0000-00-00 00:00')? 0: 1) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[end_date_toggle]">
1121
  <label for="end_date_toggle" class="toggle"><span class="toggle_handler"></span></label>
1122
  </div>';
1123
  echo '<div id="end_date_wrapper"><input id="end_date" type="text" class="datepicker" name="' . UCP_OPTIONS_KEY . '[end_date]" value="' . esc_attr($options['end_date']) . '" placeholder="yyyy-mm-dd hh:mm"><span title="' . __('Open date & time picker', 'under-construction-page') . '" alt="' . __('Open date & time picker', 'under-construction-page') . '" class="show-datepicker dashicons dashicons-calendar-alt"></span>';
@@ -1129,7 +1143,7 @@ class UCP {
1129
  <th scope="row"><label for="ga_tracking_id_toggle">' . __('Google Analytics Tracking', 'under-construction-page') . '</label></th>
1130
  <td>';
1131
  echo '<div class="toggle-wrapper">
1132
- <input type="checkbox" id="ga_tracking_id_toggle" class="dn" ' . self::checked(1, empty($options['ga_tracking_id'])? 0: 1) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[ga_tracking_toggle]">
1133
  <label for="ga_tracking_id_toggle" class="toggle"><span class="toggle_handler"></span></label>
1134
  </div>';
1135
  echo '<div id="ga_tracking_id_wrapper"><input id="ga_tracking_id" type="text" class="code" name="' . UCP_OPTIONS_KEY . '[ga_tracking_id]" value="' . esc_attr($options['ga_tracking_id']) . '" placeholder="UA-xxxxxx-xx">';
@@ -1187,7 +1201,7 @@ class UCP {
1187
  <th scope="row"><label for="login_button">Login Button</label></th>
1188
  <td>';
1189
  echo '<div class="toggle-wrapper">
1190
- <input type="checkbox" id="login_button" class="dn" ' . self::checked(1, $options['login_button']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[login_button]">
1191
  <label for="login_button" class="toggle"><span class="toggle_handler"></span></label>
1192
  </div>';
1193
  echo '<p class="description">Show a descrete link to the login form, or WP admin if you\'re logged in, in the lower right corner of the page.</p>';
@@ -1197,7 +1211,7 @@ class UCP {
1197
  <th scope="row"><label for="linkback">Show Some Love</label></th>
1198
  <td>';
1199
  echo '<div class="toggle-wrapper">
1200
- <input type="checkbox" id="linkback" class="dn" ' . self::checked(1, $options['linkback']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[linkback]">
1201
  <label for="linkback" class="toggle"><span class="toggle_handler"></span></label>
1202
  </div>';
1203
  echo '<p class="description">Please help others learn about this free plugin by placing a small link in the footer. Thank you very much!</p>';
@@ -1342,7 +1356,8 @@ class UCP {
1342
  'iot' => __('Internet of Things', 'under-construction-page'),
1343
  'setup' => __('Setup', 'under-construction-page'),
1344
  'stop' => __('Stop', 'under-construction-page'),
1345
- 'clock' => __('Clock', 'under-construction-page'));
 
1346
  $themes = apply_filters('ucp_themes', $themes);
1347
 
1348
  return $themes;
@@ -1447,9 +1462,17 @@ class UCP {
1447
 
1448
  // support tab - FAQ and links
1449
  static function tab_support() {
1450
- echo '<div class="ucp-tab-content">';
1451
- echo '<h2>' . __('FAQ', 'under-construction-page') . '</h2>';
1452
-
 
 
 
 
 
 
 
 
1453
  echo '<p><b>How can I work on my site while construction mode is enabled?</b><br>Make sure your user role (probably admin) is selected under <a class="change_tab" data-tab="3" href="#whitelisted-roles">Access - Whitelisted User Roles</a> and open the site while logged in.</p>';
1454
 
1455
  echo '<p><b>How can I log in / access WordPress admin after construction mode has been enabled?</b><br>Enable the <a class="change_tab" data-tab="2" href="#login_button_wrap">Login Button</a> option under Content, and a login link will be shown in the lower right corner of the under construction page.</p>';
@@ -1465,17 +1488,15 @@ class UCP {
1465
  echo '<p><b>I have disabled UCP but the under construction page is still visible. How do I remove it?</b><br>Open your site and force refresh browser cache (Ctrl or Shift + F5). If that doesn\'t help it means you have a caching plugin installed. Purge/delete cache in that plugin or disable it. If that fails too contact your hosting provider and ask to empty the site cache for you.</p>';
1466
 
1467
  echo '<p><b>I have disabled UCP but the site\'s favicon is still the UCP logo. How do I change/remove it?</b><br>Make sure your theme has a favicon defined and empty all caches - browser and server ones. Open the site and force refresh browser cache (Ctrl or Shift + F5). If that doesn\'t help it means you have a caching plugin installed. Purge/delete cache in that plugin or disable it. If that fails too contact your hosting provider and ask to empty the site cache for you.</p>';
1468
-
1469
- echo '<h2 id="contact">' . __('Contact Support', 'under-construction-page') . '</h2>';
1470
- $user = wp_get_current_user();
1471
- $theme = wp_get_theme();
1472
-
1473
  echo '<p>Something is not working the way it\'s suppose to? Having problems activating UCP? Contact our friendly support, they\'ll respond ASAP.<br>You can also contact us just to say hello ;)</p>';
1474
 
1475
  echo '<table class="form-table">';
1476
  echo '<tr valign="top">
1477
  <th scope="row"><label for="support_email">Your Email Address</label></th>
1478
- <td><input id="support_email" type="email" class="regular-text skip-save" name="support_email" value="' . $user->user_email . '" placeholder="name@domain.com">';
1479
  echo '<p class="description">We will reply to this email, so please, double-check it.</p>';
1480
  echo '</td></tr>';
1481
 
@@ -1489,22 +1510,23 @@ class UCP {
1489
  <th scope="row"><label for="support_info">Send Extra Site Info to Support Agents</label></th>
1490
  <td>';
1491
  echo '<div class="toggle-wrapper">
1492
- <input type="checkbox" id="support_info" class="dn" checked type="checkbox" value="1" name="support_info">
1493
  <label for="support_info" class="toggle"><span class="toggle_handler"></span></label>
1494
  </div>';
1495
- echo '<p class="description">Our support agents need this info to provide faster &amp; better support. Only the following data will be added to your message;</p>';
1496
  echo '<p>WordPress version: <code>' . get_bloginfo('version') . '</code><br>';
1497
- echo 'UCP version: <code>' . self::$version . '</code><br>';
1498
  echo 'Site URL: <code>' . get_bloginfo('url') . '</code><br>';
1499
  echo 'WordPress URL: <code>' . get_bloginfo('wpurl') . '</code><br>';
1500
- echo 'Theme: <code>' . $theme->get('Name') . ' v' . $theme->get('Version') . '</code></p>';
1501
- echo '</td></tr>';
1502
- echo '<tr valign="top">
1503
- <td colspan="2">';
1504
  echo '<a id="ucp-send-support-message" href="#" class="js-action button button-primary"><span class="dashicons dashicons-update"></span>Send Message to Support</a>';
1505
- echo '</td></tr>';
1506
  echo '</table>';
1507
- echo '</div>';
 
 
1508
  } // tab_support
1509
 
1510
 
@@ -1515,8 +1537,8 @@ class UCP {
1515
  echo '<div class="ucp-tab-content">';
1516
  echo '<h3 class="ucp-pro-logo"><img src="' . UCP_PLUGIN_URL . 'images/ucp_pro_logo.png" alt="UnderConstructionPage PRO" title="UnderConstructionPage">UnderConstructionPage<span>pro</span></h3>';
1517
 
1518
- echo '<div id="ucp-earlybird"><span>UCP PRO comes out on October 23rd. Get on the earlybird list - get it cheaper &amp; a week before others!</span>';
1519
- echo '<p><input value="' . $user->user_email .'" type="email" placeholder="Your best email address" class="skip-save regular-text" id="ucp-earlybird-email"> <select id="ucp-earlybird-type"><option value="0">- How do you use UCP? Please select -</option><option value="solo-use">I use it only on one site</option><option value="multi-site">I use it on multiple sites I own</option><option value="webmaster">I use it on multiple sites I build/maintain for others</option></select> <a href="#" class="button button-primary" id="ucp-earlybird-submit">Put me on the Earlybird List!</a></p>';
1520
  echo '</div>';
1521
 
1522
  echo '<h3 class="ucp-small-title">Some of the features available in the PRO version</h3>';
@@ -1552,7 +1574,7 @@ class UCP {
1552
  echo '</div>';
1553
 
1554
  echo '<div class="gmw-pro-feature">';
1555
- echo '<span>Track Referrals &amp; Affiliates</span>';
1556
  echo '<p>Create a unique access link for every referral and track how many sessions, clicks and conversions it brings in. The perfect solution for tracking quality of various traffic sources.</p>';
1557
  echo '</div>';
1558
 
@@ -1632,7 +1654,7 @@ class UCP {
1632
  $tabs = apply_filters('ucp_tabs', $tabs);
1633
 
1634
  echo '<div id="ucp_tabs" class="ui-tabs" style="display: none;">';
1635
- echo '<ul>';
1636
  foreach ($tabs as $tab) {
1637
  if(!empty($tab['label'])){
1638
  echo '<li><a href="#' . $tab['id'] . '" class="' . $tab['class'] . '"><span class="icon"><span class="dashicons ' . $tab['icon'] . '"></span></span><span class="label">' . $tab['label'] . '</span></a></li>';
@@ -1652,7 +1674,39 @@ class UCP {
1652
 
1653
  echo '</form>'; // ucp_tabs
1654
  echo '</div>'; // wrap
1655
- } // options_page
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1656
 
1657
 
1658
  // save and preview buttons
@@ -1662,6 +1716,47 @@ class UCP {
1662
  echo ' &nbsp; &nbsp; <a id="ucp_preview" href="' . get_home_url() . '/?ucp_preview" class="button button-large button-secondary" target="_blank">' . __('Preview', 'under-construction-page') . '</a>';
1663
  echo '</p>';
1664
  } // footer_buttons
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1665
 
1666
 
1667
  // reset all pointers to default state - visible
4
  Plugin URI: https://underconstructionpage.com/
5
  Description: Put your site behind a great looking under construction page while you do maintenance work.
6
  Author: Web factory Ltd
7
+ Version: 2.60
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: under-construction-page
10
  Domain Path: lang
92
  add_action('wp_ajax_ucp_submit_survey', array(__CLASS__, 'submit_survey_ajax'));
93
  add_action('wp_ajax_ucp_submit_earlybird', array(__CLASS__, 'submit_earlybird_ajax'));
94
  add_action('wp_ajax_ucp_submit_support_message', array(__CLASS__, 'submit_support_message_ajax'));
95
+
96
+ // uninstall survey on plugins page
97
+ add_action('admin_footer-plugins.php', array(__CLASS__, 'footer_plugins'));
98
  } else {
99
  // main plugin logic
100
  add_action('wp', array(__CLASS__, 'display_construction_page'), 0, 1);
279
  $meta = self::get_meta();
280
 
281
  // survey is shown min 5min after install
282
+ if (empty($surveys['usage']) && current_time('timestamp') - $meta['first_install'] > 300) {
 
283
  $open_survey = true;
284
  } else {
285
  $open_survey = false;
310
  }
311
 
312
  if ('plugins.php' == $hook) {
313
+ wp_enqueue_style('wp-jquery-ui-dialog');
314
+ wp_enqueue_style('ucp-admin-plugins', UCP_PLUGIN_URL . 'css/ucp-admin-plugins.css', array(), self::$version);
315
+
316
+ wp_enqueue_script('jquery-ui-dialog');
317
  wp_enqueue_script('ucp-admin-plugins', UCP_PLUGIN_URL . 'js/ucp-admin-plugins.js', array('jquery'), self::$version, true);
318
  wp_localize_script('ucp-admin-plugins', 'ucp', $js_localize);
319
  }
366
  static function submit_support_message_ajax() {
367
  check_ajax_referer('ucp_submit_support_message');
368
 
369
+ $options = self::get_options();
370
+
371
  $email = sanitize_text_field($_POST['support_email']);
372
  if (!is_email($email)) {
373
  wp_send_json_error('Please double-check your email address.');
384
  $body .= ' Site URL: ' . get_bloginfo('url') . "\r\n";
385
  $body .= ' WordPress URL: ' . get_bloginfo('wpurl') . "\r\n";
386
  $body .= ' Theme: ' . $theme->get('Name') . ' v' . $theme->get('Version') . "\r\n";
387
+ $body .= ' Options: ' . "\r\n" . serialize($options) . "\r\n";
388
  }
389
  $headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email;
390
 
404
  $meta = self::get_meta();
405
  $surveys = get_option(UCP_SURVEYS_KEY);
406
 
407
+ $vars = wp_parse_args($_POST, array('survey' => '', 'answers' => '', 'custom_answer' => $options['theme'], 'emailme' => ''));
408
  $vars['answers'] = trim($vars['answers'], ',');
409
  $vars['custom_answer'] = trim(strip_tags($vars['custom_answer']));
410
+
411
+ $vars['custom_answer'] .= '; ' . date('Y-m-d H:i:s', $meta['first_install']);
412
+ $vars['custom_answer'] = trim($vars['custom_answer'], ' ;');
413
 
414
  if (empty($vars['survey']) || empty($vars['answers'])) {
415
  wp_send_json_error();
420
  'survey' => $vars['survey'],
421
  'email' => $vars['emailme'],
422
  'answers' => $vars['answers'],
423
+ 'custom_answer' => $vars['custom_answer'],
424
  'first_version' => $meta['first_version'],
425
  'version' => UCP::$version,
426
  'codebase' => 'free',
453
  if (empty($vars['email']) || empty($vars['type'])) {
454
  wp_send_json_error('Please tell us your email and how you use UCP.');
455
  }
456
+
457
  $request_params = array('sslverify' => false, 'timeout' => 15, 'redirection' => 2);
458
  $request_args = array('action' => 'submit_survey',
459
  'survey' => 'earlybird',
460
  'email' => $vars['email'],
461
  'answers' => $vars['type'],
462
+ 'custom_answer' => $options['theme'] . '; ' . date('Y-m-d H:i:s', $meta['first_install']),
463
  'first_version' => $meta['first_version'],
464
  'version' => UCP::$version,
465
  'codebase' => 'free',
613
  } elseif ($tmp[0] < '8') {
614
  $out .= '<p id="linkback">Create a <a href="https://underconstructionpage.com/" target="_blank">free under construction page for WordPress</a> like this one in under a minute.</p>';
615
  } elseif ($tmp[0] < 'c') {
616
+ $out .= '<p id="linkback">Join more than 100,000 happy people using the <a href="https://wordpress.org/plugins/under-construction-page/" target="_blank">free Under Construction Page plugin for WordPress</a>.</p>';
617
  } else {
618
  $out .= '<p id="linkback">Create free <a href="https://underconstructionpage.com/" target="_blank">maintenance mode pages for WordPress</a>.</p>';
619
  }
804
  }
805
 
806
  // no sense in loading a new CSS file for 2 lines of CSS
807
+ $custom_css = '<style type="text/css">#wpadminbar ul li#wp-admin-bar-ucp-info { padding: 5px 0; } #wpadminbar ul li#wp-admin-bar-ucp-settings, #wpadminbar ul li#wp-admin-bar-ucp-status { } #wpadminbar i.ucp-status-dot { font-size: 17px; margin-top: -7px; color: #02ca02; height: 17px; display: inline-block; } #wpadminbar i.ucp-status-dot-enabled { color: #87c826; } #wpadminbar i.ucp-status-dot-disabled { color: #ea1919; } #wpadminbar #ucp-status-wrapper { display: inline; border: 1px solid rgba(240,245,250,.7); padding: 0; margin: 0 0 0 5px; background: rgb(35, 40, 45); } #wpadminbar .ucp-status-btn { padding: 0 7px; color: #fff; } #wpadminbar #ucp-status-wrapper.off #ucp-status-off { background: #ea1919;} #wpadminbar #ucp-status-wrapper.on #ucp-status-on { background: #66b317; }#wp-admin-bar-under-construction-page img.logo { height: 17px; margin-bottom: 4px; padding-right: 3px; } body.wp-admin #wp-admin-bar-under-construction-page img.logo { margin-bottom: -4px; }</style>';
808
 
809
  echo $custom_css;
810
  } // admin_bar_style
811
 
812
 
813
+ // add admin bar menu and status
814
  static function admin_bar() {
815
  global $wp_admin_bar;
816
 
854
  'href' => admin_url('options-general.php?page=ucp'),
855
  'parent' => 'under-construction-page'
856
  ));
857
+ } // admin_bar
858
 
859
 
860
  // show under construction notice on WP login form
871
  static function plugin_action_links($links) {
872
  $settings_link = '<a href="' . admin_url('options-general.php?page=ucp') . '" title="' . __('UnderConstruction Settings', 'under-construction-page') . '">' . __('Settings', 'under-construction-page') . '</a>';
873
  array_unshift($links, $settings_link);
874
+
875
+ $links['deactivate'] = str_replace('href=',' data-under-construction-page="true" href=', $links['deactivate']);
876
 
877
  return $links;
878
  } // plugin_action_links
1120
  <td>';
1121
 
1122
  echo '<div class="toggle-wrapper">
1123
+ <input type="checkbox" id="status" ' . self::checked(1, $options['status']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[status]">
1124
  <label for="status" class="toggle"><span class="toggle_handler"></span></label>
1125
  </div>';
1126
 
1131
  <th scope="row"><label for="end_date_toggle">' . __('Automatic End Date &amp; Time', 'under-construction-page') . '</label></th>
1132
  <td>';
1133
  echo '<div class="toggle-wrapper">
1134
+ <input type="checkbox" id="end_date_toggle" ' . self::checked(1, (empty($options['end_date']) || $options['end_date'] == '0000-00-00 00:00')? 0: 1) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[end_date_toggle]">
1135
  <label for="end_date_toggle" class="toggle"><span class="toggle_handler"></span></label>
1136
  </div>';
1137
  echo '<div id="end_date_wrapper"><input id="end_date" type="text" class="datepicker" name="' . UCP_OPTIONS_KEY . '[end_date]" value="' . esc_attr($options['end_date']) . '" placeholder="yyyy-mm-dd hh:mm"><span title="' . __('Open date & time picker', 'under-construction-page') . '" alt="' . __('Open date & time picker', 'under-construction-page') . '" class="show-datepicker dashicons dashicons-calendar-alt"></span>';
1143
  <th scope="row"><label for="ga_tracking_id_toggle">' . __('Google Analytics Tracking', 'under-construction-page') . '</label></th>
1144
  <td>';
1145
  echo '<div class="toggle-wrapper">
1146
+ <input type="checkbox" id="ga_tracking_id_toggle" ' . self::checked(1, empty($options['ga_tracking_id'])? 0: 1) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[ga_tracking_toggle]">
1147
  <label for="ga_tracking_id_toggle" class="toggle"><span class="toggle_handler"></span></label>
1148
  </div>';
1149
  echo '<div id="ga_tracking_id_wrapper"><input id="ga_tracking_id" type="text" class="code" name="' . UCP_OPTIONS_KEY . '[ga_tracking_id]" value="' . esc_attr($options['ga_tracking_id']) . '" placeholder="UA-xxxxxx-xx">';
1201
  <th scope="row"><label for="login_button">Login Button</label></th>
1202
  <td>';
1203
  echo '<div class="toggle-wrapper">
1204
+ <input type="checkbox" id="login_button" ' . self::checked(1, $options['login_button']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[login_button]">
1205
  <label for="login_button" class="toggle"><span class="toggle_handler"></span></label>
1206
  </div>';
1207
  echo '<p class="description">Show a descrete link to the login form, or WP admin if you\'re logged in, in the lower right corner of the page.</p>';
1211
  <th scope="row"><label for="linkback">Show Some Love</label></th>
1212
  <td>';
1213
  echo '<div class="toggle-wrapper">
1214
+ <input type="checkbox" id="linkback" ' . self::checked(1, $options['linkback']) . ' type="checkbox" value="1" name="' . UCP_OPTIONS_KEY . '[linkback]">
1215
  <label for="linkback" class="toggle"><span class="toggle_handler"></span></label>
1216
  </div>';
1217
  echo '<p class="description">Please help others learn about this free plugin by placing a small link in the footer. Thank you very much!</p>';
1356
  'iot' => __('Internet of Things', 'under-construction-page'),
1357
  'setup' => __('Setup', 'under-construction-page'),
1358
  'stop' => __('Stop', 'under-construction-page'),
1359
+ 'clock' => __('Clock', 'under-construction-page'),
1360
+ 'bulldozer' => __('Bulldozer at Work', 'under-construction-page'));
1361
  $themes = apply_filters('ucp_themes', $themes);
1362
 
1363
  return $themes;
1462
 
1463
  // support tab - FAQ and links
1464
  static function tab_support() {
1465
+ $user = wp_get_current_user();
1466
+ $theme = wp_get_theme();
1467
+ $options = self::get_options();
1468
+
1469
+ echo '<div id="tabs_support" class="ui-tabs ucp-tabs-2nd-level">';
1470
+ echo '<ul>';
1471
+ echo '<li><a href="#tab_support_faq">FAQ</a></li>';
1472
+ echo '<li><a href="#tab_support_contact">Contact Support</a></li>';
1473
+ echo '</ul>';
1474
+
1475
+ echo '<div style="display: none;" id="tab_support_faq" class="ucp-tab-content">';
1476
  echo '<p><b>How can I work on my site while construction mode is enabled?</b><br>Make sure your user role (probably admin) is selected under <a class="change_tab" data-tab="3" href="#whitelisted-roles">Access - Whitelisted User Roles</a> and open the site while logged in.</p>';
1477
 
1478
  echo '<p><b>How can I log in / access WordPress admin after construction mode has been enabled?</b><br>Enable the <a class="change_tab" data-tab="2" href="#login_button_wrap">Login Button</a> option under Content, and a login link will be shown in the lower right corner of the under construction page.</p>';
1488
  echo '<p><b>I have disabled UCP but the under construction page is still visible. How do I remove it?</b><br>Open your site and force refresh browser cache (Ctrl or Shift + F5). If that doesn\'t help it means you have a caching plugin installed. Purge/delete cache in that plugin or disable it. If that fails too contact your hosting provider and ask to empty the site cache for you.</p>';
1489
 
1490
  echo '<p><b>I have disabled UCP but the site\'s favicon is still the UCP logo. How do I change/remove it?</b><br>Make sure your theme has a favicon defined and empty all caches - browser and server ones. Open the site and force refresh browser cache (Ctrl or Shift + F5). If that doesn\'t help it means you have a caching plugin installed. Purge/delete cache in that plugin or disable it. If that fails too contact your hosting provider and ask to empty the site cache for you.</p>';
1491
+ echo '</div>'; // faq
1492
+
1493
+ echo '<div style="display: none;" id="tab_support_contact" class="ucp-tab-content">';
 
 
1494
  echo '<p>Something is not working the way it\'s suppose to? Having problems activating UCP? Contact our friendly support, they\'ll respond ASAP.<br>You can also contact us just to say hello ;)</p>';
1495
 
1496
  echo '<table class="form-table">';
1497
  echo '<tr valign="top">
1498
  <th scope="row"><label for="support_email">Your Email Address</label></th>
1499
+ <td><input id="support_email" type="text" class="regular-text skip-save" name="support_email" value="' . $user->user_email . '" placeholder="name@domain.com">';
1500
  echo '<p class="description">We will reply to this email, so please, double-check it.</p>';
1501
  echo '</td></tr>';
1502
 
1510
  <th scope="row"><label for="support_info">Send Extra Site Info to Support Agents</label></th>
1511
  <td>';
1512
  echo '<div class="toggle-wrapper">
1513
+ <input type="checkbox" id="support_info" checked type="checkbox" value="1" name="support_info">
1514
  <label for="support_info" class="toggle"><span class="toggle_handler"></span></label>
1515
  </div>';
1516
+ echo '<p class="description">Our support agents need this info to provide faster &amp; better support. The following data will be added to your message;</p>';
1517
  echo '<p>WordPress version: <code>' . get_bloginfo('version') . '</code><br>';
1518
+ echo 'UCP Version: <code>' . self::$version . '</code><br>';
1519
  echo 'Site URL: <code>' . get_bloginfo('url') . '</code><br>';
1520
  echo 'WordPress URL: <code>' . get_bloginfo('wpurl') . '</code><br>';
1521
+ echo 'Theme: <code>' . $theme->get('Name') . ' v' . $theme->get('Version') . '</code><br>';
1522
+ echo 'UCP Options: <i>all option values will be sent to support to ease debugging</i>';
1523
+ echo '</p></td></tr>';
1524
+ echo '</table>';
1525
  echo '<a id="ucp-send-support-message" href="#" class="js-action button button-primary"><span class="dashicons dashicons-update"></span>Send Message to Support</a>';
 
1526
  echo '</table>';
1527
+ echo '</div>'; // contact
1528
+
1529
+ echo '</div>'; // tabs
1530
  } // tab_support
1531
 
1532
 
1537
  echo '<div class="ucp-tab-content">';
1538
  echo '<h3 class="ucp-pro-logo"><img src="' . UCP_PLUGIN_URL . 'images/ucp_pro_logo.png" alt="UnderConstructionPage PRO" title="UnderConstructionPage">UnderConstructionPage<span>pro</span></h3>';
1539
 
1540
+ echo '<div id="ucp-earlybird"><span>Build <b>landing pages, coming soon pages, maintenance &amp; under construction pages</b> faster &amp; easier!<br>UCP PRO comes out on October 23rd. Get on the earlybird list - <b>get it cheaper &amp; a week before others</b>.</span>';
1541
+ echo '<p><input value="' . $user->user_email .'" type="email" placeholder="Your best email address" class="skip-save regular-text" id="ucp-earlybird-email"> <select id="ucp-earlybird-type"><option value="0">- How do you use UCP? Please select -</option><option value="solo-use">I use it only on one site</option><option value="multi-site">I use it on multiple sites I own</option><option value="webmaster">I use it on multiple sites I build/maintain for others</option></select> <a href="#" class="button button-primary button-large" id="ucp-earlybird-submit">I want the discount! Put me on the Earlybird List!</a></p>';
1542
  echo '</div>';
1543
 
1544
  echo '<h3 class="ucp-small-title">Some of the features available in the PRO version</h3>';
1574
  echo '</div>';
1575
 
1576
  echo '<div class="gmw-pro-feature">';
1577
+ echo '<span>Track Referrals &amp; Affiliate Links</span>';
1578
  echo '<p>Create a unique access link for every referral and track how many sessions, clicks and conversions it brings in. The perfect solution for tracking quality of various traffic sources.</p>';
1579
  echo '</div>';
1580
 
1654
  $tabs = apply_filters('ucp_tabs', $tabs);
1655
 
1656
  echo '<div id="ucp_tabs" class="ui-tabs" style="display: none;">';
1657
+ echo '<ul class="ucp-main-tab">';
1658
  foreach ($tabs as $tab) {
1659
  if(!empty($tab['label'])){
1660
  echo '<li><a href="#' . $tab['id'] . '" class="' . $tab['class'] . '"><span class="icon"><span class="dashicons ' . $tab['icon'] . '"></span></span><span class="label">' . $tab['label'] . '</span></a></li>';
1674
 
1675
  echo '</form>'; // ucp_tabs
1676
  echo '</div>'; // wrap
1677
+
1678
+ echo '<div id="features-survey-dialog" style="display: none;" title="Please help us make UCP better"><span class="ui-helper-hidden-accessible"><input type="text"/></span>';
1679
+ echo '<p>We continuously add new features to <span class="ucp-logo">UnderConstructionPage</span>. In order to know what features to add we need to understand who our users are.<br><b>In what situations do you most often use UCP?</b></p>';
1680
+
1681
+ $questions = array();
1682
+ $questions[] = '<div class="question-wrapper" data-value="solo-short">' .
1683
+ '<div class="question"><b>I need to hide my site for a short time</b><br>while I do some work on it, it\'s a one time thing</div>' .
1684
+ '</div>';
1685
+
1686
+ $questions[] = '<div class="question-wrapper" data-value="solo-long">' .
1687
+ '<div class="question"><b>I\'m building a site &amp; need a coming soon page</b><br>while I finish it</div>' .
1688
+ '</div>';
1689
+
1690
+ $questions[] = '<div class="question-wrapper" data-value="agency">' .
1691
+ '<div class="question"><b>I create / manage multiple sites for clients</b><br>&amp; use UCP on them</div>' .
1692
+ '</div>';
1693
+
1694
+ $questions[] = '<div class="question-wrapper" data-value="webmaster">' .
1695
+ '<div class="question"><b>I own multiple sites</b><br>&amp; use UCP when working on them</div>' .
1696
+ '</div>';
1697
+
1698
+ shuffle($questions);
1699
+ echo implode(' ', $questions);
1700
+
1701
+ $current_user = wp_get_current_user();
1702
+ echo '<div class="footer">';
1703
+ echo '<input id="emailme" type="checkbox" value="' . $current_user->user_email . '"> <label for="emailme">Email me on ' . $current_user->user_email . ' when new features are added</label><br>';
1704
+ echo '<a data-survey="usage" class="submit-survey button-primary button button-large" href="#">Cast my Vote</a>';
1705
+ echo '<a href="#" class="dismiss-survey" data-survey="usage"><small><i>Close survey &amp; never show it again</i></small></a>';
1706
+ echo '</div>';
1707
+
1708
+ echo '</div>';
1709
+ } // main_page
1710
 
1711
 
1712
  // save and preview buttons
1716
  echo ' &nbsp; &nbsp; <a id="ucp_preview" href="' . get_home_url() . '/?ucp_preview" class="button button-large button-secondary" target="_blank">' . __('Preview', 'under-construction-page') . '</a>';
1717
  echo '</p>';
1718
  } // footer_buttons
1719
+
1720
+ static function footer_plugins() {
1721
+ echo '<div id="ucp-deactivate-survey" style="display: none;" title="Please help us make UCP better"><span class="ui-helper-hidden-accessible"><input type="text"/></span>';
1722
+ echo '<p>We want to improve! Please tell us:<br><b>Why are you deactivating <span class="ucp-logo">UnderConstructionPage</span>?</b></p>';
1723
+
1724
+ $questions = array();
1725
+ $questions[] = '<div class="question-wrapper" data-value="temporary">' .
1726
+ '<div class="question">It\'s a temporary deactivation. I\'m debugging something.</div>' .
1727
+ '</div>';
1728
+
1729
+ $questions[] = '<div class="question-wrapper" data-value="not-working">' .
1730
+ '<div class="question">Plugin is not working.<div class="details">Please tell us what exactly is not working: <input type="text" class="normal-text ucp-deactivation-details"></div></div>' .
1731
+ '</div>';
1732
+
1733
+ $questions[] = '<div class="question-wrapper" data-value="wrong-plugin">' .
1734
+ '<div class="question">Plugin is not what I thought it is. I need a different plugin.</div>' .
1735
+ '</div>';
1736
+
1737
+ $questions[] = '<div class="question-wrapper" data-value="site-live">' .
1738
+ '<div class="question">It served its purpose - site is now live.</div>' .
1739
+ '</div>';
1740
+
1741
+ $questions[] = '<div class="question-wrapper" data-value="missing-feature">' .
1742
+ '<div class="question">It doesn\'t have all the features I need.<div class="details">Please tell us what features are missing: <input type="text" class="normal-text ucp-deactivation-details"></div></div>' .
1743
+ '</div>';
1744
+
1745
+ shuffle($questions);
1746
+ $questions[] = '<div class="question-wrapper" data-value="other">' .
1747
+ '<div class="question">Something else.<div class="details">Please tell us the reason: <input type="text" class="normal-text ucp-deactivation-details"></div></div>' .
1748
+ '</div>';
1749
+ echo implode(' ', $questions);
1750
+
1751
+
1752
+ $current_user = wp_get_current_user();
1753
+ echo '<div class="footer">';
1754
+ echo '<a class="ucp-cancel-deactivate js-action button-secondary button button-large" href="#">Cancel Deactivation</a> <a data-survey="deactivate" class="button-primary button button-large ucp-deactivate" href="#">Continue with Deactivation</a>';
1755
+ echo '<br><br><a href="#" class="js-action ucp-deactivate-direct"><small><i>Deactivate without providing feedback</i></small></a>';
1756
+ echo '</div>';
1757
+
1758
+ echo '</div>';
1759
+ } // footer_plugins
1760
 
1761
 
1762
  // reset all pointers to default state - visible