Changeset 2683288
- Timestamp:
- 02/22/2022 08:36:30 PM (4 years ago)
- Location:
- mini-wp-gdpr
- Files:
-
- 11 edited
- 2 copied
-
tags/1.0.11 (copied) (copied from mini-wp-gdpr/trunk)
-
tags/1.0.11/assets/mini-gdpr-admin.css (modified) (1 diff)
-
tags/1.0.11/assets/mini-gdpr-cookie-popup.css (modified) (1 diff)
-
tags/1.0.11/assets/mini-gdpr-cookie-popup.js (modified) (1 diff)
-
tags/1.0.11/assets/mini-gdpr.css (modified) (1 diff)
-
tags/1.0.11/assets/mini-gdpr.js (modified) (1 diff)
-
tags/1.0.11/readme.txt (copied) (copied from mini-wp-gdpr/trunk/readme.txt) (1 diff)
-
trunk/assets/mini-gdpr-admin.css (modified) (1 diff)
-
trunk/assets/mini-gdpr-cookie-popup.css (modified) (1 diff)
-
trunk/assets/mini-gdpr-cookie-popup.js (modified) (1 diff)
-
trunk/assets/mini-gdpr.css (modified) (1 diff)
-
trunk/assets/mini-gdpr.js (modified) (1 diff)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
mini-wp-gdpr/tags/1.0.11/assets/mini-gdpr-admin.css
r2683207 r2683288 1 /** 2 * Mini GDPR Admin 3 */ 4 .my-account-tab-chooser { 5 margin-left: 1em; 6 } 1 .my-account-tab-chooser{margin-left:1em} -
mini-wp-gdpr/tags/1.0.11/assets/mini-gdpr-cookie-popup.css
r2683207 r2683288 1 /** 2 * Mini GDPR Cookie Popup 3 */ 4 .mgw-cnt { 5 position: fixed; 6 z-index: 1000; 7 } 8 9 .mgw-cnt.mgw-box { 10 width: 16em; 11 border: 3px solid black; 12 /* border: 1px solid black; */ 13 border-radius: 0.25em; 14 /* box-shadow: 0 0 0.5em #00000044; */ 15 box-shadow: 0 0 2em #00000066; 16 } 17 18 .mgw-cnt p, 19 .mgw-nfo p { 20 padding: 1em; 21 margin: 0; 22 background-color: white; 23 color: black; 24 } 25 26 .mgw-cnt.mgw-top { 27 top: 1em; 28 } 29 30 .mgw-cnt.mgw-lft { 31 left: 1em; 32 } 33 34 .mgw-cnt.mgw-hcn { 35 left: 50%; 36 transform: translateX(-50%); 37 } 38 39 .mgw-cnt.mgw-vcn { 40 top: 50%; 41 transform: translateY(-50%); 42 } 43 44 .mgw-hcn.mgw-vcn { 45 transform: translate(-50%,-50%); 46 } 47 48 .mgw-cnt.mgw-rgt { 49 right: 1em; 50 } 51 52 .mgw-cnt.mgw-btm { 53 bottom: 1em; 54 } 55 56 .mgw-cnt .btn-box { 57 display: flex; 58 flex-direction: row; 59 background-color: #888; 60 gap: 1px; 61 } 62 63 .mgw-cnt .btn-box button { 64 flex-grow: 1; 65 flex-basis: 0; 66 padding: 0.75em 0; 67 border-radius: 0; 68 } 69 70 .mgw-cnt .btn-box button.accept { 71 font-weight: bold; 72 } 73 74 .mgw-cnt .btn-box button.more-info { 75 /* background-color: transparent; */ 76 /* border-color: transparent; */ 77 /* color: grey; */ 78 opacity: 0.60; 79 } 80 81 .mgw-cnt.mgw-fin { 82 opacity: 0.0; 83 transition: 0.4s; 84 } 85 86 .mgw-ovl { 87 position: fixed; 88 z-index: 1001; 89 left: 0; 90 top: 0; 91 width: 100%; 92 height: 100%; 93 background-color: #00000088; 94 } 95 96 .mgw-nfo { 97 position: fixed; 98 z-index: 1002; 99 left: 50%; 100 top: 50%; 101 max-width: 80%; 102 max-height: 80%; 103 border-radius: 0.775em; 104 transform: translate(-50%, -50%); 105 border: 3px solid black; 106 background-color: white; 107 display: flex; 108 flex-direction: column; 109 align-items: center; 110 overflow: hidden; 111 box-shadow: 0 0 0.5em #00000044; 112 } 113 114 .mgw-nfo .plglst { 115 overflow-y: auto; 116 width: 100%; 117 } 118 119 .mgw-nfo p { 120 margin: 0.5em; 121 font-weight: bold; 122 } 123 124 .mgw-nfo ul { 125 list-style-type: none; 126 padding: 0; 127 margin: 0; 128 } 129 130 .mgw-nfo li:first-of-type { 131 border-top: 1px solid #666; 132 } 133 134 .mgw-nfo li { 135 padding: 0.75em 0; 136 background-color: #f8f8f8; 137 border-bottom: 1px solid #666; 138 text-align: center; 139 width: 100%; 140 } 141 142 .mgw-nfo button { 143 width: 100%; 144 } 1 .mgw-cnt{position:fixed;z-index:1000}.mgw-cnt.mgw-box{width:16em;border:3px solid black;border-radius:.25em;box-shadow:0 0 2em #00000066}.mgw-cnt p,.mgw-nfo p{padding:1em;margin:0;background-color:white;color:black}.mgw-cnt.mgw-top{top:1em}.mgw-cnt.mgw-lft{left:1em}.mgw-cnt.mgw-hcn{left:50%;transform:translateX(-50%)}.mgw-cnt.mgw-vcn{top:50%;transform:translateY(-50%)}.mgw-hcn.mgw-vcn{transform:translate(-50%,-50%)}.mgw-cnt.mgw-rgt{right:1em}.mgw-cnt.mgw-btm{bottom:1em}.mgw-cnt .btn-box{display:flex;flex-direction:row;background-color:#888;gap:1px}.mgw-cnt .btn-box button{flex-grow:1;flex-basis:0;padding:.75em 0;border-radius:0}.mgw-cnt .btn-box button.accept{font-weight:bold}.mgw-cnt .btn-box button.more-info{opacity:.60}.mgw-cnt.mgw-fin{opacity:0;transition:.4s}.mgw-ovl{position:fixed;z-index:1001;left:0;top:0;width:100%;height:100%;background-color:#00000088}.mgw-nfo{position:fixed;z-index:1002;left:50%;top:50%;max-width:80%;max-height:80%;border-radius:.775em;transform:translate(-50%,-50%);border:3px solid black;background-color:white;display:flex;flex-direction:column;align-items:center;overflow:hidden;box-shadow:0 0 .5em #00000044}.mgw-nfo .plglst{overflow-y:auto;width:100%}.mgw-nfo p{margin:.5em;font-weight:bold}.mgw-nfo ul{list-style-type:none;padding:0;margin:0}.mgw-nfo li:first-of-type{border-top:1px solid #666}.mgw-nfo li{padding:.75em 0;background-color:#f8f8f8;border-bottom:1px solid #666;text-align:center;width:100%}.mgw-nfo button{width:100%} -
mini-wp-gdpr/tags/1.0.11/assets/mini-gdpr-cookie-popup.js
r2683207 r2683288 1 /** 2 * Mini GDPR Cookie Popup 3 */ 4 document.addEventListener('DOMContentLoaded', function() { 5 'use strict'; 6 7 if (typeof mgwcsData != 'undefined') { 8 var hasConsented = false; 9 10 // console.log(typeof window.localStorage); 11 mgwcsData.blkon = (mgwcsData.blkon == '1'); 12 mgwcsData.always = (mgwcsData.always == '1'); 13 14 console.log( mgwcsData ); 15 16 if (typeof localStorage !== 'undefined') { 17 var consentDate = Date.parse(localStorage.getItem(mgwcsData.cn)); 18 if (consentDate) { 19 var now = new Date(); 20 var consentAge = Math.round((now - consentDate) / 1000.0); 21 var maxAge = parseInt(mgwcsData.cd) * 86400; // 1 day === 86400 secs 22 23 // console.log( `Consent age: ${consentAge}`); 24 25 hasConsented = (consentAge < maxAge); 26 } 27 } else { 28 // console.log( 'ccc' ); 29 document.cookie.split(';').forEach(function(keyValuePair) { 30 if (keyValuePair.split('=')[0].trim().startsWith(mgwcsData.cn)) { 31 // console.log(`Found: ${keyValuePair}`); 32 hasConsented = true; 33 } 34 }); 35 } 36 37 if (hasConsented) { 38 // console.log('User has consented'); 39 insertBlockedScripts(); 40 } else { 41 // console.log('User has NOT consented'); 42 mgwShowPopup(); 43 } 44 } 45 }); 46 47 48 function mgwShowPopup() { 49 var popupContainer = document.createElement('div'); 50 popupContainer.innerHTML = `<p>${mgwcsData.msg}</p><div class="btn-box"><button class="accept" onclick="mgwConsentToScripts()">${mgwcsData.ok}</button><button class="more-info" onclick="mgwShowBlockedScripts()">${mgwcsData.mre}</button></div>`; 51 popupContainer.id = 'mgwcsCntr'; 52 53 if (Array.isArray(mgwcsData.cls)) { 54 popupContainer.className = mgwcsData.cls.join(' '); 55 } 56 57 document.body.appendChild(popupContainer); 58 } 59 60 61 function mgwConsentToScripts() { 62 var container = document.getElementById('mgwcsCntr'); 63 if (container) { 64 if (typeof localStorage !== 'undefined') { 65 localStorage.setItem(mgwcsData.cn, new Date()); 66 } else { 67 var expiresWhen = new Date(); 68 // console.log( `Duration: ${mgwcsData.cd}` ); 69 expiresWhen.setDate(expiresWhen.getDate() + parseInt(mgwcsData.cd)); 70 // console.log( `Expire: ${result.toUTCString()}` ); 71 72 document.cookie = `${mgwcsData.cn}=true; expires=${expiresWhen.toUTCString()}; Secure`; 73 } 74 75 insertBlockedScripts(); 76 77 container.className += ' mgw-fin'; 78 79 setTimeout( 80 function() { 81 document.getElementById('mgwcsCntr').remove(); 82 }, 83 500 84 ); 85 } 86 } 87 88 function insertBlockedScripts() { 89 // console.log( `mgwcsData.blkon: ${mgwcsData.blkon}` ); 90 if (mgwcsData.blkon) { 91 console.log('Unblocking scripts'); 92 for (const scriptHandle in mgwcsData.meta) { 93 // console.log(mgwcsData.meta[scriptHandle].src); 94 95 var scriptElement = document.createElement('script'); 96 scriptElement.setAttribute('src', mgwcsData.meta[scriptHandle].src); 97 document.head.appendChild(scriptElement); 98 99 if (mgwcsData.meta[scriptHandle].extra) { 100 scriptElement = document.createElement('extra'); 101 scriptElement.appendChild( 102 document.createTextNode(mgwcsData.meta[scriptHandle].after) 103 ); 104 document.head.appendChild(scriptElement); 105 } 106 107 if (mgwcsData.meta[scriptHandle].after) { 108 scriptElement = document.createElement('script'); 109 scriptElement.appendChild( 110 document.createTextNode(mgwcsData.meta[scriptHandle].after) 111 ); 112 document.head.appendChild(scriptElement); 113 } 114 } 115 } 116 } 117 118 function mgwShowBlockedScripts() { 119 var overlayContainer = document.createElement('div'); 120 overlayContainer.id = 'mgwcsOvly'; 121 overlayContainer.className = 'mgw-ovl'; 122 overlayContainer.addEventListener('click', mgwCloseBlockedScripts); 123 124 var overlayPanel = document.createElement('div'); 125 overlayPanel.className = 'mgw-nfo'; 126 overlayContainer.appendChild(overlayPanel); 127 128 // console.log( mgwcsData.meta ); 129 // console.log(Object.keys(mgwcsData.meta).length); 130 131 // if( mgwcsData.meta.length ) { 132 if (Object.keys(mgwcsData.meta).length) { 133 var blurb = document.createElement('p'); 134 blurb.innerHTML = mgwcsData.nfo1; 135 overlayPanel.appendChild(blurb); 136 137 var scriptList = document.createElement('ul'); 138 139 // for( var foo = 0; foo < 20; ++foo ) { 140 for (const scriptHandle in mgwcsData.meta) { 141 var listItem = document.createElement('li'); 142 listItem.innerHTML = mgwcsData.meta[scriptHandle].description; 143 scriptList.appendChild(listItem); 144 } 145 // } 146 147 var wrapper = document.createElement('div'); 148 wrapper.className = 'plglst'; 149 wrapper.appendChild(scriptList); 150 overlayPanel.appendChild(wrapper); 151 } else { 152 var blurb = document.createElement('p'); 153 blurb.innerHTML = mgwcsData.nfo2; 154 overlayPanel.appendChild(blurb); 155 } 156 157 var closeButton = document.createElement('button'); 158 closeButton.innerText = 'Close'; 159 closeButton.addEventListener('DOMContentLoaded', mgwCloseBlockedScripts); 160 161 overlayPanel.appendChild(closeButton); 162 163 document.body.appendChild(overlayContainer); 164 } 165 166 function mgwCloseBlockedScripts() { 167 var overlayContainer = document.getElementById('mgwcsOvly'); 168 if (overlayContainer) { 169 overlayContainer.remove(); 170 } 171 } 1 function mgwShowPopup(){var e=document.createElement("div");e.innerHTML=`<p>${mgwcsData.msg}</p><div class="btn-box"><button class="accept" onclick="mgwConsentToScripts()">${mgwcsData.ok}</button><button class="more-info" onclick="mgwShowBlockedScripts()">${mgwcsData.mre}</button></div>`,e.id="mgwcsCntr",Array.isArray(mgwcsData.cls)&&(e.className=mgwcsData.cls.join(" ")),document.body.appendChild(e)}function mgwConsentToScripts(){var e=document.getElementById("mgwcsCntr");if(e){if("undefined"!=typeof localStorage)localStorage.setItem(mgwcsData.cn,new Date);else{var t=new Date;t.setDate(t.getDate()+parseInt(mgwcsData.cd)),document.cookie=`${mgwcsData.cn}=true; expires=${t.toUTCString()}; Secure`}insertBlockedScripts(),e.className+=" mgw-fin",setTimeout((function(){document.getElementById("mgwcsCntr").remove()}),500)}}function insertBlockedScripts(){if(mgwcsData.blkon)for(const t in mgwcsData.meta){var e=document.createElement("script");e.setAttribute("src",mgwcsData.meta[t].src),document.head.appendChild(e),mgwcsData.meta[t].extra&&((e=document.createElement("extra")).appendChild(document.createTextNode(mgwcsData.meta[t].after)),document.head.appendChild(e)),mgwcsData.meta[t].after&&((e=document.createElement("script")).appendChild(document.createTextNode(mgwcsData.meta[t].after)),document.head.appendChild(e))}}function mgwShowBlockedScripts(){var e=document.createElement("div");e.id="mgwcsOvly",e.className="mgw-ovl",e.addEventListener("click",mgwCloseBlockedScripts);var t=document.createElement("div");if(t.className="mgw-nfo",e.appendChild(t),Object.keys(mgwcsData.meta).length){(m=document.createElement("p")).innerHTML=mgwcsData.nfo1,t.appendChild(m);var a=document.createElement("ul");for(const e in mgwcsData.meta){var n=document.createElement("li");n.innerHTML=mgwcsData.meta[e].description,a.appendChild(n)}var c=document.createElement("div");c.className="plglst",c.appendChild(a),t.appendChild(c)}else{var m;(m=document.createElement("p")).innerHTML=mgwcsData.nfo2,t.appendChild(m)}var o=document.createElement("button");o.innerText="Close",o.addEventListener("DOMContentLoaded",mgwCloseBlockedScripts),t.appendChild(o),document.body.appendChild(e)}function mgwCloseBlockedScripts(){var e=document.getElementById("mgwcsOvly");e&&e.remove()}document.addEventListener("DOMContentLoaded",(function(){"use strict";if("undefined"!=typeof mgwcsData){var e=!1;if(mgwcsData.blkon="1"==mgwcsData.blkon,mgwcsData.always="1"==mgwcsData.always,"undefined"!=typeof localStorage){var t=Date.parse(localStorage.getItem(mgwcsData.cn));if(t){var a=new Date,n=Math.round((a-t)/1e3),c=86400*parseInt(mgwcsData.cd);e=n<c}}else document.cookie.split(";").forEach((function(t){t.split("=")[0].trim().startsWith(mgwcsData.cn)&&(e=!0)}));e?insertBlockedScripts():mgwShowPopup()}})); -
mini-wp-gdpr/tags/1.0.11/assets/mini-gdpr.css
r2683207 r2683288 1 /** 2 * Mini GDPR 3 */ 4 .mini-gdpr-form label { 5 display: inline-flex; 6 flex-direction: row; 7 gap: 0.5em; 8 align-items: flex-start; 9 } 10 11 .mini-gdpr-form input[type="checkbox"] { 12 margin-top: 0.5em; 13 } 1 .mini-gdpr-form label{display:inline-flex;flex-direction:row;gap:.5em;align-items:flex-start}.mini-gdpr-form input[type="checkbox"]{margin-top:.5em} -
mini-wp-gdpr/tags/1.0.11/assets/mini-gdpr.js
r2683207 r2683288 1 /** 2 * Mini GDPR 3 */ 4 (function($) { 5 'use strict'; 6 $(window).on('load', function() { 7 console.log('Mini GDPR : load'); 8 9 if (typeof miniWpGdpr != 'undefined') { 10 $('form .mini-gdpr-checkbox').closest('form').submit(function(event) { 11 if (!$(event.target).find('.mini-gdpr-checkbox').prop('checked')) { 12 event.preventDefault(); 13 14 alert(miniWpGdpr.termsNotAccepted); 15 } 16 }); 17 18 if (miniWpGdpr.acceptAction) { 19 $('.mini-gdpr-form .mini-gdpr-checkbox').change(function(event) { 20 if ($(this).prop('checked')) { 21 var container = $(this).closest('.mini-gdpr-form'); 22 $(this).delay(250).prop('disabled', true); 23 // $(this).css('cursor', 'wait'); 24 25 var request = { 26 action: miniWpGdpr.acceptAction, 27 nonce: miniWpGdpr.acceptNonce, 28 terms: ($(this).prop("checked") ? '1' : '0'), 29 }; 30 31 $.post(miniWpGdpr.ajaxUrl, request) 32 .done(function(response) { 33 // OK 34 if (response.success === '1') { 35 if (!response.message) { 36 response.message = 'OK'; 37 } 38 $(container).fadeOut(400); 39 $(`<p>${response.message}</p>`).insertAfter(container).hide().delay(400).fadeIn(); 40 } 41 }) 42 .fail(function(response) { 43 console.log(response); 44 }) 45 .always(function(response) { 46 // alert("always"); 47 }); 48 } 49 50 }); 51 } 52 } 53 }); 54 })(jQuery); 1 !function(e){"use strict";e(window).on("load",(function(){"undefined"!=typeof miniWpGdpr&&(e("form .mini-gdpr-checkbox").closest("form").submit((function(i){e(i.target).find(".mini-gdpr-checkbox").prop("checked")||(i.preventDefault(),alert(miniWpGdpr.termsNotAccepted))})),miniWpGdpr.acceptAction&&e(".mini-gdpr-form .mini-gdpr-checkbox").change((function(i){if(e(this).prop("checked")){var n=e(this).closest(".mini-gdpr-form");e(this).delay(250).prop("disabled",!0);var c={action:miniWpGdpr.acceptAction,nonce:miniWpGdpr.acceptNonce,terms:e(this).prop("checked")?"1":"0"};e.post(miniWpGdpr.ajaxUrl,c).done((function(i){"1"===i.success&&(i.message||(i.message="OK"),e(n).fadeOut(400),e(`<p>${i.message}</p>`).insertAfter(n).hide().delay(400).fadeIn())})).fail((function(e){})).always((function(e){}))}})))}))}(jQuery); -
mini-wp-gdpr/tags/1.0.11/readme.txt
r2683260 r2683288 15 15 Features include a cookie and tracking-script consent popup, and useful WooCommerce integration. It logs when users first accept your privacy policy and can also inject your Google Analytics tracking code for you. 16 16 17 Installing this plugin is no guarantee that your site will magically become fully GDPR compliant, but it should make it nuch easier for you to get there.17 Installing this plugin is no guarantee that your site will magically become fully GDPR compliant, but it should make it much easier for you to get there. 18 18 19 19 == Installation == -
mini-wp-gdpr/trunk/assets/mini-gdpr-admin.css
r2683207 r2683288 1 /** 2 * Mini GDPR Admin 3 */ 4 .my-account-tab-chooser { 5 margin-left: 1em; 6 } 1 .my-account-tab-chooser{margin-left:1em} -
mini-wp-gdpr/trunk/assets/mini-gdpr-cookie-popup.css
r2683207 r2683288 1 /** 2 * Mini GDPR Cookie Popup 3 */ 4 .mgw-cnt { 5 position: fixed; 6 z-index: 1000; 7 } 8 9 .mgw-cnt.mgw-box { 10 width: 16em; 11 border: 3px solid black; 12 /* border: 1px solid black; */ 13 border-radius: 0.25em; 14 /* box-shadow: 0 0 0.5em #00000044; */ 15 box-shadow: 0 0 2em #00000066; 16 } 17 18 .mgw-cnt p, 19 .mgw-nfo p { 20 padding: 1em; 21 margin: 0; 22 background-color: white; 23 color: black; 24 } 25 26 .mgw-cnt.mgw-top { 27 top: 1em; 28 } 29 30 .mgw-cnt.mgw-lft { 31 left: 1em; 32 } 33 34 .mgw-cnt.mgw-hcn { 35 left: 50%; 36 transform: translateX(-50%); 37 } 38 39 .mgw-cnt.mgw-vcn { 40 top: 50%; 41 transform: translateY(-50%); 42 } 43 44 .mgw-hcn.mgw-vcn { 45 transform: translate(-50%,-50%); 46 } 47 48 .mgw-cnt.mgw-rgt { 49 right: 1em; 50 } 51 52 .mgw-cnt.mgw-btm { 53 bottom: 1em; 54 } 55 56 .mgw-cnt .btn-box { 57 display: flex; 58 flex-direction: row; 59 background-color: #888; 60 gap: 1px; 61 } 62 63 .mgw-cnt .btn-box button { 64 flex-grow: 1; 65 flex-basis: 0; 66 padding: 0.75em 0; 67 border-radius: 0; 68 } 69 70 .mgw-cnt .btn-box button.accept { 71 font-weight: bold; 72 } 73 74 .mgw-cnt .btn-box button.more-info { 75 /* background-color: transparent; */ 76 /* border-color: transparent; */ 77 /* color: grey; */ 78 opacity: 0.60; 79 } 80 81 .mgw-cnt.mgw-fin { 82 opacity: 0.0; 83 transition: 0.4s; 84 } 85 86 .mgw-ovl { 87 position: fixed; 88 z-index: 1001; 89 left: 0; 90 top: 0; 91 width: 100%; 92 height: 100%; 93 background-color: #00000088; 94 } 95 96 .mgw-nfo { 97 position: fixed; 98 z-index: 1002; 99 left: 50%; 100 top: 50%; 101 max-width: 80%; 102 max-height: 80%; 103 border-radius: 0.775em; 104 transform: translate(-50%, -50%); 105 border: 3px solid black; 106 background-color: white; 107 display: flex; 108 flex-direction: column; 109 align-items: center; 110 overflow: hidden; 111 box-shadow: 0 0 0.5em #00000044; 112 } 113 114 .mgw-nfo .plglst { 115 overflow-y: auto; 116 width: 100%; 117 } 118 119 .mgw-nfo p { 120 margin: 0.5em; 121 font-weight: bold; 122 } 123 124 .mgw-nfo ul { 125 list-style-type: none; 126 padding: 0; 127 margin: 0; 128 } 129 130 .mgw-nfo li:first-of-type { 131 border-top: 1px solid #666; 132 } 133 134 .mgw-nfo li { 135 padding: 0.75em 0; 136 background-color: #f8f8f8; 137 border-bottom: 1px solid #666; 138 text-align: center; 139 width: 100%; 140 } 141 142 .mgw-nfo button { 143 width: 100%; 144 } 1 .mgw-cnt{position:fixed;z-index:1000}.mgw-cnt.mgw-box{width:16em;border:3px solid black;border-radius:.25em;box-shadow:0 0 2em #00000066}.mgw-cnt p,.mgw-nfo p{padding:1em;margin:0;background-color:white;color:black}.mgw-cnt.mgw-top{top:1em}.mgw-cnt.mgw-lft{left:1em}.mgw-cnt.mgw-hcn{left:50%;transform:translateX(-50%)}.mgw-cnt.mgw-vcn{top:50%;transform:translateY(-50%)}.mgw-hcn.mgw-vcn{transform:translate(-50%,-50%)}.mgw-cnt.mgw-rgt{right:1em}.mgw-cnt.mgw-btm{bottom:1em}.mgw-cnt .btn-box{display:flex;flex-direction:row;background-color:#888;gap:1px}.mgw-cnt .btn-box button{flex-grow:1;flex-basis:0;padding:.75em 0;border-radius:0}.mgw-cnt .btn-box button.accept{font-weight:bold}.mgw-cnt .btn-box button.more-info{opacity:.60}.mgw-cnt.mgw-fin{opacity:0;transition:.4s}.mgw-ovl{position:fixed;z-index:1001;left:0;top:0;width:100%;height:100%;background-color:#00000088}.mgw-nfo{position:fixed;z-index:1002;left:50%;top:50%;max-width:80%;max-height:80%;border-radius:.775em;transform:translate(-50%,-50%);border:3px solid black;background-color:white;display:flex;flex-direction:column;align-items:center;overflow:hidden;box-shadow:0 0 .5em #00000044}.mgw-nfo .plglst{overflow-y:auto;width:100%}.mgw-nfo p{margin:.5em;font-weight:bold}.mgw-nfo ul{list-style-type:none;padding:0;margin:0}.mgw-nfo li:first-of-type{border-top:1px solid #666}.mgw-nfo li{padding:.75em 0;background-color:#f8f8f8;border-bottom:1px solid #666;text-align:center;width:100%}.mgw-nfo button{width:100%} -
mini-wp-gdpr/trunk/assets/mini-gdpr-cookie-popup.js
r2683207 r2683288 1 /** 2 * Mini GDPR Cookie Popup 3 */ 4 document.addEventListener('DOMContentLoaded', function() { 5 'use strict'; 6 7 if (typeof mgwcsData != 'undefined') { 8 var hasConsented = false; 9 10 // console.log(typeof window.localStorage); 11 mgwcsData.blkon = (mgwcsData.blkon == '1'); 12 mgwcsData.always = (mgwcsData.always == '1'); 13 14 console.log( mgwcsData ); 15 16 if (typeof localStorage !== 'undefined') { 17 var consentDate = Date.parse(localStorage.getItem(mgwcsData.cn)); 18 if (consentDate) { 19 var now = new Date(); 20 var consentAge = Math.round((now - consentDate) / 1000.0); 21 var maxAge = parseInt(mgwcsData.cd) * 86400; // 1 day === 86400 secs 22 23 // console.log( `Consent age: ${consentAge}`); 24 25 hasConsented = (consentAge < maxAge); 26 } 27 } else { 28 // console.log( 'ccc' ); 29 document.cookie.split(';').forEach(function(keyValuePair) { 30 if (keyValuePair.split('=')[0].trim().startsWith(mgwcsData.cn)) { 31 // console.log(`Found: ${keyValuePair}`); 32 hasConsented = true; 33 } 34 }); 35 } 36 37 if (hasConsented) { 38 // console.log('User has consented'); 39 insertBlockedScripts(); 40 } else { 41 // console.log('User has NOT consented'); 42 mgwShowPopup(); 43 } 44 } 45 }); 46 47 48 function mgwShowPopup() { 49 var popupContainer = document.createElement('div'); 50 popupContainer.innerHTML = `<p>${mgwcsData.msg}</p><div class="btn-box"><button class="accept" onclick="mgwConsentToScripts()">${mgwcsData.ok}</button><button class="more-info" onclick="mgwShowBlockedScripts()">${mgwcsData.mre}</button></div>`; 51 popupContainer.id = 'mgwcsCntr'; 52 53 if (Array.isArray(mgwcsData.cls)) { 54 popupContainer.className = mgwcsData.cls.join(' '); 55 } 56 57 document.body.appendChild(popupContainer); 58 } 59 60 61 function mgwConsentToScripts() { 62 var container = document.getElementById('mgwcsCntr'); 63 if (container) { 64 if (typeof localStorage !== 'undefined') { 65 localStorage.setItem(mgwcsData.cn, new Date()); 66 } else { 67 var expiresWhen = new Date(); 68 // console.log( `Duration: ${mgwcsData.cd}` ); 69 expiresWhen.setDate(expiresWhen.getDate() + parseInt(mgwcsData.cd)); 70 // console.log( `Expire: ${result.toUTCString()}` ); 71 72 document.cookie = `${mgwcsData.cn}=true; expires=${expiresWhen.toUTCString()}; Secure`; 73 } 74 75 insertBlockedScripts(); 76 77 container.className += ' mgw-fin'; 78 79 setTimeout( 80 function() { 81 document.getElementById('mgwcsCntr').remove(); 82 }, 83 500 84 ); 85 } 86 } 87 88 function insertBlockedScripts() { 89 // console.log( `mgwcsData.blkon: ${mgwcsData.blkon}` ); 90 if (mgwcsData.blkon) { 91 console.log('Unblocking scripts'); 92 for (const scriptHandle in mgwcsData.meta) { 93 // console.log(mgwcsData.meta[scriptHandle].src); 94 95 var scriptElement = document.createElement('script'); 96 scriptElement.setAttribute('src', mgwcsData.meta[scriptHandle].src); 97 document.head.appendChild(scriptElement); 98 99 if (mgwcsData.meta[scriptHandle].extra) { 100 scriptElement = document.createElement('extra'); 101 scriptElement.appendChild( 102 document.createTextNode(mgwcsData.meta[scriptHandle].after) 103 ); 104 document.head.appendChild(scriptElement); 105 } 106 107 if (mgwcsData.meta[scriptHandle].after) { 108 scriptElement = document.createElement('script'); 109 scriptElement.appendChild( 110 document.createTextNode(mgwcsData.meta[scriptHandle].after) 111 ); 112 document.head.appendChild(scriptElement); 113 } 114 } 115 } 116 } 117 118 function mgwShowBlockedScripts() { 119 var overlayContainer = document.createElement('div'); 120 overlayContainer.id = 'mgwcsOvly'; 121 overlayContainer.className = 'mgw-ovl'; 122 overlayContainer.addEventListener('click', mgwCloseBlockedScripts); 123 124 var overlayPanel = document.createElement('div'); 125 overlayPanel.className = 'mgw-nfo'; 126 overlayContainer.appendChild(overlayPanel); 127 128 // console.log( mgwcsData.meta ); 129 // console.log(Object.keys(mgwcsData.meta).length); 130 131 // if( mgwcsData.meta.length ) { 132 if (Object.keys(mgwcsData.meta).length) { 133 var blurb = document.createElement('p'); 134 blurb.innerHTML = mgwcsData.nfo1; 135 overlayPanel.appendChild(blurb); 136 137 var scriptList = document.createElement('ul'); 138 139 // for( var foo = 0; foo < 20; ++foo ) { 140 for (const scriptHandle in mgwcsData.meta) { 141 var listItem = document.createElement('li'); 142 listItem.innerHTML = mgwcsData.meta[scriptHandle].description; 143 scriptList.appendChild(listItem); 144 } 145 // } 146 147 var wrapper = document.createElement('div'); 148 wrapper.className = 'plglst'; 149 wrapper.appendChild(scriptList); 150 overlayPanel.appendChild(wrapper); 151 } else { 152 var blurb = document.createElement('p'); 153 blurb.innerHTML = mgwcsData.nfo2; 154 overlayPanel.appendChild(blurb); 155 } 156 157 var closeButton = document.createElement('button'); 158 closeButton.innerText = 'Close'; 159 closeButton.addEventListener('DOMContentLoaded', mgwCloseBlockedScripts); 160 161 overlayPanel.appendChild(closeButton); 162 163 document.body.appendChild(overlayContainer); 164 } 165 166 function mgwCloseBlockedScripts() { 167 var overlayContainer = document.getElementById('mgwcsOvly'); 168 if (overlayContainer) { 169 overlayContainer.remove(); 170 } 171 } 1 function mgwShowPopup(){var e=document.createElement("div");e.innerHTML=`<p>${mgwcsData.msg}</p><div class="btn-box"><button class="accept" onclick="mgwConsentToScripts()">${mgwcsData.ok}</button><button class="more-info" onclick="mgwShowBlockedScripts()">${mgwcsData.mre}</button></div>`,e.id="mgwcsCntr",Array.isArray(mgwcsData.cls)&&(e.className=mgwcsData.cls.join(" ")),document.body.appendChild(e)}function mgwConsentToScripts(){var e=document.getElementById("mgwcsCntr");if(e){if("undefined"!=typeof localStorage)localStorage.setItem(mgwcsData.cn,new Date);else{var t=new Date;t.setDate(t.getDate()+parseInt(mgwcsData.cd)),document.cookie=`${mgwcsData.cn}=true; expires=${t.toUTCString()}; Secure`}insertBlockedScripts(),e.className+=" mgw-fin",setTimeout((function(){document.getElementById("mgwcsCntr").remove()}),500)}}function insertBlockedScripts(){if(mgwcsData.blkon)for(const t in mgwcsData.meta){var e=document.createElement("script");e.setAttribute("src",mgwcsData.meta[t].src),document.head.appendChild(e),mgwcsData.meta[t].extra&&((e=document.createElement("extra")).appendChild(document.createTextNode(mgwcsData.meta[t].after)),document.head.appendChild(e)),mgwcsData.meta[t].after&&((e=document.createElement("script")).appendChild(document.createTextNode(mgwcsData.meta[t].after)),document.head.appendChild(e))}}function mgwShowBlockedScripts(){var e=document.createElement("div");e.id="mgwcsOvly",e.className="mgw-ovl",e.addEventListener("click",mgwCloseBlockedScripts);var t=document.createElement("div");if(t.className="mgw-nfo",e.appendChild(t),Object.keys(mgwcsData.meta).length){(m=document.createElement("p")).innerHTML=mgwcsData.nfo1,t.appendChild(m);var a=document.createElement("ul");for(const e in mgwcsData.meta){var n=document.createElement("li");n.innerHTML=mgwcsData.meta[e].description,a.appendChild(n)}var c=document.createElement("div");c.className="plglst",c.appendChild(a),t.appendChild(c)}else{var m;(m=document.createElement("p")).innerHTML=mgwcsData.nfo2,t.appendChild(m)}var o=document.createElement("button");o.innerText="Close",o.addEventListener("DOMContentLoaded",mgwCloseBlockedScripts),t.appendChild(o),document.body.appendChild(e)}function mgwCloseBlockedScripts(){var e=document.getElementById("mgwcsOvly");e&&e.remove()}document.addEventListener("DOMContentLoaded",(function(){"use strict";if("undefined"!=typeof mgwcsData){var e=!1;if(mgwcsData.blkon="1"==mgwcsData.blkon,mgwcsData.always="1"==mgwcsData.always,"undefined"!=typeof localStorage){var t=Date.parse(localStorage.getItem(mgwcsData.cn));if(t){var a=new Date,n=Math.round((a-t)/1e3),c=86400*parseInt(mgwcsData.cd);e=n<c}}else document.cookie.split(";").forEach((function(t){t.split("=")[0].trim().startsWith(mgwcsData.cn)&&(e=!0)}));e?insertBlockedScripts():mgwShowPopup()}})); -
mini-wp-gdpr/trunk/assets/mini-gdpr.css
r2683207 r2683288 1 /** 2 * Mini GDPR 3 */ 4 .mini-gdpr-form label { 5 display: inline-flex; 6 flex-direction: row; 7 gap: 0.5em; 8 align-items: flex-start; 9 } 10 11 .mini-gdpr-form input[type="checkbox"] { 12 margin-top: 0.5em; 13 } 1 .mini-gdpr-form label{display:inline-flex;flex-direction:row;gap:.5em;align-items:flex-start}.mini-gdpr-form input[type="checkbox"]{margin-top:.5em} -
mini-wp-gdpr/trunk/assets/mini-gdpr.js
r2683207 r2683288 1 /** 2 * Mini GDPR 3 */ 4 (function($) { 5 'use strict'; 6 $(window).on('load', function() { 7 console.log('Mini GDPR : load'); 8 9 if (typeof miniWpGdpr != 'undefined') { 10 $('form .mini-gdpr-checkbox').closest('form').submit(function(event) { 11 if (!$(event.target).find('.mini-gdpr-checkbox').prop('checked')) { 12 event.preventDefault(); 13 14 alert(miniWpGdpr.termsNotAccepted); 15 } 16 }); 17 18 if (miniWpGdpr.acceptAction) { 19 $('.mini-gdpr-form .mini-gdpr-checkbox').change(function(event) { 20 if ($(this).prop('checked')) { 21 var container = $(this).closest('.mini-gdpr-form'); 22 $(this).delay(250).prop('disabled', true); 23 // $(this).css('cursor', 'wait'); 24 25 var request = { 26 action: miniWpGdpr.acceptAction, 27 nonce: miniWpGdpr.acceptNonce, 28 terms: ($(this).prop("checked") ? '1' : '0'), 29 }; 30 31 $.post(miniWpGdpr.ajaxUrl, request) 32 .done(function(response) { 33 // OK 34 if (response.success === '1') { 35 if (!response.message) { 36 response.message = 'OK'; 37 } 38 $(container).fadeOut(400); 39 $(`<p>${response.message}</p>`).insertAfter(container).hide().delay(400).fadeIn(); 40 } 41 }) 42 .fail(function(response) { 43 console.log(response); 44 }) 45 .always(function(response) { 46 // alert("always"); 47 }); 48 } 49 50 }); 51 } 52 } 53 }); 54 })(jQuery); 1 !function(e){"use strict";e(window).on("load",(function(){"undefined"!=typeof miniWpGdpr&&(e("form .mini-gdpr-checkbox").closest("form").submit((function(i){e(i.target).find(".mini-gdpr-checkbox").prop("checked")||(i.preventDefault(),alert(miniWpGdpr.termsNotAccepted))})),miniWpGdpr.acceptAction&&e(".mini-gdpr-form .mini-gdpr-checkbox").change((function(i){if(e(this).prop("checked")){var n=e(this).closest(".mini-gdpr-form");e(this).delay(250).prop("disabled",!0);var c={action:miniWpGdpr.acceptAction,nonce:miniWpGdpr.acceptNonce,terms:e(this).prop("checked")?"1":"0"};e.post(miniWpGdpr.ajaxUrl,c).done((function(i){"1"===i.success&&(i.message||(i.message="OK"),e(n).fadeOut(400),e(`<p>${i.message}</p>`).insertAfter(n).hide().delay(400).fadeIn())})).fail((function(e){})).always((function(e){}))}})))}))}(jQuery); -
mini-wp-gdpr/trunk/readme.txt
r2683260 r2683288 15 15 Features include a cookie and tracking-script consent popup, and useful WooCommerce integration. It logs when users first accept your privacy policy and can also inject your Google Analytics tracking code for you. 16 16 17 Installing this plugin is no guarantee that your site will magically become fully GDPR compliant, but it should make it nuch easier for you to get there.17 Installing this plugin is no guarantee that your site will magically become fully GDPR compliant, but it should make it much easier for you to get there. 18 18 19 19 == Installation ==
Note: See TracChangeset
for help on using the changeset viewer.