From d46a8eefee644579fe4c4b775468c1e4378dc8cb Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Mon, 19 May 2008 03:25:19 -0700 Subject: [PATCH] * Add html template directory * Move bug header after the log-only parsing * Switch to the Params::Validate version_url method --- cgi/bugreport.cgi | 332 +++++++++++++++++++++++----------------------- cgi/pkgreport.cgi | 6 +- 2 files changed, 166 insertions(+), 172 deletions(-) diff --git a/cgi/bugreport.cgi b/cgi/bugreport.cgi index abc8dbef..72b84eac 100755 --- a/cgi/bugreport.cgi +++ b/cgi/bugreport.cgi @@ -2,6 +2,7 @@ use warnings; use strict; + use POSIX qw(strftime tzset); use MIME::Parser; use MIME::Decoder; @@ -81,8 +82,7 @@ if (defined $ENV{REQUEST_METHOD} and $ENV{REQUEST_METHOD} eq 'HEAD' and not defi exit 0; } -sub display_entity ($$$$\$\@); -sub display_entity ($$$$\$\@) { +sub display_entity { my $entity = shift; my $ref = shift; my $top = shift; @@ -192,173 +192,6 @@ sub display_entity ($$$$\$\@) { } } -my %maintainer = %{getmaintainers()}; -my %pkgsrc = %{getpkgsrc()}; - -my $indexentry; -my $showseverity; - -my $tpack; -my $tmain; - -my $dtime = strftime "%a, %e %b %Y %T UTC", gmtime; -$tail_html = $gHTMLTail; -$tail_html =~ s/SUBSTITUTE_DTIME/$dtime/; - -my %status = %{get_bug_status(bug=>$ref)}; -unless (%status) { - print < - -$short - $gProject $gBug report logs - -

$gProject $gBug report logs - $short

-

There is no record of $gBug $short. -Try the search page instead.

-$tail_html -EOF - exit 0; -} - -$|=1; - -$tpack = lc $status{'package'}; -my @tpacks = splitpackages($tpack); - -if ($status{severity} eq 'normal') { - $showseverity = ''; -} elsif (isstrongseverity($status{severity})) { - $showseverity = "Severity: $status{severity};\n"; -} else { - $showseverity = "Severity: $status{severity};\n"; -} - -if (@{$status{found_versions}} or @{$status{fixed_versions}}) { - $indexentry.= q(
version graph
}; -} - - -$indexentry .= "
\n"; -$indexentry .= htmlize_packagelinks($status{package}, 0) . ";\n"; - -foreach my $pkg (@tpacks) { - my $tmaint = defined($maintainer{$pkg}) ? $maintainer{$pkg} : '(unknown)'; - my $tsrc = defined($pkgsrc{$pkg}) ? $pkgsrc{$pkg} : '(unknown)'; - - $indexentry .= - htmlize_maintlinks(sub { $_[0] == 1 ? "Maintainer for $pkg is\n" - : "Maintainers for $pkg are\n" }, - $tmaint); - $indexentry .= ";\nSource for $pkg is\n". - '$tsrc" if ($tsrc ne "(unknown)"); - $indexentry .= ".\n"; -} - -$indexentry .= "
"; -$indexentry .= htmlize_addresslinks("Reported by: ", \&submitterurl, - $status{originator}) . ";\n"; -$indexentry .= sprintf "Date: %s.\n", - (strftime "%a, %e %b %Y %T UTC", localtime($status{date})); - -$indexentry .= "
Owned by: " . html_escape($status{owner}) . ".\n" - if length $status{owner}; - -$indexentry .= "
\n"; - -my @descstates; - -$indexentry .= "

