X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=functions.js;h=ca94dd93da92b1503d9c1578c6160221b7b6d9b3;hb=e4d4442cdb77e53e3813de6a2d3f22f6f83db47c;hp=61eb83d9572a531235a27c1a6f60fa9563ed411f;hpb=071ec48fd1ec17646d1879bda73489d60fede1c2;p=tt-rss.git diff --git a/functions.js b/functions.js index 61eb83d9..ca94dd93 100644 --- a/functions.js +++ b/functions.js @@ -16,7 +16,44 @@ function is_opera() { return window.opera; } -function exception_error(location, e, silent) { +function exception_error(location, e, ext_info) { + var msg = format_exception_error(location, e); + + disableHotkeys(); + + try { + + var ebc = document.getElementById("xebContent"); + + if (ebc) { + + Element.show("dialog_overlay"); + Element.show("errorBoxShadow"); + + if (ext_info) { + if (ext_info.responseText) { + ext_info = ext_info.responseText; + } + } + + ebc.innerHTML = + "
Error message:
" + + "
" + msg + "
" + + "
Additional information:
" + + ""; + + } else { + alert(msg); + } + + } catch (e) { + alert(msg); + + } + +} + +function format_exception_error(location, e) { var msg; if (e.fileName) { @@ -34,11 +71,10 @@ function exception_error(location, e, silent) { debug("EXCEPTION: " + msg + ""); - if (!silent) { - alert(msg); - } + return msg; } + function disableHotkeys() { hotkeys_enabled = false; } @@ -406,30 +442,6 @@ function gotoExportOpml() { document.location.href = "opml.php?op=Export"; } -function getActiveFeedId() { -// return getCookie("ttrss_vf_actfeed"); - try { - debug("gAFID: " + active_feed_id); - return active_feed_id; - } catch (e) { - exception_error("getActiveFeedId", e); - } -} - -function activeFeedIsCat() { - return active_feed_is_cat; -} - -function setActiveFeedId(id) { -// return setCookie("ttrss_vf_actfeed", id); - try { - debug("sAFID(" + id + ")"); - active_feed_id = id; - } catch (e) { - exception_error("setActiveFeedId", e); - } -} - function parse_counters(reply, scheduled_call) { try { @@ -532,7 +544,7 @@ function parse_counters(reply, scheduled_call) { } if (ctr > 0) { - feedctr.className = "odd"; + feedctr.className = "feedCtrHasUnread"; if (!feedr.className.match("Unread")) { var is_selected = feedr.className.match("Selected"); @@ -552,7 +564,7 @@ function parse_counters(reply, scheduled_call) { queue: { position:'end', scope: 'EFQ-' + id, limit: 1 } } ); } } else { - feedctr.className = "invisible"; + feedctr.className = "feedCtrNoUnread"; feedr.className = feedr.className.replace("Unread", ""); } } @@ -636,7 +648,7 @@ function all_counters_callback2(transport, async_call) { debug("all_counters_callback2 OUT: " + transport + ""); } catch (e) { - exception_error("all_counters_callback2", e); + exception_error("all_counters_callback2", e, transport); } } @@ -644,7 +656,6 @@ function get_feed_unread(id) { try { return parseInt(document.getElementById("FEEDU-" + id).innerHTML); } catch (e) { - exception_error("get_feed_unread", e, true); return -1; } } @@ -656,7 +667,6 @@ function get_cat_unread(id) { ctr = ctr.replace(")", ""); return parseInt(ctr); } catch (e) { - exception_error("get_feed_unread", e, true); return -1; } } @@ -1035,6 +1045,40 @@ function toggleSelectRow(sender) { } } +function getNextUnreadCat(id) { + try { + var rows = document.getElementById("feedList").getElementsByTagName("LI"); + var feeds = new Array(); + + var unread_only = true; + var is_cat = true; + + for (var i = 0; i < rows.length; i++) { + if (rows[i].id.match("FCAT-")) { + if (rows[i].id == "FCAT-" + id && is_cat || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) { + + var cat_id = parseInt(rows[i].id.replace("FCAT-", "")); + + if (cat_id >= 0) { + if (!unread_only || get_cat_unread(cat_id) > 0) { + feeds.push(cat_id); + } + } + } + } + } + + var idx = feeds.indexOf(id); + if (idx != -1 && idx < feeds.length) { + return feeds[idx+1]; + } else { + return feeds.shift(); + } + + } catch (e) { + exception_error("getNextUnreadCat", e); + } +} function getRelativeFeedId2(id, is_cat, direction, unread_only) { try { @@ -1233,22 +1277,32 @@ function leading_zero(p) { return s; } -function closeInfoBox(cleanup) { - - Element.hide("dialog_overlay"); +function closeErrorBox() { - var box = document.getElementById('infoBox'); - var shadow = document.getElementById('infoBoxShadow'); + if (Element.visible("errorBoxShadow")) { + Element.hide("dialog_overlay"); + Element.hide("errorBoxShadow"); - if (shadow) { - shadow.style.display = "none"; - } else if (box) { - box.style.display = "none"; + enableHotkeys(); } - if (cleanup) box.innerHTML = " "; + return false; +} + +function closeInfoBox(cleanup) { + + if (Element.visible("infoBoxShadow")) { + Element.hide("dialog_overlay"); + + var shadow = document.getElementById('infoBoxShadow'); + var box = document.getElementById('infoBoxShadow'); + + Element.hide(shadow); - enableHotkeys(); + if (cleanup) box.innerHTML = " "; + + enableHotkeys(); + } return false; } @@ -1451,7 +1505,7 @@ function storeInitParam(key, value) { init_params[key] = value; } -function fatalError(code, message) { +function fatalError(code, msg, ext_info) { try { if (code == 6) { @@ -1459,14 +1513,29 @@ function fatalError(code, message) { } else if (code == 5) { window.location.href = "update.php"; } else { - var fe = document.getElementById("fatal_error"); - var fc = document.getElementById("fatal_error_msg"); - if (message == "") message = "Unknown error"; + if (msg == "") msg = "Unknown error"; + + var ebc = document.getElementById("xebContent"); + + if (ebc) { + + Element.show("dialog_overlay"); + Element.show("errorBoxShadow"); + Element.hide("xebBtn"); - fc.innerHTML = " " + message + " (Code " + code + ")"; + if (ext_info) { + if (ext_info.responseText) { + ext_info = ext_info.responseText; + } + } - fe.style.display = "block"; + ebc.innerHTML = + "
Error message:
" + + "
" + msg + "
" + + "
Additional information:
" + + ""; + } } } catch (e) { @@ -1489,6 +1558,39 @@ function getFeedName(id, is_cat) { } } +function filterDlgCheckType(sender) { + + try { + + var ftype = sender[sender.selectedIndex].value; + + var form = document.forms["filter_add_form"]; + + if (!form) { + form = document.forms["filter_edit_form"]; + } + + if (!form) { + debug("filterDlgCheckType: can't find form!"); + return; + } + + // if selected filter type is 5 (Date) enable the modifier dropbox + if (ftype == 5) { + Element.show("filter_dlg_date_mod_box"); + Element.show("filter_dlg_date_chk_box"); + } else { + Element.hide("filter_dlg_date_mod_box"); + Element.hide("filter_dlg_date_chk_box"); + + } + + } catch (e) { + exception_error("filterDlgCheckType", e); + } + +} + function filterDlgCheckAction(sender) { try { @@ -1514,8 +1616,15 @@ function filterDlgCheckAction(sender) { } // if selected action supports parameters, enable params field - if (action == 4 || action == 6) { + if (action == 4 || action == 6 || action == 7) { Element.show(action_param); + if (action != 7) { + Element.show(form.action_param); + Element.hide(form.action_param_label); + } else { + Element.show(form.action_param_label); + Element.hide(form.action_param); + } } else { Element.hide(action_param); } @@ -1526,6 +1635,55 @@ function filterDlgCheckAction(sender) { } +function filterDlgCheckDate() { + try { + var form = document.forms["filter_add_form"]; + + if (!form) { + form = document.forms["filter_edit_form"]; + } + + if (!form) { + debug("filterDlgCheckAction: can't find form!"); + return; + } + + var reg_exp = form.reg_exp.value; + + var query = "backend.php?op=rpc&subop=checkDate&date=" + reg_exp; + + new Ajax.Request(query, { + onComplete: function(transport) { + + var form = document.forms["filter_add_form"]; + + if (!form) { + form = document.forms["filter_edit_form"]; + } + + if (transport.responseXML) { + var result = transport.responseXML.getElementsByTagName("result")[0]; + + if (result && result.firstChild) { + if (result.firstChild.nodeValue == "1") { + + new Effect.Highlight(form.reg_exp, {startcolor : '#00ff00'}); + + return; + } + } + } + + new Effect.Highlight(form.reg_exp, {startcolor : '#ff0000'}); + + } }); + + + } catch (e) { + exception_error("filterDlgCheckDate", e); + } +} + function explainError(code) { return displayDlg("explainError", code); } @@ -1768,26 +1926,48 @@ function addLabelExample() { } if (op == "kw_title") { + if (p.value == "") { + alert("This action requires a parameter."); + return false; + } tmp = tmp + "ttrss_entries.title like '%"+p.value+"%'"; } + if (op == "kw_content") { + if (p.value == "") { + alert("This action requires a parameter."); + return false; + } + tmp = tmp + "ttrss_entries.content like '%"+p.value+"%'"; } if (op == "scoreE") { + if (isNaN(parseInt(p.value))) { + alert("This action expects numeric parameter."); + return false; + } tmp = tmp + "score = " + p.value; } if (op == "scoreG") { + if (isNaN(parseInt(p.value))) { + alert("This action expects numeric parameter."); + return false; + } tmp = tmp + "score > " + p.value; } if (op == "scoreL") { + if (isNaN(parseInt(p.value))) { + alert("This action expects numeric parameter."); + return false; + } tmp = tmp + "score < " + p.value; } if (op == "newerD") { - if (isNaN(parseInt(p))) { + if (isNaN(parseInt(p.value))) { alert("This action expects numeric parameter."); return false; } @@ -1795,7 +1975,7 @@ function addLabelExample() { } if (op == "newerH") { - if (isNaN(parseInt(p))) { + if (isNaN(parseInt(p.value))) { alert("This action expects numeric parameter."); return false; } @@ -1835,3 +2015,75 @@ function labelFieldsCheck(elem) { } } + +function getSelectedFeedsFromBrowser() { + + 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); + } + } + } + + return selected; +} + +function updateFeedBrowser() { + try { + + var query = "backend.php?op=rpc&subop=feedBrowser"; + + var search = document.getElementById("feed_browser_search"); + var limit = document.getElementById("feed_browser_limit"); + + if (limit) { + query = query + "&limit=" + limit[limit.selectedIndex].value; + } + + if (search) { + query = query + "&search=" + param_escape(search.value); + } + + notify_progress("Loading, please wait...", true); + + new Ajax.Request(query, { + onComplete: function(transport) { + notify(''); + + var c = document.getElementById("browseFeedList"); + var r = transport.responseXML.getElementsByTagName("content")[0]; + var nr = transport.responseXML.getElementsByTagName("num-results")[0]; + var sb = document.getElementById("feed_browser_subscribe"); + + if (c && r) { + c.innerHTML = r.firstChild.nodeValue; + } + + if (nr && sb) { + if (nr.getAttribute("value") > 0) { + sb.disabled = false; + } else { + sb.disabled = true; + } + } + + } }); + + + } catch (e) { + exception_error("updateFeedBrowser", e); + } +} + +