RT <-> Knowledge Base

At this moment our support team use a kind of form in exchange to register and dispatch calls.
However at this moment this system doesn’t fulfill their needs anymore.

I’ve read a lot of positive sounds about RT and I’m considering to use RT as our new internal call registration system.

We also have the need for a Knowledge Base to save solutions, patches, screenshots, etc.
Ideally, this Knowledge Base and the ticketing system are integrated.

My questions:

  • Does RT has a kind of “Knowledge Base” function, so that solutions and technical information can be stored without logging a new call ?
  • If no, is it difficult to add this functionality to the RT framework ?
  • Are there already addons for RT that provide this functionality ?

Len Kranendonk

We also have the need for a Knowledge Base to save solutions, patches,
screenshots, etc. Ideally, this Knowledge Base and the ticketing system
are integrated.

My questions:

  • Does RT has a kind of “Knowledge Base” function, so that solutions
    and technical information can be stored without logging a new call ?
  • If no, is it difficult to add this functionality to the RT framework ?
  • Are there already addons for RT that provide this functionality ?

In my view, and this is reflected in the way we’re trying to use RT at our
site, RT is the construction tool for the knowledgebase and it is
currently the only method we have of extracting information from the
knowledgebase.

In other words, as problems and projects are entered into RT, we try and
keep a very detailed log of what steps have been taken to fix a problem.
Ideally, every problem entered into RT eventually has a solution posted
into RT as well.

Months down the road as the same problem crops up elsewhere, we are able
to do a search in RT on words or phrases related to the problem and pull
up tickets from previous instances of the problem where we can then find
how we solved the problem in the past.

I’ve personally used the system in this way many times and am slowly but
surely convincing my fellow staff members to use the system in this same
way. Their are some problems, however, for instance the other day we had a
machine that had been hacked in the same manner as a different computer on
our network a few months earlier.

I knew we had a ticket on this hack and how we cleaned the machine up, but
I could not find the ticket using words that I was sure would be in the
ticket. My coworker logged into the same RT database with the same
permissions as myself entered the same words in her search and was able to
pull up the ticket.

I tried the search again, but it still did not work for me. By mistake I
hit the search button a second time, lo and behold, the ticket came up.
It’s little problems like this that have my superiors questioning the
value of using RT. However, I still see some value in using the system, we
were able to locate the ticket and implement the same solution without too
much trouble, though it would be nice to have the system working
consistently.

For what it’s worth, we’re running version 2.0.13.

If someone has a “knowledgebase” interface they are using to access
solutions from RT, I’d love to hear about it, but so far the built in
functionality has worked adequately for our needs.

Dave Hull
Senior Information Technology Analyst
The University of Kansas
voice: (785) 864-0403 || fax: (785) 864-0485

We also have the need for a Knowledge Base to save solutions, patches,
screenshots, etc. Ideally, this Knowledge Base and the ticketing system
are integrated.

If someone has a “knowledgebase” interface they are using to access
solutions from RT, I’d love to hear about it, but so far the built in
functionality has worked adequately for our needs.

Isn’t this what the StockAnswers addon is for? Check

 http://www.fsck.com/pub/rt/contrib/2.0/

and search the mailling list archives.

(Not used it, but that’s my impression of its purpose…)

Steve

“Outlook not so good.” That magic 8-ball knows everything! I’ll ask
about Exchange Server next.
– (Stolen from the net)

We also have the need for a Knowledge Base to save solutions, patches, screenshots, etc.
Ideally, this Knowledge Base and the ticketing system are integrated.

My questions:

  • Does RT has a kind of “Knowledge Base” function, so that solutions and
    technical information can be stored without logging a new call ?

At the moment, the StockAnswers in the contrib is the closest to what you
are looking for. Note the ‘at the moment’.

Something that may be interesting is that the RIPE NCC has contracted
Jesse to implement something 'Knowledge Base’ish to our specifications,
with it to be released under GPLv2 at the successful completion of this
project. This will require RT 3.0, and most probably will not be
back-portable to RT 2.0.x .

