#!/usr/bin/perl -w
# -*- perl -*-
use P4CGI ;
use strict ;
#
#################################################################
# CONFIGURATION INFORMATION
# All config info should be in P4CGI.pm
#
#################################################################
#
# List changes by user and group
#
#################################################################
my $FSPC = &P4CGI::cgi()->param("FSPC") ;
$FSPC = "//..." unless defined $FSPC ;
my $COMPLETE= &P4CGI::cgi()->param("COMPLETE") ;
my @options ;
unless(defined $COMPLETE) {
push @options,&P4CGI::buttonCell($ENV{SCRIPT_NAME},
"Include old users in list",
"COMPLETE=Yes",
"FSPC=$FSPC",
"Include old users") ;
} ;
print &P4CGI::start_page("View changes by<br>User(s) and Group(s)",@options) ;
# Get users
my @users ;
&P4CGI::p4call(\@users, "users" );
my @listOfUsers = sort { uc($a) cmp uc ($b) } map { /^(\S+).*> \((.+)\) .*$/ ; $1 ; } @users ;
my %userCvt = map { /^(\S+).*> \((.+)\) .*$/ ; ($1,"$1 - $2") ; } @users ;
if(defined $COMPLETE) {
my %allUsers ;
local *P ;
&P4CGI::p4call(*P,"changes $FSPC") ;
while(<P>) {
/.*by (\S+)@/ ;
if(exists $allUsers{$1}) { $allUsers{$1} += 1 ; }
else { $allUsers{$1} = 1 ; }
} ;
foreach (keys %allUsers) {
if(!exists $userCvt{$_}) {
$userCvt{$_} = "Old user: $_ ($allUsers{$_} changes)" ;
push @listOfUsers,$_ ;
} else {
$userCvt{$_} .= " ($allUsers{$_} changes)" ;
}
} ;
}
# Get groups
my @listOfgroups ;
&P4CGI::p4call(\@listOfgroups, "groups" );
print "",
&P4CGI::start_table(" 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(undef,
undef,
{ -class => "Subtitle",
-text =>
join("\n",($desc,
&P4CGI::cgi()->startform(-action => $cgitarget,
-method => "GET"))),
}) ;
print
&P4CGI::table_row({ -text => $fields},
{ -width=>"1",
-text =>
join("\n",
(&P4CGI::cgi()->submit(-name => "ignore",
-value => "GO!"),
&P4CGI::cgi()->endform()))
}) ;
} ;
print "", &P4CGI::start_table("width=100% cellspacing=4") ;
my $ulistSize = @listOfUsers ;
$ulistSize= 15 if $ulistSize > 15 ;
my $glistSize = @listOfgroups ;
$glistSize= 15 if $glistSize > 15 ;
prSelection("changeList.cgi",
"Select users and groups",
join("\n",
&P4CGI::start_table(),
&P4CGI::table_row({-class=>"Prompt",
-text => "File spec:"},
&P4CGI::cgi()->textfield(-name => "FSPC",
-default => $FSPC,
-size => 50,
-maxlength => 256)
),
&P4CGI::table_row({-class=>"Prompt",
-text=>"User(s):"},
&P4CGI::cgi()->scrolling_list(-name => "USERS",
-values => \@listOfUsers,
-size => $ulistSize,
-multiple => 'true',
-labels => \%userCvt)
) ,
&P4CGI::table_row({-class=>"Prompt",
-text=>"Group(s):"},
&P4CGI::cgi()->scrolling_list(-name => "GROUPS",
-values => \@listOfgroups,
-size => $glistSize,
-multiple => 'true')
),
&P4CGI::end_table()),
"user_and_group") ;
print &P4CGI::end_table() ;
print "</tr></td>",&P4CGI::end_table() ;
print
&P4CGI::end_page() ;
#
# That's all folks
#