diff --git a/client/components/settings/attachmentSettings.jade b/client/components/settings/attachmentSettings.jade index 1a8ce40e2..9ee7d64e8 100644 --- a/client/components/settings/attachmentSettings.jade +++ b/client/components/settings/attachmentSettings.jade @@ -1,33 +1,13 @@ template(name="attachmentSettings") - .setting-content.attachment-settings-content - unless currentUser.isAdmin - | {{_ 'error-notAuthorized'}} - else - .content-body - .side-menu - ul - li - a.js-attachment-storage-settings(data-id="storage-settings") - i.fa.fa-cog - | {{_ 'attachment-storage-settings'}} - li - a.js-attachment-migration(data-id="attachment-migration") - i.fa.fa-arrow-right - | {{_ 'attachment-migration'}} - li - a.js-attachment-monitoring(data-id="attachment-monitoring") - i.fa.fa-chart-line - | {{_ 'attachment-monitoring'}} - - .main-body - if loading.get - +spinner - else if showStorageSettings.get - +storageSettings - else if showMigration.get - +attachmentMigration - else if showMonitoring.get - +attachmentMonitoring + .attachment-settings-content + if loading.get + +spinner + else if showStorageSettings.get + +storageSettings + else if showMigration.get + +attachmentMigration + else if showMonitoring.get + +attachmentMonitoring template(name="storageSettings") .storage-settings diff --git a/client/components/settings/attachmentSettings.js b/client/components/settings/attachmentSettings.js index e1becc191..db1977003 100644 --- a/client/components/settings/attachmentSettings.js +++ b/client/components/settings/attachmentSettings.js @@ -59,6 +59,11 @@ BlazeComponent.extendComponent({ this.showMigration = attachmentSettings.showMigration; this.showMonitoring = attachmentSettings.showMonitoring; + // Set default sub-menu state + this.showStorageSettings.set(true); + this.showMigration.set(false); + this.showMonitoring.set(false); + // Load initial data this.loadStorageConfiguration(); this.loadMigrationSettings(); diff --git a/client/components/settings/cronSettings.jade b/client/components/settings/cronSettings.jade index 708686051..dd158b4e5 100644 --- a/client/components/settings/cronSettings.jade +++ b/client/components/settings/cronSettings.jade @@ -1,39 +1,15 @@ template(name="cronSettings") - .setting-content.cron-settings-content - unless currentUser.isAdmin - | {{_ 'error-notAuthorized'}} - else - .content-body - .side-menu - ul - li - a.js-cron-migrations(data-id="cron-migrations") - i.fa.fa-database - | {{_ 'cron-migrations'}} - li - a.js-cron-board-operations(data-id="cron-board-operations") - i.fa.fa-tasks - | {{_ 'board-operations'}} - li - a.js-cron-jobs(data-id="cron-jobs") - i.fa.fa-clock-o - | {{_ 'cron-jobs'}} - li - a.js-cron-add(data-id="cron-add") - i.fa.fa-plus - | {{_ 'add-cron-job'}} - - .main-body - if loading.get - +spinner - else if showMigrations.get - +cronMigrations - else if showBoardOperations.get - +cronBoardOperations - else if showJobs.get - +cronJobs - else if showAddJob.get - +cronAddJob + .cron-settings-content + if loading.get + +spinner + else if showMigrations.get + +cronMigrations + else if showBoardOperations.get + +cronBoardOperations + else if showJobs.get + +cronJobs + else if showAddJob.get + +cronAddJob template(name="cronMigrations") .cron-migrations diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index a612b3ccc..f36713b5c 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -8,51 +8,96 @@ template(name="setting") span {{_ 'settings'}} .content-body .side-menu - ul - li.active - a.js-setting-menu(data-id="registration-setting") - i.fa.fa-sign-in - | {{_ 'registration'}} - unless isSandstorm + if attachmentSettings.get + ul li - a.js-setting-menu(data-id="email-setting") - i.fa.fa-envelope - | {{_ 'email'}} - li - a.js-setting-menu(data-id="account-setting") - i.fa.fa-users - | {{_ 'accounts'}} - li - a.js-setting-menu(data-id="tableVisibilityMode-setting") - i.fa.fa-eye - | {{_ 'tableVisibilityMode'}} - li - a.js-setting-menu(data-id="announcement-setting") - i.fa.fa-bullhorn - | {{_ 'admin-announcement'}} - li - a.js-setting-menu(data-id="accessibility-setting") - i.fa.fa-universal-access - | {{_ 'accessibility'}} - li - a.js-setting-menu(data-id="layout-setting") - i.fa.fa-object-group - | {{_ 'layout'}} - li - a.js-setting-menu(data-id="webhook-setting") - i.fa.fa-globe - | {{_ 'global-webhook'}} - li - a.js-setting-menu(data-id="attachment-settings") - i.fa.fa-paperclip - | {{_ 'attachment-settings'}} - li - a.js-setting-menu(data-id="cron-settings") - i.fa.fa-clock-o - | {{_ 'cron-settings'}} + a.js-back-to-main-settings + i.fa.fa-arrow-left + | {{_ 'back-to-settings'}} + li + a.js-attachment-storage-settings(data-id="storage-settings") + i.fa.fa-cog + | {{_ 'attachment-storage-settings'}} + li + a.js-attachment-migration(data-id="attachment-migration") + i.fa.fa-arrow-right + | {{_ 'attachment-migration'}} + li + a.js-attachment-monitoring(data-id="attachment-monitoring") + i.fa.fa-chart-line + | {{_ 'attachment-monitoring'}} + else if cronSettings.get + ul + li + a.js-back-to-main-settings + i.fa.fa-arrow-left + | {{_ 'back-to-settings'}} + li + a.js-cron-migrations(data-id="cron-migrations") + i.fa.fa-database + | {{_ 'cron-migrations'}} + li + a.js-cron-board-operations(data-id="cron-board-operations") + i.fa.fa-tasks + | {{_ 'board-operations'}} + li + a.js-cron-jobs(data-id="cron-jobs") + i.fa.fa-clock-o + | {{_ 'cron-jobs'}} + li + a.js-cron-add(data-id="cron-add") + i.fa.fa-plus + | {{_ 'add-cron-job'}} + else + ul + li.active + a.js-setting-menu(data-id="registration-setting") + i.fa.fa-sign-in + | {{_ 'registration'}} + unless isSandstorm + li + a.js-setting-menu(data-id="email-setting") + i.fa.fa-envelope + | {{_ 'email'}} + li + a.js-setting-menu(data-id="account-setting") + i.fa.fa-users + | {{_ 'accounts'}} + li + a.js-setting-menu(data-id="tableVisibilityMode-setting") + i.fa.fa-eye + | {{_ 'tableVisibilityMode'}} + li + a.js-setting-menu(data-id="announcement-setting") + i.fa.fa-bullhorn + | {{_ 'admin-announcement'}} + li + a.js-setting-menu(data-id="accessibility-setting") + i.fa.fa-universal-access + | {{_ 'accessibility'}} + li + a.js-setting-menu(data-id="layout-setting") + i.fa.fa-object-group + | {{_ 'layout'}} + li + a.js-setting-menu(data-id="webhook-setting") + i.fa.fa-globe + | {{_ 'global-webhook'}} + li + a.js-setting-menu(data-id="attachment-settings") + i.fa.fa-paperclip + | {{_ 'attachment-settings'}} + li + a.js-setting-menu(data-id="cron-settings") + i.fa.fa-clock-o + | {{_ 'cron-settings'}} .main-body if loading.get +spinner + else if attachmentSettings.get + +attachmentSettings + else if cronSettings.get + +cronSettings else if generalSetting.get +general else if emailSetting.get @@ -70,10 +115,6 @@ template(name="setting") +layoutSettings else if webhookSetting.get +webhookSettings - else if attachmentSettings.get - +attachmentSettings - else if cronSettings.get - +cronSettings template(name="webhookSettings") span diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 088b66bfa..b3f8f884c 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -101,6 +101,69 @@ BlazeComponent.extendComponent({ toggleDisplayAuthenticationMethod() { $('#display-authentication-method').toggleClass('is-checked'); }, + + backToMainSettings(event) { + event.preventDefault(); + // Reset all settings to false + this.forgotPasswordSetting.set(false); + this.generalSetting.set(true); // Set registration as default + this.emailSetting.set(false); + this.accountSetting.set(false); + this.announcementSetting.set(false); + this.accessibilitySetting.set(false); + this.layoutSetting.set(false); + this.webhookSetting.set(false); + this.attachmentSettings.set(false); + this.cronSettings.set(false); + this.tableVisibilityModeSetting.set(false); + + // Update active menu item + $('.side-menu li.active').removeClass('active'); + $('.side-menu li:first-child').addClass('active'); + }, + + switchAttachmentMenu(event) { + event.preventDefault(); + const target = $(event.target); + const targetID = target.data('id'); + + // Update active menu item + $('.side-menu li.active').removeClass('active'); + target.parent().addClass('active'); + + // Call the attachment settings component method if available + if (window.attachmentSettings && window.attachmentSettings.switchMenu) { + window.attachmentSettings.switchMenu(event, targetID); + } + }, + + switchCronMenu(event) { + event.preventDefault(); + const target = $(event.target); + const targetID = target.data('id'); + + // Update active menu item + $('.side-menu li.active').removeClass('active'); + target.parent().addClass('active'); + + // Call the cron settings template method if available + const cronTemplate = Template.instance(); + if (cronTemplate && cronTemplate.switchMenu) { + cronTemplate.switchMenu(event, targetID); + } + }, + + initializeAttachmentSubMenu() { + // Set default sub-menu state for attachment settings + // This will be handled by the attachment settings component + console.log('Initializing attachment sub-menu'); + }, + + initializeCronSubMenu() { + // Set default sub-menu state for cron settings + // This will be handled by the cron settings template + console.log('Initializing cron sub-menu'); + }, switchMenu(event) { const target = $(event.target); if (!target.hasClass('active')) { @@ -117,6 +180,13 @@ BlazeComponent.extendComponent({ this.webhookSetting.set('webhook-setting' === targetID); this.attachmentSettings.set('attachment-settings' === targetID); this.cronSettings.set('cron-settings' === targetID); + + // Initialize sub-menu states + if ('attachment-settings' === targetID) { + this.initializeAttachmentSubMenu(); + } else if ('cron-settings' === targetID) { + this.initializeCronSubMenu(); + } this.tableVisibilityModeSetting.set('tableVisibilityMode-setting' === targetID); } }, @@ -285,6 +355,14 @@ BlazeComponent.extendComponent({ 'click button.js-save-layout': this.saveLayout, 'click a.js-toggle-display-authentication-method': this .toggleDisplayAuthenticationMethod, + 'click a.js-back-to-main-settings': this.backToMainSettings, + 'click a.js-attachment-storage-settings': this.switchAttachmentMenu, + 'click a.js-attachment-migration': this.switchAttachmentMenu, + 'click a.js-attachment-monitoring': this.switchAttachmentMenu, + 'click a.js-cron-migrations': this.switchCronMenu, + 'click a.js-cron-board-operations': this.switchCronMenu, + 'click a.js-cron-jobs': this.switchCronMenu, + 'click a.js-cron-add': this.switchCronMenu, }, ]; }, diff --git a/imports/i18n/en.i18n.json b/imports/i18n/en.i18n.json index 51d487f0b..e21866b63 100644 --- a/imports/i18n/en.i18n.json +++ b/imports/i18n/en.i18n.json @@ -98,6 +98,7 @@ "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.", "cron-settings": "Cron Settings", + "back-to-settings": "Back to Settings", "cron-migrations": "Database Migrations", "cron-jobs": "Cron Jobs", "add-cron-job": "Add Cron Job",