Change Admin Panel "Attachment Settings" and "Cron Settings" options to be tabs, not submenu. Part 2.

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu 2025-10-12 05:25:44 +03:00
parent e2f3dad779
commit 5a6faafa30
6 changed files with 105 additions and 39 deletions

View file

@ -2,27 +2,27 @@ template(name="attachmentSettings")
.attachment-settings-content .attachment-settings-content
.settings-tabs .settings-tabs
ul.tab-nav ul.tab-nav
li(class="{{#if showStorageSettings.get}}active{{/if}}") li(class="{{#if showStorageSettings}}active{{/if}}")
a.js-attachment-storage-settings(data-id="storage-settings") a.js-attachment-storage-settings(data-id="storage-settings")
i.fa.fa-cog i.fa.fa-cog
| {{_ 'attachment-storage-settings'}} | {{_ 'attachment-storage-settings'}}
li(class="{{#if showMigration.get}}active{{/if}}") li(class="{{#if showMigration}}active{{/if}}")
a.js-attachment-migration(data-id="attachment-migration") a.js-attachment-migration(data-id="attachment-migration")
i.fa.fa-arrow-right i.fa.fa-arrow-right
| {{_ 'attachment-migration'}} | {{_ 'attachment-migration'}}
li(class="{{#if showMonitoring.get}}active{{/if}}") li(class="{{#if showMonitoring}}active{{/if}}")
a.js-attachment-monitoring(data-id="attachment-monitoring") a.js-attachment-monitoring(data-id="attachment-monitoring")
i.fa.fa-chart-line i.fa.fa-chart-line
| {{_ 'attachment-monitoring'}} | {{_ 'attachment-monitoring'}}
.tab-content .tab-content
if loading.get if loading
+spinner +spinner
else if showStorageSettings.get else if showStorageSettings
+storageSettings +storageSettings
else if showMigration.get else if showMigration
+attachmentMigration +attachmentMigration
else if showMonitoring.get else if showMonitoring
+attachmentMonitoring +attachmentMonitoring
template(name="storageSettings") template(name="storageSettings")

View file

@ -1,5 +1,21 @@
import { ReactiveCache } from '/imports/reactiveCache'; import { ReactiveCache } from '/imports/reactiveCache';
import { TAPi18n } from '/imports/i18n'; import { TAPi18n } from '/imports/i18n';
// Template helpers for attachmentSettings
Template.attachmentSettings.helpers({
loading() {
return attachmentSettings.loading.get();
},
showStorageSettings() {
return attachmentSettings.showStorageSettings.get();
},
showMigration() {
return attachmentSettings.showMigration.get();
},
showMonitoring() {
return attachmentSettings.showMonitoring.get();
}
});
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Session } from 'meteor/session'; import { Session } from 'meteor/session';
import { Tracker } from 'meteor/tracker'; import { Tracker } from 'meteor/tracker';

View file

@ -2,33 +2,33 @@ template(name="cronSettings")
.cron-settings-content .cron-settings-content
.settings-tabs .settings-tabs
ul.tab-nav ul.tab-nav
li(class="{{#if showMigrations.get}}active{{/if}}") li(class="{{#if showMigrations}}active{{/if}}")
a.js-cron-migrations(data-id="cron-migrations") a.js-cron-migrations(data-id="cron-migrations")
i.fa.fa-database i.fa.fa-database
| {{_ 'cron-migrations'}} | {{_ 'cron-migrations'}}
li(class="{{#if showBoardOperations.get}}active{{/if}}") li(class="{{#if showBoardOperations}}active{{/if}}")
a.js-cron-board-operations(data-id="cron-board-operations") a.js-cron-board-operations(data-id="cron-board-operations")
i.fa.fa-tasks i.fa.fa-tasks
| {{_ 'board-operations'}} | {{_ 'board-operations'}}
li(class="{{#if showJobs.get}}active{{/if}}") li(class="{{#if showJobs}}active{{/if}}")
a.js-cron-jobs(data-id="cron-jobs") a.js-cron-jobs(data-id="cron-jobs")
i.fa.fa-clock-o i.fa.fa-clock-o
| {{_ 'cron-jobs'}} | {{_ 'cron-jobs'}}
li(class="{{#if showAddJob.get}}active{{/if}}") li(class="{{#if showAddJob}}active{{/if}}")
a.js-cron-add(data-id="cron-add") a.js-cron-add(data-id="cron-add")
i.fa.fa-plus i.fa.fa-plus
| {{_ 'add-cron-job'}} | {{_ 'add-cron-job'}}
.tab-content .tab-content
if loading.get if loading
+spinner +spinner
else if showMigrations.get else if showMigrations
+cronMigrations +cronMigrations
else if showBoardOperations.get else if showBoardOperations
+cronBoardOperations +cronBoardOperations
else if showJobs.get else if showJobs
+cronJobs +cronJobs
else if showAddJob.get else if showAddJob
+cronAddJob +cronAddJob
template(name="cronMigrations") template(name="cronMigrations")