At the current rate of progress, Jesse[1] expects a beta release sometime
around Christmas. This year, right Jesse [1] ?

  • If no, is it difficult to add this functionality to the RT framework ?

For us, we signed a bit of paper.[2]

  • Are there already addons for RT that provide this functionality ?

Yes, see StockAnswers.

                         Bruce Campbell                            RIPE
               Systems/Network Engineer                             NCC
             www.ripe.net - PGP562C8B1B             Operations/Security

[1] Currently tied to a chair in the NCC HQ.
[2] Not in Blood, our Finance people wouldn’t permit that.

At the current rate of progress, Jesse[1] expects a beta release sometime
around Christmas. This year, right Jesse [1] ?

Yes. [2]

[1] Currently tied to a chair in the NCC HQ. [4]

Jesse

[2] Well, this Christmas, anyway. But I’m not going to let Bruce pin
down which Christmas I’m talking about.[3]

[3] I was originally just going to comment on Orthodox Christmas,
but I’ve just been informed that the Netherlands celebrates the visit
of Sinter Klaas on December 5.

[4] Bruce was kind enough to untie my hands, so that I could reply.
»|« http://www.bestpractical.com/rt – Trouble Ticketing. Free.

“BC” == Bruce Campbell bruce_campbell@ripe.net writes:

BC> At the moment, the StockAnswers in the contrib is the closest to what you
BC> are looking for. Note the ‘at the moment’.

What about these, announced recently? I couldn’t deal with every one
of my possible 100+ canned responses being loaded into my page every
time as with StockAnswers… I haven’t tried this one, yet, though.

http://www.fsck.com/pub/rt/contrib/2.0/TemplateAnswers-0.3.tar.gz
or
http://primate.net/src/TemplateAnswers-0.3.tar.gz

I’m glad you’re sponsoring the project to have such a feature in RT.
I tried to get a group together to pay for it last year, but got no
serious commitments other than my own. Thanks!

“BC” == Bruce Campbell bruce_campbell@ripe.net writes:

BC> At the moment, the StockAnswers in the contrib is the closest to what you
BC> are looking for. Note the ‘at the moment’.

What about these, announced recently? I couldn’t deal with every one
of my possible 100+ canned responses being loaded into my page every
time as with StockAnswers… I haven’t tried this one, yet, though.

http://www.fsck.com/pub/rt/contrib/2.0/TemplateAnswers-0.3.tar.gz

To be honest, I haven’t tried it (well, completely missed the announcement
as was catching up with mail after Greece). Looking at it (cue download
and inspection), you’ve still got the caveat of the text of all of the
Queue’s Templates being loaded into the HTML page and then being jiggled
around with javascript.

Hrm… I’m not keen myself on having all of my queue’s templates being
visible in the HTML (ie, I use a number of per-Queue templates for mail
templates etc), so I’d suggest adding the following line (+) in
TemplateAnswers-0.3/TemplateList to limit the possible Templates returned.

% while (my $TemplateObj = $Templates->Next ){
  • % next unless( $TemplateObj->Name =~ /^\s*QuickAnswer:/ );
    % push @data, [$TemplateObj->Name, $TemplateObj->Content];
    % }

Obviously, tag the Templates that you’re using as QuickAnswers as
’QuickAnswer:’ to begin the Name.

