feed browser: allow subscribing by url for linked feeds

This commit is contained in:
Andrew Dolgov 2011-04-20 18:39:30 +04:00
parent 572d66c6ee
commit 6f907113ef
3 changed files with 82 additions and 13 deletions

View file

@ -1430,7 +1430,7 @@ function feedBrowser() {
id: "feedBrowserDlg", id: "feedBrowserDlg",
title: __("More Feeds"), title: __("More Feeds"),
style: "width: 600px", style: "width: 600px",
getSelectedFeeds: function() { getSelectedFeedIds: function() {
var list = $$("#browseFeedList li[id*=FBROW]"); var list = $$("#browseFeedList li[id*=FBROW]");
var selected = new Array(); var selected = new Array();
@ -1444,26 +1444,48 @@ function feedBrowser() {
return selected; return selected;
}, },
getSelectedFeeds: function() {
var list = $$("#browseFeedList li.Selected");
var selected = new Array();
list.each(function(child) {
var title = child.getElementsBySelector("span.fb_feedTitle")[0].innerHTML;
var url = child.getElementsBySelector("a.fb_feedUrl")[0].href;
selected.push([title,url]);
});
return selected;
},
subscribe: function() { subscribe: function() {
var selected = this.getSelectedFeeds();
var mode = this.attr('value').mode; var mode = this.attr('value').mode;
var selected = [];
if (mode == "1")
selected = this.getSelectedFeeds();
else
selected = this.getSelectedFeedIds();
if (selected.length > 0) { if (selected.length > 0) {
dijit.byId("feedBrowserDlg").hide(); dijit.byId("feedBrowserDlg").hide();
notify_progress("Loading, please wait...", true); notify_progress("Loading, please wait...", true);
var query = "?op=rpc&subop=massSubscribe&ids="+ // we use dojo.toJson instead of JSON.stringify because
param_escape(selected.toString()) + "&mode=" + param_escape(mode); // it somehow escapes everything TWICE, at least in Chrome 9
var query = "?op=rpc&subop=massSubscribe&payload="+
param_escape(dojo.toJson(selected)) + "&mode=" + param_escape(mode);
console.log(query); console.log(query);
new Ajax.Request("backend.php", { new Ajax.Request("backend.php", {
parameters: query, parameters: query,
onComplete: function(transport) { onComplete: function(transport) {
if (inPreferences()) { notify('');
updateFeedList(); updateFeedList();
}
} }); } });
} else { } else {

View file

@ -514,9 +514,53 @@
// Silent // Silent
if ($subop == "massSubscribe") { if ($subop == "massSubscribe") {
$ids = split(",", db_escape_string($_REQUEST["ids"])); $payload = json_decode($_REQUEST["payload"], false);
$mode = $_REQUEST["mode"]; $mode = $_REQUEST["mode"];
if (!$payload || !is_array($payload)) return;
if ($mode == 1) {
foreach ($payload as $feed) {
$title = db_escape_string($feed[0]);
$feed_url = db_escape_string($feed[1]);
$result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($result) == 0) {
$result = db_query($link, "INSERT INTO ttrss_feeds
(owner_uid,feed_url,title,cat_id,site_url)
VALUES ('".$_SESSION["uid"]."',
'$feed_url', '$title', NULL, '')");
}
}
} else if ($mode == 2) {
// feed archive
foreach ($payload as $id) {
$result = db_query($link, "SELECT * FROM ttrss_archived_feeds
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($result) != 0) {
$site_url = db_escape_string(db_fetch_result($result, 0, "site_url"));
$feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url"));
$title = db_escape_string(db_fetch_result($result, 0, "title"));
$result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($result) == 0) {
$result = db_query($link, "INSERT INTO ttrss_feeds
(owner_uid,feed_url,title,cat_id,site_url)
VALUES ('$id','".$_SESSION["uid"]."',
'$feed_url', '$title', NULL, '$site_url')");
}
}
}
}
/* $ids = split(",", db_escape_string($_REQUEST["ids"]));
$subscribed = array(); $subscribed = array();
foreach ($ids as $id) { foreach ($ids as $id) {
@ -551,7 +595,7 @@
} }
array_push($subscribed, $title_orig); array_push($subscribed, $title_orig);
} }
} } */
return; return;
} }

View file

@ -1607,13 +1607,16 @@
$site_url = ""; $site_url = "";
} }
$feed_url = "<a target=\"_blank\" href=\"$feed_url\"><img $feed_url = "<a class=\"fb_feedUrl\" target=\"_blank\"
href=\"$feed_url\"><img
style='border-width : 0px; vertical-align : middle' style='border-width : 0px; vertical-align : middle'
src='images/feed-icon-12x12.png'></a>"; src='images/feed-icon-12x12.png'></a>";
$rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\" $rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\">
id=\"FBROW-".$details["id"]."\">$check_box". $check_box".
"$feed_icon $feed_url " . htmlspecialchars($line["title"]) . "$feed_icon $feed_url " .
"<span class=\"fb_feedTitle\">".htmlspecialchars($line["title"]).
"</span>".
"&nbsp;<span class='subscribers'>($subscribers)</span> "&nbsp;<span class='subscribers'>($subscribers)</span>
$site_url</li>"; $site_url</li>";