Reconnection messages moved to locales
[KiwiIRC.git] / client / assets / src / models / application.js
index a3be59caf09513592a96066beb8a7c29a7ec9b35..aea2fa6dfb4e0ab2d234c208e98d0b20e50ba137 100644 (file)
@@ -25,12 +25,18 @@ _kiwi.model.Application = function () {
 \r
             // Any options sent down from the server\r
             this.server_settings = options[0].server_settings || {};\r
+            this.translations = options[0].translations || {};\r
 \r
             // Best guess at where the kiwi server is\r
             this.detectKiwiServer();\r
 \r
             // Takes instances of model_network\r
             this.connections = new _kiwi.model.NetworkPanelList();\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
+            }\r
         };\r
 \r
 \r
@@ -48,7 +54,6 @@ _kiwi.model.Application = function () {
 \r
             this.initializeClient();\r
             this.initializeGlobals();\r
-            this.applyDefaultClientSettings(this.server_settings.client.settings);\r
 \r
             this.view.barsHide(true);\r
 \r
@@ -180,6 +185,9 @@ _kiwi.model.Application = function () {
 \r
                 if (this.server_settings.client.channel)\r
                     defaults.channel = this.server_settings.client.channel;\r
+\r
+                if (this.server_settings.client.channel_key)\r
+                    defaults.channel_key = this.server_settings.client.channel_key;\r
             }\r
 \r
 \r
@@ -284,6 +292,10 @@ _kiwi.model.Application = function () {
                     defaults.channel = this.server_settings.connection.channel;\r
                 }\r
 \r
+                if (this.server_settings.connection.channel_key) {\r
+                    defaults.channel_key = this.server_settings.connection.channel_key;\r
+                }\r
+\r
                 if (this.server_settings.connection.nick) {\r
                     defaults.nick = this.server_settings.connection.nick;\r
                 }\r
@@ -329,6 +341,8 @@ _kiwi.model.Application = function () {
 \r
 \r
         this.bindGatewayCommands = function (gw) {\r
+            var that = this;\r
+\r
             gw.on('onconnect', function (event) {\r
                 that.view.barsShow();\r
             });\r
@@ -339,10 +353,15 @@ _kiwi.model.Application = function () {
              */\r
             (function () {\r
                 var gw_stat = 0;\r
+                var unplanned_disconnect = false;\r
 \r
                 gw.on('disconnect', function (event) {\r
-                    var msg = 'You have been disconnected. Attempting to reconnect for you..';\r
-                    that.message.text(msg, {timeout: 10000});\r
+                    unplanned_disconnect = !gw.disconnect_requested;\r
+\r
+                    if (unplanned_disconnect) {\r
+                        var msg = _kiwi.global.i18n.translate('client_models_application_reconnecting').fetch() + '...';\r
+                        that.message.text(msg, {timeout: 10000});\r
+                    }\r
 \r
                     that.view.$el.removeClass('connected');\r
 \r
@@ -363,7 +382,7 @@ _kiwi.model.Application = function () {
 \r
 \r
                 gw.on('reconnecting', function (event) {\r
-                    var msg = 'You have been disconnected. Attempting to reconnect again in ' + (event.delay/1000) + ' seconds..';\r
+                    var msg = _kiwi.global.i18n.translate('client_models_application_reconnect_in_x_seconds').fetch(event.delay/1000) + '...';\r
 \r
                     // Only need to mention the repeating re-connection messages on server panels\r
                     _kiwi.app.connections.forEach(function(connection) {\r
@@ -376,8 +395,10 @@ _kiwi.model.Application = function () {
                     that.view.$el.addClass('connected');\r
                     if (gw_stat !== 1) return;\r
 \r
-                    var msg = 'It\'s OK, you\'re connected again :)';\r
-                    that.message.text(msg, {timeout: 5000});\r
+                    if (unplanned_disconnect) {\r
+                        var msg = _kiwi.global.i18n.translate('client_models_application_reconnect_successfully').fetch() + ':)';\r
+                        that.message.text(msg, {timeout: 5000});\r
+                    }\r
 \r
                     // Mention the disconnection on every channel\r
                     _kiwi.app.connections.forEach(function(connection) {\r
@@ -395,6 +416,43 @@ _kiwi.model.Application = function () {
                 });\r
             })();\r
 \r
+\r
+            gw.on('kiwi:reconfig', function () {\r
+                $.getJSON(that.get('base_path') + '/assets/settings.json', function (data) {\r
+                    that.server_settings = data.server_settings || {};\r
+                    that.translations = data.translations || {};\r
+                });\r
+            });\r
+\r
+\r
+            gw.on('kiwi:jumpserver', function (data) {\r
+                // Switching kiwi server?\r
+                if (typeof data.kiwi_server !== 'undefined') {\r
+                    _kiwi.app.kiwi_server = data.kiwi_server;\r
+                    _kiwi.gateway.set('kiwi_server', data.kiwi_server);\r
+                }\r
+\r
+                // Force the jumpserver now?\r
+                if (data.force) {\r
+                    // Get an interval around 1 minute so everyone doesn't reconnect it all at once\r
+                    var jump_server_interval = Math.random() * (90 - 60) + 60;\r
+\r
+                    var msg = 'In 1 minutes time you will be reconnected to a more stable server. Get ready!';\r
+                    var msg = _kiwi.global.i18n.translate('client_models_application_jumpserver_prepare').fetch();\r
+                    that.message.text(msg, {timeout: 10000});\r
+\r
+                    setTimeout(function forcedReconnect() {\r
+                        var msg = 'Safely reconnecting you now..';\r
+                        var msg = _kiwi.global.i18n.translate('client_models_application_jumpserver_reconnect').fetch();\r
+                        that.message.text(msg, {timeout: 8000});\r
+\r
+                        setTimeout(function forcedReconnectPartTwo() {\r
+                            _kiwi.gateway.reconnect();\r
+                        }, 5000);\r
+\r
+                    }, jump_server_interval * 1000);\r
+                }\r
+            });\r
         };\r
 \r
 \r
@@ -443,6 +501,8 @@ _kiwi.model.Application = function () {
 \r
             controlbox.on('command:query', queryCommand);\r
 \r
+            controlbox.on('command:invite', inviteCommand);\r
+\r
             controlbox.on('command:topic', topicCommand);\r
 \r
             controlbox.on('command:notice', noticeCommand);\r
@@ -461,6 +521,7 @@ _kiwi.model.Application = function () {
 \r
             controlbox.on('command:whowas', whowasCommand);\r
 \r
+            controlbox.on('command:encoding', encodingCommand);\r
 \r
             controlbox.on('command:css', function (ev) {\r
                 var queryString = '?reload=' + new Date().getTime();\r
@@ -474,7 +535,7 @@ _kiwi.model.Application = function () {
                 $script(ev.params[0] + '?' + (new Date().getTime()));\r
             });\r
 \r
-            \r
+\r
             controlbox.on('command:set', function (ev) {\r
                 if (!ev.params[0]) return;\r
 \r
@@ -509,7 +570,7 @@ _kiwi.model.Application = function () {
 \r
             controlbox.on('command:save', function (ev) {\r
                 _kiwi.global.settings.save();\r
-                _kiwi.app.panels().active.addMsg('', 'Settings have been saved');\r
+                _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_settings_saved').fetch());\r
             });\r
 \r
 \r
@@ -544,19 +605,19 @@ _kiwi.model.Application = function () {
                 controlbox.preprocessor.aliases[name] = rule;\r
             });\r
 \r
-            \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
+                        _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_title').fetch() + ':');\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
+                        _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_none').fetch());\r
                     }\r
                     return;\r
                 }\r
@@ -564,7 +625,7 @@ _kiwi.model.Application = function () {
                 // 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
+                _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_nick').fetch(ev.params[0]));\r
             });\r
 \r
 \r
@@ -572,7 +633,7 @@ _kiwi.model.Application = function () {
                 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
+                    _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stop_notice').fetch());\r
                     return;\r
                 }\r
 \r
@@ -582,7 +643,7 @@ _kiwi.model.Application = function () {
 \r
                 _kiwi.gateway.set('ignore_list', list);\r
 \r
-                _kiwi.app.panels().active.addMsg(' ', 'Stopped ignoring ' + ev.params[0]);\r
+                _kiwi.app.panels().active.addMsg(' ', _kiwi.global.i18n.translate('client_models_application_ignore_stopped').fetch(ev.params[0]));\r
             });\r
 \r
 \r
@@ -624,7 +685,7 @@ _kiwi.model.Application = function () {
             }\r
 \r
             if (panel) panel.view.show();\r
-            \r
+\r
         }\r
 \r
         function msgCommand (ev) {\r
@@ -752,16 +813,37 @@ _kiwi.model.Application = function () {
                 if (_kiwi.applets[ev.params[0]]) {\r
                     panel.load(new _kiwi.applets[ev.params[0]]());\r
                 } else {\r
-                    _kiwi.app.panels().server.addMsg('', 'Applet "' + ev.params[0] + '" does not exist');\r
+                    _kiwi.app.panels().server.addMsg('', _kiwi.global.i18n.translate('client_models_application_applet_notfound').fetch(ev.params[0]));\r
                     return;\r
                 }\r
             }\r
-            \r
+\r
             _kiwi.app.connections.active_connection.panels.add(panel);\r
             panel.view.show();\r
         }\r
 \r
 \r
+\r
+        function inviteCommand (ev) {\r
+            var nick, channel;\r
+\r
+            // A nick must be specified\r
+            if (!ev.params[0])\r
+                return;\r
+\r
+            // Can only invite into channels\r
+            if (!_kiwi.app.panels().active.isChannel())\r
+                return;\r
+\r
+            nick = ev.params[0];\r
+            channel = _kiwi.app.panels().active.get('name');\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
+        }\r
+\r
+\r
         function whoisCommand (ev) {\r
             var nick;\r
 \r
@@ -789,6 +871,20 @@ _kiwi.model.Application = function () {
                 _kiwi.app.connections.active_connection.gateway.raw('WHOWAS ' + nick);\r
         }\r
 \r
+        function encodingCommand (ev) {\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
+                    } else {\r
+                        _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_encoding_invalid').fetch(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
+            }\r
+        }\r
 \r
         function serverCommand (ev) {\r
             var server, port, ssl, password, nick,\r
@@ -796,7 +892,7 @@ _kiwi.model.Application = function () {
 \r
             // If no server address given, show the new connection dialog\r
             if (!ev.params[0]) {\r
-                tmp = new _kiwi.view.MenuBox('New Connection');\r
+                tmp = new _kiwi.view.MenuBox(_kiwi.global.i18n.translate('client_models_application_connection_create').fetch());\r
                 tmp.addItem('new_connection', new _kiwi.model.NewConnection().view.$el);\r
                 tmp.show();\r
 \r
@@ -839,7 +935,7 @@ _kiwi.model.Application = function () {
             // Use the same nick as we currently have\r
             nick = _kiwi.app.connections.active_connection.get('nick');\r
 \r
-            _kiwi.app.panels().active.addMsg('', 'Connecting to ' + server + ':' + port.toString() + '..');\r
+            _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_connection_connecting').fetch(server, port.toString()));\r
 \r
             _kiwi.gateway.newConnection({\r
                 nick: nick,\r
@@ -849,7 +945,7 @@ _kiwi.model.Application = function () {
                 password: password\r
             }, function(err, new_connection) {\r
                 if (err)\r
-                    _kiwi.app.panels().active.addMsg('', 'Error connecting to ' + server + ':' + port.toString() + ' (' + err.toString() + ')');\r
+                    _kiwi.app.panels().active.addMsg('', _kiwi.global.i18n.translate('client_models_application_connection_error').fetch(server, port.toString(), err.toString()));\r
             });\r
         }\r
 \r