]> git.wh0rd.org Git - tt-rss.git/commitdiff
css-based layout + required fixes
authorAndrew Dolgov <fox@bah.spb.su>
Thu, 28 Sep 2006 12:00:03 +0000 (13:00 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Thu, 28 Sep 2006 12:00:03 +0000 (13:00 +0100)
backend.php
feedlist.js
functions.js
tt-rss.css
tt-rss.js
tt-rss.php
version.php
viewfeed.js

index 719cb1b162c17529469c2c5648a75082537a9148..cfe322b72732e4bd42080f4ddfd0c68404f9602a 100644 (file)
 
        function outputFeedList($link, $tags = false) {
 
-               print "<html><head>
+/*             print "<html><head>
                        <title>Tiny Tiny RSS : Feedlist</title>
                        <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\">";
 
                                        document.addEventListener(\"DOMContentLoaded\", init, null);
                                }
                                window.onload = init;
-                       </script>";
+                       </script>"; */
 
                print "<ul class=\"feedList\" id=\"feedList\">\n";
 
 
                print "</ul>";
 
-               print '
-                       <script type="text/javascript">
-                               /* for IE */
-                               function statechange() {
-                                       if (document.readyState == "interactive") init();
-                               }
-                       
-                               if (document.readyState) {      
-                                       if (document.readyState == "interactive" || document.readyState == "complete") {
-                                               init();
-                                       } else {
-                                               document.onreadystatechange = statechange;
-                                       }
-                               }
-                       </script></body></html>';
+#              print '
+#                      <script type="text/javascript">
+#                              /* for IE */
+#                              function statechange() {
+#                                      if (document.readyState == "interactive") init();
+#                              }
+#                      
+#                              if (document.readyState) {      
+#                                      if (document.readyState == "interactive" || document.readyState == "complete") {
+#                                              init();
+#                                      } else {
+#                                              document.onreadystatechange = statechange;
+#                                      }
+#                              }
+#                      </script></body></html>'; 
        }
 
 
                        FROM ttrss_entries,ttrss_user_entries
                        WHERE   id = '$id' AND ref_id = id AND owner_uid = " . $_SESSION["uid"]);
 
-               print "<html><head>
+/*             print "<html><head>
                        <title>Tiny Tiny RSS : Article $id</title>
                        <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\">";
 
                        <script type=\"text/javascript\" src=\"prototype.js\"></script>
                        <script type=\"text/javascript\" src=\"functions.js?$script_dt_add\"></script>
                        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
-                       </head><body $rtl_tag>";
+                       </head><body $rtl_tag>"; */
 
                if ($result) {
 
                        </script>";
                }
 
-               print "</body></html>";
+//             print "</body></html>";
        }
 
        if ($op == "viewfeed") {
 
                if ($subop == "undefined") $subop = "";
 
-               print "<html><head>
+/*             print "<html><head>
                        <title>Tiny Tiny RSS : Feed $feed</title>
                        <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\">";
 
                } else {
                        print "<link title=\"Compact Stylesheet\" rel=\"alternate stylesheet\" 
                                        type=\"text/css\" href=\"tt-rss_compact.css\"/>";
-               }
+               } */
 
                if ($subop == "CatchupSelected") {
                        $ids = split(",", db_escape_string($_GET["ids"]));
 
                $script_dt_add = get_script_dt_add();
 
-               print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">  
+/*             print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">  
                        <script type=\"text/javascript\" src=\"prototype.js\"></script>
                        <script type=\"text/javascript\" src=\"functions.js?$script_dt_add\"></script>
                        <script type=\"text/javascript\" src=\"viewfeed.js?$script_dt_add\"></script>
                                document.addEventListener(\"DOMContentLoaded\", init, null);
                        }
                        window.onload = init;
-                       </script>";
+                       </script>"; */
 
                /// START /////////////////////////////////////////////////////////////////////////////////
 
 
                print "</div>";
 
-               print "
-                       <script type=\"text/javascript\">
-                               try {
-                                       document.onkeydown = hotkey_handler;
-                                       try {
-                                               parent.update_all_counters(\"$feed\");
-                                       } catch (e) {
-                                               // this is workaround against mysterious permission
-                                               // denied feature/bug of firefox (ticket #73)
-                                               // if call from this context failed - ignore silently
-                                               exception_error(\"viewfeed/footer1/counters\", e, true);
-                                       }
-                               } catch (e) {
-                                       exception_error(\"viewfeed/footer1\", e);
-                               }
-
-                               /* for IE */
-                               function statechange() {
-                                       if (document.readyState == \"interactive\") init();
-                               }
-
-                               if (document.readyState) {      
-                                       if (document.readyState == \"interactive\" || document.readyState == \"complete\") {
-                                               init();
-                                       } else {
-                                               document.onreadystatechange = statechange;
-                                       }
-                               }
-                       </script>";
-
-               print "</body></html>";
+#              print "
+#                      <script type=\"text/javascript\">
+#                              try {
+#                                      document.onkeydown = hotkey_handler;
+#                                      try {
+#                                              parent.update_all_counters(\"$feed\");
+#                                      } catch (e) {
+#                                              // this is workaround against mysterious permission
+#                                              // denied feature/bug of firefox (ticket #73)
+#                                              // if call from this context failed - ignore silently
+#                                              exception_error(\"viewfeed/footer1/counters\", e, true);
+#                                      }
+#                              } catch (e) {
+#                                      exception_error(\"viewfeed/footer1\", e);
+#                              }
+#
+#                              /* for IE */
+#                              function statechange() {
+#                                      if (document.readyState == \"interactive\") init();
+#                              }
+#
+#                              if (document.readyState) {      
+#                                      if (document.readyState == \"interactive\" || document.readyState == \"complete\") {
+#                                              init();
+#                                      } else {
+#                                              document.onreadystatechange = statechange;
+#                                      }
+#                              }
+#                      </script>";
+#
+#              print "</body></html>";
        }
 
        if ($op == "pref-feeds") {
index b3c2b833a6efe2bde09fb332c920bd895e88ec08..df1e17fb6790456e75cce67c510b23a72175edb0 100644 (file)
@@ -5,31 +5,30 @@ function viewCategory(cat) {
        viewfeed(cat, '', true);
 }
 
+function feedlist_callback() {
+       if (xmlhttp.readyState == 4) {
+               var f = document.getElementById("feeds-frame");
+               f.innerHTML = xmlhttp.responseText;
+       }
+}
+
 function viewfeed(feed, subop, is_cat, subop_param) {
        try {
-       
+
                enableHotkeys();
 
                var toolbar_query = parent.Form.serialize("main_toolbar_form");
-               var toolbar_form = parent.document.forms["main_toolbar_form"];
+               var toolbar_form = document.forms["main_toolbar_form"];
 
-               if (parent.document.forms["main_toolbar_form"].query) {
+               if (document.forms["main_toolbar_form"].query) {
                        toolbar_form.query.value = "";
                }
 
-//             setCookie("ttrss_vf_limit", toolbar_form.limit[toolbar_form.limit.selectedIndex].value);
-//             setCookie("ttrss_vf_vmode", toolbar_form.view_mode[toolbar_form.view_mode.selectedIndex].value);
-
-               storeInitParam("toolbar_limit", 
+/*             storeInitParam("toolbar_limit", 
                        toolbar_form.limit[toolbar_form.limit.selectedIndex].value);
 
                storeInitParam("toolbar_view_mode", 
-                       toolbar_form.view_mode[toolbar_form.view_mode.selectedIndex].value); 
-
-/*             var sp = new Object();
-               sp["toolbar_limit"] = toolbar_form.limit[toolbar_form.limit.selectedIndex].value;
-               sp["toolbar_view_mode"] = toolbar_form.view_mode[toolbar_form.view_mode.selectedIndex].value;
-               storeInitParams(sp); */
+                       toolbar_form.view_mode[toolbar_form.view_mode.selectedIndex].value);  */
 
                var query = "backend.php?op=viewfeed&feed=" + feed + "&" +
                        toolbar_query + "&subop=" + param_escape(subop);
@@ -56,18 +55,6 @@ function viewfeed(feed, subop, is_cat, subop_param) {
 
                if (subop == "MarkAllRead") {
 
-/*                     var feedr = document.getElementById("FEEDR-" + feed);
-                       var feedctr = document.getElementById("FEEDCTR-" + feed);
-
-                       if (feedr && feedctr) {
-               
-                               feedctr.className = "invisible";
-       
-                               if (feedr.className.match("Unread")) {
-                                       feedr.className = feedr.className.replace("Unread", "");
-                               }
-                       } */
-
                        var feedlist = document.getElementById('feedList');
                        
                        var next_unread_feed = getRelativeFeedId(feedlist,
@@ -93,12 +80,6 @@ function viewfeed(feed, subop, is_cat, subop_param) {
                        query = query + "&ts=" + timestamp
                }
 
-               debug(query);
-
-               headlines_frame.location.href = query;
-       
-//             cleanSelectedList("feedList");
-       
                if (!activeFeedIsCat()) {
                        var feedr = document.getElementById("FEEDR-" + getActiveFeedId());
                        if (feedr && !feedr.className.match("Selected")) {      
@@ -106,8 +87,19 @@ function viewfeed(feed, subop, is_cat, subop_param) {
                        } 
                }
                
-               parent.disableContainerChildren("headlinesToolbar", false);
-               parent.Form.enable("main_toolbar_form");
+               disableContainerChildren("headlinesToolbar", false);
+               Form.enable("main_toolbar_form");
+
+               debug(query);
+
+               if (xmlhttp_ready(xmlhttp)) {
+                       xmlhttp.open("GET", query, true);
+                       xmlhttp.onreadystatechange=headlines_callback;
+                       xmlhttp.send(null);
+               } else {
+                       debug("xmlhttp busy (@feeds)");
+               }  
+
 
        } catch (e) {
                exception_error("viewfeed", e);
@@ -147,7 +139,7 @@ function toggleCollapseCat(cat) {
        }
 }
 
-function init() {
+function feedlist_init() {
        try {
                if (arguments.callee.done) return;
                arguments.callee.done = true;           
index 6fbabb69d0f730ecd07ee52fc92ab74955d5e67a..ccf2bab16151f36b6036e0aae58616e0d7a3a3f6 100644 (file)
@@ -162,6 +162,8 @@ function hotkey_handler(e) {
                var keycode;
        
                if (!hotkeys_enabled) return;
+
+               return; //fixme disables for now
        
                if (window.event) {
                        keycode = window.event.keyCode;
@@ -468,8 +470,8 @@ function setActiveFeedId(id) {
 
 function parse_counters(reply, scheduled_call) {
        try {
-               var f_document = getFeedsContext().document;
-               var title_obj = getMainContext();
+               var f_document = document;
+               var title_obj = this.window;
 
                var feeds_found = 0;
 
@@ -602,7 +604,7 @@ function all_counters_callback() {
                                return;
                        }
 
-                       debug("in all_counters_callback");
+                       debug("in all_counters_callback : " + xmlhttp_rpc.responseXML);
 
                        var reply = xmlhttp_rpc.responseXML.firstChild;
 
@@ -1287,36 +1289,20 @@ function filterCR(e)
 }
 
 function getMainContext() {
-       if (parent.window != window) {
-               return parent.window;
-       } else {
-               return this.window;
-       }
+       return this.window;
 }
 
 function getFeedsContext() {
-       try {
-               return getMainContext().frames["feeds-frame"];
-       } catch (e) {
-               exception_error("getFeedsContext", e);
-       }
+       return this.window;
 }
 
 function getContentContext() {
-       try {
-               return getMainContext().frames["content-frame"];
-       } catch (e) {
-               exception_error("getContentContext", e);
-       }
+       return this.window;
 }
 
 
 function getHeadlinesContext() {
-       try {
-               return getMainContext().frames["headlines-frame"];
-       } catch (e) {
-               exception_error("getHeadlinesContext", e);
-       }
+       return this.window;
 }
 
 var debug_last_class = "even";
index 337797e735563da9ca168ffad74ef361ec153e8a..29f855a0dfc7b4c7483dba4b0146c0b8a4fd292d 100644 (file)
@@ -176,44 +176,44 @@ ul.feedList li {
        margin : 0px;
 }
 
-ul.feedlist li.feedUnread, 
-ul.feedlist li.errorUnread, 
-ul.feedlist li.labelUnread, 
-ul.feedlist li.virtUnread,
-ul.feedlist li.tagUnread {
+li.feedUnread, 
+li.errorUnread, 
+li.labelUnread, 
+li.virtUnread,
+li.tagUnread {
        font-weight : bold;
 }
 
-ul.feedlist li.errorSelected a,
-ul.feedlist li.error a,
-ul.feedlist li.errorUnread a,
-ul.feedlist li.errorUnreadSelected a {
+li.errorSelected a,
+li.error a,
+li.errorUnread a,
+li.errorUnreadSelected a {
        color : #f04040;
 }
 
-ul.feedlist li.feedSelected a,
-ul.feedlist li.labelSelected a,
-ul.feedlist li.virtSelected a,
-ul.feedlist li.tagSelected a {
+li.feedSelected a,
+li.labelSelected a,
+li.virtSelected a,
+li.tagSelected a {
        color : #4684ff;
 }
 
-ul.feedlist li.feedUnreadSelected a,
-ul.feedlist li.labelUnreadSelected a,
-ul.feedlist li.virtUnreadSelected a,
-ul.feedlist li.tagUnreadSelected a {
+li.feedUnreadSelected a,
+li.labelUnreadSelected a,
+li.virtUnreadSelected a,
+li.tagUnreadSelected a {
        color : #4684ff;
 }
 
-ul.feedlist li.feedUnreadSelected,
-ul.feedlist li.errorUnreadSelected,
-ul.feedlist li.labelUnreadSelected,
-ul.feedlist li.virtUnreadSelected,
-ul.feedlist li.tagUnreadSelected {
+li.feedUnreadSelected,
+li.errorUnreadSelected,
+li.labelUnreadSelected,
+li.virtUnreadSelected,
+li.tagUnreadSelected {
        font-weight : bold;
 }
 
-ul.feedList li.feed {
+li.feed {
        display : block;
 }
 
@@ -1060,14 +1060,14 @@ a.cdmToggleLink:hover {
 }
 
 #debug_output {
-       width : 400;
-       height : 200;
-       right : 20;
-       bottom : 20;
+       position : absolute;
+       width : 400px;
+       height : 200px;
+       right : 20px;
+       bottom : 20px;
+       z-index : 999;
        background-color : white;
        display : none;
-       z-index : 999;
-       position : absolute;
        border : 1px solid #c0c0c0;
        overflow : auto;
        margin : 0px;
@@ -1223,3 +1223,88 @@ table.loginForm2 .innerLoginCell {
 #milestoneDetails {
        display : none;
 }
+
+/* layout */
+
+#header {
+       position : absolute;
+       white-space: nowrap;
+       top : 10px;
+       left : 15px;
+       right : 5px;
+       height : 40px;
+       color : #4684ff;
+       font-size : x-small;
+}
+
+#feeds-holder {
+       border-width : 1px 1px 1px 0px;
+       border-style : solid;
+       border-color : #88b0f0;
+       top : 50px;
+       left : 0px;
+       position : absolute;
+       width : 260px;
+       overflow : auto;
+       bottom : 50px;
+}
+
+#toolbar {
+       position : absolute;
+       left : 261px;
+       padding : 5px 10px 5px 5px;
+       top : 50px;
+       right : 0px;
+       white-space: nowrap;
+       height : 30px;
+       background-image : url("images/toolbar.png");
+       background-position : bottom left;
+       background-repeat : repeat-x;
+       font-size : small;
+}
+
+#headlines-frame {
+       position : absolute;
+       border-width : 1px 0px 0px 0px;
+       border-style : solid;
+       border-color : #88b0f0;
+       left : 260px;
+       height : 300px;
+       top : 85px;
+       right : 0px;
+       overflow : auto;
+       font-size : small;
+}
+
+#content-frame {
+       position : absolute;
+       border-width : 1px 0px 1px 0px;
+       border-style : solid;
+       border-color : #88b0f0;
+       overflow : auto;
+       top : 390px;
+       left : 260px;
+       bottom : 50px;
+       right : 0px;
+}
+
+#footer {
+       position : absolute;
+       bottom : 0px;
+       height : 30px;
+       text-align : center;
+       color : gray;
+       font-size : x-small;
+       background-image : url("images/footer.png");
+       background-position : top left;
+       background-repeat : repeat-x; 
+       background-color : white;
+       right : 0px;
+       left : 0px;
+       padding : 10px;
+}
+
+#headlinesContainer {
+       margin-left : 1px;
+       background-color : white;
+}
index 597dd2fa40367d707714158b923e280330c364c9..bcbadcb5246cf73d33dab433cdeedd4f8d48c92e 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -222,9 +222,20 @@ function updateFeedList(silent, fetch) {
        
        if (fetch) query_str = query_str + "&fetch=yes";
 
-       var feeds_frame = document.getElementById("feeds-frame");
+//     var feeds_frame = document.getElementById("feeds-frame");
+//     feeds_frame.src = query_str;
+
+       debug("updateFeedList");
+
+       if (xmlhttp_ready(xmlhttp)) {
+               xmlhttp.open("GET", query_str, true);
+               xmlhttp.onreadystatechange=feedlist_callback;
+               xmlhttp.send(null);
+       } else {
+               debug("xmlhttp busy");
+               //printLockingError();
+       }   
 
-       feeds_frame.src = query_str;
 }
 
 function catchupAllFeeds() {
@@ -382,9 +393,11 @@ function resize_feeds_frame() {
        if (th) {
                header_height = th.scrollHeight;
        }       
-        
-       f.style.height = document.body.scrollHeight - footer_height - 
-               header_height - 50 + "px";
+       
+       if (f) {
+               f.style.height = document.body.scrollHeight - footer_height - 
+                       header_height - 50 + "px";
+       }
 }
 
 function init_second_stage() {
index 1315e3aa170d5b12957426041dc7862ed833233d..a3a7f465c7389567a16b0046e6136cef9c747be4 100644 (file)
@@ -17,6 +17,8 @@
        $dt_add = get_script_dt_add();
 
 ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
        <title>Tiny Tiny RSS</title>
@@ -52,6 +54,9 @@
 
        <script type="text/javascript" src="tt-rss.js?<?php echo $dt_add ?>"></script>
        <script type="text/javascript" src="functions.js?<?php echo $dt_add ?>"></script>
+       <script type="text/javascript" src="feedlist.js?<?php echo $dt_add ?>"></script>
+       <script type="text/javascript" src="viewfeed.js?<?php echo $dt_add ?>"></script>
+
        <!--[if gte IE 5.5000]>
                <script type="text/javascript" src="pngfix.js"></script>
                <link rel="stylesheet" type="text/css" href="tt-rss-ie.css">
@@ -70,7 +75,8 @@
 
 <body>
 
-<div id="overlay"><div id="overlay_inner">Loading, please wait...</div></div>
+<!-- <div id="overlay"><div id="overlay_inner">Loading, please wait...</div></div> -->
+
 <div id="fatal_error"><div id="fatal_error_inner">
        <h1>Fatal Error</h1>
        <div id="fatal_error_msg">Unknown Error</div>
@@ -89,69 +95,51 @@ window.onload = init;
        start the daemon process or contact instance owner.
 </div>
 
-<iframe id="backReqBox"></iframe>
-
 <ul id="debug_output"></ul>
 
 <div id="infoBoxShadow"><div id="infoBox">&nbsp;</div></div>
 
-<table width="100%" height="100%" cellspacing="0" cellpadding="0" class="main">
-<?php if (get_pref($link, 'DISPLAY_HEADER')) { ?>
-<tr>
-       <td colspan="2" class="headerBox" id="mainHeader">
-               <table cellspacing="0" cellpadding="0" width="100%"><tr>
-                       <td rowspan="2" class="header" valign="middle"> 
-                               <img src="<?php echo $theme_image_path ?>images/ttrss_logo.png" alt="Tiny Tiny RSS">    
-                       </td>
-                       <td valign="top" class="notifyBox">
-                               <div id="notify" class="notify"><span id="notify_body">&nbsp;</span></div>
-                       </td>
-               </tr><tr><td class="welcomePrompt">
-                       <?php if (!SINGLE_USER_MODE) { ?>
-                               Hello, <b><?php echo $_SESSION["name"] ?></b>
-                               (<a href="logout.php">Logout</a>)
-                       <?php } ?>
-                       </td>                   
-               </tr></table>
-       </td>
-</tr>
-<?php } else { ?>
-<tr>
-       <td class="small" id="mainHeader">
-               <div id="notify" class="notify_sm"><span id="notify_body">&nbsp;</span></div>
-               <div id="userDlgShadow"><div id="userDlg">&nbsp;</div></div>
-       </td><td class="welcomePrompt">
-               <?php if (!SINGLE_USER_MODE) { ?>
+<div id="header">
+       <?php if (!SINGLE_USER_MODE) { ?>
+               <div style="float : right">
                        Hello, <b><?php echo $_SESSION["name"] ?></b>
                        (<a href="logout.php">Logout</a>)
-               <?php } ?>
-</td></tr>
-<?php } ?>
-<tr>
-       <?php if (get_pref($link, 'COMBINED_DISPLAY_MODE')) 
-                       $feeds_rowspan = 2;
-               else 
-                       $feeds_rowspan = 3; ?>
-       <td valign="top" rowspan="<?php echo $feeds_rowspan ?>" class="feeds"> 
-               <table class="innerFeedTable" 
-                       cellspacing="0" cellpadding="0" height="100%" width="100%">
-               <tr><td>
-                       <div id="dispSwitch"> 
-                       <a id="dispSwitchPrompt" href="javascript:toggleTags()">display tags</a>
                </div>
-               </td></tr>      
-               <tr><td height="100%" width="100%" valign="top">
-
-               <iframe frameborder="0" 
-                       id="feeds-frame" name="feeds-frame" class="feedsFrame"></iframe>
+       <?php } ?>
+       <img src="<?php echo $theme_image_path ?>images/ttrss_logo.png" alt="Tiny Tiny RSS">    
+</div>
 
-               </td></tr></table>
+<div id="feeds-holder">
+       <div id="dispSwitch"> 
+               <a id="dispSwitchPrompt" href="javascript:toggleTags()">display tags</a>
+       </div>
+       <div id="feeds-frame">-fixme-</div>
+</div>
 
-       </td>
-       <td valign="top" class="headlinesToolbarBox">
-               <table width="100%" cellpadding="0" cellspacing="0">
+<div id="toolbar">
 
-               <tr><td class="headlinesToolbar" id="headlinesToolbar">
+               <div style="float : right">
+                       <select id="quickMenuChooser" onchange="quickMenuChange()">
+                                       <option value="qmcDefault" selected>Actions...</option>
+                                       <option value="qmcPrefs">Preferences</option>
+                                       <option value="qmcSearch">Search</option>
+                                       <option disabled>--------</option>
+                                       <option style="color : #5050aa" disabled>Feed actions:</option>
+                                       <option value="qmcAddFeed">&nbsp;&nbsp;Subscribe to feed</option>
+                                       <option value="qmcRemoveFeed">&nbsp;&nbsp;Unsubscribe</option>
+                                       <!-- <option>Edit this feed</option> -->
+                                       <option disabled>--------</option>
+                                       <option style="color : #5050aa" disabled>All feeds:</option>
+                                       <?php if (!ENABLE_UPDATE_DAEMON && !DAEMON_REFRESH_ONLY) { ?>
+                                       <option value="qmcUpdateFeeds">&nbsp;&nbsp;Update</option>
+                                       <?php } ?>
+                                       <option value="qmcCatchupAll">&nbsp;&nbsp;Mark as read</option>                         
+                                       <option value="qmcShowOnlyUnread">&nbsp;&nbsp;Show only unread</option>
+                                       <option disabled>--------</option>
+                                       <option style="color : #5050aa" disabled>Other actions:</option>                                
+                                       <option value="qmcAddFilter">&nbsp;&nbsp;Create filter</option>
+                       </select>
+               </div>
 
                <form id="main_toolbar_form">
 
@@ -203,64 +191,15 @@ window.onload = init;
                <input class="button" type="submit"
                        onclick="catchupCurrentFeed()" value="Mark as read"> 
 
-               </td>
-               <td align="right">
-                       <select id="quickMenuChooser" onchange="quickMenuChange()">
-                               <option value="qmcDefault" selected>Actions...</option>
-                               <option value="qmcPrefs">Preferences</option>
-                               <option value="qmcSearch">Search</option>
-                               <option disabled>--------</option>
-                               <option style="color : #5050aa" disabled>Feed actions:</option>
-                               <option value="qmcAddFeed">&nbsp;&nbsp;Subscribe to feed</option>
-                               <option value="qmcRemoveFeed">&nbsp;&nbsp;Unsubscribe</option>
-                               <!-- <option>Edit this feed</option> -->
-                               <option disabled>--------</option>
-                               <option style="color : #5050aa" disabled>All feeds:</option>
-                               <?php if (!ENABLE_UPDATE_DAEMON && !DAEMON_REFRESH_ONLY) { ?>
-                               <option value="qmcUpdateFeeds">&nbsp;&nbsp;Update</option>
-                               <?php } ?>
-                               <option value="qmcCatchupAll">&nbsp;&nbsp;Mark as read</option>                         
-                               <option value="qmcShowOnlyUnread">&nbsp;&nbsp;Show only unread</option>
-                               <option disabled>--------</option>
-                               <option style="color : #5050aa" disabled>Other actions:</option>                                
-                               <option value="qmcAddFilter">&nbsp;&nbsp;Create filter</option>
-                       </select>
-               </td>
-               </tr>
-               </table>
-       </td>
-</tr>
-<?php if (get_pref($link, 'COMBINED_DISPLAY_MODE')) { ?>
-<tr>
-       <td id="headlines" class="headlines2" valign="top">
-               <iframe frameborder="0" name="headlines-frame" 
-                       id="headlines-frame" class="headlinesFrame"></iframe>
-       </td>
-</tr>
-<?php } else { ?>
-<tr>
-       <td id="headlines" class="headlines" valign="top">
-               <iframe frameborder="0" name="headlines-frame" 
-                       id="headlines-frame" class="headlinesFrame"></iframe>
-       </td>
-</tr><tr>
-       <td class="content" id="content" valign="top">
-               <iframe frameborder="0" name="content-frame" 
-                       id="content-frame" class="contentFrame"> </iframe>
-       </td>
-</tr>
-<?php } ?>
-<?php if (get_pref($link, 'DISPLAY_FOOTER')) { ?>
-<tr>
-       <td colspan="2" class="footer" id="mainFooter">
-               <a href="http://tt-rss.spb.ru/">Tiny Tiny RSS</a> v<?php echo VERSION ?> &copy; 2005-2006 Andrew Dolgov
-               <?php if (WEB_DEMO_MODE) { ?>
-               <br>Running in demo mode, some functionality is disabled.
-               <?php } ?>
-       </td>
-</td>
-<?php } ?>
-</table>
+       </div>
+
+<div id="headlines-frame"> -fixme- </div>
+
+<div id="content-frame"> -fixme- </div>
+
+<div id="footer">
+       <a href="http://tt-rss.spb.ru/">Tiny Tiny RSS</a> v<?php echo VERSION ?> &copy; 2005-2006 Andrew Dolgov
+</div>
 
 <?php db_close($link); ?>
 
index efa3485f03a48bcfc5da34e91062bce88611bd83..275ce79d988f029208f80321f1060e7ffdf9b589 100644 (file)
@@ -1,3 +1,3 @@
 <?php
-       define('VERSION', "1.2.3-p1");
+       define('VERSION', "1.2.3.99");
 ?>
index 58bc7abd44ced573fc2f5b929cafbbab89d4c02f..ee8d0216ee835596ae6d7c5964bf3dfc05ca127f 100644 (file)
@@ -2,13 +2,30 @@ var active_post_id = false;
 
 var xmlhttp_rpc = Ajax.getTransport();
 
+function headlines_callback() {
+       if (xmlhttp.readyState == 4) {
+               debug("headlines_callback");
+               var f = document.getElementById("headlines-frame");
+               f.innerHTML = xmlhttp.responseText;
+       }
+}
+
+function article_callback() {
+       if (xmlhttp.readyState == 4) {
+               debug("article_callback");
+               var f = document.getElementById("content-frame");
+               f.innerHTML = xmlhttp.responseText;
+               update_all_counters();
+       }
+}
+
 function view(id, feed_id) {
        
        try {
                debug("loading article: " + id + "/" + feed_id);
        
                var f_document = getFeedsContext().document;
-               var m_document = parent.document;
+               var m_document = document;
        
                enableHotkeys();
        
@@ -29,12 +46,20 @@ function view(id, 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);
 
+               var query = "backend.php?op=view&id=" + param_escape(id) +
+                       "&feed=" + param_escape(feed_id);
+
+               if (xmlhttp_ready(xmlhttp)) {
+                       xmlhttp.open("GET", query, true);
+                       xmlhttp.onreadystatechange=article_callback;
+                       xmlhttp.send(null);
+               } else {
+                       debug("xmlhttp busy (@view)");
+               }  
+
        } catch (e) {
                exception_error("view", e);
        }
@@ -42,7 +67,7 @@ function view(id, feed_id) {
 
 function toggleMark(id) {
 
-       var f_document = parent.frames["feeds-frame"].document;
+       var f_document = document;
 
        if (!xmlhttp_ready(xmlhttp_rpc)) {
                printLockingError();
@@ -58,7 +83,6 @@ function toggleMark(id) {
        if (mark_img.alt != "Reset mark") {
                mark_img.src = "images/mark_set.png";
                mark_img.alt = "Reset mark";
-               mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+')');
                query = query + "&mark=1";
 
                if (vfeedu && crow.className.match("Unread")) {
@@ -68,7 +92,6 @@ function toggleMark(id) {
        } else {
                mark_img.src = "images/mark_unset.png";
                mark_img.alt = "Set mark";
-               mark_img.setAttribute('onclick', 'javascript:toggleMark('+id+')');
                query = query + "&mark=0";
 
                if (vfeedu && crow.className.match("Unread")) {
@@ -134,11 +157,6 @@ function moveToPost(mode) {
        } 
 }
 
-function viewfeed(id) {
-       var f = parent.frames["feeds-frame"];
-       f.viewfeed(id, 0);
-}
-
 function toggleUnread(id, cmode) {
        try {
                if (!xmlhttp_ready(xmlhttp_rpc)) {
@@ -368,7 +386,7 @@ function labelFromSearch(search, search_mode, match_on, feed_id, is_cat) {
 
 
 
-function init() {
+function headlines_init() {
        if (arguments.callee.done) return;
        arguments.callee.done = true;