Fix missing nickname in actions
[KiwiIRC.git] / client / src / models / application.js
index bc60a95be33d6a0023fbe4773fe91e1d23e12cbe..08678b76d82c50d81c4f757d8c908ef0890be6f2 100644 (file)
@@ -32,6 +32,9 @@
             // Best guess at where the kiwi server is if not already specified\r
             this.kiwi_server = options.kiwi_server || this.detectKiwiServer();\r
 \r
+            // The applet to initially load\r
+            this.startup_applet_name = options.startup || 'kiwi_startup';\r
+\r
             // Set any default settings before anything else is applied\r
             if (this.server_settings && this.server_settings.client && this.server_settings.client.settings) {\r
                 this.applyDefaultClientSettings(this.server_settings.client.settings);\r
@@ -39,7 +42,7 @@
         },\r
 \r
 \r
-        start: function () {\r
+        initializeInterfaces: function () {\r
             // Set the gateway up\r
             _kiwi.gateway = new _kiwi.model.Gateway();\r
             this.bindGatewayCommands(_kiwi.gateway);\r
@@ -48,8 +51,6 @@
             this.initializeGlobals();\r
 \r
             this.view.barsHide(true);\r
-\r
-            this.showIntialConenctionDialog();\r
         },\r
 \r
 \r
         },\r
 \r
 \r
-        showIntialConenctionDialog: function() {\r
-            var connection_dialog = new _kiwi.model.NewConnection();\r
-            this.populateDefaultServerSettings(connection_dialog);\r
-\r
-            connection_dialog.view.$el.addClass('initial');\r
-            this.view.$el.find('.panel_container:first').append(connection_dialog.view.$el);\r
-\r
-            var $info = $($('#tmpl_new_connection_info').html().trim());\r
-\r
-            if ($info.html()) {\r
-                connection_dialog.view.infoBoxSet($info);\r
-                connection_dialog.view.infoBoxShow();\r
-            }\r
-\r
-            // TODO: Shouldn't really be here but it's not working in the view.. :/\r
-            // Hack for firefox browers: Focus is not given on this event loop iteration\r
-            setTimeout(function(){\r
-                connection_dialog.view.$el.find('.nick').select();\r
-            }, 0);\r
-\r
-            // Once connected, close this dialog and remove its own event\r
-            var fn = function() {\r
-                connection_dialog.view.$el.slideUp(function() {\r
-                    connection_dialog.view.dispose();\r
-                    connection_dialog = null;\r
-\r
-                    _kiwi.gateway.off('onconnect', fn);\r
-                });\r
-\r
-            };\r
-            _kiwi.gateway.on('onconnect', fn);\r
+        showStartup: function() {\r
+            this.startup_applet = _kiwi.model.Applet.load(this.startup_applet_name, {no_tab: true});\r
+            this.startup_applet.tab = this.view.$('.console');\r
+            this.startup_applet.view.show();\r
         },\r
 \r
 \r
         },\r
 \r
 \r
