From 9e8d69739f21e5ac85977d57a2a6c961e318c26e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 10 Nov 2021 20:44:51 +0300 Subject: add two helper account access levels: - read only - can't subscribe to more feeds, feed updates are skipped - disabled - can't login define used access levels as UserHelper constants and refactor code to use them instead of hardcoded numbers --- js/App.js | 12 ++++++++++-- js/CommonDialogs.js | 15 ++++++++++++--- js/PrefUsers.js | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'js') diff --git a/js/App.js b/js/App.js index 0afcb0b77..6c4b6a187 100644 --- a/js/App.js +++ b/js/App.js @@ -17,6 +17,9 @@ const App = { hotkey_actions: {}, is_prefs: false, LABEL_BASE_INDEX: -1024, + UserAccessLevels: { + ACCESS_LEVEL_READONLY: -1 + }, _translations: {}, Hash: { get: function() { @@ -76,10 +79,15 @@ const App = { ` }, - select_hash: function(name, value, values = {}, attributes = {}, id = "") { + select_hash: function(name, value, values = {}, attributes = {}, id = "", params = {}) { + let keys = Object.keys(values); + + if (params.numeric_sort) + keys = keys.sort((a,b) => a - b); + return ` diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js index a68dc8068..4c169b026 100644 --- a/js/CommonDialogs.js +++ b/js/CommonDialogs.js @@ -131,6 +131,9 @@ const CommonDialogs = { console.log(rc); switch (parseInt(rc['code'])) { + case 0: + dialog.show_error(__("You are already subscribed to this feed.")); + break; case 1: dialog.hide(); Notify.info(__("Subscribed to %s").replace("%s", feed_url)); @@ -175,8 +178,11 @@ const CommonDialogs = { case 6: dialog.show_error(__("XML validation failed: %s").replace("%s", rc['message'])); break; - case 0: - dialog.show_error(__("You are already subscribed to this feed.")); + case 7: + dialog.show_error(__("Error while creating feed database entry.")); + break; + case 8: + dialog.show_error(__("You are not allowed to perform this operation.")); break; } @@ -451,6 +457,7 @@ const CommonDialogs = { xhr.json("backend.php", {op: "pref-feeds", method: "editfeed", id: feed_id}, (reply) => { const feed = reply.feed; + const is_readonly = reply.user.access_level == App.UserAccessLevels.ACCESS_LEVEL_READONLY; // for unsub prompt dialog.feed_title = feed.title; @@ -524,7 +531,9 @@ const CommonDialogs = {
- ${App.FormFields.select_hash("update_interval", feed.update_interval, reply.intervals.update)} + ${App.FormFields.select_hash("update_interval", is_readonly ? -1 : feed.update_interval, + reply.intervals.update, + {disabled: is_readonly})}
diff --git a/js/PrefUsers.js b/js/PrefUsers.js index 7ce3cae94..a6081f35f 100644 --- a/js/PrefUsers.js +++ b/js/PrefUsers.js @@ -75,7 +75,7 @@ const Users = {
${App.FormFields.select_hash("access_level", - user.access_level, reply.access_level_names, {disabled: admin_disabled.toString()})} + user.access_level, reply.access_level_names, {disabled: admin_disabled.toString()}, "", {numeric_sort: true})} ${admin_disabled ? App.FormFields.hidden_tag("access_level", user.access_level.toString()) : ''} -- cgit v1.2.3