Auto updating banlist + UI improvements
authorDarren <darren@darrenwhitlen.com>
Mon, 6 Jan 2014 11:28:27 +0000 (11:28 +0000)
committerDarren <darren@darrenwhitlen.com>
Mon, 6 Jan 2014 11:28:27 +0000 (11:28 +0000)
client/src/index.html.tmpl
client/src/models/network.js
client/src/views/channelinfo.js

index a9ffcd9b010e64df3fc3256a9dd0145ae0140fd3..a3f2a5ddb6200b809391b7209e3768c816dd540f 100644 (file)
 \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
index a80445bc5868d0da4bcff3f4b17af14ef36636d6..3f0fab1240dd0c811a8ee7d72660bf62c1e3f548 100644 (file)
 
 
     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()) {
index edf78710a771aa95df2ce8d4a8cce041dd07917b..c9928c3b525916510a698a089ac87eba6fa8e5ab 100644 (file)
@@ -124,6 +124,8 @@ _kiwi.view.ChannelInfo = Backbone.View.extend({
         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);
@@ -137,6 +139,10 @@ _kiwi.view.ChannelInfo = Backbone.View.extend({
             });
 
             this.$el.find('.channel-banlist table').slideDown();
+
+        } else {
+            this.$el.find('.banlist-status').text('Banlist empty');
+            this.$el.find('.channel-banlist table').hide();
         }
     },