summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-07 23:30:05 +0300
committerAndrew Dolgov <[email protected]>2010-11-07 23:30:05 +0300
commit5c7c7da9e12134ae2c4be1f60823e5440015f0ca (patch)
tree6480604220624b1b5633024115ee266e1ea00b3e
parent8b640f50e0bf933e95e315d3015f36cebb460a30 (diff)
allow adding cats from feed editor
-rw-r--r--functions.js47
-rw-r--r--functions.php25
-rw-r--r--modules/backend-rpc.php25
-rw-r--r--modules/pref-feeds.php18
4 files changed, 98 insertions, 17 deletions
diff --git a/functions.js b/functions.js
index b9096706a..f3ae1965e 100644
--- a/functions.js
+++ b/functions.js
@@ -2169,3 +2169,50 @@ function has_local_storage() {
return false;
}
}
+
+function catSelectOnChange(elem) {
+ try {
+ var value = elem[elem.selectedIndex].value;
+ var def = elem.getAttribute('default');
+
+ if (value == "ADD_CAT") {
+
+ if (def)
+ dropboxSelect(elem, def);
+ else
+ elem.selectedIndex = 0;
+
+ quickAddCat(elem);
+ }
+
+ } catch (e) {
+ exception_error("catSelectOnChange", e);
+ }
+}
+
+function quickAddCat(select) {
+ try {
+ var cat = prompt(__("Please enter category title:"));
+
+ if (cat) {
+
+ var query = "?op=rpc&subop=quickAddCat&cat=" + param_escape(cat);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function (transport) {
+ var response = transport.responseXML;
+
+ var payload = response.getElementsByTagName("payload")[0];
+
+ if (payload)
+ select.innerHTML = payload.firstChild.nodeValue;
+
+ } });
+
+ }
+
+ } catch (e) {
+ exception_error("quickAddCat", e);
+ }
+}
diff --git a/functions.php b/functions.php
index 8ef14d70b..5c63eae04 100644
--- a/functions.php
+++ b/functions.php
@@ -3018,7 +3018,7 @@
function print_feed_cat_select($link, $id, $default_id = "",
$attributes = "", $include_all_cats = true) {
- print "<select id=\"$id\" name=\"$id\" $attributes>";
+ print "<select id=\"$id\" name=\"$id\" default=\"$default_id\" onchange=\"catSelectOnChange(this)\" $attributes>";
if ($include_all_cats) {
print "<option value=\"0\">".__('Uncategorized')."</option>";
@@ -3041,6 +3041,8 @@
$line["id"], htmlspecialchars($line["title"]));
}
+ print "<option value=\"ADD_CAT\">" .__("Add category...") . "</option>";
+
print "</select>";
}
@@ -6577,6 +6579,27 @@
}
}
+ function add_feed_category($link, $feed_cat) {
+ db_query($link, "BEGIN");
+
+ $result = db_query($link,
+ "SELECT id FROM ttrss_feed_categories
+ WHERE title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]);
+
+ if (db_num_rows($result) == 0) {
+
+ $result = db_query($link,
+ "INSERT INTO ttrss_feed_categories (owner_uid,title)
+ VALUES ('".$_SESSION["uid"]."', '$feed_cat')");
+
+ db_query($link, "COMMIT");
+
+ return true;
+ }
+
+ return false;
+ }
+
function remove_feed_category($link, $id, $owner_uid) {
db_query($link, "DELETE FROM ttrss_feed_categories
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index fee93a586..4a82a888b 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -1094,6 +1094,31 @@
return;
}
+ if ($subop == "quickAddCat") {
+ print "<rpc-reply>";
+
+ $cat = db_escape_string($_REQUEST["cat"]);
+
+ add_feed_category($link, $cat);
+
+ $result = db_query($link, "SELECT id FROM ttrss_feed_categories WHERE
+ title = '$cat' AND owner_uid = " . $_SESSION["uid"]);
+
+ if (db_num_rows($result) == 1) {
+ $id = db_fetch_result($result, 0, "id");
+ } else {
+ $id = 0;
+ }
+
+ print "<payload><![CDATA[";
+ print_feed_cat_select($link, "cat_id", $id);
+ print "]]></payload>";
+
+ print "</rpc-reply>";
+
+ return;
+ }
+
print "<rpc-reply><error>Unknown method: $subop</error></rpc-reply>";
}
?>
diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php
index 376980ce3..7a436cfd2 100644
--- a/modules/pref-feeds.php
+++ b/modules/pref-feeds.php
@@ -1031,24 +1031,10 @@
if ($action == "add") {
-
$feed_cat = db_escape_string(trim($_REQUEST["cat"]));
- $result = db_query($link,
- "SELECT id FROM ttrss_feed_categories
- WHERE title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
-
- $result = db_query($link,
- "INSERT INTO ttrss_feed_categories (owner_uid,title)
- VALUES ('".$_SESSION["uid"]."', '$feed_cat')");
-
- } else {
-
- print_warning(T_sprintf("Category <b>$%s</b> already exists in the database.",
- $feed_cat));
- }
+ if (!add_feed_category($link, $feed_cat))
+ print_warning(T_sprintf("Category <b>$%s</b> already exists in the database.", $feed_cat));
}