From 20dd6ea03755c1a44134105b66792e261707166a Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Sun, 15 Mar 2020 11:53:11 +0100
Subject: [PATCH] rebuild cookieinfo (+darkmode, -size)

---
 static/cookie.js     |  23 +++++
 static/cookieinfo.js | 237 -------------------------------------------
 static/style.css     |  55 ++++++++++
 templates/home.html  |  24 +++--
 4 files changed, 96 insertions(+), 243 deletions(-)
 create mode 100644 static/cookie.js
 delete mode 100644 static/cookieinfo.js

diff --git a/static/cookie.js b/static/cookie.js
new file mode 100644
index 0000000..68a84f3
--- /dev/null
+++ b/static/cookie.js
@@ -0,0 +1,23 @@
+function acceptCookie(){
+    document.cookie = "cookieMessageHide=1";
+    checkHide();
+}
+
+function getCookie(name){
+    var nameEQ = name + "=";
+    var ca = document.cookie.split(";");
+    for (var i=0; i < ca.length; i++) {
+        var c = ca[i];
+        while(c.charAt(0) == " ") c = c.substr(1, c.length);
+        if(c.indexOf(nameEQ) == 0) return c.substr(nameEQ.length, c.length)
+    }
+    return null
+}
+
+function checkHide(){
+    if (getCookie("cookieMessageHide") == "1"){
+       $(".cookieinfo").hide();
+    } else {
+       $(".cookieinfo").show();
+    }
+ }
\ No newline at end of file
diff --git a/static/cookieinfo.js b/static/cookieinfo.js
deleted file mode 100644
index bad9f1f..0000000
--- a/static/cookieinfo.js
+++ /dev/null
@@ -1,237 +0,0 @@
-! function(e) {
-    "use strict";
-    var t = e,
-        i = t.document,
-        o = "cbinstance";
-    var n = {
-            get: function(e) {
-                return decodeURIComponent(i.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(e).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null
-            },
-            set: function(e, t, o, n, s, r) {
-                if (!e || /^(?:expires|max\-age|path|domain|secure)$/i.test(e)) return !1;
-                var a = "";
-                if (o) switch (o.constructor) {
-                    case Number:
-                        a = o === 1 / 0 ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + o;
-                        break;
-                    case String:
-                        a = "; expires=" + o;
-                        break;
-                    case Date:
-                        a = "; expires=" + o.toUTCString()
-                }
-                return i.cookie = encodeURIComponent(e) + "=" + encodeURIComponent(t) + a + (s ? "; domain=" + s : "") + (n ? "; path=" + n : "") + (r ? "; secure" : ""), !0
-            },
-            has: function(e) {
-                return new RegExp("(?:^|;\\s*)" + encodeURIComponent(e).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=").test(i.cookie)
-            },
-            remove: function(e, t, o) {
-                return !(!e || !this.has(e)) && (i.cookie = encodeURIComponent(e) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (o ? "; domain=" + o : "") + (t ? "; path=" + t : ""), !0)
-            }
-        },
-        s = {
-            merge: function() {
-                var e, t = {},
-                    i = 0,
-                    o = arguments.length;
-                if (0 === o) return t;
-                for (; i < o; i++)
-                    for (e in arguments[i]) Object.prototype.hasOwnProperty.call(arguments[i], e) && (t[e] = arguments[i][e]);
-                return t
-            },
-            str2bool: function(e) {
-                switch ((e = "" + e).toLowerCase()) {
-                    case "false":
-                    case "no":
-                    case "0":
-                    case "":
-                        return !1;
-                    default:
-                        return !0
-                }
-            },
-            fade_in: function(e) {
-                e.style.opacity < 1 && (e.style.opacity = (parseFloat(e.style.opacity) + .05).toFixed(2), t.setTimeout(function() {
-                    s.fade_in(e)
-                }, 50))
-            },
-            get_data_attribs: function(e) {
-                var t = {};
-                if (Object.prototype.hasOwnProperty.call(e, "dataset")) t = e.dataset;
-                else {
-                    var i, o = e.attributes;
-                    for (i in o)
-                        if (Object.prototype.hasOwnProperty.call(o, i)) {
-                            var n = o[i];
-                            if (/^data-/.test(n.name)) t[s.camelize(n.name.substr(5))] = n.value
-                        }
-                }
-                return t
-            },
-            normalize_keys: function(e) {
-                var t = {};
-                for (var i in e)
-                    if (Object.prototype.hasOwnProperty.call(e, i)) {
-                        var o = s.camelize(i);
-                        t[o] = e[o] ? e[o] : e[i]
-                    } return t
-            },
-            camelize: function(e) {
-                for (var t = "-", i = e.indexOf(t); - 1 != i;) {
-                    var o = i === e.length - 1,
-                        n = o ? "" : e[i + 1],
-                        s = n.toUpperCase(),
-                        r = o ? t : t + n;
-                    i = (e = e.replace(r, s)).indexOf(t)
-                }
-                return e
-            },
-            find_script_by_id: function(e) {
-                for (var t = i.getElementsByTagName("script"), o = 0, n = t.length; o < n; o++)
-                    if (e === t[o].id) return t[o];
-                return null
-            }
-        },
-        r = s.find_script_by_id("cookieinfo"),
-        a = e.cookieinfo = function(e) {
-            this.init(e)
-        };
-    a.prototype = {
-        cookiejar: n,
-        init: function(t) {
-            this.inserted = !1, this.closed = !1, this.test_mode = !1;
-            if (this.default_options = {
-                    cookie: "we-love-cookies",
-                    closeText: "&#10006;",
-                    cookiePath: "/",
-                    debug: !1,
-                    expires: 1 / 0,
-                    zindex: 1e20,
-                    mask: !1,
-                    maskOpacity: .5,
-                    maskBackground: "#999",
-                    height: "auto",
-                    minHeight: "21px",
-                    bg: "#eee",
-                    fg: "#333",
-                    link: "#31A8F0",
-                    divlink: "#000",
-                    divlinkbg: "#F1D600",
-                    position: "bottom",
-                    message: "We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies.",
-                    linkmsg: "More info",
-                    scriptmsg: "Cookie Info Script",
-                    moreinfo: "http://wikipedia.org/wiki/HTTP_cookie",
-                    scriptinfo: "https://cookieinfoscript.com",
-                    tracking: "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",
-                    effect: null,
-                    fontSize: "14px",
-                    fontFamily: "verdana, arial, sans-serif",
-                    instance: o,
-                    textAlign: "center",
-                    acceptOnScroll: !1
-                }, this.options = this.default_options, this.script_el = r, this.script_el) {
-                var i = s.get_data_attribs(this.script_el);
-                this.options = s.merge(this.options, i)
-            }
-            t && (t = s.normalize_keys(t), this.options = s.merge(this.options, t)), o = this.options.instance, this.options.zindex = parseInt(this.options.zindex, 10), this.options.mask = s.str2bool(this.options.mask), "string" == typeof this.options.expires && "function" == typeof e[this.options.expires] && (this.options.expires = e[this.options.expires]), "function" == typeof this.options.expires && (this.options.expires = this.options.expires()), this.script_el && this.run()
-        },
-        log: function() {
-            "undefined" != typeof console && console.log.apply(console, arguments)
-        },
-        run: function() {
-            if (!this.agreed()) {
-                var e = this;
-                ! function(e, t) {
-                    var i = !1,
-                        o = !0,
-                        n = e.document,
-                        s = n.documentElement,
-                        r = n.addEventListener ? "addEventListener" : "attachEvent",
-                        a = n.addEventListener ? "removeEventListener" : "detachEvent",
-                        c = n.addEventListener ? "" : "on",
-                        l = function(o) {
-                            "readystatechange" == o.type && "complete" != n.readyState || (("load" == o.type ? e : n)[a](c + o.type, l, !1), !i && (i = !0) && t.call(e, o.type || o))
-                        },
-                        p = function() {
-                            try {
-                                s.doScroll("left")
-                            } catch (e) {
-                                return void setTimeout(p, 50)
-                            }
-                            l("poll")
-                        };
-                    if ("complete" == n.readyState) t.call(e, "lazy");
-                    else {
-                        if (n.createEventObject && s.doScroll) {
-                            try {
-                                o = !e.frameElement
-                            } catch (e) {}
-                            o && p()
-                        }
-                        n[r](c + "DOMContentLoaded", l, !1), n[r](c + "readystatechange", l, !1), e[r](c + "load", l, !1)
-                    }
-                }(t, function() {
-                    e.insert()
-                })
-            }
-        },
-        build_viewport_mask: function() {
-            var e = null;
-            if (!0 === this.options.mask) {
-                var t = this.options.maskOpacity,
-                    o = '<div id="cookieinfo-mask" style="position:fixed;top:0;left:0;width:100%;height:100%;background:' + this.options.maskBackground + ";zoom:1;filter:alpha(opacity=" + 100 * t + ");opacity:" + t + ";z-index:" + this.options.zindex + ';"></div>',
-                    n = i.createElement("div");
-                n.innerHTML = o, e = n.firstChild
-            }
-            return e
-        },
-        agree: function() {
-            return this.cookiejar.set(this.options.cookie, 1, this.options.expires, this.options.cookiePath), !0
-        },
-        agreed: function() {
-            return this.cookiejar.has(this.options.cookie)
-        },
-        close: function() {
-            return this.inserted && (this.closed || (this.element && this.element.parentNode.removeChild(this.element), this.element_mask && this.element_mask.parentNode.removeChild(this.element_mask), this.closed = !0)), this.closed
-        },
-        agree_and_close: function() {
-            return this.agree(), this.close()
-        },
-        cleanup: function() {
-            return this.close(), this.unload()
-        },
-        unload: function() {
-            return this.script_el && this.script_el.parentNode.removeChild(this.script_el), e[o] = void 0, !0
-        },
-        insert: function() {
-            this.element_mask = this.build_viewport_mask();
-            var e = this.options.zindex;
-            this.element_mask && (e += 1);
-            var t = i.createElement("div");
-            t.className = "cookieinfo", t.style.position = "fixed", t.style.left = 0, t.style.right = 0, t.style.height = this.options.height, t.style.minHeight = this.options.minHeight, t.style.zIndex = e, t.style.background = this.options.bg, t.style.color = this.options.fg, t.style.lineHeight = t.style.minHeight, t.style.padding = "8px 18px", t.style.fontFamily = this.options.fontFamily, t.style.fontSize = this.options.fontSize, t.style.textAlign = this.options.textAlign, "top" === this.options.position ? t.style.top = 0 : t.style.bottom = 0, t.innerHTML = '<div class="cookieinfo-close" style="float:right;display:block;padding:5px 8px 5px 8px;min-width:100px;margin-left:5px;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;">' + this.options.closeText + '</div><span style="display:block;padding:5px 0 5px 0;">' + this.options.message + " <a>" + this.options.linkmsg + "</a><img> <a>" + this.options.scriptmsg + "</a></span>", this.element = t;
-            var o = t.getElementsByTagName("a")[0];
-            o.href = this.options.moreinfo, o.style.textDecoration = "none", o.style.color = this.options.link;
-            var n = t.getElementsByTagName("a")[1];
-            n.href = this.options.scriptinfo, n.style.textDecoration = "none", n.style.display = "none", n.style.color = this.options.link;
-            var r = t.getElementsByTagName("div")[0];
-            r.style.cursor = "pointer", r.style.color = this.options.divlink, r.style.background = this.options.divlinkbg, r.style.textAlign = "center";
-            var a = t.getElementsByTagName("img")[0];
-
-            function c(e, t, i) {
-                var o = e.addEventListener ? "addEventListener" : "attachEvent",
-                    n = e.addEventListener ? "" : "on";
-                e[o](n + t, i, !1)
-            }
-            a.src = this.options.tracking, a.style.display = "none";
-            var l = this;
-            c(r, "click", function() {
-                l.agree_and_close()
-            }), this.element_mask && (c(this.element_mask, "click", function() {
-                l.agree_and_close()
-            }), i.body.appendChild(this.element_mask)), this.options.acceptOnScroll && c(window, "scroll", function() {
-                l.agree_and_close()
-            }), i.body.appendChild(this.element), this.inserted = !0, "fade" === this.options.effect ? (this.element.style.opacity = 0, s.fade_in(this.element)) : this.element.style.opacity = 1
-        }
-    }, r && (e[o] || (e[o] = new a))
-}(window);
\ No newline at end of file
diff --git a/static/style.css b/static/style.css
index b9567ac..15316ec 100644
--- a/static/style.css
+++ b/static/style.css
@@ -156,6 +156,48 @@ a#red {
 button#small {
     width: 30%;
 }
+
+.cookieinfo{
+    position: fixed;
+    left: 0px;
+    right: 0px;
+    height: auto;
+    min-height: 21px;
+    z-index: 2147483647;
+    background: rgb(238, 238, 238); 
+    color: rgb(51, 51, 51);
+    line-height: 21px;
+    padding: 8px 18px;
+    font-family: verdana, arial, sans-serif;
+    font-size: 14px;
+    text-align: center;
+    bottom: 0px;
+    opacity: 1;
+}
+
+.cookieinfo-close{
+    float: right;
+    display: block;
+    padding: 5px 8px;
+    min-width: 100px;
+    margin-left: 5px;
+    border-radius: 5px;
+    cursor: pointer;
+    color: rgb(0, 0, 0);
+    background: rgb(241, 214, 0);
+    text-align: center;
+}
+
+.cookieinfo-text {
+    display:block;
+    padding:5px 0 5px 0;
+}
+
+.cookieinfo-link{
+    text-decoration: none;
+    color: rgb(49, 168, 240);
+}
+
 @-webkit-keyframes fadein {
 from {bottom: 0; opacity: 0;} 
 to {bottom: 30px; opacity: 1;}
@@ -291,4 +333,17 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+
         background-color: #10151f;
         color: #b3b3b3;
     }
+
+    .cookieinfo{
+        background: #1a2332;
+        color: #b3b3b3;
+    }
+
+    .cookieinfo-link{
+        color: #1cb09a;
+    }
+
+    .cookieinfo-close{
+        background: #1cb09a;
+    }
 }
