From 2c77f553c85393d2006b42908647c31c352f6b81 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 03 Aug 2011 08:31:38 -0400
Subject: [PATCH] - Add "loading" messages for contacts copying and groups assignment

---
 program/js/app.js |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 88f51a1..f002dca 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -309,11 +309,8 @@
           this.enable_command('show', 'edit', true);
           // register handlers for group assignment via checkboxes
           if (this.gui_objects.editform) {
-            $('input.groupmember').change(function(){
-              var cmd = this.checked ? 'group-addmembers' : 'group-delmembers';
-              ref.http_post(cmd, '_cid='+urlencode(ref.env.cid)
-                + '&_source='+urlencode(ref.env.source)
-                + '&_gid='+urlencode(this.value));
+            $('input.groupmember').change(function() {
+              ref.group_member_change(this.checked ? 'add' : 'del', ref.env.cid, ref.env.source, this.value);
             });
           }
         }
@@ -3916,29 +3913,39 @@
     return true;
   };
 
+  // add/delete member to/from the group
+  this.group_member_change = function(what, cid, source, gid)
+  {
+    what = what == 'add' ? 'add' : 'del';
+    var lock = this.display_message(this.get_label(what == 'add' ? 'addingmember' : 'removingmember'), 'loading');
+
+    this.http_post('group-'+what+'members', '_cid='+urlencode(cid)
+      + '&_source='+urlencode(source)
+      + '&_gid='+urlencode(gid), lock);
+  };
+
   // copy a contact to the specified target (group or directory)
   this.copy_contact = function(cid, to)
   {
     if (!cid)
       cid = this.contact_list.get_selection().join(',');
 
-    if (to.type == 'group' && to.source == this.env.source) {
-      this.http_post('group-addmembers', '_cid='+urlencode(cid)
-        + '&_source='+urlencode(this.env.source)
-        + '&_gid='+urlencode(to.id));
-    }
+    if (to.type == 'group' && to.source == this.env.source)
+      this.group_member_change('add', cid, to.source, to.id);
     else if (to.type == 'group' && !this.env.address_sources[to.source].readonly) {
+      var lock = this.display_message(this.get_label('copyingcontact'), 'loading');
       this.http_post('copy', '_cid='+urlencode(cid)
         + '&_source='+urlencode(this.env.source)
         + '&_to='+urlencode(to.source)
         + '&_togid='+urlencode(to.id)
-        + (this.env.group ? '&_gid='+urlencode(this.env.group) : ''));
+        + (this.env.group ? '&_gid='+urlencode(this.env.group) : ''), lock);
     }
     else if (to.id != this.env.source && cid && this.env.address_sources[to.id] && !this.env.address_sources[to.id].readonly) {
+      var lock = this.display_message(this.get_label('copyingcontact'), 'loading');
       this.http_post('copy', '_cid='+urlencode(cid)
         + '&_source='+urlencode(this.env.source)
         + '&_to='+urlencode(to.id)
-        + (this.env.group ? '&_gid='+urlencode(this.env.group) : ''));
+        + (this.env.group ? '&_gid='+urlencode(this.env.group) : ''), lock);
     }
   };
 

--
Gitblit v1.9.1