refactor feed subscription/browser dialogs
This commit is contained in:
parent
ec39a02cd8
commit
11b9d0becd
464
functions.js
464
functions.js
|
@ -560,109 +560,6 @@ function createFilter() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isValidURL(s) {
|
|
||||||
return s.match("http://") != null || s.match("https://") != null || s.match("feed://") != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function subscribeToFeed() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
var form = document.forms['feed_add_form'];
|
|
||||||
var feed_url = form.feed_url.value;
|
|
||||||
|
|
||||||
if (feed_url == "") {
|
|
||||||
alert(__("Can't subscribe: no feed URL given."));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
notify_progress(__("Subscribing to feed..."), true);
|
|
||||||
|
|
||||||
var query = Form.serialize("feed_add_form");
|
|
||||||
|
|
||||||
console.log("subscribe q: " + query);
|
|
||||||
|
|
||||||
Form.disable("feed_add_form");
|
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: query,
|
|
||||||
onComplete: function(transport) {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (!transport.responseXML) {
|
|
||||||
console.log(transport.responseText);
|
|
||||||
alert(__("Server error while trying to subscribe to specified feed."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var result = transport.responseXML.getElementsByTagName('result')[0];
|
|
||||||
var rc = parseInt(result.getAttribute('code'));
|
|
||||||
|
|
||||||
Form.enable("feed_add_form");
|
|
||||||
|
|
||||||
notify('');
|
|
||||||
|
|
||||||
switch (rc) {
|
|
||||||
case 1:
|
|
||||||
closeInfoBox();
|
|
||||||
notify_info(__("Subscribed to %s").replace("%s", feed_url));
|
|
||||||
|
|
||||||
if (inPreferences()) {
|
|
||||||
updateFeedList();
|
|
||||||
} else {
|
|
||||||
setTimeout('updateFeedList(false, false)', 50);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
alert(__("Specified URL seems to be invalid."));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
alert(__("Specified URL doesn't seem to contain any feeds."));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: 'op=rpc&subop=extractfeedurls&url=' + encodeURIComponent(feed_url),
|
|
||||||
onComplete: function(transport) {
|
|
||||||
var result = transport.responseXML.getElementsByTagName('urls')[0];
|
|
||||||
var feeds = JSON.parse(result.firstChild.nodeValue);
|
|
||||||
var select = document.getElementById("faad_feeds_container_select");
|
|
||||||
|
|
||||||
while (select.hasChildNodes()) {
|
|
||||||
select.removeChild(elem.firstChild);
|
|
||||||
}
|
|
||||||
var count = 0;
|
|
||||||
for (var feedUrl in feeds) {
|
|
||||||
select.insert(new Option(feeds[feedUrl], feedUrl, false));
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
if (count > 5) count = 5;
|
|
||||||
select.size = count;
|
|
||||||
|
|
||||||
Effect.Appear('fadd_feeds_container', {duration : 0.5});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
alert(__("Couldn't download the specified URL."));
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
alert(__("You are already subscribed to this feed."));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("subscribeToFeed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
} });
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("subscribeToFeed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function filterCR(e, f)
|
function filterCR(e, f)
|
||||||
{
|
{
|
||||||
var key;
|
var key;
|
||||||
|
@ -857,7 +754,7 @@ function remove_splash() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSelectedFeedsFromBrowser() {
|
/* function getSelectedFeedsFromBrowser() {
|
||||||
|
|
||||||
var list = $$("#browseFeedList li[id*=FBROW]");
|
var list = $$("#browseFeedList li[id*=FBROW]");
|
||||||
|
|
||||||
|
@ -865,52 +762,15 @@ function getSelectedFeedsFromBrowser() {
|
||||||
|
|
||||||
list.each(function(child) {
|
list.each(function(child) {
|
||||||
var id = child.id.replace("FBROW-", "");
|
var id = child.id.replace("FBROW-", "");
|
||||||
var cb = $("FBCHK-" + id);
|
|
||||||
|
|
||||||
if (cb.checked) {
|
if (child.hasClassName('Selected')) {
|
||||||
selected.push(id);
|
selected.push(id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return selected;
|
return selected;
|
||||||
}
|
} */
|
||||||
|
|
||||||
function updateFeedBrowser() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
var query = Form.serialize("feed_browser");
|
|
||||||
|
|
||||||
Element.show('feed_browser_spinner');
|
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: query,
|
|
||||||
onComplete: function(transport) {
|
|
||||||
notify('');
|
|
||||||
|
|
||||||
Element.hide('feed_browser_spinner');
|
|
||||||
|
|
||||||
var c = $("browseFeedList");
|
|
||||||
var r = transport.responseXML.getElementsByTagName("content")[0];
|
|
||||||
var nr = transport.responseXML.getElementsByTagName("num-results")[0];
|
|
||||||
var mode = transport.responseXML.getElementsByTagName("mode")[0];
|
|
||||||
|
|
||||||
if (c && r) {
|
|
||||||
c.innerHTML = r.firstChild.nodeValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parseInt(mode.getAttribute("value")) == 2) {
|
|
||||||
Element.show('feed_archive_remove');
|
|
||||||
} else {
|
|
||||||
Element.hide('feed_archive_remove');
|
|
||||||
}
|
|
||||||
|
|
||||||
} });
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("updateFeedBrowser", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function transport_error_check(transport) {
|
function transport_error_check(transport) {
|
||||||
try {
|
try {
|
||||||
|
@ -971,78 +831,6 @@ function hideAuxDlg() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function feedBrowserSubscribe() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
var selected = getSelectedFeedsFromBrowser();
|
|
||||||
|
|
||||||
var mode = document.forms['feed_browser'].mode;
|
|
||||||
|
|
||||||
mode = mode[mode.selectedIndex].value;
|
|
||||||
|
|
||||||
if (selected.length > 0) {
|
|
||||||
closeInfoBox();
|
|
||||||
|
|
||||||
notify_progress("Loading, please wait...", true);
|
|
||||||
|
|
||||||
var query = "?op=rpc&subop=massSubscribe&ids="+
|
|
||||||
param_escape(selected.toString()) + "&mode=" + param_escape(mode);
|
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: query,
|
|
||||||
onComplete: function(transport) {
|
|
||||||
|
|
||||||
var nf = transport.responseXML.getElementsByTagName('num-feeds')[0];
|
|
||||||
var nf_value = nf.getAttribute("value");
|
|
||||||
|
|
||||||
notify_info(__("Subscribed to %d feed(s).").replace("%d", nf_value));
|
|
||||||
|
|
||||||
if (inPreferences()) {
|
|
||||||
updateFeedList();
|
|
||||||
} else {
|
|
||||||
setTimeout('updateFeedList(false, false)', 50);
|
|
||||||
}
|
|
||||||
} });
|
|
||||||
|
|
||||||
} else {
|
|
||||||
alert(__("No feeds are selected."));
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("feedBrowserSubscribe", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function feedArchiveRemove() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
var selected = getSelectedFeedsFromBrowser();
|
|
||||||
|
|
||||||
if (selected.length > 0) {
|
|
||||||
|
|
||||||
var pr = __("Remove selected feeds from the archive? Feeds with stored articles will not be removed.");
|
|
||||||
|
|
||||||
if (confirm(pr)) {
|
|
||||||
Element.show('feed_browser_spinner');
|
|
||||||
|
|
||||||
var query = "?op=rpc&subop=remarchived&ids=" +
|
|
||||||
param_escape(selected.toString());;
|
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: query,
|
|
||||||
onComplete: function(transport) {
|
|
||||||
updateFeedBrowser();
|
|
||||||
} });
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
alert(__("No feeds are selected."));
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("feedArchiveRemove", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadIconHandler(rc) {
|
function uploadIconHandler(rc) {
|
||||||
try {
|
try {
|
||||||
|
@ -1162,8 +950,119 @@ function addLabel(select, callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function quickAddFeed() {
|
function quickAddFeed() {
|
||||||
displayDlg('quickAddFeed', '',
|
try {
|
||||||
function () {$('feed_url').focus();});
|
var query = "backend.php?op=dlg&id=quickAddFeed";
|
||||||
|
|
||||||
|
if (dijit.byId("feedAddDlg"))
|
||||||
|
dijit.byId("feedAddDlg").destroyRecursive();
|
||||||
|
|
||||||
|
var dialog = new dijit.Dialog({
|
||||||
|
id: "feedAddDlg",
|
||||||
|
title: __("Subscribe to Feed"),
|
||||||
|
style: "width: 600px",
|
||||||
|
execute: function() {
|
||||||
|
if (this.validate()) {
|
||||||
|
console.log(dojo.objectToQuery(this.attr('value')));
|
||||||
|
|
||||||
|
var feed_url = this.attr('value').feed;
|
||||||
|
|
||||||
|
notify_progress(__("Subscribing to feed..."), true);
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: dojo.objectToQuery(this.attr('value')),
|
||||||
|
onComplete: function(transport) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (!transport.responseXML) {
|
||||||
|
console.log(transport.responseText);
|
||||||
|
alert(__("Server error while trying to subscribe to specified feed."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = transport.responseXML.getElementsByTagName('result')[0];
|
||||||
|
var rc = parseInt(result.getAttribute('code'));
|
||||||
|
|
||||||
|
notify('');
|
||||||
|
|
||||||
|
console.log("GOT RC: " + rc);
|
||||||
|
|
||||||
|
switch (rc) {
|
||||||
|
case 1:
|
||||||
|
dialog.hide();
|
||||||
|
notify_info(__("Subscribed to %s").replace("%s", feed_url));
|
||||||
|
|
||||||
|
if (inPreferences()) {
|
||||||
|
updateFeedList();
|
||||||
|
} else {
|
||||||
|
setTimeout('updateFeedList(false, false)', 50);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
alert(__("Specified URL seems to be invalid."));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
alert(__("Specified URL doesn't seem to contain any feeds."));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
notify_progress("Searching for feed urls...", true);
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: 'op=rpc&subop=extractfeedurls&url=' + param_escape(feed_url),
|
||||||
|
onComplete: function(transport, dialog, feed_url) {
|
||||||
|
|
||||||
|
if (!transport.responseXML) {
|
||||||
|
console.log(transport.responseText);
|
||||||
|
alert(__("Server error while trying to query feed URLs."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notify('');
|
||||||
|
|
||||||
|
var result = transport.responseXML.getElementsByTagName('urls')[0];
|
||||||
|
var feeds = JSON.parse(result.firstChild.nodeValue);
|
||||||
|
|
||||||
|
console.log(transport.responseText);
|
||||||
|
|
||||||
|
var select = dijit.byId("feedDlg_feedContainerSelect");
|
||||||
|
|
||||||
|
while (select.getOptions().length > 0)
|
||||||
|
select.removeOption(0);
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
for (var feedUrl in feeds) {
|
||||||
|
select.addOption({value: feedUrl, label: feeds[feedUrl]});
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (count > 5) count = 5;
|
||||||
|
// select.size = count;
|
||||||
|
|
||||||
|
Effect.Appear('feedDlg_feedsContainer', {duration : 0.5});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
alert(__("Couldn't download the specified URL."));
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
alert(__("You are already subscribed to this feed."));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("subscribeToFeed", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
} });
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
href: query});
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("quickAddFeed", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function quickAddFilter() {
|
function quickAddFilter() {
|
||||||
|
@ -1239,7 +1138,7 @@ function unsubscribeFeed(feed_id, title) {
|
||||||
parameters: query,
|
parameters: query,
|
||||||
onComplete: function(transport) {
|
onComplete: function(transport) {
|
||||||
|
|
||||||
closeInfoBox();
|
if (dijit.byId("feedEditDlg")) dijit.byId("feedEditDlg").hide();
|
||||||
|
|
||||||
if (inPreferences()) {
|
if (inPreferences()) {
|
||||||
updateFeedList();
|
updateFeedList();
|
||||||
|
@ -1603,4 +1502,133 @@ function editFeed(feed, event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function feedBrowser() {
|
||||||
|
try {
|
||||||
|
var query = "backend.php?op=dlg&id=feedBrowser";
|
||||||
|
|
||||||
|
if (dijit.byId("feedAddDlg"))
|
||||||
|
dijit.byId("feedAddDlg").hide();
|
||||||
|
|
||||||
|
if (dijit.byId("feedBrowserDlg"))
|
||||||
|
dijit.byId("feedBrowserDlg").destroyRecursive();
|
||||||
|
|
||||||
|
var dialog = new dijit.Dialog({
|
||||||
|
id: "feedBrowserDlg",
|
||||||
|
title: __("More Feeds"),
|
||||||
|
style: "width: 600px",
|
||||||
|
getSelectedFeeds: function() {
|
||||||
|
var list = $$("#browseFeedList li[id*=FBROW]");
|
||||||
|
var selected = new Array();
|
||||||
|
|
||||||
|
list.each(function(child) {
|
||||||
|
var id = child.id.replace("FBROW-", "");
|
||||||
|
|
||||||
|
if (child.hasClassName('Selected')) {
|
||||||
|
selected.push(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return selected;
|
||||||
|
},
|
||||||
|
subscribe: function() {
|
||||||
|
var selected = this.getSelectedFeeds();
|
||||||
|
var mode = this.attr('value').mode;
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
console.log(query);
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: query,
|
||||||
|
onComplete: function(transport) {
|
||||||
|
|
||||||
|
var nf = transport.responseXML.getElementsByTagName('num-feeds')[0];
|
||||||
|
var nf_value = nf.getAttribute("value");
|
||||||
|
|
||||||
|
notify_info(__("Subscribed to %d feed(s).").replace("%d", nf_value));
|
||||||
|
|
||||||
|
if (inPreferences()) {
|
||||||
|
updateFeedList();
|
||||||
|
} else {
|
||||||
|
setTimeout('updateFeedList(false, false)', 50);
|
||||||
|
}
|
||||||
|
} });
|
||||||
|
|
||||||
|
} else {
|
||||||
|
alert(__("No feeds are selected."));
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
update: function() {
|
||||||
|
var query = dojo.objectToQuery(dialog.attr('value'));
|
||||||
|
|
||||||
|
Element.show('feed_browser_spinner');
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: query,
|
||||||
|
onComplete: function(transport) {
|
||||||
|
notify('');
|
||||||
|
|
||||||
|
Element.hide('feed_browser_spinner');
|
||||||
|
|
||||||
|
var c = $("browseFeedList");
|
||||||
|
var r = transport.responseXML.getElementsByTagName("content")[0];
|
||||||
|
var nr = transport.responseXML.getElementsByTagName("num-results")[0];
|
||||||
|
var mode = transport.responseXML.getElementsByTagName("mode")[0];
|
||||||
|
|
||||||
|
if (c && r) {
|
||||||
|
c.innerHTML = r.firstChild.nodeValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
dojo.parser.parse("browseFeedList");
|
||||||
|
|
||||||
|
if (parseInt(mode.getAttribute("value")) == 2) {
|
||||||
|
Element.show(dijit.byId('feed_archive_remove').domNode);
|
||||||
|
} else {
|
||||||
|
Element.hide(dijit.byId('feed_archive_remove').domNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
} });
|
||||||
|
},
|
||||||
|
removeFromArchive: function() {
|
||||||
|
var selected = this.getSelectedFeeds();
|
||||||
|
|
||||||
|
if (selected.length > 0) {
|
||||||
|
|
||||||
|
var pr = __("Remove selected feeds from the archive? Feeds with stored articles will not be removed.");
|
||||||
|
|
||||||
|
if (confirm(pr)) {
|
||||||
|
Element.show('feed_browser_spinner');
|
||||||
|
|
||||||
|
var query = "?op=rpc&subop=remarchived&ids=" +
|
||||||
|
param_escape(selected.toString());;
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: query,
|
||||||
|
onComplete: function(transport) {
|
||||||
|
dialog.update();
|
||||||
|
} });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
execute: function() {
|
||||||
|
if (this.validate()) {
|
||||||
|
this.subscribe();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
href: query});
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("editFeed", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -240,109 +240,101 @@
|
||||||
|
|
||||||
if ($id == "quickAddFeed") {
|
if ($id == "quickAddFeed") {
|
||||||
|
|
||||||
print "<title>".__('Subscribe to Feed')."</title>";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
|
||||||
print "<content><![CDATA[";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"addfeed\">";
|
||||||
|
|
||||||
print "<form id='feed_add_form' onsubmit='return false'>";
|
|
||||||
|
|
||||||
print "<input type=\"hidden\" name=\"op\" value=\"rpc\">";
|
|
||||||
print "<input type=\"hidden\" name=\"subop\" value=\"addfeed\">";
|
|
||||||
//print "<input type=\"hidden\" name=\"from\" value=\"tt-rss\">";
|
|
||||||
|
|
||||||
print "<div class=\"dlgSec\">".__("Feed")."</div>";
|
print "<div class=\"dlgSec\">".__("Feed")."</div>";
|
||||||
print "<div class=\"dlgSecCont\">";
|
print "<div class=\"dlgSecCont\">";
|
||||||
|
|
||||||
print __("URL:") . " ";
|
print "<input style=\"font-size : 16px; width : 20em;\"
|
||||||
|
placeHolder=\"".__("Feed URL")."\"
|
||||||
print "<input size=\"40\"
|
dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" name=\"feed\" id=\"feedDlg_feedUrl\">";
|
||||||
onkeypress=\"return filterCR(event, subscribeToFeed)\"
|
|
||||||
name=\"feed\" id=\"feed_url\">";
|
|
||||||
|
|
||||||
print "<br/>";
|
print "<br/>";
|
||||||
|
|
||||||
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
if (get_pref($link, 'ENABLE_FEED_CATS')) {
|
||||||
print __('Place in category:') . " ";
|
print __('Place in category:') . " ";
|
||||||
print_feed_cat_select($link, "cat");
|
print_feed_cat_select($link, "cat", false, 'dojoType="dijit.form.Select"');
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</div>";
|
print "</div>";
|
||||||
|
|
||||||
print '<div id="fadd_feeds_container" style="display:none">
|
print '<div id="feedDlg_feedsContainer" style="display : none">
|
||||||
|
|
||||||
<div class="dlgSec">' . __('Available feeds') . '</div>
|
<div class="dlgSec">' . __('Available feeds') . '</div>
|
||||||
<div class="dlgSecCont">'
|
<div class="dlgSecCont">'.
|
||||||
|
'<select id="feedDlg_feedContainerSelect"
|
||||||
|
dojoType="dijit.form.Select" size="3">
|
||||||
|
<script type="dojo/method" event="onChange" args="value">
|
||||||
|
dijit.byId("feedDlg_feedUrl").attr("value", value);
|
||||||
|
</script>
|
||||||
|
</select>'.
|
||||||
|
'</div></div>';
|
||||||
|
|
||||||
. ' <select name="feed" id="faad_feeds_container_select" size="3"></select>'
|
print "<div id='feedDlg_loginContainer' style='display : none'>
|
||||||
. '</div></div>';
|
|
||||||
|
|
||||||
print "<div id='fadd_login_container' style='display:none'>
|
|
||||||
|
|
||||||
<div class=\"dlgSec\">".__("Authentication")."</div>
|
<div class=\"dlgSec\">".__("Authentication")."</div>
|
||||||
<div class=\"dlgSecCont\">".
|
<div class=\"dlgSecCont\">".
|
||||||
|
|
||||||
__('Login:') . " <input name='login' size=\"20\"
|
" <input dojoType=\"dijit.form.TextBox\" name='login'\"
|
||||||
onkeypress=\"return filterCR(event, subscribeToFeed)\"> ".
|
placeHolder=\"".__("Login")."\"
|
||||||
__('Password:') . "<input type='password'
|
style=\"width : 10em;\"> ".
|
||||||
name='pass' size=\"20\"
|
" <input
|
||||||
onkeypress=\"return filterCR(event, subscribeToFeed)\">
|
placeHolder=\"".__("Password")."\"
|
||||||
|
dojoType=\"dijit.form.TextBox\" type='password'
|
||||||
|
style=\"width : 10em;\" name='pass'\">
|
||||||
</div></div>";
|
</div></div>";
|
||||||
|
|
||||||
|
|
||||||
print "<div style=\"clear : both\">
|
print "<div style=\"clear : both\">
|
||||||
<input type=\"checkbox\" id=\"fadd_login_check\"
|
<input type=\"checkbox\" dojoType=\"dijit.form.CheckBox\" id=\"feedDlg_loginCheck\"
|
||||||
onclick='checkboxToggleElement(this, \"fadd_login_container\")'>
|
onclick='checkboxToggleElement(this, \"feedDlg_loginContainer\")'>
|
||||||
<label for=\"fadd_login_check\">".
|
<label for=\"feedDlg_loginCheck\">".
|
||||||
__('This feed requires authentication.')."</div>";
|
__('This feed requires authentication.')."</div>";
|
||||||
|
|
||||||
print "</form>";
|
print "</form>";
|
||||||
|
|
||||||
print "<div class=\"dlgButtons\">
|
print "<div class=\"dlgButtons\">
|
||||||
<button class=\"button\" id=\"fadd_submit_btn\"
|
<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').execute()\">".__('Subscribe')."</button>
|
||||||
onclick=\"return subscribeToFeed()\">".__('Subscribe')."</button>
|
<button dojoType=\"dijit.form.Button\" onclick=\"return feedBrowser()\">".__('More feeds')."</button>
|
||||||
<button onclick=\"return displayDlg('feedBrowser')\">".__('More feeds')."</button>
|
<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').hide()\">".__('Cancel')."</button>
|
||||||
<button onclick=\"return closeInfoBox()\">".__('Cancel')."</button></div>";
|
</div>";
|
||||||
|
|
||||||
print "]]></content>";
|
|
||||||
|
|
||||||
//return;
|
//return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($id == "feedBrowser") {
|
if ($id == "feedBrowser") {
|
||||||
|
|
||||||
print "<title>".__('Feed Browser')."</title>";
|
|
||||||
|
|
||||||
print "<content><![CDATA[";
|
|
||||||
|
|
||||||
$browser_search = db_escape_string($_REQUEST["search"]);
|
$browser_search = db_escape_string($_REQUEST["search"]);
|
||||||
|
|
||||||
print "<form onsubmit='return false;' display='inline'
|
# print "<form onsubmit='return false;' display='inline'
|
||||||
name='feed_browser' id='feed_browser'>";
|
# name='feed_browser' id='feed_browser'>";
|
||||||
|
|
||||||
print "<input type=\"hidden\" name=\"op\" value=\"rpc\">";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
|
||||||
print "<input type=\"hidden\" name=\"subop\" value=\"updateFeedBrowser\">";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"updateFeedBrowser\">";
|
||||||
|
|
||||||
print "<div dojoType=\"dijit.Toolbar\">
|
print "<div dojoType=\"dijit.Toolbar\">
|
||||||
<div style='float : right'>
|
<div style='float : right'>
|
||||||
<img style='display : none'
|
<img style='display : none'
|
||||||
id='feed_browser_spinner' src='".
|
id='feed_browser_spinner' src='".
|
||||||
theme_image($link, 'images/indicator_white.gif')."'>
|
theme_image($link, 'images/indicator_white.gif')."'>
|
||||||
<input name=\"search\" size=\"20\" type=\"search\"
|
<input name=\"search\" dojoType=\"dijit.form.TextBox\" size=\"20\" type=\"search\"
|
||||||
onchange=\"javascript:updateFeedBrowser()\" value=\"$browser_search\">
|
onchange=\"dijit.byId('feedBrowserDlg').update()\" value=\"$browser_search\">
|
||||||
<button onclick=\"javascript:updateFeedBrowser()\">".__('Search')."</button>
|
<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').update()\">".__('Search')."</button>
|
||||||
</div>";
|
</div>";
|
||||||
|
|
||||||
print " <select name=\"mode\" onchange=\"updateFeedBrowser()\">
|
print " <select name=\"mode\" dojoType=\"dijit.form.Select\" onchange=\"dijit.byId('feedBrowserDlg').update()\">
|
||||||
<option value='1'>" . __('Popular feeds') . "</option>
|
<option value='1'>" . __('Popular feeds') . "</option>
|
||||||
<option value='2'>" . __('Feed archive') . "</option>
|
<option value='2'>" . __('Feed archive') . "</option>
|
||||||
</select> ";
|
</select> ";
|
||||||
|
|
||||||
print __("limit:");
|
print __("limit:");
|
||||||
|
|
||||||
print " <select name=\"limit\" onchange='updateFeedBrowser()'>";
|
print " <select dojoType=\"dijit.form.Select\" name=\"limit\" onchange=\"dijit.byId('feedBrowserDlg').update()\">";
|
||||||
|
|
||||||
foreach (array(25, 50, 100, 200) as $l) {
|
foreach (array(25, 50, 100, 200) as $l) {
|
||||||
$issel = ($l == $limit) ? "selected" : "";
|
$issel = ($l == $limit) ? "selected=\"1\"" : "";
|
||||||
print "<option $issel>$l</option>";
|
print "<option $issel value=\"$l\">$l</option>";
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</select> ";
|
print "</select> ";
|
||||||
|
@ -356,12 +348,10 @@
|
||||||
print "</ul>";
|
print "</ul>";
|
||||||
|
|
||||||
print "<div align='center'>
|
print "<div align='center'>
|
||||||
<button onclick=\"feedBrowserSubscribe()\">".__('Subscribe')."</button>
|
<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').execute()\">".__('Subscribe')."</button>
|
||||||
<button style='display : none' id='feed_archive_remove' onclick=\"feedArchiveRemove()\">".__('Remove')."</button>
|
<button dojoType=\"dijit.form.Button\" style='display : none' id='feed_archive_remove' onclick=\"dijit.byId('feedBrowserDlg').removeFromArchive()\">".__('Remove')."</button>
|
||||||
<button onclick=\"closeInfoBox()\" >".__('Cancel')."</button></div>";
|
<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').hide()\" >".__('Cancel')."</button></div>";
|
||||||
|
|
||||||
print "]]></content>";
|
|
||||||
//return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($id == "search") {
|
if ($id == "search") {
|
||||||
|
|
|
@ -265,6 +265,7 @@
|
||||||
/* Title */
|
/* Title */
|
||||||
|
|
||||||
print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
|
print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
|
||||||
|
placeHolder=\"".__("Feed Title")."\"
|
||||||
style=\"font-size : 16px; width: 20em\" name=\"title\" value=\"$title\">";
|
style=\"font-size : 16px; width: 20em\" name=\"title\" value=\"$title\">";
|
||||||
|
|
||||||
/* Feed URL */
|
/* Feed URL */
|
||||||
|
@ -277,6 +278,7 @@
|
||||||
|
|
||||||
print __('URL:') . " ";
|
print __('URL:') . " ";
|
||||||
print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
|
print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
|
||||||
|
placeHolder=\"".__("Feed URL")."\"
|
||||||
regExp='^(http|https)://.*' style=\"width : 20em\"
|
regExp='^(http|https)://.*' style=\"width : 20em\"
|
||||||
name=\"feed_url\" value=\"$feed_url\">";
|
name=\"feed_url\" value=\"$feed_url\">";
|
||||||
|
|
||||||
|
@ -339,21 +341,23 @@
|
||||||
|
|
||||||
$auth_login = htmlspecialchars(db_fetch_result($result, 0, "auth_login"));
|
$auth_login = htmlspecialchars(db_fetch_result($result, 0, "auth_login"));
|
||||||
|
|
||||||
print "<table>";
|
# print "<table>";
|
||||||
|
|
||||||
print "<tr><td>" . __('Login:') . "</td><td>";
|
# print "<tr><td>" . __('Login:') . "</td><td>";
|
||||||
|
|
||||||
print "<input dojoType=\"dijit.form.TextBox\"
|
print "<input dojoType=\"dijit.form.TextBox\"
|
||||||
name=\"auth_login\" value=\"$auth_login\">";
|
placeHolder=\"".__("Login")."\"
|
||||||
|
name=\"auth_login\" value=\"$auth_login\"><br/>";
|
||||||
|
|
||||||
print "</tr><tr><td>" . __("Password:") . "</td><td>";
|
# print "</tr><tr><td>" . __("Password:") . "</td><td>";
|
||||||
|
|
||||||
$auth_pass = htmlspecialchars(db_fetch_result($result, 0, "auth_pass"));
|
$auth_pass = htmlspecialchars(db_fetch_result($result, 0, "auth_pass"));
|
||||||
|
|
||||||
print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
|
print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
|
||||||
|
placeHolder=\"".__("Password")."\"
|
||||||
value=\"$auth_pass\">";
|
value=\"$auth_pass\">";
|
||||||
|
|
||||||
print "</td></tr></table>";
|
# print "</td></tr></table>";
|
||||||
|
|
||||||
print "</div>";
|
print "</div>";
|
||||||
print "<div class=\"dlgSec\">".__("Options")."</div>";
|
print "<div class=\"dlgSec\">".__("Options")."</div>";
|
||||||
|
@ -613,7 +617,7 @@
|
||||||
<input type=\"submit\" class=\"button\"
|
<input type=\"submit\" class=\"button\"
|
||||||
onclick=\"return feedsEditSave()\" value=\"".__('Save')."\">
|
onclick=\"return feedsEditSave()\" value=\"".__('Save')."\">
|
||||||
<input type='submit' class='button'
|
<input type='submit' class='button'
|
||||||
onclick=\"return feedEditCancel()\" value=\"".__('Cancel')."\">
|
onclick=\"return closeInfoBox()\" value=\"".__('Cancel')."\">
|
||||||
</div>";
|
</div>";
|
||||||
|
|
||||||
print "]]></content></dlg>";
|
print "]]></content></dlg>";
|
||||||
|
@ -1411,7 +1415,7 @@
|
||||||
|
|
||||||
$check_box = "<input onclick='toggleSelectListRow2(this)'
|
$check_box = "<input onclick='toggleSelectListRow2(this)'
|
||||||
dojoType=\"dijit.form.CheckBox\"
|
dojoType=\"dijit.form.CheckBox\"
|
||||||
type=\"checkbox\" id=\"FBCHK-" . $details["id"] . "\">";
|
type=\"checkbox\" \">";
|
||||||
|
|
||||||
$class = ($feedctr % 2) ? "even" : "odd";
|
$class = ($feedctr % 2) ? "even" : "odd";
|
||||||
|
|
||||||
|
@ -1449,8 +1453,8 @@
|
||||||
$feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
|
$feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
|
||||||
}
|
}
|
||||||
|
|
||||||
$check_box = "<input onclick='toggleSelectListRow(this)' class='feedBrowseCB'
|
$check_box = "<input onclick='toggleSelectListRow2(this)' dojoType=\"dijit.form.CheckBox\"
|
||||||
type=\"checkbox\" id=\"FBCHK-" . $line["id"] . "\">";
|
type=\"checkbox\">";
|
||||||
|
|
||||||
$class = ($feedctr % 2) ? "even" : "odd";
|
$class = ($feedctr % 2) ? "even" : "odd";
|
||||||
|
|
||||||
|
|
36
prefs.js
36
prefs.js
|
@ -147,38 +147,6 @@ function updateUsersList(sort_key) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addFeed() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
var link = $("fadd_link");
|
|
||||||
|
|
||||||
if (link.value.length == 0) {
|
|
||||||
alert(__("Error: No feed URL given."));
|
|
||||||
} else if (!isValidURL(link.value)) {
|
|
||||||
alert(__("Error: Invalid feed URL."));
|
|
||||||
} else {
|
|
||||||
notify_progress("Adding feed...");
|
|
||||||
|
|
||||||
var query = "?op=pref-feeds&subop=add&from=tt-rss&feed_url=" +
|
|
||||||
param_escape(link.value);
|
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
|
||||||
parameters: query,
|
|
||||||
onComplete: function(transport) {
|
|
||||||
feedlist_callback2(transport);
|
|
||||||
} });
|
|
||||||
|
|
||||||
link.value = "";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("addFeed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function addPrefProfile() {
|
function addPrefProfile() {
|
||||||
|
|
||||||
var profile = $("fadd_profile");
|
var profile = $("fadd_profile");
|
||||||
|
@ -1212,7 +1180,7 @@ function pref_hotkey_handler(e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keycode == 84 && shift_key) { // T
|
if (keycode == 84 && shift_key) { // T
|
||||||
displayDlg('feedBrowser');
|
feedBrowser();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1564,6 +1532,8 @@ function removeFilter(id, title) {
|
||||||
var ok = confirm(msg);
|
var ok = confirm(msg);
|
||||||
|
|
||||||
if (ok) {
|
if (ok) {
|
||||||
|
|
||||||
|
if (dijit.byId("filterEditDlg"))
|
||||||
dijit.byId("filterEditDlg").hide();
|
dijit.byId("filterEditDlg").hide();
|
||||||
|
|
||||||
notify_progress("Removing filter...");
|
notify_progress("Removing filter...");
|
||||||
|
|
|
@ -749,10 +749,6 @@ div.subscribers {
|
||||||
float : right;
|
float : right;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.feedBrowseCB {
|
|
||||||
margin-right : 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.browserDetails {
|
div.browserDetails {
|
||||||
margin : 5px 5px 5px 5px;
|
margin : 5px 5px 5px 5px;
|
||||||
padding : 5px;
|
padding : 5px;
|
||||||
|
|
|
@ -283,6 +283,7 @@ function init() {
|
||||||
dojo.require("dijit.Toolbar");
|
dojo.require("dijit.Toolbar");
|
||||||
dojo.require("dijit.ProgressBar");
|
dojo.require("dijit.ProgressBar");
|
||||||
dojo.require("dijit.Menu");
|
dojo.require("dijit.Menu");
|
||||||
|
dojo.require("dojo.parser");
|
||||||
|
|
||||||
dojo.registerModulePath("fox", "../..");
|
dojo.registerModulePath("fox", "../..");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue