\r
<script type="text/html" id="tmpl_channel_info">\r
<div class="channel_info">\r
- <h6><%= channel_name %></h6>\r
<b class="channel_url"><a href=""></a></b>\r
\r
- <div class="control-group">\r
- <form class="channel_info_modes">\r
+ <form>\r
+ <div class="control-group channel_info_modes">\r
<label>\r
<input type="checkbox" name="channel_mute" class="channel-mode" data-mode="m" />\r
Moderated chat\r
<input type="checkbox" name="channel_external_messages" class="channel-mode" data-mode="n" />\r
Block messages from outside this channel\r
</label>\r
+ </div>\r
+\r
+ <div class="control-group">\r
<label>\r
Password\r
<input type="text" name="channel_key" class="channel-mode" data-mode="k" />\r
</label>\r
- </form>\r
- </div>\r
+ </div>\r
\r
- <div class="control-group">\r
- <form class="channel_banlist">\r
- <button class="show_banlist">Show banlist</button>\r
+\r
+ <div class="control-group channel-banlist">\r
+ <button class="show_banlist">Show banlist</button> <span class="banlist-status"></span>\r
<table>\r
<thead>\r
<tr>\r
<tbody>\r
</tbody>\r
</table>\r
- </form>\r
- </div>\r
+ </div>\r
+ </form>\r
</div>\r
</script>\r
\r
function onMode(event) {
- var channel, i, prefixes, members, member, find_prefix;
+ var channel, i, prefixes, members, member, find_prefix,
+ request_updated_banlist = false;
// Build a nicely formatted string to be displayed to a regular human
function friendlyModeString (event_modes, alt_target) {
member.removeMode(event.modes[i].mode[1]);
}
members.sort();
- //channel.addMsg('', '== ' + event.nick + ' set mode ' + event.modes[i].mode + ' ' + event.modes[i].param, 'action mode');
}
} else {
// Channel mode being set
// TODO: Store this somewhere?
//channel.addMsg('', 'CHANNEL === ' + event.nick + ' set mode ' + event.modes[i].mode + ' on ' + event.target, 'action mode');
}
+
+ // TODO: Be smart, remove this specific ban from the banlist rather than request a whole banlist
+ if (event.modes[i].mode[1] == 'b')
+ request_updated_banlist = true;
}
channel.addMsg('', '== ' + _kiwi.global.i18n.translate('client_models_network_mode').fetch(event.nick, friendlyModeString()), 'action mode', {time: event.time});
+
+ // TODO: Be smart, remove the specific ban from the banlist rather than request a whole banlist
+ if (request_updated_banlist)
+ this.gateway.raw('MODE ' + channel.get('name') + ' +b');
+
} else {
// This is probably a mode being set on us.
if (event.target.toLowerCase() === this.get("nick").toLowerCase()) {
if (banlist && banlist.length) {
var $table = this.$el.find('.channel-banlist table tbody');
+ this.$el.find('.banlist-status').text('');
+
$table.empty();
_.each(banlist, function(ban) {
var $tr = $('<tr></tr>').data('ban', ban);
});
this.$el.find('.channel-banlist table').slideDown();
+
+ } else {
+ this.$el.find('.banlist-status').text('Banlist empty');
+ this.$el.find('.channel-banlist table').hide();
}
},