- #!/usr/bin/perl -w
- # -*- perl -*-
- use P4CGI ;
- use strict ;
- #
- #################################################################
- # CONFIGURATION INFORMATION
- # All config info should be in P4CGI.pm
- #
- #################################################################
- #
- # P4 depot browser, top
- #
- #################################################################
-
- print "",
- &P4CGI::start_page("P4DB<br> P4 Depot Browser",
- "<CENTER><SMALL>Hint:".
- "You can bookmark any page you want to get back to later</SMALL></CENTER>") ;
-
- # Read and parse shortcut file
-
- my $shortcut_file = &P4CGI::SHORTCUT_FILE() ;
- my $SHORTCUTS="" ;
-
- if(defined $shortcut_file and -r $shortcut_file) {
- # Read file
- local *D ;
- open(*D, "<$shortcut_file") or &P4CGI::bail("Failed to open $shortcut_file for read") ;
- my $tmps = join("\n",<D>) ;
- $tmps =~ s/^#.*$//gm ;
- close *D ;
- my $shortcut_text = "" ;
- # Find all <P4DB [par=data...]>...</P4DB>
- while($tmps =~ s/^(.*?)<p4db\s+(.*?)\s*>(.*?)<\/P4DB>//is) {
- $shortcut_text .= $1 ;
- my $pars = $2 ;
- my $text = $3 ;
- # Extract arguments for <P4DB>
- my %pars ;
- while($pars =~ s/(\S+)\s*=\s*(?:"(.*?)"|(\S+))\s*//) {
- my $par = $1 ;
- my $val ;
- if(defined $2) {
- $val = $2 ;
- }
- else {
- $val = $3 ;
- } ;
- $pars{uc($par)} = $val;
- } ;
- my $type = "" ;
- if ( defined $pars{"TYPE"} ) {
- $type = uc($pars{"TYPE"});
- delete $pars{"TYPE"};
- }
- my $url ;
- if($type eq "CHANGELIST") {
- $url = "changeList.cgi" ;
- } ;
- if($type eq "BROWSE") {
- $url = "depotTreeBrowser.cgi" ;
- } ;
- if($type eq "JOBLIST") {
- $url = "jobList.cgi" ;
- my %flds ;
- &P4CGI::p4readform("jobspec -o",\%flds) ;
- my %fldtrans = map { /\s*(\d+) (\S+)/ ; (uc($2),"FLD$1") ;} split("\n",$flds{"Fields"}) ;
- my @pars = keys %pars ;
- while(@pars) {
- my $p = shift @pars ;
- if(exists $fldtrans{$p}) {
- $pars{$fldtrans{$p}} = $pars{$p} ;
- delete $pars{$p} ;
- }
- }
- $pars{"LIST"}="Y" ;
- } ;
- if(defined $url) {
- my @pars = map { "$_=$pars{$_}" ; } keys %pars ;
- $shortcut_text .= &P4CGI::ahref(-url=>$url,
- @pars,
- $text) ;
- } ;
- }
- $shortcut_text .= $tmps;
- $SHORTCUTS = join("\n",(&P4CGI::start_table("align=center cellpadding=10 bgcolor=".&P4CGI::HDRFTR_BGCOLOR()),
- &P4CGI::table_row($shortcut_text),
- &P4CGI::end_table())) ;
- } ;
-
- if(&P4CGI::SHORTCUTS_ON_TOP()) {
- print "$SHORTCUTS",
- } ;
-
-
- my @MENU = (&P4CGI::ahref(-url => "depotTreeBrowser.cgi",
- "Browse Depot"),
- &P4CGI::ahref(-url => "changeList.cgi",
- "FSPC=//...",
- "Submitted Changes"),
- &P4CGI::ahref(-url => "changeList.cgi",
- "FSPC=//...",
- "STATUS=pending",
- "Pending Changes"),
-
- &P4CGI::ahref(-url => "fileOpen.cgi",
- "Open files"),
- &P4CGI::ahref(-url => "branchList.cgi",
- "Branches"),
- &P4CGI::ahref(-url => "labelList.cgi",
- "Labels"),
-
- &P4CGI::ahref(-url => "jobList.cgi",
- "Jobs"),
- &P4CGI::ahref(-url => "userList.cgi",
- "Users and Groups"),
- &P4CGI::ahref(-url => "clientList.cgi",
- "Clients"),
-
- &P4CGI::ahref(-url => "changeByUsers.cgi",
- "Changes by User or Group"),
- &P4CGI::ahref(-url => "searchPattern.cgi",
- "Search Changes by Descriptions"),
- &P4CGI::ahref(-url => "filesChangedSince.cgi",
- "List Recently Modified Files"),
-
- &P4CGI::ahref(-url => "depotStats.cgi",
- "Depot Statistics")
- ) ;
-
- if(uc(&P4CGI::USE_JAVA()) eq "YES") {
- push @MENU, ("<APPLET CODE=\"p4jdb/P4DirTreeApplet.class\" WIDTH=100 HEIGHT=30>\n".
- "<param name=File value=\"javaDataView.cgi\">\n".
- "</APPLET>") ;
- } ;
-
- my $COLS = 3 ;
- print "",
- &P4CGI::start_table("width=100% cols=3 cellspacing=0 cellpadding=0") ;
-
- my $colorCnt=0 ;
- while(@MENU > 0) {
- my $n ;
- my @alts ;
- for($n = 0;($n < $COLS) and (@MENU > 0);$n++) {
- my $t = shift @MENU ;
- push @alts, "<font size=+1>$t</font>";
- } ;
- my $tmp = @alts ;
- my @color = (&P4CGI::BGCOLOR(),&P4CGI::HDRFTR_BGCOLOR()) ;
- print &P4CGI::table_row(-align => "center",
- map {
- {-width => "33%",
- -bgcolor => $color[$colorCnt++ & 1],
- -text => "$_" } ; } @alts) ."\n" ;
- } ;
-
- print &P4CGI::end_table() ;
-
- if(!&P4CGI::SHORTCUTS_ON_TOP()) {
- print "$SHORTCUTS\n"
- } ;
-
-
-
- print "",
- &P4CGI::start_table("bgcolor=".&P4CGI::HDRFTR_BGCOLOR()." align=center cellpadding=0 cellspacing=2"),
- "<tr><td>\n" ;
-
-
- sub prSelection($$$$ )
- {
- my $cgitarget = shift @_ ;
- my $desc = shift @_ ;
- my $fields = shift @_ ;
- my $helpTarget = shift @_ ;
-
- print "", &P4CGI::table_row(-valign=>"center",
- {-align=>"center",
- -text =>
- join("\n",
- &P4CGI::cgi()->startform(-action => $cgitarget,
- -method => "GET"),
- "<font size=+1>$desc</font>")},
- {-align=>"left",
- -text => $fields},
- {-align=>"left",
- -text => " "},
- {-align=>"left",
- -valign=>"center",
- -width=>"1",
- -text => &P4CGI::cgi()->submit(-name => "ignore",
- -value => "GO!")
- },
- { -text => &P4CGI::cgi()->endform()
- }
- ) ;
- } ;
-
- print "", &P4CGI::start_table("width=100% cellspacing=4") ;
-
- my $limiter="<tr><td colspan=5><hr></td></tr>\n" ;
-
- print $limiter ;
-
- prSelection("changeList.cgi",
- "List changes for<br>file spec",
- join("","File spec:<font face=fixed>",
- &P4CGI::cgi()->textfield(-name => "FSPC",
- -default => "//...",
- -size => 50,
- -maxlength => 256),
- "</font>"),
- "listCh") ;
-
- print $limiter ;
-
- prSelection("fileSearch.cgi",
- "Search for file",
- join("","File spec:<font face=fixed>",
- &P4CGI::cgi()->textfield(-name => "FSPC",
- -default => "//...",
- -size => 50,
- -maxlength => 256),
- "</font>"),
- "fileSrch") ;
-
- print $limiter ;
-
- prSelection("changeView.cgi",
- "View change",
- join("","Change number:<font face=fixed>",
- &P4CGI::cgi()->textfield(-name => "CH",
- -default => "1",
- -size => 10,
- -maxlength => 10),
- "</font>"),
- "viewCh") ;
-
-
- print &P4CGI::end_table() ;
-
- print "</tr></td>",&P4CGI::end_table() ;
-
-
- print
- "<hr>",
- &P4CGI::start_table("width=100% cols=3"),
- &P4CGI::table_row(-align => "left",
- &P4CGI::ahref(-url => &P4CGI::HELPFILE_PATH() . "/README.html",
- "Readme file<br>for admin"),
- {-align => "center",
- -text => &P4CGI::ahref(-url => "SetPreferences.cgi",
- "<FONT SIZE=+2>Set Preferences</FONT>"),
- },
- { -text => &P4CGI::ahref(-url => "p4race.cgi",
- "<font size=-1>The Great<br>Submit Race</font>"),
- -align => "right" }),
- &P4CGI::end_table() ;
-
- print "<hr>" ;
-
- print
- &P4CGI::end_page() ;
-
- #
- # That's all folks
- #
-
-
-
-