id: "feedBrowserDlg",
title: __("More Feeds"),
style: "width: 600px",
- getSelectedFeeds: function() {
+ getSelectedFeedIds: function() {
var list = $$("#browseFeedList li[id*=FBROW]");
var selected = new Array();
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() {
- var selected = this.getSelectedFeeds();
var mode = this.attr('value').mode;
+ var selected = [];
+
+ if (mode == "1")
+ selected = this.getSelectedFeeds();
+ else
+ selected = this.getSelectedFeedIds();
if (selected.length > 0) {
dijit.byId("feedBrowserDlg").hide();
notify_progress("Loading, please wait...", true);
- var query = "?op=rpc&subop=massSubscribe&ids="+
- param_escape(selected.toString()) + "&mode=" + param_escape(mode);
+ // we use dojo.toJson instead of JSON.stringify because
+ // 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);
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
- if (inPreferences()) {
- updateFeedList();
- }
+ notify('');
+ updateFeedList();
} });
} else {
// Silent
if ($subop == "massSubscribe") {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $payload = json_decode($_REQUEST["payload"], false);
$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();
foreach ($ids as $id) {
}
array_push($subscribed, $title_orig);
}
- }
+ } */
return;
}
$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'
src='images/feed-icon-12x12.png'></a>";
- $rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\"
- id=\"FBROW-".$details["id"]."\">$check_box".
- "$feed_icon $feed_url " . htmlspecialchars($line["title"]) .
+ $rv .= "<li title=\"".htmlspecialchars($details["site_url"])."\">
+ $check_box".
+ "$feed_icon $feed_url " .
+ "<span class=\"fb_feedTitle\">".htmlspecialchars($line["title"]).
+ "</span>".
" <span class='subscribers'>($subscribers)</span>
$site_url</li>";