#!/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 #