#!/usr/local/bin/perl5
# -*- perl -*-
use P4CGI ;
use strict ;
#
#####################################################################
##
## CONFIGURATION INFORMATION
## All config info should be in $configFile (see init() in P4CGI.pm)
##
#####################################################################
##
## List Opened Files
##
#####################################################################
# Set back references
my $homepage="index.cgi";
my $backtohome="Back to Home" ;
# Get client
my $clientspec = P4CGI::cgi()->param("CLIENT") ;
# Get clients, for form
my @allclients ;
my @p4clients ;
&P4CGI::p4call(\@allclients, "clients" );
while ( @allclients > 0 )
{
my $clienttemp = shift @allclients ;
$clienttemp =~ /^Client (\S+) / ;
my $clientname = $1 ;
push( @p4clients, "$clientname" ) ;
}
# Print title and legend
print
"",
&P4CGI::start_page("Opened Files",
&P4CGI::ul_list("Change: to see the details of the (pending) change",
"Rev: to see the file text",
"User: to see the P4 user info (including opened files)",
"Client: to see the P4 client info",
"Filename: to see the complete file history"),
$homepage,$backtohome) ;
# Print form
print
"",
&P4CGI::cgi()->startform("-action",&P4CGI::LOF_URL(),
"-method","GET"),
"View opened files only for client: ",
&P4CGI::cgi()->popup_menu(-name => "CLIENT",
"-values" =>\@p4clients),
&P4CGI::cgi()->submit(-name => "Go",
-value => "Go"),
&P4CGI::cgi()->endform(),
"
" ;
# Print output
my $printed=0 ;
my $openfiles ;
my $user ;
&P4CGI::p4call( *P4, "opened -a" ) ;
while( ) {
my ( $file,$rev,$action,$change,$client ) ;
my ( $chgno,$revno,$uname,$cname,$fname,) ;
chomp ;
/(^\/\/\S+)\s+.*/ and do { $file = $1 ; $file =~ s/(.*)\#.*/\1/ ; } ;
/.*\#(\d+)\s+.*/ and do { $rev = $1 } ;
/.*\s+-\s+(\S+)\s+.*/ and do { $action = $1 } ;
/.*\s+(default change)\s+.*/ and do { $change = "default" } ;
/.*\s+change\s+([0-9]+)\s+.*/ and do { $change = $1 } ;
/.*\s+(\S+)@.*/ and do { $user = $1 } ;
/.*@(\S+)$/ and do { $client = $1 } ;
$fname = &P4CGI::ahref( -url => &P4CGI::FLV_URL(),
&P4CGI::fixspaces("FSPC=$file"),
$file ) ;
if( $action ne "add" ) {
$revno = &P4CGI::ahref( -url => &P4CGI::FV_URL(),
&P4CGI::fixspaces("FSPC=$file"),
"REV=$rev",
$rev ) ;
}
else { $revno = $rev ; }
if( $change ne "default" ) {
$chgno = &P4CGI::ahref( -url => &P4CGI::CHV_URL(),
"CH=$change",
$change ) ;
}
else { $chgno = "(default)" ; }
$uname = &P4CGI::ahref( -url => &P4CGI::LU_URL(),
"USER=$user",
$user ) ;
$cname = &P4CGI::ahref( -url => &P4CGI::CLV_URL(),
"CLIENT=$client",
$client ) ;
if ( $clientspec ) {
if( $clientspec eq $client ) {
if( $printed == 0 ) {
print
&P4CGI::start_table(""),
&P4CGI::table_row("-type","th",
"-align","left",
"Change","Action","Rev","User","Client","Filename") ;
$printed = 1 ;
}
print
&P4CGI::table_row(-valign => "top",
"$chgno","$action","$revno","$uname","$cname","$fname") ;
}
}
else {
if( $printed == 0 ) {
print
&P4CGI::start_table(""),
&P4CGI::table_row("-type","th",
"-align","left",
"Change","Action","Rev","User","Client","Filename") ;
$printed = 1 ;
}
print
&P4CGI::table_row(-valign => "top",
"$chgno","$action","$revno","$uname","$cname","$fname") ;
}
}
if( $printed == 0 ) {
print
&P4CGI::table_row(-valign => "top",
"None.") ;
}
# End the table
print
"",
&P4CGI::end_table() ;
# End the page
print
"",
&P4CGI::end_page() ;