ScriptAlleNachrichtenGelesen: Unterschied zwischen den Versionen
Aus Horizon
(Die Seite wurde neu angelegt: „Dieses GreaseMonkey Script erweitert das Spiel um die Möglichkeit alle Berichte mit einem Knopfdruck als gelesen zu markieren. Es wird…“) |
|||
Zeile 1: | Zeile 1: | ||
+ | =Alle Berichte als gelesen markieren= | ||
+ | |||
Dieses [[:Kategorie:GM-Scripte|GreaseMonkey Script]] erweitert das Spiel um die Möglichkeit alle Berichte mit einem Knopfdruck als gelesen zu markieren. | Dieses [[:Kategorie:GM-Scripte|GreaseMonkey Script]] erweitert das Spiel um die Möglichkeit alle Berichte mit einem Knopfdruck als gelesen zu markieren. | ||
Version vom 19. Februar 2016, 02:00 Uhr
Alle Berichte als gelesen markieren
Dieses GreaseMonkey Script erweitert das Spiel um die Möglichkeit alle Berichte mit einem Knopfdruck als gelesen zu markieren.
Es wird ein neuer Knopf in der Berichteübersicht hinzugefügt der alle ungelesenen Berichte im Hintergrund herunterlädt (und sie komplett ignoriert, versprochen! ;) ) - der Horizon-Server denkt dann die Nachrichten wären gelesen worden.
Anmerkungen
Bisher fand kein ausführliches Testen statt - es wurde nur im Chromium Browser mit Tampermonkey getestet.
Code
// ==UserScript== // @name Horiversum - mark all messages as read // @namespace http://tampermonkey.net/ // @version 2016.02.19 // @description adds button to mark all messages as read // @author Dr.Ecksack // @match *horiversum.org/game/main/main.php?cmd=message* // @match *horiversum.org/game/main/main.php?cmd=message* // @grant none // ==/UserScript== /* jshint -W097 */ 'use strict'; var markAllMessagesAsRead = function(){ //check if all pages/messages has been loaded in the background var messagesReadSoFar = 0; var checkIfAllMessagesWereRead = function() { messagesReadSoFar += 1; if(messagesReadSoFar >= urls.length) { document.location.reload(true); } } //get links to all (unread) messages var classes = ['MessageReportDefault', 'MessageReportFleetArrive', 'MessageReportExplore', 'MessageReportResearch', 'MessageReportColonize', 'MessageReportSpy', 'MessageReportBattle', 'MessageReportAlliance', 'MessageReportBuddy', 'MessageReportTrade', 'MessageReportEvent', 'MessageReportResponse', 'MessageReportLink']; var urls = []; for (var i = 0; i < classes.length; i++){ var links = document.getElementsByClassName(classes[i]); for (var j=0; j<links.length; j++){ urls.push(links[j].href); } } //tell the user something is happening var readAllMessagesButton = document.getElementById('readAllMessagesButton'); if (urls.length == 0){ readAllMessagesButton.innerHTML = "Bereits alle gelesen"; }else{ readAllMessagesButton.innerHTML = "wird bearbeitet ..."; } //get all the links via xmlhttprequest (hope the server marks them as read) for (var i=0; i< urls.length; i++){ var oReq = new XMLHttpRequest(); oReq.addEventListener("load", function(){ checkIfAllMessagesWereRead(); }); oReq.open("GET", urls[i]); oReq.send(); } } var addReadAllMessagesButton = function(){ //only show it if there is a button "Alle berichte löschen" (not in message-read window etc.) if (document.querySelectorAll("[title='Alle Berichte löschen']").length == 0) return; var e = document.getElementsByClassName('MessageTableBottomCellLeft'); var readAllMessagesButton = document.createElement('a'); readAllMessagesButton.setAttribute('id', 'readAllMessagesButton'); readAllMessagesButton.setAttribute('title', 'Alle Berichte als gelesenn'); readAllMessagesButton.appendChild(document.createTextNode('Alle Berichte als gelesen')); readAllMessagesButton.setAttribute('class', 'SystemGfxButton light150 White'); readAllMessagesButton.onclick = markAllMessagesAsRead; e[0].innerHTML = ""; e[0].appendChild(readAllMessagesButton); } addReadAllMessagesButton();