diff --git a/backend.php b/backend.php
index aa8edb7ba..a25a0b5be 100644
--- a/backend.php
+++ b/backend.php
@@ -174,9 +174,33 @@
case "collapse":
$cat_id = db_escape_string($_GET["cid"]);
- db_query($link, "UPDATE ttrss_feed_categories SET
- collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
- $_SESSION["uid"]);
+ if ($cat_id > 0) {
+ db_query($link, "UPDATE ttrss_feed_categories SET
+ collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
+ $_SESSION["uid"]);
+ } else {
+ $pref_name = '';
+
+ switch ($cat_id) {
+ case -1:
+ $pref_name = '_COLLAPSED_SPECIAL';
+ break;
+ case -2:
+ $pref_name = '_COLLAPSED_LABELS';
+ break;
+ case 0:
+ $pref_name = '_COLLAPSED_UNCAT';
+ break;
+ }
+
+ if ($pref_name) {
+ if (get_pref($link, $pref_name)) {
+ set_pref($link, $pref_name, 'false');
+ } else {
+ set_pref($link, $pref_name, 'true');
+ }
+ }
+ }
return;
break;
diff --git a/feedlist.js b/feedlist.js
index b4e7b60ef..f0cb73f77 100644
--- a/feedlist.js
+++ b/feedlist.js
@@ -389,45 +389,6 @@ function toggleCollapseCat(cat) {
var cat_list = $("FCATLIST-" + cat).parentNode;
var caption = $("FCAP-" + cat);
-/* if (cat_list.className.match("invisible")) {
- cat_list.className = "";
- caption.innerHTML = caption.innerHTML.replace("...", "");
- if (cat == 0) {
- setCookie("ttrss_vf_uclps", "0");
- }
- } else {
- cat_list.className = "invisible";
- caption.innerHTML = caption.innerHTML + "...";
- if (cat == 0) {
- setCookie("ttrss_vf_uclps", "1");
- }
-
- } */
-
- if (cat == 0) {
- if (Element.visible("FCATLIST-" + cat)) {
- setCookie("ttrss_vf_uclps", "1");
- } else {
- setCookie("ttrss_vf_uclps", "0");
- }
- }
-
- if (cat == -2) {
- if (Element.visible("FCATLIST-" + cat)) {
- setCookie("ttrss_vf_lclps", "1");
- } else {
- setCookie("ttrss_vf_lclps", "0");
- }
- }
-
- if (cat == -1) {
- if (Element.visible("FCATLIST-" + cat)) {
- setCookie("ttrss_vf_vclps", "1");
- } else {
- setCookie("ttrss_vf_vclps", "0");
- }
- }
-
Effect.toggle('FCATLIST-' + cat, 'blind', { duration: 0.5,
afterFinish: toggleCollapseCat_af });
@@ -602,7 +563,7 @@ function init_collapsable_feedlist(theme) {
if (fbtn) Element.show(fbtn);
- if (getCookie("ttrss_vf_fclps") == 1) {
+ if (getInitParam("collapsed_feedlist") == 1) {
collapse_feedlist();
}
diff --git a/functions.php b/functions.php
index 26e57ab4a..d7ef40cf6 100644
--- a/functions.php
+++ b/functions.php
@@ -3080,6 +3080,9 @@
print "";
+ print "";
+
print "";
}
@@ -4162,11 +4165,7 @@
if (get_pref($link, 'ENABLE_FEED_CATS')) {
- if ($_COOKIE["ttrss_vf_vclps"] == 1) {
- $cat_hidden = true;
- } else {
- $cat_hidden = false;
- }
+ $cat_hidden = get_pref($link, "_COLLAPSED_SPECIAL");
printCategoryHeader($link, -1, $cat_hidden, false);
}
@@ -4225,11 +4224,7 @@
if (db_num_rows($result) > 0) {
if (get_pref($link, 'ENABLE_FEED_CATS')) {
- if ($_COOKIE["ttrss_vf_lclps"] == 1) {
- $cat_hidden = true;
- } else {
- $cat_hidden = false;
- }
+ $cat_hidden = get_pref($link, "_COLLAPSED_LABELS");
printCategoryHeader($link, -2, $cat_hidden, true);
@@ -4381,9 +4376,7 @@
// workaround for NULL category
if ($category == __("Uncategorized")) {
- if ($_COOKIE["ttrss_vf_uclps"] == 1) {
- $collapsed = "t";
- }
+ $collapsed = get_pref($link, "_COLLAPSED_UNCAT");
}
$cat_id = sprintf("%d", $cat_id);
diff --git a/mobile/classic/functions.php b/mobile/classic/functions.php
index 88b25ab25..823af122f 100644
--- a/mobile/classic/functions.php
+++ b/mobile/classic/functions.php
@@ -30,11 +30,8 @@
/* virtual feeds */
if (get_pref($link, 'ENABLE_FEED_CATS')) {
- if ($_COOKIE["ttrss_vf_vclps"] == 1) {
- $collapsed = true;
- } else {
- $collapsed = false;
- }
+
+ $collapsed = get_pref($link, "_COLLAPSED_SPECIAL");
if ($collapsed == "t" || $collapsed == "1") {
$holder_class = "invisible";
@@ -100,11 +97,7 @@
if (db_num_rows($result) > 0) {
if (get_pref($link, 'ENABLE_FEED_CATS')) {
- if ($_COOKIE["ttrss_vf_lclps"] == 1) {
- $collapsed = true;
- } else {
- $collapsed = false;
- }
+ $collapsed = get_pref($link, "_COLLAPSED_LABELS");
if ($collapsed == "t" || $collapsed == "1") {
$holder_class = "invisible";
@@ -250,9 +243,7 @@
// workaround for NULL category
if ($category == "Uncategorized") {
- if ($_COOKIE["ttrss_vf_uclps"] == 1) {
- $collapsed = "t";
- }
+ $collapsed = get_pref($link, "_COLLAPSED_UNCAT");
}
if ($collapsed == "t" || $collapsed == "1") {
diff --git a/mobile/classic/index.php b/mobile/classic/index.php
index 6a3aa5226..4b158395b 100644
--- a/mobile/classic/index.php
+++ b/mobile/classic/index.php
@@ -27,35 +27,34 @@
$cat_id = db_escape_string($_GET["id"]);
- switch ($cat_id) {
- case 0:
- if ($_COOKIE["ttrss_vf_uclps"] != 1) {
- setcookie("ttrss_vf_uclps", 1);
- } else {
- setcookie("ttrss_vf_uclps", 0);
- }
- break;
- case -1:
- if ($_COOKIE["ttrss_vf_vclps"] != 1) {
- setcookie("ttrss_vf_vclps", 1);
- } else {
- setcookie("ttrss_vf_vclps", 0);
- }
- break;
- case -2:
- if ($_COOKIE["ttrss_vf_lclps"] != 1) {
- setcookie("ttrss_vf_lclps", 1);
- } else {
- setcookie("ttrss_vf_lclps", 0);
- }
- break;
- default:
+ if ($cat_id > 0) {
db_query($link, "UPDATE ttrss_feed_categories SET
collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
$_SESSION["uid"]);
- break;
+ } else {
+ $pref_name = '';
+
+ switch ($cat_id) {
+ case -1:
+ $pref_name = '_COLLAPSED_SPECIAL';
+ break;
+ case -2:
+ $pref_name = '_COLLAPSED_LABELS';
+ break;
+ case 0:
+ $pref_name = '_COLLAPSED_UNCAT';
+ break;
+ }
+
+ if ($pref_name) {
+ if (get_pref($link, $pref_name)) {
+ set_pref($link, $pref_name, 'false');
+ } else {
+ set_pref($link, $pref_name, 'true');
+ }
+ }
}
-
+
header("Location: index.php");
return;
}
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index 1a65efc02..686602d6f 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -633,17 +633,17 @@
ttrss_feed_categories WHERE owner_uid = ".$_SESSION["uid"]);
print "";
print "";
print "";
diff --git a/sanity_check.php b/sanity_check.php
index 55df98141..281880984 100644
--- a/sanity_check.php
+++ b/sanity_check.php
@@ -2,7 +2,7 @@
require_once "functions.php";
define('EXPECTED_CONFIG_VERSION', 18);
- define('SCHEMA_VERSION', 58);
+ define('SCHEMA_VERSION', 59);
if (!file_exists("config.php")) {
print "Fatal Error: You forgot to copy
diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql
index 04c601fae..95edaffdd 100644
--- a/schema/ttrss_schema_mysql.sql
+++ b/schema/ttrss_schema_mysql.sql
@@ -226,7 +226,7 @@ create table ttrss_tags (id integer primary key auto_increment,
create table ttrss_version (schema_version int not null) TYPE=InnoDB;
-insert into ttrss_version values (58);
+insert into ttrss_version values (59);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
@@ -361,6 +361,14 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_
insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_API_ACCESS', 1, 'false', 'Enable external API', 3);
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1);
+
create table ttrss_user_prefs (
owner_uid integer not null,
pref_name varchar(250),
diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql
index b2458d4ba..0b6f719e1 100644
--- a/schema/ttrss_schema_pgsql.sql
+++ b/schema/ttrss_schema_pgsql.sql
@@ -202,7 +202,7 @@ create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid);
create table ttrss_version (schema_version int not null);
-insert into ttrss_version values (58);
+insert into ttrss_version values (59);
create table ttrss_enclosures (id serial not null primary key,
content_url text not null,
@@ -331,6 +331,14 @@ insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_
insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_API_ACCESS', 1, 'false', 'Enable external API', 3);
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1);
+
create table ttrss_user_prefs (
owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
pref_name varchar(250) not null references ttrss_prefs(pref_name) ON DELETE CASCADE,
diff --git a/schema/versions/mysql/59.sql b/schema/versions/mysql/59.sql
new file mode 100644
index 000000000..d51fe8f65
--- /dev/null
+++ b/schema/versions/mysql/59.sql
@@ -0,0 +1,13 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1);
+
+update ttrss_version set schema_version = 59;
+
+commit;
diff --git a/schema/versions/pgsql/59.sql b/schema/versions/pgsql/59.sql
new file mode 100644
index 000000000..d51fe8f65
--- /dev/null
+++ b/schema/versions/pgsql/59.sql
@@ -0,0 +1,13 @@
+begin;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_SPECIAL', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_LABELS', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_FEEDLIST', 1, 'false', '', 1);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('_COLLAPSED_UNCAT', 1, 'false', '', 1);
+
+update ttrss_version set schema_version = 59;
+
+commit;
diff --git a/tt-rss.js b/tt-rss.js
index af5c6fae0..86b4e5644 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -27,7 +27,6 @@ function activeFeedIsCat() {
}
function getActiveFeedId() {
-// return getCookie("ttrss_vf_actfeed");
try {
debug("gAFID: " + _active_feed_id);
return _active_feed_id;
@@ -37,7 +36,6 @@ function getActiveFeedId() {
}
function setActiveFeedId(id, is_cat) {
-// return setCookie("ttrss_vf_actfeed", id);
try {
debug("sAFID(" + id + ", " + is_cat + ")");
_active_feed_id = id;
@@ -372,9 +370,9 @@ function genericSanityCheck() {
// if (!Ajax.getTransport()) fatalError(1);
- setCookie("ttrss_vf_test", "TEST");
+ setCookie("ttrss_test", "TEST");
- if (getCookie("ttrss_vf_test") != "TEST") {
+ if (getCookie("ttrss_test") != "TEST") {
fatalError(2);
}
@@ -504,7 +502,7 @@ function init_second_stage() {
try {
- delCookie("ttrss_vf_test");
+ delCookie("ttrss_test");
// document.onresize = resize_headlines;
window.onresize=resize_headlines;
@@ -943,7 +941,9 @@ function collapse_feedlist() {
if (fc) fc.style.left = fl.offsetWidth + 40 + "px";
}
- setCookie("ttrss_vf_fclps", "0");
+ query = "backend.php?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false";
+
+ new Ajax.Request(query);
} else {
Element.hide(fl);
@@ -965,7 +965,10 @@ function collapse_feedlist() {
}
- setCookie("ttrss_vf_fclps", "1");
+ query = "backend.php?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
+
+ new Ajax.Request(query);
+
}
} catch (e) {
exception_error("toggle_feedlist", e);