ScriptNachrichtenZitat

Aus Horizon
Wechseln zu: Navigation, Suche

Dieses GreaseMonkey Script erweitert das Nachrichtensystem um eine Zitierfunktion. Wenn man auf eine Nachricht die man gerade liest antwortet, dann wird der Inhalt der Nachricht unter der eigenen Antwort eingefügt. Achtung: Funktioniert nur von der Nachricht aus, nich von der Nachrichtenübersicht aus.

Getestet mit Tampermonkey auf Chrome.

// ==UserScript==
// @name         Horiversum - Mail-Reply-Text Script
// @namespace    http://tampermonkey.net/
// @version      2019.03.05
// @description  fügt das wie bei E-Mails übliche "Am xx schrieb yy: <Zitat des Textes>" in Antwortnachrichten innerhalb des Spiels Horizon ein
// @author       Dr.Ecksack
// @match        *horiversum.org/game/main/main.php?cmd=message*action=view*
// @match        *horiversum.org/game/main/main.php?cmd=message*action=reply*
// @match        *horiversum.de/game/main/main.php?cmd=message*action=view*
// @match        *horiversum.de/game/main/main.php?cmd=message*action=reply*
// @match        *horitest.goetterheimat.de/game/main/main.php?cmd=message*action=view*
// @match        *horitest.goetterheimat.de/game/main/main.php?cmd=message*action=reply*
// @grant        none
// ==/UserScript==
/* jshint -W097 */
'use strict';


var getMailDetails = function(){
    var message = document.getElementsByClassName("MessageTable");
    var header = message[0];
    
    var time =   header.getElementsByTagName("td")[4].innerText;
    var author = header.getElementsByTagName("td")[5].innerText;
    var text =   message[1].innerText;
    
    sessionStorage.setItem('horizon_script_replyMessage_time', time);
    sessionStorage.setItem('horizon_script_replyMessage_author', author);
    sessionStorage.setItem('horizon_script_replyMessage_text', text);

    window.location = this.href;
};

var setReplyButtonOnClick = function(){
    //console.log("starting setReplyButtonOnClick");
    var button = document.querySelectorAll("[title='auf Nachricht antworten']");
    if (button.length == 1){
        button[0].onclick = getMailDetails;
    }
};

var insertMailDetails = function(){
    //console.log("starting insertMailDetails");
    var time = "";
    var author = "";
    var text = "";
    var replytext = "";
    
    if (sessionStorage.getItem('horizon_script_replyMessage_time'))
        time = sessionStorage.getItem('horizon_script_replyMessage_time');
    if (sessionStorage.getItem('horizon_script_replyMessage_author'))
        author = sessionStorage.getItem('horizon_script_replyMessage_author');
    if (sessionStorage.getItem('horizon_script_replyMessage_text'))
        text = sessionStorage.getItem('horizon_script_replyMessage_text');
    
    if (time != "" &&
        author != "" &&
        text != ""){

        //add > before every line
        text = text.replace(/^/gm, ">");
        
        replytext = "\n\n\nAm " + time + " schrieb " + author + text;
        
        var textarea = document.getElementsByClassName("MessageTextarea")[0];
        textarea.value = replytext;

        //clear the stored variables
        sessionStorage.setItem('horizon_script_replyMessage_time', "");
        sessionStorage.setItem('horizon_script_replyMessage_author', "");
        sessionStorage.setItem('horizon_script_replyMessage_text', "");
    }
    
};

if (window.location.href.indexOf('reply') > 0)
    insertMailDetails();

if (window.location.href.indexOf('view') > 0)
    setReplyButtonOnClick();