View file

@ -9,70 +9,70 @@ template(name="setting")
.content-body .content-body
.side-menu .side-menu
ul ul
li(class="{{#if generalSetting.get}}active{{/if}}") li(class="{{#if generalSetting}}active{{/if}}")
a.js-setting-menu(data-id="registration-setting") a.js-setting-menu(data-id="registration-setting")
i.fa.fa-sign-in i.fa.fa-sign-in
| {{_ 'registration'}} | {{_ 'registration'}}
unless isSandstorm unless isSandstorm
li(class="{{#if emailSetting.get}}active{{/if}}") li(class="{{#if emailSetting}}active{{/if}}")
a.js-setting-menu(data-id="email-setting") a.js-setting-menu(data-id="email-setting")
i.fa.fa-envelope i.fa.fa-envelope
| {{_ 'email'}} | {{_ 'email'}}
li(class="{{#if accountSetting.get}}active{{/if}}") li(class="{{#if accountSetting}}active{{/if}}")
a.js-setting-menu(data-id="account-setting") a.js-setting-menu(data-id="account-setting")
i.fa.fa-users i.fa.fa-users
| {{_ 'accounts'}} | {{_ 'accounts'}}
li(class="{{#if tableVisibilityModeSetting.get}}active{{/if}}") li(class="{{#if tableVisibilityModeSetting}}active{{/if}}")
a.js-setting-menu(data-id="tableVisibilityMode-setting") a.js-setting-menu(data-id="tableVisibilityMode-setting")
i.fa.fa-eye i.fa.fa-eye
| {{_ 'tableVisibilityMode'}} | {{_ 'tableVisibilityMode'}}
li(class="{{#if announcementSetting.get}}active{{/if}}") li(class="{{#if announcementSetting}}active{{/if}}")
a.js-setting-menu(data-id="announcement-setting") a.js-setting-menu(data-id="announcement-setting")
i.fa.fa-bullhorn i.fa.fa-bullhorn
| {{_ 'admin-announcement'}} | {{_ 'admin-announcement'}}
li(class="{{#if accessibilitySetting.get}}active{{/if}}") li(class="{{#if accessibilitySetting}}active{{/if}}")
a.js-setting-menu(data-id="accessibility-setting") a.js-setting-menu(data-id="accessibility-setting")
i.fa.fa-universal-access i.fa.fa-universal-access
| {{_ 'accessibility'}} | {{_ 'accessibility'}}
li(class="{{#if layoutSetting.get}}active{{/if}}") li(class="{{#if layoutSetting}}active{{/if}}")
a.js-setting-menu(data-id="layout-setting") a.js-setting-menu(data-id="layout-setting")
i.fa.fa-object-group i.fa.fa-object-group
| {{_ 'layout'}} | {{_ 'layout'}}
li(class="{{#if webhookSetting.get}}active{{/if}}") li(class="{{#if webhookSetting}}active{{/if}}")
a.js-setting-menu(data-id="webhook-setting") a.js-setting-menu(data-id="webhook-setting")
i.fa.fa-globe i.fa.fa-globe
| {{_ 'global-webhook'}} | {{_ 'global-webhook'}}
li(class="{{#if attachmentSettings.get}}active{{/if}}") li(class="{{#if attachmentSettings}}active{{/if}}")
a.js-setting-menu(data-id="attachment-settings") a.js-setting-menu(data-id="attachment-settings")
i.fa.fa-paperclip i.fa.fa-paperclip
| {{_ 'attachment-settings'}} | {{_ 'attachments'}}
li(class="{{#if cronSettings.get}}active{{/if}}") li(class="{{#if cronSettings}}active{{/if}}")
a.js-setting-menu(data-id="cron-settings") a.js-setting-menu(data-id="cron-settings")
i.fa.fa-clock-o i.fa.fa-clock-o
| {{_ 'cron-settings'}} | {{_ 'cron'}}
.main-body .main-body
if loading.get if loading
+spinner +spinner
else if attachmentSettings.get else if attachmentSettings
+attachmentSettings +attachmentSettings
else if cronSettings.get else if cronSettings
+cronSettings +cronSettings
else if generalSetting.get else if generalSetting
+general +general
else if emailSetting.get else if emailSetting
unless isSandstorm unless isSandstorm
+email +email
else if accountSetting.get else if accountSetting
+accountSettings +accountSettings
else if tableVisibilityModeSetting.get else if tableVisibilityModeSetting
+tableVisibilityModeSettings +tableVisibilityModeSettings
else if announcementSetting.get else if announcementSetting
+announcementSettings +announcementSettings
else if accessibilitySetting.get else if accessibilitySetting
+accessibilitySettings +accessibilitySettings
else if layoutSetting.get else if layoutSetting
+layoutSettings +layoutSettings
else if webhookSetting.get else if webhookSetting
+webhookSettings +webhookSettings
template(name="webhookSettings") template(name="webhookSettings")

