summaryrefslogtreecommitdiffstats
path: root/template
diff options
context:
space:
mode:
authorbugreport%peshkin.net <>2002-10-13 13:26:02 +0200
committerbugreport%peshkin.net <>2002-10-13 13:26:02 +0200
commitfd742d6fc8849328749866dbff2936d43abcc7d1 (patch)
tree1e4d7646a4589bcf44adceb452b38924286f7af1 /template
parentf61593bee73b37fc12caabbb2958b6515d688420 (diff)
downloadbugzilla-fd742d6fc8849328749866dbff2936d43abcc7d1.tar.gz
bugzilla-fd742d6fc8849328749866dbff2936d43abcc7d1.tar.xz
Bug 24789 [E|A|R] Add Estimated, Actual, Remaining Time Fields
patch by jeff.hedlund@matrixsi.com 2xr=joel,justdave
Diffstat (limited to 'template')
-rw-r--r--template/en/default/bug/activity/table.html.tmpl18
-rw-r--r--template/en/default/bug/comments.html.tmpl12
-rw-r--r--template/en/default/bug/create/create.html.tmpl14
-rw-r--r--template/en/default/bug/edit.html.tmpl79
-rw-r--r--template/en/default/bug/show-multiple.html.tmpl28
-rw-r--r--template/en/default/bug/time.html.tmpl48
-rw-r--r--template/en/default/global/user-error.html.tmpl23
-rw-r--r--template/en/default/list/edit-multiple.html.tmpl19
-rw-r--r--template/en/default/list/table.html.tmpl13
9 files changed, 246 insertions, 8 deletions
diff --git a/template/en/default/bug/activity/table.html.tmpl b/template/en/default/bug/activity/table.html.tmpl
index 43529bd23..45c8e4380 100644
--- a/template/en/default/bug/activity/table.html.tmpl
+++ b/template/en/default/bug/activity/table.html.tmpl
@@ -32,6 +32,8 @@
# incomplete_data: boolean. True if some of the data is incomplete (because
# it was affected by an old Bugzilla bug.)
#%]
+
+[% PROCESS bug/time.html.tmpl %]
[% IF incomplete_data %]
<p>
@@ -72,14 +74,26 @@
</td>
<td>
[% IF change.removed %]
- [% change.removed FILTER html %]
+ [% IF change.fieldname == 'estimated_time' ||
+ change.fieldname == 'remaining_time' ||
+ change.fieldname == 'work_time' %]
+ [% PROCESS formattimeunit time_unit=change.removed %]
+ [% ELSE %]
+ [% change.removed FILTER html %]
+ [% END %]
[% ELSE %]
&nbsp;
[% END %]
</td>
<td>
[% IF change.added %]
- [% change.added FILTER html %]
+ [% IF change.fieldname == 'estimated_time' ||
+ change.fieldname == 'remaining_time' ||
+ change.fieldname == 'work_time' %]
+ [% PROCESS formattimeunit time_unit=change.added %]
+ [% ELSE %]
+ [% change.added FILTER html %]
+ [% END %]
[% ELSE %]
&nbsp;
[% END %]
diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl
index 7a8ae73db..f5880a811 100644
--- a/template/en/default/bug/comments.html.tmpl
+++ b/template/en/default/bug/comments.html.tmpl
@@ -30,6 +30,7 @@
[% count = count + 1 %]
[% END %]
+[% PROCESS bug/time.html.tmpl %]
[%############################################################################%]
[%# Block for individual comments #%]
@@ -43,9 +44,11 @@
<i>------- Additional Comment
<a name="c[% count %]" href="#c[% count %]">#[% count %]</a> From
<a href="mailto:[% comment.email FILTER html %]">[% comment.name FILTER html %]</a>
- [%+ comment.time %] -------
+ [%+ comment.time %]
+ -------
</i>
[% END %]
+
[% IF mode == "edit" && isinsider %]
<i>
<input type=hidden name="oisprivate-[% count %]"
@@ -55,7 +58,12 @@
[% " checked=\"checked\"" IF comment.isprivate %]> Private
</i>
[% END %]
-
+ [% IF UserInGroup(Param('timetrackinggroup')) &&
+ (comment.work_time > 0 || comment.work_time < 0) %]
+ <br>
+ Additional hours worked:
+ [% PROCESS formattimeunit time_unit=comment.work_time %]
+ [% END %]
[%# Don't indent the <pre> block, since then the spaces are displayed in the
# generated HTML
#%]
diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl
index 066c11b63..354dd990c 100644
--- a/template/en/default/bug/create/create.html.tmpl
+++ b/template/en/default/bug/create/create.html.tmpl
@@ -155,6 +155,20 @@
<td colspan="3"></td>
</tr>
+[% IF UserInGroup(Param('timetrackinggroup')) %]
+ <tr>
+ <td align="right"><strong>Estimated Hours:</strong></td>
+ <td colspan="3">
+ <input name="estimated_time" size="6" maxlength="6" value="0.0"/>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="3"></td>
+ </tr>
+[% END %]
+
<tr>
<td align="right"><strong>URL:</strong></td>
<td colspan="3">
diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl
index 152852169..453b4aa65 100644
--- a/template/en/default/bug/edit.html.tmpl
+++ b/template/en/default/bug/edit.html.tmpl
@@ -32,6 +32,29 @@
[% END %]
[% PROCESS bug/navigate.html.tmpl %]
+[% PROCESS bug/time.html.tmpl %]
+
+<script type="text/javascript" language="JavaScript">
+<!--
+var fRemainingTime = [% bug.remaining_time %]; // holds the original value
+function adjustRemainingTime() {
+ // subtracts time spent from remaining time
+ var new_time;
+
+ new_time =
+ fRemainingTime - document.changeform.work_time.value;
+ // get upto 2 decimal places
+ document.changeform.remaining_time.value =
+ Math.round(new_time * 100)/100;
+}
+
+function updateRemainingTime() {
+ // if the remaining time is changed manually, update fRemainingTime
+ fRemainingTime = document.changeform.remaining_time.value;
+}
+
+//-->
+</script>
<hr>
@@ -264,6 +287,62 @@
</tr>
[% END %]
</table>
+
+ [% IF UserInGroup(Param('timetrackinggroup')) %]
+ <br>
+ <table cellpadding=0 cellspacing=0 border=1>
+ <tr>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ Orig. Est.
+ </th>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ Current Est.
+ </th>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ Hours Worked
+ </th>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ Hours Left
+ </th>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ %Complete
+ </th>
+ <th width="16.6%" align="center" bgcolor="#cccccc">
+ Gain
+ </th>
+ </tr>
+ <tr>
+ <td align="center">
+ <input name="estimated_time"
+ value="[% PROCESS formattimeunit
+ time_unit=bug.estimated_time %]"
+ size="6" maxlength="6">
+ </td>
+ <td align="center">
+ [% PROCESS formattimeunit
+ time_unit=(bug.actual_time + bug.remaining_time) %]
+ </td>
+ <td align="center">
+ [% PROCESS formattimeunit time_unit=bug.actual_time %] +
+ <input name="work_time" value="0" size="3" maxlength="6"
+ onChange="adjustRemainingTime();">
+ </td>
+ <td align="center">
+ <input name="remaining_time"
+ value="[% PROCESS formattimeunit
+ time_unit=bug.remaining_time %]"
+ size="6" maxlength="6" onChange="updateRemainingTime();">
+ </td>
+ <td align="center">
+ [% PROCESS calculatepercentage act=bug.actual_time
+ rem=bug.remaining_time %]
+ </td>
+ <td align="center">
+ [% PROCESS formattimeunit time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %]
+ </td>
+ </tr>
+ </table>
+ [% END %]
[%# *** Attachments *** %]
diff --git a/template/en/default/bug/show-multiple.html.tmpl b/template/en/default/bug/show-multiple.html.tmpl
index 0c089e9c5..d7e2fcf09 100644
--- a/template/en/default/bug/show-multiple.html.tmpl
+++ b/template/en/default/bug/show-multiple.html.tmpl
@@ -24,6 +24,7 @@
title = "Full Text Bug Listing"
style_urls = [ "css/show_multiple.css" ]
%]
+[% PROCESS bug/time.html.tmpl %]
[% IF bugs.first %]
[% FOREACH bug = bugs %]
[% PROCESS bug_display %]
@@ -34,6 +35,7 @@
</p>
[% END %]
+
[% PROCESS global/footer.html.tmpl %]
@@ -130,6 +132,32 @@
</tr>
[% END %]
+ [% IF UserInGroup(Param("timetrackinggroup")) %]
+ <tr>
+ <td colspan="4">
+ <b>Orig. Est.:</b>&nbsp;
+ [% PROCESS formattimeunit time_unit=bug.estimated_time %]
+ &nbsp;
+ <b>Current Est.:</b>&nbsp;
+ [% PROCESS formattimeunit
+ time_unit=(bug.remaining_time + bug.actual_time) %]
+ &nbsp;
+ <b>Hours Worked:</b>&nbsp;
+ [% PROCESS formattimeunit time_unit=bug.actual_time %]&nbsp;
+ <b>Hours Left:</b>&nbsp;
+ [% PROCESS formattimeunit time_unit=bug.remaining_time %]
+ &nbsp;
+ <b>Percentage Complete:</b>&nbsp;
+ [% PROCESS calculatepercentage act=bug.actual_time
+ rem=bug.remaining_time %]&nbsp;
+ <b>Gain</b>&nbsp;
+ [% PROCESS formattimeunit
+ time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %]
+ &nbsp;
+ </td>
+ </tr>
+ [% END %]
+
<tr>
<td colspan="4">
<b>Description:</b>
diff --git a/template/en/default/bug/time.html.tmpl b/template/en/default/bug/time.html.tmpl
new file mode 100644
index 000000000..af6966930
--- /dev/null
+++ b/template/en/default/bug/time.html.tmpl
@@ -0,0 +1,48 @@
+<!-- 1.0@bugzilla.org -->
+[%# 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): Jeff Hedlund <jeff.hedlund@matrixsi.com>
+ #
+ #%]
+
+[% BLOCK formattimeunit %]
+ [%# INTERFACE:
+ # time_unit: the number converting, converts to 2 decimal places
+ # unless the last character is a 0, then it truncates to
+ # 1 decimal place
+ #%]
+ [% time_unit = time_unit FILTER format('%.2f') %]
+ [% IF time_unit.match('0\Z') %]
+ [% time_unit FILTER format('%.1f') %]
+ [% ELSE %]
+ [% time_unit FILTER format('%.2f') %]
+ [% END %]
+[% END %]
+
+[% BLOCK calculatepercentage %]
+ [%# INTERFACE:
+ # act: actual time
+ # rem: remaining time
+ # %]
+ [% IF (act + rem) > 0 %]
+ [% (act / (act + rem)) * 100
+ FILTER format("%d") %]
+ [% ELSE %]
+ 0
+ [% END %]
+[% END %]
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index f487067dd..29cb3c901 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -330,8 +330,16 @@
[% ELSIF error == "need_component" %]
[% title = "Component Required" %]
- You must specify a component to help determine the new owner of these bugs.
-
+ You must specify a component to help determine the new owner of these bugs.
+
+ [% ELSIF error == "need_numeric_value" %]
+ [% title = "Numeric Value Required" %]
+ Hours requires a numeric value.
+
+ [% ELSIF error == "need_positive_number" %]
+ [% title = "Positive Number Required" %]
+ [% field %] requires a positive number.
+
[% ELSIF error == "need_product" %]
[% title = "Product Required" %]
You must specify a product to help determine the new owner of these bugs.
@@ -445,7 +453,7 @@
[% ELSIF error == "report_access_denied" %]
[% title = "Access Denied" %]
You do not have the permissions necessary to view reports for this product.
-
+
[% ELSIF error == "requestee_too_short" %]
[% title = "Requestee Name Too Short" %]
One or two characters match too many users, so please enter at least
@@ -470,6 +478,11 @@
[% ELSIF error == "require_summary" %]
[% title = "Summary Needed" %]
You must enter a summary for this bug.
+
+ [% ELSIF error == "resolving_remaining_time" %]
+ [% title = "Trying to Resolve with Hours Remaining" %]
+ You cannot resolve a bug with hours still remaining. Set
+ Remaining Hours to zero if you want to resolve the bug.
[% ELSIF error == "sanity_check_access_denied" %]
[% title = "Access Denied" %]
@@ -521,6 +534,10 @@
[% title = "Wrong Token" %]
That token cannot be used to change your email address.
+ [% ELSIF error == "value_out_of_range" %]
+ [% title = "Value Out Of Range" %]
+ Value is out of range for field [% variable %].
+
[% ELSIF error == "z_axis_defined_with_no_x_axis" %]
[% title = "Nonsensical Options" %]
You've defined a field for multiple tables without having defined
diff --git a/template/en/default/list/edit-multiple.html.tmpl b/template/en/default/list/edit-multiple.html.tmpl
index 4121d0292..4d769c5fa 100644
--- a/template/en/default/list/edit-multiple.html.tmpl
+++ b/template/en/default/list/edit-multiple.html.tmpl
@@ -116,6 +116,25 @@
</tr>
+ [% IF UserInGroup(Param("timetrackinggroup")) %]
+ <tr>
+ <th><label for="estimated_time">Estimated Hours:</label></th>
+ <td>
+ <input id="estimated_time"
+ name="estimated_time"
+ value="[% dontchange FILTER html %]"
+ size="6">
+ </td>
+ <th><label for="remaining_time">Remaining Hours:</label></th>
+ <td>
+ <input id="remaining_time"
+ name="remaining_time"
+ value="[% dontchange FILTER html %]"
+ size="6">
+ </td>
+ </tr>
+ [% END %]
+
[% IF Param("useqacontact") %]
<tr>
<th><label for="qa_contact">QA Contact:</label></th>
diff --git a/template/en/default/list/table.html.tmpl b/template/en/default/list/table.html.tmpl
index 6d5ee0d6c..eb1308961 100644
--- a/template/en/default/list/table.html.tmpl
+++ b/template/en/default/list/table.html.tmpl
@@ -49,11 +49,14 @@
"version" => { maxlength => 5 , title => "Vers" } ,
"os" => { maxlength => 4 } ,
"target_milestone" => { title => "TargetM" } ,
+ "percentage_complete" => { format_value => "%d %%" } ,
}
%]
[% qorder = order FILTER url_quote IF order %]
+[% PROCESS bug/time.html.tmpl %]
+
[%############################################################################%]
[%# Table Header #%]
[%############################################################################%]
@@ -132,7 +135,15 @@
[% FOREACH column = displaycolumns %]
<td>
[% '<nobr>' IF NOT abbrev.$column.wrap %]
- [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%]
+ [% IF abbrev.$column.format_value %]
+ [%- bug.$column FILTER format(abbrev.$column.format_value) FILTER html -%]
+ [% ELSIF column == 'actual_time' ||
+ column == 'remaining_time' ||
+ column == 'estimated_time' %]
+ [% PROCESS formattimeunit time_unit=bug.$column %]
+ [% ELSE %]
+ [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%]
+ [% END %]
[%- '</nobr>' IF NOT abbrev.$column.wrap %]
</td>
[% END %]