diff options
author | Andrew Dolgov <[email protected]> | 2005-09-06 05:14:17 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-09-06 05:14:17 +0100 |
commit | ac43eba1ab9a352de1b06161f9d23f77d445dce8 (patch) | |
tree | e7bd2bd547ca99355594fc02cf3032f2d9a5b691 | |
parent | 5f89f7803b18d2c66a076bf7c3b9a7221dc3278f (diff) |
inputify buttons, store view modes in session cookies, disable headline toolbar initially
-rw-r--r-- | backend.php | 35 | ||||
-rw-r--r-- | functions.js | 47 | ||||
-rw-r--r-- | tt-rss.css | 26 | ||||
-rw-r--r-- | tt-rss.js | 32 | ||||
-rw-r--r-- | tt-rss.php | 37 |
5 files changed, 130 insertions, 47 deletions
diff --git a/backend.php b/backend.php index 922309968..492141b93 100644 --- a/backend.php +++ b/backend.php @@ -214,7 +214,7 @@ print "<table class=\"postTable\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"; -/* + print "<tr class=\"titleTop\"><td align=\"right\"><b>Title:</b></td> <td width=\"100%\">".$line["title"]."</td> <td> </td></tr>"; @@ -225,19 +225,15 @@ print "<tr class=\"titleBottom\"><td align=\"right\"><b>Link:</b></td> <td><a href=\"".$line["link"]."\">".$line["link"]."</a> $comments_prompt</td> - <td> </td></tr>"; */ + <td> </td></tr>"; print "<tr><td valign=\"top\" class=\"post\" - colspan=\"2\">" . $line["content"] . "</td> + colspan=\"2\" width=\"100%\">" . $line["content"] . "</td> <td valign=\"top\">$feed_icon</td> </tr>"; print "</table>"; } -/* print "<script type=\"text/javascript\"> - p_notify(''); -- FLICKER - </script>"; */ - if ($addheader) { print "</body></html>"; } @@ -258,7 +254,7 @@ if ($addheader) { print "<html><head> - <title>Tiny Tiny RSS : Article $id</title> + <title>Tiny Tiny RSS : Feed $feed</title> <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\"> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> <script type=\"text/javascript\" src=\"functions.js\"></script> @@ -310,6 +306,10 @@ $view_query_part = " marked = true AND "; } + if ($view_mode == "Unread") { + $view_query_part = " unread = true AND "; + } + $result = pg_query("SELECT count(id) AS total_entries FROM ttrss_entries WHERE $search_query_part @@ -317,12 +317,23 @@ $total_entries = pg_fetch_result($result, 0, "total_entries"); + $result = pg_query("SELECT count(id) AS unread_entries + FROM ttrss_entries WHERE + $search_query_part + unread = true AND + feed_id = '$feed'"); + + $unread_entries = pg_fetch_result($result, 0, "unread_entries"); + +/* if ($limit < $unread_entries) + $limit = $unread_entries; + if ($limit != "All") { $limit_query_part = "LIMIT " . $limit; - } + } */ $result = pg_query("SELECT - id,title,updated,unread,feed_id,marked, + id,title,updated,unread,feed_id,marked,link, EXTRACT(EPOCH FROM last_read) AS last_read_ts, EXTRACT(EPOCH FROM updated) AS updated_ts FROM @@ -364,7 +375,7 @@ alt=\"Set mark\" onclick='javascript:toggleMark($id, true)'>"; } - $content_link = "<a href=\"javascript:view($id,$feed_id);\">" . + $content_link = "<a id=\"FTITLE-$id\" href=\"javascript:view($id,$feed_id);\">" . $line["title"] . "</a>"; print "<tr class='$class' id='RROW-$id'"; @@ -380,6 +391,8 @@ <a href=\"javascript:view($id,$feed_id);\">".$line["updated"]."</a></td>"; print "<td class='headlineTitle'>$content_link</td>"; + print "<td class=\"invisible\" id=\"FLINK-$id\">".$line["link"]."</td>"; + print "</tr>"; ++$lnum; diff --git a/functions.js b/functions.js index 90245a192..d1f445ec2 100644 --- a/functions.js +++ b/functions.js @@ -196,4 +196,51 @@ function getFeedIds() { return rows; } +function setCookie(name, value, expires, path, domain, secure) { + document.cookie= name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + path : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); +} + +function getCookie(name) { + + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + if (begin == -1) { + begin = dc.indexOf(prefix); + if (begin != 0) return null; + } + else { + begin += 2; + } + var end = document.cookie.indexOf(";", begin); + if (end == -1) { + end = dc.length; + } + return unescape(dc.substring(begin + prefix.length, end)); +} + +function disableContainerChildren(id, disable) { + var container = document.getElementById(id); + + for (var i = 0; i < container.childNodes.length; i++) { + var child = container.childNodes[i]; + + child.disabled = disable; + + if (disable) { + if (child.className && child.className.match("button")) { + child.className = "disabledButton"; + } + } else { + if (child.className && child.className.match("disabledButton")) { + child.className = "button"; + } + } + } + +} diff --git a/tt-rss.css b/tt-rss.css index 8be48a6b3..62eba0ed0 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -281,16 +281,16 @@ table.prefFeedList tr.title td, table.prefFilterList tr.title td, background-color : #e0e0ff; } -a.disabledButton { +.disabledButton { font-family : tahoma, sans-serif; border : 1px solid #d0d0d0; - background-color : white; + background : white; color : #909090; - padding : 2px 10px 2px 10px; + padding : 1px 10px 1px 10px; font-size : small; } -a.disabledButton:hover { +.disabledButton:hover { background : white; text-decoration : none; color : #909090; @@ -304,16 +304,20 @@ a.disabledButton:hover { background-repeat : repeat-x; background-color : white; color : black; - padding : 2px 10px 2px 10px; - font-size : small; + padding : 1px 10px 1px 10px; } -.button:hover { +/* .button:hover { background : white; text-decoration : none; color : black; +} */ + +a.button { + padding : 2px 10px 2px 10px; } + .buttonWarn { font-family : tahoma, sans-serif; border : 1px solid #d0d0d0; @@ -344,7 +348,7 @@ div.errorBox { background : #f0f0f0; } -tr.titleTop, tr.titleBottom { +tr.titleTop, tr.titleBottom, tr.titleTopBottom { background : #f0f0f0; } @@ -363,7 +367,13 @@ tr.titleBottom td { border-width : 0px 0px 1px 0px; border-color : #d0d0d0; border-style : solid; +} +tr.titleTopBottom td { + padding : 3px 10px 5px 10px; + border-width : 1px 0px 1px 0px; + border-color : #d0d0d0; + border-style : solid; } td.post { @@ -202,7 +202,7 @@ function catchupAllFeeds() { } function viewCurrentFeed(skip, subop) { - if (active_feed_id) { + if (active_feed_id ) { viewfeed(active_feed_id, skip, subop); } } @@ -231,12 +231,15 @@ function viewfeed(feed, skip, subop) { view_mode = "All Posts"; } + setCookie("ttrss_vf_vmode", view_mode); + var limitbox = document.getElementById("limitbox"); var limit; if (limitbox) { limit = limitbox.value; + setCookie("ttrss_vf_limit", limit); } else { limit = "All"; } @@ -257,6 +260,8 @@ function viewfeed(feed, skip, subop) { active_feed_id = feed; active_offset = skip; + setCookie("ttrss_vf_actfeed", feed); + if (subop == "MarkAllRead") { var feedr = document.getElementById("FEEDR-" + feed); @@ -286,12 +291,9 @@ function viewfeed(feed, skip, subop) { cleanSelected("feedsList"); feedr.className = feedr.className + "Selected"; - - var ftitle_d = document.getElementById("headlinesTitle"); - var ftitle_s = document.getElementById("FEEDN-" + feed); - - ftitle_d.innerHTML = ftitle_s.innerHTML; + disableContainerChildren("headlinesToolbar", false); + // notify(""); } @@ -303,7 +305,9 @@ function timeout() { function resetSearch() { document.getElementById("searchbox").value = ""; - viewfeed(active_feed_id, 0, ""); + if (active_feed_id) { + viewfeed(active_feed_id, 0, ""); + } } function search() { @@ -392,6 +396,8 @@ function localHotkeyHandler(keycode) { function init() { + disableContainerChildren("headlinesToolbar", true); + // IE kludge if (xmlhttp && !xmlhttp_rpc) { @@ -411,4 +417,16 @@ function init() { setTimeout("timeout()", 1800*1000); var content = document.getElementById("content"); + +// active_feed_id = getCookie("ttrss_vf_actfeed"); + + var limitbox = document.getElementById("limitbox"); + + if (getCookie("ttrss_vf_vmode")) { + var viewbox = document.getElementById("viewbox"); + viewbox.value = getCookie("ttrss_vf_vmode"); + } + } + + diff --git a/tt-rss.php b/tt-rss.php index 8be41276f..cdde0fd50 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -38,45 +38,48 @@ <p align="center">All feeds: - <a class="button" - href="javascript:scheduleFeedUpdate(true)">Update</a> - - <a class="button" - href="javascript:catchupAllFeeds()">Mark as read</a></p> + <input class="button" type="submit" + onclick="javascript:scheduleFeedUpdate(true)" value="Update"> + + <input class="button" type="submit" + onclick="javascript:catchupAllFeeds()" value="Mark as read"> </td> <td valign="top" class="headlinesToolbarBox"> <table width="100%"> + <!-- <tr><td id="headlinesTitle" class="headlinesTitle"> </td></tr> --> - <tr><td class="headlinesToolbar"> + <tr><td class="headlinesToolbar" id="headlinesToolbar"> Search: <input id="searchbox" onblur="javascript:enableHotkeys()" onfocus="javascript:disableHotkeys()" onchange="javascript:search()"> - <a class="button" href="javascript:resetSearch()">Reset</a> + <input type="submit" + class="button" onclick="javascript:resetSearch()" value="Reset"> View: <select id="viewbox" onchange="javascript:viewCurrentFeed(0, '')"> <option>All Posts</option> <option>Starred</option> + <option selected>Unread</option> </select> Limit: <select id="limitbox" onchange="javascript:viewCurrentFeed(0, '')"> <option>15</option> - <option>30</option> + <option selected>30</option> <option>60</option> <option>All</option> </select> - Feed: <a class="button" - href="javascript:viewCurrentFeed(0, 'ForceUpdate')">Update</a> + Feed: <input class="button" type="submit" + onclick="javascript:viewCurrentFeed(0, 'ForceUpdate')" value="Update"> - <a class="button" - href="javascript:viewCurrentFeed(0, 'MarkAllRead')">Mark as read</a> + <input class="button" type="submit" + onclick="javascript:viewCurrentFeed(0, 'MarkAllRead')" value="Mark as read"> </td></tr> </table> @@ -88,15 +91,7 @@ </td> </tr><tr> <td class="content" id="content" valign="top"> - <table width="100%" height="100%" cellspacing="0" cellpadding="0"> - <tr> - <tr class="titleTop"><td align="right"><b>Title:</b></td> - <td width="100%">-FIXME-</td></tr> - <tr class="titleBottom"><td align="right"><b>Link:</b></td> - <td>-FIXME-</td></tr> - <tr><td height="100%" colspan="2"> - <iframe name="content-frame" id="content-frame" class="contentFrame"> </iframe> - </td></tr></table> + <iframe name="content-frame" id="content-frame" class="contentFrame"> </iframe> </td> </tr> <tr> |