トピック管理パネルにカスタムオプションはありますか?

過去15時間、私の時間は悪夢そのものでした。既存のプラグインやソースコードを読み漁り、極めて基本的な機能を実装して最初のプラグインを作成しようとしたからです。助けが必要です。

具体的には、各投稿に対して管理パネル(左下のボタン)に新しいボタンを追加する方法が知りたいです。私が達成できたのは、そのボタンをウィジェットと同じ要素に配置することまでです。

しかし、箇条書きの点に注目してください。これは、私が作成したものが本来入るべき ul 要素に入っていないためです。どう修正すればよいのか全く見当が付きません。

(この div が私のオプションです)

私は以下のコードでそれを行いました。

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) {
				// ユーザーはボタンを表示する権限がある

				api.decorateWidget('topic-admin-menu:after', (decorator) => {
					// 管理メニューにボタンを追加
					return decorator.attach('admin-menu-button', {
						icon: 'ban',
						fullLabel: 'tl_post_lock.button_label',
						action: 'actionTlLock'
					})
				})
				
			}
		})
	}
}

その後、実際にクリックできるようにする方法が見つかりません。decorateWidget ブロックの後に、以下のような形式のコードを書くと、

image

存在しない行や文字を指す、全く役に立たない以下のエラーが発生します。

さらに、その他にも多数のスパムメッセージが表示されます。

正気を失いそうです。クリックしたときにコードを実行できるよう、単に管理パネルの左下にボタンを追加する方法を教えてください。

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
				})
「いいね!」 5

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.