Mozilla/mozilla/extensions/irc/xul/tests/test1-handlers.js
dmose%mozilla.org 0efb7c174c updated xPL license boilerplate to v1.1, a=chofmann@netscape.com,r=endico@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@52910 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 03:43:54 +00:00

353 lines
7.8 KiB
JavaScript

/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is JSIRC Test Client #1
*
* The Initial Developer of the Original Code is New Dimensions Consulting,
* Inc. Portions created by New Dimensions Consulting, Inc. are
* Copyright (C) 1999 New Dimenstions Consulting, Inc. All
* Rights Reserved.
*
* Contributor(s):
*
*
* Contributor(s):
* Robert Ginda, rginda@ndcico.com, original author
*/
function onLoad()
{
initStatic();
init(client);
var entry = document.getElementById("input");
EntryHistory(20, entry, onInputLine);
for (var a in client.INITIAL_ALIASES)
client.addAlias (client.INITIAL_ALIASES[a].name,
client.INITIAL_ALIASES[a].value);
client.lastListType = "networks";
setCurrentNetwork ("efnet");
updateListNow();
updateStatus();
//onListClick({target: document.getElementById ("lstQuickList")});
mainstep();
}
function onUnload()
{
client.quit ("re-load");
}
CIRCServer.prototype.onNotice = function my_notice (e)
{
if (e.source)
display ("[" + e.server.parent.name + "][NOTICE][" + e.source + "] " +
e.meat);
else
display ("[" + e.server.parent.name + "][NOTICE] " + e.meat);
}
CIRCChannel.prototype.onPrivmsg = function my_cprivmsg (e)
{
display ("[" + e.server.parent.name + "][" + e.channel.name + "]<" +
e.user.nick + "> " + e.meat);
if (e.meat.indexOf (client.prefix) == 0)
{
try
{
var v = eval(e.meat.substring (client.prefix.length,
e.meat.length));
}
catch (ex)
{
this.say (e.user.nick + ": " + String(ex));
return false;
}
if (typeof (v) != "undefined")
{
if (v != null)
v = String(v);
else
v = "null";
var rsp = e.user.nick + ", your result is,";
if (v.indexOf ("\n") != -1)
rsp += "\n";
else
rsp += " ";
this.say (rsp + v);
}
}
return true;
}
CIRCChannel.prototype.onCTCPAction = function my_caction (e)
{
display ("[" + e.server.parent.name + "][" + e.channel.name + "]*" +
e.user.nick + "* " + e.CTCPData);
}
CIRCChannel.prototype.onJoin = function my_cjoin (e)
{
display ("[" + e.server.parent.name + "] " + e.user.nick + " has joined " +
e.channel.name);
if (client.lastListType == "chan-users")
updateList();
}
CIRCChannel.prototype.onPart = function my_cpart (e)
{
display ("[" + e.server.parent.name + "] " + e.user.nick + " has left " +
e.channel.name);
if (client.lastListType == "chan-users")
updateList();
}
CIRCChannel.prototype.onKick = function my_ckick (e)
{
display ("[" + e.server.parent.name + "] " + e.lamer.nick +
" has been booted from " + e.channel.name + " by " +
e.user.nick + " (" + e.reason + ")");
if (client.lastListType == "chan-users")
updateList();
}
CIRCUser.prototype.onNick = function my_unick (e)
{
display ("[" + e.server.parent.name + "] " + e.oldNick +
" is now known as " + e.user.nick);
if (client.lastListType.search ("users") != -1)
updateList();
}
CIRCUser.prototype.onQuit = function my_quit (e)
{
display (e.user.nick + " has left " + e.server.parent.name + " (" +
e.reason + ")");
if (client.lastListType.search ("users") != -1)
updateList();
}
function onCommand()
{
var btn = document.getElementById ("btnCommand");
eval (btn.getAttribute("command"));
}
function onInputLine(line)
{
if (line[0] == client.COMMAND_CHAR)
{
var ary = line.substr(1, line.length).match (/(\S+)? ?(.*)/);
var cmd = ary[1];
var destMethod = "onInput" + ary[1][0].toUpperCase() +
ary[1].substr (1, ary[1].length).toLowerCase();
var type = "input-" + ary[1].toLowerCase();
var ev = new CEvent ("client", type, client, destMethod);
ev.cmd = cmd;
ev.inputData = ary[2] ? ary[2] : "";
ev.network = client.network;
ev.server = client.network.primServ;
ev.channel = client.channel;
client.eventPump.addEvent (ev);
}
else
if (client.channel)
client.channel.say (line);
}
client.onInputAlias = function cli_ialias (e)
{
var ary = e.inputData.match (/(\S+)? ?(.*)/);
if (!ary)
return false;
if (!ary[2])
client.removeAlias (ary[1]);
else
client.addAlias (ary[1], ary[2]);
}
client.onInputRaw = function cli_iraw (e)
{
client.primNet.primServ.sendData (e.inputData + "\n");
}
client.onInputEval = function cli_ieval (e)
{
try
{
rv = String(eval (e.inputData));
if (rv.indexOf ("\n") == -1)
display ("[eval(" + e.inputData + ")] " + rv);
else
display ("[eval(" + e.inputData + ")]\n" + rv);
}
catch (ex)
{
display ("[eval][ERROR] " + ex);
}
}
client.onInputJ = client.onInputJoin = function cli_ijoin (e)
{
if (!e.network || !e.network.isConnected())
return false;
var name = e.inputData.match(/\S+/);
if (!name)
return false;
e.channel = e.network.primServ.addChannel (String(name));
setCurrentChannel (e.channel);
client.lastListType = "chan-users";
updateList();
e.channel.join();
}
client.onInputP = client.onInputPart = client.onInputLeave =
function cli_ipart (e)
{
if (!e.channel)
return false;
e.channel.part();
}
function onListNetworks ()
{
client.lastListType = "networks";
updateListNow();
}
function onListUsers ()
{
var quickList = document.getElementById("lstQuickList");
if (!client.network || !client.network.isConnected())
{
listClear (quickList);
client.lastListType = "none";
return true;
}
client.lastListType = "users";
updateListNow();
}
function onListChannels ()
{
var quickList = document.getElementById("lstQuickList");
if (!client.network || !client.network.isConnected())
{
listClear (quickList);
client.lastListType = "none";
return true;
}
client.lastListType = "channels";
updateListNow();
}
function onListChanUsers ()
{
var quickList = document.getElementById("lstQuickList");
if (!client.channel)
{
listClear (quickList);
client.lastListType = "none";
return true;
}
client.lastListType = "chan-users";
updateListNow();
}
function onListClick (e)
{
var name = e.target.text;
var ary = name.match(/\[.*\] (.*)/);
var name = (ary) ? ary[1] : name;
var btn = document.getElementById ("btnCommand");
switch (client.lastListType)
{
case "networks":
setCurrentNetwork (name);
break;
case "users":
setCurrentUser (name);
break;
case "channels":
setCurrentChannel (name);
break;
case "chan-users":
setCurrentCUser (name);
break;
default:
break;
}
}