Преглед изворни кода

Merge branch '0.6.x'

Conflicts:
	converse.js
JC Brand пре 11 година
родитељ
комит
37f2f8ca0c
3 измењених фајлова са 23 додато и 9 уклоњено
  1. 4 3
      CHANGES.rst
  2. 12 6
      converse.js
  3. 7 0
      docs/source/index.rst

+ 4 - 3
CHANGES.rst

@@ -4,12 +4,13 @@ Changelog
 0.6.5 (Unreleased)
 0.6.5 (Unreleased)
 ------------------
 ------------------
 
 
-* Fetch vCards asynchronously once a roster contacts is added [jcbrand]
+* Fetch vCards asynchronously once a roster contact is added [jcbrand]
 * Hungarian translation [w3host]
 * Hungarian translation [w3host]
 * Russian translation [bkocherov]
 * Russian translation [bkocherov]
 * Update CSS to avoid clash with bootstrap [seocam]
 * Update CSS to avoid clash with bootstrap [seocam]
-* Add config option ``allow_muc`` to toggle multi-user chat (MUC) [jcbrand]
-* Add config option ``allow_contact_requests`` to toggle user adding [jcbrand]
+* New config option ``allow_muc`` toggles multi-user chat (MUC) [jcbrand]
+* New config option ``allow_contact_requests`` toggles user adding [jcbrand]
+* New config option ``show_only_online_users`` [jcbrand]
 
 
 0.6.4 (2013-09-15)
 0.6.4 (2013-09-15)
 ------------------
 ------------------

+ 12 - 6
converse.js

@@ -69,6 +69,7 @@
         this.i18n = locales.en;
         this.i18n = locales.en;
         this.prebind = false;
         this.prebind = false;
         this.show_controlbox_by_default = false;
         this.show_controlbox_by_default = false;
+        this.show_only_online_users = false;
         this.show_toolbar = true;
         this.show_toolbar = true;
         this.testing = false; // Exposes sensitive data for testing. Never set to true in production systems!
         this.testing = false; // Exposes sensitive data for testing. Never set to true in production systems!
         this.xhr_custom_status = false;
         this.xhr_custom_status = false;
@@ -92,6 +93,7 @@
             'prebind',
             'prebind',
             'rid',
             'rid',
             'show_controlbox_by_default',
             'show_controlbox_by_default',
+            'show_only_online_users',
             'show_toolbar',
             'show_toolbar',
             'sid',
             'sid',
             'testing',
             'testing',
@@ -2605,8 +2607,6 @@
                         converse.connection.roster.authorize(bare_jid);
                         converse.connection.roster.authorize(bare_jid);
                     } else {
                     } else {
                         if (!this.get(bare_jid)) {
                         if (!this.get(bare_jid)) {
-                            // TODO: we can perhaps do the creation inside
-                            // getVCard.
                             converse.getVCard(
                             converse.getVCard(
                                 bare_jid,
                                 bare_jid,
                                 $.proxy(function (jid, fullname, img, img_type, url) {
                                 $.proxy(function (jid, fullname, img, img_type, url) {
@@ -2735,7 +2735,7 @@
                 this.model.on("remove", function (item) { this.removeRosterItem(item); }, this);
                 this.model.on("remove", function (item) { this.removeRosterItem(item); }, this);
                 this.model.on("destroy", function (item) { this.removeRosterItem(item); }, this);
                 this.model.on("destroy", function (item) { this.removeRosterItem(item); }, this);
 
 
-                var roster_markup = this.contacts_template()
+                var roster_markup = this.contacts_template();
                 if (converse.allow_contact_requests) {
                 if (converse.allow_contact_requests) {
                     roster_markup = this.requesting_contacts_template() + roster_markup + this.pending_contacts_template();
                     roster_markup = this.requesting_contacts_template() + roster_markup + this.pending_contacts_template();
                 }
                 }
@@ -2770,11 +2770,17 @@
                 chatbox.save(changes);
                 chatbox.save(changes);
             },
             },
 
 
-            renderRosterItem: function () {
+            renderRosterItem: function (item, view) {
+                if (converse.show_only_online_users) {
+                    if (item.get('chat_status') !== 'online') {
+                        view.$el.remove();
+                        return;
+                    }
+                }
                 if ($.contains(document.documentElement, view.el)) {
                 if ($.contains(document.documentElement, view.el)) {
                     view.render();
                     view.render();
                 } else {
                 } else {
-                    $my_contacts.after(view.render().el);
+                    this.$el.find('#xmpp-contacts').after(view.render().el);
                 }
                 }
             },
             },
 
 
@@ -2798,7 +2804,7 @@
                         $contact_requests.after(view.render().el);
                         $contact_requests.after(view.render().el);
                         $contact_requests.after($contact_requests.siblings('dd.requesting-xmpp-contact').tsort(crit));
                         $contact_requests.after($contact_requests.siblings('dd.requesting-xmpp-contact').tsort(crit));
                     } else if (subscription === 'both' || subscription === 'to') {
                     } else if (subscription === 'both' || subscription === 'to') {
-                        this.renderRosterItem();
+                        this.renderRosterItem(item, view);
                     }
                     }
                     changed_presence = view.model.changed.chat_status;
                     changed_presence = view.model.changed.chat_status;
                     if (changed_presence) {
                     if (changed_presence) {

+ 7 - 0
docs/source/index.rst

@@ -581,6 +581,13 @@ the page with class *toggle-online-users*.
 If this options is set to true, the controlbox will by default be shown upon
 If this options is set to true, the controlbox will by default be shown upon
 page load.
 page load.
 
 
+show_only_online_users
+----------------------
+
+Default = ``false``
+
+If set to ``true``, only online users will be shown in the contacts roster.
+Users with any other status (e.g. away, busy etc.) will not be shown.
 
 
 xhr_user_search
 xhr_user_search
 ---------------
 ---------------