peertube-plugin-admin-message
Version:
動画・配信ページの説明欄下にインスタンス管理者からのメッセージを表示するプラグインです。
119 lines (106 loc) • 4.15 kB
JavaScript
async function register({ registerSetting, settingsManager, storageManager, videoCategoryManager, videoLicenceManager, videoLanguageManager, peertubeHelpers }) {
console.log('Admin Message Plugin: Server-side registration starting for PeerTube 7.2.1')
// プラグイン設定を登録
registerSetting({
name: 'enable-admin-message',
label: 'メッセージ表示を有効化',
type: 'input-checkbox',
default: true,
descriptionHTML: '管理者メッセージの表示を有効または無効にします'
})
registerSetting({
name: 'admin-message-content',
label: '管理者メッセージ内容',
type: 'input-textarea',
default: 'Welcome to our PeerTube instance!\n\nThis is an admin message.',
descriptionHTML: '管理者メッセージの内容(Markdown記法と安全なHTMLがサポートされています)',
private: false
})
registerSetting({
name: 'message-style',
label: 'メッセージスタイル',
type: 'select',
options: [
{ label: '情報(青)', value: 'info' },
{ label: '警告(オレンジ)', value: 'warning' },
{ label: '成功(緑)', value: 'success' },
{ label: 'エラー(赤)', value: 'error' },
{ label: 'デフォルト(グレー)', value: 'default' },
{ label: 'その他(透明・無色)', value: 'transparent' }
],
default: 'info',
descriptionHTML: '管理者メッセージの外観スタイル'
})
registerSetting({
name: 'show-on-video-pages',
label: '動画ページに表示',
type: 'input-checkbox',
default: true,
descriptionHTML: '通常の動画ページにメッセージを表示します'
})
registerSetting({
name: 'show-on-live-pages',
label: 'ライブページに表示',
type: 'input-checkbox',
default: true,
descriptionHTML: 'ライブ配信ページにメッセージを表示します'
})
registerSetting({
name: 'insert-position',
label: 'メッセージ挿入位置',
type: 'select',
options: [
{ label: '動画のすぐ下〜説明欄の間', value: 'before-description' },
{ label: '説明欄の下〜コメント欄の間(デフォルト)', value: 'after-description' },
{ label: 'コメント欄のすぐ下', value: 'after-comments' }
],
default: 'after-description',
descriptionHTML: 'ページ内でのメッセージ表示位置を選択してください'
})
registerSetting({
name: 'font-size',
label: '文字サイズ',
type: 'select',
options: [
{ label: '標準(16px)', value: 'normal' },
{ label: '大(18px)', value: 'large' },
{ label: '特大(20px)', value: 'extra-large' }
],
default: 'normal',
descriptionHTML: 'メッセージの文字サイズを選択してください'
})
// PeerTube 7.2.1 用のAPIエンドポイント登録
// クライアントサイドから設定を取得できるようにする
if (peertubeHelpers.registerApi) {
peertubeHelpers.registerApi({
method: 'GET',
path: '/settings',
handler: async (req, res) => {
try {
const settings = await settingsManager.getSettings([
'enable-admin-message',
'admin-message-content',
'message-style',
'show-on-video-pages',
'show-on-live-pages',
'insert-position',
'font-size'
])
console.log('Admin Message Plugin: API settings request', settings)
res.json(settings)
} catch (error) {
console.error('Admin Message Plugin: API error', error)
res.status(500).json({ error: 'Failed to get settings' })
}
}
})
}
console.log('Admin Message Plugin: Server-side registration completed successfully')
}
async function unregister() {
console.log('Admin Message Plugin: Server-side unregistration completed')
}
module.exports = {
register,
unregister
}