editarticletags: load dialog via XHR

master
Andrew Dolgov 4 years ago
parent 0706a328a4
commit 42b5564d1e

@ -1,12 +1,6 @@
<?php <?php
class Article extends Handler_Protected { class Article extends Handler_Protected {
function csrf_ignore($method) {
$csrf_ignored = array("editarticletags");
return array_search($method, $csrf_ignored) !== false;
}
function redirect() { function redirect() {
$id = clean($_REQUEST['id']); $id = clean($_REQUEST['id']);

@ -257,53 +257,56 @@ const Article = {
return false; return false;
}, },
editTags: function (id) { editTags: function (id) {
const query = "backend.php?op=article&method=editArticleTags&param=" + encodeURIComponent(id);
if (dijit.byId("editTagsDlg")) if (dijit.byId("editTagsDlg"))
dijit.byId("editTagsDlg").destroyRecursive(); dijit.byId("editTagsDlg").destroyRecursive();
const dialog = new dijit.Dialog({ xhrPost("backend.php", {op: "article", method: "editarticletags", param: id}, (transport) => {
id: "editTagsDlg",
title: __("Edit article Tags"), const dialog = new dijit.Dialog({
style: "width: 600px", id: "editTagsDlg",
execute: function () { title: __("Edit article Tags"),
if (this.validate()) { style: "width: 600px",
Notify.progress("Saving article tags...", true); content: transport.responseText,
execute: function () {
if (this.validate()) {
Notify.progress("Saving article tags...", true);
xhrPost("backend.php", this.attr('value'), (transport) => { xhrPost("backend.php", this.attr('value'), (transport) => {
try { try {
Notify.close(); Notify.close();
dialog.hide(); dialog.hide();
const data = JSON.parse(transport.responseText); const data = JSON.parse(transport.responseText);
if (data) { if (data) {
const id = data.id; const id = data.id;
const tags = $("ATSTR-" + id); const tags = $("ATSTR-" + id);
const tooltip = dijit.byId("ATSTRTIP-" + id); const tooltip = dijit.byId("ATSTRTIP-" + id);
if (tags) tags.innerHTML = data.content; if (tags) tags.innerHTML = data.content;
if (tooltip) tooltip.attr('label', data.content_full); if (tooltip) tooltip.attr('label', data.content_full);
}
} catch (e) {
App.Error.report(e);
} }
} catch (e) { });
App.Error.report(e); }
} },
}); });
}
}, const tmph = dojo.connect(dialog, 'onLoad', function () {
href: query dojo.disconnect(tmph);
});
new Ajax.Autocompleter('tags_str', 'tags_choices',
"backend.php?op=article&method=completeTags",
{tokens: ',', paramName: "search"});
});
const tmph = dojo.connect(dialog, 'onLoad', function () { dialog.show();
dojo.disconnect(tmph);
new Ajax.Autocompleter('tags_str', 'tags_choices',
"backend.php?op=article&method=completeTags",
{tokens: ',', paramName: "search"});
}); });
dialog.show();
}, },
cdmMoveToId: function (id, params) { cdmMoveToId: function (id, params) {
params = params || {}; params = params || {};

Loading…
Cancel
Save