DF Bookmarks

Tool to let you navigate easier through DF

目前为 2017-09-02 提交的版本。查看 最新版本

// ==UserScript==
// @name         DF Bookmarks
// @version      1.30
// @description  Tool to let you navigate easier through DF
// @author       A Meaty Alt
// @include      /onlinezombiemmo/index.php/
// @exclude      fairview.deadfrontier.com/onlinezombiemmo/index.php?page=21
// @exclude      https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=21
// @grant        none
// @require      https://greasyfork.org/scripts/32816-append-script/code/Append%20Script.js?version=215508
// @noframes
// @run-at       document-idle
// @namespace 
// ==/UserScript==

(function() {
    var elements = {};

    var hamburgerImg = document.createElement("img");
    hamburgerImg.src = "https://puu.sh/xpuv8/067b3cef24.png";
    hamburgerImg.height = "50";
    hamburgerImg.width = "40";
    elements.hamburgerLink = document.createElement("a");
    elements.hamburgerLink.href = "#";
    elements.hamburgerLink.id = "hamburger";
    elements.hamburgerLink.appendChild(hamburgerImg);
    elements.hamburgerLink.setAttribute("onclick", "showMenu()");
    elements.hamburgerLink.style.float += " left";
    elements.hamburgerLink.style.textAlign = "center";
    elements.hamburgerLink.style.marginLeft = "30px";
    
    function showMenu(){
        var menu = document.getElementById("menu_holder");
        if(menu){
            if(menu.hidden)
                menu.hidden = false;
            else
                menu.hidden = true;
        }
        else
            createMenu();
    }
    appendScript(showMenu.toString());

    function createMenu(){
        function createBookmark(name, link){
            var newBookmarkHolder = document.createElement("span");
            newBookmarkHolder.classList.add("newBookmark");
            var i = document.getElementsByClassName("newBookmark").length+1;
            newBookmarkHolder.id = "bookmark_"+i;
            newBookmarkHolder.innerHTML += "<a href='"+link+"'>"+name + "</a>";
            newBookmarkHolder.style.marginLeft = "30px";
            var removeBookmarkImg = document.createElement("img");
            removeBookmarkImg.src = "https://cdn1.iconfinder.com/data/icons/perfect-flat-icons-2/512/Erase-2.png";
            removeBookmarkImg.style.height = "20px";
            removeBookmarkImg.style.width = "20px";
            removeBookmarkImg.style.cursor = "pointer";
            removeBookmarkImg.style.marginLeft = "10px";
            removeBookmarkImg.id = "remove_"+i;
            
            removeBookmarkImg.setAttribute("onclick", 'var bookmarks = JSON.parse(localStorage.getItem("df_bookmarks"));delete bookmarks[this.parentElement.id];localStorage.setItem("df_bookmarks", JSON.stringify(bookmarks));this.parentElement.outerHTML = ""; ');
            newBookmarkHolder.appendChild(removeBookmarkImg);
            document.getElementById("new_bookmark_holder").appendChild(newBookmarkHolder);
            var bookmarks = localStorage.getItem("df_bookmarks")? JSON.parse(localStorage.getItem("df_bookmarks")) : {};
            bookmarks[newBookmarkHolder.id] = name+"|"+link;
            localStorage.setItem("df_bookmarks", JSON.stringify(bookmarks));
        }
        appendScript(createBookmark.toString());
        function loadBookmarks(){
            if(localStorage.getItem("df_bookmarks")){
                var bookmarks = JSON.parse(localStorage.getItem("df_bookmarks"));
                for(var i in bookmarks){
                    var bookmark = bookmarks[i].split("|");
                    createBookmark(bookmark[0], bookmark[1]);
                }
            }
        }
        function createAddBookmark(){
            function addBookmark(){
                var name = prompt("Please enter a name for the bookmark");
                if(name){
                    var link = prompt("Please enter a link for the bookmark (Don't forget the http:// or https:// at the begining of the address)");
                    if(link){
                        createBookmark(name, link);
                    }
                    else{
                        alert("Error adding bookmark");
                    }
                }
                else{
                    alert("Error adding bookmark");
                }
            }
            appendScript(addBookmark.toString());
            
            var addBookmarkImg = document.createElement("img");
            addBookmarkImg.src = "https://cdn3.iconfinder.com/data/icons/musthave/256/Add.png";
            addBookmarkImg.style.height = "30px";
            addBookmarkImg.style.width = "30px";
            addBookmarkImg.style.position = "relative";
            addBookmarkImg.style.cursor = "pointer";
            addBookmarkImg.style.marginBottom = "10px";
            addBookmarkImg.style.right = "30px";
            addBookmarkImg.style.float = "right";
            addBookmarkImg.setAttribute("onclick", "addBookmark()");
            document.getElementById("menu_holder").appendChild(addBookmarkImg);
        }
        
        var menuHolder = document.createElement("div");
        menuHolder.style.zIndex = 99;
        menuHolder.style.position = "relative";
        menuHolder.style.top = "10px";
        menuHolder.id = "menu_holder";
        var bookmarkHolder = document.createElement("span");
        bookmarkHolder.id = "new_bookmark_holder";
        menuHolder.appendChild(bookmarkHolder);
        var table = document.getElementsByTagName("table")[7];
        table.appendChild(menuHolder);
        loadBookmarks();
        createAddBookmark();
    }

    var outpostImg = document.createElement("img");
    outpostImg.src = "https://puu.sh/xl87q/22ec393481.png";
    outpostImg.height = "30";
    outpostImg.width = "30";
    elements.outpostLink = document.createElement("a");
    elements.outpostLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php";
    elements.outpostLink.appendChild(outpostImg);
    elements.outpostLink.innerHTML += "<div>Outpost</div>";
    elements.outpostLink.style.float += " left";
    elements.outpostLink.style.textAlign = "center";
    elements.outpostLink.style.marginLeft = "30px";

    var creditImg = document.createElement("img");
    creditImg.src = "https://puu.sh/xl6wJ/505c55fd89.png";
    creditImg.height = "30";
    creditImg.width = "30";
    elements.creditLink = document.createElement("a");
    elements.creditLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=28";
    elements.creditLink.appendChild(creditImg);
    elements.creditLink.innerHTML += "<div>Credit Shop</div>";
    elements.creditLink.style.float += " left";
    elements.creditLink.style.textAlign = "center";
    elements.creditLink.style.marginLeft = "30px";

    var forumImg = document.createElement("img");
    forumImg.src = "https://puu.sh/xl6wI/f7c1dc5342.png";
    forumImg.height = "30";
    forumImg.width = "30";
    elements.forumLink = document.createElement("a");
    elements.forumLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?action=forum";
    elements.forumLink.appendChild(forumImg);
    elements.forumLink.innerHTML += "<div>Forum</div>";
    elements.forumLink.style.float += " left";
    elements.forumLink.style.textAlign = "center";
    elements.forumLink.style.marginLeft = "30px";

    var marketImg = document.createElement("img");
    marketImg.src = "https://puu.sh/xl6wG/9513335dc7.png";
    marketImg.height = "30";
    marketImg.width = "30";
    elements.marketLink = document.createElement("a");
    elements.marketLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=35";
    elements.marketLink.appendChild(marketImg);
    elements.marketLink.innerHTML += "<div>Market</div>";
    elements.marketLink.style.float += " left";
    elements.marketLink.style.textAlign = "center";
    elements.marketLink.style.marginLeft = "30px";

    var bankImg = document.createElement("img");
    bankImg.src = "http://i.imgur.com/ves2oqQ.png";
    bankImg.height = "30";
    bankImg.width = "30";
    elements.bankLink = document.createElement("a");
    elements.bankLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=15";
    elements.bankLink.appendChild(bankImg);
    elements.bankLink.innerHTML += "<div>Bank</div>";
    elements.bankLink.style.float += " left";
    elements.bankLink.style.textAlign = "center";
    elements.bankLink.style.marginLeft = "30px";

    var storageImg = document.createElement("img");
    storageImg.src = "http://i.imgur.com/uwgi6jw.png";
    storageImg.height = "30";
    storageImg.width = "30";
    elements.storageLink = document.createElement("a");
    elements.storageLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=50";
    elements.storageLink.appendChild(storageImg);
    elements.storageLink.innerHTML += "<div>Storage</div>";
    elements.storageLink.style.float += " left";
    elements.storageLink.style.textAlign = "center";
    elements.storageLink.style.marginLeft = "30px";

    var logoutImg = document.createElement("img");
    logoutImg.src = "https://puu.sh/xl6wH/91e58a7b64.png";
    logoutImg.height = "30";
    logoutImg.width = "30";
    elements.logoutLink = document.createElement("a");
    elements.logoutLink.href = getLogoutLink();
    elements.logoutLink.appendChild(logoutImg);
    elements.logoutLink.innerHTML += "<div>Logout</div>";
    elements.logoutLink.style.float = "right";
    elements.logoutLink.style.textAlign = "center";
    elements.logoutLink.style.marginRight = "30px";

    var profileImg = document.createElement("img");
    profileImg.src = "https://puu.sh/xldVQ/91268b98a4.png";
    profileImg.height = "30";
    profileImg.width = "30";
    elements.profileLink = document.createElement("a");
    elements.profileLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?action=profile";
    elements.profileLink.style.float = "right";
    elements.profileLink.appendChild(profileImg);
    elements.profileLink.innerHTML += "<div>Profile</div>";
    elements.profileLink.style.textAlign = "center";
    elements.profileLink.style.marginRight = "30px";

    var inventoryImg = document.createElement("img");
    inventoryImg.src = "https://puu.sh/xle3E/7689941f18.png";
    inventoryImg.height = "30";
    inventoryImg.width = "30";
    elements.inventoryLink = document.createElement("a");
    elements.inventoryLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=25";
    elements.inventoryLink.style.float = "right";
    elements.inventoryLink.appendChild(inventoryImg);
    elements.inventoryLink.innerHTML += "<div>Inventory</div>";
    elements.inventoryLink.style.textAlign = "center";
    elements.inventoryLink.style.marginRight = "30px";

    var yardImg = document.createElement("img");
    yardImg.src = "https://puu.sh/xmmVQ/44651a4cc6.png";
    yardImg.height = "30";
    yardImg.width = "30";
    elements.yardLink = document.createElement("a");
    elements.yardLink.href = "https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=24";
    elements.yardLink.style.float = "right";
    elements.yardLink.appendChild(yardImg);
    elements.yardLink.innerHTML += "<div>The Yard</div>";
    elements.yardLink.style.textAlign = "center";
    elements.yardLink.style.marginRight = "30px";

    function getLogoutLink(){
        return $("img[name=logout]").parent()[0].href;
    }

    var table = document.getElementsByTagName("table")[7];
    table.innerHTML = "<div id=bookmark_holder>";
    dst = document.getElementById("bookmark_holder");
    dst.style.overflow = "hidden";

    for(var element in elements){
        if(element.indexOf("Link") > -1){
            dst.appendChild(elements[element]);
        }
    }
    table.style.backgroundImage = "url(https://puu.sh/xm1DU/7f0d182487.png)";
    table.style.transform = "scaleY(1.2)";
    table.style.position = "relative";
    table.style.top = "5px";

    var annoyingBiatch = document.getElementsByTagName("tr")[1];
    annoyingBiatch.style.height = "220px";
    
    appendScript(createMenu.toString());
})();