Add fsf35 modal window
authorMichael McMahon <michael@fsf.org>
Mon, 5 Oct 2020 21:16:19 +0000 (17:16 -0400)
committerMichael McMahon <michael@fsf.org>
Mon, 5 Oct 2020 21:16:19 +0000 (17:16 -0400)
en/index.html

index 5e51af1c819388ade6cf07ecfa6f426504fcf991..13f2cd3d832453c75f91028fc7d7b4e4fe09b4ed 100644 (file)
@@ -19,6 +19,419 @@ href="//static.fsf.org/nosvn/enc-dev0/img/favicon.ico" />
 
 <!-- PLACE FUNDRAISER MODAL WINDOW HERE -->
 
 
 <!-- PLACE FUNDRAISER MODAL WINDOW HERE -->
 
+            <!-- begin fsf-modal-window-elem campaign element -->
+            <link type="text/css" rel="stylesheet" href="https://static.fsf.org/nosvn/fonts/fa/css/font-awesome.min.css">
+            <style>
+#fsf-modal-window-elem-container div {
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+}
+
+@media screen and (min-width: 700px) {
+
+    #fsf-modal-window-elem-outer-v-center {
+        display: table;
+        position: absolute;
+        height: 100%;
+        width: 100%;
+    }
+    #fsf-modal-window-elem-inner-v-center {
+        display: table-cell;
+        vertical-align: middle;
+    }
+
+    #fsf-modal-window-elem {
+        width: 687px;
+        margin-left: auto;
+        margin-right: auto;
+    }
+
+    #fsf-modal-window-elem-right-column {
+        float: right;
+        width: 280px;
+        padding-left: 20px;
+    }
+
+    #fsf-modal-window-elem-left-column {
+        width: 100%;
+        float: left;
+        margin-right: -280px;
+    }
+
+    #fsf-modal-window-elem-text {
+        margin-right: 280px;
+    }
+}
+
+@media screen and (max-width: 699px) {
+
+    #fsf-modal-window-elem {
+
+        -ms-box-orient: horizontal;
+        display: -webkit-box;
+        display: -moz-box;
+        display: -ms-flexbox;
+        display: -moz-flex;
+        display: -webkit-flex;
+        display: flex;
+
+        -webkit-flex-flow: row wrap;
+        flex-flow: row wrap;
+    }
+
+    #fsf-modal-window-elem {
+        width: 80vw;
+        margin-left: 10vw;
+        margin-right: 10vw;
+        margin-top: 40px;
+        margin-bottom: 40px;
+    }
+
+    #fsf-modal-window-elem-right-column {
+        width: 100%;
+        order: 1;
+    }
+
+    #fsf-modal-window-elem-left-column {
+        width: 100%;
+        order: 2;
+    }
+
+    #fsf-modal-window-elem-text {
+        margin-top: 20px;
+    }
+}
+
+@media screen and (max-width: 360px) {
+    .long-button-text {
+        font-size: 25px !important;
+    }
+}
+
+#fsf-modal-window-elem-container {
+    position: fixed;
+    z-index: 10000;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+    background-color: rgba(0,0,0,0.8);
+
+    font-weight: normal;
+}
+
+#fsf-modal-window-elem a, a:active, a:focus {
+    outline: none;
+    border-bottom: 0px;
+}
+
+#fsf-modal-window-elem {
+    overflow: auto;
+    /* zoom: 1; */
+    padding: 20px;
+    border-style: solid;
+    border-width: 5px;
+    border-color: #2e638b;
+    border-radius: 20px;
+    box-shadow: 0px 0px 10px #2d122a;
+    background-color: #1a274e;
+}
+
+#fsf-modal-window-elem-header {
+    width: 100%;
+}
+
+#fsf-modal-window-elem-header h2 {
+    font-family: sans-serif,"Helvetica",Arial;
+    font-weight: bold;
+    font-size: 24px;
+    color: #fb566b;
+    /* text-shadow: 0px 0px 8px #00378c; */
+    padding-bottom: 20px;
+    margin-top: 0px;
+    margin-bottom: 0px;
+    border: none;
+}
+
+#fsf-modal-window-elem-close-button {
+    float: right;
+    height: 40px;
+    margin-right: -20px;
+    margin-top: -20px;
+    padding: 11px;
+    color: #888;
+    cursor: pointer;
+}
+
+#fsf-modal-window-elem-close-button:hover {
+    color: #aaf;
+}
+
+#fsf-modal-window-elem-right-column {
+    text-align: center;
+    -webkit-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+}
+
+#fsf-modal-window-elem-buttons div {
+    height:53.333px;
+    line-height: 53.333px;
+    margin-left:auto;
+    margin-right:auto;
+    display:block;
+}
+
+#fsf-modal-window-elem-buttons {
+}
+
+#fsf-modal-window-elem-buttons a {
+    width: 100%;
+    display: block;
+    text-align:center;
+    font-size:35px;
+    color:#1a274e;
+    text-decoration: none;
+    font-family: sans-serif,"Helvetica",Arial;
+    font-weight: normal;
+}
+
+#fsf-modal-window-elem-maybe-later {
+    margin-top: 5px;
+    margin-bottom: -5px;
+}
+
+#fsf-modal-window-elem-maybe-later a {
+    color: #367c93;
+    line-height: 20px;
+    text-decoration: none;
+    cursor: pointer;
+    font-weight: normal;
+    font-family: sans-serif,"Helvetica",Arial;
+    font-size: 16px;
+}
+
+#fsf-modal-window-elem-text {
+}
+
+#fsf-modal-window-elem-text a {
+    color: #fb566b;
+    font-weight: 1000;
+    text-decoration: none;
+}
+
+#fsf-modal-window-elem-text a:hover {
+    color: #fd8e1b;
+}
+
+#fsf-modal-window-elem-text a:focus {
+    color: #fd8e1b;
+}
+
+#fsf-modal-window-elem-text a:active {
+    color: #ffac30;
+}
+
+#fsf-modal-window-elem-text p {
+    font-family: sans-serif,"Helvetica",Arial;
+    font-size: 16px;
+    font-weight: normal;
+    margin: 0px 0px 10px 0px;
+    line-height: 20px;
+    color: #fcf07c;
+    /* text-shadow: 0px 0px 8px #004067;*/
+}
+            </style>
+            <div id="fsf-modal-window-elem-container" style="display: none;">
+                <div id="fsf-modal-window-elem-outer-v-center">
+                    <div id="fsf-modal-window-elem-inner-v-center">
+                        <div id="fsf-modal-window-elem">
+                            <div id="fsf-modal-window-elem-header">
+                                <div id="fsf-modal-window-elem-close-button" onclick="//fsfModalWindowElemDontShowForAWhile();">
+                                    <i class="fa fa-close">&#8203;</i>
+                                </div>
+                                <h2>Thirty-five years of FSF</h2>
+                            </div>
+                            <div id="fsf-modal-window-elem-left-column">
+                                <div id="fsf-modal-window-elem-text">
+
+<p>
+
+Modern freedom depends on the freedom of the software we use. Help us celebrate the FSF's 35th anniversary! Join us this Friday, October 9th, for a <a href="https://www.fsf.org/events/fsf35?pk_campaign=bday&pk_source=modal">live birthday event</a> featuring special guests.
+
+</p>
+
+<p>
+
+Donate $35 or more today to receive a commemorative birthday pin, and make sure the FSF can continue advocating for software freedom for years to come.
+
+</p>
+
+<p><span id="fsf-modal-window-text-link"><a href="https://www.fsf.org/events/fsf35?pk_campaign=bday&pk_source=modal">Read more</a><!-- | <a href="https://my.fsf.org/donate?pk_campaign=bday&pk_source=modal">Donate</a>--></span></p>
+
+                                </div>
+                            </div>
+                            <div id="fsf-modal-window-elem-right-column">
+                                <div id="fsf-modal-window-elem-buttons" style="border-radius: 20px; box-shadow: 0px 0px 5px #0c2b2b;">
+<!--
+                                    <div style="background-color:#fb6b73; border-top-right-radius: 20px; border-top-left-radius: 20px;">
+                                      <a style="text-shadow: 0px 0px 8px #f999ef;" href="https://my.fsf.org/join?pk_campaign=frspring2020&pk_source=modal" onclick="//fsfModalWindowElemFollowedLink();"><i class="fa fa-check-circle">&nbsp;</i>Join</a>
+                                    </div>
+
+                                    <div style="background-color:#1a274e">
+                                      <a style="text-shadow: 0px 0px 8px #ffffff;" href="https://my.fsf.org/renew?pk_campaign=frspring2020&pk_source=modal" onclick="//fsfModalWindowElemFollowedLink();"><i class="fa fa-refresh">&nbsp;</i>Renew</a>
+                                    </div>
+-->
+<!-- 407891 294c5c-->
+                                    <div style="background-color:#99d8fd; border-top-right-radius: 20px; border-top-left-radius: 20px; border-bottom-right-radius: 20px; border-bottom-left-radius: 20px; margin-bottom: 2px">
+                                      <a style="text-shadow: 0px 0px 2px #4ebcfc;" href="https://my.fsf.org/donate?pk_campaign=bday&pk_source=modal" onclick="//fsfModalWindowElemFollowedLink();"><i class="fa fa-money">&nbsp;</i>Donate</a>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <script type="text/javascript">
+// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-3.0
+
+// licensed GPLv3-or-later by Andrew Engelbrecht
+
+var startTime, endTime, switchTextTime;
+
+startTime = new Date('2020-10-05T04:00:00Z');
+switchTextTime = new Date('2020-10-09T15:00:00Z');
+//switchTextTime = new Date('2020-10-05T05:00:00Z');  // Test secondary text
+endTime = new Date('2020-10-09T21:00:00Z');
+
+// possibly switch the text that is displayed in the modal window, depending
+// upon the current date.
+function fsfModalWindowElemMaybeSwitchText () {
+
+    var now;
+
+    now = new Date();
+    if (now.getTime() < switchTextTime.getTime()) {
+        return; // don't switch the dbd text
+    }
+
+    // switch dbd text
+    document.getElementById("fsf-modal-window-elem-text").innerHTML =' \
+\
+<p>Modern freedom depends on the freedom of the software we use. Help us celebrate our 35th anniversary! <a href="https://www.fsf.org/events/fsf35?pk_campaign=bday&pk_source=modal">Join the live event, happening now.<\/a><\/p> \<p>With your support, the FSF can continue our advocacy for years to come. Donate $35 or more today to receive a commemorative birthday pin, and make sure the FSF can continue advocating for software freedom for years to come.<\/p> \
+\
+<p><span id="fsf-modal-window-text-link"><a href="https://www.fsf.org/events/fsf35?pk_campaign=bday&pk_source=modal)">Read more<\/a><!-- |  <a href="https://my.fsf.org/donate?pk_campaign=bday&pk_source=modal">Donate<\/a>--><\/span><\/p>';
+}
+
+// show fsf-modal-window-elem if it hasn't been previously closed by
+// the user, nor recently hit "maybe later",
+// and the campaign is still happening
+function fsfModalWindowElemMaybeShow () {
+
+    var pattern, noShowFsfModalWindowElementP, now;
+
+    // see if cookie says not to show element
+    pattern = /showFsf35ModalWindowElementP\s*=\s*false/;
+    noShowFsfModalWindowElementP = pattern.test(document.cookie);
+
+//// uncomment here to enable modal window hiding
+    if (!noShowFsfModalWindowElementP) {
+        setTimeout(function () {
+            // display the element
+            document.getElementById("fsf-modal-window-elem-container").style.display="block";
+        }, 0);
+    }
+}
+
+// Call this first to set the proper text.
+fsfModalWindowElemMaybeSwitchText();
+// Check if fsf35 is the url.
+if (window.location.href.indexOf("fsf35") == -1) {
+  // Call this right away to avoid flicker.
+  fsfModalWindowElemMaybeShow();
+}
+
+// get the time `plusDays` in the future.
+// can be a fraction.
+function daysInFuture (plusDays) {
+    var now, future;
+
+    now = new Date();
+    future = new Date(now.getTime() + Math.floor(1000 * 60 * 60 * 24 * plusDays));
+    return future.toGMTString();
+}
+
+// hide the fsf-modal-window-elem
+function fsfModalWindowElemHide () {
+    document.getElementById("fsf-modal-window-elem-container").style.display="none";
+}
+
+// optionally hide elem and set a cookie to keep the fsf-modal-window-elem hidden for the next `forDays`.
+function fsfModalWindowElemDontShowForDays (forDays, hideNow) {
+    if (hideNow === true) {
+        fsfModalWindowElemHide();
+    }
+    //document.cookie = "showFsf35ModalWindowElementP=false; path=/; domain=.fsf.org; expires=" + daysInFuture(forDays);
+    document.cookie = "showFsf35ModalWindowElementP=false; path=/; SameSite=Strict; Secure; expires=" + daysInFuture(forDays);
+}
+
+// hide the element from now to two weeks after closing it
+function fsfModalWindowElemDontShowForAWhile () {
+    fsfModalWindowElemDontShowForDays(1, true);
+}
+
+// keep the element visible for now, but don't show it for a while
+function fsfModalWindowElemFollowedLink () {
+    fsfModalWindowElemDontShowForDays(1, false);
+}
+
+// Check if visiting fsf35 page.
+if (window.location.href.indexOf("fsf35") > -1) {
+  fsfModalWindowElemDontShowForAWhile();
+}
+
+// close popup if user clicks trasparent part
+document.getElementById("fsf-modal-window-elem-container").addEventListener("click", function(event){
+    fsfModalWindowElemDontShowForAWhile();
+});
+
+// don't close popup if clicking non-trasparent part (with the text and buttons)
+document.getElementById("fsf-modal-window-elem").addEventListener("click", function(event){
+    event.stopPropagation();
+});
+
+// close popup if user clicks X icon
+document.getElementById("fsf-modal-window-elem-close-button").addEventListener("click", function(event){
+    fsfModalWindowElemDontShowForAWhile();
+});
+
+// disable popup if user clicks one of the main buttons
+document.getElementById("fsf-modal-window-elem-buttons").addEventListener("click", function(event){
+    fsfModalWindowElemFollowedLink();
+});
+
+// disable popup if user clicks one of the "Read more" link
+document.getElementById("fsf-modal-window-text-link").addEventListener("click", function(event){
+    fsfModalWindowElemFollowedLink();
+});
+
+// close popup if user presses escape key 
+window.addEventListener("keydown",  function  (event)  {
+    switch  (event.key)  {
+        case  "Escape":
+            fsfModalWindowElemDontShowForAWhile();
+            break;
+        default:
+            return;
+    }
+},  true);
+// @license-end
+                </script>
+            </div>
+            <!-- end fsf-modal-window-elem campaign element -->
+
 <!-- ~~~~~~~~~ GnuPG Header and introduction text ~~~~~~~~~ -->
 <header class="row" id="header"><div>
 
 <!-- ~~~~~~~~~ GnuPG Header and introduction text ~~~~~~~~~ -->
 <header class="row" id="header"><div>