\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
};\r
\r
\r
+ this.applyDefaultClientSettings = function (settings) {\r
+ _.each(settings, function (value, setting) {\r
+ if (typeof _kiwi.global.settings.get(setting) === 'undefined') {\r
+ _kiwi.global.settings.set(setting, value);\r
+ }\r
+ });\r
+ };\r
+\r
+\r
this.populateDefaultServerSettings = function (new_connection_dialog) {\r
var parts;\r
var defaults = {\r
\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
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
\r
\r
this.bindGatewayCommands = function (gw) {\r
+ var that = this;\r
+\r
gw.on('onconnect', function (event) {\r
that.view.barsShow();\r
});\r
*/\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
\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
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
});\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
'/me': '/action $1+',\r
'/j': '/join $1+',\r
'/q': '/query $1+',\r
+ '/w': '/whois $1+',\r
+ '/raw': '/quote $1+',\r
\r
// Op related aliases\r
'/op': '/quote mode $channel +o $1+',\r
\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
\r
controlbox.on('command:server', serverCommand);\r
\r
+ controlbox.on('command:whois', whoisCommand);\r
+\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
$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
\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
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
// 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
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
\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
panels = that.connections.active_connection.createAndJoinChannels(channel_names);\r
\r
// Show the last channel if we have one\r
- if (panels)\r
+ if (panels.length)\r
panels[panels.length - 1].view.show();\r
}\r
\r
}\r
\r
if (panel) panel.view.show();\r
- \r
+\r
}\r
\r
function msgCommand (ev) {\r
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
+ if (ev.params[0]) {\r
+ nick = ev.params[0];\r
+ } else if (_kiwi.app.panels().active.isQuery()) {\r
+ nick = _kiwi.app.panels().active.get('name');\r
+ }\r
+\r
+ if (nick)\r
+ _kiwi.app.connections.active_connection.gateway.raw('WHOIS ' + nick + ' ' + nick);\r
+ }\r
+\r
+\r
+ function whowasCommand (ev) {\r
+ var nick;\r
+\r
+ if (ev.params[0]) {\r
+ nick = ev.params[0];\r
+ } else if (_kiwi.app.panels().active.isQuery()) {\r
+ nick = _kiwi.app.panels().active.get('name');\r
+ }\r
+\r
+ if (nick)\r
+ _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
tmp;\r
\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
// 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
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