$showseverity"; -$indexentry .= sprintf "Tags: %s;\n", - html_escape(join(", ", sort(split(/\s+/, $status{tags})))) - if length($status{tags}); -$indexentry .= "
" if (length($showseverity) or length($status{tags})); - -my @merged= split(/ /,$status{mergedwith}); -if (@merged) { - my $descmerged = 'Merged with '; - my $mseparator = ''; - for my $m (@merged) { - $descmerged .= $mseparator."#$m"; - $mseparator= ",\n"; - } - push @descstates, $descmerged; -} - -if (@{$status{found_versions}}) { - my $foundtext = 'Found in '; - $foundtext .= (@{$status{found_versions}} == 1) ? 'version ' : 'versions '; - $foundtext .= join ', ', map html_escape($_), @{$status{found_versions}}; - push @descstates, $foundtext; -} -if (@{$status{fixed_versions}}) { - my $fixedtext = 'Fixed in '; - $fixedtext .= (@{$status{fixed_versions}} == 1) ? 'version ' : 'versions '; - $fixedtext .= join ', ', map html_escape($_), @{$status{fixed_versions}}; - if (length($status{done})) { - $fixedtext .= ' by ' . html_escape(decode_rfc1522($status{done})); - } - push @descstates, $fixedtext; -} - -if (@{$status{found_versions}} or @{$status{fixed_versions}}) { - push @descstates, 'Version Graph}; -} - -if (length($status{done})) { - push @descstates, "Done: ".html_escape(decode_rfc1522($status{done})); -} - -if (length($status{forwarded})) { - my $forward_link = html_escape($status{forwarded}); - $forward_link =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; - push @descstates, "Forwarded to $forward_link"; -} - - -my @blockedby= split(/ /, $status{blockedby}); -if (@blockedby && $status{"pending"} ne 'fixed' && ! length($status{done})) { - for my $b (@blockedby) { - my %s = %{get_bug_status($b)}; - next if $s{"pending"} eq 'fixed' || length $s{done}; - push @descstates, "Fix blocked by #$b: ".html_escape($s{subject}); - } -} - -my @blocks= split(/ /, $status{blocks}); -if (@blocks && $status{"pending"} ne 'fixed' && ! length($status{done})) { - for my $b (@blocks) { - my %s = %{get_bug_status($b)}; - next if $s{"pending"} eq 'fixed' || length $s{done}; - push @descstates, "Blocking fix for #$b: ".html_escape($s{subject}); - } -} - -if ($buglog !~ m#^\Q$gSpoolDir/db#) { - push @descstates, "Bug is archived. No further changes may be made"; -} - -$indexentry .= join(";\n
", @descstates) . ".\n" if @descstates; -$indexentry .= "

\n"; - -my $descriptivehead = $indexentry; - my $buglogfh; if ($buglog =~ m/\.gz$/) { my $oldpath = $ENV{'PATH'}; @@ -586,6 +419,167 @@ else { $log = join("\n",@log); +my %maintainer = %{getmaintainers()}; +my %pkgsrc = %{getpkgsrc()}; + +my $indexentry; +my $showseverity; + +my $tpack; +my $tmain; + +my $dtime = strftime "%a, %e %b %Y %T UTC", gmtime; +$tail_html = $gHTMLTail; +$tail_html =~ s/SUBSTITUTE_DTIME/$dtime/; + +my %status = %{get_bug_status(bug=>$ref)}; +unless (%status) { + print "Content-Type: text/html; charset=utf-8\n\n"; + print fill_in_template(template=>'cgi/no_such_bug', + variables => {modify_time => $dtime, + bug_num => $ref, + }, + ) + exit 0; +} + +$|=1; + +$tpack = lc $status{'package'}; +my @tpacks = splitpackages($tpack); + +if ($status{severity} eq 'normal') { + $showseverity = ''; +} elsif (isstrongseverity($status{severity})) { + $showseverity = "Severity: $status{severity};\n"; +} else { + $showseverity = "Severity: $status{severity};\n"; +} + +if (@{$status{found_versions}} or @{$status{fixed_versions}}) { + $indexentry.= q(
version graph
}; +} + + +$indexentry .= "
\n"; +$indexentry .= htmlize_packagelinks($status{package}, 0) . ";\n"; + +foreach my $pkg (@tpacks) { + my $tmaint = defined($maintainer{$pkg}) ? $maintainer{$pkg} : '(unknown)'; + my $tsrc = defined($pkgsrc{$pkg}) ? $pkgsrc{$pkg} : '(unknown)'; + + $indexentry .= + htmlize_maintlinks(sub { $_[0] == 1 ? "Maintainer for $pkg is\n" + : "Maintainers for $pkg are\n" }, + $tmaint); + $indexentry .= ";\nSource for $pkg is\n". + '$tsrc" if ($tsrc ne "(unknown)"); + $indexentry .= ".\n"; +} + +$indexentry .= "
"; +$indexentry .= htmlize_addresslinks("Reported by: ", \&submitterurl, + $status{originator}) . ";\n"; +$indexentry .= sprintf "Date: %s.\n", + (strftime "%a, %e %b %Y %T UTC", localtime($status{date})); + +$indexentry .= "
Owned by: " . html_escape($status{owner}) . ".\n" + if length $status{owner}; + +$indexentry .= "
\n"; + +my @descstates; + +$indexentry .= "

