Commit 03ad2ba8 authored by gerv%gerv.net's avatar gerv%gerv.net

Bug 124937 - templatise show_activity.cgi. Patch by me, r=myk, bbaetz.

parent 8218d4fe
......@@ -1254,8 +1254,7 @@ sub CheckIfVotedConfirmed {
}
sub DumpBugActivity {
sub GetBugActivity {
my ($id, $starttime) = (@_);
my $datepart = "";
......@@ -1264,6 +1263,7 @@ sub DumpBugActivity {
if (defined $starttime) {
$datepart = "and bugs_activity.bug_when > " . SqlQuote($starttime);
}
my $query = "
SELECT IFNULL(fielddefs.description, bugs_activity.fieldid),
bugs_activity.attach_id,
......@@ -1279,46 +1279,54 @@ sub DumpBugActivity {
SendSQL($query);
# Instead of outright printing this, we are going to store it in a $html
# variable and print it and the end. This is so we can explain ? (if nesc.)
# at the top of the activity table rather than the botom.
my $html = "";
$html .= "<table border cellpadding=4>\n";
$html .= "<tr>\n";
$html .= " <th>Who</th><th>What</th><th>Removed</th><th>Added</th><th>When</th>\n";
$html .= "</tr>\n";
my @row;
my @operations;
my $operation = {};
my $changes = [];
my $incomplete_data = 0;
while (@row = FetchSQLData()) {
my ($field,$attachid,$when,$removed,$added,$who) = (@row);
$field =~ s/^Attachment/<a href="attachment.cgi?id=$attachid&amp;action=view">Attachment #$attachid<\/a>/
if $attachid;
$removed = html_quote($removed);
$added = html_quote($added);
$removed = "&nbsp;" if $removed eq "";
$added = "&nbsp;" if $added eq "";
if ($added =~ /^\?/ || $removed =~ /^\?/) {
$incomplete_data = 1;
}
$html .= "<tr>\n";
$html .= "<td>$who</td>\n";
$html .= "<td>$field</td>\n";
$html .= "<td>$removed</td>\n";
$html .= "<td>$added</td>\n";
$html .= "<td>$when</td>\n";
$html .= "</tr>\n";
while (my ($field, $attachid, $when, $removed, $added, $who)
= FetchSQLData())
{
my %change;
# This gets replaced with a hyperlink in the template.
$field =~ s/^Attachment// if $attachid;
# Check for the results of an old Bugzilla data corruption bug
$incomplete_data = 1 if ($added =~ /^\?/ || $removed =~ /^\?/);
# An operation, done by 'who' at time 'when', has a number of
# 'changes' associated with it.
# If this is the start of a new operation, store the data from the
# previous one, and set up the new one.
if ($operation->{'who'}
&& ($who ne $operation->{'who'}
|| $when ne $operation->{'when'}))
{
$operation->{'changes'} = $changes;
push (@operations, $operation);
# Create new empty anonymous data structures.
$operation = {};
$changes = [];
}
$operation->{'who'} = $who;
$operation->{'when'} = $when;
$change{'field'} = $field;
$change{'attachid'} = $attachid;
$change{'removed'} = $removed;
$change{'added'} = $added;
push (@$changes, \%change);
}
$html .= "</table>\n";
if ($incomplete_data) {
print "There was a bug in older versions of Bugzilla which caused activity data \n";
print "to be lost if there was a large number of cc's or dependencies. That \n";
print "has been fixed, however, there was some data already lost on this bug \n";
print "that could not be regenerated. The changes that the script could not \n";
print "reliably determine are prefixed by '?'\n";
print "<p>\n";
if ($operation->{'who'}) {
$operation->{'changes'} = $changes;
push (@operations, $operation);
}
print $html;
return(\@operations, $incomplete_data);
}
......
......@@ -961,14 +961,21 @@ Someone else has made changes to this bug at the same time you were trying to.
The changes made were:
<p>
";
DumpBugActivity($id, $::FORM{'delta_ts'});
use vars qw($template $vars);
($vars->{'operations'}, $vars->{'incomplete_data'}) =
GetBugActivity($::FORM{'id'}, $::FORM{'delta_ts'});
$template->process("show/activity.html.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
my $comments = GetComments($id);
my $longchanged = 0;
if (scalar(@$comments) > $::FORM{'longdesclength'}) {
$longchanged = 1;
print "<P>Added text to the long description:<blockquote>";
use vars qw($template $vars);
print "<P>Added comments:<blockquote>";
$vars->{'start_at'} = $::FORM{'longdesclength'};
$vars->{'comments'} = $comments;
$vars->{'quoteUrls'} = \&quoteUrls;
......@@ -995,7 +1002,7 @@ The changes made were:
print qq{<input type=submit value="Submit my changes anyway">\n};
print " This will cause all of the above changes to be overwritten";
if ($longchanged) {
print ", except for the changes to the description";
print ", except for the added comments";
}
print qq{.</form>\n<li><a href="show_bug.cgi?id=$id">Throw away my changes, and go revisit bug $id</a></ul>\n};
PutFooter();
......
......@@ -20,19 +20,21 @@
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Myk Melez <myk@mozilla.org>
# Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
use lib qw(.);
use vars qw ($template $vars);
require "CGI.pl";
ConnectToDatabase();
######################################################################
###############################################################################
# Begin Data/Security Validation
######################################################################
###############################################################################
# Check whether or not the user is currently logged in. This function
# sets the value of $::usergroupset, the binary number that records
......@@ -44,17 +46,18 @@ quietly_check_login();
# bug that the user is authorized to access.
ValidateBugID($::FORM{'id'});
######################################################################
###############################################################################
# End Data/Security Validation
######################################################################
###############################################################################
print "Content-type: text/html\n\n";
($vars->{'operations'}, $vars->{'incomplete_data'}) =
GetBugActivity($::FORM{'id'});
PutHeader("Changes made to bug $::FORM{'id'}", "Activity log",
"Bug $::FORM{'id'}");
$vars->{'bug_id'} = $::FORM{'id'};
DumpBugActivity($::FORM{'id'});
print "Content-type: text/html\n\n";
print qq|<hr><a href="show_bug.cgi?id=$::FORM{'id'}">Back to bug $::FORM{'id'}</a>\n|;
$template->process("show/bug-activity.html.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
PutFooter();
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Gervase Markham <gerv@gerv.net>
#%]
[%# INTERFACE:
# operations: array of hashes. May be empty. Each has has three members:
# who: string. who performed the operation
# when: string. when they performed it
# changes: hash. Details of what they changed. This hash has three
# compulsory and one optional member:
# field: string. The name of the field
# removed: string. What was removed from the field
# added: string. What was added to the field
# attach_id: integer. If the change was adding an attachment, its id.
# incomplete_data: boolean. True if some of the data is incomplete (because
# it was affected by an old Bugzilla bug.)
#%]
[% IF incomplete_data %]
<p>
There used to be a bug Bugzilla which caused activity data
to be lost if there was a large number of cc's or dependencies. That
has been fixed, however, there was some data already lost on this bug
that could not be regenerated. The changes that the script could not
reliably determine are prefixed by '?'.
</p>
[% END %]
[% IF operations.size > 0 %]
<table border cellpadding="4">
<tr>
<th>Who</th>
<th>When</th>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
[% FOREACH operation = operations %]
<tr>
<td rowspan="[% operation.changes.size %]" valign="top">
[% operation.who %]
</td>
<td rowspan="[% operation.changes.size %]" valign="top">
[% operation.when %]
</td>
[% FOREACH change = operation.changes %]
[% "<tr>" IF loop.index > 0 %]
<td>
[% IF change.attachid %]
<a href="attachment.cgi?id=[% change.attachid %]&action=view">
Attachment #[% change.attachid %]</a>
[% END %]
[% change.field %]
</td>
<td>
[% IF change.removed %]
[% change.removed FILTER html %]
[% ELSE %]
&nbsp;
[% END %]
</td>
<td>
[% IF change.added %]
[% change.added FILTER html %]
[% ELSE %]
&nbsp;
[% END %]
</td>
[% "</tr>" IF loop.index > 0 %]
[% END %]
</tr>
[% END %]
</table>
[% END %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Gervase Markham <gerv@gerv.net>
#%]
[%# INTERFACE:
# bug_id: integer. The bug ID.
#
# This template also needs to be called with the interface to the
# activity.html.tmpl template fulfilled.
#%]
[% INCLUDE global/header
title = "Changes made to bug $bug_id"
h1 = "Activity log"
h2 = "Bug <a href='show_bug.cgi?id=$bug_id'>$bug_id</a>"
%]
<br>
[% INCLUDE show/activity.html.tmpl %]
<p>
<a href="show_bug.cgi?id=[% bug_id %]">Back to bug [% bug_id %]</a>
</p>
[% INCLUDE global/footer %]
......@@ -20,7 +20,7 @@
[% DEFAULT start_at = 0 %]
[% count = 0 %]
[% FOREACH comment = bug.comments %]
[% FOREACH comment = comments %]
[% IF count >= start_at %]
[% PROCESS a_comment %]
[% END %]
......
......@@ -136,7 +136,8 @@
</tr>
</table>
[% PROCESS show/comments.tmpl %]
[% PROCESS show/comments.tmpl
comments = bug.comments %]
<hr>
[% END %]
......
......@@ -488,7 +488,9 @@
</table>
<hr>
[% PROCESS show/comments.tmpl %]
[% PROCESS show/comments.tmpl
comments = bug.comments
%]
<hr>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment