sou 7 лет назад
Родитель
Сommit
0dc4123337

+ 15 - 2
lib/models/GlobalNotificationSetting.js

@@ -46,14 +46,27 @@ class GlobalNotificationSetting {
     this.crowi = crowi;
   }
 
+  /**
+   * enable notification setting
+   * @param {string} id
+   */
+  static async enable(id) {
+    const setting = await this.findOne({_id: id});
+
+    setting.isEnabled = true;
+    setting.save();
+
+    return setting;
+  }
+
   /**
    * disable notification setting
    * @param {string} id
    */
-  static async toggleIsEnabled(id) {
+  static async disable(id) {
     const setting = await this.findOne({_id: id});
 
-    setting.isEnabled = !setting.isEnabled;
+    setting.isEnabled = false;
     setting.save();
 
     return setting;

+ 8 - 1
lib/routes/admin.js

@@ -1160,9 +1160,16 @@ module.exports = function(crowi, app) {
 
   actions.api.toggleIsEnabledForGlobalNotification = async(req, res) => {
     const id = req.query.id;
+    const isEnabled = (req.query.isEnabled == 'true');
 
     try {
-      await GlobalNotificationSetting.Parent.toggleIsEnabled(id);
+      if (isEnabled) {
+        await GlobalNotificationSetting.Parent.disable(id);
+      }
+      else {
+        await GlobalNotificationSetting.Parent.enable(id);
+      }
+
       return res.json(ApiResponse.success());
     }
     catch (err) {

+ 9 - 5
lib/views/admin/global-notification.html

@@ -58,23 +58,26 @@
   });
 
   $(".unclickable > .btn-delete").click(function(event) {
-    var id = $(event.currentTarget).closest("tr").data("updatepost-id");
-    var $target = $(event.currentTarget).parent();
+    var $targetRow = $(event.currentTarget).closest("tr");
+    var id = $targetRow.data("updatepost-id");
     $.post('/admin/global-notification/remove?id=' + id, function(res) {
       if (res.ok) {
-        $target.closest('tr').remove();
+        $targetRow.closest('tr').remove();
       }
       else {
         $('.admin-notification > .row > .col-md-9').prepend(
           '<div class=\"alert alert-danger\">Error occurred in deleting global notifcation setting.</div>'
         );
+        location.reload();
       }
     });
   });
 
   $(".isEnabledToggle").on("change", function(event) {
-    var id = $(event.currentTarget).closest("tr").data("updatepost-id");
-    $.post('/_api/admin/global-notification/toggleIsEnabled?id=' + id, function(res) {
+    var $targetRow = $(event.currentTarget).closest("tr");
+    var id = $targetRow.data("updatepost-id");
+    var isEnabled = !$targetRow.find(".isEnabledToggle").is(':checked');
+    $.post('/_api/admin/global-notification/toggleIsEnabled?id=' + id + '&isEnabled=' + isEnabled, function(res) {
       if (res.ok) {
         // do something
       }
@@ -82,6 +85,7 @@
         $('.admin-notification > .row > .col-md-9').prepend(
           '<div class=\"alert alert-danger\">Error occurred in deleting global notifcation setting.</div>'
         );
+        location.reload();
       }
     });
   });