]> git.wh0rd.org - tt-rss.git/commitdiff
properly handle on-the-fly adding of categories
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 9 Nov 2010 10:28:10 +0000 (13:28 +0300)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 9 Nov 2010 10:28:10 +0000 (13:28 +0300)
functions.js
functions.php
modules/backend-rpc.php

index a9d90f1aab6c5c17b5d50049911170e26bb623b0..09582feaf8ef03805d6c70ffdeb436822855b5ce 100644 (file)
@@ -2166,7 +2166,7 @@ function catSelectOnChange(elem) {
        }
 }
 
-function quickAddCat(select) {
+function quickAddCat(elem) {
        try {
                var cat = prompt(__("Please enter category title:"));
 
@@ -2174,15 +2174,18 @@ function quickAddCat(select) {
 
                        var query = "?op=rpc&subop=quickAddCat&cat=" + param_escape(cat);
 
+                       notify_progress("Loading, please wait...", true);
+
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function (transport) {
                                        var response = transport.responseXML;
+                                       var select = response.getElementsByTagName("select")[0];
+                                       var options = select.getElementsByTagName("option");
 
-                                       var payload = response.getElementsByTagName("payload")[0];
+                                       dropbox_replace_options(elem, options);
 
-                                       if (payload)
-                                               select.innerHTML = payload.firstChild.nodeValue;
+                                       notify('');
 
                        } });
 
@@ -2283,7 +2286,14 @@ function dropbox_replace_options(elem, options) {
                        var text = options[i].firstChild.nodeValue;
                        var value = options[i].getAttribute("value");
                        var issel = options[i].getAttribute("selected") == "1";
-                       elem.insert(new Option(text, value, issel));
+
+                       var option = new Option(text, value, issel);
+
+                       if (options[i].getAttribute("disabled"))
+                               option.setAttribute("disabled", true);
+
+                       elem.insert(option);
+
                        if (issel) sel_idx = i;
                }
 
index f9de0622fe3a07cc7e38e210c6de6c9a15306519..d9754a2f74a706b86d013eec7380a69cc72ed621 100644 (file)
                        WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
 
                if (db_num_rows($result) > 0 && $include_all_cats) {
-                       print "<option disabled>--------</option>";
+                       print "<option disabled=\"1\">--------</option>";
                }
 
                while ($line = db_fetch_assoc($result)) {
                        if ($line["id"] == $default_id) {
                                $is_selected = "selected=\"1\"";
                        } else {
-                               $is_selected = "";
+                               $is_selected = "";                      
                        }
-                       printf("<option $is_selected value='%d'>%s</option>", 
-                               $line["id"], htmlspecialchars($line["title"]));
+
+                       if ($line["title"])
+                               printf("<option $is_selected value='%d'>%s</option>", 
+                                       $line["id"], htmlspecialchars($line["title"]));
                }
 
                print "<option value=\"ADD_CAT\">" .__("Add category...") . "</option>";
        }
 
        function add_feed_category($link, $feed_cat) {
+
+               if (!$feed_cat) return false;
+
                db_query($link, "BEGIN");
 
                $result = db_query($link,
index 54d636d183e23237df6f73ca4339964872156a84..8f31cd74861e703c9706b94b8f35b76006c22ff9 100644 (file)
                                $id = 0;
                        }
 
-                       print "<payload><![CDATA[";
                        print_feed_cat_select($link, "cat_id", $id);
-                       print "]]></payload>";
 
                        print "</rpc-reply>";