aboutsummaryrefslogtreecommitdiffstats
path: root/template/en
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2008-07-31 02:47:25 +0000
committerlpsolit%gmail.com <>2008-07-31 02:47:25 +0000
commit7f0ba708827dec5bb77222405009f1771e43655a (patch)
tree4b40eddbdcd172d211514d25dc9b2adcf78e9caf /template/en
parent4fc0f4b92290a7fbf9b4340e9dd37c2626f524ea (diff)
downloadbugs-7f0ba708827dec5bb77222405009f1771e43655a.tar
bugs-7f0ba708827dec5bb77222405009f1771e43655a.tar.gz
bugs-7f0ba708827dec5bb77222405009f1771e43655a.tar.bz2
bugs-7f0ba708827dec5bb77222405009f1771e43655a.tar.xz
bugs-7f0ba708827dec5bb77222405009f1771e43655a.zip
Bug 313122: Implement Product->create, $product->update and $product->remove_from_db, and make editproducts.cgi use them - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=LpSolit
Diffstat (limited to 'template/en')
-rw-r--r--template/en/default/admin/products/confirm-delete.html.tmpl28
-rw-r--r--template/en/default/admin/products/create.html.tmpl2
-rw-r--r--template/en/default/admin/products/edit.html.tmpl5
-rw-r--r--template/en/default/admin/products/footer.html.tmpl4
-rw-r--r--template/en/default/admin/products/list.html.tmpl7
-rw-r--r--template/en/default/admin/products/updated.html.tmpl93
-rw-r--r--template/en/default/filterexceptions.pl4
-rw-r--r--template/en/default/global/messages.html.tmpl6
-rw-r--r--template/en/default/global/user-error.html.tmpl80
9 files changed, 78 insertions, 151 deletions
diff --git a/template/en/default/admin/products/confirm-delete.html.tmpl b/template/en/default/admin/products/confirm-delete.html.tmpl
index 7667d70e5..43ebf8a81 100644
--- a/template/en/default/admin/products/confirm-delete.html.tmpl
+++ b/template/en/default/admin/products/confirm-delete.html.tmpl
@@ -31,14 +31,6 @@
style_urls = ['skins/standard/admin.css']
%]
-[% IF classification %]
- [% classification_url_part = BLOCK %]&amp;classification=
- [%- classification.name FILTER url_quote %]
- [%- END %]
-[% ELSE %]
- [% classification_url_part = "" %]
-[% END %]
-
<table border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#6666FF">
<th valign="top" align="left">Field</th>
@@ -66,8 +58,7 @@
<tr>
<td valign="top">Product:</td>
<td valign="top">
- <a href="editproducts.cgi?product=[% product.name FILTER url_quote %]
- [%- classification_url_part %]">
+ <a href="editproducts.cgi?product=[% product.name FILTER url_quote %]">
[% product.name FILTER html %]
</a>
</td>
@@ -113,8 +104,7 @@
<tr>
<td>
[% IF product.components.size > 0 %]
- <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]
- [%- classification_url_part %]"
+ <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]"
title="Edit components for product '[% product.name FILTER html %]'">
Components:
</a>
@@ -148,8 +138,7 @@
<tr>
<td>
[% IF product.versions.size > 0 %]
- <a href="editversions.cgi?product=[%- product.name FILTER url_quote %]
- [%- classification_url_part %]">
+ <a href="editversions.cgi?product=[%- product.name FILTER url_quote %]">
Versions:
</a>
[% ELSE %]
@@ -172,8 +161,7 @@
<tr>
<td valign="top">
[% IF product.milestones.size > 0 %]
- <a href="editmilestones.cgi?product=[%- product.name FILTER url_quote %]
- [%- classification_url_part -%]">
+ <a href="editmilestones.cgi?product=[%- product.name FILTER url_quote %]">
Milestones:
</a>
[% ELSE %]
@@ -196,10 +184,8 @@
<td>[% terms.Bugs %]:</td>
<td>
[% IF product.bug_count %]
- <a href="buglist.cgi?product=[%- product.name FILTER url_quote %]
- [%- classification_url_part %]"
- title="List of [% terms.bugs %] for product '
- [%- product.name FILTER html %]'">
+ <a href="buglist.cgi?product=[% product.name FILTER url_quote %]"
+ title="List of [% terms.bugs %] for product '[% product.name FILTER html %]'">
[% product.bug_count FILTER html %]
</a>
[% ELSE %]
@@ -264,8 +250,6 @@
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
- <input type="hidden" name="classification"
- value="[% classification.name FILTER html %]">
</form>
[% END %]
diff --git a/template/en/default/admin/products/create.html.tmpl b/template/en/default/admin/products/create.html.tmpl
index e1cd38140..49c4ca71f 100644
--- a/template/en/default/admin/products/create.html.tmpl
+++ b/template/en/default/admin/products/create.html.tmpl
@@ -53,8 +53,6 @@
</table>
<input type="submit" value="Add">
- <input type="hidden" name="subcategory" value="-All-">
- <input type="hidden" name="open_name" value="All Open">
<input type="hidden" name="action" value="new">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="hidden" name="classification"
diff --git a/template/en/default/admin/products/edit.html.tmpl b/template/en/default/admin/products/edit.html.tmpl
index 2d346c665..a3d5089c3 100644
--- a/template/en/default/admin/products/edit.html.tmpl
+++ b/template/en/default/admin/products/edit.html.tmpl
@@ -101,8 +101,7 @@ versions:</a>
<tr>
<th align="right" valign="top">
<a href="editproducts.cgi?action=editgroupcontrols&product=
- [%- product.name FILTER url_quote %]&classification=
- [%- classification.name FILTER url_quote %]">
+ [%- product.name FILTER url_quote %]">
Edit Group Access Controls:
</a>
</th>
@@ -139,8 +138,6 @@ versions:</a>
value="[% product.name FILTER html %]">
<input type="hidden" name="action" value="update">
<input type="hidden" name="token" value="[% token FILTER html %]">
- <input type="hidden" name="classification"
- value="[% classification.name FILTER html %]">
<input type="submit" name="submit" value="Save Changes">
</form>
diff --git a/template/en/default/admin/products/footer.html.tmpl b/template/en/default/admin/products/footer.html.tmpl
index 4b8fe053b..c35551748 100644
--- a/template/en/default/admin/products/footer.html.tmpl
+++ b/template/en/default/admin/products/footer.html.tmpl
@@ -61,9 +61,7 @@
Edit product <a
title="Edit Product '[% product.name FILTER html %]'
[%- classification_text %]"
- href="editproducts.cgi?action=edit&amp;product=
- [%- product.name FILTER url_quote %]
- [%- classification_url_part %]">
+ href="editproducts.cgi?action=edit&amp;product=[% product.name FILTER url_quote %]">
'[% product.name FILTER html %]'</a>.
[% END %]
diff --git a/template/en/default/admin/products/list.html.tmpl b/template/en/default/admin/products/list.html.tmpl
index 3f1576913..b82a6a5b0 100644
--- a/template/en/default/admin/products/list.html.tmpl
+++ b/template/en/default/admin/products/list.html.tmpl
@@ -39,14 +39,13 @@
[% edit_contentlink = BLOCK %]
editproducts.cgi?action=edit&amp;product=%%name%%
- [%- classification_url_part %]
[% END %]
[% delete_contentlink = BLOCK %]
editproducts.cgi?action=del&amp;product=%%name%%
- [%- classification_url_part %]
[% END %]
-[% bug_count_contentlink = BLOCK %]buglist.cgi?product=%%name%%
- [%- classification_url_part %][% END %]
+[% bug_count_contentlink = BLOCK %]
+ buglist.cgi?product=%%name%%
+[% END %]
[% columns = [
diff --git a/template/en/default/admin/products/updated.html.tmpl b/template/en/default/admin/products/updated.html.tmpl
index 4d5f518ec..b04fa4663 100644
--- a/template/en/default/admin/products/updated.html.tmpl
+++ b/template/en/default/admin/products/updated.html.tmpl
@@ -16,38 +16,18 @@
# Rights Reserved.
#
# Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+ # Frédéric Buclin <LpSolit@gmail.com>
#%]
[%# INTERFACE:
- #
- # old_product : Bugzilla::Product Object; old product.
# product : Bugzilla::Product Object; new product.
- #
# classification: Bugzilla::Classification Object; The product classification (may be empty or missing)
- #
- # checkvotes: boolean; is true if vote related fields have changed. If so,
- # then the following parameters will be specified:
- #
- # toomanyvotes: list of hashes, each one with an 'id' and a 'name' hash key
- # detailing the bug id and the username of users who had too
- # many votes for a bug
- #
- # toomanytotalvotes: list of hashes, each one with an 'id' and a 'name' hash key
- # detailing the bug id and the username of users who had
- # too many total votes
- #
- # confirmedbugs: list of bug ids, which were confirmed by votes
- #
- # changer: string; login of the user making the changes, used for mailing
- # bug changes if necessary
- #
+ # changes: hashref with all changes made to the product. Each key is an edited field,
+ # and its value is an arrayref of the form [old values, new values].
#%]
[% IF classification %]
- [% classification_url_part = BLOCK %]&amp;classification=
- [%- classification.name FILTER url_quote %]
- [% END %]
- [% classification_text = BLOCK %]
+ [% classification_text = BLOCK %]
of classification '[% classification.name FILTER html %]'
[% END %]
[% END %]
@@ -58,28 +38,24 @@
title = title
style_urls = ['skins/standard/admin.css']
%]
-[% updated = 0 %]
-[% IF product.name != old_product.name %]
+[% IF changes.name.defined %]
<p>
- Updated product name from '[% old_product.name FILTER html %]' to
- <a href="editproducts.cgi?action=edit&amp;product=
- [%- product.name FILTER url_quote %]
- [%- classification_url_part FILTER none %]">[% product.name FILTER html %]</a>.
+ Updated product name from '[% changes.name.0 FILTER html %]' to
+ '<a href="editproducts.cgi?action=edit&amp;product=
+ [%- product.name FILTER url_quote %]">[% product.name FILTER html %]</a>'.
</p>
- [% updated = 1 %]
[% END %]
-[% IF product.description != old_product.description %]
+[% IF changes.description.defined %]
<p>
Updated description to:
</p>
<p style="margin: 1em 3em 1em 3em">[% product.description FILTER html_light %]</p>
- [% updated = 1 %]
[% END %]
-[% IF product.disallow_new != old_product.disallow_new %]
+[% IF changes.disallownew.defined %]
<p>
Product is now
[% IF product.disallow_new %]
@@ -89,15 +65,14 @@
[% END %]
new [% terms.bugs %].
</p>
- [% updated = 1 %]
[% END %]
-[% IF product.milestone_url != old_product.milestone_url %]
+[% IF changes.milestoneurl.defined %]
<p>
Updated milestone URL
- [% IF old_product.milestone_url != '' %]
- from<br> <a href="[%- old_product.milestone_url FILTER html %]">
- [%- old_product.milestone_url FILTER html %]</a>
+ [% IF changes.milestoneurl.0 != '' %]
+ from<br> <a href="[%- changes.milestoneurl.0 FILTER html %]">
+ [%- changes.milestoneurl.0 FILTER html %]</a>
[% END %]
to
[% IF product.milestone_url != '' %]
@@ -107,45 +82,43 @@
be empty.
[% END %]
</p>
- [% updated = 1 %]
[% END %]
-[% IF product.default_milestone != old_product.default_milestone %]
+[% IF changes.defaultmilestone.defined %]
<p>
- Updated default milestone from '[% old_product.default_milestone FILTER html %]' to
+ Updated default milestone from '[% changes.defaultmilestone.0 FILTER html %]' to
'[% product.default_milestone FILTER html %]'.
</p>
- [% updated = 1 %]
[% END %]
-[% IF product.votes_per_user != old_product.votes_per_user %]
+[% IF changes.votesperuser.defined %]
<p>
Updated votes per user from
- [%+ old_product.votes_per_user FILTER html %] to
+ [%+ changes.votesperuser.0 FILTER html %] to
[%+ product.votes_per_user FILTER html %].
</p>
- [% updated = 1 %]
+ [% checkvotes = 1 %]
[% END %]
-[% IF product.max_votes_per_bug != old_product.max_votes_per_bug %]
+[% IF changes.maxvotesperbug.defined %]
<p>
Updated maximum votes per [% terms.bug %] from
- [%+ old_product.max_votes_per_bug FILTER html %] to
+ [%+ changes.maxvotesperbug.0 FILTER html %] to
[%+ product.max_votes_per_bug FILTER html %].
</p>
- [% updated = 1 %]
+ [% checkvotes = 1 %]
[% END %]
-[% IF product.votes_to_confirm != old_product.votes_to_confirm %]
+[% IF changes.votestoconfirm.defined %]
<p>
Updated number of votes needed to confirm a [% terms.bug %] from
- [%+ old_product.votes_to_confirm FILTER html %] to
+ [%+ changes.votestoconfirm.0 FILTER html %] to
[%+ product.votes_to_confirm FILTER html %].
</p>
- [% updated = 1 %]
+ [% checkvotes = 1 %]
[% END %]
-[% UNLESS updated %]
+[% IF !changes.keys.size %]
<p>Nothing changed for product '[% product.name FILTER html %]'.</p>
[% END %]
@@ -159,8 +132,8 @@
<p>Checking existing votes in this product for anybody who now
has too many votes for [% terms.abug %]...<br>
- [% IF toomanyvotes.size > 0 %]
- [% FOREACH detail = toomanyvotes %]
+ [% IF changes.too_many_votes.size %]
+ [% FOREACH detail = changes.too_many_votes %]
&rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
[%- detail.id FILTER url_quote %]">
[%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
@@ -172,8 +145,8 @@
<p>Checking existing votes in this product for anybody
who now has too many total votes...<br>
- [% IF toomanytotalvotes.size > 0 %]
- [% FOREACH detail = toomanytotalvotes %]
+ [% IF changes.too_many_total_votes.size %]
+ [% FOREACH detail = changes.too_many_total_votes %]
&rarr;removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
[%- detail.id FILTER url_quote %]">
[%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
@@ -185,14 +158,14 @@
<p>Checking unconfirmed [% terms.bugs %] in this product for any which now have
sufficient votes...<br>
- [% IF confirmedbugs.size > 0 %]
- [% FOREACH id = confirmedbugs %]
+ [% IF changes.confirmed_bugs.size %]
+ [% FOREACH id = changes.confirmed_bugs %]
[%# This is INCLUDED instead of PROCESSED to avoid variables getting
overwritten, which happens otherwise %]
[% INCLUDE bug/process/results.html.tmpl
type = 'votes'
- mailrecipients = { 'changer' => changer }
+ mailrecipients = { 'changer' => user.login }
header_done = 1
id = id
%]
diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl
index a02c644ef..056341b53 100644
--- a/template/en/default/filterexceptions.pl
+++ b/template/en/default/filterexceptions.pl
@@ -474,10 +474,6 @@
'classification_url_part',
],
-'admin/products/confirm-delete.html.tmpl' => [
- 'classification_url_part',
-],
-
'admin/products/footer.html.tmpl' => [
'classification_url_part',
'classification_text',
diff --git a/template/en/default/global/messages.html.tmpl b/template/en/default/global/messages.html.tmpl
index fa66e273b..b67e7d598 100644
--- a/template/en/default/global/messages.html.tmpl
+++ b/template/en/default/global/messages.html.tmpl
@@ -129,6 +129,9 @@
[% ELSIF message_tag == "bug_has_duplicate" %]
*** [% terms.Bug %] [%+ dupe FILTER html %] has been marked as a duplicate of this [% terms.bug %]. ***
+ [% ELSIF message_tag == "bug_group_description" %]
+ Access to [% terms.bugs %] in the [% product.name FILTER html %] product
+
[% ELSIF message_tag == "bug_moved_to" %]
<p>[% terms.Bug %] moved to [% Param("move-to-url") FILTER html %].</p>
<p>If the move succeeded, [% login FILTER html %] will receive a mail
@@ -706,6 +709,9 @@
[% ELSIF message_tag == "series_all_closed" %]
All Closed
+ [% ELSIF message_tag == "series_subcategory" %]
+ -All-
+
[% ELSIF message_tag == "sudo_started" %]
[% title = "Sudo session started" %]
The sudo session has been started. For the next 6 hours, or until you
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 804a1913b..fbab7625c 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -273,11 +273,6 @@
[% title = "Classification Does Not Exist" %]
The classification '[% name FILTER html %]' does not exist.
- [% ELSIF error == "classification_doesnt_exist_for_product" %]
- [% title = "Classification Does Not Exist For Product" %]
- The classification '[% classification FILTER html %]' does not exist
- for product '[% product FILTER html %]'.
-
[% ELSIF error == "classification_invalid_sortkey" %]
[% title = "Invalid Sortkey for Classification" %]
The sortkey <em>[% sortkey FILTER html %]</em> for the '[% name FILTER html %]'
@@ -313,8 +308,8 @@
[% ELSIF error == "component_name_too_long" %]
[% title = "Component Name Is Too Long" %]
- The name of a component is limited to 64 characters.
- '[% name FILTER html %]' is too long ([% name.length %] characters).
+ The name of a component is limited to [% constants.MAX_COMPONENT_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
[% ELSIF error == "component_need_initialowner" %]
[% title = "Component Requires Default Assignee" %]
@@ -952,8 +947,8 @@
[% ELSIF error == "milestone_name_too_long" %]
[% title = "Milestone Name Is Too Long" %]
- The name of a milestone is limited to 20 characters.
- '[% name FILTER html %]' is too long ([% name.length %] characters).
+ The name of a milestone is limited to [% constants.MAX_MILESTONE_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
[% ELSIF error == "milestone_required" %]
[% title = "Milestone Required" %]
@@ -1241,37 +1236,19 @@
[% title = "Specified Product Does Not Exist" %]
The product '[% product FILTER html %]' does not exist.
- [% ELSIF error == "product_votes_per_bug_must_be_nonnegative" %]
- [% title = "Maximum Votes Must Be Non-negative" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- '[% maxvotesperbug FILTER html %]' is an invalid value for the
- <em>'Maximum Votes Per [% terms.Bug %]'</em> field, which should
- contain a non-negative number.
-
- [% ELSIF error == "product_votes_per_user_must_be_nonnegative" %]
- [% title = "Votes Per User Must Be Non-negative" %]
- [% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- '[% votesperuser FILTER html %]' is an invalid value for the
- <em>'Votes Per User'</em> field, which should contain a
- non-negative number.
-
- [% ELSIF error == "product_votes_to_confirm_must_be_nonnegative" %]
- [% title = "Votes To Confirm Must Be Non-negative" %]
+ [% ELSIF error == "product_illegal_votes" %]
+ [% title = "Votes Must Be Non-negative" %]
[% admindocslinks = {'voting.html' => 'Setting up the voting feature'} %]
- '[% votestoconfirm FILTER html %]' is an invalid value for the
- <em>'Votes To Confirm'</em> field, which should contain a
- non-negative number.
-
- [% ELSIF error == "product_cant_delete_description" %]
- [% title = "Cannot delete product description" %]
- [% admindocslinks = {'products.html' => 'Administering products'} %]
- Cannot delete the description for product
- '[% product FILTER html %]'.
-
- [% ELSIF error == "product_cant_delete_name" %]
- [% title = "Cannot delete product name" %]
- [% admindocslinks = {'products.html' => 'Administering products'} %]
- Cannot delete the product name for product '[% product FILTER html %]'.
+ '[% votes FILTER html %]' is an invalid value for the
+ <em>
+ [% IF field == "votesperuser" %]
+ Votes Per User
+ [% ELSIF field == "maxvotesperbug" %]
+ Maximum Votes Per [% terms.Bug %]
+ [% ELSIF field == "votestoconfirm" %]
+ Votes To Confirm
+ [% END %]
+ </em> field, which should contain a non-negative number.
[% ELSIF error == "product_name_already_in_use" %]
[% title = "Product name already in use" %]
@@ -1284,19 +1261,17 @@
The product name '[% product FILTER html %]' differs from existing
product '[% existing_product FILTER html %]' only in case.
+ [% ELSIF error == "product_name_too_long" %]
+ [% title = "Product name too long" %]
+ The name of a product is limited to [% constants.MAX_PRODUCT_SIZE FILTER html %]
+ characters. '[% name FILTER html %]' is too long ([% name.length %] characters).
+
[% ELSIF error == "product_must_define_defaultmilestone" %]
[% title = "Must define new default milestone" %]
[% admindocslinks = {'products.html' => 'Administering products',
'milestones.html' => 'About Milestones'} %]
- [% IF classification %]
- [% classification_url_part = BLOCK %]&amp;classification=
- [%- classification FILTER url_quote %]
- [% END %]
- [% END %]
- You must <a href="editmilestones.cgi?action=add&amp;product=
- [%- product FILTER url_quote %]
- [%- classification_url_part FILTER none %]">
- create the milestone '[% defaultmilestone FILTER html %]'</a> before
+ You must <a href="editmilestones.cgi?action=add&amp;product=[% product FILTER url_quote %]">
+ create the milestone '[% milestone FILTER html %]'</a> before
it can be made the default milestone for product '[% product FILTER html %]'.
[% ELSIF error == "product_admin_denied" %]
@@ -1306,7 +1281,7 @@
[% ELSIF error == "product_blank_name" %]
[% title = "Blank Product Name Not Allowed" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
- You must enter a name for the new product.
+ You must enter a name for the product.
[% ELSIF error == "product_disabled" %]
[% title = BLOCK %]Product closed for [% terms.Bug %] Entry[% END %]
@@ -1331,13 +1306,13 @@
[% ELSIF error == "product_must_have_description" %]
[% title = "Product needs Description" %]
[% admindocslinks = {'products.html' => 'Administering products'} %]
- You must enter a description for product '[% product FILTER html %]'.
+ You must enter a description for this product.
[% ELSIF error == "product_must_have_version" %]
[% title = "Product needs Version" %]
[% admindocslinks = {'products.html' => 'Administering products',
'versions.html' => 'Administering versions'} %]
- You must enter a version for product '[% product FILTER html %]'.
+ You must enter a valid version to create a new product.
[% ELSIF error == "product_not_specified" %]
[% title = "No Product Specified" %]
@@ -1363,7 +1338,8 @@
[% ELSIF error == "query_name_too_long" %]
[% title = "Query Name Too Long" %]
- The name of the query must be less than 64 characters long.
+ The name of the query must be less than [% constants.MAX_LEN_QUERY_NAME FILTER html %]
+ characters long.
[% ELSIF error == "quicksearch_unknown_field" %]
[% title = "Unknown QuickSearch Field" %]