$showseverity"; +$indexentry .= sprintf "Tags: %s;\n", + html_escape(join(", ", sort(split(/\s+/, $status{tags})))) + if length($status{tags}); +$indexentry .= "
" if (length($showseverity) or length($status{tags})); + +my @merged= split(/ /,$status{mergedwith}); +if (@merged) { + my $descmerged = 'Merged with '; + my $mseparator = ''; + for my $m (@merged) { + $descmerged .= $mseparator."#$m"; + $mseparator= ",\n"; + } + push @descstates, $descmerged; +} + +if (@{$status{found_versions}}) { + my $foundtext = 'Found in '; + $foundtext .= (@{$status{found_versions}} == 1) ? 'version ' : 'versions '; + $foundtext .= join ', ', map html_escape($_), @{$status{found_versions}}; + push @descstates, $foundtext; +} +if (@{$status{fixed_versions}}) { + my $fixedtext = 'Fixed in '; + $fixedtext .= (@{$status{fixed_versions}} == 1) ? 'version ' : 'versions '; + $fixedtext .= join ', ', map html_escape($_), @{$status{fixed_versions}}; + if (length($status{done})) { + $fixedtext .= ' by ' . html_escape(decode_rfc1522($status{done})); + } + push @descstates, $fixedtext; +} + +if (@{$status{found_versions}} or @{$status{fixed_versions}}) { + push @descstates, 'Version Graph}; +} + +if (length($status{done})) { + push @descstates, "Done: ".html_escape(decode_rfc1522($status{done})); +} + +if (length($status{forwarded})) { + my $forward_link = html_escape($status{forwarded}); + $forward_link =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; + push @descstates, "Forwarded to $forward_link"; +} + + +my @blockedby= split(/ /, $status{blockedby}); +if (@blockedby && $status{"pending"} ne 'fixed' && ! length($status{done})) { + for my $b (@blockedby) { + my %s = %{get_bug_status($b)}; + next if $s{"pending"} eq 'fixed' || length $s{done}; + push @descstates, "Fix blocked by #$b: ".html_escape($s{subject}); + } +} + +my @blocks= split(/ /, $status{blocks}); +if (@blocks && $status{"pending"} ne 'fixed' && ! length($status{done})) { + for my $b (@blocks) { + my %s = %{get_bug_status($b)}; + next if $s{"pending"} eq 'fixed' || length $s{done}; + push @descstates, "Blocking fix for #$b: ".html_escape($s{subject}); + } +} + +if ($buglog !~ m#^\Q$gSpoolDir/db#) { + push @descstates, "Bug is archived. No further changes may be made"; +} + +$indexentry .= join(";\n
", @descstates) . ".\n" if @descstates; +$indexentry .= "

\n"; + +my $descriptivehead = $indexentry; + print "Content-Type: text/html; charset=utf-8\n"; my @stat = stat $buglog; diff --git a/cgi/pkgreport.cgi b/cgi/pkgreport.cgi index c61bc01a..a841b208 100755 --- a/cgi/pkgreport.cgi +++ b/cgi/pkgreport.cgi @@ -654,9 +654,9 @@ sub pkg_htmlindexentrystatus { $showversions .= join ', ', map {s{/}{ }; html_escape($_)} @fixed; } $result .= ' ($showversions)} if length $showversions; $result .= ";\n"; -- 2.39.5