From c00907f2ed4880a6ec8f06edfd21ee4b12c50c94 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 9 Nov 2010 13:28:10 +0300 Subject: [PATCH] properly handle on-the-fly adding of categories --- functions.js | 20 +++++++++++++++----- functions.php | 13 +++++++++---- modules/backend-rpc.php | 2 -- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/functions.js b/functions.js index a9d90f1aa..09582feaf 100644 --- a/functions.js +++ b/functions.js @@ -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; } diff --git a/functions.php b/functions.php index f9de0622f..d9754a2f7 100644 --- a/functions.php +++ b/functions.php @@ -3047,17 +3047,19 @@ WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title"); if (db_num_rows($result) > 0 && $include_all_cats) { - print ""; + print ""; } while ($line = db_fetch_assoc($result)) { if ($line["id"] == $default_id) { $is_selected = "selected=\"1\""; } else { - $is_selected = ""; + $is_selected = ""; } - printf("", - $line["id"], htmlspecialchars($line["title"])); + + if ($line["title"]) + printf("", + $line["id"], htmlspecialchars($line["title"])); } print ""; @@ -6609,6 +6611,9 @@ } function add_feed_category($link, $feed_cat) { + + if (!$feed_cat) return false; + db_query($link, "BEGIN"); $result = db_query($link, diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 54d636d18..8f31cd748 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -1108,9 +1108,7 @@ $id = 0; } - print ""; print "";