summaryrefslogtreecommitdiff
path: root/js/App.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/App.js')
-rw-r--r--js/App.js110
1 files changed, 68 insertions, 42 deletions
diff --git a/js/App.js b/js/App.js
index 0afcb0b77..262988135 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>
@@ -278,7 +286,33 @@ const App = {
},
isCombinedMode: function() {
- return this.getInitParam("combined_display_mode");
+ return !!this.getInitParam("combined_display_mode");
+ },
+ setCombinedMode: function(combined) {
+ const value = combined ? "true" : "false";
+
+ xhr.post("backend.php", {op: "rpc", method: "setpref", key: "COMBINED_DISPLAY_MODE", value: value}, () => {
+ this.setInitParam("combined_display_mode",
+ !this.getInitParam("combined_display_mode"));
+
+ Article.close();
+ Headlines.renderAgain();
+ })
+ },
+ isExpandedMode: function() {
+ return !!this.getInitParam("cdm_expanded");
+ },
+ setExpandedMode: function(expand) {
+ if (App.isCombinedMode()) {
+ const value = expand ? "true" : "false";
+
+ xhr.post("backend.php", {op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value}, () => {
+ this.setInitParam("cdm_expanded", !this.getInitParam("cdm_expanded"));
+ Headlines.renderAgain();
+ });
+ } else {
+ alert(__("This function is only available in combined mode."));
+ }
},
getActionByHotkeySequence: function(sequence) {
const hotkeys_map = this.getInitParam("hotkeys");
@@ -789,7 +823,7 @@ const App = {
this.setLoadingProgress(50);
this._widescreen_mode = this.getInitParam("widescreen");
- this.setWidescreen(this._widescreen_mode);
+ this.setWideScreenMode(this.isWideScreenMode(), true);
Headlines.initScrollHandler();
@@ -812,6 +846,10 @@ const App = {
App.updateRuntimeInfo();
}, 60 * 1000)
+ if (App.getInitParam("safe_mode") && this.isPrefs()) {
+ CommonDialogs.safeModeWarning();
+ }
+
console.log("second stage ok");
},
@@ -870,7 +908,22 @@ const App = {
}
}
},
- setWidescreen: function(wide) {
+ isWideScreenMode: function() {
+ return !!this._widescreen_mode;
+ },
+ setWideScreenMode: function(wide, quiet = false) {
+
+ if (this.isCombinedMode() && !quiet) {
+ alert(__("Widescreen is not available in combined mode."));
+ return;
+ }
+
+ // reset stored sizes because geometry changed
+ Cookie.set("ttrss_ci_width", 0);
+ Cookie.set("ttrss_ci_height", 0);
+
+ this._widescreen_mode = wide;
+
const article_id = Article.getActive();
const headlines_frame = App.byId("headlines-frame");
const content_insert = dijit.byId("content-insert");
@@ -1189,39 +1242,16 @@ const App = {
}
};
this.hotkey_actions["toggle_widescreen"] = () => {
- if (!this.isCombinedMode()) {
- this._widescreen_mode = !this._widescreen_mode;
-
- // reset stored sizes because geometry changed
- Cookie.set("ttrss_ci_width", 0);
- Cookie.set("ttrss_ci_height", 0);
-
- this.setWidescreen(this._widescreen_mode);
- } else {
- alert(__("Widescreen is not available in combined mode."));
- }
+ this.setWideScreenMode(!this.isWideScreenMode());
};
this.hotkey_actions["help_dialog"] = () => {
this.hotkeyHelp();
};
this.hotkey_actions["toggle_combined_mode"] = () => {
- const value = this.isCombinedMode() ? "false" : "true";
-
- xhr.post("backend.php", {op: "rpc", method: "setpref", key: "COMBINED_DISPLAY_MODE", value: value}, () => {
- this.setInitParam("combined_display_mode",
- !this.getInitParam("combined_display_mode"));
-
- Article.close();
- Headlines.renderAgain();
- })
+ App.setCombinedMode(!App.isCombinedMode());
};
this.hotkey_actions["toggle_cdm_expanded"] = () => {
- const value = this.getInitParam("cdm_expanded") ? "false" : "true";
-
- xhr.post("backend.php", {op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value}, () => {
- this.setInitParam("cdm_expanded", !this.getInitParam("cdm_expanded"));
- Headlines.renderAgain();
- });
+ App.setExpandedMode(!App.isExpandedMode());
};
this.hotkey_actions["article_span_grid"] = () => {
Article.cdmToggleGridSpan(Article.getActive());
@@ -1282,18 +1312,14 @@ const App = {
Feeds.toggleUnread();
break;
case "qmcToggleWidescreen":
- if (!this.isCombinedMode()) {
- this._widescreen_mode = !this._widescreen_mode;
-
- // reset stored sizes because geometry changed
- Cookie.set("ttrss_ci_width", 0);
- Cookie.set("ttrss_ci_height", 0);
-
- this.setWidescreen(this._widescreen_mode);
- } else {
- alert(__("Widescreen is not available in combined mode."));
- }
+ App.setWideScreenMode(!App.isWideScreenMode());
break;
+ case "qmcToggleCombined":
+ App.setCombinedMode(!App.isCombinedMode());
+ break;
+ case "qmcToggleExpanded":
+ App.setExpandedMode(!App.isExpandedMode());
+ break;
case "qmcHKhelp":
this.hotkeyHelp()
break;