From 9ad0fc489ff3c32face845989a8f5f311208b4f9 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 02 Mar 2015 07:51:51 -0500
Subject: [PATCH] Fix javascript error after creating a folder which is a subfolder of another one (#1490297)

---
 CHANGELOG                          |    1 +
 program/steps/settings/folders.inc |    2 +-
 program/js/app.js                  |    6 ++++--
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 47ff573..1a3b412 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -23,6 +23,7 @@
 - Fix parsing invalid HTML messages with BOM after <!DOCTYPE> (#1490291)
 - Fix duplicate entry on timezones list in rcube_config::timezone_name_from_abbr() (#1490293)
 - Fix so localized folder name is displayed in multi-folder search result (#1490243)
+- Fix javascript error after creating a folder which is a subfolder of another one (#1490297)
 
 RELEASE 1.1.0
 -------------
diff --git a/program/js/app.js b/program/js/app.js
index 56d07f3..7d3f0c5 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1608,7 +1608,8 @@
 
   this.folder_collapsed = function(node)
   {
-    var prefname = this.env.task == 'addressbook' ? 'collapsed_abooks' : 'collapsed_folders';
+    var prefname = this.env.task == 'addressbook' ? 'collapsed_abooks' : 'collapsed_folders',
+      old = this.env[prefname];
 
     if (node.collapsed) {
       this.env[prefname] = this.env[prefname] + '&'+urlencode(node.id)+'&';
@@ -1624,7 +1625,8 @@
     }
 
     if (!this.drag_active) {
-      this.command('save-pref', { name: prefname, value: this.env[prefname] });
+      if (old !== this.env[prefname])
+        this.command('save-pref', { name: prefname, value: this.env[prefname] });
 
       if (this.env.unread_counts)
         this.set_unread_count_display(node.id, false);
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 6db0b17..443635f 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -265,7 +265,7 @@
 
     $js_folders = array();
     $folders    = array();
-    $collapsed  = $RCMAIL->config->get('collapsed_folders');
+    $collapsed  = (string) $RCMAIL->config->get('collapsed_folders');
 
     // create list of available folders
     foreach ($list_folders as $i => $folder) {

--
Gitblit v1.9.1