X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=sidebyside;f=prefs.js;h=8d15d5c22439f4efda902880f204ed50130169ba;hb=5917a8e4a7549dd708521ca8b96134674c35e3b6;hp=b9973fd2e6925c7cc3ad8b4ed2e8bcc4d12c805f;hpb=140aae812a7d83af8125bfbe13c75e20eee1fdcb;p=tt-rss.git diff --git a/prefs.js b/prefs.js index b9973fd2..8d15d5c2 100644 --- a/prefs.js +++ b/prefs.js @@ -1,15 +1,15 @@ -/* - This program is Copyright (c) 2003-2005 Andrew Dolgov - Licensed under GPL v.2 or (at your preference) any later version. -*/ - var xmlhttp = false; var active_feed = false; +var active_feed_cat = false; var active_filter = false; var active_label = false; - +var active_user = false; var active_tab = false; +var feed_to_expand = false; + +var piggie_top = -400; +var piggie_fwd = true; /*@cc_on @*/ /*@if (@_jscript_version >= 5) @@ -30,18 +30,60 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } +function expand_feed_callback() { + if (xmlhttp.readyState == 4) { + try { + var container = document.getElementById("BRDET-" + feed_to_expand); + container.innerHTML=xmlhttp.responseText; + container.style.display = "block"; + p_notify(""); + } catch (e) { + exception_error("expand_feed_callback", e); + } + } +} + function feedlist_callback() { + if (xmlhttp.readyState == 4) { + try { + var container = document.getElementById('prefContent'); + container.innerHTML=xmlhttp.responseText; + selectTab("feedConfig", true); + + if (active_feed) { + var row = document.getElementById("FEEDR-" + active_feed); + if (row) { + if (!row.className.match("Selected")) { + row.className = row.className + "Selected"; + } + } + var checkbox = document.getElementById("FRCHK-" + active_feed); + if (checkbox) { + checkbox.checked = true; + } + } + p_notify(""); + } catch (e) { + exception_error("feedlist_callback", e); + } + } +} + +function filterlist_callback() { var container = document.getElementById('prefContent'); if (xmlhttp.readyState == 4) { + container.innerHTML=xmlhttp.responseText; - if (active_feed) { - var row = document.getElementById("FEEDR-" + active_feed); + + if (active_filter) { + var row = document.getElementById("FILRR-" + active_filter); if (row) { if (!row.className.match("Selected")) { row.className = row.className + "Selected"; } } - var checkbox = document.getElementById("FRCHK-" + active_feed); + var checkbox = document.getElementById("FICHK-" + active_filter); + if (checkbox) { checkbox.checked = true; } @@ -50,20 +92,19 @@ function feedlist_callback() { } } -function filterlist_callback() { +function labellist_callback() { var container = document.getElementById('prefContent'); if (xmlhttp.readyState == 4) { - container.innerHTML=xmlhttp.responseText; - if (active_filter) { - var row = document.getElementById("FILRR-" + active_filter); + if (active_label) { + var row = document.getElementById("LILRR-" + active_label); if (row) { if (!row.className.match("Selected")) { row.className = row.className + "Selected"; } } - var checkbox = document.getElementById("FICHK-" + active_filter); + var checkbox = document.getElementById("LICHK-" + active_label); if (checkbox) { checkbox.checked = true; @@ -73,27 +114,74 @@ function filterlist_callback() { } } -function labellist_callback() { +function feed_browser_callback() { + var container = document.getElementById('prefContent'); + if (xmlhttp.readyState == 4) { + container.innerHTML=xmlhttp.responseText; + p_notify(""); + } +} + +function userlist_callback() { var container = document.getElementById('prefContent'); if (xmlhttp.readyState == 4) { container.innerHTML=xmlhttp.responseText; - if (active_filter) { - var row = document.getElementById("LILRR-" + active_label); + if (active_user) { + var row = document.getElementById("UMRR-" + active_user); if (row) { if (!row.className.match("Selected")) { row.className = row.className + "Selected"; } } - var checkbox = document.getElementById("LICHK-" + active_label); + var checkbox = document.getElementById("UMCHK-" + active_user); if (checkbox) { checkbox.checked = true; } + } + + p_notify(""); + } +} + +function infobox_callback() { + if (xmlhttp.readyState == 4) { + var box = document.getElementById('infoBox'); + var shadow = document.getElementById('infoBoxShadow'); + if (box) { + box.innerHTML=xmlhttp.responseText; + if (shadow) { + shadow.style.display = "block"; + } else { + box.style.display = "block"; + } } + } +} + + +function prefslist_callback() { + var container = document.getElementById('prefContent'); + if (xmlhttp.readyState == 4) { + + container.innerHTML=xmlhttp.responseText; + p_notify(""); } } + +function gethelp_callback() { + var container = document.getElementById('prefHelpBox'); + if (xmlhttp.readyState == 4) { + + container.innerHTML = xmlhttp.responseText; + container.style.display = "block"; + + } +} + + function notify_callback() { var container = document.getElementById('notify'); if (xmlhttp.readyState == 4) { @@ -101,8 +189,7 @@ function notify_callback() { } } - -function updateFeedList() { +function updateFeedList(sort_key) { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); @@ -113,24 +200,33 @@ function updateFeedList() { p_notify("Loading, please wait..."); - xmlhttp.open("GET", "backend.php?op=pref-feeds", true); + var feed_search = document.getElementById("feed_search"); + var search = ""; + if (feed_search) { search = feed_search.value; } + + xmlhttp.open("GET", "backend.php?op=pref-feeds" + + "&sort=" + param_escape(sort_key) + + "&search=" + param_escape(search), true); xmlhttp.onreadystatechange=feedlist_callback; xmlhttp.send(null); } -function toggleSelectRow(sender) { - var parent_row = sender.parentNode.parentNode; +function updateUsersList() { - if (sender.checked) { - if (!parent_row.className.match("Selected")) { - parent_row.className = parent_row.className + "Selected"; - } - } else { - if (parent_row.className.match("Selected")) { - parent_row.className = parent_row.className.replace("Selected", ""); - } + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return } + +// document.getElementById("prefContent").innerHTML = "Loading feeds, please wait..."; + + p_notify("Loading, please wait..."); + + xmlhttp.open("GET", "backend.php?op=pref-users", true); + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + } function addLabel() { @@ -167,6 +263,8 @@ function addFilter() { var regexp = document.getElementById("fadd_regexp"); var match = document.getElementById("fadd_match"); + var feed = document.getElementById("fadd_feed"); + var action = document.getElementById("fadd_action"); if (regexp.value.length == 0) { notify("Missing filter expression."); @@ -174,9 +272,12 @@ function addFilter() { notify("Adding filter..."); var v_match = match[match.selectedIndex].text; + var feed_id = feed[feed.selectedIndex].id; + var action_id = action[action.selectedIndex].id; xmlhttp.open("GET", "backend.php?op=pref-filters&subop=add®exp=" + - param_escape(regexp.value) + "&match=" + v_match, true); + param_escape(regexp.value) + "&match=" + v_match + + "&fid=" + param_escape(feed_id) + "&aid=" + param_escape(action_id), true); xmlhttp.onreadystatechange=filterlist_callback; xmlhttp.send(null); @@ -211,6 +312,55 @@ function addFeed() { } +function addFeedCat() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var cat = document.getElementById("fadd_cat"); + + if (cat.value.length == 0) { + notify("Missing feed category."); + } else { + notify("Adding feed category..."); + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=addCat&cat=" + + param_escape(cat.value), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + + link.value = ""; + + } + +} +function addUser() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var sqlexp = document.getElementById("uadd_box"); + + if (sqlexp.value.length == 0) { + notify("Missing user login."); + } else { + notify("Adding user..."); + + 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 = ""; + } + +} + function editLabel(id) { if (!xmlhttp_ready(xmlhttp)) { @@ -227,6 +377,22 @@ function editLabel(id) { } +function editUser(id) { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + active_user = id; + + xmlhttp.open("GET", "backend.php?op=pref-users&subop=edit&id=" + + param_escape(id), true); + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + +} + function editFilter(id) { if (!xmlhttp_ready(xmlhttp)) { @@ -254,63 +420,63 @@ function editFeed(feed) { active_feed = feed; - xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=edit&id=" + +/* xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=edit&id=" + param_escape(feed), true); xmlhttp.onreadystatechange=feedlist_callback; - xmlhttp.send(null); - -} + xmlhttp.send(null); */ -function getSelectedLabels() { + selectTableRowsByIdPrefix('prefFeedList', 'FEEDR-', 'FRCHK-', false); +// selectTableRowsByIdPrefix('prefFeedList', 'FEEDR-'+feed, 'FRCHK-'+feed, +// true, false); - var content = document.getElementById("prefLabelList"); + selectTableRowById('FEEDR-'+feed, 'FRCHK-'+feed, true); - var sel_rows = new Array(); + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editfeed&id=" + + param_escape(active_feed), true); - for (i = 0; i < content.rows.length; i++) { - if (content.rows[i].className.match("Selected")) { - var row_id = content.rows[i].id.replace("LILRR-", ""); - sel_rows.push(row_id); - } - } + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); - return sel_rows; } +function editFeedCat(cat) { -function getSelectedFilters() { - - var content = document.getElementById("prefFilterList"); + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } - var sel_rows = new Array(); + active_feed_cat = cat; - for (i = 0; i < content.rows.length; i++) { - if (content.rows[i].className.match("Selected")) { - var row_id = content.rows[i].id.replace("FILRR-", ""); - sel_rows.push(row_id); - } - } + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editCat&id=" + + param_escape(cat), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); - return sel_rows; } -function getSelectedFeeds() { +function getSelectedLabels() { + return getSelectedTableRowIds("prefLabelList", "LILRR"); +} - var content = document.getElementById("prefFeedList"); +function getSelectedUsers() { + return getSelectedTableRowIds("prefUserList", "UMRR"); +} - var sel_rows = new Array(); +function getSelectedFeeds() { + return getSelectedTableRowIds("prefFeedList", "FEEDR"); +} - for (i = 0; i < content.rows.length; i++) { - if (content.rows[i].className.match("Selected")) { - var row_id = content.rows[i].id.replace("FEEDR-", ""); - sel_rows.push(row_id); - } - } +function getSelectedFilters() { + return getSelectedTableRowIds("prefFilterList", "FILRR"); +} - return sel_rows; +function getSelectedFeedCats() { + return getSelectedTableRowIds("prefFeedCatList", "FCATR"); } -function readSelectedFeeds() { + +function readSelectedFeeds(read) { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); @@ -321,9 +487,15 @@ function readSelectedFeeds() { if (sel_rows.length > 0) { - notify("Marking selected feeds as read..."); + if (!read) { + op = "unread"; + } else { + op = "read"; + } + + notify("Marking selected feeds as " + op + "..."); - xmlhttp.open("GET", "backend.php?op=pref-rpc&subop=unread&ids="+ + xmlhttp.open("GET", "backend.php?op=pref-rpc&subop=" + op + "&ids="+ param_escape(sel_rows.toString()), true); xmlhttp.onreadystatechange=notify_callback; xmlhttp.send(null); @@ -335,48 +507,53 @@ function readSelectedFeeds() { } } -function unreadSelectedFeeds() { +function removeSelectedLabels() { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); return } - var sel_rows = getSelectedFeeds(); + var sel_rows = getSelectedLabels(); if (sel_rows.length > 0) { - notify("Marking selected feeds as unread..."); - - xmlhttp.open("GET", "backend.php?op=pref-rpc&subop=unread&ids="+ - param_escape(sel_rows.toString()), true); - xmlhttp.onreadystatechange=notify_callback; - xmlhttp.send(null); + var ok = confirm("Remove selected labels?"); + if (ok) { + notify("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); + } } else { - - notify("Please select some feeds first."); - + notify("Please select some labels first."); } } -function removeSelectedLabels() { +function removeSelectedUsers() { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); return } - var sel_rows = getSelectedLabels(); + var sel_rows = getSelectedUsers(); if (sel_rows.length > 0) { - notify("Removing selected labels..."); + var ok = confirm("Remove selected users?"); - xmlhttp.open("GET", "backend.php?op=pref-labels&subop=remove&ids="+ - param_escape(sel_rows.toString()), true); - xmlhttp.onreadystatechange=labellist_callback; - xmlhttp.send(null); + if (ok) { + notify("Removing selected users..."); + + xmlhttp.open("GET", "backend.php?op=pref-users&subop=remove&ids="+ + param_escape(sel_rows.toString()), true); + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + } } else { notify("Please select some labels first."); @@ -394,13 +571,16 @@ function removeSelectedFilters() { if (sel_rows.length > 0) { - notify("Removing selected filters..."); - - xmlhttp.open("GET", "backend.php?op=pref-filters&subop=remove&ids="+ - param_escape(sel_rows.toString()), true); - xmlhttp.onreadystatechange=filterlist_callback; - xmlhttp.send(null); + var ok = confirm("Remove selected filters?"); + if (ok) { + notify("Removing selected filters..."); + + xmlhttp.open("GET", "backend.php?op=pref-filters&subop=remove&ids="+ + param_escape(sel_rows.toString()), true); + xmlhttp.onreadystatechange=filterlist_callback; + xmlhttp.send(null); + } } else { notify("Please select some filters first."); } @@ -418,12 +598,17 @@ function removeSelectedFeeds() { if (sel_rows.length > 0) { - notify("Removing selected feeds..."); + var ok = confirm("Remove selected feeds?"); - 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 (ok) { + + notify("Removing selected feeds..."); + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=remove&ids="+ + param_escape(sel_rows.toString()), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + } } else { @@ -433,119 +618,254 @@ function removeSelectedFeeds() { } -function feedEditCancel() { +function removeSelectedFeedCats() { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); return } - active_feed = false; - - notify("Operation cancelled."); - - xmlhttp.open("GET", "backend.php?op=pref-feeds", true); - xmlhttp.onreadystatechange=feedlist_callback; - xmlhttp.send(null); - -} - -function feedEditSave() { - - var feed = active_feed; - - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } + var sel_rows = getSelectedFeedCats(); - var link = document.getElementById("iedit_link").value; - var title = document.getElementById("iedit_title").value; - var upd_intl = document.getElementById("iedit_updintl").value; - var purge_intl = document.getElementById("iedit_purgintl").value; + if (sel_rows.length > 0) { -// notify("Saving feed."); + var ok = confirm("Remove selected categories?"); -/* if (upd_intl < 0) { - notify("Update interval must be >= 0 (0 = default)"); - return; - } + if (ok) { + notify("Removing selected categories..."); + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=removeCats&ids="+ + param_escape(sel_rows.toString()), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + } - if (purge_intl < 0) { - notify("Purge days must be >= 0 (0 = default)"); - return; - } */ + } else { - if (link.length == 0) { - notify("Feed link cannot be blank."); - return; - } + notify("Please select some feeds first."); - if (title.length == 0) { - notify("Feed title cannot be blank."); - return; } - active_feed = false; - - xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editSave&id=" + - feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) + - "&ui=" + param_escape(upd_intl) + "&pi=" + param_escape(purge_intl), true); - xmlhttp.onreadystatechange=feedlist_callback; - xmlhttp.send(null); - } -function labelEditCancel() { +function feedEditCancel() { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); return } - active_label = false; + closeInfoBox(); + + active_feed = false; notify("Operation cancelled."); - xmlhttp.open("GET", "backend.php?op=pref-labels", true); - xmlhttp.onreadystatechange=labellist_callback; - xmlhttp.send(null); +/* xmlhttp.open("GET", "backend.php?op=pref-feeds", true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); */ } - -function filterEditCancel() { +function feedCatEditCancel() { if (!xmlhttp_ready(xmlhttp)) { printLockingError(); return } - active_filter = false; + active_feed_cat = false; notify("Operation cancelled."); - xmlhttp.open("GET", "backend.php?op=pref-filters", true); - xmlhttp.onreadystatechange=filterlist_callback; + xmlhttp.open("GET", "backend.php?op=pref-feeds", true); + xmlhttp.onreadystatechange=feedlist_callback; xmlhttp.send(null); } -function labelEditSave() { +function feedEditSave() { - var label = active_label; + try { - if (!xmlhttp_ready(xmlhttp)) { - printLockingError(); - return - } + var feed = active_feed; + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var link = document.getElementById("iedit_link").value; + var title = document.getElementById("iedit_title").value; + var upd_intl = document.getElementById("iedit_updintl").value; + var purge_intl = document.getElementById("iedit_purgintl").value; + var fcat = document.getElementById("iedit_fcat"); - var sqlexp = document.getElementById("iedit_expr").value; - var descr = document.getElementById("iedit_descr").value; + var is_pvt = document.getElementById("iedit_private"); + var is_rtl = document.getElementById("iedit_rtl"); -// notify("Saving label " + sqlexp + ": " + descr); + if (is_pvt) { + is_pvt = is_pvt.checked; + } - if (sqlexp.length == 0) { + if (is_rtl) { + is_rtl = is_rtl.checked; + } + + var fcat_id = 0; + + if (fcat) { + fcat_id = fcat[fcat.selectedIndex].id; + } + + var pfeed = document.getElementById("iedit_parent_feed"); + var parent_feed_id = pfeed[pfeed.selectedIndex].id; + + if (link.length == 0) { + notify("Feed link cannot be blank."); + return; + } + + if (title.length == 0) { + notify("Feed title cannot be blank."); + return; + } + + var auth_login = document.getElementById("iedit_login").value; + var auth_pass = document.getElementById("iedit_pass").value; + + active_feed = false; + + notify("Saving feed..."); + + var query = "op=pref-feeds&subop=editSave&id=" + + feed + "&l=" + param_escape(link) + "&t=" + param_escape(title) + + "&ui=" + param_escape(upd_intl) + "&pi=" + param_escape(purge_intl) + + "&catid=" + param_escape(fcat_id) + "&login=" + param_escape(auth_login) + + "&pfeed=" + param_escape(parent_feed_id) + "&pass=" + param_escape(auth_pass) + + "&is_pvt=" + param_escape(is_pvt) + "&is_rtl=" + param_escape(is_rtl); + + xmlhttp.open("POST", "backend.php", true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xmlhttp.send(query); + + } catch (e) { + exception_error("feedEditSave", e); + } +} + +function feedCatEditSave() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + notify("Saving category..."); + + var cat_title = document.getElementById("iedit_title").value; + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=saveCat&id=" + + param_escape(active_feed_cat) + "&title=" + param_escape(cat_title), + true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + + active_feed_cat = false; + +} + + +function labelTest() { + + var sqlexp = document.getElementById("iedit_expr").value; + var descr = document.getElementById("iedit_descr").value; + + xmlhttp.open("GET", "backend.php?op=pref-labels&subop=test&expr=" + + param_escape(sqlexp) + "&descr=" + param_escape(descr), true); + + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); + +} + +function displayHelpInfobox(topic_id) { + + xmlhttp.open("GET", "backend.php?op=help&tid=" + + param_escape(topic_id) + "&noheaders=1", true); + + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); + +} + +function labelEditCancel() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + active_label = false; + + notify("Operation cancelled."); + + xmlhttp.open("GET", "backend.php?op=pref-labels", true); + xmlhttp.onreadystatechange=labellist_callback; + xmlhttp.send(null); + +} + +function userEditCancel() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + active_user = false; + + notify("Operation cancelled."); + + xmlhttp.open("GET", "backend.php?op=pref-users", true); + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + +} + +function filterEditCancel() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + active_filter = false; + + notify("Operation cancelled."); + + xmlhttp.open("GET", "backend.php?op=pref-filters", true); + xmlhttp.onreadystatechange=filterlist_callback; + xmlhttp.send(null); + +} + +function labelEditSave() { + + var label = active_label; + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var sqlexp = document.getElementById("iedit_expr").value; + var descr = document.getElementById("iedit_descr").value; + +// notify("Saving label " + sqlexp + ": " + descr); + + if (sqlexp.length == 0) { notify("SQL expression cannot be blank."); return; } @@ -555,6 +875,8 @@ function labelEditSave() { return; } + notify("Saving label..."); + active_label = false; xmlhttp.open("GET", "backend.php?op=pref-labels&subop=editSave&id=" + @@ -566,6 +888,46 @@ function labelEditSave() { } +function userEditSave() { + + var user = active_user; + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var login = document.getElementById("iedit_ulogin").value; + var level = document.getElementById("iedit_ulevel"); + + level = level[level.selectedIndex].id; + + var email = document.getElementById("iedit_email").value; + + if (login.length == 0) { + notify("Login cannot be blank."); + return; + } + + if (level.length == 0) { + notify("User level cannot be blank."); + return; + } + + active_user = false; + + notify("Saving user..."); + + xmlhttp.open("GET", "backend.php?op=pref-users&subop=editSave&id=" + + user + "&l=" + param_escape(login) + "&al=" + param_escape(level) + + "&e=" + param_escape(email), true); + + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + +} + + function filterEditSave() { var filter = active_filter; @@ -581,6 +943,12 @@ function filterEditSave() { var v_match = match[match.selectedIndex].text; + var feed = document.getElementById("iedit_feed"); + var feed_id = feed[feed.selectedIndex].id; + + var action = document.getElementById("iedit_filter_action"); + var action_id = action[action.selectedIndex].id; + // notify("Saving filter " + filter + ": " + regexp + ", " + descr + ", " + match); if (regexp.length == 0) { @@ -592,8 +960,11 @@ function filterEditSave() { xmlhttp.open("GET", "backend.php?op=pref-filters&subop=editSave&id=" + filter + "&r=" + param_escape(regexp) + "&d=" + param_escape(descr) + - "&m=" + param_escape(v_match), true); - + "&m=" + param_escape(v_match) + "&fid=" + param_escape(feed_id) + + "&aid=" + param_escape(action_id), true); + + notify("Saving filter..."); + xmlhttp.onreadystatechange=filterlist_callback; xmlhttp.send(null); @@ -612,10 +983,115 @@ function editSelectedLabel() { return; } + notify(""); + editLabel(rows[0]); } +function editSelectedUser() { + var rows = getSelectedUsers(); + + if (rows.length == 0) { + notify("No users are selected."); + return; + } + + if (rows.length > 1) { + notify("Please select one user."); + return; + } + + notify(""); + + editUser(rows[0]); +} + +function resetSelectedUserPass() { + var rows = getSelectedUsers(); + + if (rows.length == 0) { + notify("No users are selected."); + return; + } + + if (rows.length > 1) { + notify("Please select one user."); + return; + } + + var ok = confirm("Reset password of selected user?"); + + if (ok) { + notify("Resetting password for selected user..."); + + var id = rows[0]; + + xmlhttp.open("GET", "backend.php?op=pref-users&subop=resetPass&id=" + + param_escape(id), true); + xmlhttp.onreadystatechange=userlist_callback; + xmlhttp.send(null); + } +} + +function selectedUserDetails() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var rows = getSelectedUsers(); + + if (rows.length == 0) { + notify("No users are selected."); + return; + } + + if (rows.length > 1) { + notify("Please select one user."); + return; + } + + var id = rows[0]; + + notify(""); + + xmlhttp.open("GET", "backend.php?op=user-details&id=" + id, true); + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); + +} + +function selectedFeedDetails() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var rows = getSelectedFeeds(); + + if (rows.length == 0) { + notify("No feeds are selected."); + return; + } + +// if (rows.length > 1) { +// notify("Please select one feed."); +// return; +// } + +// var id = rows[0]; + + notify(""); + + xmlhttp.open("GET", "backend.php?op=feed-details&id=" + + param_escape(rows.toString()), true); + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); + +} function editSelectedFilter() { var rows = getSelectedFilters(); @@ -630,6 +1106,8 @@ function editSelectedFilter() { return; } + notify(""); + editFilter(rows[0]); } @@ -648,18 +1126,87 @@ function editSelectedFeed() { return; } + notify(""); + editFeed(rows[0]); } +function editSelectedFeedCat() { + var rows = getSelectedFeedCats(); + + if (rows.length == 0) { + notify("No categories are selected."); + return; + } + + if (rows.length > 1) { + notify("Please select one category."); + return; + } + + notify(""); + + editFeedCat(rows[0]); + +} + +function piggie_callback() { + var piggie = document.getElementById("piggie"); + + piggie.style.top = piggie_top; + piggie.style.backgroundColor = "white"; + piggie.style.borderWidth = "1px"; + + if (piggie_fwd && piggie_top < 0) { + setTimeout("piggie_callback()", 50); + piggie_top = piggie_top + 10; + } else if (piggie_fwd && piggie_top >= 0) { + piggie_fwd = false; + setTimeout("piggie_callback()", 50); + } else if (!piggie_fwd && piggie_top > -400) { + setTimeout("piggie_callback()", 50); + piggie_top = piggie_top - 10; + } else if (!piggie_fwd && piggie_top <= -400) { + piggie.style.display = "none"; + piggie_fwd = true; + } +} + +var piggie_opacity = 0; + +function piggie2_callback() { + var piggie = document.getElementById("piggie"); + piggie.style.top = 0; + piggie.style.opacity = piggie_opacity; + piggie.style.backgroundColor = "transparent"; + piggie.style.borderWidth = "0px"; + + if (piggie_fwd && piggie_opacity < 1) { + setTimeout("piggie2_callback()", 50); + piggie_opacity = piggie_opacity + 0.03; + } else if (piggie_fwd && piggie_opacity >= 1) { + piggie_fwd = false; + setTimeout("piggie2_callback()", 50); + } else if (!piggie_fwd && piggie_opacity > 0) { + setTimeout("piggie2_callback()", 50); + piggie_opacity = piggie_opacity - 0.03; + } else if (!piggie_fwd && piggie_opacity <= 0) { + piggie.style.display = "none"; + piggie_fwd = true; + } +} + function localPiggieFunction(enable) { if (enable) { + var piggie = document.getElementById("piggie"); piggie.style.display = "block"; - seq = ""; - notify("I loveded it!!!"); - } else { - piggie.style.display = "none"; - notify(""); + + if (navigator.userAgent.match("Firefox") && Math.random(1) > 0.5) { + piggie2_callback(); + } else { + piggie_callback(); + } } } @@ -708,14 +1255,45 @@ function updateLabelList() { xmlhttp.send(null); } -function selectTab(id) { +function updatePrefsList() { - if (id == "feedConfig") { - updateFeedList(); - } else if (id == "filterConfig") { - updateFilterList(); - } else if (id == "labelConfig") { - updateLabelList(); + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + p_notify("Loading, please wait..."); + + xmlhttp.open("GET", "backend.php?op=pref-prefs", true); + xmlhttp.onreadystatechange=prefslist_callback; + xmlhttp.send(null); + +} + +function selectTab(id, noupdate) { + +// alert(id); + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + if (!noupdate) { + + if (id == "feedConfig") { + updateFeedList(); + } else if (id == "filterConfig") { + updateFilterList(); + } else if (id == "labelConfig") { + updateLabelList(); + } else if (id == "genConfig") { + updatePrefsList(); + } else if (id == "userConfig") { + updateUsersList(); + } else if (id == "feedBrowser") { + updateBigFeedBrowser(); + } } var tab = document.getElementById(active_tab + "Tab"); @@ -736,22 +1314,162 @@ function selectTab(id) { active_tab = id; + setCookie('ttrss_pref_acttab', active_tab); + } function init() { - // IE kludge + try { + + if (arguments.callee.done) return; + arguments.callee.done = true; + + // 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; + } - if (!xmlhttp) { - document.getElementById("prefContent").innerHTML = - "Fatal error: This program needs XmlHttpRequest " + - "to function properly. Your browser doesn't seem to support it."; - return; + active_tab = getCookie("ttrss_pref_acttab"); + if (!active_tab) active_tab = "genConfig"; + selectTab(active_tab); + + document.onkeydown = hotkey_handler; + notify(""); + } catch (e) { + exception_error("init", e); } +} - selectTab("feedConfig"); +function closeInfoBox() { + var box = document.getElementById('infoBox'); + var shadow = document.getElementById('infoBoxShadow'); - document.onkeydown = hotkey_handler; - notify(""); + if (shadow) { + shadow.style.display = "none"; + } else if (box) { + box.style.display = "none"; + } +} + +function categorizeSelectedFeeds() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + var sel_rows = getSelectedFeeds(); + + var cat_sel = document.getElementById("sfeed_set_fcat"); + var cat_id = cat_sel[cat_sel.selectedIndex].id; + + if (sel_rows.length > 0) { + + notify("Changing category of selected feeds..."); + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=categorize&ids="+ + param_escape(sel_rows.toString()) + "&cat_id=" + param_escape(cat_id), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + + } else { + + notify("Please select some feeds first."); + + } + +} + +function validatePrefsReset() { + return confirm("Reset to defaults?"); +} + +function browseFeeds() { + + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=browse", true); + xmlhttp.onreadystatechange=infobox_callback; + xmlhttp.send(null); + +} + +function feedBrowserSubscribe() { + try { + var list = document.getElementById("browseFeedList"); + + if (!list) list = document.getElementById("browseBigFeedList"); + + var selected = new Array(); + + for (i = 0; i < list.childNodes.length; i++) { + var child = list.childNodes[i]; + if (child.id && child.id.match("FBROW-")) { + var id = child.id.replace("FBROW-", ""); + + var cb = document.getElementById("FBCHK-" + id); + + if (cb.checked) { + selected.push(id); + } + } + } + + if (selected.length > 0) { + closeInfoBox(); + xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=massSubscribe&ids="+ + param_escape(selected.toString()), true); + xmlhttp.onreadystatechange=feedlist_callback; + xmlhttp.send(null); + } else { + alert("No feeds are selected."); + } + + } catch (e) { + exception_error("feedBrowserSubscribe", e); + } +} +function updateBigFeedBrowser() { + + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return + } + + p_notify("Loading, please wait..."); + + xmlhttp.open("GET", "backend.php?op=pref-feed-browser", true); + xmlhttp.onreadystatechange=feed_browser_callback; + xmlhttp.send(null); + +} + +function browserToggleExpand(id) { + try { +/* if (feed_to_expand && feed_to_expand != id) { + var d = document.getElementById("BRDET-" + feed_to_expand); + d.style.display = "none"; + } */ + + var d = document.getElementById("BRDET-" + id); + + if (d.style.display == "block") { + d.style.display = "none"; + + } else { + + feed_to_expand = id; + + xmlhttp.open("GET", "backend.php?op=pref-feed-browser&subop=details&id=" + + param_escape(id), true); + xmlhttp.onreadystatechange=expand_feed_callback; + xmlhttp.send(null); + } + + } catch (e) { + exception_error("browserExpand", e); + } }