If your aim is to reduce the size of the answer page, another method that
you could use is to create /Ticket/Elements/TemplateFetch , and then have
the javascript in /Ticket/Elements/TemplateList merely supply a list of
possible templates (% push @data, [$TemplateObj->Name, $TemplateObj->id]:wink:
, and retrieve /Ticket/Elements/TemplateFetch?id=numberselected . That
should cut down on the size of the page passed to the WebUI user.

TemplateFetch would read (warning, untested coconut margarita code):

% if( defined( $Template ) ){
%	if( $Template->Name =~ /^\s*QuickAnswer:/ ){
%		$Template->Content();
%	}else{
		You do not have permission to view template { $id }.
%	}
% }else{
	Template specified does not seem to exist
% }
<%INIT>
my $Template = new RT::Template( $session{'CurrentUser'} );
$Template->Load( $id );
</%INIT>
<%ARGS>
id => undef
</%ARGS>

I think something like this could go into TemplateAnswers 0.4 (Aaron?)

                         Bruce Campbell                            RIPE
               Systems/Network Engineer                             NCC
             www.ripe.net - PGP562C8B1B             Operations/Security

To be honest, I haven’t tried it (well, completely missed the announcement
as was catching up with mail after Greece). Looking at it (cue download
and inspection), you’ve still got the caveat of the text of all of the
Queue’s Templates being loaded into the HTML page and then being jiggled
around with javascript.

I think something like this could go into TemplateAnswers 0.4 (Aaron?)

Actually, TemplateAnswers 0.4 didn't make it into contrib yet (fixes

some dumb JavaScript errors dealing with \r’s). I’ll look into these
changes – I actually cut something like that out of the old StockAnswers.
The in-html ugliness was mandated by our workflow requirements.

http://primate.net/src/TemplateAnswers-0.4.tar.gz

I’ve just installed TemplateAnswers-0.4 and I’m very frequently getting this
when I try to get to the update page.
rt2.0.13
Mason 1.05

James.

Mason error

error in file:
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList
line 33: Global symbol “$signature” requires explicit package name

context: …
29: $message =~ s/\r//g;
30: $message =~ s/\n/\n/g;
31: }
32: if ($session{‘CurrentUser’}->UserObj->Signature) {
33: $signature = “-- \n”.$session{‘CurrentUser’}->UserObj->Signature;
34: $signature =~ s/\r\n/\n/g;
35: $signature =~ s/’/\’/g;
36: $signature =~ s/\n/\n/g;
37: }

component stack: /Ticket/Update.html [local]
/autohandler [standard]

code stack:
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList:33
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm:382
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm:468
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm:597
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Update.html:92
/usr/local/rt2/WebRT/data/obj/STANDARD/autohandler:69

raw_error
raw error:

error while executing /Ticket/Update.html [local]:
Error during compilation of
/usr/local/rt2/local/WebRT/html/Ticket/Elements/TemplateList:
Global symbol “$signature” requires explicit package name at
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList line 33,
chunk 559.

