New config option `show_only_online_users`

If true, only users with a status of 'online' will be shown in the contacts
roster.
This commit is contained in:
JC Brand 2013-10-05 23:07:42 +02:00
parent fcc1f5adf4
commit 3bf27e8b5f
3 changed files with 24 additions and 10 deletions

View File

@ -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] * New config option ``allow_muc`` toggles multi-user chat (MUC) [jcbrand]
* Add config option ``allow_contact_requests`` to toggle user adding [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)
------------------ ------------------

View File

@ -57,6 +57,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.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;
this.xhr_user_search = false; this.xhr_user_search = false;
@ -78,6 +79,7 @@
'prebind', 'prebind',
'rid', 'rid',
'show_controlbox_by_default', 'show_controlbox_by_default',
'show_only_online_users',
'sid', 'sid',
'testing', 'testing',
'xhr_custom_status', 'xhr_custom_status',
@ -2225,8 +2227,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) {
@ -2355,7 +2355,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();
} }
@ -2373,7 +2373,7 @@
// want to send a presence stanza, so we do it here. // want to send a presence stanza, so we do it here.
converse.xmppstatus.sendPresence(); converse.xmppstatus.sendPresence();
} }
}, }
}); // Get the cached roster items from localstorage }); // Get the cached roster items from localstorage
}, },
@ -2390,11 +2390,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);
} }
}, },
@ -2418,7 +2424,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) {

View File

@ -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
--------------- ---------------