Version Description
(25/05/2018) = * added GDPR feature
Download this release
Release Info
Developer | Designmodo |
Plugin | WP Maintenance Mode |
Version | 2.2 |
Comparing to | |
See all releases |
Code changes from version 2.1.2 to 2.2
- assets/css/style.css +63 -6
- assets/css/style.min.css +1 -2
- includes/classes/wp-maintenance-mode-admin.php +46 -2
- includes/classes/wp-maintenance-mode.php +21 -5
- readme.md +2 -1
- readme.txt +8 -3
- views/maintenance.php +22 -4
- views/settings.php +64 -9
- wp-maintenance-mode.php +1 -1
assets/css/style.css
CHANGED
@@ -29,7 +29,7 @@ blockquote:before, blockquote:after, q:before, q:after {
|
|
29 |
content: none;
|
30 |
}
|
31 |
input, button {
|
32 |
-
-webkit-appearance: none;
|
33 |
border-radius: 0;
|
34 |
}
|
35 |
table {
|
@@ -116,16 +116,43 @@ body {
|
|
116 |
/**
|
117 |
* SUBSCRIBE FORM
|
118 |
**/
|
119 |
-
|
120 |
-
|
121 |
box-sizing: border-box;
|
122 |
width: 450px;
|
123 |
-
margin: 0 0 75px;
|
124 |
display: inline-block;
|
125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
overflow: hidden;
|
127 |
text-align: center;
|
128 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
.wrap form.subscribe_form input {
|
130 |
margin: 0;
|
131 |
outline: 0;
|
@@ -291,7 +318,9 @@ body {
|
|
291 |
margin: 100px auto;
|
292 |
transition: 0.2s transform ease-in-out;
|
293 |
}
|
294 |
-
.contact .form input,
|
|
|
|
|
295 |
padding: 15px 20px;
|
296 |
margin: 0;
|
297 |
outline: 0;
|
@@ -303,6 +332,28 @@ body {
|
|
303 |
box-sizing: border-box;
|
304 |
resize: none;
|
305 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
.contact .form textarea {
|
307 |
height: 175px;
|
308 |
padding: 20px;
|
@@ -477,3 +528,9 @@ body {
|
|
477 |
width: 70%;
|
478 |
}
|
479 |
}
|
|
|
|
|
|
|
|
|
|
|
|
29 |
content: none;
|
30 |
}
|
31 |
input, button {
|
32 |
+
/* -webkit-appearance: none; */
|
33 |
border-radius: 0;
|
34 |
}
|
35 |
table {
|
116 |
/**
|
117 |
* SUBSCRIBE FORM
|
118 |
**/
|
119 |
+
.wrap div.subscribe_border {
|
120 |
+
border: 3px solid #e0e0e0;
|
121 |
box-sizing: border-box;
|
122 |
width: 450px;
|
|
|
123 |
display: inline-block;
|
124 |
+
}
|
125 |
+
.wrap form.subscribe_form {
|
126 |
+
/* box-sizing: border-box;
|
127 |
+
width: 450px; */
|
128 |
+
margin: 0 0 75px;
|
129 |
+
/* display: inline-block; */
|
130 |
+
/* border: 3px solid #e0e0e0; */
|
131 |
overflow: hidden;
|
132 |
text-align: center;
|
133 |
}
|
134 |
+
.wrap .subscribe_form .privacy_checkbox {
|
135 |
+
color: #909090;
|
136 |
+
max-width: 450px;
|
137 |
+
margin: 15px auto;
|
138 |
+
position: relative;
|
139 |
+
}
|
140 |
+
.wrap form.subscribe_form .privacy_checkbox label.error {
|
141 |
+
display: block !important;
|
142 |
+
position: absolute;
|
143 |
+
font-size: 11px;
|
144 |
+
left: 39%;
|
145 |
+
}
|
146 |
+
.wrap .subscribe_form .privacy_checkbox input {
|
147 |
+
float: none;
|
148 |
+
margin: 3px 4.7px;
|
149 |
+
}
|
150 |
+
.wrap .subscribe_form .privacy_tail {
|
151 |
+
font-size: 11px;
|
152 |
+
color: #909090;
|
153 |
+
max-width: 450px;
|
154 |
+
margin: 0 auto;
|
155 |
+
}
|
156 |
.wrap form.subscribe_form input {
|
157 |
margin: 0;
|
158 |
outline: 0;
|
318 |
margin: 100px auto;
|
319 |
transition: 0.2s transform ease-in-out;
|
320 |
}
|
321 |
+
.contact .form input[type=text],
|
322 |
+
.contact .form input[type=submit],
|
323 |
+
.contact .form textarea {
|
324 |
padding: 15px 20px;
|
325 |
margin: 0;
|
326 |
outline: 0;
|
332 |
box-sizing: border-box;
|
333 |
resize: none;
|
334 |
}
|
335 |
+
.contact .form label#content-error { margin-bottom: 10px; }
|
336 |
+
.contact .form .privacy_checkbox {
|
337 |
+
margin-top: 20px;
|
338 |
+
clear: both;
|
339 |
+
color: #909090;
|
340 |
+
font-size: 15px;
|
341 |
+
position: relative;
|
342 |
+
}
|
343 |
+
.contact .form .privacy_checkbox label#acceptance-error {
|
344 |
+
position: absolute;
|
345 |
+
top: 10px;
|
346 |
+
left: 39%;
|
347 |
+
}
|
348 |
+
.contact .form .privacy_checkbox input {
|
349 |
+
transform: translatey(-2px);
|
350 |
+
}
|
351 |
+
.contact .form .privacy_tail {
|
352 |
+
font-size: 11px;
|
353 |
+
color: #c7c7c7;
|
354 |
+
margin-top: 16px;
|
355 |
+
line-height: 14px;
|
356 |
+
}
|
357 |
.contact .form textarea {
|
358 |
height: 175px;
|
359 |
padding: 20px;
|
528 |
width: 70%;
|
529 |
}
|
530 |
}
|
531 |
+
@media only screen and (max-width: 465px) {
|
532 |
+
.contact .form .privacy_checkbox label#acceptance-error {
|
533 |
+
top: 28px;
|
534 |
+
left: 32%;
|
535 |
+
}
|
536 |
+
}
|
assets/css/style.min.css
CHANGED
@@ -1,2 +1 @@
|
|
1 |
-
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;text-decoration:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{display:block;width:500px;margin:0 auto;text-align:left;position:relative;font-style:italic}blockquote:before,blockquote:after,q:before,q:after{content:'"';content:none}input,button{
|
2 |
-
/*# sourceMappingURL=style.min.css.map */
|
1 |
+
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;text-decoration:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{display:block;width:500px;margin:0 auto;text-align:left;position:relative;font-style:italic}blockquote:before,blockquote:after,q:before,q:after{content:'"';content:none}input,button{border-radius:0}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}del{text-decoration:line-through}strong,b{font-weight:bold}ol{width:600px;margin:0 auto;text-align:left}ol li{list-style-type:decimal}ul{width:600px;margin:0 auto;text-align:left}ul li{list-style:disc}a{color:inherit;text-decoration:underline}body,html{min-height:100%}body{background-color:#fff;color:#1b1f23;font-family:Helvetica Neue, Arial, sans-serif}.wrap{width:605px;margin:100px auto 0;text-align:center}.wrap h1{font-size:30px;font-weight:700;margin:0 0 90px}.wrap h2{font-size:24px;font-weight:400;line-height:45px;margin:0 0 80px}.wrap h3{font-size:24px;font-weight:400;margin:0 0 45px}.wrap .author_link{margin-top:15px;color:#616161;margin:0 0 50px}.wrap .author_link a{color:#000}.wrap .countdown{margin:0 0 85px}.wrap .countdown span{font-size:30px}.wrap div.subscribe_border{border:3px solid #e0e0e0;-webkit-box-sizing:border-box;box-sizing:border-box;width:450px;display:inline-block}.wrap form.subscribe_form{margin:0 0 75px;overflow:hidden;text-align:center}.wrap .subscribe_form .privacy_checkbox{color:#909090;max-width:450px;margin:15px auto;position:relative}.wrap form.subscribe_form .privacy_checkbox label.error{display:block !important;position:absolute;font-size:11px;left:39%}.wrap .subscribe_form .privacy_checkbox input{float:none;margin:3px 4.7px}.wrap .subscribe_form .privacy_tail{font-size:11px;color:#909090;max-width:450px;margin:0 auto}.wrap form.subscribe_form input{margin:0;outline:0;border:0;float:left;font-size:18px;padding:20px 25px;-webkit-box-sizing:content-box;box-sizing:content-box}.wrap form.subscribe_form input[type="text"]{width:245px}.wrap form.subscribe_form input[type="submit"]{background:#000;color:#fff;float:right;cursor:pointer;padding:20px 30px;border-left:3px solid #e0e0e0;-webkit-transition:all .3s;transition:all .3s}.wrap form.subscribe_form input[type="submit"]:hover{background:#fff;color:#000;border-left:3px solid #e0e0e0}.wrap form.subscribe_form input[type="submit"]:active{background:#1e1e1e;color:#fff}.wrap form.subscribe_form .error{color:red}.wrap form.subscribe_form label.error{display:none !important}.wrap form.login_form{width:100%;margin:15px 0 0}.wrap form.login_form input{display:inline-block;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border:3px solid #E2E2E2;font-family:Helvetica Neue, Arial, sans-serif;font-size:16px;margin:0 10px 0 0;outline:0;padding:15px}.wrap form.login_form input[type="submit"]{background:#000;color:#fff;margin:0;border-color:#000;font-weight:bold;padding:15px 30px;cursor:pointer}.wrap form.login_form input[type="submit"]:active{position:relative;top:1px}.wrap .social{margin:0 0 70px}.wrap .social a{width:22px;height:22px;margin:0 0 20px 55px;background-image:url("../images/icn_sprite.png");background-repeat:no-repeat;display:inline-block;text-indent:-999em}.wrap .social a:first-of-type{margin:0 0 20px 0}.wrap .social .git{background-position:0 0}.wrap .social .fb{background-position:-240px 0}.wrap .social .tw{background-position:-162px 0px}.wrap .social .rss{background-position:-402px 0}.wrap .social .mail{background-position:-560px 0}.wrap .social .pin{background-position:-322px 0}.wrap .social .dribbble{background-position:-82px 0}.wrap .social .gplus{background-position:-486px 0}.wrap .social .linkedin{background-position:-633px 0}.wrap .contact_us{color:#000;border:3px solid #000;font-size:18px;padding:15px 40px;display:inline-block;margin:0 0 70px}.wrap .contact_us:hover{background:#000;color:#fff}.contact_us{text-decoration:none}.contact_us,input[type=submit]{-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.contact{position:fixed;display:none;overflow:auto;top:0;bottom:0;left:0;right:0;background:rgba(27,31,35,0.95)}.contact label.error{color:red;float:left;font-size:11px;padding-top:10px}.close-contact_form{position:absolute;left:46%;top:-60px;cursor:pointer}.close-contact_form img{width:40px;height:40px}.contact .form{width:520px;text-align:center;padding:40px;background:#f9f9f9;-webkit-box-sizing:border-box;box-sizing:border-box;margin:100px auto;-webkit-transition:0.2s -webkit-transform ease-in-out;transition:0.2s -webkit-transform ease-in-out;transition:0.2s transform ease-in-out;transition:0.2s transform ease-in-out, 0.2s -webkit-transform ease-in-out}.contact .form input[type=text],.contact .form input[type=submit],.contact .form textarea{padding:15px 20px;margin:0;outline:0;width:100%;background:#f9f9f9;border:3px solid #e0e0e0;font-size:18px;font-family:Helvetica Neue, Arial, sans-serif;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none}.contact .form label#content-error{margin-bottom:10px}.contact .form .privacy_checkbox{margin-top:20px;clear:both;color:#909090;font-size:15px;position:relative}.contact .form .privacy_checkbox label#acceptance-error{position:absolute;top:10px;left:39%}.contact .form .privacy_checkbox input{-webkit-transform:translatey(-2px);transform:translatey(-2px)}.contact .form .privacy_tail{font-size:11px;color:#c7c7c7;margin-top:16px;line-height:14px}.contact .form textarea{height:175px;padding:20px}.contact .form input[type="text"]::-webkit-input-placeholder,.contact .form textarea::-webkit-input-placeholder{color:#dadada}.contact .form input[type="text"]::-moz-input-placeholder,.contact .form textarea::-moz-input-placeholder{color:#dadada}.contact .form input[type="text"]::-ms-input-placeholder,.contact .form textarea::-ms-input-placeholder{color:#dadada}.contact .form .col{width:205px;margin:0 0 30px;display:inline-block;float:left}.contact .form .col.last{float:right}.contact .form .submit{margin:30px 0 0;text-align:center;clear:left}.contact .form .submit input{cursor:pointer;display:inline-block;background:#1b1f24;color:#fff;border:0;padding:20px 45px;width:auto}.contact .move_top{-webkit-transform:perspective(1000px) translateY(-200px);transform:perspective(1000px) translateY(-200px)}.contact .move_bottom{-webkit-transform:perspective(1000px) translateY(0);transform:perspective(1000px) translateY(0)}.contact .zoom{-webkit-transform:perspective(1000px) scale(0.5);transform:perspective(1000px) scale(0.5);-webkit-transition:0.3s -webkit-transform ease-in-out;transition:0.3s -webkit-transform ease-in-out;transition:0.3s transform ease-in-out;transition:0.3s transform ease-in-out, 0.3s -webkit-transform ease-in-out}.contact .zoomed{-webkit-transform:perspective(1000px) scale(1);transform:perspective(1000px) scale(1)}.contact .fold{-webkit-transform:perspective(1000px) rotateY(90deg);transform:perspective(1000px) rotateY(90deg)}.contact .unfold{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}.background{background:url("../images/backgrounds/bg1.jpg") no-repeat center top fixed;background-size:cover}.background .countdown span{color:#fff}.background form.subscribe_form input[type="submit"]{color:#000;background:#fff}.background form.subscribe_form input[type="text"]{background:transparent;color:#fff}.background form.subscribe_form input.error[type="text"]{color:red}.background form.subscribe_form input[type="text"]::-webkit-input-placeholder{color:#fff}.background form.subscribe_form input[type="text"]::-moz-input-placeholder{color:#fff}.background form.subscribe_form input[type="text"]::-ms-input-placeholder{color:#fff}.background .contact_us{color:#fff;border-color:#fff}@media only screen and (max-width: 700px){.wrap form.login_form{width:80%;margin:15px auto 0}.wrap form.login_form input{width:49%;margin:0 2% 0 0}.wrap form.login_form input[type="password"]{margin:0}.wrap form.login_form input[type="submit"]{width:100%;margin:15px 0 0}}@media only screen and (max-width: 550px){.wrap{width:90%;margin:50px auto 0}.wrap h1{margin:0 0 50px}.wrap h2,.wrap h3{font-size:18px}.wrap form.subscribe_form{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.wrap form.subscribe_form input{-webkit-box-sizing:border-box;box-sizing:border-box}.wrap form input[type="text"],.wrap form input[type="submit"]{width:100% !important}.wrap form.subscribe_form input[type="submit"]{padding-left:0;padding-right:0;border-left:none}.wrap .contact_us{margin:0 0 50px}.contact .form{width:90%}.contact .form p.col{width:100%}.contact .form input[type="submit"]{width:100%}.wrap form.login_form{width:90%}.wrap form.login_form input{width:100%;margin:0 0 10px 0}.wrap form.login_form input[type="submit"]{margin:10px 0 0}ul,ol{width:80%}blockquote,q{width:70%}}@media only screen and (max-width: 465px){.contact .form .privacy_checkbox label#acceptance-error{top:28px;left:32%}}
|
|
includes/classes/wp-maintenance-mode-admin.php
CHANGED
@@ -419,6 +419,14 @@ if (!class_exists('WP_Maintenance_Mode_Admin')) {
|
|
419 |
$this->delete_cache();
|
420 |
}
|
421 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
}
|
423 |
|
424 |
$this->plugin_settings[$tab] = $_POST['options'][$tab];
|
@@ -446,7 +454,7 @@ if (!class_exists('WP_Maintenance_Mode_Admin')) {
|
|
446 |
}
|
447 |
|
448 |
/**
|
449 |
-
* Builds the data.js file and writes it into
|
450 |
* This file is mandatory for the bot to work correctly.
|
451 |
*
|
452 |
* @param array $messages
|
@@ -482,7 +490,6 @@ if (!class_exists('WP_Maintenance_Mode_Admin')) {
|
|
482 |
// Try to write data.js file
|
483 |
try {
|
484 |
$upload_dir = wp_upload_dir();
|
485 |
-
// if ( file_put_contents( WPMM_PATH . 'assets/js/data.js', $data) === false ){
|
486 |
if ( file_put_contents( trailingslashit($upload_dir['basedir']) . 'data.js', $data) === false ){
|
487 |
throw new Exception(__("WPMM: The file data.js could not be written, the bot will not work correctly.", $this->plugin_slug));
|
488 |
}
|
@@ -628,6 +635,43 @@ if (!class_exists('WP_Maintenance_Mode_Admin')) {
|
|
628 |
return $text;
|
629 |
}
|
630 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
631 |
}
|
632 |
|
633 |
}
|
419 |
$this->delete_cache();
|
420 |
}
|
421 |
break;
|
422 |
+
case 'gdpr':
|
423 |
+
//$custom_css = array();
|
424 |
+
|
425 |
+
$_POST['options']['gdpr']['status'] = (int)$_POST['options']['gdpr']['status'];
|
426 |
+
$_POST['options']['gdpr']['policy_page_label'] = sanitize_text_field($_POST['options']['gdpr']['policy_page_label']);
|
427 |
+
$_POST['options']['gdpr']['policy_page_link'] = sanitize_text_field($_POST['options']['gdpr']['policy_page_link']);
|
428 |
+
$_POST['options']['gdpr']['contact_form_tail'] = sanitize_text_field($_POST['options']['gdpr']['contact_form_tail']);
|
429 |
+
$_POST['options']['gdpr']['subscribe_form_tail'] = sanitize_text_field($_POST['options']['gdpr']['subscribe_form_tail']);
|
430 |
}
|
431 |
|
432 |
$this->plugin_settings[$tab] = $_POST['options'][$tab];
|
454 |
}
|
455 |
|
456 |
/**
|
457 |
+
* Builds the data.js file and writes it into uploads
|
458 |
* This file is mandatory for the bot to work correctly.
|
459 |
*
|
460 |
* @param array $messages
|
490 |
// Try to write data.js file
|
491 |
try {
|
492 |
$upload_dir = wp_upload_dir();
|
|
|
493 |
if ( file_put_contents( trailingslashit($upload_dir['basedir']) . 'data.js', $data) === false ){
|
494 |
throw new Exception(__("WPMM: The file data.js could not be written, the bot will not work correctly.", $this->plugin_slug));
|
495 |
}
|
635 |
return $text;
|
636 |
}
|
637 |
|
638 |
+
public function get_is_policy_available() {
|
639 |
+
if (function_exists('get_privacy_policy_url')) {
|
640 |
+
return true;
|
641 |
+
}
|
642 |
+
return false;
|
643 |
+
}
|
644 |
+
|
645 |
+
public function get_policy_link() {
|
646 |
+
//Check feature is available
|
647 |
+
if($this->get_is_policy_available()) {
|
648 |
+
return get_privacy_policy_url();
|
649 |
+
}
|
650 |
+
}
|
651 |
+
|
652 |
+
public function get_policy_link_message() {
|
653 |
+
$url = $this->get_policy_link();
|
654 |
+
if($this->get_is_policy_available() && $this->plugin_settings['gdpr']['policy_page_link'] === '') {
|
655 |
+
if($url === '') { // No value and feature available
|
656 |
+
return __("Your WordPress version supports Privacy settings but you haven't set any privacy policy page yet. Go to Settings ➡ Privacy to set one.", $this->plugin_slug);
|
657 |
+
}
|
658 |
+
else { // Value and feature available
|
659 |
+
return sprintf(__('The plugin detected this Privacy page: %1$s – %2$sUse this url%3$s', $this->plugin_slug), $url, '<button>', '</button>');
|
660 |
+
}
|
661 |
+
}
|
662 |
+
elseif($this->get_is_policy_available() && $this->plugin_settings['gdpr']['policy_page_link'] != '') { // Feature available and value set
|
663 |
+
if($url != $this->plugin_settings['gdpr']['policy_page_link']) { // Current wp privacy page differs from set value
|
664 |
+
return sprintf(__("Your Privacy page is pointing to a different URL in WordPress settings. If that's correct ignore this message, otherwise %s", $this->plugin_slug), 'UPDATE VALUE TO NEW URL');
|
665 |
+
}
|
666 |
+
}
|
667 |
+
elseif(!$this->get_is_policy_available()) { // No privacy feature available
|
668 |
+
return __("No privacy features detected for your WordPress version. Update WordPress to get this field automatically filled in or type in the URL that points to your privacy policy page.", $this->plugin_slug);
|
669 |
+
}
|
670 |
+
}
|
671 |
+
|
672 |
+
|
673 |
+
|
674 |
+
|
675 |
}
|
676 |
|
677 |
}
|
includes/classes/wp-maintenance-mode.php
CHANGED
@@ -4,7 +4,7 @@ if (!class_exists('WP_Maintenance_Mode')) {
|
|
4 |
|
5 |
class WP_Maintenance_Mode {
|
6 |
|
7 |
-
const VERSION = '2.
|
8 |
|
9 |
protected $plugin_slug = 'wp-maintenance-mode';
|
10 |
protected $plugin_settings;
|
@@ -159,9 +159,16 @@ if (!class_exists('WP_Maintenance_Mode')) {
|
|
159 |
'02_1' => __("Tell me more", $this->plugin_slug),
|
160 |
'02_2' => __("Boring", $this->plugin_slug),
|
161 |
'03' => __("Type your email here…", $this->plugin_slug)
|
162 |
-
|
163 |
'custom_css' => array()
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
165 |
);
|
166 |
}
|
167 |
|
@@ -422,6 +429,15 @@ if (!class_exists('WP_Maintenance_Mode')) {
|
|
422 |
update_option('wpmm_settings', $v2_options);
|
423 |
}
|
424 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
425 |
// set current version
|
426 |
update_option('wpmm_version', WP_Maintenance_Mode::VERSION);
|
427 |
}
|
@@ -528,7 +544,7 @@ if (!class_exists('WP_Maintenance_Mode')) {
|
|
528 |
$text = apply_filters('wpmm_text', do_shortcode($text));
|
529 |
|
530 |
// COUNTDOWN
|
531 |
-
$countdown_start = !empty($this->plugin_settings['modules']['countdown_start']) ? $this->plugin_settings['modules']['countdown_start'] : $this->plugin_settings['general']['
|
532 |
$countdown_end = strtotime($countdown_start . ' +' . $backtime_seconds . ' seconds');
|
533 |
|
534 |
// JS FILES
|
@@ -859,4 +875,4 @@ if (!class_exists('WP_Maintenance_Mode')) {
|
|
859 |
|
860 |
}
|
861 |
|
862 |
-
}
|
4 |
|
5 |
class WP_Maintenance_Mode {
|
6 |
|
7 |
+
const VERSION = '2.2';
|
8 |
|
9 |
protected $plugin_slug = 'wp-maintenance-mode';
|
10 |
protected $plugin_settings;
|
159 |
'02_1' => __("Tell me more", $this->plugin_slug),
|
160 |
'02_2' => __("Boring", $this->plugin_slug),
|
161 |
'03' => __("Type your email here…", $this->plugin_slug)
|
162 |
+
),
|
163 |
'custom_css' => array()
|
164 |
+
),
|
165 |
+
'gdpr' => array(
|
166 |
+
'status' => 0,
|
167 |
+
'policy_page_label' => __('Privacy Policy', $this->plugin_slug),
|
168 |
+
'policy_page_link' => '',
|
169 |
+
'contact_form_tail' => __('This form collects your name and email so that we can reach you back. Check out our <a href="#">Privacy Policy</a> page to fully understand how we protect and manage your submitted data.', $this->plugin_slug),
|
170 |
+
'subscribe_form_tail' => __('This form collects your email so that we can add you to our newsletter list. Check out our <a href="#">Privacy Policy</a> page to fully understand how we protect and manage your submitted data.', $this->plugin_slug),
|
171 |
+
),
|
172 |
);
|
173 |
}
|
174 |
|
429 |
update_option('wpmm_settings', $v2_options);
|
430 |
}
|
431 |
|
432 |
+
/**
|
433 |
+
* Update from =< v2.1.2 to 2.1.5
|
434 |
+
*/
|
435 |
+
if(empty($v2_options['gdpr'])) {
|
436 |
+
$v2_options['gdpr'] = $default_options['gdpr'];
|
437 |
+
// update options
|
438 |
+
update_option('wpmm_settings', $v2_options);
|
439 |
+
}
|
440 |
+
|
441 |
// set current version
|
442 |
update_option('wpmm_version', WP_Maintenance_Mode::VERSION);
|
443 |
}
|
544 |
$text = apply_filters('wpmm_text', do_shortcode($text));
|
545 |
|
546 |
// COUNTDOWN
|
547 |
+
$countdown_start = !empty($this->plugin_settings['modules']['countdown_start']) ? $this->plugin_settings['modules']['countdown_start'] : $this->plugin_settings['general']['status_date'];
|
548 |
$countdown_end = strtotime($countdown_start . ' +' . $backtime_seconds . ' seconds');
|
549 |
|
550 |
// JS FILES
|
875 |
|
876 |
}
|
877 |
|
878 |
+
}
|
readme.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Version 2.
|
2 |
|
3 |
# WP Maintenance Mode
|
4 |
|
@@ -19,6 +19,7 @@ Adds a splash page to your site that lets visitors know your site is down for ma
|
|
19 |
* SEO options;
|
20 |
* Exclude URLs from maintenance.
|
21 |
* Bot functionality to collect the emails in a friendly and efficient way.
|
|
|
22 |
|
23 |
**Credits**
|
24 |
|
1 |
+
# Version 2.2
|
2 |
|
3 |
# WP Maintenance Mode
|
4 |
|
19 |
* SEO options;
|
20 |
* Exclude URLs from maintenance.
|
21 |
* Bot functionality to collect the emails in a friendly and efficient way.
|
22 |
+
* GDPR Ready
|
23 |
|
24 |
**Credits**
|
25 |
|
readme.txt
CHANGED
@@ -1,13 +1,14 @@
|
|
1 |
=== WP Maintenance Mode ===
|
2 |
-
Contributors: Designmodo
|
3 |
Plugin Name: WP Maintenance Mode
|
4 |
Plugin URI: https://designmodo.com/
|
5 |
Author: Designmodo
|
6 |
Author URI: https://designmodo.com/
|
7 |
Tags: maintenance mode, admin, administration, unavailable, coming soon, multisite, landing page, under construction, contact form, subscribe, countdown
|
8 |
Requires at least: 3.5
|
9 |
-
Tested up to: 4.9.
|
10 |
-
Stable tag: 2.
|
|
|
11 |
License: GPL-2.0+
|
12 |
|
13 |
Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page. The new Bot functionality is here!
|
@@ -35,6 +36,7 @@ Also works with WordPress Multisite installs (each blog from the network has it'
|
|
35 |
* SEO options;
|
36 |
* Exclude URLs from maintenance;
|
37 |
* Bot functionality to collect the emails in a friendly and efficient way.
|
|
|
38 |
|
39 |
= Bugs, technical hints or contribute =
|
40 |
|
@@ -75,6 +77,9 @@ If you change your login url, please add the new slug (url: http://domain.com/ne
|
|
75 |
|
76 |
== Changelog ==
|
77 |
|
|
|
|
|
|
|
78 |
= 2.1.2 (04/03/2018) =
|
79 |
* fixed a bug that was breaking the plugin after updating from 2.0.9 to 2.1.1
|
80 |
|
1 |
=== WP Maintenance Mode ===
|
2 |
+
Contributors: Designmodo, impresshq
|
3 |
Plugin Name: WP Maintenance Mode
|
4 |
Plugin URI: https://designmodo.com/
|
5 |
Author: Designmodo
|
6 |
Author URI: https://designmodo.com/
|
7 |
Tags: maintenance mode, admin, administration, unavailable, coming soon, multisite, landing page, under construction, contact form, subscribe, countdown
|
8 |
Requires at least: 3.5
|
9 |
+
Tested up to: 4.9.6
|
10 |
+
Stable tag: 2.2
|
11 |
+
Requires PHP: 5.6
|
12 |
License: GPL-2.0+
|
13 |
|
14 |
Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page. The new Bot functionality is here!
|
36 |
* SEO options;
|
37 |
* Exclude URLs from maintenance;
|
38 |
* Bot functionality to collect the emails in a friendly and efficient way.
|
39 |
+
* GDPR Ready
|
40 |
|
41 |
= Bugs, technical hints or contribute =
|
42 |
|
77 |
|
78 |
== Changelog ==
|
79 |
|
80 |
+
= 2.2 (25/05/2018) =
|
81 |
+
* added GDPR feature
|
82 |
+
|
83 |
= 2.1.2 (04/03/2018) =
|
84 |
* fixed a bug that was breaking the plugin after updating from 2.0.9 to 2.1.1
|
85 |
|
views/maintenance.php
CHANGED
@@ -69,8 +69,15 @@
|
|
69 |
<?php if (!empty($this->plugin_settings['modules']['subscribe_text'])) { ?><h3><?php echo stripslashes($this->plugin_settings['modules']['subscribe_text']); ?></h3><?php } ?>
|
70 |
<div class="subscribe_wrapper" style="min-height: 100px;">
|
71 |
<form class="subscribe_form">
|
72 |
-
<
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
</form>
|
75 |
</div>
|
76 |
<?php } ?>
|
@@ -127,6 +134,11 @@
|
|
127 |
|
128 |
<?php do_action('wpmm_contact_form_after_message'); ?>
|
129 |
|
|
|
|
|
|
|
|
|
|
|
130 |
<p class="submit"><input type="submit" value="<?php _e('Send', $this->plugin_slug); ?>"></p>
|
131 |
|
132 |
<?php do_action('wpmm_contact_form_end'); ?>
|
@@ -137,9 +149,15 @@
|
|
137 |
<a class="contact_us" href="javascript:void(0);" data-open="<?php echo esc_attr($open); ?>" data-close="<?php echo esc_attr($close); ?>"><?php _e('Contact us', $this->plugin_slug); ?></a>
|
138 |
<?php } ?>
|
139 |
|
140 |
-
<?php if (!empty($this->plugin_settings['general']['admin_link']) && $this->plugin_settings['general']['admin_link'] == 1)
|
|
|
141 |
<div class="author_link">
|
142 |
-
|
|
|
|
|
|
|
|
|
|
|
143 |
</div>
|
144 |
<?php } ?>
|
145 |
</div>
|
69 |
<?php if (!empty($this->plugin_settings['modules']['subscribe_text'])) { ?><h3><?php echo stripslashes($this->plugin_settings['modules']['subscribe_text']); ?></h3><?php } ?>
|
70 |
<div class="subscribe_wrapper" style="min-height: 100px;">
|
71 |
<form class="subscribe_form">
|
72 |
+
<div class="subscribe_border">
|
73 |
+
<input type="text" placeholder="<?php _e('your e-mail...', $this->plugin_slug); ?>" name="email" class="email_input" data-rule-required="true" data-rule-email="true" data-rule-required="true" data-rule-email="true" />
|
74 |
+
<input type="submit" value="<?php _e('Subscribe', $this->plugin_slug); ?>" />
|
75 |
+
</div>
|
76 |
+
<?php if (!empty($this->plugin_settings['gdpr']['status']) && $this->plugin_settings['gdpr']['status'] == 1) { ?>
|
77 |
+
<div class="privacy_checkbox"><input type="checkbox" name="acceptance" value="YES" data-rule-required="true" data-msg-required="<?php esc_attr_e('This field is required.', $this->plugin_slug); ?>"><label for="acceptance"><?php _e("I've read and agree with the site's privacy policy", $this->plugin_slug); ?></label></div>
|
78 |
+
<?php if(!empty($this->plugin_settings['gdpr']['subscribe_form_tail'])) { ?>
|
79 |
+
<p class="privacy_tail"><?php echo $this->plugin_settings['gdpr']['subscribe_form_tail']; ?></p>
|
80 |
+
<?php }} ?>
|
81 |
</form>
|
82 |
</div>
|
83 |
<?php } ?>
|
134 |
|
135 |
<?php do_action('wpmm_contact_form_after_message'); ?>
|
136 |
|
137 |
+
<?php if (!empty($this->plugin_settings['gdpr']['status']) && $this->plugin_settings['gdpr']['status'] == 1) { ?>
|
138 |
+
<div class="privacy_checkbox"><input type="checkbox" name="acceptance" value="YES" data-rule-required="true" data-msg-required="<?php esc_attr_e('This field is required.', $this->plugin_slug); ?>"><label for="acceptance"><?php _e("I've read and agree with the site's privacy policy", $this->plugin_slug); ?></label></div>
|
139 |
+
<?php if(!empty($this->plugin_settings['gdpr']['contact_form_tail'])) { ?>
|
140 |
+
<p class="privacy_tail"><?php echo $this->plugin_settings['gdpr']['contact_form_tail']; ?></p>
|
141 |
+
<?php }} ?>
|
142 |
<p class="submit"><input type="submit" value="<?php _e('Send', $this->plugin_slug); ?>"></p>
|
143 |
|
144 |
<?php do_action('wpmm_contact_form_end'); ?>
|
149 |
<a class="contact_us" href="javascript:void(0);" data-open="<?php echo esc_attr($open); ?>" data-close="<?php echo esc_attr($close); ?>"><?php _e('Contact us', $this->plugin_slug); ?></a>
|
150 |
<?php } ?>
|
151 |
|
152 |
+
<?php if ((!empty($this->plugin_settings['general']['admin_link']) && $this->plugin_settings['general']['admin_link'] == 1) ||
|
153 |
+
(!empty($this->plugin_settings['gdpr']['status']) && $this->plugin_settings['gdpr']['status'] == 1)) { ?>
|
154 |
<div class="author_link">
|
155 |
+
<?php if($this->plugin_settings['general']['admin_link'] == 1) { ?>
|
156 |
+
<a href="<?php echo admin_url(); ?>"><?php _e('Dashboard', $this->plugin_slug); ?></a>
|
157 |
+
<?php } ?>
|
158 |
+
<?php if ($this->plugin_settings['gdpr']['status'] == 1) { ?>
|
159 |
+
<a href="<?php echo $this->plugin_settings['gdpr']['policy_page_link']; ?>"><?php echo $this->plugin_settings['gdpr']['policy_page_label']; ?></a>
|
160 |
+
<?php } ?>
|
161 |
</div>
|
162 |
<?php } ?>
|
163 |
</div>
|
views/settings.php
CHANGED
@@ -14,6 +14,7 @@
|
|
14 |
<a class="nav-tab" href="#design"><?php _e('Design', $this->plugin_slug); ?></a>
|
15 |
<a class="nav-tab" href="#modules"><?php _e('Modules', $this->plugin_slug); ?></a>
|
16 |
<a class="nav-tab" href="#bot"><?php _e('Manage Bot', $this->plugin_slug); ?></a>
|
|
|
17 |
</div>
|
18 |
|
19 |
<div class="tabs-content">
|
@@ -441,9 +442,6 @@
|
|
441 |
<table class="form-table">
|
442 |
<tbody>
|
443 |
<tr valign="top">
|
444 |
-
<!-- <th valign="top" colspan="2">
|
445 |
-
<h4><?php _e("Setup the conversation steps to capture more subscribers with this friendly way of asking email addresess.", $this->plugin_slug) ?></h4>
|
446 |
-
</th> -->
|
447 |
<td colspan="2">
|
448 |
<h4><?php _e("Setup the conversation steps to capture more subscribers with this friendly way of asking email addresess.", $this->plugin_slug) ?></h4>
|
449 |
<p><?php _e("You may also want to use these wildcards: {bot_name} and {visitor_name} to make the conversation even more realistic.", $this->plugin_slug) ?></p>
|
@@ -599,12 +597,6 @@
|
|
599 |
?></textarea>
|
600 |
</td>
|
601 |
</tr>
|
602 |
-
<?php
|
603 |
-
/*
|
604 |
-
<input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['general']['redirection'])); ?>" name="options[general][redirection]" />
|
605 |
-
<p class="description"><?php _e('If you want to redirect a user (with no access to Dashboard/Backend) to a URL (different from WordPress Dashboard URL) after login, then define a URL (incl. http://)', $this->plugin_slug); ?></p>
|
606 |
-
*/
|
607 |
-
?>
|
608 |
</tbody>
|
609 |
</table>
|
610 |
|
@@ -614,6 +606,69 @@
|
|
614 |
<input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="bot" name="submit">
|
615 |
</form>
|
616 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
617 |
</div>
|
618 |
</div>
|
619 |
|
14 |
<a class="nav-tab" href="#design"><?php _e('Design', $this->plugin_slug); ?></a>
|
15 |
<a class="nav-tab" href="#modules"><?php _e('Modules', $this->plugin_slug); ?></a>
|
16 |
<a class="nav-tab" href="#bot"><?php _e('Manage Bot', $this->plugin_slug); ?></a>
|
17 |
+
<a class="nav-tab" href="#gdpr"><?php _e('GDPR', $this->plugin_slug); ?></a>
|
18 |
</div>
|
19 |
|
20 |
<div class="tabs-content">
|
442 |
<table class="form-table">
|
443 |
<tbody>
|
444 |
<tr valign="top">
|
|
|
|
|
|
|
445 |
<td colspan="2">
|
446 |
<h4><?php _e("Setup the conversation steps to capture more subscribers with this friendly way of asking email addresess.", $this->plugin_slug) ?></h4>
|
447 |
<p><?php _e("You may also want to use these wildcards: {bot_name} and {visitor_name} to make the conversation even more realistic.", $this->plugin_slug) ?></p>
|
597 |
?></textarea>
|
598 |
</td>
|
599 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
</tbody>
|
601 |
</table>
|
602 |
|
606 |
<input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="bot" name="submit">
|
607 |
</form>
|
608 |
</div>
|
609 |
+
<div id="tab-gdpr" class="hidden">
|
610 |
+
<form method="post">
|
611 |
+
<table class="form-table">
|
612 |
+
<tbody>
|
613 |
+
<tr valign="top">
|
614 |
+
<td colspan="2">
|
615 |
+
<h4><?php _e("To make the plugin GDPR compliant, fill in the details and enable this section.", $this->plugin_slug) ?></h4>
|
616 |
+
<p><?php _e("Here we added some generic texts that you may want to review, change or remove.", $this->plugin_slug) ?></p>
|
617 |
+
</td>
|
618 |
+
</tr>
|
619 |
+
<tr valign="top">
|
620 |
+
<th scope="row"><label for="options[gdpr][status]"><?php _e('Status', $this->plugin_slug); ?></label></th>
|
621 |
+
<td>
|
622 |
+
<label><input type="radio" value="1" name="options[gdpr][status]" <?php checked($this->plugin_settings['gdpr']['status'], 1); ?>> <?php _e('Activated', $this->plugin_slug); ?></label> <br />
|
623 |
+
<label><input type="radio" value="0" name="options[gdpr][status]" <?php checked($this->plugin_settings['gdpr']['status'], 0); ?>> <?php _e('Deactivated', $this->plugin_slug); ?></label>
|
624 |
+
</td>
|
625 |
+
</tr>
|
626 |
+
<tr valign="top">
|
627 |
+
<th scope="row">
|
628 |
+
<label for="options[gdpr][policy_page_label]"><?php _e('Link name', $this->plugin_slug); ?></label>
|
629 |
+
</th>
|
630 |
+
<td>
|
631 |
+
<input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['gdpr']['policy_page_label'])); ?>" name="options[gdpr][policy_page_label]" />
|
632 |
+
<p class="description"><?php _e('Label the link that will be shown on frontend footer', $this->plugin_slug); ?></p>
|
633 |
+
</td>
|
634 |
+
</tr>
|
635 |
+
<tr valign="top">
|
636 |
+
<th scope="row">
|
637 |
+
<label for="options[gdpr][policy_page_link]"><?php _e('P. Policy page link', $this->plugin_slug); ?></label>
|
638 |
+
</th>
|
639 |
+
<td>
|
640 |
+
<input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['gdpr']['policy_page_link'])); ?>" name="options[gdpr][policy_page_link]" />
|
641 |
+
<p class="description"><?php echo $this->get_policy_link_message(); ?></p>
|
642 |
+
<p class="description">REMEMBER: In order to make the privacy policy page accessible you need to add it in General -> Exclude.</p>
|
643 |
+
</td>
|
644 |
+
</tr>
|
645 |
+
<tr valign="top">
|
646 |
+
<th scope="row">
|
647 |
+
<label for="options[gdpr][contact_form_tail]"><?php _e('Contact form \'tail\'', $this->plugin_slug); ?></label>
|
648 |
+
</th>
|
649 |
+
<td>
|
650 |
+
<textarea name="options[gdpr][contact_form_tail]" rows="3" style="width: 600px"><?php echo esc_attr(stripslashes($this->plugin_settings['gdpr']['contact_form_tail'])); ?></textarea>
|
651 |
+
<p class="description"><?php _e('This will be shown together with the acceptance checkbox below the form', $this->plugin_slug); ?></p>
|
652 |
+
</td>
|
653 |
+
</tr>
|
654 |
+
<tr valign="top">
|
655 |
+
<th scope="row">
|
656 |
+
<label for="options[gdpr][subscribe_form_tail]"><?php _e('Subscribe form \'tail\'', $this->plugin_slug); ?></label>
|
657 |
+
</th>
|
658 |
+
<td>
|
659 |
+
<textarea name="options[gdpr][subscribe_form_tail]" rows="3" style="width: 600px"><?php echo esc_attr(stripslashes($this->plugin_settings['gdpr']['subscribe_form_tail'])); ?></textarea>
|
660 |
+
<p class="description"><?php _e('This will be shown together with the acceptance checkbox below the form', $this->plugin_slug); ?></p>
|
661 |
+
</td>
|
662 |
+
</tr>
|
663 |
+
</tbody>
|
664 |
+
</table>
|
665 |
+
|
666 |
+
<?php wp_nonce_field('tab-gdpr'); ?>
|
667 |
+
<input type="hidden" value="gdpr" name="tab" />
|
668 |
+
<input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit" />
|
669 |
+
<input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="gdpr" name="submit">
|
670 |
+
</form>
|
671 |
+
</div>
|
672 |
</div>
|
673 |
</div>
|
674 |
|
wp-maintenance-mode.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* Plugin Name: WP Maintenance Mode
|
7 |
* Plugin URI: https://designmodo.com/
|
8 |
* Description: Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
|
9 |
-
* Version: 2.
|
10 |
* Author: Designmodo
|
11 |
* Author URI: https://designmodo.com/
|
12 |
* Twitter: designmodo
|
6 |
* Plugin Name: WP Maintenance Mode
|
7 |
* Plugin URI: https://designmodo.com/
|
8 |
* Description: Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
|
9 |
+
* Version: 2.2
|
10 |
* Author: Designmodo
|
11 |
* Author URI: https://designmodo.com/
|
12 |
* Twitter: designmodo
|