summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-08-14 23:18:40 +0400
committerAndrew Dolgov <[email protected]>2012-08-14 23:19:20 +0400
commitfbf85cf6467a12fce776475db97cf6dac808edf1 (patch)
tree722279f09dbc90a135dbcf3fd0abbbeb5477b55f
parenta26f57e63aff090dfa8dfe682bd2249786dcf7c3 (diff)
print_feed_cat_select: display nested category structure
fix empty sub-sub-categories never being shown
-rw-r--r--classes/pref_feeds.php2
-rw-r--r--include/functions.php63
2 files changed, 41 insertions, 24 deletions
diff --git a/classes/pref_feeds.php b/classes/pref_feeds.php
index d292319cb..381330da0 100644
--- a/classes/pref_feeds.php
+++ b/classes/pref_feeds.php
@@ -33,6 +33,8 @@ class Pref_Feeds extends Protected_Handler {
}
private function get_category_items($cat_id) {
+ $show_empty_cats = $_REQUEST['mode'] != 2 &&
+ get_pref($this->link, '_PREFS_SHOW_EMPTY_CATS');
$items = array();
diff --git a/include/functions.php b/include/functions.php
index cb24cb877..ac9c5372c 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1999,38 +1999,53 @@
print "</select>";
}
- function print_feed_cat_select($link, $id, $default_id = "",
- $attributes = "", $include_all_cats = true) {
+ function print_feed_cat_select($link, $id, $default_id,
+ $attributes, $include_all_cats = true, $root_id = false, $nest_level = 0) {
- print "<select id=\"$id\" name=\"$id\" default=\"$default_id\" onchange=\"catSelectOnChange(this)\" $attributes>";
+ if (!$root_id) {
+ print "<select id=\"$id\" name=\"$id\" default=\"$default_id\" onchange=\"catSelectOnChange(this)\" $attributes>";
+ }
- if ($include_all_cats) {
- print "<option value=\"0\">".__('Uncategorized')."</option>";
- }
+ if ($root_id)
+ $parent_qpart = "parent_cat = '$root_id'";
+ else
+ $parent_qpart = "parent_cat IS NULL";
- $result = db_query($link, "SELECT id,title FROM ttrss_feed_categories
- WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
+ $result = db_query($link, "SELECT id,title,
+ (SELECT COUNT(id) FROM ttrss_feed_categories AS c2 WHERE
+ c2.parent_cat = ttrss_feed_categories.id) AS num_children
+ FROM ttrss_feed_categories
+ WHERE owner_uid = ".$_SESSION["uid"]." AND $parent_qpart ORDER BY title");
- if (db_num_rows($result) > 0 && $include_all_cats) {
- print "<option disabled=\"1\">--------</option>";
- }
+ while ($line = db_fetch_assoc($result)) {
+ if ($line["id"] == $default_id) {
+ $is_selected = "selected=\"1\"";
+ } else {
+ $is_selected = "";
+ }
- while ($line = db_fetch_assoc($result)) {
- if ($line["id"] == $default_id) {
- $is_selected = "selected=\"1\"";
- } else {
- $is_selected = "";
- }
+ for ($i = 0; $i < $nest_level; $i++)
+ $line["title"] = " - " . $line["title"];
- if ($line["title"])
- 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>";
+ if ($line["num_children"] > 0)
+ print_feed_cat_select($link, $id, $default_id, $attributes,
+ $include_all_cats, $line["id"], $nest_level+1);
+ }
- print "</select>";
- }
+ if (!$root_id) {
+ if ($include_all_cats) {
+ if (db_num_rows($result) > 0) {
+ print "<option disabled=\"1\">--------</option>";
+ }
+ print "<option value=\"0\">".__('Uncategorized')."</option>";
+ }
+ print "</select>";
+ }
+ }
function checkbox_to_sql_bool($val) {
return ($val == "on") ? "true" : "false";