flarum-msteams-webhook/js/src/admin/index.js

124 lines
3.3 KiB
JavaScript

import app from 'flarum/admin/app';
app.initializers.add('sbp-jm-msteams-webhook', function () {
app.extensionData
.for('sbp-jm-msteams-webhook')
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.enabled',
label: 'Teams-Spiegelung aktivieren',
help: 'Spiegelt Flarum-Web/Alert-Benachrichtigungen zusätzlich in den Microsoft Teams Activity Feed.',
type: 'boolean',
},
100
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.tenant_id',
label: 'Entra Tenant ID',
type: 'text',
placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
},
90
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.client_id',
label: 'App / Client ID',
type: 'text',
placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
},
80
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.client_secret',
label: 'Client Secret',
type: 'password',
},
70
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.forum_base_url',
label: 'Forum Base URL',
help: 'Wird für Deep Links aus Teams zurück in Flarum verwendet.',
type: 'text',
placeholder: 'https://forum.example.tld',
},
60
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.user_lookup_strategy',
label: 'Benutzer-Mapping',
help: 'Wie der Zielbenutzer in Microsoft Graph aufgelöst wird.',
type: 'select',
options: {
email: 'E-Mail des Flarum-Benutzers / UPN wenn identisch',
upn: 'UPN aus User-Preference (Fallback auf E-Mail)',
preference: 'Freier Preference-Key am Benutzer',
},
default: 'email',
},
50
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.upn_preference_key',
label: 'Preference-Key für UPN',
type: 'text',
placeholder: 'sbp-jm-msteams-webhook.upn',
},
40
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.user_preference_key',
label: 'Preference-Key für freies Ziel',
type: 'text',
placeholder: 'sbp-jm-msteams-webhook.target',
},
39
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.activity_type',
label: 'Teams Activity Type',
help: 'Für den Schnelltest am besten systemDefault verwenden.',
type: 'text',
placeholder: 'systemDefault',
},
30
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.teams_app_id',
label: 'Teams App ID',
help: 'Optional, aber empfohlen wenn mehrere Apps dieselbe Entra App Registration verwenden.',
type: 'text',
},
20
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.icon_id',
label: 'Icon ID',
help: 'Optionales benutzerdefiniertes Activity-Icon laut Teams App Manifest.',
type: 'text',
},
15
)
.registerSetting(
{
setting: 'sbp-jm-msteams-webhook.timeout_seconds',
label: 'HTTP Timeout (Sekunden)',
type: 'number',
min: 5,
step: 1,
placeholder: '15',
},
10
);
});