diff options
Diffstat (limited to 'htdocs/page.js')
-rw-r--r-- | htdocs/page.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/htdocs/page.js b/htdocs/page.js new file mode 100644 index 0000000..2d566f5 --- /dev/null +++ b/htdocs/page.js @@ -0,0 +1,113 @@ +(function() { + var blocked = typeof localStorage["blocked"] != "undefined" && localStorage["blocked"].length > 0 ? localStorage["blocked"].split(",") : []; + for(var i=0; i<blocked.length; i++) { + var e = document.querySelector("div[data-strip-name='" + blocked[i] + "']"); + if(e != null) { + e.parentNode.removeChild(e); + } + } + function blockList() { + blocked = typeof localStorage["blocked"] != "undefined" && localStorage["blocked"].length > 0 ? localStorage["blocked"].split(",") : []; + var blockDiv = document.getElementById("blockDiv"); + if(typeof blockDiv != "undefined" && blockDiv != null) { + blockDiv.parentNode.removeChild(blockDiv); + } + if(blocked.length > 0) { + var blockDiv = document.createElement("div"); + blockDiv.id = "blockDiv"; + blockDiv.innerHTML = "Ausgeblendete Inhalte: "; + blockDiv.style.fontSize = "10px"; + blockDiv.style.marginTop = "50px"; + for(var i=0; i<blocked.length; i++) { + (function(_i) { + var a = document.createElement("a"); + a.innerHTML = blocked[_i]; + a.href = "#"; + if(_i > 0) { + blockDiv.appendChild(document.createTextNode(", ")); + } + a.onclick = function(e) { + blocked = blocked.slice(0, _i).concat(blocked.slice(_i + 1)); + localStorage["blocked"] = blocked.join(","); + document.location.reload(); + e.preventDefault(); + return false; + } + blockDiv.appendChild(a); + })(i); + } + document.getElementById("content").appendChild(blockDiv); + } + } + window.addEventListener("load", blockList, false); + var strips = document.getElementsByClassName("strip"); + var drop = document.createElement("div"); + drop.style.background = "#888"; + drop.style.fontSize = "5px"; + drop.innerHTML = " "; + for(var i=0; i<strips.length; i++) { + strips[strips[i].dataset.stripName] = strips[i]; + strips[i].setAttribute("draggable", "true"); + strips[i].ondragstart = function(e) { + e.dataTransfer.setData("Text", this.dataset.stripName); + } + strips[i].ondragover = function(e) { + this.parentNode.insertBefore(drop, this.nextSibling); + e.preventDefault(); + return false; + } + strips[i].ondragleave = function(e) { + try { drop.parentNode.removeChild(drop); } catch(e) {} + return false; + } + strips[i].ondrop = function(e) { + try { drop.parentNode.removeChild(drop); } catch(e) {} + var which = e.dataTransfer.getData("Text"); + if(which == this.dataset.stripName) { + e.preventDefault(); + return; + } + if(typeof strips[which] != "undefined") { + this.parentNode.insertBefore(strips[which], this.nextSibling); + var newOrder = document.getElementsByClassName("strip"); + var newOrderString = ""; + for(var i=0; i<newOrder.length; i++) { + var name = newOrder[i].dataset.stripName; + newOrderString += (newOrderString.length > 0 ? "," : "") + name; + } + localStorage["stripsOrder"] = newOrderString; + e.preventDefault(); + } + } + var deleter = document.createElement("sup"); + deleter.innerHTML = "[x]"; + deleter.style.fontWeight = "normal"; + deleter.style.color = "#900"; + deleter.style.fontSize = "10px"; + deleter.style.position = "absolute"; + deleter.style.display = "none"; + deleter.style.cursor = "pointer"; + var h2 = strips[i].getElementsByTagName("h2")[0]; + h2.appendChild(deleter); + h2.deleter = deleter; + h2.onmouseover = function() { this.deleter.style.display = "inline"; } + h2.onmouseout = function() { this.deleter.style.display = "none"; } + deleter.onclick = function() { + blocked.push(this.parentNode.parentNode.dataset.stripName); + localStorage["blocked"] = blocked.join(","); + blockList(); + this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); + } + } + var h1 = document.getElementsByTagName("h1")[1]; + h1.ondrop = strips[0].ondrop; + h1.ondragover = strips[0].ondragover; + if(typeof localStorage["stripsOrder"] != "undefined") { + var order = localStorage["stripsOrder"].split(/,/); + for(var i=order.length-1; i>=0; i--) { + if(document.getElementsByClassName("strip")[0].dataset.stripName != order[i] && typeof strips[order[i]] != "undefined") { + document.getElementsByClassName("strip")[0].parentNode.insertBefore(strips[order[i]], document.getElementsByClassName("strip")[0]); + } + } + } +})(); |