View file

@ -3,6 +3,54 @@ import { TAPi18n } from '/imports/i18n';
import { ALLOWED_WAIT_SPINNERS } from '/config/const'; import { ALLOWED_WAIT_SPINNERS } from '/config/const';
import LockoutSettings from '/models/lockoutSettings'; import LockoutSettings from '/models/lockoutSettings';
// Template helpers for settingBody
Template.setting.helpers({
generalSetting() {
const instance = Template.instance();
return instance && instance.generalSetting ? instance.generalSetting.get() : false;
},
emailSetting() {
const instance = Template.instance();
return instance && instance.emailSetting ? instance.emailSetting.get() : false;
},
accountSetting() {
const instance = Template.instance();
return instance && instance.accountSetting ? instance.accountSetting.get() : false;
},
tableVisibilityModeSetting() {
const instance = Template.instance();
return instance && instance.tableVisibilityModeSetting ? instance.tableVisibilityModeSetting.get() : false;
},
announcementSetting() {
const instance = Template.instance();
return instance && instance.announcementSetting ? instance.announcementSetting.get() : false;
},
accessibilitySetting() {
const instance = Template.instance();
return instance && instance.accessibilitySetting ? instance.accessibilitySetting.get() : false;
},
layoutSetting() {
const instance = Template.instance();
return instance && instance.layoutSetting ? instance.layoutSetting.get() : false;
},
webhookSetting() {
const instance = Template.instance();
return instance && instance.webhookSetting ? instance.webhookSetting.get() : false;
},
attachmentSettings() {
const instance = Template.instance();
return instance && instance.attachmentSettings ? instance.attachmentSettings.get() : false;
},
cronSettings() {
const instance = Template.instance();
return instance && instance.cronSettings ? instance.cronSettings.get() : false;
},
loading() {
const instance = Template.instance();
return instance && instance.loading ? instance.loading.get() : false;
}
});
BlazeComponent.extendComponent({ BlazeComponent.extendComponent({
onCreated() { onCreated() {
this.error = new ReactiveVar(''); this.error = new ReactiveVar('');

View file

@ -98,6 +98,8 @@
"migration-info-text": "Database migrations are performed once and improve system performance. The process continues in the background even if you close your browser.", "migration-info-text": "Database migrations are performed once and improve system performance. The process continues in the background even if you close your browser.",
"migration-warning-text": "Please do not close your browser during migration. The process will continue in the background but may take longer to complete.", "migration-warning-text": "Please do not close your browser during migration. The process will continue in the background but may take longer to complete.",
"cron-settings": "Cron Settings", "cron-settings": "Cron Settings",
"attachments": "Attachments",
"cron": "Cron",
"back-to-settings": "Back to Settings", "back-to-settings": "Back to Settings",
"cron-migrations": "Database Migrations", "cron-migrations": "Database Migrations",
"cron-jobs": "Cron Jobs", "cron-jobs": "Cron Jobs",