-        populateDefaultServerSettings: function (new_connection_dialog) {\r
+        panels: (function() {\r
+            var active_panel;\r
+\r
+            var fn = function(panel_type) {\r
+                var panels;\r
+\r
+                // Default panel type\r
+                panel_type = panel_type || 'connections';\r
+\r
+                switch (panel_type) {\r
+                case 'connections':\r
+                    panels = this.connections.panels();\r
+                    break;\r
+                case 'applets':\r
+                    panels = this.applet_panels.models;\r
+                    break;\r
+                }\r
+\r
+                // Active panels / server\r
+                panels.active = active_panel;\r
+                panels.server = this.connections.active_connection ?\r
+                    this.connections.active_connection.panels.server :\r
+                    null;\r
+\r
+                return panels;\r
+            };\r
+\r
+            _.extend(fn, Backbone.Events);\r
+\r
+            // Keep track of the active panel. Channel/query/server or applet\r
+            fn.bind('active', function (new_active_panel) {\r
+                active_panel = new_active_panel;\r
+            });\r
+\r
+            return fn;\r
+        })(),\r
+\r
+\r
+        defaultServerSettings: function () {\r
             var parts;\r
             var defaults = {\r
                 nick: '',\r
                 server: '',\r
                 port: 6667,\r
                 ssl: false,\r
-                channel: '#chat',\r
+                channel: '',\r
                 channel_key: ''\r
             };\r
             var uricheck;\r
             if (getQueryVariable('encoding'))\r
                 defaults.encoding = getQueryVariable('encoding');\r
 \r
-            // Populate the server select box with defaults\r
-            new_connection_dialog.view.populateFields(defaults);\r
+            return defaults;\r
         },\r
 \r
 \r
-        panels: (function() {\r
-            var fn = function(panel_type) {\r
-                var panels;\r
-\r
-                // Default panel type\r
-                panel_type = panel_type || 'connections';\r
-\r
-                switch (panel_type) {\r
-                case 'connections':\r
-                    panels = this.connections.panels();\r
-                    break;\r
-                case 'applets':\r
-                    panels = this.applet_panels.models;\r
-                    break;\r
-                }\r
-\r
-                // Active panels / server\r
-                panels.active = this.connections.active_panel;\r
-                panels.server = this.connections.active_connection ?\r
-                    this.connections.active_connection.panels.server :\r
-                    null;\r
-\r
-                return panels;\r
-            };\r
-\r
-            _.extend(fn, Backbone.Events);\r
-\r
-            return fn;\r
-        })(),\r
-\r
-\r
         bindGatewayCommands: function (gw) {\r
             var that = this;\r
 \r
 \r
                     // Mention the disconnection on every channel\r
                     _kiwi.app.connections.forEach(function(connection) {\r
-                        connection.panels.server.addMsg('', msg, 'action quit');\r
+                        connection.panels.server.addMsg('', styleText('quit', {'%T': msg}), 'action quit');\r
 \r
                         connection.panels.forEach(function(panel) {\r
                             if (!panel.isChannel())\r
                                 return;\r
 \r
-                            panel.addMsg('', msg, 'action quit');\r
+                            panel.addMsg('', styleText('quit', {'%T': msg}), 'action quit');\r
                         });\r
                     });\r
 \r
 \r
                     // Only need to mention the repeating re-connection messages on server panels\r
                     _kiwi.app.connections.forEach(function(connection) {\r
-                        connection.panels.server.addMsg('', msg, 'action quit');\r
+                        connection.panels.server.addMsg('', styleText('quit', {'%T': msg}), 'action quit');\r
                     });\r
                 });\r
 \r
 \r
                     // Mention the re-connection on every channel\r
                     _kiwi.app.connections.forEach(function(connection) {\r
-                        connection.panels.server.addMsg('', msg, 'action join');\r
+                        connection.panels.server.addMsg('', styleText('rejoin', {'%T': msg}), 'action join');\r
 \r
                         connection.panels.forEach(function(panel) {\r
                             if (!panel.isChannel())\r
                                 return;\r
 \r
-                            panel.addMsg('', msg, 'action join');\r
+                            panel.addMsg('', styleText('rejoin', {'%T': msg}), 'action join');\r
                         });\r
                     });\r
 \r
                 }\r
 \r
                 // Read the value to the user\r
-                _kiwi.app.panels().active.addMsg('', setting + ' = ' + _kiwi.global.settings.get(setting).toString());\r
+                _kiwi.app.panels().active.addMsg('', styleText('set_setting', {'%T': setting + ' = ' + _kiwi.global.settings.get(setting).toString()}));\r
             };\r
 \r
 \r
             fn_to_bind['command:save'] = function (ev) {\r
                 _kiwi.global.settings.save();\r
-                _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_settings_saved').fetch());\r
+                _kiwi.app.panels().active.addMsg('', styleText('client_models_application_settings_saved', {'%T': translateText('client_models_application_settings_saved')}));\r
             };\r
 \r
 \r
                 // No parameters passed so list them\r
                 if (!ev.params[1]) {\r
                     $.each(controlbox.preprocessor.aliases, function (name, rule) {\r
-                        _kiwi.app.panels().server.addMsg(' ', name + '   =>   ' + rule);\r
+                        _kiwi.app.panels().server.addMsg(' ', styleText('list_aliases', {'%T': name + '   =>   ' + rule}));\r
                     });\r
                     return;\r
                 }\r
                 // No parameters passed so list them\r
                 if (!ev.params[0]) {\r
                     if (list.length > 0) {\r
-                        _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_title').fetch() + ':');\r
+                        _kiwi.app.panels().active.addMsg(' ', styleText('client_models_application_ignore_title', {'%T': translateText('client_models_application_ignore_title')}));\r
                         $.each(list, function (idx, ignored_pattern) {\r
-                            _kiwi.app.panels().active.addMsg(' ', ignored_pattern);\r
+                            _kiwi.app.panels().active.addMsg(' ', styleText('ignored_pattern', {'%T': ignored_pattern}));\r
                         });\r
                     } else {\r
-                        _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_none').fetch());\r
+                        _kiwi.app.panels().active.addMsg(' ', styleText('client_models_application_ignore_none', {'%T': translateText('client_models_application_ignore_none')}));\r
                     }\r
                     return;\r
                 }\r
                 // We have a parameter, so add it\r
                 list.push(ev.params[0]);\r
                 this.connections.active_connection.set('ignore_list', list);\r
-                _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_nick').fetch(ev.params[0]));\r
+                _kiwi.app.panels().active.addMsg(' ', styleText('client_models_application_ignore_nick', {'%T': translateText('client_models_application_ignore_nick', [ev.params[0]])}));\r
             };\r
 \r
 \r
                 var list = this.connections.active_connection.get('ignore_list');\r
 \r
                 if (!ev.params[0]) {\r
-                    _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stop_notice').fetch());\r
+                    _kiwi.app.panels().active.addMsg(' ', styleText('client_models_application_ignore_stop_notice', {'%T': translateText('client_models_application_ignore_stop_notice')}));\r
                     return;\r
                 }\r
 \r
 \r
                 this.connections.active_connection.set('ignore_list', list);\r
 \r
