allow adding cats from feed editor

This commit is contained in:
Andrew Dolgov 2010-11-07 23:30:05 +03:00
parent 8b640f50e0
commit 5c7c7da9e1
4 changed files with 98 additions and 17 deletions

View File

@ -2169,3 +2169,50 @@ function has_local_storage() {
return false; 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);
}
}

View File

@ -3018,7 +3018,7 @@
function print_feed_cat_select($link, $id, $default_id = "", function print_feed_cat_select($link, $id, $default_id = "",
$attributes = "", $include_all_cats = true) { $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) { if ($include_all_cats) {
print "<option value=\"0\">".__('Uncategorized')."</option>"; print "<option value=\"0\">".__('Uncategorized')."</option>";
@ -3041,6 +3041,8 @@
$line["id"], htmlspecialchars($line["title"])); $line["id"], htmlspecialchars($line["title"]));
} }
print "<option value=\"ADD_CAT\">" .__("Add category...") . "</option>";
print "</select>"; 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) { function remove_feed_category($link, $id, $owner_uid) {
db_query($link, "DELETE FROM ttrss_feed_categories db_query($link, "DELETE FROM ttrss_feed_categories

View File

@ -1094,6 +1094,31 @@
return; 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>"; print "<rpc-reply><error>Unknown method: $subop</error></rpc-reply>";
} }
?> ?>

View File

@ -1031,24 +1031,10 @@
if ($action == "add") { if ($action == "add") {
$feed_cat = db_escape_string(trim($_REQUEST["cat"])); $feed_cat = db_escape_string(trim($_REQUEST["cat"]));
$result = db_query($link, if (!add_feed_category($link, $feed_cat))
"SELECT id FROM ttrss_feed_categories print_warning(T_sprintf("Category <b>$%s</b> already exists in the database.", $feed_cat));
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));
}
} }