summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-11-10 20:44:51 +0300
committerAndrew Dolgov <[email protected]>2021-11-10 20:44:51 +0300
commit9e8d69739f21e5ac85977d57a2a6c961e318c26e (patch)
tree0fc52f7be644b5f86e236cc7cb8f4dc4351da8f9 /js
parent7a52560e4e3b0652d32645b60ae13e4904f606bc (diff)
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
Diffstat (limited to 'js')
-rw-r--r--js/App.js12
-rw-r--r--js/CommonDialogs.js15
-rw-r--r--js/PrefUsers.js2
3 files changed, 23 insertions, 6 deletions
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>
`
},
- 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 `
<select name="${name}" dojoType="fox.form.Select" id="${App.escapeHtml(id)}" ${this.attributes_to_string(attributes)}>
- ${Object.keys(values).map((vk) =>
+ ${keys.map((vk) =>
`<option ${vk == value ? 'selected="selected"' : ''} value="${App.escapeHtml(vk)}">${App.escapeHtml(values[vk])}</option>`
).join("")}
</select>
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 = {
<fieldset>
<label>${__("Update interval:")}</label>
- ${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})}
</fieldset>
<fieldset>
<label>${__('Article purging:')}</label>
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 = {
<fieldset>
<label>${__('Access level: ')}</label>
${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()) : ''}