\r
<script type="text/html" id="tmpl_userbox">\r
<div class="userbox">\r
+ <a class="if_op op"><i class="icon-star"></i>Op</a>\r
+ <a class="if_op deop"><i class="icon-star-empty"></i>De-op</a>\r
+ <a class="if_op voice"><i class="icon-volume-up"></i>Voice</a>\r
+ <a class="if_op devoice"><i class="icon-volume-off"></i>De-voice</a>\r
+ <a class="if_op kick"><i class="icon-remove"></i>Kick</a>\r
+ <a class="if_op ban"><i class="icon-ban-circle"></i>Ban</a>\r
+\r
<a class="query"><i class="icon-comment"></i>Message</a>\r
<a class="info"><i class="icon-info-sign"></i>Info</a>\r
<a class="slap"><i class="icon-user-md"></i>Slap!</a>\r
}, {"silent": true});\r
\r
members = this.get("members");\r
+ members.channel = this;\r
members.bind("add", function (member) {\r
var show_message = _kiwi.global.settings.get('show_joins_parts');\r
if (show_message === false) {\r
modes = modes || [];\r
this.sortModes(modes);\r
this.set({"nick": nick, "modes": modes, "prefix": this.getPrefix(modes)}, {silent: true});\r
+ this.isOp();\r
},\r
addMode: function (mode) {\r
var modes_to_add = mode.split(''),\r
\r
modes = this.sortModes(modes);\r
this.set({"prefix": this.getPrefix(modes), "modes": modes});\r
+ this.isOp();\r
},\r
removeMode: function (mode) {\r
var modes_to_remove = mode.split(''),\r
});\r
\r
this.set({"prefix": this.getPrefix(modes), "modes": modes});\r
+ this.isOp();\r
},\r
getPrefix: function (modes) {\r
var prefix = '';\r
}\r
\r
return display;\r
+ },\r
+ isOp: function () {\r
+ var user_prefixes = _kiwi.gateway.get('user_prefixes'),\r
+ modes = this.get('modes'),\r
+ o, max_mode;\r
+ if (modes.length > 0) {\r
+ o = _.indexOf(user_prefixes, _.find(user_prefixes, function (prefix) {\r
+ return prefix.mode === 'o';\r
+ }));\r
+ max_mode = _.indexOf(user_prefixes, _.find(user_prefixes, function (prefix) {\r
+ return prefix.mode === modes[0];\r
+ }));\r
+ if ((max_mode === -1) || (max_mode > o)) {\r
+ this.set({"is_op": false}, {silent: true});\r
+ } else {\r
+ this.set({"is_op": true}, {silent: true});\r
+ }\r
+ } else {\r
+ this.set({"is_op": false}, {silent: true});\r
+ }\r
}\r
});
\ No newline at end of file
\r
userbox = new _kiwi.view.UserBox();\r
userbox.member = member;\r
+ userbox.channel = this.model.channel;\r
\r
// Remove any existing userboxes\r
$('.userbox', this.$el).remove();\r
\r
+ if (!this.model.getByNick(_kiwi.gateway.get('nick')).get('is_op')) {\r
+ userbox.$el.children('.if_op').remove();\r
+ }\r
$target.append(userbox.$el);\r
},\r
show: function () {\r
events: {\r
'click .query': 'queryClick',\r
'click .info': 'infoClick',\r
- 'click .slap': 'slapClick'\r
+ 'click .slap': 'slapClick',\r
+ 'click .op': 'opClick',\r
+ 'click .deop': 'deopClick',\r
+ 'click .voice': 'voiceClick',\r
+ 'click .devoice': 'devoiceClick',\r
+ 'click .kick': 'kickClick',\r
+ 'click .ban': 'banClick'\r
},\r
\r
initialize: function () {\r
\r
slapClick: function (event) {\r
_kiwi.app.controlbox.processInput('/slap ' + this.member.get('nick'));\r
+ },\r
+\r
+ opClick: function (event) {\r
+ _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +o ' + this.member.get('nick'));\r
+ },\r
+\r
+ deopClick: function (event) {\r
+ _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -o ' + this.member.get('nick'));\r
+ },\r
+\r
+ voiceClick: function (event) {\r
+ _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +v ' + this.member.get('nick'));\r
+ },\r
+\r
+ devoiceClick: function (event) {\r
+ _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' -v ' + this.member.get('nick'));\r
+ },\r
+\r
+ kickClick: function (event) {\r
+ // TODO: Enable the use of a custom kick message\r
+ _kiwi.app.controlbox.processInput('/kick ' + this.member.get('nick') + ' Bye!');\r
+ },\r
+\r
+ banClick: function (event) {\r
+ // TODO: Set ban on host, not just on nick\r
+ _kiwi.app.controlbox.processInput('/mode ' + this.channel.get('name') + ' +b ' + this.member.get('nick') + '!*');\r
}\r
});\r
\r