From d62fa2719afc6dd8c95ed1d00ec6aa1fa0e9c70a Mon Sep 17 00:00:00 2001 From: Darren Date: Sun, 9 Feb 2014 13:18:48 +0000 Subject: [PATCH] Userbox refactor --- client/src/views/channel.js | 10 +++------- client/src/views/memberlist.js | 11 ++++------- client/src/views/userbox.js | 31 ++++++++++++++++++++++--------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/client/src/views/channel.js b/client/src/views/channel.js index e7860bc..2aa3430 100644 --- a/client/src/views/channel.js +++ b/client/src/views/channel.js @@ -237,19 +237,15 @@ _kiwi.view.Channel = _kiwi.view.Panel.extend({ nickClick: function (event) { var nick = $(event.currentTarget).text(), members = this.model.get('members'), + are_we_an_op = !!members.getByNick(_kiwi.app.connections.active_connection.get('nick')).get('is_op'), member, query, userbox, menubox; if (members) { member = members.getByNick(nick); if (member) { userbox = new _kiwi.view.UserBox(); - userbox.member = member; - userbox.channel = this.model; - - // Hide the op related items if we're not an op - if (!members.getByNick(_kiwi.app.connections.active_connection.get('nick')).get('is_op')) { - userbox.$el.children('.if_op').remove(); - } + userbox.setTargets(member, this.model); + userbox.displayOpItems(are_we_an_op); menubox = new _kiwi.view.MenuBox(member.get('nick') || 'User'); menubox.addItem('userbox', userbox.$el); diff --git a/client/src/views/memberlist.js b/client/src/views/memberlist.js index 1453855..a63099a 100644 --- a/client/src/views/memberlist.js +++ b/client/src/views/memberlist.js @@ -21,15 +21,12 @@ _kiwi.view.MemberList = Backbone.View.extend({ nickClick: function (event) { var $target = $(event.currentTarget).parent('li'), member = $target.data('member'), - userbox; + userbox, + are_we_an_op = !!this.model.getByNick(_kiwi.app.connections.active_connection.get('nick')).get('is_op'); userbox = new _kiwi.view.UserBox(); - userbox.member = member; - userbox.channel = this.model.channel; - - if (!this.model.getByNick(_kiwi.app.connections.active_connection.get('nick')).get('is_op')) { - userbox.$el.children('.if_op').remove(); - } + userbox.setTargets(member, this.model.channel); + userbox.displayOpItems(are_we_an_op); var menu = new _kiwi.view.MenuBox(member.get('nick') || 'User'); menu.addItem('userbox', userbox.$el); diff --git a/client/src/views/userbox.js b/client/src/views/userbox.js index a3da2f0..f41b115 100644 --- a/client/src/views/userbox.js +++ b/client/src/views/userbox.js @@ -26,43 +26,56 @@ _kiwi.view.UserBox = Backbone.View.extend({ this.$el = $(_.template($('#tmpl_userbox').html().trim(), text)); }, + setTargets: function (user, channel) { + this.user = user; + this.channel = channel; + }, + + displayOpItems: function(display_items) { + if (display_items) { + this.$el.find('.if_op').css('display', 'block'); + } else { + this.$el.find('.if_op').css('display', 'none'); + } + }, + queryClick: function (event) { - var panel = new _kiwi.model.Query({name: this.member.get('nick')}); + var panel = new _kiwi.model.Query({name: this.user.get('nick')}); _kiwi.app.connections.active_connection.panels.add(panel); panel.view.show(); }, infoClick: function (event) { - _kiwi.app.controlbox.processInput('/whois ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/whois ' + this.user.get('nick')); }, slapClick: function (event) { - _kiwi.app.controlbox.processInput('/slap ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/slap ' + this.user.get('nick')); }, opClick: function (event) { - _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +o ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +o ' + this.user.get('nick')); }, deopClick: function (event) { - _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -o ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -o ' + this.user.get('nick')); }, voiceClick: function (event) { - _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +v ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +v ' + this.user.get('nick')); }, devoiceClick: function (event) { - _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -v ' + this.member.get('nick')); + _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -v ' + this.user.get('nick')); }, kickClick: function (event) { // TODO: Enable the use of a custom kick message - _kiwi.app.controlbox.processInput('/kick ' + this.member.get('nick') + ' Bye!'); + _kiwi.app.controlbox.processInput('/kick ' + this.user.get('nick') + ' Bye!'); }, banClick: function (event) { // TODO: Set ban on host, not just on nick - _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +b ' + this.member.get('nick') + '!*'); + _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +b ' + this.user.get('nick') + '!*'); } }); \ No newline at end of file -- 2.25.1