\ No newline at end of file
diff --git a/templates/home.html b/templates/home.html
index 61b030b..40280eb 100644
--- a/templates/home.html
+++ b/templates/home.html
@@ -5,9 +5,9 @@
          <link href="/static/style.css" rel="stylesheet">
          <link href="/static/socialSignin/css/buttons-si.css" rel="stylesheet">
          <title>URL shorter</title>
-         {% if cookieNotice %}
-         <script type="text/javascript" id="cookieinfo" src="/static/cookieinfo.js" ></script>
-         {% endif %}
+         <script src="/static/external/jquery/jquery.js"></script>
+         <script src="/static/jquery-ui.js"></script>
+         <script src="/static/cookie.js"></script>
          {% if recaptchaPublicKey %}
             <script src="https://www.google.com/recaptcha/api.js" async defer></script>
             <script>
@@ -70,6 +70,21 @@
                   </ul>
                </div>
       </div>
+      {% if cookieNotice %}
+         <div class="cookieinfo">
+            <div class="cookieinfo-close" onclick="acceptCookie()">
+               ✖
+            </div>
+            <span class="cookieinfo-text">
+               We use cookies to enhance your experience. By continuing to visit this site you agree to our use of cookies. <a class="cookieinfo-link" href="http://wikipedia.org/wiki/HTTP_cookie">More info</a>
+            </span>
+         </div>
+         <script>
+            checkHide();
+         </script>
+      {% endif %}
+
+
 
       {% if snackbar %}
       <script>
@@ -84,9 +99,6 @@
             x.selectedIndex = {{domain_prefilled}};
          </script>
       {% endif %}
-
-      <script src="/static/external/jquery/jquery.js"></script>
-      <script src="/static/jquery-ui.js"></script>
       <script>
             $( "#dialog" ).dialog({
                autoOpen: false,
-- 
GitLab