diff --git a/docs/CHANGES.md b/docs/CHANGES.md
index aea5c11dc..3c0bc5383 100755
--- a/docs/CHANGES.md
+++ b/docs/CHANGES.md
@@ -1,6 +1,7 @@
# Changelog
-## 1.0.7 (Unreleased)
+## 2.0.0 (Unreleased)
+- Backwards incompatible change: the `_super` attribute in plugins is now named `__super__`. [jcbrand]
- Continuously attempt to resurrect dead connections when `auto_reconnect` is `true`. [jcbrand]
- Update the 'rooms' API to allow user to pass in room attributes. [jcbrand]
- Add new configuration setting [message_storage](https://conversejs.org/docs/html/configuration.html#message_storage) [jcbrand]
diff --git a/docs/source/development.rst b/docs/source/development.rst
index 42368de71..3fd9e1250 100644
--- a/docs/source/development.rst
+++ b/docs/source/development.rst
@@ -1030,14 +1030,21 @@ When converse.js has learned of a service provided by the XMPP server. See XEP-0
``converse.listen.on('serviceDiscovered', function (event, service) { ... });``
-
Writing a converse.js plugin
============================
-Converse.js exposes a plugin mechanism which allows developers to extend and
-override its functionality.
+Developers are able to extend and override the objects, functions and the
+Backbone models and views that make up converse.js by means of writing plugins.
-You register a plugin as follows:
+Converse.js uses `pluggable.js `_ as
+its plugin architecture.
+
+To understand how this plugin architecture works, please read the
+`pluggable.js documentation `_
+and to grok its inner workins, please refer to the `annotated source code
+`_.
+
+You register a converse.js plugin as follows:
.. code-block:: javascript
@@ -1146,28 +1153,28 @@ An example plugin
// ...
// You can access the original function being overridden
- // via the _super attribute.
+ // via the __super__ attribute.
// Make sure to pass on the arguments supplied to this
// function and also to apply the proper "this" object.
- this._super.onConnected.apply(this, arguments);
+ this.__super__.onConnected.apply(this, arguments);
},
XMPPStatus: {
// Override converse.js's XMPPStatus Backbone model so that we can override the
// function that sends out the presence stanza.
sendPresence: function (type, status_message, jid) {
- // The "converse" object is available via the _super
+ // The "converse" object is available via the __super__
// attribute.
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
// Custom code can come here
// ...
// You can call the original overridden method, by
- // accessing it via the _super attribute.
+ // accessing it via the __super__ attribute.
// When calling it, you need to apply the proper
// context as reference by the "this" variable.
- this._super.sendPresence.apply(this, arguments);
+ this.__super__.sendPresence.apply(this, arguments);
}
},
}
diff --git a/package.json b/package.json
index e91fa7e2d..b13ec2631 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
},
"dependencies": {
"requirejs": "~2.2.0",
- "pluggable.js": "https://github.com/jcbrand/pluggable.js.git#0a43995de5186b6a575719127a28eda2f3f2fb86",
+ "pluggable.js": "0.0.2",
"jquery": "1.12.3",
"jed": "0.5.4",
"underscore": "~1.8.3",
diff --git a/src/converse-api.js b/src/converse-api.js
index db47b1cec..82f507f1a 100644
--- a/src/converse-api.js
+++ b/src/converse-api.js
@@ -204,7 +204,7 @@
* method.
*
* If a method is overridden, then the original method will still be
- * available via the _super attribute.
+ * available via the __super__ attribute.
*
* name: The attribute being overridden.
* value: The value of the attribute being overridden.
@@ -215,7 +215,7 @@
/* Helper method for overriding or extending Converse's Backbone Views or Models
*
* When a method is overriden, the original will still be available
- * on the _super attribute of the object being overridden.
+ * on the __super__ attribute of the object being overridden.
*
* obj: The Backbone View or Model
* attributes: A hash of attributes, such as you would pass to Backbone.Model.extend or Backbone.View.extend
diff --git a/src/converse-chatview.js b/src/converse-chatview.js
index 8a22ed1cc..3de868552 100644
--- a/src/converse-chatview.js
+++ b/src/converse-chatview.js
@@ -41,7 +41,7 @@
this.add(item.get('id'), view);
return view;
} else {
- return this._super.onChatBoxAdded.apply(this, arguments);
+ return this.__super__.onChatBoxAdded.apply(this, arguments);
}
}
}
diff --git a/src/converse-controlbox.js b/src/converse-controlbox.js
index ffe81b474..fdc1c0f0a 100644
--- a/src/converse-controlbox.js
+++ b/src/converse-controlbox.js
@@ -37,18 +37,18 @@
initSession: function () {
this.controlboxtoggle = new this.ControlBoxToggle();
- this._super.initSession.apply(this, arguments);
+ this.__super__.initSession.apply(this, arguments);
},
initConnection: function () {
- this._super.initConnection.apply(this, arguments);
+ this.__super__.initConnection.apply(this, arguments);
if (this.connection) {
this.addControlBox();
}
},
onDisconnected: function () {
- var result = this._super.onDisconnected.apply(this, arguments);
+ var result = this.__super__.onDisconnected.apply(this, arguments);
// Set connected to `false`, so that if we reconnect,
// "onConnected" will be called, to fetch the roster again and
// to send out a presence stanza.
@@ -64,7 +64,7 @@
},
afterReconnected: function () {
- this._super.afterReconnected.apply(this, arguments);
+ this.__super__.afterReconnected.apply(this, arguments);
var view = converse.chatboxviews.get('controlbox');
if (view.model.get('connected')) {
converse.chatboxviews.get("controlbox").onConnected();
@@ -74,7 +74,7 @@
},
_tearDown: function () {
- this._super._tearDown.apply(this, arguments);
+ this.__super__._tearDown.apply(this, arguments);
if (this.rosterview) {
this.rosterview.unregisterHandlers();
// Removes roster groups
@@ -84,7 +84,7 @@
},
clearSession: function () {
- this._super.clearSession.apply(this, arguments);
+ this.__super__.clearSession.apply(this, arguments);
if (typeof this.connection !== 'undefined' && this.connection.connected) {
this.chatboxes.get('controlbox').save({'connected': false});
}
@@ -92,12 +92,12 @@
ChatBoxes: {
chatBoxMayBeShown: function (chatbox) {
- return this._super.chatBoxMayBeShown.apply(this, arguments) &&
+ return this.__super__.chatBoxMayBeShown.apply(this, arguments) &&
chatbox.get('id') !== 'controlbox';
},
onChatBoxesFetched: function (collection, resp) {
- this._super.onChatBoxesFetched.apply(this, arguments);
+ this.__super__.onChatBoxesFetched.apply(this, arguments);
if (!_.include(_.pluck(resp, 'id'), 'controlbox')) {
this.add({
id: 'controlbox',
@@ -121,7 +121,7 @@
return this.add(item.get('id'), view);
}
} else {
- return this._super.onChatBoxAdded.apply(this, arguments);
+ return this.__super__.onChatBoxAdded.apply(this, arguments);
}
},
@@ -146,7 +146,7 @@
return controlbox.$el.outerWidth(true);
}
} else {
- return this._super.getChatBoxWidth.apply(this, arguments);
+ return this.__super__.getChatBoxWidth.apply(this, arguments);
}
}
},
@@ -160,7 +160,7 @@
'num_unread': 0
});
} else {
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
}
},
},
diff --git a/src/converse-core.js b/src/converse-core.js
index 33b914f48..bf3501be8 100755
--- a/src/converse-core.js
+++ b/src/converse-core.js
@@ -82,7 +82,7 @@
};
// Make converse pluggable
- pluggable.enable(converse, 'converse');
+ pluggable.enable(converse, 'converse', 'pluggable');
// Module-level constants
converse.STATUS_WEIGHTS = {
diff --git a/src/converse-dragresize.js b/src/converse-dragresize.js
index 23d207c34..e0859c555 100644
--- a/src/converse-dragresize.js
+++ b/src/converse-dragresize.js
@@ -56,12 +56,12 @@
this.resizing = null;
}.bind(this));
- return this._super.registerGlobalEventHandlers.apply(this, arguments);
+ return this.__super__.registerGlobalEventHandlers.apply(this, arguments);
},
ChatBox: {
initialize: function () {
- var result = this._super.initialize.apply(this, arguments),
+ var result = this.__super__.initialize.apply(this, arguments),
height = this.get('height'), width = this.get('width'),
save = this.get('id') === 'controlbox' ? this.set.bind(this) : this.save.bind(this);
save({
@@ -81,11 +81,11 @@
initialize: function () {
$(window).on('resize', _.debounce(this.setDimensions.bind(this), 100));
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
},
render: function () {
- var result = this._super.render.apply(this, arguments);
+ var result = this.__super__.render.apply(this, arguments);
this.setWidth();
return result;
},
@@ -100,7 +100,7 @@
_show: function () {
this.initDragResize().setDimensions();
- this._super._show.apply(this, arguments);
+ this.__super__._show.apply(this, arguments);
},
initDragResize: function () {
@@ -230,17 +230,17 @@
initialize: function () {
$(window).on('resize', _.debounce(this.setDimensions.bind(this), 100));
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
},
renderLoginPanel: function () {
- var result = this._super.renderLoginPanel.apply(this, arguments);
+ var result = this.__super__.renderLoginPanel.apply(this, arguments);
this.initDragResize().setDimensions();
return result;
},
renderContactsPanel: function () {
- var result = this._super.renderContactsPanel.apply(this, arguments);
+ var result = this.__super__.renderContactsPanel.apply(this, arguments);
this.initDragResize().setDimensions();
return result;
}
@@ -255,11 +255,11 @@
initialize: function () {
$(window).on('resize', _.debounce(this.setDimensions.bind(this), 100));
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
},
render: function () {
- var result = this._super.render.apply(this, arguments);
+ var result = this.__super__.render.apply(this, arguments);
this.setWidth();
return result;
}
diff --git a/src/converse-headline.js b/src/converse-headline.js
index 3c9adf35a..64220a5e1 100644
--- a/src/converse-headline.js
+++ b/src/converse-headline.js
@@ -53,7 +53,7 @@
this.add(item.get('id'), view);
return view;
} else {
- return this._super.onChatBoxAdded.apply(this, arguments);
+ return this.__super__.onChatBoxAdded.apply(this, arguments);
}
}
}
diff --git a/src/converse-mam.js b/src/converse-mam.js
index c30afe3cf..02a5c261a 100644
--- a/src/converse-mam.js
+++ b/src/converse-mam.js
@@ -44,13 +44,13 @@
Features: {
addClientFeatures: function () {
converse.connection.disco.addFeature(Strophe.NS.MAM);
- return this._super.addClientFeatures.apply(this, arguments);
+ return this.__super__.addClientFeatures.apply(this, arguments);
}
},
ChatBox: {
getMessageAttributes: function ($message, $delay, original_stanza) {
- var attrs = this._super.getMessageAttributes.apply(this, arguments);
+ var attrs = this.__super__.getMessageAttributes.apply(this, arguments);
attrs.archive_id = $(original_stanza).find('result[xmlns="'+Strophe.NS.MAM+'"]').attr('id');
return attrs;
}
@@ -58,7 +58,7 @@
ChatBoxView: {
render: function () {
- var result = this._super.render.apply(this, arguments);
+ var result = this.__super__.render.apply(this, arguments);
if (!this.disable_mam) {
this.$content.on('scroll', _.debounce(this.onScroll.bind(this), 100));
}
@@ -67,7 +67,7 @@
afterMessagesFetched: function () {
if (this.disable_mam || !converse.features.findWhere({'var': Strophe.NS.MAM})) {
- return this._super.afterMessagesFetched.apply(this, arguments);
+ return this.__super__.afterMessagesFetched.apply(this, arguments);
}
if (this.model.messages.length < converse.archived_messages_page_size) {
this.fetchArchivedMessages({
@@ -76,7 +76,7 @@
'max': converse.archived_messages_page_size
});
}
- return this._super.afterMessagesFetched.apply(this, arguments);
+ return this.__super__.afterMessagesFetched.apply(this, arguments);
},
fetchArchivedMessages: function (options) {
@@ -119,7 +119,7 @@
ChatRoomView: {
render: function () {
- var result = this._super.render.apply(this, arguments);
+ var result = this.__super__.render.apply(this, arguments);
if (!this.disable_mam) {
this.$content.on('scroll', _.debounce(this.onScroll.bind(this), 100));
}
diff --git a/src/converse-minimize.js b/src/converse-minimize.js
index b0c31277e..6ac8d0c18 100644
--- a/src/converse-minimize.js
+++ b/src/converse-minimize.js
@@ -33,7 +33,7 @@
// New functions which don't exist yet can also be added.
_initialize: function () {
- this._super._initialize.apply(this, arguments);
+ this.__super__._initialize.apply(this, arguments);
converse.minimized_chats = new converse.MinimizedChats({
model: converse.chatboxes
});
@@ -46,7 +46,7 @@
converse.chatboxviews.trimChats();
}
}, 200));
- return this._super.registerGlobalEventHandlers.apply(this, arguments);
+ return this.__super__.registerGlobalEventHandlers.apply(this, arguments);
},
wrappedChatBox: function (chatbox) {
@@ -54,7 +54,7 @@
* returned via the API.
*/
if (!chatbox) { return; }
- var box = this._super.wrappedChatBox.apply(this, arguments);
+ var box = this.__super__.wrappedChatBox.apply(this, arguments);
box.maximize = chatbox.maximize.bind(chatbox);
box.minimize = chatbox.minimize.bind(chatbox);
return box;
@@ -62,7 +62,7 @@
ChatBox: {
initialize: function () {
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
if (this.get('id') === 'controlbox') {
return;
}
@@ -94,11 +94,11 @@
initialize: function () {
this.model.on('change:minimized', this.onMinimizedChanged, this);
- return this._super.initialize.apply(this, arguments);
+ return this.__super__.initialize.apply(this, arguments);
},
afterShown: function () {
- this._super.afterShown.apply(this, arguments);
+ this.__super__.afterShown.apply(this, arguments);
if (!this.model.get('minimized')) {
converse.chatboxviews.trimChats(this);
}
@@ -106,18 +106,18 @@
shouldShowOnTextMessage: function () {
return !this.model.get('minimized') &&
- this._super.shouldShowOnTextMessage.apply(this, arguments);
+ this.__super__.shouldShowOnTextMessage.apply(this, arguments);
},
setChatBoxHeight: function (height) {
if (!this.model.get('minimized')) {
- return this._super.setChatBoxHeight.apply(this, arguments);
+ return this.__super__.setChatBoxHeight.apply(this, arguments);
}
},
setChatBoxWidth: function (width) {
if (!this.model.get('minimized')) {
- return this._super.setChatBoxWidth.apply(this, arguments);
+ return this.__super__.setChatBoxWidth.apply(this, arguments);
}
},
@@ -173,7 +173,7 @@
this.maximize();
}
}, this);
- var result = this._super.initialize.apply(this, arguments);
+ var result = this.__super__.initialize.apply(this, arguments);
if (this.model.get('minimized')) {
this.hide();
}
@@ -183,7 +183,7 @@
ChatBoxes: {
chatBoxMayBeShown: function (chatbox) {
- return this._super.chatBoxMayBeShown.apply(this, arguments) &&
+ return this.__super__.chatBoxMayBeShown.apply(this, arguments) &&
!chatbox.get('minimized');
},
},
@@ -192,7 +192,7 @@
showChat: function (attrs) {
/* Find the chat box and show it. If it doesn't exist, create it.
*/
- var chatbox = this._super.showChat.apply(this, arguments);
+ var chatbox = this.__super__.showChat.apply(this, arguments);
if (chatbox.get('minimized')) {
chatbox.maximize();
}
diff --git a/src/converse-muc.js b/src/converse-muc.js
index 265c18eab..a554cf9be 100755
--- a/src/converse-muc.js
+++ b/src/converse-muc.js
@@ -66,14 +66,14 @@
*/
if (!chatbox) { return; }
var view = converse.chatboxviews.get(chatbox.get('id'));
- var box = this._super.wrappedChatBox.apply(this, arguments);
+ var box = this.__super__.wrappedChatBox.apply(this, arguments);
box.is_chatroom = view.is_chatroom;
return box;
},
Features: {
addClientFeatures: function () {
- this._super.addClientFeatures.apply(this, arguments);
+ this.__super__.addClientFeatures.apply(this, arguments);
if (converse.allow_muc_invitations) {
converse.connection.disco.addFeature('jabber:x:conference'); // Invites
}
@@ -85,8 +85,8 @@
ControlBoxView: {
renderContactsPanel: function () {
- var converse = this._super.converse;
- this._super.renderContactsPanel.apply(this, arguments);
+ var converse = this.__super__.converse;
+ this.__super__.renderContactsPanel.apply(this, arguments);
if (converse.allow_muc) {
this.roomspanel = new converse.RoomsPanel({
'$parent': this.$el.find('.controlbox-panes'),
@@ -108,8 +108,8 @@
onConnected: function () {
// TODO: This can probably be refactored to be an event
// handler (and therefore removed from overrides)
- var converse = this._super.converse;
- this._super.onConnected.apply(this, arguments);
+ var converse = this.__super__.converse;
+ this.__super__.onConnected.apply(this, arguments);
if (this.model.get('connected')) {
converse.features.off('add', this.featureAdded, this);
@@ -126,7 +126,7 @@
},
featureAdded: function (feature) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
if ((feature.get('var') === Strophe.NS.MUC) && (converse.allow_muc)) {
this.roomspanel.model.save({muc_domain: feature.get('from')});
var $server= this.$el.find('input.new-chatroom-server');
@@ -144,7 +144,7 @@
view = new converse.ChatRoomView({'model': item});
return this.add(item.get('id'), view);
} else {
- return this._super.onChatBoxAdded.apply(this, arguments);
+ return this.__super__.onChatBoxAdded.apply(this, arguments);
}
}
}
diff --git a/src/converse-otr.js b/src/converse-otr.js
index 3c207955f..a71fdee60 100644
--- a/src/converse-otr.js
+++ b/src/converse-otr.js
@@ -60,12 +60,12 @@
// New functions which don't exist yet can also be added.
_initialize: function () {
- this._super._initialize.apply(this, arguments);
+ this.__super__._initialize.apply(this, arguments);
this.otr = new this.OTR();
},
registerGlobalEventHandlers: function () {
- this._super.registerGlobalEventHandlers();
+ this.__super__.registerGlobalEventHandlers();
$(document).click(function () {
if ($('.toggle-otr ul').is(':visible')) {
@@ -78,7 +78,7 @@
},
wrappedChatBox: function (chatbox) {
- var wrapped_chatbox = this._super.wrappedChatBox.apply(this, arguments);
+ var wrapped_chatbox = this.__super__.wrappedChatBox.apply(this, arguments);
if (!chatbox) { return; }
return _.extend(wrapped_chatbox, {
'endOTR': chatbox.endOTR.bind(chatbox),
@@ -88,7 +88,7 @@
ChatBox: {
initialize: function () {
- this._super.initialize.apply(this, arguments);
+ this.__super__.initialize.apply(this, arguments);
if (this.get('box_id') !== 'controlbox') {
this.save({
'otr_status': this.get('otr_status') || UNENCRYPTED
@@ -102,17 +102,17 @@
* OTR session is still being established, so there are no
* "visible" OTR messages being exchanged.
*/
- return this._super.shouldPlayNotification.apply(this, arguments) &&
+ return this.__super__.shouldPlayNotification.apply(this, arguments) &&
!(utils.isOTRMessage($message[0]) && !_.contains([UNVERIFIED, VERIFIED], this.get('otr_status')));
},
createMessage: function ($message, $delay, original_stanza) {
- var converse = this._super.converse,
+ var converse = this.__super__.converse,
$body = $message.children('body'),
text = ($body.length > 0 ? $body.text() : undefined);
if ((!text) || (!converse.allow_otr)) {
- return this._super.createMessage.apply(this, arguments);
+ return this.__super__.createMessage.apply(this, arguments);
}
if (text.match(/^\?OTRv23?/)) {
this.initiateOTR(text);
@@ -128,14 +128,14 @@
}
} else {
// Normal unencrypted message.
- return this._super.createMessage.apply(this, arguments);
+ return this.__super__.createMessage.apply(this, arguments);
}
}
}
},
getSession: function (callback) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
var cipher = CryptoJS.lib.PasswordBasedCipher;
var pass, instance_tag, saved_key, pass_check;
if (converse.cache_otr_key) {
@@ -226,7 +226,7 @@
// send the query message to them.
this.save({'otr_status': UNENCRYPTED});
this.getSession(function (session) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
this.otr = new otr.OTR({
fragment_size: 140,
send_interval: 200,
@@ -273,8 +273,8 @@
},
initialize: function () {
- var converse = this._super.converse;
- this._super.initialize.apply(this, arguments);
+ var converse = this.__super__.converse;
+ this.__super__.initialize.apply(this, arguments);
this.model.on('change:otr_status', this.onOTRStatusChanged, this);
this.model.on('showOTRError', this.showOTRError, this);
this.model.on('showSentOTRMessage', function (text) {
@@ -289,7 +289,7 @@
},
createMessageStanza: function () {
- var stanza = this._super.createMessageStanza.apply(this, arguments);
+ var stanza = this.__super__.createMessageStanza.apply(this, arguments);
if (this.model.get('otr_status') !== UNENCRYPTED || utils.isOTRMessage(stanza.nodeTree)) {
// OTR messages aren't carbon copied
stanza.c('private', {'xmlns': Strophe.NS.CARBONS}).up()
@@ -301,7 +301,7 @@
},
onMessageSubmitted: function (text) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
if (!converse.connection.authenticated) {
return this.showHelpMessages(
['Sorry, the connection has been lost, '+
@@ -322,7 +322,7 @@
this.model.otr.sendMsg(text);
this.model.trigger('showSentOTRMessage', text);
} else {
- this._super.onMessageSubmitted.apply(this, arguments);
+ this.__super__.onMessageSubmitted.apply(this, arguments);
}
},
@@ -346,7 +346,7 @@
},
showOTRError: function (msg) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
if (msg === 'Message cannot be sent at this time.') {
this.showHelpMessages(
[__('Your message could not be sent')], 'error');
@@ -378,7 +378,7 @@
},
authOTR: function (ev) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
var scheme = $(ev.target).data().scheme;
var result, question, answer;
if (scheme === 'fingerprint') {
@@ -425,7 +425,7 @@
},
renderToolbar: function (options) {
- var converse = this._super.converse;
+ var converse = this.__super__.converse;
if (!converse.show_toolbar) {
return;
}
@@ -447,7 +447,7 @@
otr_tooltip: this.getOTRTooltip(),
otr_translated_status: OTR_TRANSLATED_MAPPING[data.otr_status],
});
- this._super.renderToolbar.call(this, options);
+ this.__super__.renderToolbar.call(this, options);
this.$el.find('.chat-toolbar').append(
converse.templates.toolbar_otr(
_.extend(this.model.toJSON(), options || {})
diff --git a/src/converse-register.js b/src/converse-register.js
index 3778e892c..22d697485 100644
--- a/src/converse-register.js
+++ b/src/converse-register.js
@@ -55,8 +55,8 @@
/* Also render a registration panel, when rendering the
* login panel.
*/
- this._super.renderLoginPanel.apply(this, arguments);
- var converse = this._super.converse;
+ this.__super__.renderLoginPanel.apply(this, arguments);
+ var converse = this.__super__.converse;
if (converse.allow_registration) {
this.registerpanel = new converse.RegisterPanel({
'$parent': this.$el.find('.controlbox-panes'),
diff --git a/src/converse-rosterview.js b/src/converse-rosterview.js
index d4168fb29..442629725 100644
--- a/src/converse-rosterview.js
+++ b/src/converse-rosterview.js
@@ -28,7 +28,7 @@
// New functions which don't exist yet can also be added.
afterReconnected: function () {
this.rosterview.registerRosterXHandler();
- this._super.afterReconnected.apply(this, arguments);
+ this.__super__.afterReconnected.apply(this, arguments);
},
RosterGroups: {
@@ -126,7 +126,7 @@
label_state: __('State'),
label_any: __('Any'),
label_online: __('Online'),
- label_chatty: __('Chat'),
+ label_chatty: __('Chatty'),
label_busy: __('Busy'),
label_away: __('Away'),
label_xa: __('Extended Away'),
diff --git a/src/converse-vcard.js b/src/converse-vcard.js
index 4efb67584..6f9e93e76 100644
--- a/src/converse-vcard.js
+++ b/src/converse-vcard.js
@@ -31,7 +31,7 @@
Features: {
addClientFeatures: function () {
- this._super.addClientFeatures.apply(this, arguments);
+ this.__super__.addClientFeatures.apply(this, arguments);
if (converse.use_vcards) {
converse.connection.disco.addFeature(Strophe.NS.VCARD);
}