// 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
},\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
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
- var parts;\r
- var defaults = {\r
- nick: '',\r
- server: '',\r
- port: 6667,\r
- ssl: false,\r
- channel: '#chat',\r
- channel_key: ''\r
- };\r
- var uricheck;\r
-\r
-\r
- /**\r
- * Get any settings set by the server\r
- * These settings may be changed in the server selection dialog or via URL parameters\r
- */\r
- if (this.server_settings.client) {\r
- if (this.server_settings.client.nick)\r
- defaults.nick = this.server_settings.client.nick;\r
-\r
- if (this.server_settings.client.server)\r
- defaults.server = this.server_settings.client.server;\r
-\r
- if (this.server_settings.client.port)\r
- defaults.port = this.server_settings.client.port;\r
-\r
- if (this.server_settings.client.ssl)\r
- defaults.ssl = this.server_settings.client.ssl;\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
-\r
- /**\r
- * Get any settings passed in the URL\r
- * These settings may be changed in the server selection dialog\r
- */\r
-\r
- // Any query parameters first\r
- if (getQueryVariable('nick'))\r
- defaults.nick = getQueryVariable('nick');\r
-\r
- if (window.location.hash)\r
- defaults.channel = window.location.hash;\r
-\r
-\r
- // Process the URL part by part, extracting as we go\r
- parts = window.location.pathname.toString().replace(this.get('base_path'), '').split('/');\r
-\r
- if (parts.length > 0) {\r
- parts.shift();\r
-\r
- if (parts.length > 0 && parts[0]) {\r
- // Check to see if we're dealing with an irc: uri, or whether we need to extract the server/channel info from the HTTP URL path.\r
- uricheck = parts[0].substr(0, 7).toLowerCase();\r
- if ((uricheck === 'ircs%3a') || (uricheck.substr(0,6) === 'irc%3a')) {\r
- parts[0] = decodeURIComponent(parts[0]);\r
- // irc[s]://<host>[:<port>]/[<channel>[?<password>]]\r
- uricheck = /^irc(s)?:(?:\/\/?)?([^:\/]+)(?::([0-9]+))?(?:(?:\/)([^\?]*)(?:(?:\?)(.*))?)?$/.exec(parts[0]);\r
- /*\r
- uricheck[1] = ssl (optional)\r
- uricheck[2] = host\r
- uricheck[3] = port (optional)\r
- uricheck[4] = channel (optional)\r
- uricheck[5] = channel key (optional, channel must also be set)\r
- */\r
- if (uricheck) {\r
- if (typeof uricheck[1] !== 'undefined') {\r
- defaults.ssl = true;\r
- if (defaults.port === 6667) {\r
- defaults.port = 6697;\r
- }\r
- }\r
- defaults.server = uricheck[2];\r
- if (typeof uricheck[3] !== 'undefined') {\r
- defaults.port = uricheck[3];\r
- }\r
- if (typeof uricheck[4] !== 'undefined') {\r
- defaults.channel = '#' + uricheck[4];\r
- if (typeof uricheck[5] !== 'undefined') {\r
- defaults.channel_key = uricheck[5];\r
- }\r
- }\r
- }\r
- parts = [];\r
- } else {\r
- // Extract the port+ssl if we find one\r
- if (parts[0].search(/:/) > 0) {\r
- defaults.port = parts[0].substring(parts[0].search(/:/) + 1);\r
- defaults.server = parts[0].substring(0, parts[0].search(/:/));\r
- if (defaults.port[0] === '+') {\r
- defaults.port = parseInt(defaults.port.substring(1), 10);\r
- defaults.ssl = true;\r
- } else {\r
- defaults.ssl = false;\r
- }\r
-\r
- } else {\r
- defaults.server = parts[0];\r
- }\r
-\r
- parts.shift();\r
- }\r
- }\r
-\r
- if (parts.length > 0 && parts[0]) {\r
- defaults.channel = '#' + parts[0];\r
- parts.shift();\r
- }\r
- }\r
-\r
- // 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 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
- defaults.server = this.server_settings.connection.server;\r
- }\r
-\r
- if (this.server_settings.connection.port) {\r
- defaults.port = this.server_settings.connection.port;\r
- }\r
-\r
- if (this.server_settings.connection.ssl) {\r
- defaults.ssl = this.server_settings.connection.ssl;\r
- }\r
-\r
- if (this.server_settings.connection.channel) {\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
- // Set any random numbers if needed\r
- defaults.nick = defaults.nick.replace('?', Math.floor(Math.random() * 100000).toString());\r
-\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
- },\r
-\r
-\r
panels: (function() {\r
+ var active_panel;\r
+\r
var fn = function(panel_type) {\r
var panels;\r
\r
}\r
\r
// Active panels / server\r
- panels.active = this.connections.active_panel;\r
+ panels.active = active_panel;\r
panels.server = this.connections.active_connection ?\r
this.connections.active_connection.panels.server :\r
null;\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
// 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
function joinCommand (ev) {\r
var panels, channel_names;\r
\r
- // Add a # in front of the first channel if missing\r
- if (ev.params[0].substring(0,1) != '#') {\r
- ev.params[0] = '#' + ev.params[0];\r
- }\r
- \r
channel_names = ev.params.join(' ').split(',');\r
panels = this.connections.active_connection.createAndJoinChannels(channel_names);\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