From 62811c4a709004abe9145c71f3d14fe00137d900 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 05 Jul 2011 05:42:40 -0400
Subject: [PATCH] - Fix group commands state after extended search use, make this check readonly-flag aware

---
 program/js/app.js                    |   15 ++++++++++-----
 program/steps/addressbook/search.inc |    1 +
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index a9c345b..dddcf89 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -305,7 +305,7 @@
             $(this.gui_objects.qsearchbox).focusin(function() { rcmail.contact_list.blur(); });
           }
 
-          this.enable_command('group-create', this.env.address_sources[this.env.source].groups);
+          this.update_group_commands();
         }
 
         this.set_page_buttons();
@@ -3957,7 +3957,7 @@
 
   this.group_create = function()
   {
-    if (!this.gui_objects.folderlist || !this.env.address_sources[this.env.source].groups)
+    if (!this.gui_objects.folderlist)
       return;
 
     if (!this.name_input) {
@@ -4112,6 +4112,13 @@
 
     this.env.contactfolders[key].name = this.env.contactgroups[key].name = prop.name;
     this.triggerEvent('group_update', { id:prop.id, source:prop.source, name:prop.name, li:li[0], newid:prop.newid });
+  };
+
+  this.update_group_commands = function()
+  {
+    var source = this.env.source != '' ? this.env.address_sources[this.env.source] : null;
+    this.enable_command('group-create', (source && source.groups && !source.readonly));
+    this.enable_command('group-rename', 'group-delete', (source && source.groups && this.env.group && !source.readonly));
   };
 
   this.init_edit_field = function(col, elem)
@@ -5592,9 +5599,7 @@
           this.enable_command('export', (this.contact_list && this.contact_list.rowcount > 0));
 
           if (response.action == 'list' || response.action == 'search') {
-            var source = this.env.source != '' ? this.env.address_sources[this.env.source] : null;
-            this.enable_command('group-create', (source && source.groups && !source.readonly));
-            this.enable_command('group-rename', 'group-delete', (source && source.groups && this.env.group && !source.readonly));
+            this.update_group_commands();
             this.triggerEvent('listupdate', { folder:this.env.source, rowcount:this.contact_list.rowcount });
           }
         }
diff --git a/program/steps/addressbook/search.inc b/program/steps/addressbook/search.inc
index a78478f..bb2f4d2 100644
--- a/program/steps/addressbook/search.inc
+++ b/program/steps/addressbook/search.inc
@@ -161,6 +161,7 @@
 
     // unselect currently selected directory/group
     $OUTPUT->command('unselect_directory');
+    $OUTPUT->command('update_group_commands');
 
     // send response
     $OUTPUT->send($adv ? 'iframe' : null);

--
Gitblit v1.9.1