-kiwi.model.Application = function () {\r
+_kiwi.model.Application = function () {\r
// Set to a reference to this object within initialize()\r
var that = null;\r
\r
\r
\r
var model = function () {\r
- /** Instance of kiwi.model.PanelList */\r
+ /** Instance of _kiwi.model.PanelList */\r
this.panels = null;\r
\r
- /** kiwi.view.Application */\r
+ /** _kiwi.view.Application */\r
this.view = null;\r
\r
- /** kiwi.view.StatusMessage */\r
+ /** _kiwi.view.StatusMessage */\r
this.message = null;\r
\r
/* Address for the kiwi server */\r
// The base url to the kiwi server\r
this.set('base_path', options[0].base_path ? options[0].base_path : '/kiwi');\r
\r
+ // Any options sent down from the server\r
+ this.server_settings = options[0].server_settings || {};\r
+\r
// Best guess at where the kiwi server is\r
this.detectKiwiServer();\r
};\r
}\r
\r
// Set the gateway up\r
- kiwi.gateway = new kiwi.model.Gateway();\r
- this.bindGatewayCommands(kiwi.gateway);\r
+ _kiwi.gateway = new _kiwi.model.Gateway();\r
+ this.bindGatewayCommands(_kiwi.gateway);\r
\r
this.initializeClient();\r
this.initializeGlobals();\r
kiwiServerNotFound();\r
return;\r
}\r
- kiwi.gateway.set('kiwi_server', that.kiwi_server + '/kiwi');\r
- kiwi.gateway.set('nick', event.nick);\r
+ _kiwi.gateway.set('kiwi_server', that.kiwi_server + '/kiwi');\r
+ _kiwi.gateway.set('nick', event.nick);\r
\r
- kiwi.gateway.connect(event.server, event.port, event.ssl, event.password, function (error) {\r
+ _kiwi.gateway.connect(event.server, event.port, event.ssl, event.password, function (error) {\r
if (error) {\r
kiwiServerNotFound();\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
- kiwi.app.panels.server.server_login.$el.find('.nick').select();\r
+ _kiwi.app.panels.server.server_login.$el.find('.nick').select();\r
}, 0);\r
};\r
\r
\r
\r
this.initializeClient = function () {\r
- this.view = new kiwi.view.Application({model: this, el: this.get('container')});\r
+ this.view = new _kiwi.view.Application({model: this, el: this.get('container')});\r
\r
/**\r
* Set the UI components up\r
*/\r
- this.panels = new kiwi.model.PanelList();\r
+ this.panels = new _kiwi.model.PanelList();\r
\r
- this.controlbox = new kiwi.view.ControlBox({el: $('#controlbox')[0]});\r
+ this.controlbox = new _kiwi.view.ControlBox({el: $('#controlbox')[0]});\r
this.bindControllboxCommands(this.controlbox);\r
\r
- this.topicbar = new kiwi.view.TopicBar({el: $('#topic')[0]});\r
+ this.topicbar = new _kiwi.view.TopicBar({el: $('#topic')[0]});\r
\r
- new kiwi.view.AppToolbar({el: $('#toolbar .app_tools')[0]});\r
+ new _kiwi.view.AppToolbar({el: $('#toolbar .app_tools')[0]});\r
\r
- this.message = new kiwi.view.StatusMessage({el: $('#status_message')[0]});\r
+ this.message = new _kiwi.view.StatusMessage({el: $('#status_message')[0]});\r
\r
- this.resize_handle = new kiwi.view.ResizeHandler({el: $('#memberlists_resize_handle')[0]});\r
+ this.resize_handle = new _kiwi.view.ResizeHandler({el: $('#memberlists_resize_handle')[0]});\r
\r
this.panels.server.view.show();\r
\r
\r
\r
this.initializeGlobals = function () {\r
- kiwi.global.control = this.controlbox;\r
+ _kiwi.global.panels = this.panels;\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_' + Math.ceil(Math.random() * 10000).toString(),\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
\r
+\r
+ /**\r
+ * Get any settings set by the server\r
+ * These settings may be changed in the server selection dialog\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
+\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
// Process the URL part by part, extracting as we go\r
parts = window.location.pathname.toString().replace(this.get('base_path'), '').split('/');\r
\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.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
\r
this.bindGatewayCommands = function (gw) {\r
gw.on('onmotd', function (event) {\r
- that.panels.server.addMsg(kiwi.gateway.get('name'), event.msg, 'motd');\r
+ that.panels.server.addMsg(_kiwi.gateway.get('name'), event.msg, 'motd');\r
});\r
\r
\r
that.message.text(msg, {timeout: 10000});\r
\r
// Mention the disconnection on every channel\r
- $.each(kiwi.app.panels.models, function (idx, panel) {\r
+ $.each(_kiwi.app.panels.models, function (idx, panel) {\r
if (!panel || !panel.isChannel()) return;\r
panel.addMsg('', msg, 'action quit');\r
});\r
- kiwi.app.panels.server.addMsg('', msg, 'action quit');\r
+ _kiwi.app.panels.server.addMsg('', msg, 'action quit');\r
\r
gw_stat = 1;\r
});\r
gw.on('reconnecting', function (event) {\r
msg = 'You have been disconnected. Attempting to reconnect again in ' + (event.delay/1000) + ' seconds..';\r
- kiwi.app.panels.server.addMsg('', msg, 'action quit');\r
+ _kiwi.app.panels.server.addMsg('', msg, 'action quit');\r
});\r
gw.on('connect', function (event) {\r
if (gw_stat !== 1) return;\r
that.message.text(msg, {timeout: 5000});\r
\r
// Mention the disconnection on every channel\r
- $.each(kiwi.app.panels.models, function (idx, panel) {\r
+ $.each(_kiwi.app.panels.models, function (idx, panel) {\r
if (!panel || !panel.isChannel()) return;\r
panel.addMsg('', msg, 'action join');\r
});\r
- kiwi.app.panels.server.addMsg('', msg, 'action join');\r
+ _kiwi.app.panels.server.addMsg('', msg, 'action join');\r
\r
gw_stat = 0;\r
});\r
var c, members, user;\r
c = that.panels.getByName(event.channel);\r
if (!c) {\r
- c = new kiwi.model.Channel({name: event.channel});\r
+ c = new _kiwi.model.Channel({name: event.channel});\r
that.panels.add(c);\r
}\r
\r
members = c.get('members');\r
if (!members) return;\r
\r
- user = new kiwi.model.Member({nick: event.nick, ident: event.ident, hostname: event.hostname});\r
+ user = new _kiwi.model.Member({nick: event.nick, ident: event.ident, hostname: event.hostname});\r
members.add(user);\r
// TODO: highlight the new channel in some way\r
});\r
if (!channel) return;\r
\r
// If this is us, close the panel\r
- if (event.nick === kiwi.gateway.get('nick')) {\r
+ if (event.nick === _kiwi.gateway.get('nick')) {\r
channel.close();\r
return;\r
}\r
\r
members.remove(user, part_options);\r
\r
- if (event.kicked === kiwi.gateway.get('nick')) {\r
+ if (event.kicked === _kiwi.gateway.get('nick')) {\r
members.reset([]);\r
}\r
\r
\r
gw.on('onmsg', function (event) {\r
var panel,\r
- is_pm = (event.channel == kiwi.gateway.get('nick'));\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
if (!panel) {\r
- panel = new kiwi.model.Channel({name: event.nick});\r
+ panel = new _kiwi.model.Query({name: event.nick});\r
that.panels.add(panel);\r
}\r
\r
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(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
\r
gw.on('onaction', function (event) {\r
var panel,\r
- is_pm = (event.channel == kiwi.gateway.get('nick'));\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
if (!panel) {\r
- panel = new kiwi.model.Channel({name: event.nick});\r
+ panel = new _kiwi.model.Channel({name: event.nick});\r
that.panels.add(panel);\r
}\r
\r
c.set('topic', event.topic);\r
\r
// If this is the active channel, update the topic bar too\r
- if (c.get('name') === kiwi.app.panels.active.get('name')) {\r
+ if (c.get('name') === _kiwi.app.panels.active.get('name')) {\r
that.topicbar.setCurrentTopic(event.topic);\r
}\r
});\r
\r
channel.temp_userlist = channel.temp_userlist || [];\r
_.each(event.users, function (item) {\r
- var user = new kiwi.model.Member({nick: item.nick, modes: item.modes});\r
+ var user = new _kiwi.model.Member({nick: item.nick, modes: item.modes});\r
channel.temp_userlist.push(user);\r
});\r
});\r
\r
channel = that.panels.getByName(event.target);\r
if (channel) {\r
- prefixes = kiwi.gateway.get('user_prefixes');\r
+ prefixes = _kiwi.gateway.get('user_prefixes');\r
find_prefix = function (p) {\r
return event.modes[i].mode[1] === p.mode;\r
};\r
channel.addMsg('', '== ' + event.nick + ' sets mode ' + friendlyModeString(), 'action mode');\r
} else {\r
// This is probably a mode being set on us.\r
- if (event.target.toLowerCase() === kiwi.gateway.get("nick").toLowerCase()) {\r
+ if (event.target.toLowerCase() === _kiwi.gateway.get("nick").toLowerCase()) {\r
that.panels.server.addMsg('', '== ' + event.nick + ' set mode ' + friendlyModeString(), 'action mode');\r
} else {\r
console.log('MODE command recieved for unknown target %s: ', event.target, event);\r
idle_time = idle_time.h.toString().lpad(2, "0") + ':' + idle_time.m.toString().lpad(2, "0") + ':' + idle_time.s.toString().lpad(2, "0");\r
}\r
\r
- panel = kiwi.app.panels.active;\r
+ panel = _kiwi.app.panels.active;\r
if (event.ident) {\r
- panel.addMsg(event.nick, 'is ' + event.nick + '!' + event.ident + '@' + event.host + ' * ' + event.msg, 'whois');\r
+ panel.addMsg(event.nick, event.nick + ' [' + event.nick + '!' + event.ident + '@' + event.host + '] * ' + event.msg, 'whois');\r
} else if (event.chans) {\r
- panel.addMsg(event.nick, 'on ' + event.chans, 'whois');\r
+ panel.addMsg(event.nick, 'Channels: ' + event.chans, 'whois');\r
} else if (event.irc_server) {\r
- panel.addMsg(event.nick, 'using ' + event.server, 'whois');\r
+ panel.addMsg(event.nick, 'Connected to server: ' + event.irc_server, 'whois');\r
} else if (event.msg) {\r
panel.addMsg(event.nick, event.msg, 'whois');\r
} else if (event.logon) {\r
}\r
});\r
\r
+ gw.on('onaway', function (event) {\r
+ $.each(that.panels.models, function (index, panel) {\r
+ if (!panel.isChannel()) return;\r
+\r
+ member = panel.get('members').getByNick(event.nick);\r
+ if (member) {\r
+ member.set('away', !(!event.trailing));\r
+ }\r
+ });\r
+ });\r
+\r
\r
gw.on('onlist_start', function (data) {\r
- if (kiwi.app.channel_list) {\r
- kiwi.app.channel_list.close();\r
- delete kiwi.app.channel_list;\r
+ if (_kiwi.app.channel_list) {\r
+ _kiwi.app.channel_list.close();\r
+ delete _kiwi.app.channel_list;\r
}\r
\r
- var panel = new kiwi.model.Applet(),\r
- applet = new kiwi.applets.Chanlist();\r
+ var panel = new _kiwi.model.Applet(),\r
+ applet = new _kiwi.applets.Chanlist();\r
\r
panel.load(applet);\r
\r
- kiwi.app.panels.add(panel);\r
+ _kiwi.app.panels.add(panel);\r
panel.view.show();\r
\r
- kiwi.app.channel_list = applet;\r
+ _kiwi.app.channel_list = applet;\r
});\r
\r
\r
gw.on('onlist_channel', function (data) {\r
// TODO: Put this listener within the applet itself\r
- kiwi.app.channel_list.addChannel(data.chans);\r
+ _kiwi.app.channel_list.addChannel(data.chans);\r
});\r
\r
\r
gw.on('onlist_end', function (data) {\r
// TODO: Put this listener within the applet itself\r
- delete kiwi.app.channel_list;\r
+ delete _kiwi.app.channel_list;\r
});\r
\r
\r
gw.on('onirc_error', function (data) {\r
var panel, tmp;\r
\r
- if (data.channel !== undefined && !(panel = kiwi.app.panels.getByName(data.channel))) {\r
- panel = kiwi.app.panels.server;\r
+ if (data.channel !== undefined && !(panel = _kiwi.app.panels.getByName(data.channel))) {\r
+ panel = _kiwi.app.panels.server;\r
}\r
\r
switch (data.error) {\r
case 'banned_from_channel':\r
panel.addMsg(' ', '== You are banned from ' + data.channel + '. ' + data.reason, 'status');\r
- kiwi.app.message.text('You are banned from ' + data.channel + '. ' + data.reason);\r
+ _kiwi.app.message.text('You are banned from ' + data.channel + '. ' + data.reason);\r
break;\r
case 'bad_channel_key':\r
panel.addMsg(' ', '== Bad channel key for ' + data.channel, 'status');\r
- kiwi.app.message.text('Bad channel key or password for ' + data.channel);\r
+ _kiwi.app.message.text('Bad channel key or password for ' + data.channel);\r
break;\r
case 'invite_only_channel':\r
panel.addMsg(' ', '== ' + data.channel + ' is invite only.', 'status');\r
- kiwi.app.message.text(data.channel + ' is invite only');\r
+ _kiwi.app.message.text(data.channel + ' is invite only');\r
break;\r
case 'channel_is_full':\r
panel.addMsg(' ', '== ' + data.channel + ' is full.', 'status');\r
- kiwi.app.message.text(data.channel + ' is full');\r
+ _kiwi.app.message.text(data.channel + ' is full');\r
break;\r
case 'chanop_privs_needed':\r
panel.addMsg(' ', '== ' + data.reason, 'status');\r
- kiwi.app.message.text(data.reason + ' (' + data.channel + ')');\r
+ _kiwi.app.message.text(data.reason + ' (' + data.channel + ')');\r
break;\r
case 'no_such_nick':\r
- tmp = kiwi.app.panels.getByName(data.nick);\r
+ tmp = _kiwi.app.panels.getByName(data.nick);\r
if (tmp) {\r
tmp.addMsg(' ', '== ' + data.nick + ': ' + data.reason, 'status');\r
} else {\r
- kiwi.app.panels.server.addMsg(' ', '== ' + data.nick + ': ' + data.reason, 'status');\r
+ _kiwi.app.panels.server.addMsg(' ', '== ' + data.nick + ': ' + data.reason, 'status');\r
}\r
break;\r
case 'nickname_in_use':\r
- kiwi.app.panels.server.addMsg(' ', '== The nickname ' + data.nick + ' is already in use. Please select a new nickname', 'status');\r
- if (kiwi.app.panels.server !== kiwi.app.panels.active) {\r
- kiwi.app.message.text('The nickname "' + data.nick + '" is already in use. Please select a new nickname');\r
+ _kiwi.app.panels.server.addMsg(' ', '== The nickname ' + data.nick + ' is already in use. Please select a new nickname', 'status');\r
+ if (_kiwi.app.panels.server !== _kiwi.app.panels.active) {\r
+ _kiwi.app.message.text('The nickname "' + data.nick + '" is already in use. Please select a new nickname');\r
}\r
\r
// Only show the nickchange component if the controlbox is open\r
if (that.controlbox.$el.css('display') !== 'none') {\r
- (new kiwi.view.NickChangeBox()).render();\r
+ (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
- //kiwi.front.tabviews.server.addMsg(null, ' ', '== ' + data, 'status');\r
+ //_kiwi.front.tabviews.server.addMsg(null, ' ', '== ' + data, 'status');\r
}\r
});\r
};\r
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
- kiwi.gateway.changeNick(ev.params[0]);\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
\r
- controlbox.on('command_css', function (ev) {\r
+ controlbox.on('command:ctcp', ctcpCommand);\r
+\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
- controlbox.on('command_alias', function (ev) {\r
+ \r
+ controlbox.on('command:set', function (ev) {\r
+ if (!ev.params[0]) return;\r
+\r
+ var setting = ev.params[0],\r
+ value;\r
+\r
+ // Do we have a second param to set a value?\r
+ if (ev.params[1]) {\r
+ ev.params.shift();\r
+\r
+ value = ev.params.join(' ');\r
+ _kiwi.global.settings.set(setting, value);\r
+ }\r
+\r
+ // Read the value to the user\r
+ _kiwi.app.panels.active.addMsg('', setting + ' = ' + _kiwi.global.settings.get(setting));\r
+ });\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
+ });\r
+\r
+\r
+ controlbox.on('command:alias', function (ev) {\r
var name, rule;\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(' ', name + ' => ' + rule);\r
});\r
return;\r
}\r
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
function unknownCommand (ev) {\r
var raw_cmd = ev.command + ' ' + ev.params.join(' ');\r
console.log('RAW: ' + raw_cmd);\r
- kiwi.gateway.raw(raw_cmd);\r
+ _kiwi.gateway.raw(raw_cmd);\r
}\r
\r
function allCommands (ev) {}\r
// Check if we have the panel already. If not, create it\r
channel = that.panels.getByName(channel_name);\r
if (!channel) {\r
- channel = new kiwi.model.Channel({name: channel_name});\r
- kiwi.app.panels.add(channel);\r
+ channel = new _kiwi.model.Channel({name: channel_name});\r
+ _kiwi.app.panels.add(channel);\r
}\r
\r
- kiwi.gateway.join(channel_name);\r
+ _kiwi.gateway.join(channel_name);\r
});\r
\r
if (channel) channel.view.show();\r
// Check if we have the panel already. If not, create it\r
panel = that.panels.getByName(destination);\r
if (!panel) {\r
- panel = new kiwi.model.Channel({name: destination});\r
- panel.set('members', undefined);\r
- kiwi.app.panels.add(panel);\r
+ panel = new _kiwi.model.Query({name: destination});\r
+ _kiwi.app.panels.add(panel);\r
}\r
\r
if (panel) panel.view.show();\r
\r
ev.params.shift();\r
\r
- panel.addMsg(kiwi.gateway.get('nick'), ev.params.join(' '));\r
- kiwi.gateway.privmsg(destination, ev.params.join(' '));\r
+ panel.addMsg(_kiwi.gateway.get('nick'), ev.params.join(' '));\r
+ _kiwi.gateway.privmsg(destination, ev.params.join(' '));\r
}\r
\r
function actionCommand (ev) {\r
- if (kiwi.app.panels.active === kiwi.app.panels.server) {\r
+ if (_kiwi.app.panels.active === _kiwi.app.panels.server) {\r
return;\r
}\r
\r
- var panel = kiwi.app.panels.active;\r
- panel.addMsg('', '* ' + kiwi.gateway.get('nick') + ' ' + ev.params.join(' '), 'action');\r
- kiwi.gateway.action(panel.get('name'), ev.params.join(' '));\r
+ var panel = _kiwi.app.panels.active;\r
+ panel.addMsg('', '* ' + _kiwi.gateway.get('nick') + ' ' + ev.params.join(' '), 'action');\r
+ _kiwi.gateway.action(panel.get('name'), ev.params.join(' '));\r
}\r
\r
function partCommand (ev) {\r
if (ev.params.length === 0) {\r
- kiwi.gateway.part(kiwi.app.panels.active.get('name'));\r
+ _kiwi.gateway.part(_kiwi.app.panels.active.get('name'));\r
} else {\r
_.each(ev.params, function (channel) {\r
- kiwi.gateway.part(channel);\r
+ _kiwi.gateway.part(channel);\r
});\r
}\r
// TODO: More responsive = close tab now, more accurate = leave until part event\r
- //kiwi.app.panels.remove(kiwi.app.panels.active);\r
+ //_kiwi.app.panels.remove(_kiwi.app.panels.active);\r
}\r
\r
function topicCommand (ev) {\r
channel_name = ev.params[0];\r
ev.params.shift();\r
} else {\r
- channel_name = kiwi.app.panels.active.get('name');\r
+ channel_name = _kiwi.app.panels.active.get('name');\r
}\r
\r
- kiwi.gateway.topic(channel_name, ev.params.join(' '));\r
+ _kiwi.gateway.topic(channel_name, ev.params.join(' '));\r
}\r
\r
function noticeCommand (ev) {\r
destination = ev.params[0];\r
ev.params.shift();\r
\r
- kiwi.gateway.notice(destination, ev.params.join(' '));\r
+ _kiwi.gateway.notice(destination, ev.params.join(' '));\r
}\r
\r
function quoteCommand (ev) {\r
var raw = ev.params.join(' ');\r
- kiwi.gateway.raw(raw);\r
+ _kiwi.gateway.raw(raw);\r
}\r
\r
function kickCommand (ev) {\r
- var nick, panel = kiwi.app.panels.active;\r
+ var nick, panel = _kiwi.app.panels.active;\r
\r
if (!panel.isChannel()) return;\r
\r
nick = ev.params[0];\r
ev.params.shift();\r
\r
- kiwi.gateway.kick(panel.get('name'), nick, ev.params.join(' '));\r
+ _kiwi.gateway.kick(panel.get('name'), nick, ev.params.join(' '));\r
+ }\r
+\r
+ function clearCommand (ev) {\r
+ // Can't clear a server or applet panel\r
+ if (_kiwi.app.panels.active.isServer() || _kiwi.app.panels.active.isApplet()) {\r
+ return;\r
+ }\r
+\r
+ if (_kiwi.app.panels.active.clearMessages) {\r
+ _kiwi.app.panels.active.clearMessages();\r
+ }\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 panel = new kiwi.model.Applet();\r
- panel.load(new kiwi.applets.Settings());\r
- \r
- kiwi.app.panels.add(panel);\r
- panel.view.show();\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
- var panel = new kiwi.model.Applet();\r
+ var panel = new _kiwi.model.Applet();\r
\r
if (ev.params[1]) {\r
// Url and name given\r
panel.load(ev.params[0], ev.params[1]);\r
} else {\r
// Load a pre-loaded applet\r
- if (kiwi.applets[ev.params[0]]) {\r
- panel.load(new kiwi.applets[ev.params[0]]());\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('', 'Applet "' + ev.params[0] + '" does not exist');\r
return;\r
}\r
}\r
\r
- kiwi.app.panels.add(panel);\r
+ _kiwi.app.panels.add(panel);\r
panel.view.show();\r
}\r
\r
\r
\r
this.isChannelName = function (channel_name) {\r
- var channel_prefix = kiwi.gateway.get('channel_prefix');\r
+ var channel_prefix = _kiwi.gateway.get('channel_prefix');\r
\r
if (!channel_name || !channel_name.length) return false;\r
return (channel_prefix.indexOf(channel_name[0]) > -1);\r