Newer
Older
<script>
var subdomain = "liftoff.chaotikum.org"
var timeToAdd = 1000 * 60 * 60 * 24 * 7 * 4 * 6; //six month
var date = new Date();
var expiryTime = parseInt(date.getTime()) + timeToAdd;
date.setTime(expiryTime);
var utcTime = date.toUTCString();
console.log(window.location.href)
var cookiedecisionfound = false
var cookieforbidden = true
var cookiesallowed = false
var doneMissions = []
var pageHistory = []
var allmissions = []
{% for mission in site.liftoffmissions -%}
{% if mission.type == 'mission' -%}
allmissions.push("{{mission.uid}}");
{% endif -%}
console.log("{{ site.url }}")
//some cookie security
var cookiesecure = ";secure"
if("{{ site.url }}".includes("localhost")) {
cookiesecure = ""
}
//httpOnly may not be set, as we specifically want to use the cookies in javascript (right here)
function markMissionAcc(mission) {
$( "#missionacc"+mission ).hide()
$( "#mission"+mission ).removeClass( "alert-primary" )
$( "#mission"+mission ).addClass('alert-success')
$( "#missionsy"+mission ).removeClass('')
$( "#missionsy"+mission ).addClass('fa')
$( "#missionsy"+mission ).addClass('fa-check')
$( "#missionexplain"+mission ).hide();
}
if(document.referrer.includes("{{ site.url }}/nobreakspace/liftoff") || document.referrer.includes(subdomain)) {
console.log("REFERRER")
console.log(document.referrer)
console.log("Nope")
$( "#welcomeback" ).hide()
$("#liftoffbacklink").attr("href", document.referrer)
} else {
$( "liftoffbacklink").hide()
//check if cookies are already forbidden or allowed
var decodedCookie = decodeURIComponent(document.cookie);
var pairs = decodedCookie.split(';');
for(var i = 0; i <pairs.length; i++) {
var x = pairs[i].split('=');
if(x[0].trim() == "noCookiesLiftoff") {
if(x[1].trim() == "True") {
cookiedecisionfound = true
cookieforbidden = true
}
if(x[1].trim() == "False") {
cookiedecisionfound = true
cookieforbidden = false
}
}
if(x[0].trim() == "yesCookieLiftoff") {
if(x[1].trim() == "True") {
cookiedecisionfound = true
cookiesallowed = true
}
}
}
if(!cookiedecisionfound) {
$( "#liftoffstart" ).hide()
$( '#missionprogress').hide()
$( '#missionprogresstext').hide()
$( '#missionprogressdiv').hide()
} else {
$( "#liftoffcookieinfo" ).hide()
}
console.log("WHAT")
console.log(cookiedecisionfound)
console.log(cookiesallowed)
console.log(cookieforbidden)
if(cookiedecisionfound == false && cookiesallowed == false && cookieforbidden == true) {
$( "#welcomeback" ).hide()
$( '#missionprogress').hide()
$( '#missionprogresstext').hide()
$( '#missionprogressdiv').hide()
}
if(cookiedecisionfound == true && cookiesallowed == false && cookieforbidden == true) {
$( "#welcomeback" ).hide()
$( '#missionprogress').hide()
$( '#missionprogresstext').hide()
$( '#missionprogressdiv').hide()
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
}
if(cookiedecisionfound == true && cookiesallowed == true && cookieforbidden == false) {
var history = "";
var containsHistory = false;
decodedCookie = decodeURIComponent(document.cookie);
console.log("Decoded Cookie")
console.log(decodedCookie)
pairs = decodedCookie.split(';');
console.log(pairs)
for(var i = 0; i <pairs.length; i++) {
var x = pairs[i].split('=');
console.log(x)
console.log(x[0].trim())
if(x[0].trim() == "history") {
console.log("yay")
containsHistory = true;
history = x[1]
if(!x[1].includes(window.location.href)) {
console.log("Extend history")
console.log(history)
if(x[1] != "") {
history = history + "YXY" + window.location.href
} else {
history = window.location.href
}
console.log(history)
}
pageHistory = history.split("YXY")
}
if(x[0].trim() == "url") {
console.log("URL!!!!")
url = x[1]
console.log(url)
}
if(x[0].trim() == "missions") {
doneMissions = x[1].split("X#X")
if(doneMissions[0] == "") {
doneMissions.shift();
}
}
for(mission of doneMissions){
console.log("Hide done missions")
if(mission != "") {
console.log(mission)
if(!containsHistory) {
console.log("Does not contain any history")
history = window.location.href
console.log(history)
}
console.log(pageHistory)
for(ph of pageHistory) {
phshort = ph.replace("{{site.url}}", "")
phshort = phshort.replaceAll("/", "_")
$("#check_"+phshort).attr('class', 'fa-solid fa-check')
}
if(!(window.location.href == "{{ site.url }}/nobreakspace/liftoff" || window.location.href == "{{ site.url }}/nobreakspace/liftoff/" || window.location.href.includes("{{ site.url }}/nobreakspace/liftoff/#") || window.location.href == subdomain || window.location.href == subdomain+"/" || window.location.href.includes(subdomain+"/#"))){
console.log("BLA")
document.cookie = "url="+window.location.href+";domain="+window.location.hostname+";path=/nobreakspace/liftoff/;expires="+utcTime+";SameSite=Strict"+cookiesecure;
document.cookie = "history="+history+";domain="+window.location.hostname+";path=/nobreakspace/liftoff/;expires="+utcTime+";SameSite=Strict"+cookiesecure
console.log("ok... ")
console.log(url)
if(url == "" || url == window.location.href) {
$( "#welcomeback" ).hide()
} else {
if(url.startsWith("{{ site.url }}")) {
$("#returnlink").attr("href", url)
}
}
if(doneMissions[0] == "") {
doneMissions.shift();
}
doneMissions = [...new Set(doneMissions)];
var doneMissions2 = []
for(mx of doneMissions) {
if(allmissions.includes(mx)) {
doneMissions2.push(mx)
}
}
doneMissions = doneMissions2
var percentagemissions = doneMissions.length / (allmissions.length / 100)
console.log("PERCENTAGE MISSIONS")
console.log(percentagemissions)
console.log(doneMissions)
$("#missionprogress").attr("aria-valuenow", ""+percentagemissions);
$("#missionprogress").css("width", percentagemissions+"%");
$("#missionprogress").text((Math.round(percentagemissions * 100) / 100)+"%")
if(percentagemissions > 99.9 && "{{ page.permalink }}".includes("/nobreakspace/liftoff/part7/")) {
$("#courseprogress").attr("aria-valuenow", 100);
$("#courseprogress").css("width", 100+"%");
$("#courseprogress").text(100+"%")
}
}
});
function deleteUrlFromCookie() {
console.log("bla")
document.cookie = "url=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
document.cookie = "noCookiesLiftoff=True;domain="+window.location.hostname+";path=/nobreakspace/liftoff/;expires="+utcTime+";SameSite=Strict"+cookiesecure
location.reload();
}
function yesCookiesPlz() {
document.cookie = "noCookiesLiftoff=False;domain="+window.location.hostname+";path=/nobreakspace/liftoff/;expires="+utcTime+";SameSite=Strict"+cookiesecure;
document.cookie = "yesCookieLiftoff=True;domain="+window.location.hostname+";path=/nobreakspace/liftoff/;expires="+utcTime+";SameSite=Strict"+cookiesecure;
location.reload();
}
function resetCookies() {
document.cookie = "url=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
document.cookie = "history=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
document.cookie = "missions=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
document.cookie = "noCookiesLiftoff=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
document.cookie = "yesCookieLiftoff=;domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
function missionAccomplished(mission) {
if(cookiedecisionfound == true && cookiesallowed == true && cookieforbidden == false) {
decodedCookie = decodeURIComponent(document.cookie);
pairs = decodedCookie.split(';');
for(var i = 0; i <pairs.length; i++) {
var x = pairs[i].split('=');
if(x[0].trim() == "missions") {
doneMissions = x[1].split("X#X")
console.log(doneMissions)
if(doneMissions[0] == "") {
doneMissions.shift();
}
}
}
console.log(mission)
console.log(doneMissions)
if(!doneMissions.includes(mission)) {
doneMissions.push(mission)
}
console.log(doneMissions)
mm = ""
for(mi of doneMissions) {
if(mi != "") {
mm = mm + "X#X" + mi;
}
}
document.cookie = "missions="+mm+";domain="+window.location.hostname+";path=/nobreakspace/liftoff/"+";SameSite=Strict"+cookiesecure
var percentagemissions = doneMissions.length / (allmissions.length / 100)
console.log("PERCENTAGE MISSIONS")
console.log(percentagemissions)
console.log(doneMissions)
$("#missionprogress").attr("aria-valuenow", ""+percentagemissions);
$("#missionprogress").css("width", percentagemissions+"%");
$("#missionprogress").text((Math.round(percentagemissions * 100) / 100)+"%")
}