1998-06-16 21:43:24 +00:00
|
|
|
#!/usr/bonsaitools/bin/perl --
|
|
|
|
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
|
|
|
#
|
|
|
|
# The contents of this file are subject to the Netscape Public License
|
|
|
|
# Version 1.0 (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/NPL/
|
|
|
|
#
|
|
|
|
# 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 the Bonsai CVS tool.
|
|
|
|
#
|
|
|
|
# The Initial Developer of the Original Code is Netscape Communications
|
|
|
|
# Corporation. Portions created by Netscape are Copyright (C) 1998
|
|
|
|
# Netscape Communications Corporation. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Query the CVS database.
|
|
|
|
#
|
1999-07-23 18:39:31 +00:00
|
|
|
require 'CGI.pl';
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
$|=1;
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
$CVS_ROOT = $::FORM{"cvsroot"};
|
|
|
|
$CVS_ROOT = pickDefaultRepository() unless $CVS_ROOT;
|
|
|
|
|
|
|
|
LoadTreeConfig();
|
|
|
|
$::TreeID = $::FORM{'module'}
|
|
|
|
if (!exists($::FORM{'treeid'}) &&
|
|
|
|
exists($::FORM{'module'}) &&
|
|
|
|
exists($::TreeInfo{$::FORM{'module'}}{'repository'}));
|
|
|
|
$::TreeID = 'default'
|
|
|
|
if (!exists($::TreeInfo{$::TreeID}{'repository'}) ||
|
|
|
|
exists($::TreeInfo{$::TreeID}{'nobonsai'}));
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
# get dir, remove leading and trailing slashes
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
$dir = $::FORM{"dir"};
|
1998-06-16 21:43:24 +00:00
|
|
|
$dir =~ s/^\/([^:]*)/$1/;
|
|
|
|
$dir =~ s/([^:]*)\/$/$1/;
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
$rev = $::FORM{"rev"};
|
1998-06-16 21:43:24 +00:00
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
print "Content-type: text/html\n\n";
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
&setup_script;
|
1999-07-23 18:39:31 +00:00
|
|
|
$Setup_String = $script_str;
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
if( $CVS_ROOT eq "" ){
|
|
|
|
$CVS_ROOT = pickDefaultRepository();
|
|
|
|
}
|
|
|
|
|
|
|
|
validateRepository($CVS_ROOT);
|
|
|
|
|
|
|
|
if( $rev ne "" ){
|
|
|
|
$s = "for branch <i>$rev</i>";
|
|
|
|
}
|
|
|
|
|
1998-06-18 16:47:00 +00:00
|
|
|
CheckHidden("$CVS_ROOT/$dir");
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
$revstr = '';
|
|
|
|
$revstr = "&rev=$rev" unless $rev eq '';
|
|
|
|
$rootstr = '';
|
|
|
|
$rootstr .= "&cvsroot=$::FORM{'cvsroot'}" if defined $::FORM{'cvsroot'};
|
|
|
|
$rootstr .= "&module=$::TreeID";
|
|
|
|
$module = $::TreeInfo{$::TreeID}{'module'};
|
|
|
|
|
|
|
|
$toplevel = Param('toplevel');
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
$output = "<DIV ALIGN=LEFT>";
|
1999-07-23 18:39:31 +00:00
|
|
|
$output .= "<A HREF='toplevel.cgi" . BatchIdPart('?') . "'>$toplevel</a>/ ";
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
($dir_head, $dir_tail) = $dir =~ m@(.*/)?(.+)@;
|
|
|
|
foreach $path (split('/',$dir_head)) {
|
|
|
|
$link_path .= $path;
|
1999-07-23 18:39:31 +00:00
|
|
|
$output .= "<A HREF='rview.cgi?dir=$link_path$rootstr$revstr'>$path</A>/ ";
|
1998-06-16 21:43:24 +00:00
|
|
|
$link_path .= '/';
|
|
|
|
}
|
|
|
|
chop ($output);
|
|
|
|
$output .= " $s";
|
|
|
|
$output .= "</DIV>";
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
PutsHeader("Repository Directory $toplevel/$dir $s", $output);
|
|
|
|
|
|
|
|
cvsmenu("align=right width=30%");
|
1998-06-16 21:43:24 +00:00
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
($other_dir = $dir) =~ s!^$module/?!!;
|
|
|
|
$other_dir_used = 1;
|
1998-06-16 21:43:24 +00:00
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
LoadDirList();
|
|
|
|
if (-d "$CVS_ROOT/$dir") {
|
|
|
|
chdir "$CVS_ROOT/$dir";
|
|
|
|
$other_dir_used = 0;
|
|
|
|
} elsif (-d "$CVS_ROOT/$other_dir") {
|
|
|
|
chdir "$CVS_ROOT/$other_dir";
|
|
|
|
} else {
|
|
|
|
chdir "$CVS_ROOT";
|
|
|
|
}
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
print "
|
|
|
|
<TABLE CELLPADDING=0 CELLSPACING=0>
|
|
|
|
<FORM action=rview.cgi method=get><TR><TD>
|
|
|
|
Goto Directory:
|
|
|
|
</TD><TD><INPUT name=dir value='$dir' size=30>
|
|
|
|
<INPUT name=rev value='$rev' type=hidden>
|
1999-07-23 18:39:31 +00:00
|
|
|
<INPUT name=module value='$::TreeID' type=hidden>
|
1998-06-16 21:43:24 +00:00
|
|
|
<INPUT name=cvsroot value='$CVS_ROOT' type=hidden>
|
|
|
|
<INPUT type=submit value='chdir'>
|
|
|
|
</TD></TR></FORM>
|
|
|
|
<FORM action=rview.cgi method=get><TR><TD>
|
|
|
|
Branch:
|
|
|
|
</TD><TD><INPUT name=rev value='$rev' size=30>
|
|
|
|
<INPUT name=dir value='$dir' type=hidden>
|
1999-07-23 18:39:31 +00:00
|
|
|
<INPUT name=module value='$::TreeID' type=hidden>
|
1998-06-16 21:43:24 +00:00
|
|
|
<INPUT name=cvsroot value='$CVS_ROOT' type=hidden>
|
|
|
|
<INPUT type=submit value='Set Branch'>
|
1999-07-23 18:39:31 +00:00
|
|
|
</TR></FORM>
|
1998-06-16 21:43:24 +00:00
|
|
|
</TABLE>
|
|
|
|
|
|
|
|
";
|
|
|
|
|
|
|
|
@dirs = ();
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
|
|
|
|
DIR:
|
1998-06-16 21:43:24 +00:00
|
|
|
while( <*> ){
|
|
|
|
if( -d $_ ){
|
1999-07-26 23:46:04 +00:00
|
|
|
push @dirs, $_;
|
1998-06-16 21:43:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
if( @dirs != 0 ){
|
|
|
|
$j = 1;
|
|
|
|
$split = int(@dirs/4)+1;
|
|
|
|
print "<P><FONT SIZE=+1><B>Directories:</B></FONT><table><TR VALIGN=TOP><td>";
|
|
|
|
|
|
|
|
|
|
|
|
for $i (@dirs){
|
1999-07-23 18:39:31 +00:00
|
|
|
$::FORM{"dir"} = ($dir ne "" ? "$dir/$i" : $i);
|
1998-06-16 21:43:24 +00:00
|
|
|
$anchor = &make_cgi_args;
|
|
|
|
print "<dt><a href=rview.cgi${anchor}>$i</a>\n";
|
|
|
|
if( $j % $split == 0 ){
|
|
|
|
print "\n<td>\n";
|
|
|
|
}
|
|
|
|
$j++;
|
|
|
|
}
|
1999-07-23 18:39:31 +00:00
|
|
|
$::FORM{"dir"} = $dir;
|
1998-06-16 21:43:24 +00:00
|
|
|
print "\n</tr></table>\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
print "<P><FONT SIZE=+1><B>Files:</B></FONT>";
|
|
|
|
print "<table><TR VALIGN=TOP><td>";
|
|
|
|
@files = <*,v>;
|
|
|
|
$j = 1;
|
|
|
|
$split = int(@files/4)+1;
|
|
|
|
|
|
|
|
for $_ (@files){
|
|
|
|
$_ =~ s/\,v//;
|
|
|
|
print "<a href=../registry/file.cgi?cvsroot=$CVS_ROOT&file=$_&dir=$dir"
|
|
|
|
. " onclick=\"return js_file_menu('$dir','$_','$rev','$CVS_ROOT',event)\">\n";
|
|
|
|
print "<dt>$_</a>\n";
|
|
|
|
if( $j % $split == 0 ){
|
|
|
|
print "\n<td>\n";
|
|
|
|
}
|
|
|
|
$j++;
|
|
|
|
}
|
|
|
|
print "\n</tr></table>\n";
|
|
|
|
|
1999-07-23 18:39:31 +00:00
|
|
|
PutsTrailer();
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
sub setup_script {
|
|
|
|
|
|
|
|
$script_str =<<'ENDJS';
|
|
|
|
<script>
|
|
|
|
|
|
|
|
var event = new Object;
|
|
|
|
|
|
|
|
function js_who_menu(n,extra,d) {
|
|
|
|
if( parseInt(navigator.appVersion) < 4 ){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
l = document.layers['popup'];
|
|
|
|
l.src="../registry/who.cgi?email="+n+extra;
|
1998-06-26 18:12:08 +00:00
|
|
|
|
|
|
|
if(d.target.y > window.innerHeight + window.pageYOffset - l.clip.height) {
|
|
|
|
l.top = (window.innerHeight + window.pageYOffset - l.clip.height);
|
|
|
|
} else {
|
|
|
|
l.top = d.target.y - 6;
|
|
|
|
}
|
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
l.left = d.target.x - 6;
|
1998-06-26 18:12:08 +00:00
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
if( l.left + l.clipWidth > window.width ){
|
|
|
|
l.left = window.width - l.clipWidth;
|
|
|
|
}
|
|
|
|
l.visibility="show";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function js_file_menu(dir,file,rev,root,d) {
|
|
|
|
if( parseInt(navigator.appVersion) < 4 ){
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
l = document.layers['popup'];
|
|
|
|
l.src="../registry/file.cgi?file="+file+"&dir="+dir+"&rev="+rev+"&cvsroot="+root+"&linked_text="+d.target.text;
|
1998-06-26 18:12:08 +00:00
|
|
|
|
|
|
|
if(d.target.y > window.innerHeight + window.pageYOffset - l.clip.height) {
|
|
|
|
l.top = (window.innerHeight + window.pageYOffset - l.clip.height);
|
|
|
|
} else {
|
|
|
|
l.top = d.target.y - 6;
|
|
|
|
}
|
1998-06-16 21:43:24 +00:00
|
|
|
|
|
|
|
l.left = d.target.x - 6;
|
1998-06-26 18:12:08 +00:00
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
if( l.left + l.clipWidth > window.width ){
|
|
|
|
l.left = window.width - l.clipWidth;
|
|
|
|
}
|
1998-06-26 18:12:08 +00:00
|
|
|
|
1998-06-16 21:43:24 +00:00
|
|
|
l.visibility="show";
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<layer name="popup" onMouseOut="this.visibility='hide';" left=0 top=0 bgcolor="#ffffff" visibility="hide">
|
|
|
|
</layer>
|
|
|
|
|
|
|
|
ENDJS
|
|
|
|
|
|
|
|
}
|
|
|
|
|