зеркало из https://github.com/mozilla/gecko-dev.git
431 строка
8.9 KiB
JavaScript
431 строка
8.9 KiB
JavaScript
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* 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 #2
|
|
*
|
|
* 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");
|
|
|
|
}
|
|
|
|
CIRCNetwork.prototype.onNotice = function my_notice (e)
|
|
{
|
|
|
|
this.display (e.meat, "NOTICE");
|
|
|
|
}
|
|
|
|
CIRCChannel.prototype.onPrivmsg = function my_cprivmsg (e)
|
|
{
|
|
|
|
e.user.display (e.meat, "PRIVMSG");
|
|
|
|
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.onNotice = function my_notice (e)
|
|
{
|
|
|
|
e.user.display (e.meat, "NOTICE", e.user.nick);
|
|
|
|
}
|
|
|
|
CIRCChannel.prototype.onCTCPAction = function my_caction (e)
|
|
{
|
|
|
|
e.user.display (e.CTCPData, "ACTION");
|
|
|
|
}
|
|
|
|
CIRCChannel.prototype.onJoin = function my_cjoin (e)
|
|
{
|
|
|
|
this.display(e.user.nick + " has joined " + e.channel.name,
|
|
"JOIN");
|
|
if (client.lastListType == "chan-users")
|
|
updateList();
|
|
|
|
}
|
|
|
|
CIRCChannel.prototype.onPart = function my_cpart (e)
|
|
{
|
|
|
|
this.display (e.user.nick + " has left " + e.channel.name, "PART");
|
|
if (client.lastListType == "chan-users")
|
|
updateList();
|
|
|
|
}
|
|
|
|
CIRCChannel.prototype.onKick = function my_ckick (e)
|
|
{
|
|
|
|
this.display (e.lamer.nick + " was booted from " + e.channel.name +
|
|
" by " + e.user.nick + " (" + e.reason + ")", "KICK");
|
|
if (client.lastListType == "chan-users")
|
|
updateList();
|
|
|
|
}
|
|
|
|
CIRCUser.prototype.onPrivmsg = function my_cprivmsg (e)
|
|
{
|
|
|
|
this.display (e.meat, "PRIVMSG");
|
|
|
|
}
|
|
|
|
CIRCUser.prototype.onNotice = function my_notice (e)
|
|
{
|
|
|
|
this.display (e.meat, "NOTICE");
|
|
|
|
}
|
|
|
|
CIRCUser.prototype.onNick = function my_unick (e)
|
|
{
|
|
|
|
this.parent.parent.display (e.oldNick + " is now known as " +
|
|
e.user.nick, "NICK");
|
|
if (client.lastListType.search ("users") != -1)
|
|
updateList();
|
|
|
|
}
|
|
|
|
CIRCUser.prototype.onQuit = function my_quit (e)
|
|
{
|
|
|
|
this.parent.parent.display (e.user.nick + " has left " +
|
|
e.server.parent.name + " (" + e.reason + ")",
|
|
"QUIT");
|
|
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.display (line, "PRIVMSG", "!ME");
|
|
client.channel.say (line);
|
|
}
|
|
|
|
}
|
|
|
|
client.onInputMe = function cli_ime (e)
|
|
{
|
|
if (e.channel)
|
|
{
|
|
e.channel.act (e.inputData);
|
|
client.channel.display (e.inputData, "ACTION", "!ME");
|
|
}
|
|
}
|
|
|
|
client.onInputNick = function cli_inick (e)
|
|
{
|
|
|
|
if (!e.inputData)
|
|
return false;
|
|
|
|
if (e.server)
|
|
e.server.sendData ('NICK ' + e.inputData + '\n');
|
|
else
|
|
CIRCNetwork.prototype.INITIAL_NICK = e.inputData;
|
|
|
|
}
|
|
|
|
client.onInputName = function cli_iname (e)
|
|
{
|
|
|
|
if (!e.inputData)
|
|
return false;
|
|
|
|
CIRCNetwork.prototype.INITIAL_NAME = e.inputData;
|
|
|
|
}
|
|
|
|
client.onInputDesc = function cli_idesc (e)
|
|
{
|
|
|
|
if (!e.inputData)
|
|
return false;
|
|
|
|
CIRCNetwork.prototype.INITIAL_DESC = e.inputData;
|
|
|
|
}
|
|
|
|
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)
|
|
client.display ("(" + e.inputData + ") " + rv, "EVAL");
|
|
else
|
|
client.display ("(" + e.inputData + ")\n" + rv, "EVAL");
|
|
}
|
|
catch (ex)
|
|
{
|
|
client.display (ex, "ERROR");
|
|
}
|
|
|
|
}
|
|
|
|
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("QuickList");
|
|
|
|
if (!client.network || !client.network.isConnected())
|
|
{
|
|
listClear (quickList);
|
|
client.lastListType = "none";
|
|
return true;
|
|
}
|
|
|
|
client.lastListType = "users";
|
|
updateListNow();
|
|
|
|
}
|
|
|
|
function onListChannels ()
|
|
{
|
|
var quickList = document.getElementById("QuickList");
|
|
|
|
if (!client.network || !client.network.isConnected())
|
|
{
|
|
listClear (quickList);
|
|
client.lastListType = "none";
|
|
return true;
|
|
}
|
|
|
|
client.lastListType = "channels";
|
|
updateListNow();
|
|
|
|
}
|
|
|
|
function onListChanUsers ()
|
|
{
|
|
var quickList = document.getElementById("QuickList");
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function onActListClick (e)
|
|
{
|
|
var name = e.target.text;
|
|
var ary = name.match(/\[.*\] (.*)/);
|
|
var name = (ary) ? ary[1] : name;
|
|
|
|
displayHistory (client.actList[name].source);
|
|
|
|
}
|
|
|
|
|
|
function onNickClick (e)
|
|
{
|
|
|
|
dd (dumpObjectTree (e));
|
|
|
|
}
|