]> git.wh0rd.org Git - tt-rss.git/commitdiff
add experimental digest thingie (2)
authorAndrew Dolgov <fox@bah.org.ru>
Thu, 9 Sep 2010 12:50:10 +0000 (16:50 +0400)
committerAndrew Dolgov <fox@bah.org.ru>
Thu, 9 Sep 2010 12:50:10 +0000 (16:50 +0400)
digest.css [new file with mode: 0644]
digest.js [new file with mode: 0644]
digest.php [new file with mode: 0644]

diff --git a/digest.css b/digest.css
new file mode 100644 (file)
index 0000000..5139114
--- /dev/null
@@ -0,0 +1,170 @@
+body {
+       background : #f0f0f0;
+       color : gray;
+       font-family : sans-serif;
+       font-size : 12px;
+}
+
+a {
+       color : #0069D8;
+       text-decoration : none;
+}
+
+a:hover {
+       color : gray;
+}
+
+#header a, #footer a {
+       color : gray;
+}
+
+#header {
+       font-weight : bold;
+       font-size : 14px;
+       font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
+       margin-left : 1em;
+       margin-right : 1em;
+}
+
+#header div.links {
+       float : right;
+}
+
+#search {
+       float : right;
+       clear : left;
+
+}
+
+#content {
+       border : 1px solid #e0e0e0;
+       background : white;
+       padding : 0.8em;
+       margin : 0.5em;
+}
+
+#footer {
+       font-size : 12px;
+       text-align : center;
+}
+
+/*#content h1 {
+       font-weight : bold;
+       font-size : 25px;
+       font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
+       letter-spacing : -2;
+       margin : 0px 0px 0.5em 0px;
+       color : black;
+}
+
+#content h2 {
+       font-weight : bold;
+       font-size : 20px;
+       font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
+       letter-spacing : 2;
+       margin : 0px 0px 0.5em 0px;
+       color : #684C99;
+}
+
+#content h3 {
+       font-weight : bold;
+       font-size : 16px;
+       font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
+       letter-spacing : 2;
+       margin : 0px 0px 0.5em 0px;
+       color : #659a4c;
+} */
+
+#content h1 {
+       margin : 0px 0px 20px 0px;
+       font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
+       font-size : 18px;
+       letter-spacing : 1px;
+       color : #684C99;
+}
+
+#title {
+}
+
+#latest {
+       padding : 5px;
+}
+
+#feeds {
+       float : right;
+       width : 30%;
+       min-width : 300px;
+       padding : 5px;
+       font-size : 14px;
+}
+
+#feeds h1 {
+       text-align : right;
+}
+
+#feeds ul#feeds-content img {
+       width : 16px;
+       height : 16px;
+       vertical-align : middle;
+       margin-right : 5px;
+}
+
+#feeds ul#feeds-content div.unread-ctr {
+       color : gray;
+       float : right;
+}
+
+#feeds ul#feeds-content li {
+       margin : 0px 0px 2px 0px;
+}
+
+#feeds ul#feeds-content {
+       list-style-type : none;
+       font-weight : bold;
+       color : #659a4c;
+       margin : 0px;
+       padding : 0px;
+}
+
+#headlines {
+       padding : 5px;
+       font-size : 14px;
+}
+
+#headlines ul#headlines-content img {
+       width : 16px;
+       height : 16px;
+       vertical-align : middle;
+       margin-right : 5px;
+}
+
+#headlines ul#headlines-content {
+       list-style-type : none;
+       color : gray;
+       margin : 0px;
+       padding : 0px;
+}
+
+#headlines ul#headlines-content li {
+       margin : 0px 0px 10px 0px;
+       color : #909090;
+}
+
+#headlines ul#headlines-content a.title {
+       font-weight : bold;
+       font-size : 16px;
+}
+
+#headlines ul#headlines-content div.excerpt {
+       margin-left : 22px;
+       color : #404040;
+}
+
+#headlines ul#headlines-content div.info {
+       margin-left : 22px;
+}
+
+#headlines ul#headlines-content div.info a {
+       color : gray;
+}
+
diff --git a/digest.js b/digest.js
new file mode 100644 (file)
index 0000000..7bfd9df
--- /dev/null
+++ b/digest.js
@@ -0,0 +1,108 @@
+var last_feeds = [];
+
+function find_feed(feeds, feed_id) {
+       try {
+               for (var i = 0; i < feeds.length; i++) {
+                       if (feeds[i].id == feed_id)
+                               return feeds[i];
+               }
+
+               return false;
+
+       } catch (e) {
+               exception_error("find_feed", e);
+       }
+}
+
+function add_feed_entry(feed) {
+       try {
+               var icon_part = "";
+
+               if (feed.has_icon) 
+                       icon_part = "<img alt='zz' src='icons/" + feed.id + ".ico'/>";
+
+               var tmp_html = "<li>" + 
+                       icon_part +
+                       feed.title +
+                       "<div class='unread-ctr'>" + feed.unread + "</div>" +   
+                       "</li>";
+
+               $("feeds-content").innerHTML += tmp_html;
+
+       } catch (e) {
+               exception_error("add_feed_entry", e);
+       }
+}
+
+function add_latest_entry(article) {
+       try {
+
+       } catch (e) {
+               exception_error("add_latest_entry", e);
+       }
+}
+
+function add_headline_entry(article, feed) {
+       try {
+
+               var icon_part = "";
+
+               if (article.has_icon) 
+                       icon_part = "<img alt='zz' src='icons/" + article.feed_id + ".ico'/>";
+
+               var tmp_html = "<li>" + 
+                       icon_part +
+                       "<a class='title'>" + article.title + "</a>" +
+                       "<div class='excerpt'>" + article.excerpt + "</div>" +
+                       "<div class='info'><a>" + feed.title + "</a> " + " @ " + 
+                               article.updated + "</div>" +
+                       "</li>";
+
+               $("headlines-content").innerHTML += tmp_html;
+
+       } catch (e) {
+               exception_error("add_headline_entry", e);
+       }
+}
+
+function digest_update(transport) {
+       try {
+               var feeds = transport.responseXML.getElementsByTagName('feeds')[0];
+               var headlines = transport.responseXML.getElementsByTagName('headlines')[0];
+
+               if (feeds) {
+                       last_feeds = feeds;
+
+                       feeds = eval("(" + feeds.firstChild.nodeValue + ")");
+
+                       for (var i = 0; i < feeds.length; i++) {
+                               add_feed_entry(feeds[i]);
+                       }
+               }
+
+               if (headlines) {
+                       headlines = eval("(" + headlines.firstChild.nodeValue + ")");
+
+                       for (var i = 0; i < headlines.length; i++) {
+                               add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id));
+                       }
+               }
+
+       } catch (e) {
+               exception_error("digest_update", e);
+       }
+       }
+
+function digest_init() {
+       try {
+               
+               new Ajax.Request("backend.php", {
+                       parameters: "backend.php?op=rpc&subop=digest-init",
+                       onComplete: function(transport) {
+                               digest_update(transport);
+                               } });
+
+       } catch (e) {
+               exception_error("digest_init", e);
+       }
+}
diff --git a/digest.php b/digest.php
new file mode 100644 (file)
index 0000000..cfe16cf
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+       error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
+       require_once "functions.php"; 
+       require_once "sessions.php";
+       require_once "sanity_check.php";
+       require_once "version.php"; 
+       require_once "config.php";
+       require_once "db-prefs.php";
+
+       $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
+
+       login_sequence($link);
+
+       $dt_add = get_script_dt_add();
+
+       no_cache_incantation();
+
+       header('Content-Type: text/html; charset=utf-8');
+       
+?>
+<!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 Digest</title>
+       <link rel="stylesheet" type="text/css" href="digest.css?<?php echo $dt_add ?>"/>
+
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
+       <?php $user_css_url = get_pref($link, 'USER_STYLESHEET_URL'); ?>
+       <?php if ($user_css_url) { ?>
+               <link rel="stylesheet" type="text/css" href="<?php echo $user_css_url ?>"/> 
+       <?php } ?>
+
+       <link rel="shortcut icon" type="image/png" href="images/favicon.png"/>
+
+       <script type="text/javascript" src="lib/prototype.js"></script>
+       <script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
+       <script type="text/javascript" charset="utf-8" src="localized_js.php?<?php echo $dt_add ?>"></script>
+       <script type="text/javascript" charset="utf-8" src="tt-rss.js?<?php echo $dt_add ?>"></script>
+       <script type="text/javascript" charset="utf-8" src="functions.js?<?php echo $dt_add ?>"></script>
+
+       <script type="text/javascript" src="digest.js"></script>
+
+       <script type="text/javascript">
+               Event.observe(window, 'load', function() {
+                       digest_init();
+               });
+       </script>
+</head>
+<body id="ttrssDigest">
+       <div id="header">
+
+       <div class="links">
+
+       <?php if (!SINGLE_USER_MODE) { ?>
+                       <?php echo __('Hello,') ?> <b><?php echo $_SESSION["name"] ?></b> |
+       <?php } ?>
+
+       <?php if (!SINGLE_USER_MODE) { ?>
+                       <a href="logout.php"><?php echo __('Logout') ?></a>
+       <?php } ?>
+
+       </div>
+
+       Tiny Tiny Digest
+
+       </div>
+       <div id="content">
+               <div id="title">
+                       <div id="search">
+                               <input name="search" type="search"></input>
+                               <button>Search</button>
+                       </div>
+
+               </div>
+
+               <div id="latest">
+                       <h1>latest articles</h1>
+
+                       <em>TODO</em>
+
+                       <div id="latest-content"> </div>
+               </div>
+
+               <div id="feeds">
+                       <h1>feeds</h1>
+
+                       <ul id="feeds-content"> </ul>
+               </div>
+
+               <div id="headlines">
+                       <h1>headlines</h1>
+
+                       <ul id="headlines-content"> </ul>
+               </div>
+
+               <br clear="both">
+
+       </div>
+
+       <div id="footer">
+
+       <a href="http://tt-rss.org/">Tiny Tiny RSS</a>
+       <?php if (!defined('HIDE_VERSION')) { ?>
+                v<?php echo VERSION ?> 
+       <?php } ?>
+       &copy; 2005&ndash;<?php echo date('Y') ?> 
+       <a href="http://fakecake.org/">Andrew Dolgov</a></div>
+
+</body>