#!/usr/bin/perl -w # -*- perl -*- use P4CGI ; use strict ; # ################################################################# # CONFIGURATION INFORMATION # All config info should be in P4CGI.pm # ################################################################# # # View a branch # ################################################################# ### ### Get branch name ### my $branch = &P4CGI::cgi()->param("BRANCH") ; &P4CGI::bail("No branch specified") unless defined $branch ; $branch = &P4CGI::htmlEncode($branch) ; ### ### Get info about branch ### my %values ; my @fields = &P4CGI::p4readform("branch -o '$branch'",\%values) ; # Get real user names... my %userCvt ; &P4CGI::p4user2name(\%userCvt); # Fix owner field if (exists $values{"Owner"}) { my $u = $values{"Owner"} ; if(exists $userCvt{$u}) { $values{"Owner"} = &P4CGI::ahref(-url=>"userView.cgi", "USER=$u", "HELP=View user info", "$u") . " (" . $userCvt{$u} . ")" ; } else { $values{"Owner"} = "$u (Unknown user)" ; } } # Fix description field if(exists $values{"Description"}) { $values{"Description"} = &P4CGI::formatDescription($values{"Description"}); } # Fix up view info my $viewFrom =""; my $viewTo =""; my $allfrom =""; my $allto =""; foreach (split("\n",$values{"View"})) { /^\s*\/\/(.+)\s+\/\/(.+)/ ; my ($from,$to) = ($1,$2) ; $allfrom .= "//$from" ; $allto .= "//$to" ; my @from = split /\//,$from ; my @to = split /\//,$to ; my $common = "//" ; while(@from != 0 and @to != 0 and ($from[0] eq $to[0])) { $common .= shift @from ; $common .= "/" ; shift @to ; } my $tmp = join("/",@from) ; $from = $common . &P4CGI::ahref(-url=>"depotTreeBrowser.cgi", "HELP=Browse $common"."$tmp", "FSPC=$common$tmp", "$tmp") ; $tmp = join("/",@to) ; $to = $common . &P4CGI::ahref(-url=>"depotTreeBrowser.cgi", "HELP=Browse $common"."$tmp", "FSPC=$common$tmp", "$tmp") ; if (length($viewFrom) > 0) { $viewFrom .= "<br>" ; $viewTo .= "<br>" ; } $viewFrom .= "<tt>$from </tt>" ; $viewTo .= "<tt>$to</tt>" ; } ; $allto =~ s/^\+// ; my @frb ; my @tob ; push @tob,&P4CGI::buttonCell("changeList.cgi", "List changes in branch destination", "FSPC=$allto", "Changes") ; push @frb,&P4CGI::buttonCell("changeList.cgi", "List changes in branch source", "FSPC=$allfrom", "Changes") ; push @tob,&P4CGI::buttonCell("fileOpen.cgi", "List open files in branch destination", "FSPC=$allto", "Open files") ; push @frb,&P4CGI::buttonCell("fileOpen.cgi", "List open files in branch source", "FSPC=$allfrom", "Open files") ; push @tob,&P4CGI::buttonCell("findFiles.cgi", "Fild files in branch destination", "FSPC=$allto", "Find files") ; push @frb,&P4CGI::buttonCell("findFiles.cgi", "Find files in branch source", "FSPC=$allfrom", "Find files") ; my @labels ; &P4CGI::p4call(*P4, "labels" ); while(<P4>) { chomp ; /^Label\s+(\S+)\s/ and do { push @labels,$1 ; } ; } close P4 ; my $chnotinlabel= join("\n",(&P4CGI::cgi()->startform(-action => "changeList.cgi", -method => "GET"), &P4CGI::cgi()->hidden(-name=>"FSPC", -value=>"$allto"), &P4CGI::cgi()->hidden(-name=>"DP", -value=>&P4CGI::CURR_DEPOT_NO()), "View changes not in label:<br>", &P4CGI::cgi()->popup_menu(-name => "EXLABEL", -value => \@labels), &P4CGI::cgi()->submit(-name => "Go", -value => "Go"), "</font>", &P4CGI::cgi()->endform())) ; $values{"View"} = join("\n", (&P4CGI::start_table("border=0 cellspacing=0 cellpadding=0"), &P4CGI::table_row($viewFrom,$viewTo), &P4CGI::table_row({ -text => "<hr>In source:".&P4CGI::buttonVMenuTable(@frb), -valign=>"Top" }, { -text => "<hr>In destination:". &P4CGI::buttonVMenuTable(@tob). $chnotinlabel, -valign=>"Top" } ), &P4CGI::end_table())) ; ### ### Print html ### print &P4CGI::start_page("Branch \"$branch\"") ; print "<br>", &P4CGI::start_framedTable(""), &P4CGI::start_table("") ; my $f ; foreach $f (@fields) { my %xopt ; $xopt{"class"} = "Description" if $f eq "Description" ; print &P4CGI::table_row({-class => "Prompt", -text => "$f"}, {%xopt, -text => $values{$f}}) ; } ; print &P4CGI::end_table(), "<hr>"; print &P4CGI::end_framedTable() ; print &P4CGI::end_page() ; # # That's all folks #
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#9 | 4998 | Fredric Fredricson |
P4DB: cleaned up some code. Added p4users(), p4client() and p4user2name() to P4CGI.pm and modified all cgi:s to use these, |
||
#8 | 4306 | Fredric Fredricson |
P4DB: Hardened P4DB against malicious parameters (cross site scripting), performed some cleanup and increased version to 3.1.1. |
||
#7 | 4299 | Fredric Fredricson | P4DB: Bug in branch view fixed | ||
#6 | 4237 | Fredric Fredricson | P4DB: Maybe the final submit for P4DB 3.1.0 | ||
#5 | 4152 | Fredric Fredricson | P4DB: Some more work on tha way to version 3.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 |