#!/usr/bin/perl -w
# -*- perl -*-
use P4CGI ;
use strict ;
#
#################################################################
# CONFIGURATION INFORMATION
# All config info should be in P4CGI.pm
#
#################################################################
#
# View a p4 client
#
#################################################################
# Get parameter
my $client = P4CGI::cgi()->param("CLIENT") ;
unless(defined $client) {
&P4CGI::bail("No client specified!") ;
} ;
$client = &P4CGI::htmlEncode($client) ;
# Get list of users and full names
my %users ;
&P4CGI::p4user2name(\%users );
# Get client info
my %values ;
my @fields = &P4CGI::p4readform("client -o '$client'",\%values);
# Fix owner field
if(exists $users{$values{"Owner"}}) {
$values{"Owner"} = &P4CGI::ahref(-url => "userView.cgi" ,
"USER=$values{Owner}",
"HELP=View user info",
$values{"Owner"}) . " ($users{$values{Owner}})" ;
}
else {
$values{"Owner"} .= " <font color=red>No such user</font>" ;
} ;
# Fix up description
{
my @referenced ;
$values{"Description"} = &P4CGI::formatDescription($values{"Description"},
\@referenced) ;
}
# Fix Root
if(exists $values{"Root"}) {
$values{"Root"} = "<tt>$values{Root}</tt>" ;
} ;
# Fix Options
if(exists $values{"Options"}) {
$values{"Options"} = "<tt>$values{Options}</tt>" ;
} ;
# Fix view
{
my $view = &P4CGI::start_table("border=0 cellspacing=0 cellpadding=0") ;
foreach (split("\n",$values{"View"})) {
last if /^\s*$/ ;
my ($tmp,$lead1,$d,$lead2,$c) = split(/(\"?\/\/)/,$_) ;
$d = "$lead1$d" ;
$c = "$lead2$c" ;
$view .= &P4CGI::table_row("<tt>$d</tt>","<tt> $c</tt>") ;
} ;
$view .= &P4CGI::end_table() ;
$values{"View"} = $view ;
}
$| = 1 ;
print "",
&P4CGI::start_page("",
&P4CGI::buttonCell("changeList.cgi",
"List changes by client $client",
"CLIENT=$client",
"FSPC=//...",
"List changes")) ;
# Check that client exist
unless(exists $values{"Client"}) {
&P4CGI::signalError("Client $client does not exist") ;
}
print
&P4CGI::start_framedTable("Client $client"),
&P4CGI::start_table("") ;
my $f ;
foreach $f (@fields)
{
my %xopt ;
$xopt{"class"} = "Description" if $f eq "Description" ;
$xopt{"class"} = "Description" if $f eq "View" ;
print &P4CGI::table_row({-class => "Prompt",
-text => $f},
{%xopt,
-text => $values{$f}}) ;
} ;
my @openfiles ;
&P4CGI::p4call(*P4, "opened -a " . &P4CGI::REDIRECT_ERROR_TO_NULL_DEVICE() );
while(<P4>) {
chomp ;
/^(.+\#\d+) - (\S+) .* by (\S+)\@(\S+)/ and do {
my $f = $1 ;
my $u = $3 ;
my $r = $2 ;
my $c = $4 ;
if($c eq $client) {
$f =~ /(.*)\#(\d+)/ ;
if($r ne "add") {
$f = &P4CGI::ahref(-url => "fileLogView.cgi",
"FSPC=$1",
"REV=$2",
"HELP=View file log",
"$f") ;
}
$u = &P4CGI::ahref(-url => "userView.cgi",
"USER=$u",
"HELP=View user info",
"$u") ;
push @openfiles,&P4CGI::table_row({-class=>"ListC",
-text => $r},
{-class=>"List",
-text => $f},
{-class=>"ListC",
-text => $u}) ;
} ;
} ;
} ;
if(@openfiles > 0) {
print &P4CGI::table_row({-class => "Prompt",
-text => "Open files:"},
&P4CGI::start_table("").
&P4CGI::table_header("Action","File","User") .
join("\n",@openfiles) .
&P4CGI::end_table()) ;
} ;
print
&P4CGI::end_table(),
&P4CGI::end_framedTable(),
&P4CGI::end_page() ;
#
# That's all folks
#
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #8 | 4998 | Fredric Fredricson |
P4DB: cleaned up some code. Added p4users(), p4client() and p4user2name() to P4CGI.pm and modified all cgi:s to use these, |
||
| #7 | 4318 | Fredric Fredricson |
P4DB: Bug in client view. Could not handle spaces in directories in client map |
||
| #6 | 4313 | Fredric Fredricson |
P4DB: - Removed some error messages (that clobbers the error log for the web server) - Added a CSS file that works for people with color vision deficiency - Fixed minor bug in the scripts that creates the tarball and zip-file |
||
| #5 | 4306 | Fredric Fredricson |
P4DB: Hardened P4DB against malicious parameters (cross site scripting), performed some cleanup and increased version to 3.1.1. |
||
| #4 | 2942 | Fredric Fredricson | P4DB: Fixed bug: Can now handle spaces in label names etc.... | ||
| #3 | 2875 | Fredric Fredricson | P4DB 3.0 first beta... | ||
| #2 | 1920 | Fredric Fredricson |
P4DB: Mainly some user interface fixes: * Added a small arrow that points to selection in list of options * Added tooltip help * Added user prefereces to turn the above off (or on) * Some other user interface fixes And fixed a bug in jobList.cgi and some minor bugs in label and branch viewers. |
||
| #1 | 1638 | Fredric Fredricson | P4DB: Added all (I think) files for P4DB |