]> git.wh0rd.org - tt-rss.git/blobdiff - functions.js
total pigcall (closes #42)
[tt-rss.git] / functions.js
index e27beac288e2f5915a7e550c0502ffec61db6627..e71e748e952fbd30c6235790a4f574701ef038d3 100644 (file)
@@ -129,15 +129,11 @@ function hotkey_handler(e) {
                seq = seq + "" + keycode;
        }
 
-       var piggie = document.getElementById("piggie");
-
-       if (piggie) {
-
-               if (seq.match("807371717369")) {
-                       localPiggieFunction(true);
-               } else {
-                       localPiggieFunction(false);
-               }
+       if (seq.match("807371717369")) {
+               seq = "";
+               localPiggieFunction(true);
+       } else {
+               localPiggieFunction(false);
        }
        
        if (typeof localHotkeyHandler != 'undefined') {
@@ -165,7 +161,7 @@ function cleanSelectedList(element) {
                        if (child.id == "feedCatHolder") {
                                var fcat = child.lastChild;
                                for (j = 0; j < fcat.childNodes.length; j++) {
-                                       var feed = fcat.childNodes[j];
+                                       var feed = fcat.childNodes[j];                                  
                                        feed.className = feed.className.replace("Selected", "");
                                }               
                        }
@@ -355,9 +351,15 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
        xmlhttp_rpc = new XMLHttpRequest();
 }
 
-function parse_counters(reply, f_document) {
+function parse_counters(reply, f_document, title_obj) {
        try {
                for (var l = 0; l < reply.childNodes.length; l++) {
+                       if (!reply.childNodes[l] ||
+                               typeof(reply.childNodes[l].getAttribute) == "undefined") {
+                               // where did this come from?
+                               continue;
+                       }
+
                        var id = reply.childNodes[l].getAttribute("id");
                        var t = reply.childNodes[l].getAttribute("type");
                        var ctr = reply.childNodes[l].getAttribute("counter");
@@ -365,8 +367,8 @@ function parse_counters(reply, f_document) {
                        var has_img = reply.childNodes[l].getAttribute("hi");
        
                        if (id == "global-unread") {
-                               parent.global_unread = ctr;
-                               parent.updateTitle();
+                               title_obj.global_unread = ctr;
+                               title_obj.updateTitle();
                                continue;
                        }
        
@@ -419,6 +421,9 @@ function parse_counters(reply, f_document) {
        }
 }
 
+// this one is called from feedlist context
+// thus title_obj passed to parse_counters is parent (e.g. main ttrss window)
+
 function all_counters_callback() {
        if (xmlhttp_rpc.readyState == 4) {
                try {
@@ -430,7 +435,7 @@ function all_counters_callback() {
                        var reply = xmlhttp_rpc.responseXML.firstChild;
                        var f_document = parent.frames["feeds-frame"].document;
 
-                       parse_counters(reply, f_document);
+                       parse_counters(reply, f_document, parent);
        
                } catch (e) {
                        exception_error("all_counters_callback", e);
@@ -494,8 +499,12 @@ function popupHelp(tid) {
 
 function hideOrShowFeeds(doc, hide) {
 
+       if (!doc.styleSheets) return;
+
        var css_rules = doc.styleSheets[0].cssRules;
 
+       if (!css_rules || !css_rules.length) return;
+
        for (i = 0; i < css_rules.length; i++) {
                var rule = css_rules[i];
 
@@ -511,8 +520,13 @@ function hideOrShowFeeds(doc, hide) {
 
 }
 
-function fatalError(code) {
-       window.location = "error.php?c=" + param_escape(code);
+function fatalError(code, params) {
+       if (!params) {
+               window.location = "error.php?c=" + param_escape(code);
+       } else {
+               window.location = "error.php?c=" + param_escape(code) + 
+                       "&p=" + param_escape(params);
+       }
 }
 
 function selectTableRow(r, do_select) {
@@ -523,8 +537,28 @@ function selectTableRow(r, do_select) {
        }
 }
 
+function selectTableRowById(elem_id, check_id, do_select) {
+
+       try {
+
+               var row = document.getElementById(elem_id);
+
+               if (row) {
+                       selectTableRow(row, do_select);
+               }               
+
+               var check = document.getElementById(check_id);
+
+               if (check) {
+                       check.checked = do_select;
+               }
+       } catch (e) {
+               exception_error("selectTableRowById", e);
+       }
+}
+
 function selectTableRowsByIdPrefix(content_id, prefix, check_prefix, do_select, 
-       classcheck) {
+       classcheck, reset_others) {
 
        var content = document.getElementById(content_id);
 
@@ -538,14 +572,34 @@ function selectTableRowsByIdPrefix(content_id, prefix, check_prefix, do_select,
        
                        if (content.rows[i].id.match(prefix)) {
                                selectTableRow(content.rows[i], do_select);
+                       
+                               var row_id = content.rows[i].id.replace(prefix, "");
+                               var check = document.getElementById(check_prefix + row_id);
+
+                               if (check) {
+                                       check.checked = do_select;
+                               }
+                       } else if (reset_others) {
+                               selectTableRow(content.rows[i], false);
+
+                               var row_id = content.rows[i].id.replace(prefix, "");
+                               var check = document.getElementById(check_prefix + row_id);
+
+                               if (check) {
+                                       check.checked = false;
+                               }
+
                        }
+               } else if (reset_others) {
+                       selectTableRow(content.rows[i], false);
 
                        var row_id = content.rows[i].id.replace(prefix, "");
                        var check = document.getElementById(check_prefix + row_id);
 
                        if (check) {
-                               check.checked = do_select;
+                               check.checked = false;
                        }
+
                }
        }
 }
@@ -588,6 +642,20 @@ function toggleSelectRowById(sender, id) {
        }
 }
 
+function toggleSelectListRow(sender) {
+       var parent_row = sender.parentNode;
+
+       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", "");
+               }
+       }
+}
+
 
 function toggleSelectRow(sender) {
        var parent_row = sender.parentNode.parentNode;
@@ -741,4 +809,15 @@ function showBlockElement(id) {
        } 
 }
 
+function hideParentElement(e) {
+       e.parentNode.style.display = "none";
+}
 
+function dropboxSelect(e, v) {
+       for (i = 0; i < e.length; i++) {
+               if (e[i].value == v) {
+                       e.selectedIndex = i;
+                       break;
+               }
+       }
+}