Warrior Cats - das RPG
Warrior Cats - die Welt der Katzen.
Tritt dem DonnerClan, WindClan, FlussClan, SchattenClan, WolkenClan oder dem BlutClan bei und führe ein Leben als Krieger!
Warrior Cats - das RPG
Warrior Cats - die Welt der Katzen.
Tritt dem DonnerClan, WindClan, FlussClan, SchattenClan, WolkenClan oder dem BlutClan bei und führe ein Leben als Krieger!

Warrior Cats - das RPG

Entdecke den Krieger in dir, werde einer von uns und klettere die Clan- Rangliste immer weiter nach oben.
 
StartseiteSuchenAnmeldenLogin
Hierarchie
DonnerClan
Anführer:
2. Anführer:
Heiler:

FlussClan
Anführer:
2. Anführer:
Heiler:
Heilerschüler:

WindClan
Anführer:
2. Anführer:
Heiler:
Heilerschüler:

WolkenClan
Anführer:
2. Anführer:
Heiler:


Streuner & Hauskätzchen
Das RPG
Jahreszeit:
Blattleere

Tageszeit:
Monduntergang [18. April 2024]

Tageskenntnis:
Kalt ist es in den Territorien der Clans geworden. Die Beute hat sich fast vollständig unter die Erde oder in die Bäume zurückgezogen, sodass die Territorien ruhig daliegen. Die Blattleere ist so richtig in den Territorien angekommen, und vor Schnee kann sich keine Katze mehr verbergen. Vom östlichen Zweibeinerort schleichen sich langsam die dunklen Wolken heran, die sich über den Territorien des WolkenClans und DonnerClans geöffnet haben: es schneit. Dicke Flocken legen sich über den Wald, färben ihn weiß, und machen es unangenehm für alle Waldbewohner. Zweibeiner und ihre Hunde sieht man hier kaum, während der Schnee so dicht fällt. Hauskatzen lassen sich gar nicht erst blicken.

Beim WindClan und FlussClan sieht das noch anders aus. Zwar scheint die Sonne nicht und die Winde sind kalt, doch von den dicken Flocken sind diese Clans vorerst verschont. Hin und wieder schneit es ein wenig, doch es ist bei weitem nicht genug Schnee, um die Territorien darin zu begraben. Der Fluss ist nun allerdings gefroren – das Eis ist allerdings nicht dick genug, um eine Katze zu tragen!

Besonders betroffen:
DonnerClan und WolkenClan: starker Schneefall
FlussClan: Eisschicht auf dem Fluss

Territoriums-
beschreibungen

Suchen
 
 

Ergebnisse in:
 
Rechercher Fortgeschrittene Suche

 

 Automatisches Zwischenspeichern von Posts

Nach unten 
2 verfasser
AutorNachricht
Il'gynoth
Technik
Il'gynoth


Avatar von : Moonpie - http://subciniux.deviantart.com
Anzahl der Beiträge : 20
Anmeldedatum : 08.08.16

Dein Krieger
Charaktere:
Clans:
Ränge:

Automatisches Zwischenspeichern von Posts Empty
BeitragThema: Automatisches Zwischenspeichern von Posts   Automatisches Zwischenspeichern von Posts EmptySo 19 Feb 2023, 20:35

Sehr geehrte Userschaft,

es überrascht bestimmt niemanden, dass ich mir aus Langweile wieder Gedanken gemacht habe, wie man die Funktionalität des Forums hinsichtlich einer technischen Betrachtung verbessern könnte.

Wie man dem Titel des Themas entnehmen kann, geht es hierbei um ein automatisches Zwischenspeichern von Posts im Browser-Cache. Sinn und Zweck davon soll es sein, dass Posts nicht mehr versehentlich verloren gehen können, weil der Browsertab geschlossen wird (oder der Browser sich aus Trotz dazu entscheidet, den Dienst zu quittieren).

Ich habe dies - in gewohnter Art - bereits lokal bei mir im Browser umgesetzt. Der Ablauf ist wie folgt:
  1. Es wird die aktuell aufgerufene Seite anhand eines Musters überprüft (betroffen sind sowohl /post-Routen als auch /t[THREAD_ID]p[POST_OFFSET]-[THREADNAME]-Routen). 
  2. Es wird ein "Speicherschlüssel" berechnet, um pro Thread (beim Verfassen einer Antwort) bzw. pro Forum (beim Erstellen eines Threads) jeweils einen Post zwischenspeichern zu können. (Bspw. wäre beim Erstellen dieses Threads der Speicherschlüssel wrpg-autodraft-f146, da die ID des "Verbesserungsvorschläge"-Unterforums 146 ist. Beim Antworten auf diesen Thread wäre es entsprechend wrpg-autodraft-t26127)
  3. Alle 500 Millisekunden wird der Inhalt des Text-Editors im Browser gespeichert. Aus technischer Perspektive nutze ich an dieser Stelle den localStorage des Window-Objekts, der einen persistenten Speicher zwischen verschiedenen Sessions bietet (im Vergleich zum Session-Speicher, der nach dem Schließen des Tabs bzw. Browsers automatisch gelöscht wird.). Somit besteht selbst nach einem Schließen bzw. Abstürzen des Browsers die Möglichkeit, den Post wiederherzustellen.
  4. Beim Laden einer der beiden Routen aus Schritt 1. wird geprüft, ob ein Post unter dem berechneten Speicherschlüssel existiert - und wenn ja, wird der Post automatisch wiederhergestellt.
  5. Beim Absenden des Posts wird der Zwischenspeicher für den Thread geleert.


