]> git.wh0rd.org Git - tt-rss.git/commitdiff
initial work on big feed browser
authorAndrew Dolgov <fox@madoka.spb.ru>
Fri, 30 Dec 2005 05:17:23 +0000 (06:17 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Fri, 30 Dec 2005 05:17:23 +0000 (06:17 +0100)
backend.php
prefs.js
prefs.php
tt-rss.css

index 20b2740b1059506c291b325cc243c284f7fbb4a2..e9783902d172c4575dd831cc5dc68934f8653550 100644 (file)
                                <input type=\"submit\" class=\"button\"
                                onclick=\"javascript:addFeed()\" value=\"Add feed\">
                                &nbsp;
-                               (<a href='javascript:browseFeeds()'>Browse feeds</a>)
+                               (<a href='javascript:browseFeeds()'>Top 50</a>)
                        </td><td align='right'>
                                <input id=\"feed_search\" size=\"20\"  
                                onchange=\"javascript:updateFeedList()\"
                        onclick=\"closeInfoBox()\" value=\"Close this window\"></div>";
        }       
 
+       if ($op == "pref-feed-browser") {
+
+               $subop = $_REQUEST["subop"];
+
+               if ($subop == "details") {
+                       $id = db_escape_string($_GET["id"]);
+                       print "-- nasty details about feed $id --";                     
+                       return;
+               }
+       
+               print "<div class=\"warning\">Under construction</div>";
+
+               print "<h1>Feed browser</h1>";
+
+               $result = db_query($link, "SELECT feed_url,count(id) AS subscribers 
+                       FROM ttrss_feeds 
+                       WHERE auth_login = '' AND auth_pass = '' AND private = false
+                       GROUP BY feed_url ORDER BY subscribers DESC LIMIT 50");
+               
+               print "<ul class='nomarks' id='browseFeedList'>";
+
+               $feedctr = 0;
+               
+               while ($line = db_fetch_assoc($result)) {
+                       $feed_url = $line["feed_url"];
+                       $subscribers = $line["subscribers"];
+
+                       $sub_result = db_query($link, "SELECT id
+                               FROM ttrss_feeds WHERE feed_url = '$feed_url' AND owner_uid =" . 
+                               $_SESSION["uid"]);
+
+                       if (db_num_rows($sub_result) > 0) {
+                               continue; // already subscribed
+                       }
+               
+                       $det_result = db_query($link, "SELECT site_url,title,id 
+                               FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1");
+
+                       $details = db_fetch_assoc($det_result);
+               
+                       $icon_file = ICONS_DIR . "/" . $details["id"] . ".ico";
+
+                       if (file_exists($icon_file) && filesize($icon_file) > 0) {
+                                       $feed_icon = "<img class=\"tinyFeedIcon\"       src=\"" . ICONS_URL . 
+                                               "/".$details["id"].".ico\">";
+                       } else {
+                               $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
+                       }
+
+                       $check_box = "<input onclick='toggleSelectListRow(this)' class='feedBrowseCB' 
+                               type=\"checkbox\" id=\"FBCHK-" . $details["id"] . "\">";
+
+                       $class = ($feedctr % 2) ? "even" : "odd";
+
+                       print "<li class='$class' id=\"FBROW-".$details["id"]."\">$check_box".
+                               "$feed_icon ";
+                               
+                       print "<a href=\"javascript:browserExpand('".$details["id"]."')\">" . 
+                               $details["title"] ."</a>&nbsp;" .
+                               "<span class='subscribers'>($subscribers)</span>";
+                       
+                       print "<div class=\"browserDetails\" id=\"BRDET-" . $details["id"] . "\">";
+                       print "</div>";
+                               
+                       print "</li>";
+
+                               ++$feedctr;
+               }
+
+               if ($feedctr == 0) {
+                       print "<li>No feeds found to subscribe.</li>";
+               }
+
+               print "</ul>";
+
+               print "<input type='submit' class='button' onclick=\"feedBrowserSubscribe()\" 
+                       value=\"Subscribe\">";
+
+               print "</div>";
+
+       }
+
        db_close($link);
 ?>
 
index a4096df56510e61da3812104b58eab591be850d1..2a8a42d44c265e1fbdb6eba42a891b5af80583d7 100644 (file)
--- a/prefs.js
+++ b/prefs.js
@@ -5,8 +5,8 @@ var active_feed_cat = false;
 var active_filter = false;
 var active_label = false;
 var active_user = false;
-
 var active_tab = false;
+var feed_to_expand = false;
 
 /*@cc_on @*/
 /*@if (@_jscript_version >= 5)
@@ -27,6 +27,19 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
 }
 
+function expand_feed_callback() {
+       if (xmlhttp.readyState == 4) {
+               try {   
+                       var container = document.getElementById("BRDET-" + feed_to_expand);     
+                       container.innerHTML=xmlhttp.responseText;
+                       container.style.display = "block";
+                       p_notify("");
+               } catch (e) {
+                       exception_error("expand_feed_callback", e);
+               }
+       }
+}
+
 function feedlist_callback() {
        if (xmlhttp.readyState == 4) {
                try {   
@@ -96,6 +109,14 @@ function labellist_callback() {
        }
 }
 
+function feed_browser_callback() {
+       var container = document.getElementById('prefContent');
+       if (xmlhttp.readyState == 4) {
+               container.innerHTML=xmlhttp.responseText;
+               p_notify("");
+       }
+}
+
 function userlist_callback() {
        var container = document.getElementById('prefContent');
        if (xmlhttp.readyState == 4) {
@@ -1202,6 +1223,8 @@ function selectTab(id) {
                updatePrefsList();
        } else if (id == "userConfig") {
                updateUsersList();
+       } else if (id == "feedBrowser") {
+               updateBigFeedBrowser();
        }
 
        var tab = document.getElementById(active_tab + "Tab");
@@ -1334,3 +1357,37 @@ function feedBrowserSubscribe() {
                exception_error("feedBrowserSubscribe", e);
        }
 }
+
+function updateBigFeedBrowser() {
+
+       if (!xmlhttp_ready(xmlhttp)) {
+               printLockingError();
+               return
+       }
+
+       p_notify("Loading, please wait...");
+
+       xmlhttp.open("GET", "backend.php?op=pref-feed-browser", true);
+       xmlhttp.onreadystatechange=feed_browser_callback;
+       xmlhttp.send(null);
+
+}
+
+function browserExpand(id) {
+       try {
+/*             if (feed_to_expand && feed_to_expand != id) {
+                       var d = document.getElementById("BRDET-" + feed_to_expand);
+                       d.style.display = "none";
+               } */
+       
+               feed_to_expand = id;
+
+               xmlhttp.open("GET", "backend.php?op=pref-feed-browser&subop=details&id="
+                       + param_escape(id), true);
+               xmlhttp.onreadystatechange=expand_feed_callback;
+               xmlhttp.send(null);
+
+       } catch (e) {
+               exception_error("browserExpand", e);
+       }
+}
index cfdb5e0c8a4236e32d9892b80cc1e2423e8bf315..c2492f1a160a98907bd91fe02682f96c14dd9f3f 100644 (file)
--- a/prefs.php
+++ b/prefs.php
@@ -87,6 +87,8 @@
                        onclick="selectTab('genConfig')">
                <input id="feedConfigTab" class="prefsTab" type="submit" value="Feed Configuration"
                        onclick="selectTab('feedConfig')">
+               <input id="feedBrowserTab" class="prefsTab" type="submit" value="Feed Browser"
+                       onclick="selectTab('feedBrowser')">
                <input id="filterConfigTab" class="prefsTab" type="submit" value="Content Filtering"
                        onclick="selectTab('filterConfig')">
                <? if (GLOBAL_ENABLE_LABELS && get_pref($link, 'ENABLE_LABELS')) { ?>
index e2802119ba2d92e3c8b69f44b5c4a7382f3cd952..8da86844659fc8a739022a84e710b292f6995b13 100644 (file)
@@ -940,6 +940,18 @@ span.subscribers {
        color : #808080;
 }
 
+div.subscribers {
+       color : #808080;
+       font-size : x-small;
+       float : right;
+}
+
 input.feedBrowseCB {
        margin-right : 1em;
 }
+
+div.browserDetails {
+       margin : 5px 5px 5px 5px;
+       display : none;
+       padding : 5px;
+}