]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
headlines subtoolbar, misc api changes
[tt-rss.git] / viewfeed.js
index 1fade859858a5dd39b7d4dfbb0af36fc6ff4815b..7f33824021cb531bb4eafcee76fc6965ed4fe175 100644 (file)
@@ -1,4 +1,3 @@
-var active_feed_id = false;
 var active_post_id = false;
 var total_unread = 0;
 
@@ -9,7 +8,7 @@ var xmlhttp_rpc = false;
 // JScript gives us Conditional compilation, we can cope with old IE versions.
 // and security blocked creation of the objects.
 try {
-       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+       xmlhttp_rpc = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
        try {
                xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
@@ -25,25 +24,27 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
 
 function view(id, feed_id) {
 
-       p_notify("Loading article...");
+//     p_notify("Loading article...");
 
-       enableHotkeys();
+       var f_document = parent.frames["feeds-frame"].document;
+       var h_document = document;
+       var m_document = parent.document;
 
-       var crow = document.getElementById("RROW-" + id);
+       enableHotkeys();
 
-       var f_doc = parent.frames["feeds-frame"].document;
+       var crow = h_document.getElementById("RROW-" + id);
 
-       if (crow.className.match("Unread")) {
-               var umark = f_doc.getElementById("FEEDU-" + feed_id);
+/*     if (crow.className.match("Unread")) {
+               var umark = f_document.getElementById("FEEDU-" + feed_id);
                
                umark.innerHTML = umark.innerHTML - 1;
                crow.className = crow.className.replace("Unread", "");
 
                if (umark.innerHTML == "0") {
-                       var feedr = f_doc.getElementById("FEEDR-" + feed_id);   
+                       var feedr = f_document.getElementById("FEEDR-" + feed_id);      
                        feedr.className = feedr.className.replace("Unread", "");
 
-                       var feedctr = f_doc.getElementById("FEEDCTR-" + feed_id);
+                       var feedctr = f_document.getElementById("FEEDCTR-" + feed_id);
 
                        if (feedctr) {
                                feedctr.className = "invisible";
@@ -51,64 +52,93 @@ function view(id, feed_id) {
                }
 
                total_unread--;
-       }       
+       }        */
 
+       crow.className = crow.className.replace("Unread", "");
 
        cleanSelected("headlinesList");
 
-       var upd_img_pic = document.getElementById("FUPDPIC-" + id);
+       var upd_img_pic = h_document.getElementById("FUPDPIC-" + id);
 
        if (upd_img_pic) {
-               upd_img_pic.src = "images/blank_icon.png";
+               upd_img_pic.src = "images/blank_icon.gif";
        } 
 
-       var unread_rows = getVisibleUnreadHeadlines();
-
-       if (unread_rows.length == 0) {
-               var button = document.getElementById("btnCatchupPage");
-               if (button) {
-                       button.className = "disabledButton";
-                       button.href = "";
-               }
-       }
-
        active_post_id = id; 
-       active_feed_id = feed_id;
+       setActiveFeedId(feed_id);
 
-       var content = parent.document.getElementById("content-frame");
+       var content = m_document.getElementById("content-frame");
 
        if (content) {
-               content.src = "backend.php?op=view&addheader=true&id=" + param_escape(id);
+               content.src = "backend.php?op=view&addheader=true&id=" + param_escape(id) +
+                       "&feed=" + param_escape(feed_id);
                markHeadline(active_post_id);
        }
+
 }
 
+function rowToggleMark(row) {
+
+
+
+}
 
 function toggleMark(id, toggle) {
 
+       var f_document = parent.frames["feeds-frame"].document;
+
        if (!xmlhttp_ready(xmlhttp_rpc)) {
                printLockingError();
                return;
        }
 
+       var query = "backend.php?op=rpc&id=" + id + "&subop=mark";
+
        var mark_img = document.getElementById("FMARKPIC-" + id);
+       var vfeedu = f_document.getElementById("FEEDU--1");
+       var crow = document.getElementById("RROW-" + id);
 
-       var query = "backend.php?op=rpc&id=" + id + "&subop=mark";
+//     alert(vfeedu);
 
        if (toggle == true) {
                mark_img.src = "images/mark_set.png";
                mark_img.alt = "Reset mark";
                mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+', false)');
                query = query + "&mark=1";
+
+               if (vfeedu && crow.className.match("Unread")) {
+                       vfeedu.innerHTML = (+vfeedu.innerHTML) + 1;
+               }
+
        } else {
                mark_img.src = "images/mark_unset.png";
                mark_img.alt = "Set mark";
                mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+', true)');
                query = query + "&mark=0";
+
+               if (vfeedu && crow.className.match("Unread")) {
+                       vfeedu.innerHTML = (+vfeedu.innerHTML) - 1;
+               }
+
+       }
+
+       var vfeedctr = f_document.getElementById("FEEDCTR--1");
+       var vfeedr = f_document.getElementById("FEEDR--1");
+
+       if (vfeedu && vfeedctr) {
+               if ((+vfeedu.innerHTML) > 0) {
+                       if (crow.className.match("Unread") && !vfeedr.className.match("Unread")) {
+                               vfeedr.className = vfeedr.className + "Unread";
+                               vfeedctr.className = "odd";
+                       }
+               } else {
+                       vfeedctr.className = "invisible";
+                       vfeedr.className = vfeedr.className.replace("Unread", "");
+               }
        }
 
        xmlhttp_rpc.open("GET", query, true);
-       xmlhttp_rpc.onreadystatechange=rpc_notify_callback;
+       xmlhttp_rpc.onreadystatechange=rpc_pnotify_callback;
        xmlhttp_rpc.send(null);
 
 }
@@ -134,27 +164,46 @@ function moveToPost(mode) {
 
        if (mode == "next") {
                if (next_id != undefined) {
-                       view(next_id, active_feed_id);
+                       view(next_id, getActiveFeedId());
                }
        }
 
        if (mode == "prev") {
                if ( prev_id != undefined) {
-                       view(prev_id, active_feed_id);
+                       view(prev_id, getActiveFeedId());
                }
        } 
 }
 
+function viewfeed(id) {
+       var f = parent.frames["feeds-frame"];
+       f.viewfeed(id, 0);
+}
+
 function localHotkeyHandler(keycode) {
 
-       if (keycode == 78) {
+       if (keycode == 78 || keycode == 40) { // n, down
                return moveToPost('next');
        }
 
-       if (keycode == 80) {
+       if (keycode == 80 || keycode == 38) { // p, up
                return moveToPost('prev');
        } 
 
+       if (keycode == 65) { // a
+               return parent.toggleDispRead();
+       }
+
+       if (keycode == 85) { // u
+               if (parent.getActiveFeedId()) {
+                       return parent.viewfeed(parent.getActiveFeedId(), 0, "ForceUpdate");
+               }
+       }
+
+       if (keycode == 82) { // r
+               return parent.scheduleFeedUpdate(true);
+       }
+
 // FIXME
 //     if (keycode == 85) {
 //             return viewfeed(active_feed_id, active_offset, "ForceUpdate");
@@ -163,3 +212,93 @@ function localHotkeyHandler(keycode) {
 //     alert("KC: " + keycode);
 
 }
+
+function toggleUnread() {
+       try {
+               if (!xmlhttp_ready(xmlhttp_rpc)) {
+                       printLockingError();
+                       return;
+               }
+       
+               var rows = getSelectedTableRowIds("headlinesList", "RROW", "RCHK");
+
+               for (i = 0; i < rows.length; i++) {
+                       var row = document.getElementById("RROW-" + rows[i]);
+                       if (row) {
+                               var nc = row.className;
+                               nc = nc.replace("Unread", "");
+                               nc = nc.replace("Selected", "");
+
+                               if (row.className.match("Unread")) {
+                                       row.className = nc + "Selected";
+                               } else {
+                                       row.className = nc + "UnreadSelected";
+                               }
+                       }
+               }
+
+               if (rows.length > 0) {
+
+                       var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
+                               param_escape(rows.toString()) + "&cmode=2";
+
+                       xmlhttp_rpc.open("GET", query, true);
+                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
+                       xmlhttp_rpc.send(null);
+
+               }
+
+       } catch (e) {
+               exception_error(e);
+       }
+}
+
+function toggleStarred() {
+       try {
+               if (!xmlhttp_ready(xmlhttp_rpc)) {
+                       printLockingError();
+                       return;
+               }
+       
+               var rows = getSelectedTableRowIds("headlinesList", "RROW", "RCHK");
+
+               for (i = 0; i < rows.length; i++) {
+                       var row = document.getElementById("RROW-" + rows[i]);
+                       var mark_img = document.getElementById("FMARKPIC-" + rows[i]);
+
+                       if (row && mark_img) {
+
+                               if (mark_img.alt == "Set mark") {
+                                       mark_img.src = "images/mark_set.png";
+                                       mark_img.alt = "Reset mark";
+                                       mark_img.setAttribute('onclick', 
+                                               'javascript:toggleMark('+rows[i]+', false)');
+
+                               } else {
+                                       mark_img.src = "images/mark_unset.png";
+                                       mark_img.alt = "Set mark";
+                                       mark_img.setAttribute('onclick', 
+                                               'javascript:toggleMark('+rows[i]+', true)');
+                               }
+                       }
+               }
+
+               if (rows.length > 0) {
+
+                       var query = "backend.php?op=rpc&subop=markSelected&ids=" +
+                               param_escape(rows.toString()) + "&cmode=2";
+
+                       xmlhttp_rpc.open("GET", query, true);
+                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
+                       xmlhttp_rpc.send(null);
+
+               }
+
+       } catch (e) {
+               exception_error(e);
+       }
+}
+
+function init() {
+       document.onkeydown = hotkey_handler;
+}