Hier einfach mal der bisherige Code (ohne Schritt 5.) zum Ausprobieren (Mithilfe von Tampermonkey (klick))
Ansonsten würde ich zeitnah einfach mal einen Videoclip/ein GIF anhängen, um die Funktionalität zu demonstrieren.
Code:
// ==UserScript==
// @name         Post-Autosave
// @version      0.1
// @description  Autosave posts in localStorage
// @author       Il'gynoth
// @match        https://www.warriors-rpg.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=warriors-rpg.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let threadPattern = /(t\d+)(p\d+)?/gm;

    if (location.pathname.startsWith("/post") || threadPattern.test(location.pathname)) {
        let path = location.pathname;

        if (path.startsWith("/post") && location.search == "") {
            path = window.sessionStorage.getItem("wrpg-autodraft-prevloc");
        } else {
            window.sessionStorage.setItem("wrpg-autodraft-prevloc", location.pathname);
        }

        const editor = $("#text_editor_textarea").sceditor("instance");
        let isThread = true;
        let id = 0;

        if (path.startsWith("/post")) {
            if (location.search.includes("mode=newtopic")) { isThread = false; }

            let extractionPattern = /[tf]=(\d+)/;
            let match = location.search.match(extractionPattern);

            if (match[1]) {
                id = new Number(match[1]);
            }
        } else {
            let extractionPattern = /t(\d+)/;
            let match = path.match(extractionPattern);

            if (match[1]) {
                id = new Number(match[1]);
            }
        }

        let storageKey = 'wrpg-autodraft-' + (isThread ? "thread-" : "forum-") + id;

        editor.val(window.localStorage.getItem(storageKey));

        function autosave_shit() {
            let editorValue = editor.val();

            window.localStorage.setItem(storageKey, editorValue);
        }

        let parent = editor.getContentAreaContainer()[0];

        let timer = setInterval(() => {
            autosave_shit();
            console.log("Saving");
        }, 500);

        while (parent) {
            if (/form/i.test(parent.nodeName)) {
                parent.addEventListener(
                    'submit', (event) => {
                        clearTimeout(timer);
                        window.localStorage.removeItem(storageKey);
                    }, true
                );
                break;
            }

            parent = parent.parentNode;
        }
    }
})();

Und nochmal als GitHub-Gist, wenn hier jemand Syntax-Highlighting toll findet:
https://gist.github.com/archanyhm/4d41a13f2e6921cfd514cc00cef4afa2

---
TLDR: Ich habe eine Möglichkeit gefunden, Posts automatisch zwischenzuspeichern, damit sie beim Schließen (oder Abstürzen) des Tabs/Browsers nicht verloren gehen.
---


Mit freundlichsten Grüßen
Phil


Zuletzt von Il'gynoth am So 14 Mai 2023, 10:17 bearbeitet; insgesamt 2-mal bearbeitet
Nach oben Nach unten
Anon
Moderation
Anon

Halloween 2023
Teilnahme Halloween Event 2023
Ehren-EVT
Auszeichnung für die Ehren-Mitglieder des EVT 2023
COTM August 2023
Sprossenherz, Gewinner COTM August 2023

Avatar von : RINZAWA_0131 [twt]
Anzahl der Beiträge : 4577
Anmeldedatum : 15.02.13
Alter : 22

Dein Krieger
Charaktere:
Clans:
Ränge:

Automatisches Zwischenspeichern von Posts Empty
BeitragThema: Re: Automatisches Zwischenspeichern von Posts   Automatisches Zwischenspeichern von Posts EmptyDo 02 März 2023, 12:33



Heya!

Vielen Dank für den Vorschlag eines so nützlichen Features! Recht schnell waren wir uns im Team einig, dass dieses Feature nur Vorteile, und keine wirklichen Nachteile bringt, somit ist dieser Vorschlag offiziell angenommen!

Ich nehme an, dass du dich ohnehin bzgl der Umsetzung mit den Admins in Verbindung gesetzt hast bzw. es leicht für dich sein wird dies zu tun; daher sollte die Einführung nicht allzu kompliziert werden :3
Ich füge die Idee sofort in unsere Liste ein^^

LG Claw Razz




~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~_~

»Someday, I’d like to show them to you.«


(c) Jolyn via twitter
Einmal klicken? -->Automatisches Zwischenspeichern von Posts RjYHGAutomatisches Zwischenspeichern von Posts KOEB2
Relations & Postplan

Nach oben Nach unten
 
Automatisches Zwischenspeichern von Posts
Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
Warrior Cats - das RPG :: Clan - Lager :: Schülerbau :: Bearbeitete Verbesserungsvorschläge-
Gehe zu: