From 9b48b2d6bd34b7a28ad9624298c0f3a1ed40d463 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 20 Dec 2016 10:42:20 +0000 Subject: [PATCH] Update plugins to not depend on converse-core To illustrate that this is not necessary (and also not possible with non-bundled plugins). --- docs/source/other_frameworks.rst | 4 +-- src/converse-bookmarks.js | 42 +++++++++++++--------- src/converse-chatview.js | 39 +++++++++++---------- src/converse-controlbox.js | 53 +++++++++++++++------------- src/converse-core.js | 5 +-- src/converse-dragresize.js | 60 ++++++++++++++++++++------------ src/converse-headline.js | 46 ++++++++++++------------ src/converse-mam.js | 21 ++++++----- src/converse-minimize.js | 38 ++++++++++++-------- src/converse-muc.js | 24 ++++++------- src/converse-notification.js | 23 ++++++------ src/converse-otr.js | 56 +++++++++++++++++------------ src/converse-ping.js | 7 ++-- src/converse-register.js | 34 +++++++++--------- src/converse-rosterview.js | 36 ++++++++++--------- src/converse-vcard.js | 16 +++++---- src/converse.js | 8 ++--- 17 files changed, 285 insertions(+), 227 deletions(-) diff --git a/docs/source/other_frameworks.rst b/docs/source/other_frameworks.rst index 954223181..f002e0918 100644 --- a/docs/source/other_frameworks.rst +++ b/docs/source/other_frameworks.rst @@ -78,8 +78,8 @@ Below is an example code that wraps converse.js as an angular.js service. "converse-headline", // Support for headline messages // END: Removable components - ], function(converse_api) { - service.api = converse_api; + ], function(converse) { + service.api = converse; return deferred.resolve(); }); require(["converse"]); diff --git a/src/converse-bookmarks.js b/src/converse-bookmarks.js index 0ec456ba4..29f1a2242 100644 --- a/src/converse-bookmarks.js +++ b/src/converse-bookmarks.js @@ -16,7 +16,6 @@ "moment_with_locales", "strophe", "utils", - "converse-core", "converse-api", "converse-muc", "tpl!chatroom_bookmark_form", @@ -27,26 +26,18 @@ factory); }(this, function ( $, _, moment, strophe, utils, - _converse, converse_api, muc, + converse, muc, tpl_chatroom_bookmark_form, tpl_chatroom_bookmark_toggle, tpl_bookmark, tpl_bookmarks_list ) { - var __ = utils.__.bind(_converse), - ___ = utils.___, - Strophe = converse_api.env.Strophe, - $iq = converse_api.env.$iq, - b64_sha1 = converse_api.env.b64_sha1; + var Strophe = converse.env.Strophe, + $iq = converse.env.$iq, + b64_sha1 = converse.env.b64_sha1; - // Add new HTML templates. - _converse.templates.chatroom_bookmark_form = tpl_chatroom_bookmark_form; - _converse.templates.chatroom_bookmark_toggle = tpl_chatroom_bookmark_toggle; - _converse.templates.bookmark = tpl_bookmark; - _converse.templates.bookmarks_list = tpl_bookmarks_list; - - converse_api.plugins.add('converse-bookmarks', { + converse.plugins.add('converse-bookmarks', { overrides: { // Overrides mentioned here will be picked up by converse.js's // plugin architecture they will replace existing methods on the @@ -73,7 +64,9 @@ }, generateHeadingHTML: function () { - var html = this.__super__.generateHeadingHTML.apply(this, arguments); + var _converse = this.__super__._converse, + __ = _converse.__, + html = this.__super__.generateHeadingHTML.apply(this, arguments); if (_converse.allow_bookmarks) { var div = document.createElement('div'); div.innerHTML = html; @@ -97,6 +90,7 @@ * for this room, and if so use it. * Otherwise delegate to the super method. */ + var _converse = this.__super__._converse; if (_.isUndefined(_converse.bookmarks) || !_converse.allow_bookmarks) { return this.__super__.checkForReservedNick.apply(this, arguments); } @@ -119,6 +113,7 @@ setBookmarkState: function () { /* Set whether the room is bookmarked or not. */ + var _converse = this.__super__._converse; if (!_.isUndefined(_converse.bookmarks)) { var models = _converse.bookmarks.where({'jid': this.model.get('jid')}); if (!models.length) { @@ -130,7 +125,9 @@ }, renderBookmarkForm: function () { - var $body = this.$('.chatroom-body'); + var _converse = this.__super__._converse, + __ = _converse.__, + $body = this.$('.chatroom-body'); $body.children().addClass('hidden'); // Remove any existing forms $body.find('form.chatroom-form').remove(); @@ -150,6 +147,7 @@ onBookmarkFormSubmitted: function (ev) { ev.preventDefault(); + var _converse = this.__super__._converse; var $form = $(ev.target), that = this; _converse.bookmarks.createBookmark({ 'jid': this.model.get('jid'), @@ -169,6 +167,7 @@ ev.preventDefault(); ev.stopPropagation(); } + var _converse = this.__super__._converse; var models = _converse.bookmarks.where({'jid': this.model.get('jid')}); if (!models.length) { this.renderBookmarkForm(); @@ -186,7 +185,16 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - var _converse = this._converse; + var _converse = this._converse, + __ = _converse.__, + ___ = _converse.___; + + // Add new HTML templates. + _converse.templates.chatroom_bookmark_form = tpl_chatroom_bookmark_form; + _converse.templates.chatroom_bookmark_toggle = tpl_chatroom_bookmark_toggle; + _converse.templates.bookmark = tpl_bookmark; + _converse.templates.bookmarks_list = tpl_bookmarks_list; + // Configuration values for this plugin // ==================================== // Refer to docs/source/configuration.rst for explanations of these diff --git a/src/converse-chatview.js b/src/converse-chatview.js index 12a43be22..23c4ddabb 100644 --- a/src/converse-chatview.js +++ b/src/converse-chatview.js @@ -8,7 +8,6 @@ (function (root, factory) { define("converse-chatview", [ - "converse-core", "converse-api", "tpl!chatbox", "tpl!new_day", @@ -18,8 +17,7 @@ "tpl!avatar" ], factory); }(this, function ( - _converse, - converse_api, + converse, tpl_chatbox, tpl_new_day, tpl_action, @@ -28,28 +26,19 @@ tpl_avatar ) { "use strict"; - _converse.templates.chatbox = tpl_chatbox; - _converse.templates.new_day = tpl_new_day; - _converse.templates.action = tpl_action; - _converse.templates.message = tpl_message; - _converse.templates.toolbar = tpl_toolbar; - _converse.templates.avatar = tpl_avatar; - - var $ = converse_api.env.jQuery, - utils = converse_api.env.utils, - Strophe = converse_api.env.Strophe, - $msg = converse_api.env.$msg, - _ = converse_api.env._, - __ = utils.__.bind(_converse), - moment = converse_api.env.moment; - + var $ = converse.env.jQuery, + utils = converse.env.utils, + Strophe = converse.env.Strophe, + $msg = converse.env.$msg, + _ = converse.env._, + moment = converse.env.moment; var KEY = { ENTER: 13, FORWARD_SLASH: 47 }; - converse_api.plugins.add('converse-chatview', { + converse.plugins.add('converse-chatview', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -60,6 +49,7 @@ ChatBoxViews: { onChatBoxAdded: function (item) { + var _converse = this.__super__._converse; var view = this.get(item.get('id')); if (!view) { view = new _converse.ChatBoxView({model: item}); @@ -77,6 +67,17 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ + var _converse = this._converse, + __ = _converse.__; + + // Add new HTML templates. + _converse.templates.chatbox = tpl_chatbox; + _converse.templates.new_day = tpl_new_day; + _converse.templates.action = tpl_action; + _converse.templates.message = tpl_message; + _converse.templates.toolbar = tpl_toolbar; + _converse.templates.avatar = tpl_avatar; + this.updateSettings({ show_toolbar: true, chatview_avatar_width: 32, diff --git a/src/converse-controlbox.js b/src/converse-controlbox.js index 70c47eea3..53e681c33 100644 --- a/src/converse-controlbox.js +++ b/src/converse-controlbox.js @@ -8,7 +8,6 @@ (function (root, factory) { define("converse-controlbox", [ - "converse-core", "converse-api", "tpl!add_contact_dropdown", "tpl!add_contact_form", @@ -27,8 +26,7 @@ "converse-rosterview" ], factory); }(this, function ( - _converse, - converse_api, + converse, tpl_add_contact_dropdown, tpl_add_contact_form, tpl_change_status_message, @@ -44,33 +42,19 @@ tpl_status_option ) { "use strict"; - _converse.templates.add_contact_dropdown = tpl_add_contact_dropdown; - _converse.templates.add_contact_form = tpl_add_contact_form; - _converse.templates.change_status_message = tpl_change_status_message; - _converse.templates.chat_status = tpl_chat_status; - _converse.templates.choose_status = tpl_choose_status; - _converse.templates.contacts_panel = tpl_contacts_panel; - _converse.templates.contacts_tab = tpl_contacts_tab; - _converse.templates.controlbox = tpl_controlbox; - _converse.templates.controlbox_toggle = tpl_controlbox_toggle; - _converse.templates.login_panel = tpl_login_panel; - _converse.templates.login_tab = tpl_login_tab; - _converse.templates.search_contact = tpl_search_contact; - _converse.templates.status_option = tpl_status_option; var USERS_PANEL_ID = 'users'; // Strophe methods for building stanzas - var Strophe = converse_api.env.Strophe, - utils = converse_api.env.utils; + var Strophe = converse.env.Strophe, + utils = converse.env.utils; // Other necessary globals - var $ = converse_api.env.jQuery, - _ = converse_api.env._, - __ = utils.__.bind(_converse), - moment = converse_api.env.moment; + var $ = converse.env.jQuery, + _ = converse.env._, + moment = converse.env.moment; - converse_api.plugins.add('converse-controlbox', { + converse.plugins.add('converse-controlbox', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -132,6 +116,7 @@ ChatBoxViews: { onChatBoxAdded: function (item) { + var _converse = this.__super__._converse; if (item.get('box_id') === 'controlbox') { var view = this.get(item.get('id')); if (view) { @@ -148,6 +133,7 @@ }, closeAllChatBoxes: function () { + var _converse = this.__super__._converse; this.each(function (view) { if (_converse.disconnection_cause === _converse.LOGOUT || view.model.get('id') !== 'controlbox') { @@ -158,6 +144,7 @@ }, getChatBoxWidth: function (view) { + var _converse = this.__super__._converse; var controlbox = this.get('controlbox'); if (view.model.get('id') === 'controlbox') { /* We return the width of the controlbox or its toggle, @@ -191,6 +178,7 @@ ChatBoxView: { insertIntoDOM: function () { + var _converse = this.__super__._converse; this.$el.insertAfter(_converse.chatboxviews.get("controlbox").$el); return this; } @@ -201,7 +189,24 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - var _converse = this._converse; + var _converse = this._converse, + __ = _converse.__; + + // Add new HTML templates. + _converse.templates.add_contact_dropdown = tpl_add_contact_dropdown; + _converse.templates.add_contact_form = tpl_add_contact_form; + _converse.templates.change_status_message = tpl_change_status_message; + _converse.templates.chat_status = tpl_chat_status; + _converse.templates.choose_status = tpl_choose_status; + _converse.templates.contacts_panel = tpl_contacts_panel; + _converse.templates.contacts_tab = tpl_contacts_tab; + _converse.templates.controlbox = tpl_controlbox; + _converse.templates.controlbox_toggle = tpl_controlbox_toggle; + _converse.templates.login_panel = tpl_login_panel; + _converse.templates.login_tab = tpl_login_tab; + _converse.templates.search_contact = tpl_search_contact; + _converse.templates.status_option = tpl_status_option; + this.updateSettings({ allow_logout: true, default_domain: undefined, diff --git a/src/converse-core.js b/src/converse-core.js index d4a3d1083..b0fd6d766 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -171,7 +171,8 @@ // Translation machinery // --------------------- - var __ = utils.__.bind(this); + var __ = _converse.__ = utils.__.bind(_converse); + _converse.___ = utils.___; var DESC_GROUP_TOGGLE = __('Click to hide these contacts'); // Default configuration values @@ -1133,7 +1134,7 @@ * Note: this method gets completely overridden by converse-vcard.js */ var bare_jid = Strophe.getBareJidFromJid(presence.getAttribute('from')); - var nick_el = presence.querySelector('nick[xmlns='+Strophe.NS.NICK+']'); + var nick_el = presence.querySelector('nick[xmlns="'+Strophe.NS.NICK+'"]'); var user_data = { jid: bare_jid, subscription: 'none', diff --git a/src/converse-dragresize.js b/src/converse-dragresize.js index b0dd13ba1..ae1f303f8 100644 --- a/src/converse-dragresize.js +++ b/src/converse-dragresize.js @@ -8,20 +8,18 @@ (function (root, factory) { define("converse-dragresize", [ - "converse-core", "converse-api", "tpl!dragresize", "converse-chatview", "converse-muc", // XXX: would like to remove this "converse-controlbox" ], factory); -}(this, function (_converse, converse_api, tpl_dragresize) { +}(this, function (converse, tpl_dragresize) { "use strict"; - var $ = converse_api.env.jQuery, - _ = converse_api.env._; - _converse.templates.dragresize = tpl_dragresize; + var $ = converse.env.jQuery, + _ = converse.env._; - converse_api.plugins.add('converse-dragresize', { + converse.plugins.add('converse-dragresize', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -31,38 +29,41 @@ // New functions which don't exist yet can also be added. registerGlobalEventHandlers: function () { + var that = this; + $(document).on('mousemove', function (ev) { - if (!this.resizing || !this.allow_dragresize) { return true; } + if (!that.resizing || !that.allow_dragresize) { return true; } ev.preventDefault(); - this.resizing.chatbox.resizeChatBox(ev); - }.bind(this)); + that.resizing.chatbox.resizeChatBox(ev); + }); $(document).on('mouseup', function (ev) { - if (!this.resizing || !this.allow_dragresize) { return true; } + if (!that.resizing || !that.allow_dragresize) { return true; } ev.preventDefault(); - var height = this.applyDragResistance( - this.resizing.chatbox.height, - this.resizing.chatbox.model.get('default_height') + var height = that.applyDragResistance( + that.resizing.chatbox.height, + that.resizing.chatbox.model.get('default_height') ); - var width = this.applyDragResistance( - this.resizing.chatbox.width, - this.resizing.chatbox.model.get('default_width') + var width = that.applyDragResistance( + that.resizing.chatbox.width, + that.resizing.chatbox.model.get('default_width') ); - if (this.connection.connected) { - this.resizing.chatbox.model.save({'height': height}); - this.resizing.chatbox.model.save({'width': width}); + if (that.connection.connected) { + that.resizing.chatbox.model.save({'height': height}); + that.resizing.chatbox.model.save({'width': width}); } else { - this.resizing.chatbox.model.set({'height': height}); - this.resizing.chatbox.model.set({'width': width}); + that.resizing.chatbox.model.set({'height': height}); + that.resizing.chatbox.model.set({'width': width}); } - this.resizing = null; - }.bind(this)); + that.resizing = null; + }); return this.__super__.registerGlobalEventHandlers.apply(this, arguments); }, ChatBox: { initialize: function () { + var _converse = this.__super__._converse; 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); @@ -109,6 +110,7 @@ /* Determine and store the default box size. * We need this information for the drag-resizing feature. */ + var _converse = this.__super__._converse; var $flyout = this.$el.find('.box-flyout'); if (_.isUndefined(this.model.get('height'))) { var height = $flyout.height(); @@ -140,6 +142,7 @@ }, setChatBoxHeight: function (height) { + var _converse = this.__super__._converse; if (height) { height = _converse.applyDragResistance(height, this.model.get('default_height'))+'px'; } else { @@ -149,6 +152,7 @@ }, setChatBoxWidth: function (width) { + var _converse = this.__super__._converse; if (width) { width = _converse.applyDragResistance(width, this.model.get('default_width'))+'px'; } else { @@ -176,6 +180,7 @@ }, onStartVerticalResize: function (ev) { + var _converse = this.__super__._converse; if (!_converse.allow_dragresize) { return true; } // Record element attributes for mouseMove(). this.height = this.$el.children('.box-flyout').height(); @@ -187,6 +192,7 @@ }, onStartHorizontalResize: function (ev) { + var _converse = this.__super__._converse; if (!_converse.allow_dragresize) { return true; } this.width = this.$el.children('.box-flyout').width(); _converse.resizing = { @@ -197,6 +203,7 @@ }, onStartDiagonalResize: function (ev) { + var _converse = this.__super__._converse; this.onStartHorizontalResize(ev); this.onStartVerticalResize(ev); _converse.resizing.direction = 'topleft'; @@ -204,6 +211,7 @@ resizeChatBox: function (ev) { var diff; + var _converse = this.__super__._converse; if (_converse.resizing.direction.indexOf('top') === 0) { diff = ev.pageY - this.prev_pageY; if (diff) { @@ -286,6 +294,7 @@ }, renderDragResizeHandles: function () { + var _converse = this.__super__._converse; var flyout = this.el.querySelector('.box-flyout'); var div = document.createElement('div'); div.innerHTML = _converse.templates.dragresize(); @@ -302,9 +311,14 @@ * loaded by converse.js's plugin machinery. */ var _converse = this._converse; + + // Add new HTML template + _converse.templates.dragresize = tpl_dragresize; + this.updateSettings({ allow_dragresize: true, }); + _converse.applyDragResistance = function (value, default_value) { /* This method applies some resistance around the * default_value. If value is close enough to diff --git a/src/converse-headline.js b/src/converse-headline.js index d6b004bce..29a155452 100644 --- a/src/converse-headline.js +++ b/src/converse-headline.js @@ -8,33 +8,15 @@ (function (root, factory) { define("converse-headline", [ - "converse-core", "converse-api", "converse-chatview" ], factory); -}(this, function (_converse, converse_api) { +}(this, function (converse) { "use strict"; - var _ = converse_api.env._, - utils = converse_api.env.utils, - __ = utils.__.bind(_converse); + var _ = converse.env._, + utils = converse.env.utils; - var onHeadlineMessage = function (message) { - /* Handler method for all incoming messages of type "headline". - */ - var from_jid = message.getAttribute('from'); - if (utils.isHeadlineMessage(message)) { - _converse.chatboxes.create({ - 'id': from_jid, - 'jid': from_jid, - 'fullname': from_jid, - 'type': 'headline' - }).createMessage(message, undefined, message); - _converse.emit('message', message); - } - return true; - }; - - converse_api.plugins.add('converse-headline', { + converse.plugins.add('converse-headline', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -45,6 +27,7 @@ ChatBoxViews: { onChatBoxAdded: function (item) { + var _converse = this.__super__._converse; var view = this.get(item.get('id')); if (!view && item.get('type') === 'headline') { view = new _converse.HeadlinesBoxView({model: item}); @@ -61,6 +44,9 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ + var _converse = this._converse, + __ = _converse.__; + _converse.HeadlinesBoxView = _converse.ChatBoxView.extend({ className: 'chatbox headlines', @@ -101,6 +87,22 @@ } }); + var onHeadlineMessage = function (message) { + /* Handler method for all incoming messages of type "headline". + */ + var from_jid = message.getAttribute('from'); + if (utils.isHeadlineMessage(message)) { + _converse.chatboxes.create({ + 'id': from_jid, + 'jid': from_jid, + 'fullname': from_jid, + 'type': 'headline' + }).createMessage(message, undefined, message); + _converse.emit('message', message); + } + return true; + }; + var registerHeadlineHandler = function () { _converse.connection.addHandler( onHeadlineMessage, null, 'message'); diff --git a/src/converse-mam.js b/src/converse-mam.js index eacef40b2..3d38383bf 100644 --- a/src/converse-mam.js +++ b/src/converse-mam.js @@ -10,19 +10,18 @@ (function (root, factory) { define("converse-mam", [ - "converse-core", "converse-api", "converse-chatview", // Could be made a soft dependency "converse-muc", // Could be made a soft dependency "strophe.rsm" ], factory); -}(this, function (_converse, converse_api) { +}(this, function (converse) { "use strict"; - var $ = converse_api.env.jQuery, - Strophe = converse_api.env.Strophe, - $iq = converse_api.env.$iq, - _ = converse_api.env._, - moment = converse_api.env.moment; + var $ = converse.env.jQuery, + Strophe = converse.env.Strophe, + $iq = converse.env.$iq, + _ = converse.env._, + moment = converse.env.moment; var RSM_ATTRIBUTES = ['max', 'first', 'last', 'after', 'before', 'index', 'count']; // XEP-0313 Message Archive Management @@ -32,7 +31,7 @@ Strophe.addNamespace('RSM', 'http://jabber.org/protocol/rsm'); - converse_api.plugins.add('converse-mam', { + converse.plugins.add('converse-mam', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -43,6 +42,7 @@ Features: { addClientFeatures: function () { + var _converse = this.__super__._converse; _converse.connection.disco.addFeature(Strophe.NS.MAM); return this.__super__.addClientFeatures.apply(this, arguments); } @@ -66,6 +66,7 @@ }, afterMessagesFetched: function () { + var _converse = this.__super__._converse; if (this.disable_mam || !_converse.features.findWhere({'var': Strophe.NS.MAM})) { return this.__super__.afterMessagesFetched.apply(this, arguments); } @@ -88,6 +89,7 @@ * Then, upon receiving them, call onMessage on the chat box, * so that they are displayed inside it. */ + var _converse = this.__super__._converse; if (!_converse.features.findWhere({'var': Strophe.NS.MAM})) { _converse.log("Attempted to fetch archived messages but this user's server doesn't support XEP-0313"); return; @@ -110,6 +112,7 @@ }, onScroll: function (ev) { + var _converse = this.__super__._converse; if ($(ev.target).scrollTop() === 0 && this.model.messages.length) { this.fetchArchivedMessages({ 'before': this.model.messages.at(0).get('archive_id'), @@ -138,6 +141,8 @@ /* The initialize function gets called as soon as the plugin is * loaded by Converse.js's plugin machinery. */ + var _converse = this._converse; + this.updateSettings({ archived_messages_page_size: '20', message_archiving: 'never', // Supported values are 'always', 'never', 'roster' (https://xmpp.org/extensions/xep-0313.html#prefs) diff --git a/src/converse-minimize.js b/src/converse-minimize.js index 53e6c7f88..9b95bd1f8 100644 --- a/src/converse-minimize.js +++ b/src/converse-minimize.js @@ -8,7 +8,6 @@ (function (root, factory) { define("converse-minimize", [ - "converse-core", "converse-api", "tpl!chatbox_minimize", "tpl!toggle_chats", @@ -19,27 +18,19 @@ "converse-muc" ], factory); }(this, function ( - _converse, - converse_api, + converse, tpl_chatbox_minimize, tpl_toggle_chats, tpl_trimmed_chat, tpl_chats_panel ) { "use strict"; - _converse.templates.chatbox_minimize = tpl_chatbox_minimize; - _converse.templates.toggle_chats = tpl_toggle_chats; - _converse.templates.trimmed_chat = tpl_trimmed_chat; - _converse.templates.chats_panel = tpl_chats_panel; + var $ = converse.env.jQuery, + _ = converse.env._, + b64_sha1 = converse.env.b64_sha1, + moment = converse.env.moment; - var $ = converse_api.env.jQuery, - _ = converse_api.env._, - b64_sha1 = converse_api.env.b64_sha1, - moment = converse_api.env.moment, - utils = converse_api.env.utils, - __ = utils.__.bind(_converse); - - converse_api.plugins.add('converse-minimize', { + converse.plugins.add('converse-minimize', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -49,6 +40,7 @@ // New functions which don't exist yet can also be added. initChatBoxes: function () { + var _converse = this.__super__._converse; var result = this.__super__.initChatBoxes.apply(this, arguments); _converse.minimized_chats = new _converse.MinimizedChats({ model: _converse.chatboxes @@ -57,6 +49,7 @@ }, registerGlobalEventHandlers: function () { + var _converse = this.__super__._converse; $(window).on("resize", _.debounce(function (ev) { if (_converse.connection.connected) { _converse.chatboxviews.trimChats(); @@ -114,6 +107,7 @@ }, _show: function () { + var _converse = this.__super__._converse; this.__super__._show.apply(this, arguments); if (!this.model.get('minimized')) { _converse.chatboxviews.trimChats(this); @@ -147,6 +141,7 @@ maximize: function () { // Restores a minimized chat box + var _converse = this.__super__._converse; this.$el.insertAfter(_converse.chatboxviews.get("controlbox").$el); this.show(); _converse.emit('chatBoxMaximized', this); @@ -154,6 +149,7 @@ }, minimize: function (ev) { + var _converse = this.__super__._converse; if (ev && ev.preventDefault) { ev.preventDefault(); } // save the scroll position to restore it on maximize this.model.save({'scroll': this.$content.scrollTop()}); @@ -184,6 +180,8 @@ }, generateHeadingHTML: function () { + var _converse = this.__super__._converse, + __ = _converse.__; var html = this.__super__.generateHeadingHTML.apply(this, arguments); var div = document.createElement('div'); div.innerHTML = html; @@ -243,6 +241,7 @@ * another chat box. Otherwise it minimizes the oldest chat box * to create space. */ + var _converse = this.__super__._converse; var shown_chats = this.getShownChats(); if (_converse.no_trimming || shown_chats.length <= 1) { return; @@ -301,6 +300,15 @@ /* The initialize function gets called as soon as the plugin is * loaded by Converse.js's plugin machinery. */ + var _converse = this._converse, + __ = _converse.__; + + // Add new HTML templates. + _converse.templates.chatbox_minimize = tpl_chatbox_minimize; + _converse.templates.toggle_chats = tpl_toggle_chats; + _converse.templates.trimmed_chat = tpl_trimmed_chat; + _converse.templates.chats_panel = tpl_chats_panel; + this.updateSettings({ no_trimming: false, // Set to true for phantomjs tests (where browser apparently has no width) }); diff --git a/src/converse-muc.js b/src/converse-muc.js index 8c32bb8d9..ff0ac02b6 100755 --- a/src/converse-muc.js +++ b/src/converse-muc.js @@ -32,7 +32,7 @@ ], factory); }(this, function ( _converse, - converse_api, + converse, tpl_chatarea, tpl_chatroom, tpl_chatroom_form, @@ -66,17 +66,17 @@ var ROOMS_PANEL_ID = 'chatrooms'; // Strophe methods for building stanzas - var Strophe = converse_api.env.Strophe, - $iq = converse_api.env.$iq, - $build = converse_api.env.$build, - $msg = converse_api.env.$msg, - $pres = converse_api.env.$pres, - b64_sha1 = converse_api.env.b64_sha1, - utils = converse_api.env.utils; + var Strophe = converse.env.Strophe, + $iq = converse.env.$iq, + $build = converse.env.$build, + $msg = converse.env.$msg, + $pres = converse.env.$pres, + b64_sha1 = converse.env.b64_sha1, + utils = converse.env.utils; // Other necessary globals - var $ = converse_api.env.jQuery, - _ = converse_api.env._, - moment = converse_api.env.moment; + var $ = converse.env.jQuery, + _ = converse.env._, + moment = converse.env.moment; // For translations var __ = utils.__.bind(_converse); @@ -89,7 +89,7 @@ Strophe.addNamespace('MUC_ROOMCONF', Strophe.NS.MUC + "#roomconfig"); Strophe.addNamespace('MUC_USER', Strophe.NS.MUC + "#user"); - converse_api.plugins.add('converse-muc', { + converse.plugins.add('converse-muc', { /* Optional dependencies are other plugins which might be * overridden or relied upon, if they exist, otherwise they're ignored. * diff --git a/src/converse-notification.js b/src/converse-notification.js index a0beae235..2f6cd9af9 100644 --- a/src/converse-notification.js +++ b/src/converse-notification.js @@ -7,25 +7,26 @@ /*global define */ (function (root, factory) { - define("converse-notification", ["converse-core", "converse-api"], factory); -}(this, function (_converse, converse_api) { + define("converse-notification", ["converse-api"], factory); +}(this, function (converse) { "use strict"; - var $ = converse_api.env.jQuery, - utils = converse_api.env.utils, - Strophe = converse_api.env.Strophe, - _ = converse_api.env._; - // For translations - var __ = utils.__.bind(_converse); - var ___ = utils.___; + var $ = converse.env.jQuery, + utils = converse.env.utils, + Strophe = converse.env.Strophe, + _ = converse.env._; - - converse_api.plugins.add('converse-notification', { + converse.plugins.add('converse-notification', { initialize: function () { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ var _converse = this._converse; + + // For translations + var __ = _converse.__; + var ___ = _converse.___; + _converse.supports_html5_notification = "Notification" in window; this.updateSettings({ diff --git a/src/converse-otr.js b/src/converse-otr.js index 9a4900ae5..80b58a415 100644 --- a/src/converse-otr.js +++ b/src/converse-otr.js @@ -12,23 +12,18 @@ (function (root, factory) { define("converse-otr", [ "otr", - "converse-core", "converse-api", "tpl!toolbar_otr" ], factory); -}(this, function (otr, _converse, converse_api, tpl_toolbar_otr) { +}(this, function (otr, converse, tpl_toolbar_otr) { "use strict"; - _converse.templates.toolbar_otr = tpl_toolbar_otr; // Strophe methods for building stanzas - var Strophe = converse_api.env.Strophe, - utils = converse_api.env.utils, - b64_sha1 = converse_api.env.b64_sha1; + var Strophe = converse.env.Strophe, + utils = converse.env.utils, + b64_sha1 = converse.env.b64_sha1; // Other necessary globals - var $ = converse_api.env.jQuery, - _ = converse_api.env._; - - // For translations - var __ = utils.__.bind(_converse); + var $ = converse.env.jQuery, + _ = converse.env._; var HAS_CSPRNG = ((!_.isUndefined(crypto)) && ((_.isFunction(crypto.randomBytes)) || (_.isFunction(crypto.getRandomValues)) @@ -51,7 +46,7 @@ OTR_CLASS_MAPPING[VERIFIED] = 'verified'; OTR_CLASS_MAPPING[FINISHED] = 'finished'; - converse_api.plugins.add('converse-otr', { + converse.plugins.add('converse-otr', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -135,7 +130,8 @@ }, getSession: function (callback) { - var _converse = this.__super__._converse; + var _converse = this.__super__._converse, + __ = _converse.__; var cipher = CryptoJS.lib.PasswordBasedCipher; var pass, instance_tag, saved_key, pass_check; if (_converse.cache_otr_key) { @@ -195,6 +191,8 @@ onSMP: function (type, data) { // Event handler for SMP (Socialist's Millionaire Protocol) // used by OTR (off-the-record). + var _converse = this.__super__._converse, + __ = _converse.__; switch (type) { case 'question': this.otr.smpSecret(prompt(__( @@ -224,6 +222,8 @@ // If 'query_msg' is passed in, it means there is an alread incoming // query message from our contact. Otherwise, it is us who will // send the query message to them. + var _converse = this.__super__._converse, + __ = _converse.__; this.save({'otr_status': UNENCRYPTED}); this.getSession(function (session) { var _converse = this.__super__._converse; @@ -331,8 +331,10 @@ }, informOTRChange: function () { - var data = this.model.toJSON(); - var msgs = []; + var _converse = this.__super__._converse, + __ = _converse.__, + data = this.model.toJSON(), + msgs = []; if (data.otr_status === UNENCRYPTED) { msgs.push(__("Your messages are not encrypted anymore")); } else if (data.otr_status === UNVERIFIED) { @@ -346,7 +348,8 @@ }, showOTRError: function (msg) { - var _converse = this.__super__._converse; + var _converse = this.__super__._converse, + __ = _converse.__; if (msg === 'Message cannot be sent at this time.') { this.showHelpMessages( [__('Your message could not be sent')], 'error'); @@ -378,9 +381,10 @@ }, authOTR: function (ev) { - var _converse = this.__super__._converse; - var scheme = $(ev.target).data().scheme; - var result, question, answer; + var _converse = this.__super__._converse, + __ = _converse.__, + scheme = $(ev.target).data().scheme, + result, question, answer; if (scheme === 'fingerprint') { result = confirm(__('Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.', [ this.model.get('fullname'), @@ -412,7 +416,9 @@ }, getOTRTooltip: function () { - var data = this.model.toJSON(); + var _converse = this.__super__._converse, + __ = _converse.__, + data = this.model.toJSON(); if (data.otr_status === UNENCRYPTED) { return __('Your messages are not encrypted. Click here to enable OTR encryption.'); } else if (data.otr_status === UNVERIFIED) { @@ -425,7 +431,8 @@ }, renderToolbar: function (toolbar, options) { - var _converse = this.__super__._converse; + var _converse = this.__super__._converse, + __ = _converse.__; if (!_converse.show_toolbar) { return; } @@ -461,7 +468,12 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - var _converse = this._converse; + var _converse = this._converse, + __ = _converse.__; + + // Add new HTML template + _converse.templates.toolbar_otr = tpl_toolbar_otr; + // Translation aware constants // --------------------------- // We can only call the __ translation method *after* converse.js diff --git a/src/converse-ping.js b/src/converse-ping.js index 38fd78402..30d51b946 100644 --- a/src/converse-ping.js +++ b/src/converse-ping.js @@ -11,16 +11,15 @@ */ (function (root, factory) { define("converse-ping", [ - "converse-core", "converse-api", "strophe.ping" ], factory); -}(this, function (_converse, converse_api) { +}(this, function (converse) { "use strict"; // Strophe methods for building stanzas - var Strophe = converse_api.env.Strophe; + var Strophe = converse.env.Strophe; - converse_api.plugins.add('converse-ping', { + converse.plugins.add('converse-ping', { initialize: function () { /* The initialize function gets called as soon as the plugin is diff --git a/src/converse-register.js b/src/converse-register.js index 3efc0a814..194721a6e 100644 --- a/src/converse-register.js +++ b/src/converse-register.js @@ -11,7 +11,6 @@ */ (function (root, factory) { define("converse-register", [ - "converse-core", "converse-api", "tpl!form_username", "tpl!register_panel", @@ -21,8 +20,7 @@ "converse-controlbox" ], factory); }(this, function ( - _converse, - converse_api, + converse, tpl_form_username, tpl_register_panel, tpl_register_tab, @@ -30,21 +28,14 @@ tpl_registration_request) { "use strict"; - _converse.templates.form_username = tpl_form_username; - _converse.templates.register_panel = tpl_register_panel; - _converse.templates.register_tab = tpl_register_tab; - _converse.templates.registration_form = tpl_registration_form; - _converse.templates.registration_request = tpl_registration_request; // Strophe methods for building stanzas - var Strophe = converse_api.env.Strophe, - utils = converse_api.env.utils, - $iq = converse_api.env.$iq; + var Strophe = converse.env.Strophe, + utils = converse.env.utils, + $iq = converse.env.$iq; // Other necessary globals - var $ = converse_api.env.jQuery, - _ = converse_api.env._; - // For translations - var __ = utils.__.bind(_converse); + var $ = converse.env.jQuery, + _ = converse.env._; // Add Strophe Namespaces Strophe.addNamespace('REGISTER', 'jabber:iq:register'); @@ -59,7 +50,7 @@ Strophe.Status.CONFLICT = i + 3; Strophe.Status.NOTACCEPTABLE = i + 5; - converse_api.plugins.add('converse-register', { + converse.plugins.add('converse-register', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -92,7 +83,15 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - var _converse = this._converse; + var _converse = this._converse, + __ = _converse.__; + + // Add new templates + _converse.templates.form_username = tpl_form_username; + _converse.templates.register_panel = tpl_register_panel; + _converse.templates.register_tab = tpl_register_tab; + _converse.templates.registration_form = tpl_registration_form; + _converse.templates.registration_request = tpl_registration_request; this.updateSettings({ allow_registration: true, @@ -100,7 +99,6 @@ providers_link: 'https://xmpp.net/directory.php', // Link to XMPP providers shown on registration page }); - _converse.RegisterPanel = Backbone.View.extend({ tagName: 'div', id: "register", diff --git a/src/converse-rosterview.js b/src/converse-rosterview.js index f33ec580e..06dd74e14 100644 --- a/src/converse-rosterview.js +++ b/src/converse-rosterview.js @@ -8,7 +8,6 @@ (function (root, factory) { define("converse-rosterview", [ - "converse-core", "converse-api", "tpl!group_header", "tpl!pending_contact", @@ -17,29 +16,21 @@ "tpl!roster_item" ], factory); }(this, function ( - _converse, - converse_api, + converse, tpl_group_header, tpl_pending_contact, tpl_requesting_contact, tpl_roster, tpl_roster_item) { "use strict"; - _converse.templates.group_header = tpl_group_header; - _converse.templates.pending_contact = tpl_pending_contact; - _converse.templates.requesting_contact = tpl_requesting_contact; - _converse.templates.roster = tpl_roster; - _converse.templates.roster_item = tpl_roster_item; + var $ = converse.env.jQuery, + utils = converse.env.utils, + Strophe = converse.env.Strophe, + $iq = converse.env.$iq, + b64_sha1 = converse.env.b64_sha1, + _ = converse.env._; - var $ = converse_api.env.jQuery, - utils = converse_api.env.utils, - Strophe = converse_api.env.Strophe, - $iq = converse_api.env.$iq, - b64_sha1 = converse_api.env.b64_sha1, - _ = converse_api.env._, - __ = utils.__.bind(_converse); - - converse_api.plugins.add('rosterview', { + converse.plugins.add('rosterview', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -66,6 +57,7 @@ comparator: function () { // RosterGroupsComparator only gets set later (once i18n is // set up), so we need to wrap it in this nameless function. + var _converse = this.__super__._converse; return _converse.RosterGroupsComparator.apply(this, arguments); } } @@ -76,6 +68,16 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ + var _converse = this._converse, + __ = _converse.__; + + // Add new HTML templates + _converse.templates.group_header = tpl_group_header; + _converse.templates.pending_contact = tpl_pending_contact; + _converse.templates.requesting_contact = tpl_requesting_contact; + _converse.templates.roster = tpl_roster; + _converse.templates.roster_item = tpl_roster_item; + this.updateSettings({ allow_chat_pending_contacts: true, allow_contact_removal: true, diff --git a/src/converse-vcard.js b/src/converse-vcard.js index fe4c5c2ae..fc7cbc824 100644 --- a/src/converse-vcard.js +++ b/src/converse-vcard.js @@ -8,18 +8,17 @@ (function (root, factory) { define("converse-vcard", [ - "converse-core", "converse-api", "strophe.vcard", ], factory); -}(this, function (_converse, converse_api) { +}(this, function (converse) { "use strict"; - var Strophe = converse_api.env.Strophe, - $ = converse_api.env.jQuery, - _ = converse_api.env._, - moment = converse_api.env.moment; + var Strophe = converse.env.Strophe, + $ = converse.env.jQuery, + _ = converse.env._, + moment = converse.env.moment; - converse_api.plugins.add('converse-vcard', { + converse.plugins.add('converse-vcard', { overrides: { // Overrides mentioned here will be picked up by converse.js's @@ -30,6 +29,7 @@ Features: { addClientFeatures: function () { + var _converse = this.__super__._converse; this.__super__.addClientFeatures.apply(this, arguments); if (_converse.use_vcards) { _converse.connection.disco.addFeature(Strophe.NS.VCARD); @@ -39,6 +39,7 @@ RosterContacts: { createRequestingContact: function (presence) { + var _converse = this.__super__._converse; var bare_jid = Strophe.getBareJidFromJid(presence.getAttribute('from')); _converse.getVCard( bare_jid, @@ -57,6 +58,7 @@ /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ + var _converse = this._converse; this.updateSettings({ use_vcards: true, }); diff --git a/src/converse.js b/src/converse.js index 084189c88..e9a534347 100755 --- a/src/converse.js +++ b/src/converse.js @@ -34,9 +34,9 @@ if (typeof define !== 'undefined') { "converse-headline", // Support for headline messages /* END: Removable components */ - ], function(converse_api) { - converse_api.env.jQuery(window).trigger('converse-loaded', converse_api); - window.converse = converse_api; - return converse_api; + ], function(converse) { + converse.env.jQuery(window).trigger('converse-loaded', converse); + window.converse = converse; + return converse; }); }