diff --git a/converse.js b/converse.js index f7c98f3d4..f881df61c 100644 --- a/converse.js +++ b/converse.js @@ -628,15 +628,20 @@ '
  • ' ), + initialize: function (cfg) { + cfg.$parent.append(this.$el); + this.$tabs = cfg.$parent.parent().find('#controlbox-tabs'); + }, + render: function () { var markup; - this.$parent.find('#controlbox-tabs').append(this.tab_template()); - this.$parent.find('#controlbox-panes').append(this.$el.html(this.template())); + this.$tabs.append(this.tab_template()); if (converse.xhr_user_search) { markup = this.search_contact_template(); } else { markup = this.add_contact_template(); } + this.$el.html(this.template()); this.$el.find('.search-xmpp ul').append(markup); this.$el.append(converse.rosterview.$el); return this; @@ -788,18 +793,15 @@ ''+ '
    '), - render: function () { - this.$parent.find('#controlbox-tabs').append(this.tab_template()); - this.$parent.find('#controlbox-panes').append( + initialize: function (cfg) { + cfg.$parent.append( this.$el.html( this.template({ server_input_type: converse.hide_muc_server && 'hidden' || 'text' }) ).hide()); - return this; - }, + this.$tabs = cfg.$parent.parent().find('#controlbox-tabs'); - initialize: function () { this.on('update-rooms-list', function (ev) { this.updateRoomsList(); }); @@ -814,6 +816,11 @@ }, this)); }, + render: function () { + this.$tabs.append(this.tab_template()); + return this; + }, + informNoRoomsFound: function () { var $available_chatrooms = this.$el.find('#available-chatrooms'); // # For translators: %1$s is a variable and will be replaced with the XMPP server name @@ -1030,15 +1037,14 @@ }, render: function () { - this.$el.html(this.template(this.model.toJSON())); if ((!converse.prebind) && (!converse.connection)) { // Add login panel if the user still has to authenticate - this.loginpanel = new converse.LoginPanel(); - this.loginpanel.$parent = this.$el; + this.$el.html(this.template(this.model.toJSON())); + this.loginpanel = new converse.LoginPanel({'$parent': this.$el.find('#controlbox-panes')}); this.loginpanel.render(); - } else { - this.contactspanel = new converse.ContactsPanel(); - this.contactspanel.$parent = this.$el; + } else if (!this.contactspanel) { + this.$el.html(this.template(this.model.toJSON())); + this.contactspanel = new converse.ContactsPanel({'$parent': this.$el.find('#controlbox-panes')}); this.contactspanel.render(); converse.xmppstatus = new converse.XMPPStatus(); converse.xmppstatus.localStorage = new Backbone.LocalStorage( @@ -1057,8 +1063,7 @@ }); converse.xmppstatusview = new converse.XMPPStatusView({'model': converse.xmppstatus}); converse.xmppstatusview.render(); - this.roomspanel = new converse.RoomsPanel(); - this.roomspanel.$parent = this.$el; + this.roomspanel = new converse.RoomsPanel({'$parent': this.$el.find('#controlbox-panes')}); this.roomspanel.render(); } return this; @@ -2506,6 +2511,17 @@ }, this)); }, + initialize: function (cfg) { + cfg.$parent.append(this.$el.html(this.template())); + this.$tabs = cfg.$parent.parent().find('#controlbox-tabs'); + }, + + render: function () { + this.$tabs.append(this.tab_template()); + this.$el.find('input#jid').focus(); + return this; + }, + authenticate: function (ev) { ev.preventDefault(); var $form = $(ev.target), @@ -2537,19 +2553,8 @@ }, remove: function () { - this.$parent.find('#controlbox-tabs').empty(); - this.$parent.find('#controlbox-panes').empty(); - }, - - render: function () { - this.$parent.find('#controlbox-tabs').append(this.tab_template()); - var template = this.template(); - if (! this.bosh_url_input) { - template.find('form').append(this.bosh_url_input); - } - this.$parent.find('#controlbox-panes').append(this.$el.html(template)); - this.$el.find('input#jid').focus(); - return this; + this.$tabs.empty(); + this.$el.parent().empty(); } });