mirror of
https://github.com/flarum/framework.git
synced 2025-02-23 05:54:10 +08:00
chore: allow conditionals in Admin extender
This commit is contained in:
parent
8ba9f14642
commit
75d05ee85d
@ -6,15 +6,15 @@ import type Mithril from 'mithril';
|
|||||||
import type { GeneralIndexItem } from '../../admin/states/GeneralSearchIndex';
|
import type { GeneralIndexItem } from '../../admin/states/GeneralSearchIndex';
|
||||||
|
|
||||||
export default class Admin implements IExtender<AdminApplication> {
|
export default class Admin implements IExtender<AdminApplication> {
|
||||||
protected settings: { setting?: () => SettingConfigInternal; customSetting?: () => Mithril.Children; priority: number }[] = [];
|
protected settings: { setting?: () => SettingConfigInternal | null; customSetting?: () => Mithril.Children; priority: number }[] = [];
|
||||||
protected permissions: { permission: () => PermissionConfig; type: PermissionType; priority: number }[] = [];
|
protected permissions: { permission: () => PermissionConfig | null; type: PermissionType; priority: number }[] = [];
|
||||||
protected customPage: CustomExtensionPage | null = null;
|
protected customPage: CustomExtensionPage | null = null;
|
||||||
protected generalIndexes: { settings?: () => GeneralIndexItem[]; permissions?: () => GeneralIndexItem[] } = {};
|
protected generalIndexes: { settings?: () => GeneralIndexItem[]; permissions?: () => GeneralIndexItem[] } = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a setting to be shown on the extension's settings page.
|
* Register a setting to be shown on the extension's settings page.
|
||||||
*/
|
*/
|
||||||
setting(setting: () => SettingConfigInternal, priority = 0) {
|
setting(setting: () => SettingConfigInternal | null, priority = 0) {
|
||||||
this.settings.push({ setting, priority });
|
this.settings.push({ setting, priority });
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@ -32,7 +32,7 @@ export default class Admin implements IExtender<AdminApplication> {
|
|||||||
/**
|
/**
|
||||||
* Register a permission to be shown on the extension's permissions page.
|
* Register a permission to be shown on the extension's permissions page.
|
||||||
*/
|
*/
|
||||||
permission(permission: () => PermissionConfig, type: PermissionType, priority = 0) {
|
permission(permission: () => PermissionConfig | null, type: PermissionType, priority = 0) {
|
||||||
this.permissions.push({ permission, type, priority });
|
this.permissions.push({ permission, type, priority });
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@ -60,11 +60,19 @@ export default class Admin implements IExtender<AdminApplication> {
|
|||||||
app.registry.for(extension.name);
|
app.registry.for(extension.name);
|
||||||
|
|
||||||
this.settings.forEach(({ setting, customSetting, priority }) => {
|
this.settings.forEach(({ setting, customSetting, priority }) => {
|
||||||
app.registry.registerSetting(setting ? setting() : customSetting!, priority);
|
const settingConfig = setting ? setting() : customSetting!;
|
||||||
|
|
||||||
|
if (settingConfig) {
|
||||||
|
app.registry.registerSetting(settingConfig, priority);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.permissions.forEach(({ permission, type, priority }) => {
|
this.permissions.forEach(({ permission, type, priority }) => {
|
||||||
app.registry.registerPermission(permission(), type, priority);
|
const permissionConfig = permission();
|
||||||
|
|
||||||
|
if (permissionConfig) {
|
||||||
|
app.registry.registerPermission(permissionConfig, type, priority);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.customPage) {
|
if (this.customPage) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user