generated feed: use client dialog
This commit is contained in:
parent
1a680d4eae
commit
4182018cb7
|
@ -128,41 +128,4 @@ class Dlg extends Handler_Protected {
|
||||||
print "</footer>";
|
print "</footer>";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function generatedFeed() {
|
|
||||||
|
|
||||||
$this->params = explode(":", $this->param, 3);
|
|
||||||
$feed_id = $this->params[0];
|
|
||||||
$is_cat = (bool) $this->params[1];
|
|
||||||
|
|
||||||
$key = Feeds::get_feed_access_key($feed_id, $is_cat);
|
|
||||||
|
|
||||||
$url_path = htmlspecialchars($this->params[2]) . "&key=" . $key;
|
|
||||||
|
|
||||||
$feed_title = Feeds::getFeedTitle($feed_id, $is_cat);
|
|
||||||
|
|
||||||
print "<header>".T_sprintf("%s can be accessed via the following secret URL:", $feed_title)."</header>";
|
|
||||||
|
|
||||||
print "<section>";
|
|
||||||
print "<div class='panel text-center'>";
|
|
||||||
print "<a id='gen_feed_url' href='$url_path' target='_blank'>$url_path</a>";
|
|
||||||
print "</div>";
|
|
||||||
print "</section>";
|
|
||||||
|
|
||||||
print "<footer>";
|
|
||||||
|
|
||||||
print "<button dojoType='dijit.form.Button' style='float : left' class='alt-info' onclick='window.open(\"https://tt-rss.org/wiki/GeneratedFeeds\")'>
|
|
||||||
<i class='material-icons'>help</i> ".__("More info...")."</button>";
|
|
||||||
|
|
||||||
print "<button dojoType='dijit.form.Button' onclick=\"return CommonDialogs.genUrlChangeKey('$feed_id', '$is_cat')\">".
|
|
||||||
__('Generate new URL')."</button> ";
|
|
||||||
|
|
||||||
print "<button dojoType='dijit.form.Button' onclick=\"return CommonDialogs.closeInfoBox()\">".
|
|
||||||
__('Close this window')."</button>";
|
|
||||||
|
|
||||||
print "</footer>";
|
|
||||||
|
|
||||||
//return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ class Feeds extends Handler_Protected {
|
||||||
|
|
||||||
$reply .= "<a href=\"#\"
|
$reply .= "<a href=\"#\"
|
||||||
title=\"".__("Show as feed")."\"
|
title=\"".__("Show as feed")."\"
|
||||||
onclick=\"App.displayDlg('".__("Show as feed")."','generatedFeed', '$feed_id:$is_cat:$rss_link')\">
|
onclick='CommonDialogs.generatedFeed(\"$feed_id\", \"$is_cat\", \"$rss_link\")'>
|
||||||
<i class='icon-syndicate material-icons'>rss_feed</i></a>";
|
<i class='icon-syndicate material-icons'>rss_feed</i></a>";
|
||||||
|
|
||||||
$reply .= "<span id='feed_title'>";
|
$reply .= "<span id='feed_title'>";
|
||||||
|
|
|
@ -1391,10 +1391,10 @@ class Pref_Feeds extends Handler_Protected {
|
||||||
|
|
||||||
print "<h3>" . __('Published articles can be subscribed by anyone who knows the following URL:') . "</h3>";
|
print "<h3>" . __('Published articles can be subscribed by anyone who knows the following URL:') . "</h3>";
|
||||||
|
|
||||||
$rss_url = '-2::' . htmlspecialchars(get_self_url_prefix() .
|
$rss_url = htmlspecialchars(get_self_url_prefix() .
|
||||||
"/public.php?op=rss&id=-2&view-mode=all_articles");;
|
"/public.php?op=rss&id=-2&view-mode=all_articles");;
|
||||||
|
|
||||||
print "<button dojoType='dijit.form.Button' class='alt-primary' onclick=\"return App.displayDlg('".__("Show as feed")."','generatedFeed', '$rss_url')\">".
|
print "<button dojoType='dijit.form.Button' class='alt-primary' onclick='CommonDialogs.generatedFeed('-2', false, \"$rss_url\")'>".
|
||||||
__('Display URL')."</button> ";
|
__('Display URL')."</button> ";
|
||||||
|
|
||||||
print "<button class=\"alt-danger\" dojoType=\"dijit.form.Button\" onclick=\"return Helpers.clearFeedAccessKeys()\">".
|
print "<button class=\"alt-danger\" dojoType=\"dijit.form.Button\" onclick=\"return Helpers.clearFeedAccessKeys()\">".
|
||||||
|
@ -1714,23 +1714,26 @@ class Pref_Feeds extends Handler_Protected {
|
||||||
$this->update_feed_access_key('OPML:Publish',
|
$this->update_feed_access_key('OPML:Publish',
|
||||||
false, $_SESSION["uid"]);
|
false, $_SESSION["uid"]);
|
||||||
|
|
||||||
$new_link = OPML::opml_publish_url();
|
print json_encode(["link" => OPML::opml_publish_url()]);
|
||||||
|
|
||||||
print json_encode(["link" => $new_link]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function regenFeedKey() {
|
function regenFeedKey() {
|
||||||
$feed_id = clean($_REQUEST['id']);
|
$feed_id = clean($_REQUEST['id']);
|
||||||
$is_cat = clean($_REQUEST['is_cat']);
|
$is_cat = clean($_REQUEST['is_cat']);
|
||||||
|
|
||||||
$new_key = $this->update_feed_access_key($feed_id, $is_cat);
|
$new_key = $this->update_feed_access_key($feed_id, $is_cat, $_SESSION["uid"]);
|
||||||
|
|
||||||
print json_encode(["link" => $new_key]);
|
print json_encode(["link" => $new_key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getFeedKey() {
|
||||||
|
$feed_id = clean($_REQUEST['id']);
|
||||||
|
$is_cat = clean($_REQUEST['is_cat']);
|
||||||
|
|
||||||
private function update_feed_access_key($feed_id, $is_cat, $owner_uid = false) {
|
print json_encode(["link" => Feeds::get_feed_access_key($feed_id, $is_cat, $_SESSION["uid"])]);
|
||||||
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
|
}
|
||||||
|
|
||||||
|
private function update_feed_access_key($feed_id, $is_cat, $owner_uid) {
|
||||||
|
|
||||||
// clear old value and generate new one
|
// clear old value and generate new one
|
||||||
$sth = $this->pdo->prepare("DELETE FROM ttrss_access_keys
|
$sth = $this->pdo->prepare("DELETE FROM ttrss_access_keys
|
||||||
|
|
|
@ -370,7 +370,7 @@ const CommonDialogs = {
|
||||||
dijit.byId("publicOPMLDlg").destroyRecursive();
|
dijit.byId("publicOPMLDlg").destroyRecursive();
|
||||||
|
|
||||||
const dialog = new dijit.Dialog({
|
const dialog = new dijit.Dialog({
|
||||||
title: "Public OPML URL",
|
title: __("Public OPML URL"),
|
||||||
id: 'publicOPMLDlg',
|
id: 'publicOPMLDlg',
|
||||||
style: "width: 600px",
|
style: "width: 600px",
|
||||||
onCancel: function () {
|
onCancel: function () {
|
||||||
|
@ -386,7 +386,7 @@ const CommonDialogs = {
|
||||||
<header>${__("Your Public OPML URL is:")}</header>
|
<header>${__("Your Public OPML URL is:")}</header>
|
||||||
<section>
|
<section>
|
||||||
<div class='panel text-center'>
|
<div class='panel text-center'>
|
||||||
<a id='pub_opml_url' href='$url_path' target='_blank'>${reply.link}</a>
|
<a id='pub_opml_url' href="${App.escapeHtml(reply.link)}" target='_blank'>${reply.link}</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<footer class='text-center'>
|
<footer class='text-center'>
|
||||||
|
@ -409,4 +409,60 @@ const CommonDialogs = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
generatedFeed: function(feed, is_cat, rss_url) {
|
||||||
|
|
||||||
|
Notify.progress("Loading, please wait...", true);
|
||||||
|
|
||||||
|
xhrJson("backend.php", {op: "pref-feeds", method: "getFeedKey", id: feed, is_cat: is_cat}, (reply) => {
|
||||||
|
try {
|
||||||
|
if (dijit.byId("genFeedDlg"))
|
||||||
|
dijit.byId("genFeedDlg").destroyRecursive();
|
||||||
|
|
||||||
|
const feed_title = Feeds.getName(feed, is_cat);
|
||||||
|
|
||||||
|
const secret_url = rss_url + "&key=" + encodeURIComponent(reply.link);
|
||||||
|
|
||||||
|
const dialog = new dijit.Dialog({
|
||||||
|
title: __("Show as feed"),
|
||||||
|
id: 'genFeedDlg',
|
||||||
|
style: "width: 600px",
|
||||||
|
onCancel: function () {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
onExecute: function () {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
onClose: function () {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
content: `
|
||||||
|
<header>${__("%s can be accessed via the following secret URL:").replace("%s", feed_title)}</header>
|
||||||
|
<section>
|
||||||
|
<div class='panel text-center'>
|
||||||
|
<a id='gen_feed_url' href="${App.escapeHtml(secret_url)}" target='_blank'>${secret_url}</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<footer>
|
||||||
|
<button dojoType='dijit.form.Button' style='float : left' class='alt-info'
|
||||||
|
onclick='window.open("https://tt-rss.org/wiki/GeneratedFeeds")'>
|
||||||
|
<i class='material-icons'>help</i> ${__("More info...")}</button>
|
||||||
|
<button dojoType='dijit.form.Button' onclick="return CommonDialogs.genUrlChangeKey('${feed}', '${is_cat}')">
|
||||||
|
${__('Generate new URL')}
|
||||||
|
</button>
|
||||||
|
<button dojoType='dijit.form.Button' class='alt-primary' type='submit'>
|
||||||
|
${__('Close this window')}
|
||||||
|
</button>
|
||||||
|
</footer>
|
||||||
|
`
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
|
Notify.close();
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
this.Error.report(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue