move some dialogs to xhr loading

This commit is contained in:
Andrew Dolgov 2021-02-12 18:38:26 +03:00
parent 71dfc83466
commit 03b85248e6
5 changed files with 47 additions and 25 deletions

View File

@ -1,9 +1,7 @@
<?php
class Pref_Feeds extends Handler_Protected {
function csrf_ignore($method) {
$csrf_ignored = array("index", "getfeedtree", "add", "editcats", "editfeed",
"savefeedorder", "uploadicon", "feedswitherrors", "inactivefeeds",
"batchsubscribe");
$csrf_ignored = array("index", "getfeedtree", "savefeedorder", "uploadicon");
return array_search($method, $csrf_ignored) !== false;
}

View File

@ -2,7 +2,7 @@
class Pref_Labels extends Handler_Protected {
function csrf_ignore($method) {
$csrf_ignored = array("index", "getlabeltree", "edit");
$csrf_ignored = array("index", "getlabeltree");
return array_search($method, $csrf_ignored) !== false;
}

View File

@ -185,8 +185,6 @@ const CommonDialogs = {
});
},
showFeedsWithErrors: function() {
const query = {op: "pref-feeds", method: "feedsWithErrors"};
const dialog = new fox.SingleUseDialog({
id: "errorFeedsDlg",
title: __("Feeds with update errors"),
@ -221,12 +219,15 @@ const CommonDialogs = {
alert(__("No feeds selected."));
}
},
execute: function () {
if (this.validate()) {
//
}
},
href: "backend.php?" + dojo.objectToQuery(query)
content: __("Loading, please wait...")
});
const tmph = dojo.connect(dialog, 'onShow', function () {
dojo.disconnect(tmph);
xhrPost("backend.php", {op: "pref-feeds", method: "feedsWithErrors"}, (transport) => {
dialog.attr('content', transport.responseText);
})
});
dialog.show();
@ -313,7 +314,15 @@ const CommonDialogs = {
});
}
},
href: "backend.php?" + dojo.objectToQuery(query)
content: __("Loading, please wait...")
});
const tmph = dojo.connect(dialog, 'onShow', function () {
dojo.disconnect(tmph);
xhrPost("backend.php", {op: "pref-feeds", method: "editfeed", id: feed}, (transport) => {
dialog.attr('content', transport.responseText);
})
});
dialog.show();

View File

@ -29,7 +29,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
const bare_id = parseInt(id.substr(id.indexOf(':')+1));
if (id.match("CAT:") && bare_id > 0) {
var menu = new dijit.Menu();
const menu = new dijit.Menu();
menu.row_id = bare_id;
menu.item = args.item;
@ -49,7 +49,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
menu.bindDomNode(tnode.domNode);
tnode._menu = menu;
} else if (id.match("FEED:")) {
var menu = new dijit.Menu();
const menu = new dijit.Menu();
menu.row_id = bare_id;
menu.item = args.item;
@ -76,6 +76,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
this.inherited(arguments);
this.tree.model.store.save();
},
// eslint-disable-next-line no-unused-vars
getRowClass: function (item, opened) {
let rc = (!item.error || item.error == '') ? "dijitTreeRow" :
"dijitTreeRow Error";
@ -85,11 +86,12 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
return rc;
},
getIconClass: function (item, opened) {
// eslint-disable-next-line no-nested-ternary
return (!item || this.model.store.getValue(item, 'type') == 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feed-icon";
},
reload: function() {
const searchElem = $("feed_search");
let search = (searchElem) ? searchElem.value : "";
const search = (searchElem) ? searchElem.value : "";
xhrPost("backend.php", { op: "pref-feeds", search: search }, (transport) => {
dijit.byId('feedsTab').attr('content', transport.responseText);
@ -285,7 +287,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
/* normalize unchecked checkboxes because [] is not serialized */
Object.keys(query).each((key) => {
let val = query[key];
const val = query[key];
if (typeof val == "object" && val.length == 0)
query[key] = ["off"];
@ -395,7 +397,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
alert(__("No feeds selected."));
}
},
href: 'backend.php?' + dojo.objectToQuery({op: 'pref-feeds', method: 'inactiveFeeds'})
content: __("Loading, please wait...")
});
const tmph = dojo.connect(dialog, 'onShow', function () {
dojo.disconnect(tmph);
xhrPost("backend.php", {op: "pref-feeds", method: "inactivefeeds"}, (transport) => {
dialog.attr('content', transport.responseText);
})
});
dialog.show();

View File

@ -13,10 +13,10 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/f
_createTreeNode: function(args) {
const tnode = this.inherited(arguments);
const fg_color = this.model.store.getValue(args.item, 'fg_color');
const bg_color = this.model.store.getValue(args.item, 'bg_color');
//const fg_color = this.model.store.getValue(args.item, 'fg_color');
//const bg_color = this.model.store.getValue(args.item, 'bg_color');
const type = this.model.store.getValue(args.item, 'type');
const bare_id = this.model.store.getValue(args.item, 'bare_id');
//const bare_id = this.model.store.getValue(args.item, 'bare_id');
if (type == 'label') {
const label = dojo.doc.createElement('i');
@ -59,9 +59,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/f
});
},
editLabel: function(id) {
const query = "backend.php?op=pref-labels&method=edit&id=" +
encodeURIComponent(id);
const dialog = new fox.SingleUseDialog({
id: "labelEditDlg",
title: __("Label Editor"),
@ -114,7 +111,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/f
});
}
},
href: query
content: __("Loading, please wait...")
});
const tmph = dojo.connect(dialog, 'onShow', function () {
dojo.disconnect(tmph);
xhrPost("backend.php", {op: "pref-labels", method: "edit", id: id}, (transport) => {
dialog.attr('content', transport.responseText);
})
});
dialog.show();