X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=prefs.js;h=fc7d1db3673756c5dea12c30a8cef94e867a44ea;hb=a8caa4c7d30925f270a6ed6e279e52da96fad4b4;hp=27367d71255bfddf081cb8009b6924104d686ec5;hpb=60715b53d58495636fe593bca12faaa1f6ec8a75;p=tt-rss.git diff --git a/prefs.js b/prefs.js index 27367d71..fc7d1db3 100644 --- a/prefs.js +++ b/prefs.js @@ -1,61 +1,40 @@ -var xmlhttp = false; - var active_feed_cat = false; var active_tab = false; -var xmlhttp = Ajax.getTransport(); - var init_params = new Array(); var caller_subop = false; var sanity_check_done = false; var hotkey_prefix = false; -function infobox_callback() { - if (xmlhttp.readyState == 4) { - infobox_callback2(xmlhttp); - } -} - -function infobox_submit_callback() { - if (xmlhttp.readyState == 4) { - infobox_submit_callback2(xmlhttp); - } -} - +var color_picker_active = false; +var selection_disabled = false; +var mouse_is_down = false; -function replace_pubkey_callback() { - if (xmlhttp.readyState == 4) { - try { - var link = document.getElementById("pubGenAddress"); +function replace_pubkey_callback(transport) { + try { + var link = $("pubGenAddress"); - if (xmlhttp.responseXML) { + if (transport.responseXML) { - var new_link = xmlhttp.responseXML.getElementsByTagName("link")[0]; + var new_link = transport.responseXML.getElementsByTagName("link")[0]; - if (new_link) { - link.href = new_link.firstChild.nodeValue; - //link.innerHTML = new_link.firstChild.nodeValue; + if (new_link) { + link.href = new_link.firstChild.nodeValue; + //link.innerHTML = new_link.firstChild.nodeValue; - new Effect.Highlight(link); - - notify_info("Published feed URL changed."); - } else { - notify_error("Could not change feed URL."); - } + new Effect.Highlight(link); + notify_info("Published feed URL changed."); } else { notify_error("Could not change feed URL."); } - } catch (e) { - exception_error("replace_pubkey_callback", e); - } - } -} -function feedlist_callback() { - if (xmlhttp.readyState == 4) { - return feedlist_callback2(xmlhttp); + } else { + notify_error("Could not change feed URL."); + } + } catch (e) { + exception_error("replace_pubkey_callback", e); } } @@ -63,7 +42,7 @@ function feedlist_callback2(transport) { try { - var container = document.getElementById('prefContent'); + var container = $('prefContent'); container.innerHTML=transport.responseText; selectTab("feedConfig", true); @@ -93,7 +72,7 @@ function dlg_frefresh_callback(transport) { } function filterlist_callback2(transport) { - var container = document.getElementById('prefContent'); + var container = $('prefContent'); container.innerHTML=transport.responseText; if (typeof correctPNG != 'undefined') { correctPNG(); @@ -102,10 +81,26 @@ function filterlist_callback2(transport) { remove_splash(); } +function init_label_inline_editor() { + try { + if ($("prefLabelList")) { + var elems = $("prefLabelList").getElementsByTagName("SPAN"); + + for (var i = 0; i < elems.length; i++) { + if (elems[i].id && elems[i].id.match("LILT-")) { + + var id = elems[i].id.replace("LILT-", ""); + + new Ajax.InPlaceEditor(elems[i], + 'backend.php?op=pref-labels&subop=save&id=' + id, + {cols: 20, rows: 1}); + + } + } + } -function filterlist_callback() { - if (xmlhttp.readyState == 4) { - filterlist_callback2(xmlhttp); + } catch (e) { + exception_error("init_label_inline_editor", e); } } @@ -113,23 +108,11 @@ function labellist_callback2(transport) { try { - var container = document.getElementById('prefContent'); + var container = $('prefContent'); closeInfoBox(); container.innerHTML=transport.responseText; - - if (document.getElementById("prefLabelList")) { - var elems = document.getElementById("prefLabelList").getElementsByTagName("SPAN"); - for (var i = 0; i < elems.length; i++) { - if (elems[i].id && elems[i].id.match("LILT-")) { - - var id = elems[i].id.replace("LILT-", ""); - new Ajax.InPlaceEditor(elems[i], - 'backend.php?op=pref-labels&subop=save&id=' + id, - {cols: 20, rows: 1}); - } - } - } + init_label_inline_editor(); if (typeof correctPNG != 'undefined') { correctPNG(); @@ -142,86 +125,67 @@ function labellist_callback2(transport) { } } -function feed_browser_callback() { - var container = document.getElementById('prefContent'); - if (xmlhttp.readyState == 4) { - container.innerHTML=xmlhttp.responseText; - notify(""); - remove_splash(); - } -} - -function userlist_callback() { - var container = document.getElementById('prefContent'); - if (xmlhttp.readyState == 4) { - container.innerHTML=xmlhttp.responseText; - notify(""); - remove_splash(); +function userlist_callback2(transport) { + try { + var container = $('prefContent'); + if (transport.readyState == 4) { + container.innerHTML=transport.responseText; + notify(""); + remove_splash(); + } + } catch (e) { + exception_error("userlist_callback2", e); } } -function prefslist_callback() { - var container = document.getElementById('prefContent'); - if (xmlhttp.readyState == 4) { - container.innerHTML=xmlhttp.responseText; +function prefslist_callback2(transport) { + try { + var container = $('prefContent'); + container.innerHTML=transport.responseText; notify(""); remove_splash(); + } catch (e) { + exception_error("prefslist_callback2", e); } } -function gethelp_callback() { - var container = document.getElementById('prefHelpBox'); - if (xmlhttp.readyState == 4) { - - container.innerHTML = xmlhttp.responseText; - container.style.display = "block"; - - } -} - -function notify_callback() { - if (xmlhttp.readyState == 4) { - notify_callback2(xmlhttp); - } -} - function notify_callback2(transport) { notify_info(transport.responseText); } -function prefs_reset_callback() { - if (xmlhttp.readyState == 4) { - notify_info(xmlhttp.responseText); +function prefs_reset_callback2(transport) { + try { + notify_info(transport.responseText); selectTab(); - } + } catch (e) { + exception_error("prefs_reset_callback2", e); + } } -function changepass_callback() { +function changepass_callback2(transport) { try { - if (xmlhttp.readyState == 4) { - if (xmlhttp.responseText.indexOf("ERROR: ") == 0) { - notify_error(xmlhttp.responseText.replace("ERROR: ", "")); + if (transport.responseText.indexOf("ERROR: ") == 0) { + notify_error(transport.responseText.replace("ERROR: ", "")); } else { - notify_info(xmlhttp.responseText); - var warn = document.getElementById("default_pass_warning"); + notify_info(transport.responseText); + var warn = $("default_pass_warning"); if (warn) warn.style.display = "none"; } document.forms['change_pass_form'].reset(); - } } catch (e) { - exception_error("changepass_callback", e); + exception_error("changepass_callback2", e); } } function init_cat_inline_editor() { try { - if (document.getElementById("prefFeedCatList")) { - var elems = document.getElementById("prefFeedCatList").getElementsByTagName("SPAN"); + if ($("prefFeedCatList")) { + var elems = $("prefFeedCatList").getElementsByTagName("SPAN"); for (var i = 0; i < elems.length; i++) { if (elems[i].id && elems[i].id.match("FCATT-")) { @@ -250,11 +214,11 @@ function updateFeedList(sort_key) { try { - var feed_search = document.getElementById("feed_search"); + var feed_search = $("feed_search"); var search = ""; if (feed_search) { search = feed_search.value; } - var slat = document.getElementById("show_last_article_times"); + var slat = $("show_last_article_times"); var slat_checked = false; if (slat) { @@ -277,21 +241,24 @@ function updateFeedList(sort_key) { function updateUsersList(sort_key) { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var user_search = document.getElementById("user_search"); - var search = ""; - if (user_search) { search = user_search.value; } + try { - xmlhttp.open("GET", "backend.php?op=pref-users&sort=" - + param_escape(sort_key) + - "&search=" + param_escape(search), true); - xmlhttp.onreadystatechange=userlist_callback; - xmlhttp.send(null); + var user_search = $("user_search"); + var search = ""; + if (user_search) { search = user_search.value; } + + var query = "backend.php?op=pref-users&sort=" + + param_escape(sort_key) + + "&search=" + param_escape(search); + + new Ajax.Request(query, { + onComplete: function(transport) { + userlist_callback2(transport); + } }); + } catch (e) { + exception_error("updateUsersList", e); + } } function addLabel() { @@ -329,7 +296,7 @@ function addFeed() { try { - var link = document.getElementById("fadd_link"); + var link = $("fadd_link"); if (link.value.length == 0) { alert(__("Error: No feed URL given.")); @@ -358,12 +325,7 @@ function addFeed() { function addFeedCat() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var cat = document.getElementById("fadd_cat"); + var cat = $("fadd_cat"); if (cat.value.length == 0) { alert(__("Can't add category: no name specified.")); @@ -381,31 +343,36 @@ function addFeedCat() { link.value = ""; } - } -function addUser() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } +function addUser() { - var sqlexp = document.getElementById("uadd_box"); + try { - if (sqlexp.value.length == 0) { - alert(__("Can't add user: no login specified.")); - } else { + var login = prompt(__("Please enter login:"), ""); + + if (login == null) { + return false; + } + + if (login == "") { + alert(__("Can't create user: no login specified.")); + return false; + } + notify_progress("Adding user..."); + + var query = "backend.php?op=pref-users&subop=add&login=" + + param_escape(login); + + new Ajax.Request(query, { + onComplete: function(transport) { + userlist_callback2(transport); + } }); - xmlhttp.open("GET", "backend.php?op=pref-users&subop=add&login=" + - param_escape(sqlexp.value), true); - - xmlhttp.onreadystatechange=userlist_callback; - xmlhttp.send(null); - - sqlexp.value = ""; + } catch (e) { + exception_error("addUser", e); } - } function editUser(id) { @@ -537,28 +504,33 @@ function removeSelectedLabels() { function removeSelectedUsers() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var sel_rows = getSelectedUsers(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected users?")); + try { - if (ok) { - notify_progress("Removing selected users..."); + var sel_rows = getSelectedUsers(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected users?")); + + if (ok) { + notify_progress("Removing selected users..."); + + var query = "backend.php?op=pref-users&subop=remove&ids="+ + param_escape(sel_rows.toString()); - xmlhttp.open("GET", "backend.php?op=pref-users&subop=remove&ids="+ - param_escape(sel_rows.toString()), true); - xmlhttp.onreadystatechange=userlist_callback; - xmlhttp.send(null); + new Ajax.Request(query, { + onComplete: function(transport) { + userlist_callback2(transport); + } }); + + } + + } else { + alert(__("No users are selected.")); } - } else { - alert(__("No users are selected.")); + } catch (e) { + exception_error("removeSelectedUsers", e); } return false; @@ -566,27 +538,32 @@ function removeSelectedUsers() { function removeSelectedFilters() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var sel_rows = getSelectedFilters(); - - if (sel_rows.length > 0) { - - var ok = confirm(__("Remove selected filters?")); + try { - if (ok) { - notify_progress("Removing selected filters..."); + var sel_rows = getSelectedFilters(); + + if (sel_rows.length > 0) { + + var ok = confirm(__("Remove selected filters?")); + + if (ok) { + notify_progress("Removing selected filters..."); + + var query = "backend.php?op=pref-filters&subop=remove&ids="+ + param_escape(sel_rows.toString()); - xmlhttp.open("GET", "backend.php?op=pref-filters&subop=remove&ids="+ - param_escape(sel_rows.toString()), true); - xmlhttp.onreadystatechange=filterlist_callback; - xmlhttp.send(null); + new Ajax.Request(query, { + onComplete: function(transport) { + filterlist_callback2(transport); + } }); + + } + } else { + alert(__("No filters are selected.")); } - } else { - alert(__("No filters are selected.")); + + } catch (e) { + exception_error("removeSelectedFilters", e); } return false; @@ -656,11 +633,6 @@ function clearSelectedFeeds() { function purgeSelectedFeeds() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - var sel_rows = getSelectedFeeds(); if (sel_rows.length > 0) { @@ -692,11 +664,6 @@ function purgeSelectedFeeds() { function removeSelectedFeedCats() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - var sel_rows = getSelectedFeedCats(); if (sel_rows.length > 0) { @@ -727,14 +694,9 @@ function removeSelectedFeedCats() { function feedEditCancel() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - try { - document.getElementById("subscribe_to_feed_btn").disabled = false; - document.getElementById("top25_feeds_btn").disabled = false; + $("subscribe_to_feed_btn").disabled = false; + $("top25_feeds_btn").disabled = false; } catch (e) { // this button is not always available, no-op if not found } @@ -773,11 +735,6 @@ function feedEditSave() { function userEditCancel() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - selectPrefRows('user', false); // cleanup feed selection closeInfoBox(); @@ -786,13 +743,8 @@ function userEditCancel() { function filterEditCancel() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - try { - document.getElementById("create_filter_btn").disabled = false; + $("create_filter_btn").disabled = false; selectPrefRows('filter', false); // cleanup feed selection } catch (e) { } @@ -803,59 +755,56 @@ function filterEditCancel() { function userEditSave() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var login = document.forms["user_edit_form"].login.value; + try { - if (login.length == 0) { - alert(__("Login field cannot be blank.")); - return; - } + var login = document.forms["user_edit_form"].login.value; - notify_progress("Saving user..."); - - closeInfoBox(); - - var query = Form.serialize("user_edit_form"); + if (login.length == 0) { + alert(__("Login field cannot be blank.")); + return; + } + + notify_progress("Saving user..."); - xmlhttp.open("GET", "backend.php?" + query, true); - xmlhttp.onreadystatechange=userlist_callback; - xmlhttp.send(null); + closeInfoBox(); + + var query = Form.serialize("user_edit_form"); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + userlist_callback2(transport); + } }); + + } catch (e) { + exception_error("userEditSave", e); + } return false; + } function filterEditSave() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } + try { -/* if (!is_opera()) { - var reg_exp = document.forms["filter_edit_form"].reg_exp.value; + notify_progress("Saving filter..."); - if (reg_exp.length == 0) { - alert("Filter expression field cannot be blank."); - return; - } - } */ - - notify_progress("Saving filter..."); - - var query = Form.serialize("filter_edit_form"); - - closeInfoBox(); + var query = "backend.php?" + Form.serialize("filter_edit_form"); + + closeInfoBox(); + + $("create_filter_btn").disabled = false; - document.getElementById("create_filter_btn").disabled = false; + new Ajax.Request(query, { + onComplete: function(transport) { + filterlist_callback2(transport); + } }); - xmlhttp.open("GET", "backend.php?" + query, true); - xmlhttp.onreadystatechange=filterlist_callback; - xmlhttp.send(null); + } catch (e) { + exception_error("filterEditSave", e); + } return false; } @@ -880,29 +829,40 @@ function editSelectedUser() { } function resetSelectedUserPass() { - var rows = getSelectedUsers(); - if (rows.length == 0) { - alert(__("No users are selected.")); - return; - } - - if (rows.length > 1) { - alert(__("Please select only one user.")); - return; - } - - var ok = confirm(__("Reset password of selected user?")); + try { - if (ok) { - notify_progress("Resetting password for selected user..."); + var rows = getSelectedUsers(); - var id = rows[0]; + if (rows.length == 0) { + alert(__("No users are selected.")); + return; + } + + if (rows.length > 1) { + alert(__("Please select only one user.")); + return; + } + + var ok = confirm(__("Reset password of selected user?")); + + if (ok) { + notify_progress("Resetting password for selected user..."); + + var id = rows[0]; + + var query = "backend.php?op=pref-users&subop=resetPass&id=" + + param_escape(id); - xmlhttp.open("GET", "backend.php?op=pref-users&subop=resetPass&id=" + - param_escape(id), true); - xmlhttp.onreadystatechange=userlist_callback; - xmlhttp.send(null); + new Ajax.Request(query, { + onComplete: function(transport) { + userlist_callback2(transport); + } }); + + } + + } catch (e) { + exception_error("resetSelectedUserPass", e); } } @@ -1009,7 +969,7 @@ function editSelectedFeeds() { function piggie(enable) { if (enable) { debug("I LOVEDED IT!"); - var piggie = document.getElementById("piggie"); + var piggie = $("piggie"); Element.show(piggie); Position.Center(piggie); @@ -1020,7 +980,7 @@ function piggie(enable) { function validateOpmlImport() { - var opml_file = document.getElementById("opml_file"); + var opml_file = $("opml_file"); if (opml_file.value.length == 0) { alert(__("No OPML file to upload.")); @@ -1031,21 +991,24 @@ function validateOpmlImport() { } function updateFilterList(sort_key) { + try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } + var filter_search = $("filter_search"); + var search = ""; + if (filter_search) { search = filter_search.value; } + + var query = "backend.php?op=pref-filters&sort=" + + param_escape(sort_key) + + "&search=" + param_escape(search); - var filter_search = document.getElementById("filter_search"); - var search = ""; - if (filter_search) { search = filter_search.value; } + new Ajax.Request(query, { + onComplete: function(transport) { + filterlist_callback2(transport); + } }); - xmlhttp.open("GET", "backend.php?op=pref-filters&sort=" + - param_escape(sort_key) + - "&search=" + param_escape(search), true); - xmlhttp.onreadystatechange=filterlist_callback; - xmlhttp.send(null); + } catch (e) { + exception_error("updateFilterList", e); + } } @@ -1053,7 +1016,7 @@ function updateLabelList(sort_key) { try { - var label_search = document.getElementById("label_search"); + var label_search = $("label_search"); var search = ""; if (label_search) { search = label_search.value; } @@ -1073,14 +1036,12 @@ function updateLabelList(sort_key) { function updatePrefsList() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } + var query = "backend.php?op=pref-prefs"; - xmlhttp.open("GET", "backend.php?op=pref-prefs", true); - xmlhttp.onreadystatechange=prefslist_callback; - xmlhttp.send(null); + new Ajax.Request(query, { + onComplete: function(transport) { + prefslist_callback2(transport); + } }); } @@ -1092,13 +1053,8 @@ function selectTab(id, noupdate, subop) { try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - try { - var c = document.getElementById('prefContent'); + var c = $('prefContent'); c.scrollTop = 0; } catch (e) { }; @@ -1132,7 +1088,7 @@ function selectTab(id, noupdate, subop) { /* clean selection from all tabs */ - var tabs_holder = document.getElementById("prefTabs"); + var tabs_holder = $("prefTabs"); var tab = tabs_holder.firstChild; while (tab) { @@ -1144,7 +1100,7 @@ function selectTab(id, noupdate, subop) { /* mark new tab as selected */ - tab = document.getElementById(id + "Tab"); + tab = $(id + "Tab"); if (tab) { if (!tab.className.match("Selected")) { @@ -1159,73 +1115,72 @@ function selectTab(id, noupdate, subop) { } } -function backend_sanity_check_callback() { +function backend_sanity_check_callback2(transport) { - if (xmlhttp.readyState == 4) { + try { - try { + if (sanity_check_done) { + fatalError(11, "Sanity check request received twice. This can indicate "+ + "presence of Firebug or some other disrupting extension. "+ + "Please disable it and try again."); + return; + } - if (sanity_check_done) { - fatalError(11, "Sanity check request received twice. This can indicate "+ - "presence of Firebug or some other disrupting extension. "+ - "Please disable it and try again."); - return; - } + if (!transport.responseXML) { + fatalError(3, "Sanity Check: Received reply is not XML", + transport.responseText); + return; + } - if (!xmlhttp.responseXML) { - fatalError(3, "Sanity Check: Received reply is not XML", - xmlhttp.responseText); - return; - } - - var reply = xmlhttp.responseXML.firstChild.firstChild; - - if (!reply) { - fatalError(3, "Sanity Check: Invalid RPC reply", xmlhttp.responseText); - return; - } - - var error_code = reply.getAttribute("error-code"); - - if (error_code && error_code != 0) { - return fatalError(error_code, reply.getAttribute("error-msg")); - } + var reply = transport.responseXML.firstChild.firstChild; + + if (!reply) { + fatalError(3, "Sanity Check: Invalid RPC reply", transport.responseText); + return; + } + + var error_code = reply.getAttribute("error-code"); - debug("sanity check ok"); + if (error_code && error_code != 0) { + return fatalError(error_code, reply.getAttribute("error-msg")); + } - var params = reply.nextSibling; + debug("sanity check ok"); - if (params) { - debug('reading init-params...'); - var param = params.firstChild; + var params = reply.nextSibling; - while (param) { - var k = param.getAttribute("key"); - var v = param.getAttribute("value"); - debug(k + " => " + v); - init_params[k] = v; - param = param.nextSibling; - } + if (params) { + debug('reading init-params...'); + var param = params.firstChild; + + while (param) { + var k = param.getAttribute("key"); + var v = param.getAttribute("value"); + debug(k + " => " + v); + init_params[k] = v; + param = param.nextSibling; } + } - sanity_check_done = true; + sanity_check_done = true; - init_second_stage(); + init_second_stage(); - } catch (e) { - exception_error("backend_sanity_check_callback", e); - } - } + } catch (e) { + exception_error("backend_sanity_check_callback", e); + } } function init_second_stage() { try { active_tab = getInitParam("prefs_active_tab"); - if (!document.getElementById(active_tab+"Tab")) active_tab = "genConfig"; + if (!$(active_tab+"Tab")) active_tab = "genConfig"; if (!active_tab || active_tab == '0') active_tab = "genConfig"; document.onkeydown = pref_hotkey_handler; + document.onmousedown = mouse_down_handler; + document.onmouseup = mouse_up_handler; var tab = getURLParam('tab'); @@ -1265,19 +1220,14 @@ function init() { debug('debug mode activated'); } - // IE kludge - if (!xmlhttp) { - document.getElementById("prefContent").innerHTML = - "Fatal error: This program needs XmlHttpRequest " + - "to function properly. Your browser doesn't seem to support it."; - return; - } - loading_set_progress(30); - xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true); - xmlhttp.onreadystatechange=backend_sanity_check_callback; - xmlhttp.send(null); + var query = "backend.php?op=rpc&subop=sanityCheck"; + + new Ajax.Request(query, { + onComplete: function(transport) { + backend_sanity_check_callback2(transport); + } }); } catch (e) { exception_error("init", e); @@ -1286,14 +1236,9 @@ function init() { function categorizeSelectedFeeds() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - var sel_rows = getSelectedFeeds(); - var cat_sel = document.getElementById("sfeed_set_fcat"); + var cat_sel = $("sfeed_set_fcat"); var cat_id = cat_sel[cat_sel.selectedIndex].value; if (sel_rows.length > 0) { @@ -1326,10 +1271,12 @@ function validatePrefsReset() { query = query + "&subop=reset-config"; debug(query); - xmlhttp.open("POST", "backend.php", true); - xmlhttp.onreadystatechange=prefs_reset_callback; - xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xmlhttp.send(query); + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + prefs_reset_callback2(transport); + } }); + } } catch (e) { @@ -1477,6 +1424,7 @@ function pref_hotkey_handler(e) { if (Element.visible("hotkey_help_overlay")) { Element.hide("hotkey_help_overlay"); } + colorPickerHideAll(); hotkey_prefix = false; closeInfoBox(); } @@ -1533,7 +1481,7 @@ function pref_hotkey_handler(e) { "feed_search", "filter_search", "user_search", "feed_browser_search"); for (var i = 0; i < search_boxes.length; i++) { - var elem = document.getElementById(search_boxes[i]); + var elem = $(search_boxes[i]); if (elem) { focus_element(search_boxes[i]); return false; @@ -1584,27 +1532,27 @@ function pref_hotkey_handler(e) { hotkey_prefix = false; - if (keycode == 49 && document.getElementById("genConfigTab")) { // 1 + if (keycode == 49 && $("genConfigTab")) { // 1 selectTab("genConfig"); return false; } - if (keycode == 50 && document.getElementById("feedConfigTab")) { // 2 + if (keycode == 50 && $("feedConfigTab")) { // 2 selectTab("feedConfig"); return false; } - if (keycode == 51 && document.getElementById("filterConfigTab")) { // 4 + if (keycode == 51 && $("filterConfigTab")) { // 4 selectTab("filterConfig"); return false; } - if (keycode == 52 && document.getElementById("labelConfigTab")) { // 5 + if (keycode == 52 && $("labelConfigTab")) { // 5 selectTab("labelConfig"); return false; } - if (keycode == 53 && document.getElementById("userConfigTab")) { // 6 + if (keycode == 53 && $("userConfigTab")) { // 6 selectTab("userConfig"); return false; } @@ -1615,7 +1563,7 @@ function pref_hotkey_handler(e) { } - if (document.getElementById("piggie")) { + if ($("piggie")) { if (seq.match("807371717369")) { seq = ""; @@ -1638,10 +1586,10 @@ function pref_hotkey_handler(e) { function editFeedCats() { try { - document.getElementById("subscribe_to_feed_btn").disabled = true; + $("subscribe_to_feed_btn").disabled = true; try { - document.getElementById("top25_feeds_btn").disabled = true; + $("top25_feeds_btn").disabled = true; } catch (e) { // this button is not always available, no-op if not found } @@ -1665,11 +1613,6 @@ function changeUserPassword() { try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return false; - } - var f = document.forms["change_pass_form"]; if (f) { @@ -1703,11 +1646,13 @@ function changeUserPassword() { var query = Form.serialize("change_pass_form"); notify_progress("Trying to change password..."); - - xmlhttp.open("POST", "backend.php", true); - xmlhttp.onreadystatechange=changepass_callback; - xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xmlhttp.send(query); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + changepass_callback2(transport); + } }); + } catch (e) { exception_error("changeUserPassword", e); @@ -1720,19 +1665,15 @@ function changeUserEmail() { try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return false; - } - var query = Form.serialize("change_email_form"); notify_progress("Trying to change e-mail..."); - xmlhttp.open("POST", "backend.php", true); - xmlhttp.onreadystatechange=notify_callback; - xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xmlhttp.send(query); + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_callback2(transport); + } }); } catch (e) { exception_error("changeUserPassword", e); @@ -1749,42 +1690,22 @@ function feedlistToggleSLAT() { function pubRegenKey() { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return false; - } - var ok = confirm(__("Replace current publishing address with a new one?")); if (ok) { notify_progress("Trying to change address..."); - xmlhttp.open("GET", "backend.php?op=rpc&subop=regenPubKey"); - xmlhttp.onreadystatechange=replace_pubkey_callback; - xmlhttp.send(null); - } - - return false; -} + var query = "backend.php?op=rpc&subop=regenPubKey"; -function pubToClipboard() { - - try { - - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return false; - } - - var link = document.getElementById("pubGenAddress"); - alert(link.href); + new Ajax.Request(query, { + onComplete: function(transport) { + replace_pubkey_callback(transport); + } }); - } catch (e) { - exception_error("pubToClipboard", e); } - return false; + return false; } function validatePrefsSave() { @@ -1798,10 +1719,12 @@ function validatePrefsSave() { query = query + "&subop=save-config"; debug(query); - xmlhttp.open("POST", "backend.php", true); - xmlhttp.onreadystatechange=notify_callback; - xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xmlhttp.send(query); + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + notify_callback2(transport); + } }); + } } catch (e) { @@ -1813,7 +1736,7 @@ function validatePrefsSave() { function feedActionChange() { try { - var chooser = document.getElementById("feedActionChooser"); + var chooser = $("feedActionChooser"); var opid = chooser[chooser.selectedIndex].value; chooser.selectedIndex = 0; @@ -1951,40 +1874,37 @@ function removeFilter(id, title) { function unsubscribeFeed(id, title) { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - - var msg = __("Unsubscribe from %s?").replace("%s", title); - - var ok = confirm(msg); - - if (ok) { - closeInfoBox(); + try { - notify_progress("Removing feed..."); + var msg = __("Unsubscribe from %s?").replace("%s", title); + + var ok = confirm(msg); + + if (ok) { + closeInfoBox(); + + notify_progress("Removing feed..."); + + var query = "backend.php?op=pref-feeds&subop=remove&ids="+ + param_escape(id); + + new Ajax.Request(query, { + onComplete: function(transport) { + feedlist_callback2(transport); + } }); + } - xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=remove&ids="+ - param_escape(id), true); - xmlhttp.onreadystatechange=filterlist_callback; - xmlhttp.send(null); + } catch (e) { + exception_error("unsubscribeFeed", e); } return false; - return false; - } function feedsEditSave() { try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } - var ok = confirm(__("Save changes to selected feeds?")); if (ok) { @@ -2041,7 +1961,7 @@ function feedsEditSave() { function batchFeedsToggleField(cb, elem, label) { try { var f = document.forms["batch_edit_feed_form"]; - var l = document.getElementById(label); + var l = $(label); if (cb.checked) { f[elem].disabled = false; @@ -2066,4 +1986,149 @@ function batchFeedsToggleField(cb, elem, label) { } } +function labelColorReset() { + try { + var labels = getSelectedLabels(); + + var ok = confirm(__("Reset label colors to default?")); + + if (ok) { + + var query = "backend.php?op=pref-labels&subop=color-reset&ids="+ + param_escape(labels.toString()); + + new Ajax.Request(query, { + onComplete: function(transport) { + labellist_callback2(transport); + } }); + } + + } catch (e) { + exception_error("labelColorReset", e); + } +} + +function labelColorAsk(id, kind) { + try { + + var p = null + + if (kind == "fg") { + p = prompt(__("Please enter new label foreground color:")); + } else { + p = prompt(__("Please enter new label background color:")); + } + + if (p != null) { + + var query = "backend.php?op=pref-labels&subop=color-set&kind=" + kind + + "&ids="+ param_escape(id) + "&color=" + param_escape(p); + + selectPrefRows('label', false); + + var e = $("LICID-" + id); + + if (e) { + if (kind == "fg") { + e.style.color = p + } else { + e.style.backgroundColor = p; + } + } + + new Ajax.Request(query); + } + + } catch (e) { + exception_error("labelColorReset", e); + } +} + + +function colorPicker(id, fg, bg) { + try { + var picker = $("colorPicker-" + id); + + if (picker) Element.show(picker); + + } catch (e) { + exception_error("colorPicker", e); + } +} + +function colorPickerHideAll() { + try { + if ($("prefLabelList")) { + + var elems = $("prefLabelList").getElementsByTagName("DIV"); + + for (var i = 0; i < elems.length; i++) { + if (elems[i].id && elems[i].id.match("colorPicker-")) { + Element.hide(elems[i]); + } + } + } + + } catch (e) { + exception_error("colorPickerHideAll", e); + } +} + +function colorPickerDo(id, fg, bg) { + try { + + var query = "backend.php?op=pref-labels&subop=color-set&kind=both"+ + "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + + "&bg=" + param_escape(bg); + + var e = $("LICID-" + id); + + if (e) { + e.style.color = fg; + e.style.backgroundColor = bg; + } + + new Ajax.Request(query); + + } catch (e) { + exception_error("colorPickerDo", e); + } +} + +function colorPickerActive(b) { + color_picker_active = b; +} + +function mouse_down_handler(e) { + try { + + /* do not prevent right click */ + if (e.button && e.button == 2) return; + + if (selection_disabled) { + document.onselectstart = function() { return false; }; + return false; + } + + } catch (e) { + exception_error("mouse_move_handler", e); + } +} + +function mouse_up_handler(e) { + try { + mouse_is_down = false; + + if (!selection_disabled) { + document.onselectstart = null; + } + + if (!color_picker_active) { + colorPickerHideAll(); + } + + } catch (e) { + exception_error("mouse_move_handler", e); + } +}