]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
generated feeds always sorted by updated desc
[tt-rss.git] / viewfeed.js
index c452d0aa9043ea69c4d100085ec15f04866644c0..58b7d3ecbfc6214267ff22317c67b876804c8a0b 100644 (file)
@@ -1,80 +1,43 @@
 var active_post_id = false;
-var total_unread = 0;
 
-var xmlhttp_rpc = false;
-
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5)
-// JScript gives us Conditional compilation, we can cope with old IE versions.
-// and security blocked creation of the objects.
-try {
-       xmlhttp_rpc = new ActiveXObject("Msxml2.XMLHTTP");
-} catch (e) {
-       try {
-               xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
-       } catch (E) {
-               xmlhttp_rpc = false;
-       }
-}
-@end @*/
-
-if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
-       xmlhttp_rpc = new XMLHttpRequest();
-}
+var xmlhttp_rpc = Ajax.getTransport();
 
 function view(id, feed_id) {
-
-//     p_notify("Loading article...");
-
-       var f_document = parent.frames["feeds-frame"].document;
-       var h_document = document;
-       var m_document = parent.document;
-
-       enableHotkeys();
-
-       var crow = h_document.getElementById("RROW-" + id);
-
-/*     if (crow.className.match("Unread")) {
-               var umark = f_document.getElementById("FEEDU-" + feed_id);
-               
-               umark.innerHTML = umark.innerHTML - 1;
+       
+       try {
+               debug("loading article: " + id + "/" + feed_id);
+       
+               var f_document = getFeedsContext().document;
+               var m_document = parent.document;
+       
+               enableHotkeys();
+       
+               var crow = document.getElementById("RROW-" + id);
+       
                crow.className = crow.className.replace("Unread", "");
-
-               if (umark.innerHTML == "0") {
-                       var feedr = f_document.getElementById("FEEDR-" + feed_id);      
-                       feedr.className = feedr.className.replace("Unread", "");
-
-                       var feedctr = f_document.getElementById("FEEDCTR-" + feed_id);
-
-                       if (feedctr) {
-                               feedctr.className = "invisible";
-                       }
-               }
-
-               total_unread--;
-       }        */
-
-       crow.className = crow.className.replace("Unread", "");
-
-       cleanSelected("headlinesList");
-
-       var upd_img_pic = h_document.getElementById("FUPDPIC-" + id);
-
-       if (upd_img_pic) {
-               upd_img_pic.src = "images/blank_icon.gif";
-       } 
-
-       active_post_id = id; 
-       setActiveFeedId(feed_id);
-
-       var content = m_document.getElementById("content-frame");
-
-       if (content) {
-               content.src = "backend.php?op=view&addheader=true&id=" + param_escape(id) +
+       
+               cleanSelected("headlinesList");
+       
+               var upd_img_pic = document.getElementById("FUPDPIC-" + id);
+       
+               if (upd_img_pic) {
+                       upd_img_pic.src = "images/blank_icon.gif";
+               } 
+       
+               active_post_id = id; 
+               setActiveFeedId(feed_id);
+       
+               var content = m_document.getElementById("content-frame");
+       
+               content.src = "backend.php?op=view&id=" + param_escape(id) +
                        "&feed=" + param_escape(feed_id);
+       
+               selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
                markHeadline(active_post_id);
-       }
 
+       } catch (e) {
+               exception_error("view", e);
+       }
 }
 
 function toggleMark(id) {
@@ -92,8 +55,6 @@ function toggleMark(id) {
        var vfeedu = f_document.getElementById("FEEDU--1");
        var crow = document.getElementById("RROW-" + id);
 
-//     alert(vfeedu);
-
        if (mark_img.alt != "Reset mark") {
                mark_img.src = "images/mark_set.png";
                mark_img.alt = "Reset mark";
@@ -131,9 +92,9 @@ function toggleMark(id) {
                }
        }
 
-       xmlhttp_rpc.open("GET", query, true);
-       xmlhttp_rpc.onreadystatechange=rpc_pnotify_callback;
-       xmlhttp_rpc.send(null);
+       debug("toggle starred for aid " + id);
+
+       new Ajax.Request(query);
 
 }
 
@@ -178,56 +139,40 @@ function viewfeed(id) {
        f.viewfeed(id, 0);
 }
 
-function localHotkeyHandler(keycode) {
-
-       if (keycode == 78 || keycode == 40) { // n, down
-               return moveToPost('next');
-       }
-
-       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");
+function toggleUnread(id, cmode) {
+       try {
+               if (!xmlhttp_ready(xmlhttp_rpc)) {
+                       printLockingError();
+                       return;
                }
-       }
+       
+               var row = document.getElementById("RROW-" + id);
+               if (row) {
+                       var nc = row.className;
+                       nc = nc.replace("Unread", "");
+                       nc = nc.replace("Selected", "");
+
+                       if (row.className.match("Unread")) {
+                               row.className = nc;
+                       } else {
+                               row.className = nc + "Unread";
+                       }
 
-       if (keycode == 82) { // r
-               return parent.scheduleFeedUpdate(true);
-       }
+                       if (!cmode) cmode = 2;
 
-       var f_doc = parent.frames["feeds-frame"].document;
-       var feedlist = f_doc.getElementById('feedList');
+                       var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
+                               param_escape(id) + "&cmode=" + param_escape(cmode);
 
-       if (keycode == 74) { // j
-               var feed = getActiveFeedId();
-               var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
-               if (new_feed) viewfeed(new_feed, 0, '');
-       }
+                       xmlhttp_rpc.open("GET", query, true);
+                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
+                       xmlhttp_rpc.send(null);
 
-       if (keycode == 75) { // k
-               var feed = getActiveFeedId();
-               var new_feed = getRelativeFeedId(feedlist, feed, 'next');
-               if (new_feed) viewfeed(new_feed, 0, '');
-       }
+               }
 
-// FIXME
-//     if (keycode == 85) {
-//             return viewfeed(active_feed_id, active_offset, "ForceUpdate");
-//     }
 
-       if (keycode == 83) { // s
-               selectionToggleMarked();
+       } catch (e) {
+               exception_error("toggleUnread", e);
        }
-       
-//     alert("KC: " + keycode);
-
 }
 
 function selectionToggleUnread(cdm_mode) {
@@ -374,6 +319,27 @@ function cdmSelectArticles(mode) {
        }
 }
 
+function catchupPage() {
+       selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, 'Unread', true);
+       selectionToggleUnread();
+       selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false);
+}
+
+
 function init() {
-       document.onkeydown = hotkey_handler;
+       if (arguments.callee.done) return;
+       arguments.callee.done = true;           
+
+       if (parent.frames["feeds-frame"]) {
+               document.onkeydown = hotkey_handler;
+       }
+
+       var hw = document.getElementById("headlinesList").scrollHeight;
+       var pw = parent.document.getElementById("headlines").scrollHeight;
+
+       if (hw >= pw) {
+               var bt = document.getElementById("headlineActionsBottom");
+               bt.className = "headlinesSubToolbar";
+       }
+       
 }