Sfoglia il codice sorgente

Update plugins to not depend on converse-core

To illustrate that this is not necessary (and also not possible with
non-bundled plugins).
JC Brand 8 anni fa
parent
commit
9b48b2d6bd

+ 2 - 2
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"]);

+ 25 - 17
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

+ 20 - 19
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,

+ 29 - 24
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,

+ 3 - 2
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',

+ 37 - 23
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

+ 24 - 22
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');

+ 13 - 8
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)

+ 23 - 15
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)
             });

+ 12 - 12
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.
          *

+ 12 - 11
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({

+ 34 - 22
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

+ 3 - 4
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

+ 16 - 18
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",

+ 20 - 18
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_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', {
+    var $ = converse.env.jQuery,
+        utils = converse.env.utils,
+        Strophe = converse.env.Strophe,
+        $iq = converse.env.$iq,
+        b64_sha1 = converse.env.b64_sha1,
+        _ = converse.env._;
+
+    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,

+ 9 - 7
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,
             });

+ 4 - 4
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;
     });
 }