- #!/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 @legend ;
-
- unless(defined $COMPLETE) {
- push @legend,&P4CGI::ahref("COMPLETE=Yes",
- "FSPC=$FSPC",
- "Include old users in list") ;
- } ;
-
-
- my $legend = "" ;
- $legend = &P4CGI::ul_list(@legend) if @legend > 0 ;
-
- print "", &P4CGI::start_page("View changes by<br>User(s) and Group(s)",$legend) ;
-
-
-
-
-
- # 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,$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("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",
- -valign=>"top",
- -text => $fields},
- {-align=>"left",
- -text => " "},
- {-align=>"left",
- -valign=>"bottom",
- -width=>"1",
- -text => &P4CGI::cgi()->submit(-name => "ignore",
- -value => "GO!")
- },
- { -valign=>"bottom",
- -text => &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(
- "File spec:",
- "<font face=fixed>" .
- &P4CGI::cgi()->textfield(-name => "FSPC",
- -default => $FSPC,
- -size => 50,
- -maxlength => 256) .
- "</font>"),
- &P4CGI::table_row(-valign=>"top",
- "User(s):",
- "<font face=fixed>" .
- &P4CGI::cgi()->scrolling_list(-name => "USERS",
- -values => \@listOfUsers,
- -size => $ulistSize,
- -multiple => 'true',
- -labels => \%userCvt) .
- "</font>"),
- &P4CGI::table_row(-valign=>"top",
- "Group(s):<font face=fixed>",
- "<font face=fixed>" .
- &P4CGI::cgi()->scrolling_list(-name => "GROUPS",
- -values => \@listOfgroups,
- -size => $glistSize,
- -multiple => 'true') .
- "</font>"),
- &P4CGI::end_table()),
- "user_and_group") ;
-
- print &P4CGI::end_table() ;
-
-
- print "</tr></td>",&P4CGI::end_table() ;
-
- print
- &P4CGI::end_page() ;
-
- #
- # That's all folks
- #
-
-
-
-