feeds with errors: use client dialog

This commit is contained in:
Andrew Dolgov 2021-02-13 21:57:02 +03:00
parent 8464c619e4
commit c36b2adf84
2 changed files with 79 additions and 85 deletions

View File

@ -1500,58 +1500,13 @@ class Pref_Feeds extends Handler_Protected {
FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ?"); FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ?");
$sth->execute([$_SESSION['uid']]); $sth->execute([$_SESSION['uid']]);
print "<div dojoType=\"fox.Toolbar\">"; $rv = [];
print "<div dojoType=\"fox.form.DropDownButton\">".
"<span>" . __('Select')."</span>";
print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
print "<div onclick=\"Tables.select('error-feeds-list', true)\"
dojoType=\"dijit.MenuItem\">".__('All')."</div>";
print "<div onclick=\"Tables.select('error-feeds-list', false)\"
dojoType=\"dijit.MenuItem\">".__('None')."</div>";
print "</div></div>";
print "</div>"; #toolbar
print "<div class='panel panel-scrollable'>"; while ($row = $sth->fetch()) {
print "<table width='100%' id='error-feeds-list'>"; array_push($rv, $row);
$lnum = 1;
while ($line = $sth->fetch()) {
$feed_id = $line["id"];
print "<tr data-row-id='$feed_id'>";
print "<td width='5%' align='center'><input
onclick='Tables.onRowChecked(this);' dojoType=\"dijit.form.CheckBox\"
type=\"checkbox\"></td>";
print "<td>";
print "<a class=\"visibleLink\" href=\"#\" ".
"title=\"".__("Click to edit feed")."\" ".
"onclick=\"CommonDialogs.editFeed(".$line["id"].")\">".
htmlspecialchars($line["title"])."</a>: ";
print "<span class=\"text-muted\">";
print htmlspecialchars($line["last_error"]);
print "</span>";
print "</td>";
print "</tr>";
++$lnum;
} }
print "</table>"; print json_encode($rv);
print "</div>";
print "<footer>";
print "<button style='float : left' class='alt-danger' dojoType='dijit.form.Button' onclick='App.dialogOf(this).removeSelected()'>"
.__('Unsubscribe from selected feeds')."</button> ";
print "<button dojoType='dijit.form.Button' class='alt-primary' type='submit'>".
__('Close this window')."</button>";
print "</footer>";
} }
private function remove_feed_category($id, $owner_uid) { private function remove_feed_category($id, $owner_uid) {

View File

@ -188,6 +188,9 @@ const CommonDialogs = {
}); });
}, },
showFeedsWithErrors: function() { showFeedsWithErrors: function() {
xhrJson("backend.php", {op: "pref-feeds", method: "feedsWithErrors"}, (reply) => {
const dialog = new fox.SingleUseDialog({ const dialog = new fox.SingleUseDialog({
id: "errorFeedsDlg", id: "errorFeedsDlg",
title: __("Feeds with update errors"), title: __("Feeds with update errors"),
@ -222,18 +225,54 @@ const CommonDialogs = {
alert(__("No feeds selected.")); alert(__("No feeds selected."));
} }
}, },
content: __("Loading, please wait...") content: `
}); <div dojoType="fox.Toolbar">
<div dojoType="fox.form.DropDownButton">
<span>${__('Select')}</span>
<div dojoType="dijit.Menu" style="display: none">
<div onclick="Tables.select('error-feeds-list', true)"
dojoType="dijit.MenuItem">${__('All')}</div>
<div onclick="Tables.select('error-feeds-list', false)"
dojoType="dijit.MenuItem">${__('None')}</div>
</div>
</div>
</div>
const tmph = dojo.connect(dialog, 'onShow', function () { <div class='panel panel-scrollable'>
dojo.disconnect(tmph); <table width='100%' id='error-feeds-list'>
xhrPost("backend.php", {op: "pref-feeds", method: "feedsWithErrors"}, (transport) => { ${reply.map((row) => `
dialog.attr('content', transport.responseText); <tr data-row-id='${row.id}'>
}) <td width='5%' align='center'>
<input onclick='Tables.onRowChecked(this)' dojoType="dijit.form.CheckBox"
type="checkbox">
</td>
<td>
<a href="#" title="${__("Click to edit feed")}" onclick="CommonDialogs.editFeed(${row.id})">
${App.escapeHtml(row.title)}
</a>
</td>
<td class='text-muted small' align='right' width='50%'>
${App.escapeHtml(row.last_error)}
</td>
</tr>
`).join("")}
</table>
</div>
<footer>
<button style='float : left' class='alt-danger' dojoType='dijit.form.Button' onclick='App.dialogOf(this).removeSelected()'>
${__('Unsubscribe from selected feeds')}
</button>
<button dojoType='dijit.form.Button' class='alt-primary' type='submit'>
${__('Close this window')}
</button>
</footer>
`
}); });
dialog.show(); dialog.show();
})
}, },
addLabel: function(select, callback) { addLabel: function(select, callback) {
const caption = prompt(__("Please enter label caption:"), ""); const caption = prompt(__("Please enter label caption:"), "");