From 99d86607372eadef6e11701d8184d758a45c2062 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 26 Apr 2009 12:47:49 -0400
Subject: [PATCH] Add two new javascript events

---
 program/js/app.js |   59 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 24e871a..c17e032 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;
@@ -2568,13 +2568,13 @@
     this.ksearch_value = q;
     
     this.display_message(this.get_label('searching'), 'loading', true);
-    this.http_post('autocomplete', '_search='+q);
+    this.http_post('autocomplete', '_search='+urlencode(q));
   };
 
   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 });
     }
   };
 
@@ -3707,14 +3709,19 @@
     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);
@@ -3787,6 +3794,13 @@
       error: function(o) { rcmail.http_error(o); },
       success: function(data) { rcmail.set_busy(false); $(document.getElementById(id)).val(data); console.log(data); }
       });
+    }
+
+  this.plain2html = function(plainText, id)
+    {
+    this.set_busy(true, 'converting');
+    $(document.getElementById(id)).val('<pre>'+plainText+'</pre>');
+    this.set_busy(false);
     }
 
 
@@ -3901,9 +3915,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;
     }
   };
@@ -3911,16 +3932,12 @@
   // handle HTTP request errors
   this.http_error = function(request, status, err)
     {
-      alert(status+":"+err);
-/*
-    //alert('Error sending request: '+request_obj.url+' => HTTP '+request_obj.xmlhttp.status);
-    if (request_obj.__lock)
-      this.set_busy(false);
+    var errmsg = request.statusText;
 
-    request_obj.reset();
-    request_obj.__lock = false;
-    this.display_message('Unknown Server Error!', 'error');
-*/
+    this.set_busy(false);
+    request.abort();
+    
+    this.display_message('Unknown Server Error!' + (errmsg ? ' ('+errmsg+')' : ''), 'error');
     };
 
   // use an image to send a keep-alive siganl to the server

--
Gitblit v1.9.1