Переглянути джерело

Fix rendering of minimized chatrooms

JC Brand 11 роки тому
батько
коміт
ef9fd9617d
4 змінених файлів з 34 додано та 17 видалено
  1. 29 16
      converse.js
  2. 2 0
      css/converse.css
  3. 2 0
      less/converse.less
  4. 1 1
      src/templates/trimmed_chat.html

+ 29 - 16
converse.js

@@ -3,7 +3,7 @@
  * http://conversejs.org
  *
  * Copyright (c) 2012, Jan-Carel Brand <jc@opkode.com>
- * Licensed under the Mozilla Public License (MPL) 
+ * Licensed under the Mozilla Public License (MPL)
  */
 
 // AMD/global registrations
@@ -866,7 +866,7 @@
 
             events: {
                 'click .close-chatbox-button': 'close',
-                'click .toggle-chatbox-button': 'toggle',
+                'click .toggle-chatbox-button': 'minimize',
                 'keypress textarea.chat-textarea': 'keyPressed',
                 'click .toggle-smiley': 'toggleEmoticonMenu',
                 'click .toggle-smiley ul li': 'insertEmoticon',
@@ -897,9 +897,8 @@
 
                 this.updateVCard();
                 this.$el.insertAfter(converse.chatboxviews.get("controlbox").$el);
-
                 this.model.messages.fetch({add: true});
-                this.render().showStatusMessage();
+                this.render();
                 if (this.model.get('minimized')) {
                     this.hide();
                 } else {
@@ -925,7 +924,7 @@
                 setTimeout(function () {
                     converse.refreshWebkit();
                 }, 50);
-                return this;
+                return this.showStatusMessage();
             },
 
             initDragResize: function () {
@@ -1306,6 +1305,7 @@
                 if (msg) {
                     this.$el.find('p.user-custom-message').text(msg).attr('title', msg);
                 }
+                return this;
             },
 
             close: function () {
@@ -1318,15 +1318,16 @@
             },
 
             maximize: function () {
-                // the opposite of trim, i.e. restoring a trimmed chat box
+                /* Restores a minimized chat box
+                 */
                 this.$el.insertAfter(converse.chatboxviews.get("controlbox").$el).show();
                 this.focus();
                 converse.refreshWebkit();
                 this.model.trigger('maximized', this.model);
             },
 
-            toggle: function (ev) {
-                /* Minimizes or maximizes a chat box
+            minimize: function (ev) {
+                /* Minimizes a chat box
                  */
                 this.model.save({
                     'minimized': true,
@@ -1439,8 +1440,8 @@
 
             hide: function () {
                 if (this.$el.is(':visible') && this.$el.css('opacity') == "1") {
-                    this.$el.fadeOut('fast', converse.refreshWebkit);
-                    converse.emit('onChatBoxClosed', this);
+                    this.$el.hide();
+                    converse.refreshWebkit();
                 }
                 return this;
             },
@@ -1886,7 +1887,7 @@
             className: 'chatroom',
             events: {
                 'click .close-chatbox-button': 'close',
-                'click .toggle-chatbox-button': 'toggle',
+                'click .toggle-chatbox-button': 'minimize',
                 'click .configure-chatroom-button': 'configureChatRoom',
                 'click .toggle-smiley': 'toggleEmoticonMenu',
                 'click .toggle-smiley ul li': 'insertEmoticon',
@@ -1915,9 +1916,13 @@
                         undefined);
                 },
                 this);
-                this.$el.appendTo(converse.chatboxviews.$el);
-                this.render().show().model.messages.fetch({add: true});
-                this.initDragResize();
+                this.$el.insertAfter(converse.chatboxviews.get("controlbox").$el);
+                this.render().model.messages.fetch({add: true});
+                if (this.model.get('minimized')) {
+                    this.hide();
+                } else {
+                    this.show();
+                }
             },
 
             render: function () {
@@ -2601,8 +2606,15 @@
             },
 
             render: function () {
-                return this.$el.addClass('chat-head-chatbox').html(
-                    converse.templates.trimmed_chat(this.model.toJSON()));
+                var data = this.model.toJSON();
+                if (this.model.get('chatroom')) {
+                    data['title'] = this.model.get('name');
+                    this.$el.addClass('chat-head-chatroom');
+                } else {
+                    data['title'] = this.model.get('fullname');
+                    this.$el.addClass('chat-head-chatbox');
+                }
+                return this.$el.html(converse.templates.trimmed_chat(data));
             },
 
             close: function (ev) {
@@ -2612,6 +2624,7 @@
                 ev.preventDefault();
                 this.$el.remove();
                 this.model.destroy();
+                converse.emit('onChatBoxClosed', this);
                 return this;
             },
 

+ 2 - 0
css/converse.css

@@ -743,6 +743,8 @@ input.error {
 }
 #conversejs .chat-title a {
   color: white;
+  width: 100%;
+  display: block;
 }
 #conversejs .chat-head-chatbox,
 #conversejs .chat-head-chatroom {

+ 2 - 0
less/converse.less

@@ -806,6 +806,8 @@ input.error {
 
 #conversejs .chat-title a {
     color: white;
+    width: 100%;
+    display: block;
 }
 
 #conversejs .chat-head-chatbox,

+ 1 - 1
src/templates/trimmed_chat.html

@@ -2,6 +2,6 @@
 <div class="chat-title">
     <a href="#" class="restore-chat">
         <div class="chat-head-message-count">0</div>
-        {{ fullname }}
+        {{ title }}
     </a>
 </div>