Discourse closes & archiviert Topic-Nutzertechnik

(Passt vielleicht unter Dev, aber ich habe es hier reingeschoben, da ich mir nicht sicher war)

Beim Aufräumen meines Posteingangs in einem Forum, das ich verwalte, indem ich alte PMs für Gruppenmitgliedschaftsanfragen manuell schließe und archiviere, wurde ich genervt.

Hiermit präsentiere ich das Userscript, das das für dich erledigt! Du klickst einfach mit der rechten Maustaste, gehst zur Option „Tampermonkey“ und führst dann das Skript „Schließen und Archivieren“ aus!

Code:

// ==UserScript==
// @name         Schließen und Archivieren
// @namespace    http://tampermonkey.net/
// @version      2025-02-14
// @description  Schließt und archiviert das aktuell geöffnete Thema/die private Nachricht, wenn es ausgeführt wird
// @author       Firepup Sixfifty
// @match        https://=hostname=/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=amcforum.wiki
// @grant        none
// @run-at       context-menu
// ==/UserScript==

(function() {
    'use strict';

    fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/status`, {
        "headers": {
            "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
            "accept": "application/json",
            "x-csrf-token": document.querySelector("[name='csrf-token']").content
        },
        "body": "status=closed&enabled=true",
        "method": "PUT"
    }).then((r)=>{
        fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/status`, {
            "headers": {
                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                "accept": "application/json",
                "x-csrf-token": document.querySelector("[name='csrf-token']").content
            },
            "body": "status=archived&enabled=true",
            "method": "PUT"
        }).then((r)=>{
            fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/archive-message`, {
                "headers": {
                    "accept": "application/json",
                    "x-csrf-token": document.querySelector("[name='csrf-token']").content
                },
                "method": "PUT"
            });
        })
    })
})();
1 „Gefällt mir“

Warten Sie… also, wie führe ich das aus? Wo soll ich es platzieren?

Es ist ein Skript, das für die Browser-Erweiterung Tampermonkey geschrieben wurde

1 „Gefällt mir“

Tut es mehr als die Verknüpfung a, wenn wir uns auf einer PM-Seite befinden?

Ja – Es schließt auch den PM.

Archivierte Beiträge können nicht beantwortet werden:

Ich weiß nicht, ich schließe sie nur für den Fall, dass ein Mitarbeiter versehentlich darauf stößt, es ist klarer, dass sie nicht beantwortet werden sollen.

Sind Sie ein Administrator oder nur ein Moderator? Wenn Sie Administrator sind, könnten Sie wahrscheinlich eine Theme-Komponente erstellen, anstatt sich auf ein Userscript zu verlassen.

Dennoch sind Userscripts für Websites, bei denen Sie den Code nicht bearbeiten können, immer noch eine interessante Lösung für verschiedene Verbesserungen.

Ich benutze sie für viele Websites.

Auf meta.discourse.org habe ich eines, das eine Tastenkombination Strg + Umschalt + k hinzufügt, um meinen ausgewählten Text im Composer mit kbd-Tags zu umschließen :slight_smile:

// ==UserScript==
// @name         kbd shortcut for meta.discourse.org
// @namespace    Violentmonkey Scripts
// @version      1.0
// @description  Fügt kbd-Tags in Textbereiche auf meta.discourse.org mit Strg + Umschalt + k ein
// @author       chatGPT
// @match        https://meta.discourse.org/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.addEventListener('keydown', function(event) {
        if (event.ctrlKey && event.shiftKey && event.key === 'K') {
            const activeElement = document.activeElement;
            if (activeElement.tagName === 'TEXTAREA' && activeElement.classList.contains('ember-text-area')) {
                const start = activeElement.selectionStart;
                const end = activeElement.selectionEnd;
                const text = activeElement.value;
                const insertText = '<kbd>';
                const closeText = '</kbd>';

                const selectedText = text.slice(start, end);
                activeElement.value = text.slice(0, start) + insertText + selectedText + closeText + text.slice(end);

                const cursorPosition = end === start
                    ? start + insertText.length
                    : start + insertText.length + selectedText.length + closeText.length;

                activeElement.selectionStart = activeElement.selectionEnd = cursorPosition;

                event.preventDefault();
            }
        }
    });
})();

Außerdem benutze ich Tampermonkey nicht, da es Closed Source ist. Ich bevorzuge Open-Source-Software, und es gibt mehrere Kandidaten (sie sehen alle gleich aus und die Skripte sind kompatibel). Ich denke, das am häufigsten verwendete ist Violentmonkey.

1 „Gefällt mir“

Ich habe es nur in ein Userscript gepackt, weil ich zu faul war, eine TC dafür zu erstellen, und es war schneller zu bearbeiten und zu testen (ich habe es ursprünglich nur ein paar Mal in der Konsole ausgeführt, um es zu testen)

Oooooooh, das ist tatsächlich sehr schön zu haben, danke fürs Teilen!

Habe das Skript nur ein bisschen geändert, damit es auch bei Themen funktioniert, was auch immer das wert ist (dadurch tritt allerdings der seltsame Effekt auf, dass eine archivierte private Nachricht entsteht).

1 „Gefällt mir“