prefs: some async work (2)

This commit is contained in:
Andrew Dolgov 2009-01-24 07:59:02 +01:00
parent 350468d018
commit a796bfc18a
1 changed files with 108 additions and 121 deletions

229
prefs.js
View File

@ -55,36 +55,12 @@ function replace_pubkey_callback() {
function feedlist_callback() {
if (xmlhttp.readyState == 4) {
try {
var container = document.getElementById('prefContent');
container.innerHTML=xmlhttp.responseText;
selectTab("feedConfig", true);
if (caller_subop) {
var tuple = caller_subop.split(":");
if (tuple[0] == 'editFeed') {
window.setTimeout('editFeed('+tuple[1]+')', 100);
}
caller_subop = false;
}
if (typeof correctPNG != 'undefined') {
correctPNG();
}
notify("");
remove_splash();
} catch (e) {
exception_error("feedlist_callback", e);
}
return feedlist_callback2(xmlhttp);
}
}
/* stub for subscription dialog */
function dlg_frefresh_callback(transport) {
try {
function feedlist_callback2(transport) {
try {
var container = document.getElementById('prefContent');
container.innerHTML=transport.responseText;
selectTab("feedConfig", true);
@ -101,10 +77,17 @@ function dlg_frefresh_callback(transport) {
correctPNG();
}
notify("");
} catch (e) {
exception_error("feedlist_callback", e);
}
remove_splash();
} catch (e) {
exception_error("feedlist_callback2", e);
}
}
/* stub for subscription dialog */
function dlg_frefresh_callback(transport) {
return feedlist_callback2(transport);
}
function filterlist_callback() {
@ -119,14 +102,13 @@ function filterlist_callback() {
}
}
function labellist_callback() {
function labellist_callback2(transport) {
try {
var container = document.getElementById('prefContent');
if (xmlhttp.readyState == 4) {
closeInfoBox();
container.innerHTML=xmlhttp.responseText;
container.innerHTML=transport.responseText;
if (document.getElementById("prefLabelList")) {
var elems = document.getElementById("prefLabelList").getElementsByTagName("SPAN");
@ -147,10 +129,9 @@ function labellist_callback() {
}
notify("");
remove_splash();
}
} catch (e) {
exception_error("labellist_callback", e);
exception_error("labellist_callback2", e);
}
}
@ -304,30 +285,27 @@ function addLabel() {
try {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
var caption = prompt(__("Please enter label caption:"), "");
if (caption == null) {
return false;
}
if (caption == "") {
alert(__("Can't create label: missing caption."));
return false;
}
// we can be called from some other tab
active_tab = "labelConfig";
var query = "caption=" + param_escape(caption);
xmlhttp.open("GET", "backend.php?op=pref-labels&subop=add&" + query, true);
xmlhttp.onreadystatechange=infobox_submit_callback;
xmlhttp.send(null);
var caption = prompt(__("Please enter label caption:"), "");
if (caption == null) {
return false;
}
if (caption == "") {
alert(__("Can't create label: missing caption."));
return false;
}
// we can be called from some other tab
active_tab = "labelConfig";
query = "backend.php?op=pref-labels&subop=add&caption=" +
param_escape(caption);
new Ajax.Request(query, {
onComplete: function(transport) {
infobox_submit_callback2(transport);
} });
} catch (e) {
exception_error("addLabel", e);
@ -336,27 +314,31 @@ function addLabel() {
function addFeed() {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
try {
var link = document.getElementById("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...");
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=add&from=tt-rss&feed_url=" +
param_escape(link.value), true);
xmlhttp.onreadystatechange=feedlist_callback;
xmlhttp.send(null);
link.value = "";
var link = document.getElementById("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 = "backend.php?op=pref-feeds&subop=add&from=tt-rss&feed_url=" +
param_escape(link.value);
new Ajax.Request(query, {
onComplete: function(transport) {
feedlist_callback2(transport);
} });
link.value = "";
}
} catch (e) {
exception_error("addFeed", e);
}
}
@ -515,11 +497,6 @@ function getSelectedFeedCats() {
function removeSelectedLabels() {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
var sel_rows = getSelectedLabels();
if (sel_rows.length > 0) {
@ -529,10 +506,14 @@ function removeSelectedLabels() {
if (ok) {
notify_progress("Removing selected labels...");
xmlhttp.open("GET", "backend.php?op=pref-labels&subop=remove&ids="+
param_escape(sel_rows.toString()), true);
xmlhttp.onreadystatechange=labellist_callback;
xmlhttp.send(null);
var query = "backend.php?op=pref-labels&subop=remove&ids="+
param_escape(sel_rows.toString());
new Ajax.Request(query, {
onComplete: function(transport) {
labellist_callback2(transport);
} });
}
} else {
alert(__("No labels are selected."));
@ -601,31 +582,33 @@ function removeSelectedFilters() {
function removeSelectedFeeds() {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
try {
var sel_rows = getSelectedFeeds();
if (sel_rows.length > 0) {
var ok = confirm(__("Unsubscribe from selected feeds?"));
if (ok) {
notify_progress("Unsubscribing from selected feeds...");
var sel_rows = getSelectedFeeds();
xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=remove&ids="+
param_escape(sel_rows.toString()), true);
xmlhttp.onreadystatechange=feedlist_callback;
xmlhttp.send(null);
if (sel_rows.length > 0) {
var ok = confirm(__("Unsubscribe from selected feeds?"));
if (ok) {
notify_progress("Unsubscribing from selected feeds...");
var query = "backend.php?op=pref-feeds&subop=remove&ids="+
param_escape(sel_rows.toString());
new Ajax.Request(query, {
onComplete: function(transport) {
feedlist_callback2(transport);
} });
}
} else {
alert(__("No feeds are selected."));
}
} else {
alert(__("No feeds are selected."));
} catch (e) {
exception_error("removeSelectedFeeds", e);
}
return false;
@ -1064,20 +1047,24 @@ function updateFilterList(sort_key) {
function updateLabelList(sort_key) {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
try {
var label_search = document.getElementById("label_search");
var search = "";
if (label_search) { search = label_search.value; }
var query = "backend.php?op=pref-labels&sort=" +
param_escape(sort_key) +
"&search=" + param_escape(search);
new Ajax.Request(query, {
onComplete: function(transport) {
labellist_callback2(transport);
} });
} catch (e) {
exception_error("updateLabelList", e);
}
var label_search = document.getElementById("label_search");
var search = "";
if (label_search) { search = label_search.value; }
xmlhttp.open("GET", "backend.php?op=pref-labels&sort=" +
param_escape(sort_key) +
"&search=" + param_escape(search), true);
xmlhttp.onreadystatechange=labellist_callback;
xmlhttp.send(null);
}
function updatePrefsList() {