HTML::Mason::Interp::ANON(‘Error during compilation of
/usr/local/rt2/local/WebRT/html/Tick…’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm line 419
HTML::Mason::Interp::_compilation_error(‘HTML::Mason::Interp=HASH(0x8d92fb4)
’, ‘/usr/local/rt2/local/WebRT/html/Ticket/Elements/TemplateList’, ‘Global
symbol “$signature” requires explicit package name at /us…’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm line 382
HTML::Mason::Interp::load(‘HTML::Mason::Interp=HASH(0x8d92fb4)’,
’/Ticket/Elements/TemplateList’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 468
HTML::Mason::Request::fetch_comp(‘HTML::Mason::Request::ApacheHandler=HASH(0
x901ff48)’, ‘/Ticket/Elements/TemplateList’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 597
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘/Ticket/Elements/TemplateList’, ‘id’, 1, ‘QuoteTransaction’, undef,
‘Source’, ‘Update’) called at
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Update.html line 92
HTML::Mason::Commands::ANON(‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Component.pm line 131
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x901783
c)’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘HTML::Mason::Component::FileBased=HASH(0x901783c)’, ‘id’, 1024,
‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 317
HTML::Mason::Request::call_next(‘HTML::Mason::Request::ApacheHandler=HASH(0x
901ff48)’) called at /usr/local/rt2/WebRT/data/obj/STANDARD/autohandler line
69
HTML::Mason::Commands::ANON(‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Component.pm line 131
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x848c62
4)’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘HASH(0x900e6dc)’,
‘HTML::Mason::Component::FileBased=HASH(0x848c624)’, ‘id’, 1024, ‘Action’,
‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 160
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 160
HTML::Mason::Request::exec(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘/Ticket/Update.html’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 914
HTML::Mason::ApacheHandler::handle_request_1(‘HTML::Mason::ApacheHandler=HAS
H(0x8d92e04)’, ‘Apache=SCALAR(0x810292c)’,
‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff48)’, undef) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 560
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 560
HTML::Mason::ApacheHandler::handle_request(‘HTML::Mason::ApacheHandler=HASH(
0x8d92e04)’, ‘Apache=SCALAR(0x810292c)’) called at
/usr/local/rt2/bin/webmux.pl line 165
RT::Mason::handler(‘Apache=SCALAR(0x810292c)’) called at /dev/null line 0
eval {…} called at /dev/null line 0-----Original Message-----
From: Aaron T Porter [mailto:atporter@gateway.primate.net]
Sent: Thursday, October 24, 2002 6:20 PM
To: Bruce Campbell
Cc: rt-users@lists.fsck.com
Subject: Re: [rt-users] RT <-> Knowledge Base

On Fri, Oct 25, 2002 at 12:53:53AM +0200, Bruce Campbell wrote:

To be honest, I haven’t tried it (well, completely missed the
announcement as was catching up with mail after Greece). Looking at
it (cue download and inspection), you’ve still got the caveat of the
text of all of the Queue’s Templates being loaded into the HTML page
and then being jiggled around with javascript.

I think something like this could go into TemplateAnswers 0.4 (Aaron?)

Actually, TemplateAnswers 0.4 didn't make it into contrib yet (fixes

some dumb JavaScript errors dealing with \r’s). I’ll look into these changes
– I actually cut something like that out of the old StockAnswers. The
in-html ugliness was mandated by our workflow requirements.

http://primate.net/src/TemplateAnswers-0.4.tar.gz
rt-users mailing list
rt-users@lists.fsck.com http://lists.fsck.com/mailman/listinfo/rt-users

Have you read the FAQ? The RT FAQ Manager lives at http://fsck.com/rtfm

Add $signature to the my array ~ line 51 to fix it (in TemplateList).

– Jeff

At 01:28 PM 11/5/2002, James Satterfield wrote:

I’ve just installed TemplateAnswers-0.4 and I’m very frequently getting this
when I try to get to the update page.
rt2.0.13
Mason 1.05

James.

Mason error

error in file:
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList
line 33: Global symbol “$signature” requires explicit package name

context: …
29: $message =~ s/\r//g;
30: $message =~ s/\n/\n/g;
31: }
32: if ($session{‘CurrentUser’}->UserObj->Signature) {
33: $signature = “-- \n”.$session{‘CurrentUser’}->UserObj->Signature;
34: $signature =~ s/\r\n/\n/g;
35: $signature =~ s/’/\’/g;
36: $signature =~ s/\n/\n/g;
37: }

component stack: /Ticket/Update.html [local]
/autohandler [standard]

code stack:
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList:33
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm:382
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm:468
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm:597
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Update.html:92
/usr/local/rt2/WebRT/data/obj/STANDARD/autohandler:69

raw_error
raw error:

error while executing /Ticket/Update.html [local]:
Error during compilation of
/usr/local/rt2/local/WebRT/html/Ticket/Elements/TemplateList:
Global symbol “$signature” requires explicit package name at
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Elements/TemplateList line 33,
chunk 559.

HTML::Mason::Interp::ANON(‘Error during compilation of
/usr/local/rt2/local/WebRT/html/Tick…’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm line 419
HTML::Mason::Interp::_compilation_error(‘HTML::Mason::Interp=HASH(0x8d92fb4)
’, ‘/usr/local/rt2/local/WebRT/html/Ticket/Elements/TemplateList’, ‘Global
symbol “$signature” requires explicit package name at /us…’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Interp.pm line 382
HTML::Mason::Interp::load(‘HTML::Mason::Interp=HASH(0x8d92fb4)’,
’/Ticket/Elements/TemplateList’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 468
HTML::Mason::Request::fetch_comp(‘HTML::Mason::Request::ApacheHandler=HASH(0
x901ff48)’, ‘/Ticket/Elements/TemplateList’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 597
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘/Ticket/Elements/TemplateList’, ‘id’, 1, ‘QuoteTransaction’, undef,
‘Source’, ‘Update’) called at
/usr/local/rt2/WebRT/data/obj/LOCAL/Ticket/Update.html line 92
HTML::Mason::Commands::ANON(‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Component.pm line 131
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x901783
c)’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘HTML::Mason::Component::FileBased=HASH(0x901783c)’, ‘id’, 1024,
‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 317
HTML::Mason::Request::call_next(‘HTML::Mason::Request::ApacheHandler=HASH(0x
901ff48)’) called at /usr/local/rt2/WebRT/data/obj/STANDARD/autohandler line
69
HTML::Mason::Commands::ANON(‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Component.pm line 131
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x848c62
4)’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 654
HTML::Mason::Request::comp(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘HASH(0x900e6dc)’,
‘HTML::Mason::Component::FileBased=HASH(0x848c624)’, ‘id’, 1024, ‘Action’,
‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 160
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/Request.pm line 160
HTML::Mason::Request::exec(‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff
48)’, ‘/Ticket/Update.html’, ‘id’, 1024, ‘Action’, ‘Respond’) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 914
HTML::Mason::ApacheHandler::handle_request_1(‘HTML::Mason::ApacheHandler=HAS
H(0x8d92e04)’, ‘Apache=SCALAR(0x810292c)’,
‘HTML::Mason::Request::ApacheHandler=HASH(0x901ff48)’, undef) called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 560
eval {…} called at
/usr/local/lib/perl5/site_perl/5.005/HTML/Mason/ApacheHandler.pm line 560
HTML::Mason::ApacheHandler::handle_request(‘HTML::Mason::ApacheHandler=HASH(
0x8d92e04)’, ‘Apache=SCALAR(0x810292c)’) called at
/usr/local/rt2/bin/webmux.pl line 165
RT::Mason::handler(‘Apache=SCALAR(0x810292c)’) called at /dev/null line 0
eval {…} called at /dev/null line 0

-----Original Message-----
From: Aaron T Porter [mailto:atporter@gateway.primate.net]
Sent: Thursday, October 24, 2002 6:20 PM
To: Bruce Campbell
Cc: rt-users@lists.fsck.com
Subject: Re: [rt-users] RT <-> Knowledge Base

To be honest, I haven’t tried it (well, completely missed the
announcement as was catching up with mail after Greece). Looking at
it (cue download and inspection), you’ve still got the caveat of the
text of all of the Queue’s Templates being loaded into the HTML page
and then being jiggled around with javascript.

I think something like this could go into TemplateAnswers 0.4 (Aaron?)

    Actually, TemplateAnswers 0.4 didn't make it into contrib yet (fixes

some dumb JavaScript errors dealing with \r’s). I’ll look into these changes
– I actually cut something like that out of the old StockAnswers. The
in-html ugliness was mandated by our workflow requirements.

http://primate.net/src/TemplateAnswers-0.4.tar.gz


rt-users mailing list
rt-users@lists.fsck.com http://lists.fsck.com/mailman/listinfo/rt-users

Have you read the FAQ? The RT FAQ Manager lives at http://fsck.com/rtfm


rt-users mailing list
rt-users@lists.fsck.com
http://lists.fsck.com/mailman/listinfo/rt-users

Have you read the FAQ? The RT FAQ Manager lives at http://fsck.com/rtfm

Jeff Hoover Jeff.Hoover@InfoTechFL.com
Web Programmer, Info Tech, Inc.
5700 SW 34th Street, Suite 1235 phone: (352) 381-4400
Gainesville, FL 32608 fax: (352) 381-4444