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

203
prefs.js
View File

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