-                _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stopped').fetch(ev.params[0]));\r
+                _kiwi.app.panels().active.addMsg(' ', styleText('client_models_application_ignore_stopped', {'%T': translateText('client_models_application_ignore_stopped', [ev.params[0]])}));\r
             };\r
 \r
 \r
 \r
         if (message) {\r
             this.connections.active_connection.gateway.msg(panel.get('name'), message);\r
-            panel.addMsg(_kiwi.app.connections.active_connection.get('nick'), message);\r
+            panel.addMsg(_kiwi.app.connections.active_connection.get('nick'), styleText('query', {'%T': message}));\r
         }\r
 \r
     }\r
         ev.params.shift();\r
         message = formatToIrcMsg(ev.params.join(' '));\r
 \r
-        panel.addMsg(_kiwi.app.connections.active_connection.get('nick'), message);\r
+        panel.addMsg(_kiwi.app.connections.active_connection.get('nick'), styleText('msg', {'%T': message}));\r
         this.connections.active_connection.gateway.msg(destination, message);\r
     }\r
 \r
         }\r
 \r
         var panel = _kiwi.app.panels().active;\r
-        panel.addMsg('', '* ' + _kiwi.app.connections.active_connection.get('nick') + ' ' + ev.params.join(' '), 'action');\r
+        panel.addMsg('', styleText('action', {'%N': _kiwi.app.connections.active_connection.get('nick'), '%T': ev.params.join(' ')}), 'action');\r
         this.connections.active_connection.gateway.action(panel.get('name'), ev.params.join(' '));\r
     }\r
 \r
     function partCommand (ev) {\r
+        var that = this;\r
+\r
         if (ev.params.length === 0) {\r
             this.connections.active_connection.gateway.part(_kiwi.app.panels().active.get('name'));\r
         } else {\r
             _.each(ev.params, function (channel) {\r
-                this.connections.active_connection.gateway.part(channel);\r
+                that.connections.active_connection.gateway.part(channel);\r
             });\r
         }\r
     }\r
             if (_kiwi.applets[ev.params[0]]) {\r
                 panel.load(new _kiwi.applets[ev.params[0]]());\r
             } else {\r
-                _kiwi.app.panels().server.addMsg('', _kiwi.global.i18n.translate('client_models_application_applet_notfound').fetch(ev.params[0]));\r
+                _kiwi.app.panels().server.addMsg('', styleText('client_models_application_applet_notfound', {'%T': translateText('client_models_application_applet_notfound', [ev.params[0]])}));\r
                 return;\r
             }\r
         }\r
 \r
         _kiwi.app.connections.active_connection.gateway.raw('INVITE ' + nick + ' ' + channel);\r
 \r
-        _kiwi.app.panels().active.addMsg('', '== ' + nick + ' has been invited to ' + channel, 'action');\r
+        _kiwi.app.panels().active.addMsg('', styleText('client_models_application_has_been_invited', {'%N': nick, '%T': translateText('client_models_application_has_been_invited', [channel])}), 'action');\r
     }\r
 \r
 \r
         if (ev.params[0]) {\r
             _kiwi.gateway.setEncoding(null, ev.params[0], function (success) {\r
                 if (success) {\r
-                    _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_encoding_changed').fetch(ev.params[0]));\r
+                    _kiwi.app.panels().active.addMsg('', styleText('client_models_application_encoding_changed', {'%T': translateText('client_models_application_encoding_changed', [ev.params[0]])}));\r
                 } else {\r
-                    _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_encoding_invalid').fetch(ev.params[0]));\r
+                    _kiwi.app.panels().active.addMsg('', styleText('client_models_application_encoding_invalid', {'%T': translateText('client_models_application_encoding_invalid', [ev.params[0]])}));\r
                 }\r
             });\r
         } else {\r
-            _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_encoding_notspecified').fetch());\r
-            _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_encoding_usage').fetch());\r
+            _kiwi.app.panels().active.addMsg('', styleText('client_models_application_encoding_notspecified', {'%T': translateText('client_models_application_encoding_notspecified')}));\r
+            _kiwi.app.panels().active.addMsg('', styleText('client_models_application_encoding_usage', {'%T': translateText('client_models_application_encoding_usage')}));\r
         }\r
     }\r
 \r
         // Use the same nick as we currently have\r
         nick = _kiwi.app.connections.active_connection.get('nick');\r
 \r
-        _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_connection_connecting').fetch(server, port.toString()));\r
+        _kiwi.app.panels().active.addMsg('', styleText('client_models_application_connection_connecting', {'%T': translateText('client_models_application_connection_connecting', [server, port.toString()])}));\r
 \r
         _kiwi.gateway.newConnection({\r
             nick: nick,\r
             password: password\r
         }, function(err, new_connection) {\r
             if (err)\r
-                _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_connection_error').fetch(server, port.toString(), err.toString()));\r
+                _kiwi.app.panels().active.addMsg('', styleText('client_models_application_connection_error', {'%T': translateText('client_models_application_connection_error', [server, port.toString(), err.toString()])}));\r
         });\r
     }\r
 \r