From a9251be2f09fb5f18a85d201c67668c70980efe3 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 20 Apr 2011 15:11:10 -0400
Subject: [PATCH] Update to TinyMCE 3.4.2 to fix errors in IE9

---
 program/js/app.js |  160 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 104 insertions(+), 56 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index c7e46e6..8cdddcc 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -37,7 +37,7 @@
 
   // webmail client settings
   this.dblclick_time = 500;
-  this.message_time = 1500;
+  this.message_time = 2000;
 
   this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi');
 
@@ -1006,15 +1006,9 @@
 
       // user settings commands
       case 'preferences':
-        this.goto_url('');
-        break;
-
       case 'identities':
-        this.goto_url('settings/identities');
-        break;
-
       case 'folders':
-        this.goto_url('settings/folders');
+        this.goto_url('settings/' + command);
         break;
 
       // unified command call (command name == function name)
@@ -1701,7 +1695,7 @@
       var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show';
       var uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid';
       cols.subject = '<a href="./?_task=mail&_action='+action+'&_mbox='+urlencode(flags.mbox)+'&'+uid_param+'='+uid+'"'+
-        ' onclick="return rcube_event.cancel(event)">'+cols.subject+'</a>';
+        ' onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')">'+cols.subject+'</a>';
     }
 
     // add each submitted col
@@ -1917,7 +1911,7 @@
     var url = '', target = window;
 
     if (!mbox)
-      mbox = this.env.mailbox;
+      mbox = this.env.mailbox ? this.env.mailbox : 'INBOX';
 
     if (add_url)
       url += add_url;
@@ -2819,7 +2813,7 @@
       input_subject = $("input[name='_subject']"),
       input_message = $("[name='_message']").get(0),
       html_mode = $("input[name='_is_html']").val() == '1',
-      ac_fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'];
+      ac_fields = ['cc', 'bcc', 'replyto', 'followupto'];
 
     // init live search events
     this.init_address_input_events(input_to);
@@ -3000,11 +2994,11 @@
   this.compose_field_hash = function(save)
   {
     // check input fields
-    var value_to = $("[name='_to']").val();
-    var value_cc = $("[name='_cc']").val();
-    var value_bcc = $("[name='_bcc']").val();
-    var value_subject = $("[name='_subject']").val();
-    var str = '';
+    var ed, str = '',
+      value_to = $("[name='_to']").val(),
+      value_cc = $("[name='_cc']").val(),
+      value_bcc = $("[name='_bcc']").val(),
+      value_subject = $("[name='_subject']").val();
 
     if (value_to)
       str += value_to+':';
@@ -3015,9 +3009,8 @@
     if (value_subject)
       str += value_subject+':';
 
-    var editor = tinyMCE.get(this.env.composebody);
-    if (editor)
-      str += editor.getContent();
+    if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)))
+      str += ed.getContent();
     else
       str += $("[name='_message']").val();
 
@@ -3777,6 +3770,9 @@
         this.show_contentframe(false);
     }
 
+    if (this.env.group)
+      qs += '&_gid='+urlencode(this.env.group);
+
     // also send search request to get the right records from the next page
     if (this.env.search_request) 
       qs += '&_search='+this.env.search_request;
@@ -4239,7 +4235,7 @@
   this.subscribe = function(folder)
   {
     if (folder) {
-      var lock = this.display_message('foldersubscribing', 'loading');
+      var lock = this.display_message(this.get_label('foldersubscribing'), 'loading');
       this.http_post('subscribe', '_mbox='+urlencode(folder), lock);
     }
   };
@@ -4247,7 +4243,7 @@
   this.unsubscribe = function(folder)
   {
     if (folder) {
-      var lock = this.display_message('folderunsubscribing', 'loading');
+      var lock = this.display_message(this.get_label('folderunsubscribing'), 'loading');
       this.http_post('unsubscribe', '_mbox='+urlencode(folder), lock);
     }
   };
@@ -4307,6 +4303,14 @@
       }
       target.location.href = this.env.comm_path+url;
     }
+  };
+
+  // disables subscription checkbox (for protected folder)
+  this.disable_subscription = function(folder)
+  {
+    var id = this.get_folder_row_id(folder);
+    if (id)
+      $('input[name="_subscribed[]"]', $('#'+id)).attr('disabled', true);
   };
 
   this.folder_size = function(folder)
@@ -4520,36 +4524,49 @@
 
     type = type ? type : 'notice';
 
-    var date = new Date(),
-      id = type + date.getTime();
-
+    var ref = this,
+      key = msg,
+      date = new Date(),
+      id = type + date.getTime(),
+      timeout = this.message_time * (type == 'error' || type == 'warning' ? 2 : 1);
+      
     if (type == 'loading') {
+      key = 'loading';
+      timeout = this.env.request_timeout * 1000;
       if (!msg)
         msg = this.get_label('loading');
-
-      // The same message of type 'loading' is already displayed
-      if (this.messages[msg]) {
-        this.messages[msg].elements.push(id);
-        return id;
-      }
     }
 
