Client side /ignore + /unignore commands
[KiwiIRC.git] / client / assets / dev / model_application.js
index dbd1f284cbd1699307fd5cc2c568689befe10580..be5fbd0d5786908fe32f182bb3a6823917a242e4 100644 (file)
@@ -132,25 +132,21 @@ _kiwi.model.Application = function () {
 \r
 \r
         this.initializeGlobals = function () {\r
-            _kiwi.global.control = this.controlbox;\r
-            _kiwi.global.gateway = _kiwi.gateway;\r
             _kiwi.global.panels = this.panels;\r
             \r
-            _kiwi.global.components = {\r
-                Applet: _kiwi.model.Applet,\r
-                Panel: _kiwi.model.Panel\r
-            };\r
+            _kiwi.global.components.Applet = _kiwi.model.Applet;\r
+            _kiwi.global.components.Panel =_kiwi.model.Panel;\r
         };\r
 \r
 \r
         this.populateDefaultServerSettings = function () {\r
             var parts;\r
             var defaults = {\r
-                nick: getQueryVariable('nick') || 'kiwi_?',\r
-                server: 'irc.kiwiirc.com',\r
+                nick: getQueryVariable('nick') || '',\r
+                server: '',\r
                 port: 6667,\r
                 ssl: false,\r
-                channel: window.location.hash || '#kiwiirc',\r
+                channel: window.location.hash || '#chat',\r
                 channel_key: ''\r
             };\r
             var uricheck;\r
@@ -252,7 +248,7 @@ _kiwi.model.Application = function () {
             // If any settings have been given by the server.. override any auto detected settings\r
             /**\r
              * Get any server restrictions as set in the server config\r
-             * These settings can not changed in the server selection dialog\r
+             * These settings can not be changed in the server selection dialog\r
              */\r
             if (this.server_settings && this.server_settings.connection) {\r
                 if (this.server_settings.connection.server) {\r
@@ -428,6 +424,11 @@ _kiwi.model.Application = function () {
                 var panel,\r
                     is_pm = (event.channel == _kiwi.gateway.get('nick'));\r
 \r
+                // An ignored user? don't do anything with it\r
+                if (gw.isNickIgnored(event.nick)) {\r
+                    return;\r
+                }\r
+\r
                 if (is_pm) {\r
                     // If a panel isn't found for this PM, create one\r
                     panel = that.panels.getByName(event.nick);\r
@@ -444,22 +445,42 @@ _kiwi.model.Application = function () {
                         panel = that.panels.server;\r
                     }\r
                 }\r
-                \r
+\r
                 panel.addMsg(event.nick, event.msg);\r
             });\r
 \r
 \r
             gw.on('onctcp_request', function (event) {\r
+                // An ignored user? don't do anything with it\r
+                if (gw.isNickIgnored(event.nick)) {\r
+                    return;\r
+                }\r
+\r
                 // Reply to a TIME ctcp\r
                 if (event.msg.toUpperCase() === 'TIME') {\r
-                    gw.ctcp(true, event.type, event.nick, (new Date()).toString());\r
+                    gw.ctcp(false, event.type, event.nick, (new Date()).toString());\r
                 }\r
             });\r
 \r
 \r
+            gw.on('onctcp_response', function (event) {\r
+                // An ignored user? don't do anything with it\r
+                if (gw.isNickIgnored(event.nick)) {\r
+                    return;\r
+                }\r
+                \r
+                that.panels.server.addMsg('[' + event.nick + ']', 'CTCP ' + event.msg);\r
+            });\r
+\r
+\r
             gw.on('onnotice', function (event) {\r
                 var panel;\r
 \r
+                // An ignored user? don't do anything with it\r
+                if (event.nick && gw.isNickIgnored(event.nick)) {\r
+                    return;\r
+                }\r
+\r
                 // Find a panel for the destination(channel) or who its from\r
                 panel = that.panels.getByName(event.target) || that.panels.getByName(event.nick);\r
                 if (!panel) {\r
@@ -474,6 +495,11 @@ _kiwi.model.Application = function () {
                 var panel,\r
                     is_pm = (event.channel == _kiwi.gateway.get('nick'));\r
 \r
+                // An ignored user? don't do anything with it\r
+                if (gw.isNickIgnored(event.nick)) {\r
+                    return;\r
+                }\r
+\r
                 if (is_pm) {\r
                     // If a panel isn't found for this PM, create one\r
                     panel = that.panels.getByName(event.nick);\r
@@ -769,6 +795,8 @@ _kiwi.model.Application = function () {
                         (new _kiwi.view.NickChangeBox()).render();\r
                     }\r
 \r
+                case 'password_mismatch':\r
+                    _kiwi.app.panels.server.addMsg(' ', '== Incorrect password given', 'status');\r
                     break;\r
                 default:\r
                     // We don't know what data contains, so don't do anything with it.\r
@@ -807,45 +835,47 @@ _kiwi.model.Application = function () {
             controlbox.on('unknown_command', unknownCommand);\r
 \r
             controlbox.on('command', allCommands);\r
-            controlbox.on('command_msg', msgCommand);\r
+            controlbox.on('command:msg', msgCommand);\r
 \r
-            controlbox.on('command_action', actionCommand);\r
+            controlbox.on('command:action', actionCommand);\r
 \r
-            controlbox.on('command_join', joinCommand);\r
+            controlbox.on('command:join', joinCommand);\r
 \r
-            controlbox.on('command_part', partCommand);\r
+            controlbox.on('command:part', partCommand);\r
 \r
-            controlbox.on('command_nick', function (ev) {\r
+            controlbox.on('command:nick', function (ev) {\r
                 _kiwi.gateway.changeNick(ev.params[0]);\r
             });\r
 \r
-            controlbox.on('command_query', queryCommand);\r
+            controlbox.on('command:query', queryCommand);\r
 \r
-            controlbox.on('command_topic', topicCommand);\r
+            controlbox.on('command:topic', topicCommand);\r
 \r
-            controlbox.on('command_notice', noticeCommand);\r
+            controlbox.on('command:notice', noticeCommand);\r
 \r
-            controlbox.on('command_quote', quoteCommand);\r
+            controlbox.on('command:quote', quoteCommand);\r
 \r
-            controlbox.on('command_kick', kickCommand);\r
+            controlbox.on('command:kick', kickCommand);\r
 \r
-            controlbox.on('command_clear', clearCommand);\r
+            controlbox.on('command:clear', clearCommand);\r
 \r
+            controlbox.on('command:ctcp', ctcpCommand);\r
 \r
-            controlbox.on('command_css', function (ev) {\r
+\r
+            controlbox.on('command:css', function (ev) {\r
                 var queryString = '?reload=' + new Date().getTime();\r
                 $('link[rel="stylesheet"]').each(function () {\r
                     this.href = this.href.replace(/\?.*|$/, queryString);\r
                 });\r
             });\r
 \r
-            controlbox.on('command_js', function (ev) {\r
+            controlbox.on('command:js', function (ev) {\r
                 if (!ev.params[0]) return;\r
                 $script(ev.params[0] + '?' + (new Date().getTime()));\r
             });\r
 \r
             \r
-            controlbox.on('command_set', function (ev) {\r
+            controlbox.on('command:set', function (ev) {\r
                 if (!ev.params[0]) return;\r
 \r
                 var setting = ev.params[0],\r
@@ -864,13 +894,13 @@ _kiwi.model.Application = function () {
             });\r
 \r
 \r
-            controlbox.on('command_save', function (ev) {\r
+            controlbox.on('command:save', function (ev) {\r
                 _kiwi.global.settings.save();\r
                 _kiwi.app.panels.active.addMsg('', 'Settings have been saved');\r
             });\r
 \r
 \r
-            controlbox.on('command_alias', function (ev) {\r
+            controlbox.on('command:alias', function (ev) {\r
                 var name, rule;\r
 \r
                 // No parameters passed so list them\r
@@ -901,8 +931,51 @@ _kiwi.model.Application = function () {
                 controlbox.preprocessor.aliases[name] = rule;\r
             });\r
 \r
-            controlbox.on('command_applet', appletCommand);\r
-            controlbox.on('command_settings', settingsCommand);\r
+            \r
+            controlbox.on('command:ignore', function (ev) {\r
+                var list = _kiwi.gateway.get('ignore_list');\r
+\r
+                // No parameters passed so list them\r
+                if (!ev.params[0]) {\r
+                    if (list.length > 0) {\r
+                        _kiwi.app.panels.active.addMsg(' ', 'Ignored nicks:');\r
+                        $.each(list, function (idx, ignored_pattern) {\r
+                            _kiwi.app.panels.active.addMsg(' ', ignored_pattern);\r
+                        });\r
+                    } else {\r
+                        _kiwi.app.panels.active.addMsg(' ', 'Not ignoring anybody');\r
+                    }\r
+                    return;\r
+                }\r
+\r
+                // We have a parameter, so add it\r
+                list.push(ev.params[0]);\r
+                _kiwi.gateway.set('ignore_list', list);\r
+                _kiwi.app.panels.active.addMsg(' ', 'Ignoring ' + ev.params[0]);\r
+            });\r
+\r
+\r
+            controlbox.on('command:unignore', function (ev) {\r
+                var list = _kiwi.gateway.get('ignore_list');\r
+\r
+                if (!ev.params[0]) {\r
+                    _kiwi.app.panels.active.addMsg(' ', 'Specifiy which nick you wish to stop ignoring');\r
+                    return;\r
+                }\r
+\r
+                list = _.reject(list, function(pattern) {\r
+                    return pattern === ev.params[0];\r
+                });\r
+\r
+                _kiwi.gateway.set('ignore_list', list);\r
+\r
+                _kiwi.app.panels.active.addMsg(' ', 'Stopped ignoring ' + ev.params[0]);\r
+            });\r
+\r
+\r
+            controlbox.on('command:applet', appletCommand);\r
+            controlbox.on('command:settings', settingsCommand);\r
+            controlbox.on('command:script', scriptCommand);\r
         };\r
 \r
         // A fallback action. Send a raw command to the server\r
@@ -1042,11 +1115,31 @@ _kiwi.model.Application = function () {
             }\r
         }\r
 \r
+        function ctcpCommand(ev) {\r
+            var target, type;\r
+\r
+            // Make sure we have a target and a ctcp type (eg. version, time)\r
+            if (ev.params.length < 2) return;\r
+\r
+            target = ev.params[0];\r
+            ev.params.shift();\r
+\r
+            type = ev.params[0];\r
+            ev.params.shift();\r
+\r
+            _kiwi.gateway.ctcp(true, type, target, ev.params.join(' '));\r
+        }\r
+\r
         function settingsCommand (ev) {\r
             var settings = _kiwi.model.Applet.loadOnce('kiwi_settings');\r
             settings.view.show();\r
         }\r
 \r
+        function scriptCommand (ev) {\r
+            var editor = _kiwi.model.Applet.loadOnce('kiwi_script_editor');\r
+            editor.view.show();\r
+        }\r
+\r
         function appletCommand (ev) {\r
             if (!ev.params[0]) return;\r
 \r