]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
headlines subtoolbar, misc api changes
[tt-rss.git] / viewfeed.js
index 9d891ec66dedefb253db83870230899577ba2f1a..7f33824021cb531bb4eafcee76fc6965ed4fe175 100644 (file)
@@ -77,6 +77,11 @@ function view(id, feed_id) {
 
 }
 
+function rowToggleMark(row) {
+
+
+
+}
 
 function toggleMark(id, toggle) {
 
@@ -87,11 +92,11 @@ function toggleMark(id, toggle) {
                return;
        }
 
-       var mark_img = document.getElementById("FMARKPIC-" + id);
-
        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);
 
 //     alert(vfeedu);
 
@@ -101,30 +106,39 @@ function toggleMark(id, toggle) {
                mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+', false)');
                query = query + "&mark=1";
 
-               if (vfeedu) vfeedu.innerHTML = (+vfeedu.innerHTML) + 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) vfeedu.innerHTML = (+vfeedu.innerHTML) - 1;
+               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) {
-                       vfeedctr.className = "odd";
+                       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);
 
 }
@@ -161,16 +175,35 @@ function moveToPost(mode) {
        } 
 }
 
+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");
@@ -179,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;
+}