Browse Source

Fix Admin Panel menus "Attachment Settings" and "Cron Settings" and make them translateable.

Thanks to xet7 !
Lauri Ojansivu 1 week ago
parent
commit
033919a270

+ 9 - 29
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

+ 5 - 0
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();

+ 11 - 35
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

+ 86 - 45
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-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="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-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

+ 78 - 0
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,
       },
     ];
   },

+ 1 - 0
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",