changeByUsers.cgi #2

  • //
  • guest/
  • fredric_fredricson/
  • P4DB/
  • main/
  • changeByUsers.cgi
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/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
#

# Change User Description Committed
#3 4152 Fredric Fredricson P4DB: Some more work on tha way to version 3.1....
#2 2875 Fredric Fredricson P4DB 3.0 first beta...
#1 1638 Fredric Fredricson P4DB: Added all (I think) files for P4DB