| [%# This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| #%] |
| |
| [% PROCESS "global/js-products.html.tmpl" %] |
| |
| [% IF action == "insert" %] |
| [% title = BLOCK %] |
| Create Flag Type for [% type.target_type == "bug" ? terms.Bugs : "Attachments" %] |
| [% IF type.id %] |
| Based on [% type.name FILTER html %] |
| [% END %] |
| [% END %] |
| [% ELSE %] |
| [% title = BLOCK %]Edit Flag Type [% type.name FILTER html %][% END %] |
| [% END %] |
| |
| [% PROCESS global/header.html.tmpl |
| title = title |
| style_urls = ['skins/standard/admin.css'] |
| onload="var f = document.forms['flagtype_properties']; |
| selectProduct(f.product, f.component, '__Any__');" |
| javascript_urls=["js/productform.js"] |
| doc_section = "administering/flags.html" |
| %] |
| |
| <form id="flagtype_properties" method="post" action="editflagtypes.cgi"> |
| <input type="hidden" name="action" value="[% action FILTER html %]"> |
| <input type="hidden" name="can_fully_edit" value="[% can_fully_edit FILTER html %]"> |
| <input type="hidden" name="id" value="[% type.id FILTER html %]"> |
| <input type="hidden" name="token" value="[% token FILTER html %]"> |
| <input type="hidden" name="target_type" value="[% type.target_type FILTER html %]"> |
| <input type="hidden" name="check_clusions" value="[% check_clusions FILTER none %]"> |
| [% FOREACH category = inclusions.values %] |
| <input type="hidden" name="inclusions" value="[% category FILTER html %]"> |
| [% END %] |
| [% FOREACH category = exclusions.values %] |
| <input type="hidden" name="exclusions" value="[% category FILTER html %]"> |
| [% END %] |
| |
| [%# Add a hidden button at the top of the form so that the user pressing "return" |
| # really submit the form, as expected. %] |
| <input type="submit" id="commit" value="Submit" class="bz_default_hidden"> |
| |
| <table id="admin_table_edit"> |
| <tr> |
| <th>Name:</th> |
| <td> |
| a short name identifying this type.<br> |
| <input type="text" name="name" value="[% type.name FILTER html %]" size="50" |
| maxlength="50" [%- ' disabled="disabled"' UNLESS can_fully_edit %] required> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Description:</th> |
| <td> |
| a comprehensive description of this type.<br> |
| [% INCLUDE global/textarea.html.tmpl |
| name = 'description' |
| minrows = 4 |
| cols = 80 |
| defaultcontent = type.description |
| disabled = !can_fully_edit |
| mandatory = 1 |
| %] |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Category:</th> |
| |
| <td> |
| the products/components to which [% type.target_type == "bug" ? terms.bugs : "attachments" %] |
| must (inclusions) or must not (exclusions) belong in order for users |
| to be able to set flags of this type for them. |
| [% UNLESS can_fully_edit %] |
| <p class="warning">This flagtype also applies to some products you are not allowed |
| to edit (and so which are not displayed in the lists below). Your limited privileges |
| means you are only allowed to add and remove this flagtype to/from products you can |
| edit, but not to edit other properties of the flagtype.</p> |
| [% END %] |
| <table> |
| <tr> |
| <th class="top left"> |
| Product/Component:<br> |
| [% INCLUDE "global/product-select.html.tmpl" |
| id => "product" |
| name => "product" |
| add => "__Any__" |
| onchange => "selectProduct(this, this.form.component, '__Any__');" |
| products => products |
| %]<br> |
| <select name="component"> |
| <option value="">__Any__</option> |
| [% FOREACH comp = components %] |
| <option value="[% comp FILTER html %]">[% comp FILTER html %]</option> |
| [% END %] |
| </select><br> |
| <input type="submit" id="categoryAction-include" |
| name="categoryAction-include" value="Include"> |
| <input type="submit" id="categoryAction-exclude" |
| name="categoryAction-exclude" value="Exclude"> |
| </th> |
| <th class="top left"> |
| Inclusions:<br> |
| [% PROCESS category_select name="inclusion_to_remove" categories = inclusions %]<br> |
| <input type="submit" id="categoryAction-removeInclusion" |
| name="categoryAction-removeInclusion" value="Remove Inclusion"> |
| </th> |
| <th class="top left"> |
| Exclusions:<br> |
| [% PROCESS category_select name="exclusion_to_remove" categories = exclusions %]<br> |
| <input type="submit" id="categoryAction-removeExclusion" |
| name="categoryAction-removeExclusion" value="Remove Exclusion"> |
| </th> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Sort Key:</th> |
| <td> |
| a number between 0 and [% constants.MAX_SMALLINT FILTER none %] by which |
| this type will be sorted when displayed to users in a list; ignore if you |
| don't care what order the types appear in or if you want them to appear |
| in alphabetical order.<br> |
| <input type="text" name="sortkey" value="[% type.sortkey || 0 FILTER html %]" size="5" |
| maxlength="5" [% ' disabled="disabled"' UNLESS can_fully_edit %] required> |
| </td> |
| </tr> |
| |
| <tr> |
| <th> </th> |
| <td> |
| <input type="checkbox" id="is_active" name="is_active" |
| [%- ' disabled="disabled"' UNLESS can_fully_edit %] |
| [% " checked" IF type.is_active || !type.is_active.defined %]> |
| <label for="is_active">active (flags of this type appear in the UI and can be set)</label> |
| </td> |
| </tr> |
| |
| <tr> |
| <th> </th> |
| <td> |
| <input type="checkbox" id="is_requestable" name="is_requestable" |
| [%- ' disabled="disabled"' UNLESS can_fully_edit %] |
| [% " checked" IF type.is_requestable || !type.is_requestable.defined %]> |
| <label for="is_requestable">requestable (users can ask for flags of this type to be set)</label> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>CC List:</th> |
| <td> |
| if requestable, who should get carbon copied on email notification of requests. |
| This is a comma-separated list of full e-mail addresses which do not |
| need to be [% terms.Bugzilla %] logins. |
| [% IF Param('emailsuffix') %] |
| Note that the configured emailsuffix |
| <kbd>[% Param('emailsuffix') %]</kbd> will <em>not</em> be appended |
| to these addresses, so you should add it explicitly if so desired. |
| [% END %]<br> |
| <input type="text" name="cc_list" value="[% type.cc_list FILTER html %]" size="80" |
| maxlength="200" [%- ' disabled="disabled"' UNLESS can_fully_edit %]> |
| </td> |
| </tr> |
| |
| <tr> |
| <th> </th> |
| <td> |
| <input type="checkbox" id="is_requesteeble" name="is_requesteeble" |
| [%- ' disabled="disabled"' UNLESS can_fully_edit %] |
| [% " checked" IF type.is_requesteeble || !type.is_requesteeble.defined %]> |
| <label for="is_requesteeble">specifically requestable (users can ask specific other users |
| to set flags of this type as opposed to just asking the wind)</label> |
| </td> |
| </tr> |
| |
| <tr> |
| <th> </th> |
| <td> |
| <input type="checkbox" id="is_multiplicable" name="is_multiplicable" |
| [%- ' disabled="disabled"' UNLESS can_fully_edit %] |
| [% " checked" IF type.is_multiplicable || !type.is_multiplicable.defined %]> |
| <label for="is_multiplicable">multiplicable (multiple flags of this type can be set on |
| the same [% type.target_type == "bug" ? terms.bug : "attachment" %])</label> |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Grant Group:</th> |
| <td> |
| the group allowed to grant/deny flags of this type |
| (to allow all users to grant/deny these flags, select no group).<br> |
| [% PROCESS group_select selname = "grant_group" %] |
| </td> |
| </tr> |
| |
| <tr> |
| <th>Request Group:</th> |
| <td> |
| if flags of this type are requestable, the group allowed to request them |
| (to allow all users to request these flags, select no group).<br> |
| Note that the request group alone has no effect if the grant group is not defined!<br> |
| [% PROCESS group_select selname = "request_group" %] |
| </td> |
| </tr> |
| |
| <tr> |
| <th> </th> |
| <td> |
| <input type="submit" id="save" value="[% action == "insert" ? "Create" : "Save Changes" %]"> |
| </td> |
| </tr> |
| |
| </table> |
| |
| </form> |
| |
| [% PROCESS global/footer.html.tmpl %] |
| |
| |
| [%############################################################################%] |
| [%# Block for SELECT fields #%] |
| [%############################################################################%] |
| |
| [% BLOCK group_select %] |
| <select name="[% selname %]" id="[% selname %]" [%- ' disabled="disabled"' UNLESS can_fully_edit %]> |
| <option value="">(no group)</option> |
| [% group_found = 0 %] |
| [% FOREACH group = groups %] |
| <option value="[% group.name FILTER html %]" |
| [% IF type.${selname} && type.${selname}.name == group.name %] |
| [% ' selected="selected"' %] |
| [% group_found = 1 %] |
| [% END %]> |
| [%- group.name FILTER html ~%] |
| </option> |
| [% END %] |
| [% IF !group_found && type.${selname}.name %] |
| <option value="[% type.${selname}.name FILTER html %]" selected="selected"> |
| [%- type.${selname}.name FILTER html ~%] |
| </option> |
| [% END %] |
| </select> |
| [% END %] |
| |
| [% BLOCK category_select %] |
| <select name="[% name FILTER html %]" multiple="multiple" size="7"> |
| [% FOREACH option = categories.keys.sort %] |
| <option value="[% categories.$option FILTER html %]"> |
| [% option FILTER html %] |
| </option> |
| [% END %] |
| </select> |
| [% END %] |