diff --git a/.eslintrc.js b/.eslintrc.js index 7dd774c4..6630ad49 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -21,6 +21,7 @@ module.exports = { "blessing": true, "debounce": false, "showModal": false, + "docCookies": false, "showAjaxError": false, "getQueryString": false, "TexturePreview": false diff --git a/resources/assets/src/js/admin/common.js b/resources/assets/src/js/admin/common.js index 098b7dc3..df2975b0 100644 --- a/resources/assets/src/js/admin/common.js +++ b/resources/assets/src/js/admin/common.js @@ -22,3 +22,30 @@ $(document).ready(() => { $.pluginsTable = initPluginsTable(); } }); + +function sendFeedback() { + if (docCookies.getItem('feedback_sent') !== null) + return; + + fetch({ + url: 'https://work.prinzeugen.net/statistics/feedback', + type: 'POST', + dataType: 'json', + data: { + site_name: blessing.site_name, + site_url: blessing.base_url, + version: blessing.version + } + }).then(({ errno }) => { + if (errno === 0) { + // Will be expired when current session ends + docCookies.setItem('feedback_sent', Date.now()); + + console.log('Feedback sent. Thank you!'); + } + }); +} + +if (typeof require !== 'undefined' && typeof module !== 'undefined') { + module.exports = sendFeedback; +} diff --git a/resources/assets/src/js/common/cookie.js b/resources/assets/src/js/common/cookie.js new file mode 100644 index 00000000..15600f30 --- /dev/null +++ b/resources/assets/src/js/common/cookie.js @@ -0,0 +1,64 @@ +/* eslint-disable */ + +/*\ +|*| +|*| :: cookies.js :: +|*| +|*| A complete cookies reader/writer framework with full unicode support. +|*| +|*| https://developer.mozilla.org/en-US/docs/DOM/document.cookie +|*| +|*| This framework is released under the GNU Public License, version 3 or later. +|*| http://www.gnu.org/licenses/gpl-3.0-standalone.html +|*| +|*| Syntaxes: +|*| +|*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]]) +|*| * docCookies.getItem(name) +|*| * docCookies.removeItem(name[, path], domain) +|*| * docCookies.hasItem(name) +|*| * docCookies.keys() +|*| +\*/ + +var docCookies = { + getItem: function (sKey) { + return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; + }, + setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { + if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } + var sExpires = ""; + if (vEnd) { + switch (vEnd.constructor) { + case Number: + sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; + break; + case String: + sExpires = "; expires=" + vEnd; + break; + case Date: + sExpires = "; expires=" + vEnd.toUTCString(); + break; + } + } + document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); + return true; + }, + removeItem: function (sKey, sPath, sDomain) { + if (!sKey || !this.hasItem(sKey)) { return false; } + document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : ""); + return true; + }, + hasItem: function (sKey) { + return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); + }, + keys: /* optional method: you can safely remove it! */ function () { + var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); + for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } + return aKeys; + } +}; + +if (typeof require !== 'undefined' && typeof module !== 'undefined') { + module.exports = docCookies; +} diff --git a/resources/views/admin/master.tpl b/resources/views/admin/master.tpl index a540ee12..0a312362 100644 --- a/resources/views/admin/master.tpl +++ b/resources/views/admin/master.tpl @@ -96,19 +96,7 @@ @endif @if (option('allow_sending_statistics')) - + @endif @yield('script')