Benutzerdefinierte Option im Themen-Admin-Bereich?

Die letzten 15 Stunden waren für mich ein Albtraum aus dem Lesen bestehender Plugins und des Quellcodes, nur um extrem grundlegende Funktionalität zu erhalten, damit ich mein erstes Plugin schreiben kann. Ich brauche Hilfe.

Konkret benötige ich Hilfe, um einfach einen neuen Button im Admin-Bereich für jeden Beitrag zu erhalten (der Button unten links). Das Maximum, das ich bisher geschafft habe, ist, den Button in dasselbe Element wie das Widget zu setzen…

Aber beachte den Aufzählungspunkt. Das liegt daran, dass das, was ich erstellt habe, nicht in das ul-Element gelangt, wie es sollte. Ich habe keine Ahnung, wie ich das beheben soll.

(Das div ist meine Option.)

Ich habe das mit diesem Code gemacht:

import { withPluginApi } from 'discourse/lib/plugin-api';
import showModal from "discourse/lib/show-modal";

export default {
	name: 'tl-post-lock',
	initialize() {
		withPluginApi('0.8.24', function(api) {
			const user = api.getCurrentUser()

			if(user.trust_level >= api.container.lookup('site-settings:main').tl_lock_minimum) {
				// Der Benutzer darf den Button sehen

				api.decorateWidget('topic-admin-menu:after', (decorator) => {
					// Fügt den Button zum Admin-Menü hinzu
					return decorator.attach('admin-menu-button', {
						icon: 'ban',
						fullLabel: 'tl_post_lock.button_label',
						action: 'actionTlLock'
					})
				})
				
			}
		})
	}
}

Danach gibt es keine Möglichkeit, ihn tatsächlich anklickbar zu machen. Nach dem decorateWidget-Block, wenn ich irgendeine Form davon schreibe:

image

Erhalte ich den folgenden absolut nicht hilfreichen Fehler mit einer Zeile und einem Zeichen, die gar nicht EXISTIEREN.

Zusammen mit einer Menge anderen Spam.

Ich verliere den Verstand. Wie füge ich einfach einen Button unten links im Admin-Bereich hinzu, damit ich Code ausführen kann, wenn ich darauf klicke?

Finally figured it out.

api.decorateWidget('topic-admin-menu:adminMenuButtons', (decorator) => {
					// Adds the button to the admin menu
					return {
						icon: 'ban',
						fullLabel: 'tl_post_lock.button_label',
						action: 'actionTlLock'
					}
				})
				
				api.attachWidgetAction('topic-admin-menu', 'actionTlLock', () => {
					// code
				})