From c5d8db9f818dd622c8cd6f915a1b1ba7af51d4c6 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 26 Apr 2009 13:07:27 -0400
Subject: [PATCH] Add javascript event 'insertrow'

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

diff --git a/program/js/app.js b/program/js/app.js
index 65b7c83..6293392 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1232,9 +1232,6 @@
 
   this.drag_start = function(list)
   {
-    this.initialBodyScrollTop = bw.ie ? 0 : window.pageYOffset;
-    this.initialMailBoxScrollTop = document.getElementById("mailboxlist-container").scrollTop;
-
     var model = this.task == 'mail' ? this.env.mailboxes : this.env.address_sources;
 
     this.drag_active = true;
@@ -1244,6 +1241,9 @@
     // save folderlist and folders location/sizes for droptarget calculation in drag_move()
     if (this.gui_objects.folderlist && model)
       {
+      this.initialBodyScrollTop = bw.ie ? 0 : window.pageYOffset;
+      this.initialListScrollTop = this.gui_objects.folderlist.parentNode.scrollTop;
+
       var li, pos, list, height;
       list = $(this.gui_objects.folderlist);
       pos = list.offset();
@@ -1266,7 +1266,7 @@
     if (this.gui_objects.folderlist && this.env.folder_coords) {
       // offsets to compensate for scrolling while dragging a message
       var boffset = bw.ie ? -document.documentElement.scrollTop : this.initialBodyScrollTop;
-      var moffset = this.initialMailBoxScrollTop-document.getElementById('mailboxlist-container').scrollTop;
+      var moffset = this.initialListScrollTop-this.gui_objects.folderlist.parentNode.scrollTop;
       var toffset = -moffset-boffset;
 
       var li, pos, mouse;
@@ -2574,7 +2574,7 @@
   this.ksearch_query_results = function(results, search)
   {
     // ignore this outdated search response
-    if (search != this.ksearch_value)
+    if (this.ksearch_value && search != this.ksearch_value)
       return;
       
     this.hide_message();
@@ -3008,7 +3008,6 @@
       var reg = new RegExp('.*['+RegExp.escape(this.env.delimiter)+']');
       this.name_input = document.createElement('INPUT');
       this.name_input.value = this.env.subscriptionrows[id][0].replace(reg, '');
-      this.name_input.style.width = '100%';
 
       reg = new RegExp('['+RegExp.escape(this.env.delimiter)+']?[^'+RegExp.escape(this.env.delimiter)+']+$');
       this.name_input.__parent = this.env.subscriptionrows[id][0].replace(reg, '');
@@ -3460,6 +3459,9 @@
       if ((target_li = this.get_folder_li(name))) {
         $(target_li).removeClass('unfocused').addClass('selected');
       }
+      
+      // trigger event hook
+      this.triggerEvent('selectfolder', { folder:name, old:old });
     }
   };
 
@@ -3532,7 +3534,7 @@
         + (flags.unread ? ' unread' : '')
         + (flags.deleted ? ' deleted' : '')
         + (flags.flagged ? ' flagged' : '')
-	+ (this.message_list.in_selection(uid) ? ' selected' : '');
+        + (this.message_list.in_selection(uid) ? ' selected' : '');
 
     // for performance use DOM instead of jQuery here
     var row = document.createElement('TR');
@@ -3581,6 +3583,7 @@
       }
 
     this.message_list.insert_row(row, attop);
+    this.triggerEvent('insertrow', { uid:uid, row:row });
 
     // remove 'old' row
     if (attop && this.env.pagesize && this.message_list.rowcount > this.env.pagesize) {
@@ -3707,17 +3710,24 @@
     var rowcount = tbody.rows.length;
     var even = rowcount%2;
     
-    var row = $('<tr>').attr('id', 'rcmrow'+cid).addClass('class').addClass(even ? 'even' : 'odd');
-    
+    var row = document.createElement('TR');
+    row.id = 'rcmrow'+cid;
+    row.className = 'contact '+(even ? 'even' : 'odd');
+	    
     if (this.contact_list.in_selection(cid))
-      row.addClass('selected');
+      row.className += ' selected';
 
     // add each submitted col
     for (var c in cols) {
-      col = $('<td>').addClass(String(c).toLowerCase()).html(cols[c]).appendTo(row);
+      col = document.createElement('TD');
+      col.className = String(c).toLowerCase();
+      col.innerHTML = cols[c];
+      row.appendChild(col);
     }
     
     this.contact_list.insert_row(row);
+    this.triggerEvent('insertrow', { cid:cid, row:row });
+    
     this.enable_command('export', (this.contact_list.rowcount > 0));
     };
 
@@ -3908,9 +3918,16 @@
             this.msglist_select(this.message_list);
           this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0));
           this.enable_command('purge', this.purge_mailbox_test());
+          
+          if (response.action == 'list')
+            this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount });
         }
-        else if (this.task == 'addressbook')
+        else if (this.task == 'addressbook') {
           this.enable_command('export', (this.contact_list && this.contact_list.rowcount > 0));
+          
+          if (response.action == 'list')
+            this.triggerEvent('listupdate', { folder:this.env.source, rowcount:this.contact_list.rowcount });
+        }
         break;
     }
   };

--
Gitblit v1.9.1