-    var ref = this,
-      obj = $('<div>').addClass(type).html(msg),
-      cont = $(this.gui_objects.message).show();
-
-    if (type == 'loading') {
-      obj.appendTo(cont);
-      this.messages[msg] = {'obj': obj, 'elements': [id]};
-      window.setTimeout(function() { rcmail.hide_message(id); }, this.env.request_timeout * 1000);
+    // The same message is already displayed
+    if (this.messages[key]) {
+      // replace label
+      if (this.messages[key].obj)
+        this.messages[key].obj.html(msg);
+      // store label in stack
+      if (type == 'loading') {
+        this.messages[key].labels.push({'id': id, 'msg': msg});
+      }
+      // add element and set timeout
+      this.messages[key].elements.push(id);
+      window.setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
       return id;
     }
-    else {
-      obj.appendTo(cont).bind('mousedown', function() { return ref.hide_message(obj); });
-      window.setTimeout(function() { ref.hide_message(obj, true); },
-        this.message_time * (type == 'error' ? 2 : 1));
-      return obj;
+
+    // create DOM object and display it
+    var obj = $('<div>').addClass(type).html(msg).data('key', key),
+      cont = $(this.gui_objects.message).append(obj).show();
+
+    this.messages[key] = {'obj': obj, 'elements': [id]};
+
+    if (type == 'loading') {
+      this.messages[key].labels = [{'id': id, 'msg': msg}];
     }
+    else {
+      obj.click(function() { return ref.hide_message(obj); });
+    }
+
+    window.setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
+    return id;
   };
 
   // make a message to disapear
@@ -4559,20 +4576,37 @@
     if (this.is_framed())
       return parent.rcmail.hide_message(obj, fade);
 
+    var k, n, i, msg, m = this.messages;
+
+    // Hide message by object, don't use for 'loading'!
     if (typeof(obj) == 'object') {
-      // custom message
       $(obj)[fade?'fadeOut':'hide']();
+      msg = $(obj).data('key');
+      if (this.messages[msg])
+        delete this.messages[msg];
     }
+    // Hide message by id
     else {
-      // 'loading' message
-      var k, n, m = this.messages;
       for (k in m) {
         for (n in m[k].elements) {
           if (m[k] && m[k].elements[n] == obj) {
             m[k].elements.splice(n, 1);
+            // hide DOM element if last instance is removed
             if (!m[k].elements.length) {
               m[k].obj[fade?'fadeOut':'hide']();
               delete m[k];
+            }
+            // set pending action label for 'loading' message
+            else if (k == 'loading') {
+              for (i in m[k].labels) {
+                if (m[k].labels[i].id == obj) {
+                  delete m[k].labels[i];
+                }
+                else {
+                  msg = m[k].labels[i].msg;
+                }
+                m[k].obj.html(msg);
+              }
             }
           }
         }
@@ -4587,7 +4621,7 @@
       var current_li, target_li;
 
       if ((current_li = this.get_folder_li(old, prefix))) {
-        $(current_li).removeClass('selected').removeClass('unfocused');
+        $(current_li).removeClass('selected').addClass('unfocused');
       }
       if ((target_li = this.get_folder_li(name, prefix))) {
         $(target_li).removeClass('unfocused').addClass('selected');
@@ -4616,17 +4650,18 @@
   // and for setting some message list global variables
   this.set_message_coltypes = function(coltypes, repl)
   {
-    this.env.coltypes = coltypes;
+    var list = this.message_list,
+      thead = list ? list.list.tHead : null,
+      cell, col, n, len, th, tr;
 
-    // set correct list titles
-    var thead = this.gui_objects.messagelist ? this.gui_objects.messagelist.tHead : null,
-      cell, col, n, len;
+    this.env.coltypes = coltypes;
 
     // replace old column headers
     if (thead) {
       if (repl) {
-        var th = document.createElement('thead'),
-          tr = document.createElement('tr');
+        th = document.createElement('thead');
+        tr = document.createElement('tr');
+
         for (c=0, len=repl.length; c < len; c++) {
           cell = document.createElement('td');
           cell.innerHTML = repl[c].html;
@@ -4636,6 +4671,7 @@
         }
         th.appendChild(tr);
         thead.parentNode.replaceChild(th, thead);
+        thead = th;
       }
 
       for (n=0, len=this.env.coltypes.length; n<len; n++) {
@@ -4659,15 +4695,16 @@
 
     if ((n = $.inArray('subject', this.env.coltypes)) >= 0) {
       this.set_env('subject_col', n);
-      if (this.message_list)
-        this.message_list.subject_col = n;
+      if (list)
+        list.subject_col = n;
     }
     if ((n = $.inArray('flag', this.env.coltypes)) >= 0)
       this.set_env('flagged_col', n);
     if ((n = $.inArray('status', this.env.coltypes)) >= 0)
       this.set_env('status_col', n);
 
-    this.message_list.init_header();
+    if (list)
+      list.init_header();
   };
 
   // replace content of row count display
@@ -5258,6 +5295,17 @@
 
 }  // end object rcube_webmail
 
+
+// some static methods
+rcube_webmail.long_subject_title = function(elem, indent)
+{
+  if (!elem.title) {
+    var $elem = $(elem);
+    if ($elem.width() + indent * 15 > $elem.parent().width())
+      elem.title = $elem.html();
+  }
+};
+
 // copy event engine prototype
 rcube_webmail.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
 rcube_webmail.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;

--
Gitblit v1.9.1