summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xenter_bug.cgi26
-rw-r--r--skins/standard/global.css3
-rw-r--r--template/en/default/bug/create/create.html.tmpl107
-rw-r--r--template/en/default/bug/field-help.none.tmpl17
-rw-r--r--template/en/default/bug/field-label.html.tmpl53
-rw-r--r--template/en/default/bug/field.html.tmpl14
-rw-r--r--template/en/default/filterexceptions.pl2
-rw-r--r--template/en/default/pages/fields.html.tmpl7
8 files changed, 141 insertions, 88 deletions
diff --git a/enter_bug.cgi b/enter_bug.cgi
index 9c6a1c6b4..d85a9f060 100755
--- a/enter_bug.cgi
+++ b/enter_bug.cgi
@@ -534,38 +534,40 @@ if ( Bugzilla->params->{'usetargetmilestone'} ) {
}
# Construct the list of allowable statuses.
-my $initial_statuses = Bugzilla::Status->can_change_to();
+my @statuses = @{ Bugzilla::Status->can_change_to() };
# Exclude closed states from the UI, even if the workflow allows them.
# The back-end code will still accept them, though.
-@$initial_statuses = grep { $_->is_open } @$initial_statuses;
+@statuses = grep { $_->is_open } @statuses;
-my @status = map { $_->name } @$initial_statuses;
# UNCONFIRMED is illegal if allows_unconfirmed is false.
if (!$product->allows_unconfirmed) {
- @status = grep {$_ ne 'UNCONFIRMED'} @status;
+ @statuses = grep { $_->name ne 'UNCONFIRMED' } @statuses;
}
-scalar(@status) || ThrowUserError('no_initial_bug_status');
+scalar(@statuses) || ThrowUserError('no_initial_bug_status');
# If the user has no privs...
unless ($has_editbugs || $has_canconfirm) {
# ... use UNCONFIRMED if available, else use the first status of the list.
- my $bug_status = (grep {$_ eq 'UNCONFIRMED'} @status) ? 'UNCONFIRMED' : $status[0];
- @status = ($bug_status);
+ my $bug_status = (grep { $_->name eq 'UNCONFIRMED' } @statuses)
+ ? 'UNCONFIRMED' : $statuses[0]->name;
+ @statuses = ($bug_status);
}
-$vars->{'bug_status'} = \@status;
+$vars->{'bug_status'} = \@statuses;
# Get the default from a template value if it is legitimate.
# Otherwise, and only if the user has privs, set the default
# to the first confirmed bug status on the list, if available.
-if (formvalue('bug_status') && grep { $_ eq formvalue('bug_status') } @status) {
+my $picked_status = formvalue('bug_status');
+if ($picked_status and grep($_->name eq $picked_status, @statuses)) {
$default{'bug_status'} = formvalue('bug_status');
-} elsif (scalar @status == 1) {
- $default{'bug_status'} = $status[0];
+} elsif (scalar @statuses == 1) {
+ $default{'bug_status'} = $statuses[0]->name;
}
else {
- $default{'bug_status'} = ($status[0] ne 'UNCONFIRMED') ? $status[0] : $status[1];
+ $default{'bug_status'} = ($statuses[0]->name ne 'UNCONFIRMED')
+ ? $statuses[0]->name : $statuses[1]->name;
}
my @groups = $cgi->param('groups');
diff --git a/skins/standard/global.css b/skins/standard/global.css
index 8dcdb0ce9..a240f94f0 100644
--- a/skins/standard/global.css
+++ b/skins/standard/global.css
@@ -463,6 +463,9 @@ div.user_match {
vertical-align: top;
font-weight: bold;
}
+.field_help_link {
+ cursor: help;
+}
.field_value, form#Create th, form#Create td {
vertical-align: top;
}
diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl
index e983b611b..983f12bb9 100644
--- a/template/en/default/bug/create/create.html.tmpl
+++ b/template/en/default/bug/create/create.html.tmpl
@@ -214,10 +214,13 @@ TUI_hide_default('expert_fields');
[%# We can't use the select block in these two cases for various reasons. %]
<tr>
- <th class="required">
- <a href="describecomponents.cgi?product=[% product.name FILTER url_quote %]">
- Component</a>:
- </th>
+ [% component_desc_url = BLOCK -%]
+ describecomponents.cgi?product=[% product.name FILTER url_quote %]
+ [% END %]
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.component editable = 1 required = 1
+ desc_url = component_desc_url
+ %]
<td id="field_container_component">
<select name="component" id="component" onchange="set_assign_to();"
size="7" aria-required="true" class="required">
@@ -272,8 +275,9 @@ TUI_hide_default('expert_fields');
</tr>
<tr>
- <th rowspan="3"><a href="page.cgi?id=fields.html#version">
- [%- field_descs.version FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.version editable = 1 rowspan = 3
+ %]
<td rowspan="3">
<select name="version" size="5">
[%- FOREACH v = version %]
@@ -321,8 +325,7 @@ TUI_hide_default('expert_fields');
<tbody class="expert_fields">
<tr>
[% IF Param('usetargetmilestone') && Param('letsubmitterchoosemilestone') %]
- [% sel = { description => 'Target Milestone', name => 'target_milestone' } %]
- [% INCLUDE select %]
+ [% INCLUDE select field = bug_fields.target_milestone %]
[% ELSE %]
<td colspan="2">&nbsp;</td>
[% END %]
@@ -343,15 +346,10 @@ TUI_hide_default('expert_fields');
</tr>
<tr>
-[% IF bug_status.size <= 1 %]
- <input type="hidden" name="bug_status"
- value="[% default.bug_status FILTER html %]">
- <th>Initial State:</th>
- <td>[% display_value("bug_status", default.bug_status) FILTER html %]</td>
-[% ELSE %]
- [% sel = { description => 'Initial State', name => 'bug_status' } %]
- [% INCLUDE select %]
-[% END %]
+ [% INCLUDE bug/field.html.tmpl
+ bug = default, field = bug_fields.bug_status,
+ editable = (bug_status.size > 1), value = default.bug_status
+ override_legal_values = bug_status %]
<td>&nbsp;</td>
[%# Calculate the number of rows we can use for flags %]
@@ -382,7 +380,9 @@ TUI_hide_default('expert_fields');
</tr>
<tr>
- <th><a href="page.cgi?id=fields.html#assigned_to">Assign To</a>:</th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.assigned_to editable = 1
+ %]
<td colspan="2">
[% INCLUDE global/userselect.html.tmpl
id => "assigned_to"
@@ -399,8 +399,9 @@ TUI_hide_default('expert_fields');
[% IF Param("useqacontact") %]
<tr>
- <th><a href="page.cgi?id=fields.html#qa_contact">
- [%- field_descs.qa_contact FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.qa_contact editable = 1
+ %]
<td colspan="2">
[% INCLUDE global/userselect.html.tmpl
id => "qa_contact"
@@ -417,8 +418,9 @@ TUI_hide_default('expert_fields');
[% END %]
<tr>
- <th><a href="page.cgi?id=fields.html#cc">
- [%- field_descs.cc FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.cc editable = 1
+ %]
<td colspan="2">
[% INCLUDE global/userselect.html.tmpl
id => "cc"
@@ -445,8 +447,9 @@ TUI_hide_default('expert_fields');
[% IF user.is_timetracker %]
<tr>
- <th><a href="page.cgi?id=fields.html#estimated_time">Estimated
- Hours:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.estimated_time editable = 1
+ %]
<td colspan="2">
<input name="estimated_time" size="6" maxlength="6" value="[% estimated_time FILTER html %]">
</td>
@@ -464,8 +467,9 @@ TUI_hide_default('expert_fields');
[% IF Param("usebugaliases") %]
<tr>
- <th><a href="page.cgi?id=fields.html#alias">
- [%- field_descs.alias FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.alias editable = 1
+ %]
<td colspan="2">
<input name="alias" size="20" value="[% alias FILTER html %]">
</td>
@@ -473,8 +477,9 @@ TUI_hide_default('expert_fields');
[% END %]
<tr>
- <th><a href="page.cgi?id=fields.html#bug_file_loc">
- [%- field_descs.bug_file_loc FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.bug_file_loc editable = 1
+ %]
<td colspan="2">
<input name="bug_file_loc" size="40"
value="[% bug_file_loc FILTER html %]">
@@ -499,8 +504,9 @@ TUI_hide_default('expert_fields');
<tbody>
<tr>
- <th class="required"><a href="page.cgi?id=fields.html#short_desc">
- [%- field_descs.short_desc FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.short_desc editable = 1 required = 1
+ %]
<td colspan="3">
<input name="short_desc" size="70" value="[% short_desc FILTER html %]"
maxlength="255" spellcheck="true" aria-required="true"
@@ -590,7 +596,10 @@ TUI_hide_default('expert_fields');
[% IF user.in_group('editbugs', product.id) %]
[% IF use_keywords %]
<tr>
- <th><a href="describekeywords.cgi">Keywords</a>:</th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.keywords editable = 1
+ desc_url = "describekeywords.cgi"
+ %]
<td colspan="3">
<input id="keywords" name="keywords" size="40"
value="[% keywords FILTER html %]"> (optional)
@@ -599,15 +608,17 @@ TUI_hide_default('expert_fields');
[% END %]
<tr>
- <th><a href="page.cgi?id=fields.html#dependson">
- [%- field_descs.dependson FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.dependson editable = 1
+ %]
<td colspan="3">
<input name="dependson" accesskey="d" value="[% dependson FILTER html %]">
</td>
</tr>
<tr>
- <th><a href="page.cgi?id=fields.html#blocked">
- [%- field_descs.blocked FILTER html %]:</a></th>
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = bug_fields.blocked editable = 1
+ %]
<td colspan="3">
<input name="blocked" accesskey="b" value="[% blocked FILTER html %]">
</td>
@@ -678,30 +689,20 @@ TUI_hide_default('expert_fields');
[%############################################################################%]
[% BLOCK select %]
- [% IF sel.description %]
- <th>
- <a href="page.cgi?id=fields.html#[% sel.name %]">[% sel.description %]</a>:
- </th>
- [% END %]
+ [% INCLUDE "bug/field-label.html.tmpl"
+ field = field editable = 1
+ %]
<td>
- <select name="[% sel.name %]" id="[% sel.name %]">
- [%- FOREACH x = ${sel.name} %]
+ <select name="[% field.name FILTER html %]"
+ id="[% field.name FILTER html %]">
+ [%- FOREACH x = ${field.name} %]
<option value="[% x FILTER html %]"
- [% " selected=\"selected\"" IF x == default.${sel.name} %]>
- [% display_value(sel.name, x) FILTER html %]
+ [% " selected=\"selected\"" IF x == default.${field.name} %]>
+ [% display_value(field.name, x) FILTER html %]
</option>
[% END %]
</select>
-
- [% IF sel.name == "bug_status" %]
- <script type="text/javascript">
- <!--
- [%+ INCLUDE "bug/field-events.js.tmpl"
- field = bug_fields.bug_status %]
- //-->
- </script>
- [% END %]
</td>
[% END %]
diff --git a/template/en/default/bug/field-help.none.tmpl b/template/en/default/bug/field-help.none.tmpl
index 549a89002..a8129a1e3 100644
--- a/template/en/default/bug/field-help.none.tmpl
+++ b/template/en/default/bug/field-help.none.tmpl
@@ -149,8 +149,8 @@ status_whiteboard =>
_ " adding tags and status information.",
target_milestone =>
- "The target_milestone field is used to define when the engineer"
- _ " the $terms.bug is assigned to expects to fix it.",
+ "The $field_descs.target_milestone field is used to define when the"
+ _ " engineer the $terms.bug is assigned to expects to fix it.",
version =>
"The version field defines the version of the software the"
@@ -215,6 +215,19 @@ email1 =>
[% END %]
[% FOREACH help_field = bug_fields.keys %]
+
+ [%# Add help for custom fields. %]
+ [% IF !help_html.${help_field}.defined %]
+ [% SET field_type = bug_fields.${help_field}.type %]
+ [% field_type_desc = BLOCK -%]
+ [% field_types.$field_type FILTER html %]
+ [%- END %]
+ [% help_html.${help_field} =
+ "A custom $field_type_desc field in this installation"
+ _ " of ${terms.Bugzilla}." %]
+ [% END %]
+
+ [%# Add help for the search types, for query.cgi. %]
[% type_desc = BLOCK %]
The type of [% field_descs.${help_field} FILTER html %] search you
would like.
diff --git a/template/en/default/bug/field-label.html.tmpl b/template/en/default/bug/field-label.html.tmpl
new file mode 100644
index 000000000..c3a282701
--- /dev/null
+++ b/template/en/default/bug/field-label.html.tmpl
@@ -0,0 +1,53 @@
+[%# 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 Everything Solved, Inc.
+ # Portions created by the Initial Developer are Copyright (C) 2010 the
+ # Initial Developer. All Rights Reserved.
+ #
+ # Contributor(s):
+ # Max Kanat-Alexander <mkanat@bugzilla.org>
+ #%]
+
+[%# INTERFACE:
+ # field: a Bugzilla::Field object
+ # desc_url: An alternate link to help for the field.
+ # hidden: True if the field label should start hidden.
+ # required: True if this field must have a value.
+ # rowspan: a "rowspan" value for the label's <th>.
+ #%]
+
+[% PROCESS "bug/field-help.none.tmpl" %]
+
+<th class="field_label [% ' bz_hidden_field' IF hidden %]
+ [%- ' required' IF required %]"
+ id="field_label_[% field.name FILTER html %]"
+ [% IF rowspan %] rowspan="[% rowspan FILTER html %]"[% END %]>
+
+ [% IF editable %]
+ <label for="[% field.name FILTER html %]">
+ [% END %]
+
+ <a
+ [% IF help_html.${field.name}.defined %]
+ title="[% help_html.${field.name} FILTER txt FILTER collapse FILTER html %]"
+ class="field_help_link"
+ [% END %]
+ [% IF desc_url %]
+ href="[% desc_url FILTER html %]"
+ [% ELSE %]
+ href="page.cgi?id=fields.html#[% field.name FILTER url_quote %]"
+ [% END %]
+ >[%- field_descs.${field.name} FILTER html %]:</a>
+
+ [% '</label>' IF editable %]
+</th>
diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl
index 0656996bd..211f16b8e 100644
--- a/template/en/default/bug/field.html.tmpl
+++ b/template/en/default/bug/field.html.tmpl
@@ -47,19 +47,7 @@
[% END %]
[% IF NOT no_tds %]
- <th class="field_label [% ' bz_hidden_field' IF hidden %]"
- id="field_label_[% field.name FILTER html %]">
- [% IF editable %]
- <label for="[% field.name FILTER html %]">
- [% END %]
- [% IF desc_url %]
- <a href="[% desc_url FILTER html %]">
- [% ELSE %]
- <a href="page.cgi?id=fields.html#[% field.name FILTER url_quote %]">
- [% END %]
- [%- field_descs.${field.name} FILTER html %]:</a>
- [% '</label>' IF editable %]
- </th>
+ [% PROCESS "bug/field-label.html.tmpl" %]
[% END %]
[% IF NOT no_tds %]
diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl
index 07bd4dead..46132c892 100644
--- a/template/en/default/filterexceptions.pl
+++ b/template/en/default/filterexceptions.pl
@@ -316,8 +316,6 @@
],
'bug/create/create.html.tmpl' => [
- 'sel.name',
- 'sel.description',
'cloned_bug_id',
],
diff --git a/template/en/default/pages/fields.html.tmpl b/template/en/default/pages/fields.html.tmpl
index bb1deb8ed..b3583b568 100644
--- a/template/en/default/pages/fields.html.tmpl
+++ b/template/en/default/pages/fields.html.tmpl
@@ -267,12 +267,7 @@
<dt id="[% field FILTER html %]">[% field_desc FILTER html %]</dt>
<dd>
[% SET help_text = field_help_map.${field_desc}.help %]
- [% IF help_text %]
- [% help_text FILTER none %]
- [% ELSE %]
- A custom [% field_types.${field_object.type} FILTER html %] field in
- this installation of [% terms.Bugzilla %].
- [% END %]
+ [% help_text FILTER none %]
</dd>
[% END %]
</dl>