diff options
Diffstat (limited to 'template/en/default/admin/products')
11 files changed, 1493 insertions, 0 deletions
diff --git a/template/en/default/admin/products/confirm-delete.html.tmpl b/template/en/default/admin/products/confirm-delete.html.tmpl new file mode 100644 index 0000000..f4a04b8 --- /dev/null +++ b/template/en/default/admin/products/confirm-delete.html.tmpl @@ -0,0 +1,266 @@ +[%# 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. + # + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + # (classification fields available if Param('useclassification') is enabled:) + # + # classification: Bugzilla::Classification object; The classification + # the product is in + # + #%] + +[% title = BLOCK %]Delete Product '[% product.name FILTER html %]' +[% END %] + +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] +%] + +<table border="1" cellpadding="4" cellspacing="0"> + <tr bgcolor="#6666FF"> + <th valign="top" align="left">Field</th> + <th valign="top" align="left">Value</th> + </tr> + + [% IF Param('useclassification') %] + <tr> + <td>Classification:</td> + <td>[% classification.name FILTER html %]</td> + </tr> + <tr> + <td>Classification Description:</td> + [%# descriptions are intentionally not filtered to allow html content %] + <td> + [% IF classification.description %] + [% classification.description FILTER html_light %] + [% ELSE %] + <span style="color: red">missing</span> + [% END %] + </td> + </tr> + [% END %] + + <tr> + <td valign="top">Product:</td> + <td valign="top"> + <a href="editproducts.cgi?product=[% product.name FILTER url_quote %]"> + [% product.name FILTER html %] + </a> + </td> + </tr> + <tr> + <td valign="top">Description:</td> + [%# descriptions are intentionally not filtered to allow html content %] + <td valign="top"> + [% IF product.description %] + [% product.description FILTER html_light %] + [% ELSE %] + <span style="color: red">missing</span> + [% END %] + </td> + </tr> + + [% IF Param('usetargetmilestone') %] + <tr> + <td>Milestone URL:</td> + <td> + [% IF product.milestone_url %] + <a href="[% product.milestone_url FILTER html %]"> + [%- product.milestone_url FILTER html %] + </a> + [% ELSE %] + none + [% END %] + </td> + </tr> + [% END %] + + <tr> + <td>Closed for [% terms.bugs %]:</td> + <td> + [% IF product.is_active %] + open + [% ELSE %] + closed + [% END %] + </td> + </tr> + + <tr> + <td> + [% IF product.components.size > 0 %] + <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]" + title="Edit components for product '[% product.name FILTER html %]'"> + Components: + </a> + [% ELSE %] + Components: + [% END %] + </td> + <td> + [% IF product.components.size > 0 %] + <table> + [% FOREACH c = product.components %] + <tr> + <th align="right">[% c.name FILTER html %]:</th> + [%# descriptions are intentionally not filtered to allow html content %] + <td> + [% IF c.description %] + [% c.description FILTER html_light %] + [% ELSE %] + <span style="color: red">missing</span> + [% END %] + </td> + </tr> + [% END %] + </table> + [% ELSE %] + none + [% END %] + </td> + </tr> + + <tr> + <td> + [% IF product.versions.size > 0 %] + <a href="editversions.cgi?product=[%- product.name FILTER url_quote %]"> + Versions: + </a> + [% ELSE %] + Versions: + [% END %] + </td> + <td> + [% IF product.versions.size > 0 %] + [% FOREACH v = product.versions %] + [% v.name FILTER html %]<br> + [% END %] + [% ELSE %] + none + [% END %] + </td> + </tr> + + + [% IF Param('usetargetmilestone') %] + <tr> + <td valign="top"> + [% IF product.milestones.size > 0 %] + <a href="editmilestones.cgi?product=[%- product.name FILTER url_quote %]"> + Milestones: + </a> + [% ELSE %] + Milestones: + [% END %] + </td> + <td> + [% IF product.milestones.size > 0 %] + [% FOREACH m = product.milestones %] + [% m.name FILTER html %]<br> + [% END %] + [% ELSE %] + none + [% END %] + </td> + </tr> + [% END %] + + <tr> + <td>[% terms.Bugs %]:</td> + <td> + [% IF product.bug_count %] + <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 %] + none + [% END %] + </td> + </tr> +</table> + +<h2>Confirmation</h2> + +[% IF product.bug_count %] + + [% IF !Param("allowbugdeletion") %] + + <p>Sorry, there + + [% IF product.bug_count > 1 %] + are [% product.bug_count FILTER html %] [%+ terms.bugs %] + [% ELSE %] + is 1 [% terms.bug %] + [% END %] + + outstanding for this product. You must reassign + + [% IF product.bug_count > 1 %] + those [% terms.bugs %] + [% ELSE %] + that [% terms.bug %] + [% END %] + + to another product before you can delete this one.</p> + + [% ELSE %] + + <table border="0" cellpadding="20" width="70%" bgcolor="red"> + <tr> + <td> + There + [% IF product.bug_count > 1 %] + are [% product.bug_count FILTER html %] [%+ terms.bugs %] + [% ELSE %] + is 1 [% terms.bug %] + [% END %] + entered for this product! When you delete this + product, <b><blink>ALL</blink></b> stored [% terms.bugs %] and + their history will be deleted, too. + </td> + </tr> + </table> + + [% END %] + +[% END %] + +[% Hook.process("confirmation") %] + +[% IF product.bug_count == 0 || Param('allowbugdeletion') %] + + <p>Do you really want to delete this product?</p> + + <form method="post" action="editproducts.cgi"> + <input type="checkbox" id="delete_series" name="delete_series" value=1> + <label for="delete_series"> + Delete all related series (you can also delete them later, by visiting + the <a href="chart.cgi?category=[% product.name FILTER html %]">New Charts page</a>.) + </label><p> + <input type="submit" id="delete" value="Yes, delete"> + <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 %]"> + </form> + +[% END %] + +[% PROCESS admin/products/footer.html.tmpl %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/create.html.tmpl b/template/en/default/admin/products/create.html.tmpl new file mode 100644 index 0000000..f4a2161 --- /dev/null +++ b/template/en/default/admin/products/create.html.tmpl @@ -0,0 +1,69 @@ +[%# 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. + # + # Contributor(s): Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # classification: Bugzilla::Classification object; If classifications + # are enabled, then this is + # the currently selected classification + # + #%] + +[% title = BLOCK %]Add Product[% END %] + +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] + javascript_urls = ['js/util.js'] +%] + +[% DEFAULT + product.votesperuser = "0", + product.maxvotesperbug = "10000", + product.votes_to_confirm = "0", + product.is_active = 1, + version = "unspecified", + product.defaultmilestone = constants.DEFAULT_MILESTONE + product.allows_unconfirmed = 0 +%] + +<form method="post" action="editproducts.cgi"> + <table border="0" cellpadding="4" cellspacing="0"> + + [% PROCESS "admin/products/edit-common.html.tmpl" %] + + <tr> + <th align="right">Version:</th> + <td><input size="64" maxlength="255" name="version" + value="[% version FILTER html %]"> + </td> + </tr> + <tr> + <th align="right">Create chart datasets for this product:</th> + <td><input type="checkbox" name="createseries" value="1"></td> + </tr> + </table> + + <input type="submit" value="Add"> + <input type="hidden" name="action" value="new"> + <input type="hidden" name="token" value="[% token FILTER html %]"> + <input type="hidden" name="classification" + value="[% classification.name FILTER html %]"> +</form> + +[% PROCESS "admin/products/footer.html.tmpl" + no_add_product_link = 1 + no_edit_product_link = 1 %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/edit-common.html.tmpl b/template/en/default/admin/products/edit-common.html.tmpl new file mode 100644 index 0000000..2c94402 --- /dev/null +++ b/template/en/default/admin/products/edit-common.html.tmpl @@ -0,0 +1,112 @@ +[%# 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. + # + # Contributor(s): Jack Nerad <jnerad@bellsouth.net> + # Tiago R. Mello <tiago@async.com.br> + # Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + # classification: Bugzilla::Classifiation object; classification product is in. + #%] + +[% PROCESS "global/field-descs.none.tmpl" %] + +[% IF Param('useclassification') %] + <tr> + <th align="right"><b>Classification:</b></th> + <td><b>[% classification.name FILTER html %]</b></td> + </tr> +[% END %] + +<tr> + <th align="right">Product:</th> + <td><input size="64" maxlength="64" name="product" + value="[% product.name FILTER html %]"> + </td> +</tr> +<tr> + <th align="right">Description:</th> + <td><textarea rows="4" cols="64" wrap="virtual" name="description"> + [% product.description FILTER html %]</textarea> + </td> +</tr> + +[% IF Param('usetargetmilestone') -%] + <tr> + <th align="right">Default milestone:</th> + <td> + [% IF product.milestones.size %] + <select name="defaultmilestone"> + [% FOREACH m = product.milestones %] + <option value="[% m.name FILTER html %]" + [% " selected=\"selected\"" IF m.name == product.defaultmilestone %]> + [%- m.name FILTER html -%]</option> + [% END %] + </select> + [% ELSE %] + <input type="text" size="20" maxlength="20" name="defaultmilestone" + value="[% product.defaultmilestone FILTER html %]"> + [% END %] + </td> + </tr> +[% END %] + +<tr> + <th align="right">Open for [% terms.bug %] entry:</th> + <td><input type="checkbox" name="is_active" value="1" + [% ' checked="checked"' IF product.is_active %]> + </td> +</tr> +<tr> + <th align="right"> + <label for="allows_unconfirmed">Enable the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status + in this product:</label> + </th> + <td><input type="checkbox" id="allows_unconfirmed" name="allows_unconfirmed" + [% ' checked="checked"' IF product.allows_unconfirmed %] + [% IF Param('usevotes') %] + onchange="bz_toggleClass('votes_to_confirm_container', + 'bz_default_hidden')" + [% END %]> + [% IF Param('usevotes') %] + <span id="votes_to_confirm_container" + [% ' class="bz_default_hidden"' IF !product.allows_unconfirmed %]> + ...and automatically confirm [% terms.bugs %] if they get + <input size="3" maxlength="5" name="votestoconfirm" id="votestoconfirm" + value="[% product.votes_to_confirm FILTER html %]"> + votes. (Setting this to 0 disables auto-confirming [% terms.bugs %] + by vote.) + </span> + [% END %] + </td> +</tr> + +[% IF Param('usevotes') %] + <tr> + <th align="right">Maximum votes per person:</th> + <td><input size="5" maxlength="5" name="votesperuser" id="votesperuser" + value="[% product.votesperuser FILTER html %]"> + </td> + </tr> + <tr> + <th align="right"> + Maximum votes a person can put on a single [% terms.bug %]: + </th> + <td><input size="5" maxlength="5" name="maxvotesperbug" id="maxvotesperbug" + value="[% product.maxvotesperbug FILTER html %]"> + </td> + </tr> +[% END %] diff --git a/template/en/default/admin/products/edit.html.tmpl b/template/en/default/admin/products/edit.html.tmpl new file mode 100644 index 0000000..976739f --- /dev/null +++ b/template/en/default/admin/products/edit.html.tmpl @@ -0,0 +1,149 @@ +[%# 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. + # + # Contributor(s): Jack Nerad <jnerad@bellsouth.net> + # Tiago R. Mello <tiago@async.com.br> + # Gabriel S. Oliveira <gabriel@async.com.br> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; The product + # + # (classification fields available if Param('useclassification') is enabled:) + # + # classification: Bugzilla::Classification object; The classification + # the product is in + #%] + +[% title = BLOCK %]Edit Product '[% product.name FILTER html %]'[% END %] + +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] + javascript_urls = ['js/util.js'] +%] + +[% group_control = {${constants.CONTROLMAPNA} => 'NA', + ${constants.CONTROLMAPSHOWN} => 'Shown', + ${constants.CONTROLMAPDEFAULT} => 'Default', + ${constants.CONTROLMAPMANDATORY} => 'Mandatory'} + %] + +<form method="post" action="editproducts.cgi"> + <table border="0" cellpadding="4" cellspacing="0"> + + [% PROCESS "admin/products/edit-common.html.tmpl" %] + + <tr> + <th align="right" valign="top"> + <a href="editcomponents.cgi?product=[% product.name FILTER url_quote %]"> + Edit components: + </a> + </th> + <td> + [% IF product.components.size -%] + [% FOREACH component = product.components %] + <b>[% component.name FILTER html %]:</b> + [% IF component.description %] + [% component.description FILTER html_light %] + [% ELSE %] + <font color="red">description missing</font> + [% END %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + <tr> + <th align="right" valign="top"> + <a href="editversions.cgi?product=[% product.name FILTER url_quote %]">Edit +versions:</a> + </th> + <td> + [%- IF product.versions.size -%] + [% FOREACH v = product.versions %] + [% v.name FILTER html %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + [% IF Param('usetargetmilestone') %] + <tr> + <th align="right" valign="top"> + <a href="editmilestones.cgi?product=[% product.name FILTER url_quote %]"> + Edit milestones:</a> + </th> + <td> + [%- IF product.milestones.size -%] + [%- FOREACH m = product.milestones -%] + [% m.name FILTER html %] + <br> + [% END %] + [% ELSE %] + <font color="red">missing</font> + [% END %] + </td> + </tr> + [% END %] + <tr> + <th align="right" valign="top"> + <a href="editproducts.cgi?action=editgroupcontrols&product= + [%- product.name FILTER url_quote %]"> + Edit Group Access Controls: + </a> + </th> + <td> + [% IF product.group_controls.size %] + [% FOREACH g = product.group_controls.values.sort("name") %] + <b>[% g.group.name FILTER html %]:</b> + [% IF g.group.isactive %] + [% group_control.${g.membercontrol} FILTER html %]/ + [% group_control.${g.othercontrol} FILTER html %] + [% IF g.entry %], ENTRY[% END %] + [% IF g.canedit %], CANEDIT[% END %] + [% IF g.editcomponents %], editcomponents[% END %] + [% IF g.canconfirm %], canconfirm[% END %] + [% IF g.editbugs %], editbugs[% END %] + [% ELSE %] + DISABLED + [% END %] + <br> + [% END %] + [% ELSE %] + no groups + [% END %] + </td> + </tr> + <tr> + <th align="right">[% terms.Bugs %]:</th> + <td><a href="buglist.cgi?product=[% product.name FILTER url_quote %]"> + [% product.bug_count FILTER html %]</a></td> + </tr> + </table> + + <input type="hidden" name="product_old_name" + value="[% product.name FILTER html %]"> + <input type="hidden" name="action" value="update"> + <input type="hidden" name="token" value="[% token FILTER html %]"> + <input type="submit" name="submit" value="Save Changes"> +</form> + +[% PROCESS "admin/products/footer.html.tmpl" + no_add_product_link = 1 + no_edit_product_link = 1 %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/footer.html.tmpl b/template/en/default/admin/products/footer.html.tmpl new file mode 100644 index 0000000..661829b --- /dev/null +++ b/template/en/default/admin/products/footer.html.tmpl @@ -0,0 +1,86 @@ +[%# 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. + # + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + #%] + +[%# INTERFACE: + # product: Bugzilla::Product Object; the product + # + # classification: Bugzilla::Classification object ; If classifications + # are enabled, then this is the currently + # selected classification + # + # no_XXX_link: boolean; if defined, then don't show the corresponding + # link. Supported parameters are: + # + # no_edit_product_link + # no_edit_other_products_link + # no_add_product_link + #%] + +[% IF Param('useclassification') && classification %] + [% classification_url_part = BLOCK %]&classification= + [%- classification.name FILTER url_quote %] + [% END %] + [% classification_url_part_start = BLOCK %]classification= + [%- classification.name FILTER url_quote %] + [% END %] + [% classification_text = BLOCK %] + of classification '[% classification.name FILTER html %]' + [% END %] +[% END %] + +<hr> + +<p> +[% UNLESS no_add_product_link || !user.in_group("editcomponents") %] + <a title="Add a product" + href="editproducts.cgi?action=add">Add</a> a product[% -%] +[%# Strictly speaking, we should not have to check for a + classification if they are enabled, but I'm just being paranoid %] + [% IF Param('useclassification') && classification %] + (<a title="Add a product to classification ' + [%- classification.name FILTER html %]'" + href="editproducts.cgi?action=add + [%- classification_url_part %]">to + classification '[% classification.name FILTER html %]'</a>) + [% END %]. +[% END %] + +[% IF product && !no_edit_product_link %] + Edit product <a + title="Edit Product '[% product.name FILTER html %]' + [%- classification_text %]" + href="editproducts.cgi?action=edit&product=[% product.name FILTER url_quote %]"> + '[% product.name FILTER html %]'</a>. +[% END %] + + +[%# Edit other products (in a classification if specified): %] +[% UNLESS no_edit_other_products_link %] + Edit <a + href="editproducts.cgi? + [%- classification_url_part_start FILTER none %]">other products + [% classification_text %]</a>. + +[% END %] + +[% IF Param('useclassification') && classification + && user.in_group('editclassifications') %] + Edit classification <a href="editclassifications.cgi?action=edit + [%- classification_url_part %]">' + [%- classification.name FILTER html %]'</a>. + +[% END %] + +</p> diff --git a/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl b/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl new file mode 100644 index 0000000..1fc92c9 --- /dev/null +++ b/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl @@ -0,0 +1,58 @@ +[%# 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): Joel Peshkin <bugreport@peshkin.net> + # + #%] + +[% PROCESS global/variables.none.tmpl %] +[% title = BLOCK %] + Confirm Group Control Change for product '[%- product.name FILTER html %]' +[% END %] + +[% PROCESS global/header.html.tmpl title = title %] +[% FOREACH group = mandatory_groups %] +<P> +group '[% group.name FILTER html %]' impacts [% group.count %] +[%+ terms.bugs %] for +which the group is newly mandatory and will be added. +[% END %] + +[% FOREACH group = na_groups %] +<P> +group '[% group.name FILTER html %]' impacts [% group.count %] +[% terms.bugs %] for which the group is no longer applicable and will +be removed.[% END %] +<form action="editproducts.cgi" method="post" > + + [% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %] + + <br> + Click "Continue" to proceed with the change including the changes + indicated above. If you do not want these changes, use "back" to + return to the previous page. + <p> + <input type="hidden" name="confirmed" value="confirmed"> + <input type="submit" id="update" value="Continue"> + </p> + +</form> + + +[% PROCESS global/footer.html.tmpl %] + + diff --git a/template/en/default/admin/products/groupcontrol/edit.html.tmpl b/template/en/default/admin/products/groupcontrol/edit.html.tmpl new file mode 100644 index 0000000..8c634eb --- /dev/null +++ b/template/en/default/admin/products/groupcontrol/edit.html.tmpl @@ -0,0 +1,325 @@ +[%# 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): Joel Peshkin <bugreport@peshkin.net> + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% title = BLOCK %] + Edit Group Controls for [% product.name FILTER html %] +[% END %] +[% PROCESS global/header.html.tmpl + title = title +%] + +<form method="post" action="editproducts.cgi"> + <input type="hidden" name="action" value="updategroupcontrols"> + <input type="hidden" name="product" value="[% product.name FILTER html %]"> + <input type="hidden" name="token" value="[% token FILTER html %]"> + + <table id="form" cellspacing="0" cellpadding="4" border="1"> + <tr bgcolor="#6666ff"> + <th>Group</th> + <th>Entry</th> + <th>MemberControl</th> + <th>OtherControl</th> + <th>Canedit</th> + <th>editcomponents</th> + <th>canconfirm</th> + <th>editbugs</th> + <th>[% terms.Bugs %]</th> + </tr> + [% FOREACH group = product.group_controls(1).values.sort("name") %] + [% IF !group.group.isactive AND group.bug_count %] + <tr bgcolor="#bbbbbb"> + <td> + [% group.group.name FILTER html %] + </td> + <td align="center" colspan=7> + Disabled + </td> + <td> + [% group.bug_count FILTER html %] + </td> + <tr> + [% ELSIF group.group.is_active %] + <tr> + <td> + [% group.group.name FILTER html %] + </td> + <td> + <input type=checkbox value=1 name=entry_[% group.id %] + [% " checked=\"checked\"" IF group.entry %]> + </td> + <td> + <select name="membercontrol_[% group.id %]"> + <option value=[% constants.CONTROLMAPNA %] + [% " selected=\"selected\"" + IF group.membercontrol == constants.CONTROLMAPNA %] + >NA + </option> + <option value=[% constants.CONTROLMAPSHOWN %] + [% " selected=\"selected\"" + IF group.membercontrol == constants.CONTROLMAPSHOWN %] + >Shown + </option> + <option value=[% constants.CONTROLMAPDEFAULT %] + [% " selected=\"selected\"" + IF group.membercontrol == constants.CONTROLMAPDEFAULT %] + >Default + </option> + <option value=[% constants.CONTROLMAPMANDATORY %] + [% " selected=\"selected\"" + IF group.membercontrol == constants.CONTROLMAPMANDATORY %] + >Mandatory + </option> + </select> + </td> + <td> + <select name="othercontrol_[% group.id %]"> + <option value=[% constants.CONTROLMAPNA %] + [% " selected=\"selected\"" + IF group.othercontrol == constants.CONTROLMAPNA %] + >NA + </option> + <option value=[% constants.CONTROLMAPSHOWN %] + [% " selected=\"selected\"" + IF group.othercontrol == constants.CONTROLMAPSHOWN %] + >Shown + </option> + <option value=[% constants.CONTROLMAPDEFAULT %] + [% " selected=\"selected\"" + IF group.othercontrol == constants.CONTROLMAPDEFAULT %] + >Default + </option> + <option value=[% constants.CONTROLMAPMANDATORY %] + [% " selected=\"selected\"" + IF group.othercontrol == constants.CONTROLMAPMANDATORY %] + >Mandatory + </option> + </select> + </td> + <td> + <input type=checkbox value=1 name=canedit_[% group.id %] + [% " checked=\"checked\"" IF group.canedit %]> + </td> + <td> + <input type=checkbox value=1 name=editcomponents_[% group.id %] + [% " checked=\"checked\"" IF group.editcomponents %]> + </td> + <td> + <input type=checkbox value=1 name=canconfirm_[% group.id %] + [% " checked=\"checked\"" IF group.canconfirm %]> + </td> + <td> + <input type=checkbox value=1 name=editbugs_[% group.id %] + [% " checked=\"checked\"" IF group.editbugs %]> + </td> + <td> + [% group.bug_count || 0 FILTER html %] + </td> + </tr> + [% END %] + [% END %] + + </table> + <br> + <input type=submit name="submit" value="submit"> + <br> +</form> + + +<p> +These settings control the relationship of the groups to this +product. +</p> +<p> +If any group has <b>Entry</b> selected, then this product will +restrict [% terms.bug %] entry to only those users who are members of all the +groups with entry selected. +</p> +<p> +If any group has <b>Canedit</b> selected, then this product +will be read-only for any users who are not members of all of +the groups with Canedit selected. ONLY users who are members of +all the canedit groups will be able to edit. This is an additional +restriction that further restricts what can be edited by a user. +</p> +<p> +The following settings control let you choose privileges on a <b>per-product basis</b>. +This is a convenient way to give privileges to some users for some products +only, without having to give them global privileges which would affect all +products: +</p> +<p> +Any group having <b>editcomponents</b> selected allows users who are +in this group to edit all aspects of this product, including components, +milestones and versions. +</p> +<p> +Any group having <b>canconfirm</b> selected allows users who are +in this group to confirm [% terms.bugs %] in this product. +</p> +<p> +Any group having <b>editbugs</b> selected allows users who are +in this group to edit all fields of [% terms.bugs %] in this product. +</p> +<p> +The <b>MemberControl</b> and <b>OtherControl</b> fields +indicate which [% terms.bugs %] will be placed in +this group according to the following definitions. +</p> + +<table border=1> + <tr> + <th> + MemberControl + </th> + <th> + OtherControl + </th> + <th> + Interpretation + </th> + </tr> + <tr> + <td> + NA + </td> + <td> + NA + </td> + <td> + [% terms.Bugs %] in this product are never associated with this group. + </td> + </tr> + <tr> + <td> + Shown + </td> + <td> + NA + </td> + <td> + [% terms.Bugs %] in this product are permitted to be restricted to this + group. Users who are members of this group will be able to place [% terms.bugs %] in + this group. + </td> + </tr> + <tr> + <td> + Shown + </td> + <td> + Shown + </td> + <td> + [% terms.Bugs %] in this product can be placed in this group by anyone + with permission to edit the [% terms.bug %] even if they are not a member + of this group. + </td> + </tr> + <tr> + <td> + Shown + </td> + <td> + Default + </td> + <td> + [% terms.Bugs %] in this product can be placed in this group by anyone + with permission to edit the [% terms.bug %] even if they are not a member + of this group. Non-members place [% terms.bugs %] in this group by default. + </td> + </tr> + <tr> + <td> + Shown + </td> + <td> + Mandatory + </td> + <td> + [% terms.Bugs %] in this product are permitted to be restricted to this + group. Users who are members of this group will be able to place [% terms.bugs %] + in this group. Non-members will be forced to restrict [% terms.bugs %] to + this group when they initially enter [% terms.abug %] in this product. + </td> + </tr> + <tr> + <td> + Default + </td> + <td> + NA + </td> + <td> + [% terms.Bugs %] in this product are permitted to be restricted to this + group and are placed in this group by default. Users who are members of this + group will be able to place [% terms.bugs %] in this group. + </td> + </tr> + <tr> + <td> + Default + </td> + <td> + Default + </td> + <td> + [% terms.Bugs %] in this product are permitted to be restricted to this + group and are placed in this group by default. Users who are members of this group + will be able to place [% terms.bugs %] in this group. Non-members will be + able to restrict [% terms.bugs %] to this group on entry and will do so by default. + </td> + </tr> + <tr> + <td> + Default + </td> + <td> + Mandatory + </td> + <td> + [% terms.Bugs %] in this product are permitted to be restricted to this + group and are placed in this group by default. Users who are members of this group + will be able to place [% terms.bugs %] in this group. Non-members will be forced + to place [% terms.bugs %] in this group on entry. + </td> + </tr> + <tr> + <td> + Mandatory + </td> + <td> + Mandatory + </td> + <td> + [% terms.Bugs %] in this product are required to be restricted to this + group. Users are not given any option. + </td> + </tr> +</table> +<p> +Please note that the above table delineates the only allowable combinations +for the <b>MemberControl</b> and <b>OtherControl</b> field settings. +Attempting to submit a combination not listed there (e.g. Mandatory/NA, +Default/Shown, etc.) will produce an error message. +</p> +[% PROCESS global/footer.html.tmpl %] + diff --git a/template/en/default/admin/products/groupcontrol/updated.html.tmpl b/template/en/default/admin/products/groupcontrol/updated.html.tmpl new file mode 100644 index 0000000..2f59cae --- /dev/null +++ b/template/en/default/admin/products/groupcontrol/updated.html.tmpl @@ -0,0 +1,50 @@ +[%# 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. + # + # Contributor(s): André Batosti <batosti@async.com.br> + # + #%] + +[%# INTERFACE: + # product: Bugzilla::Product object; the product. + # changes: Hashref with changes made to the product group controls. + #%] + +[% title = BLOCK %] + Update group access controls for [% product.name FILTER html %] +[% END %] + +[% PROCESS global/header.html.tmpl + title = title +%] +<p> +[% IF changes.group_controls.now_na.size %] + [% FOREACH g = changes.group_controls.now_na %] + Removing [% terms.bugs %] from group '[% g.name FILTER html %]' which + no longer applies to this product<p> + [% g.bug_count FILTER html %] [%+ terms.bugs %] removed<p> + [% END %] +[% END %] + +[% IF changes.group_controls.now_mandatory.size %] + [% FOREACH g = changes.group_controls.now_mandatory %] + Adding [% terms.bugs %] to group '[% g.name FILTER html %]' which is + mandatory for this product<p> + [% g.bug_count FILTER html %] [%+ terms.bugs %] added<p> + [% END %] +[% END %] + +Group control updates done<p> + +[% PROCESS admin/products/footer.html.tmpl %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/list-classifications.html.tmpl b/template/en/default/admin/products/list-classifications.html.tmpl new file mode 100644 index 0000000..4eddad3 --- /dev/null +++ b/template/en/default/admin/products/list-classifications.html.tmpl @@ -0,0 +1,72 @@ +[%# 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. + # + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + #%] + +[%# INTERFACE: + # classifications: array of hashes having the following properties: + # - name: string; The name of the classification + # - description: string; The classification description (html allowed) + # - product_count: number; The number of products in this classification + # + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS global/header.html.tmpl + title = "Select Classification" +%] + +[% edit_contentlink = BLOCK %] + editproducts.cgi?classification=%%name%% +[% END %] +[% add_contentlink = BLOCK %] + editproducts.cgi?action=add&classification=%%name%% +[% END %] + +[% columns = [ + { + name => "name" + heading => "Edit products of..." + contentlink => edit_contentlink + }, + { + name => "description" + heading => "Description" + allow_html_content => 1 + }, + { + name => "product_count" + align => "right" + heading => "Product Count" + } + ] +%] + +[% IF user.in_group('editcomponents') %] + [% columns.push({ + heading => "Action..." + content => "Add product" + contentlink => add_contentlink }) + %] +[% END %] + +[% PROCESS admin/table.html.tmpl + columns = columns + data = classifications +%] + +[%# No need for the standard edit products footer, as we have an 'add' + link in the table %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/list.html.tmpl b/template/en/default/admin/products/list.html.tmpl new file mode 100644 index 0000000..57d75d8 --- /dev/null +++ b/template/en/default/admin/products/list.html.tmpl @@ -0,0 +1,121 @@ +[%# 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. + # + # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org> + #%] + +[%# INTERFACE: + # products: array of Bugzilla::Product objects + # + # classification: Bugzilla::Classification object; If classifications + # are enabled, then this is + # the currently selected classification + # showbugcounts: boolean; true if bug counts should be included in the table + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% IF classification %] + [% classification_url_part = BLOCK %]&classification= + [%- classification.name FILTER url_quote %] + [%- END %] + [% classification_title = BLOCK %] + in classification '[% classification.name FILTER html %]' + [% END %] +[% END %] + +[% PROCESS global/header.html.tmpl + title = "Select product $classification_title" +%] + +[% edit_contentlink = BLOCK %] + editproducts.cgi?action=edit&product=%%name%% +[% END %] +[% delete_contentlink = BLOCK %] + editproducts.cgi?action=del&product=%%name%% +[% END %] +[% bug_count_contentlink = BLOCK %] + buglist.cgi?product=%%name%% +[% END %] + + +[% columns = [ + { + name => "name" + heading => "Edit product..." + contentlink => edit_contentlink + }, + { + name => "description" + heading => "Description" + allow_html_content => 1 + }, + { + name => "is_active" + heading => "Open For New $terms.Bugs" + yesno_field => 1 + }, + { + name => "votesperuser" + heading => "Votes Per User" + align => 'right' + }, + { + name => "maxvotesperbug" + heading => "Maximum Votes Per $terms.Bug" + align => 'right' + }, + { + name => "votestoconfirm" + heading => "Votes To Confirm" + align => 'right' + } ] +%] + +[% IF showbugcounts %] + + [% columns.push({ + name => "bug_count" + heading => "$terms.Bug Count" + align => 'right' + contentlink => bug_count_contentlink + }) + %] + +[% END %] + +[% columns.push({ + heading => "Action" + content => "Delete" + contentlink => delete_contentlink + }) +%] + +[% Hook.process('before_table') %] + +[% PROCESS admin/table.html.tmpl + columns = columns + data = products +%] + +[% IF !showbugcounts %] + + <p><a href="editproducts.cgi?showbugcounts=1[% classification_url_part %]"> + Redisplay table with [% terms.bug %] counts (slower)</a></p> + +[% END %] + +[% PROCESS admin/products/footer.html.tmpl + no_edit_other_products_link = 1 + %] + +[% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/admin/products/updated.html.tmpl b/template/en/default/admin/products/updated.html.tmpl new file mode 100644 index 0000000..c6e8710 --- /dev/null +++ b/template/en/default/admin/products/updated.html.tmpl @@ -0,0 +1,185 @@ +[%# 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): Gavin Shelley <bugzilla@chimpychompy.org> + # Frédéric Buclin <LpSolit@gmail.com> + #%] + +[%# INTERFACE: + # product : Bugzilla::Product Object; new product. + # classification: Bugzilla::Classification Object; The product classification (may be empty or missing) + # 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_text = BLOCK %] + of classification '[% classification.name FILTER html %]' + [% END %] +[% END %] + +[% title = BLOCK %]Updating Product '[% product.name FILTER html %]' + [% classification_text FILTER none %][% END %] +[% PROCESS global/header.html.tmpl + title = title + style_urls = ['skins/standard/admin.css'] +%] + +[% PROCESS "global/field-descs.none.tmpl" %] + +[% IF changes.name.defined %] + <p> + Updated product name from '[% changes.name.0 FILTER html %]' to + '<a href="editproducts.cgi?action=edit&product= + [%- product.name FILTER url_quote %]">[% product.name FILTER html %]</a>'. + </p> +[% END %] + + +[% IF changes.description.defined %] + <p> + Updated description to: + </p> + <p style="margin: 1em 3em 1em 3em">[% product.description FILTER html_light %]</p> +[% END %] + +[% IF changes.isactive.defined %] + <p> + Product is now + [% IF product.is_active %] + open for + [% ELSE %] + closed to + [% END %] + new [% terms.bugs %]. + </p> +[% END %] + +[% IF changes.defaultmilestone.defined %] + <p> + Updated default milestone from '[% changes.defaultmilestone.0 FILTER html %]' to + '[% product.default_milestone FILTER html %]'. + </p> +[% END %] + +[% IF changes.votesperuser.defined %] + <p> + Updated votes per user from + [%+ changes.votesperuser.0 FILTER html %] to + [%+ product.votes_per_user FILTER html %]. + </p> + [% checkvotes = 1 %] +[% END %] + +[% IF changes.maxvotesperbug.defined %] + <p> + Updated maximum votes per [% terms.bug %] from + [%+ changes.maxvotesperbug.0 FILTER html %] to + [%+ product.max_votes_per_bug FILTER html %]. + </p> + [% checkvotes = 1 %] +[% END %] + +[% IF changes.votestoconfirm.defined %] + <p> + Updated number of votes needed to confirm a [% terms.bug %] from + [%+ changes.votestoconfirm.0 FILTER html %] to + [%+ product.votes_to_confirm FILTER html %]. + </p> + [% checkvotes = 1 %] +[% END %] + +[% IF changes.allows_unconfirmed.defined %] + <p> + [% IF product.allows_unconfirmed %] + The product now allows the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status. + [% ELSE %] + The product no longer allows the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status. + Note that any + <a href="buglist.cgi?product= + [%- product.name FILTER url_quote %]&bug_status=UNCONFIRMED"> + [%- terms.bugs %] that currently have the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status</a> + will remain in that status until they are edited. + [% END %] + </p> +[% END %] + +[% IF !changes.keys.size %] + <p>Nothing changed for product '[% product.name FILTER html %]'.</p> +[% END %] + +[%# Note that this display of changed votes and/or confirmed bugs is + not very scalable. We could have a _lot_, and we just list them all. + One day we should limit this perhaps, or have a more scalable display %] + + +[% IF checkvotes %] + <hr> + + <p>Checking existing votes in this product for anybody who now + has too many votes for [% terms.abug %]...<br> + [% IF changes.too_many_votes.size %] + [% FOREACH detail = changes.too_many_votes %] + →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> + [% END %] + [% ELSE %] + →there were none. + [% END %] + </p> + + <p>Checking existing votes in this product for anybody + who now has too many total votes...<br> + [% IF changes.too_many_total_votes.size %] + [% FOREACH detail = changes.too_many_total_votes %] + →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> + [% END %] + [% ELSE %] + →there were none. + [% END %] + </p> + + <p>Checking unconfirmed [% terms.bugs %] in this product for any which now have + sufficient votes...<br> + [% 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' + header_done = 1 + sent_bugmail = changes.confirmed_bugs_sent_bugmail.$id + id = id + %] + [% END %] + [% ELSE %] + →there were none. + [% END %] + </p> + +[% END %] + +[% PROCESS admin/products/footer.html.tmpl %] + +[% PROCESS global/footer.html.tmpl %] |