</th>
<td>
<input size="35" id="Bugzilla_login" name="Bugzilla_login"
- [%- ' type="email"' UNLESS Param('emailsuffix') %] autofocus>
+ [%- ' type="email"' UNLESS Param('emailsuffix') %] autofocus required>
[% Param('emailsuffix') FILTER html %]
</td>
</tr>
<tr>
<th><label for="Bugzilla_password">Password:</label></th>
<td>
- <input type="password" size="35" id="Bugzilla_password" name="Bugzilla_password">
+ <input type="password" size="35" id="Bugzilla_password" name="Bugzilla_password" required>
</td>
</tr>
If you have an account, but have forgotten your password,
enter your login name below and submit a request
to change your password.<br>
- <input size="35" name="loginname">
+ <input size="35" name="loginname" required>
<input type="hidden" id="token" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
<input type="submit" id="request" value="Reset Password">
</form>
[% END %]
</span>
<input size="35" id="login" name="login" autofocus
- [%- ' type="email"' UNLESS Param('emailsuffix') %]>
+ [%- ' type="email"' UNLESS Param('emailsuffix') %] required>
[% Param('emailsuffix') FILTER html %]
<input type="hidden" id="token" name="token" value="[% issue_hash_token(['create_account']) FILTER html %]">
<input type="submit" id="send" value="Send">
<tr>
<th><label for="passwd1">Type your password</label>:</th>
<td>
- <input type="password" id="passwd1" name="passwd1" value="">
+ <input type="password" id="passwd1" name="passwd1" value="" required>
(minimum [% constants.USER_PASSWORD_MIN_LENGTH FILTER none %] characters)
</td>
</tr>
<tr>
<th><label for="passwd2">Confirm your password</label>:</th>
- <td><input type="password" id="passwd2" name="passwd2" value=""></td>
+ <td><input type="password" id="passwd2" name="passwd2" value="" required></td>
</tr>
<tr>
<th> </th>
<table>
<tr>
<th>Password:</th>
- <td><input type="password" name="password" size="36"></td>
+ <td><input type="password" name="password" size="36" required></td>
</tr>
<tr>
<th> </th>
<tr>
<th>New password:</th>
<td>
- <input type="password" name="password">
+ <input type="password" name="password" required>
</td>
</tr>
<tr>
<th>Confirm new password:</th>
<td>
- <input type="password" name="matchpassword">
+ <input type="password" name="matchpassword" required>
</td>
</tr>
-
+
<tr>
<th> </th>
<td>
<tr>
<th>Classification:</th>
<td><input size=64 maxlength=64 name="classification"
- value="[% classification.name FILTER html %]"></td>
+ value="[% classification.name FILTER html %]" required></td>
</tr>
<tr>
<th>Description:</th>
<tr>
<th><label for="component">Component:</label></th>
<td><input size="64" maxlength="64" name="component" id="component"
- value="[%- comp.name FILTER html %]"></td>
+ value="[%- comp.name FILTER html %]" required></td>
</tr>
<tr>
<th><label for="[% desc_name FILTER html %]">Component Description:</label></th>
cols = 64
wrap = 'virtual'
defaultcontent = comp.description
+ mandatory = 1
%]
</td>
</tr>
id => "initialowner"
value => comp.default_assignee.login
size => 64
+ mandatory => 1
%]
</td>
</tr>
[% IF field %]
[% field.name FILTER html %]
[% ELSE %]
- <input type="text" id="name" name="name" value="cf_" size="40" maxlength="64">
+ <input type="text" id="name" name="name" value="cf_" size="40" maxlength="64" required>
[% END %]
</td>
<th><label for="desc">Description:</label></th>
<td>
<input type="text" id="desc" name="desc" size="40"
- value="[% field.description FILTER html %]">
+ value="[% field.description FILTER html %]" required>
</td>
<th>
<th><label for="value">Value:</label></th>
<td>
<input id="value" name="value" size="30"
- maxlength="[% constants.MAX_FIELD_VALUE_SIZE FILTER none %]">
+ maxlength="[% constants.MAX_FIELD_VALUE_SIZE FILTER none %]" required>
</td>
</tr>
<tr>
[% ELSE %]
<input id="value_new" name="value_new" size="20"
maxlength="[% constants.MAX_FIELD_VALUE_SIZE FILTER none %]"
- value="[% value.name FILTER html %]">
+ value="[% value.name FILTER html %]" required>
[% END %]
</td>
</tr>
<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 %]>
+ maxlength="50" [%- ' disabled="disabled"' UNLESS can_fully_edit %] required>
</td>
</tr>
cols = 80
defaultcontent = type.description
disabled = !can_fully_edit
+ mandatory = 1
%]
</td>
</tr>
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 %]>
+ maxlength="5" [% ' disabled="disabled"' UNLESS can_fully_edit %] required>
</td>
</tr>
<table id="admin_table_edit">
<tr>
<th>Group Name:</th>
- <td><input size="60" maxlength="255" name="name"></td>
+ <td><input size="60" maxlength="255" name="name" required></td>
</tr>
<tr>
<th>Description:</th>
- <td><input size="60" name="desc"></td>
+ <td><input size="60" name="desc" required></td>
</tr>
<tr>
<th>User Regexp:</th>
<td>
[% IF group.is_bug_group %]
<input type="text" name="name" size="60" maxlength="255"
- value="[% group.name FILTER html %]">
+ value="[% group.name FILTER html %]" required>
[% ELSE %]
[% group.name FILTER html %]
[% END %]
<td>
[% IF group.is_bug_group %]
<input type="text" name="desc" size="60"
- value="[% group.description FILTER html %]">
+ value="[% group.description FILTER html %]" required>
[% ELSE %]
[% group.description FILTER html %]
[% END %]
<table id="admin_table_edit">
<tr>
<th>Name:</th>
- <td><input size="64" maxlength="64" name="name" value=""></td>
+ <td><input size="64" maxlength="64" name="name" value="" required></td>
</tr>
<tr>
<th>Description:</th>
minrows = 4
cols = 64
wrap = 'virtual'
+ mandatory = 1
%]
</td>
</tr>
<tr>
<th>Name:</th>
<td><input size="64" maxlength="64" name="name"
- value="[% keyword.name FILTER html %]"></td>
+ value="[% keyword.name FILTER html %]" required></td>
</tr>
<tr>
<th>Description:</th>
cols = 64
wrap = 'virtual'
defaultcontent = keyword.description
+ mandatory = 1
%]
</td>
</tr>
<tr>
<th><label for="milestone">Milestone:</label></th>
<td><input id="milestone" size="64" maxlength="64" name="milestone"
- autofocus></td>
+ autofocus required></td>
</tr>
<tr>
<th><label for="sortkey">Sortkey:</label></th>
<tr>
<th><label for="milestone">Milestone:</label></th>
<td><input id="milestone" size="64" maxlength="64" name="milestone" value="
- [%- milestone.name FILTER html %]"></td>
+ [%- milestone.name FILTER html %]" required></td>
</tr>
<tr>
<th><label for="sortkey">Sortkey:</label></th>
<tr>
<th>Version:</th>
<td><input size="20" maxlength="64" name="version"
- value="[% version FILTER html %]">
+ value="[% version FILTER html %]" required>
</td>
</tr>
<tr>
<tr>
<th>Product:</th>
<td><input size="64" maxlength="64" name="product"
- value="[% product.name FILTER html %]">
+ value="[% product.name FILTER html %]" required>
</td>
</tr>
<tr>
<th>Description:</th>
- <td><textarea rows="4" cols="64" wrap="virtual" name="description">
+ <td><textarea rows="4" cols="64" wrap="virtual" name="description" required>
[% product.description FILTER html %]</textarea>
</td>
</tr>
value => target_login_default
accesskey => "u"
size => 30
+ mandatory => 1
%]
</p>
password</label>:
<input type="hidden" name="Bugzilla_login" value="
[%- user.login FILTER html %]">
- <input type="password" id="Bugzilla_password" name="Bugzilla_password" size="20">
+ <input type="password" id="Bugzilla_password" name="Bugzilla_password" size="20" required>
<br>
This is done for two reasons. First of all, it is done to reduce
the chances of someone doing large amounts of damage using your
[% IF editusers %]
<input size="64" maxlength="255" id="login" name="login"
value="[% otheruser.login FILTER html %]"
- [%- " autofocus" UNLESS editform %]>
+ [%- " autofocus" UNLESS editform %] required>
[% IF editform %]
[% IF !otheruser.in_group('bz_sudo_protect') %]
<br>
<th><label for="password">Password:</label></th>
<td>
<input type="password" size="16" name="password" id="password"
- value="" autocomplete="off">
+ value="" autocomplete="off" [% 'required' IF !editform %]>
[% IF password_complexity == "mixed_letters" %]
(Password must contain at least one UPPER and one lowercase letter.)
[% ELSIF password_complexity == "letters_numbers" %]
<tr>
<th><label for="version">Version:</label></th>
<td><input id="version" size="64" maxlength="64" name="version"
- value=""></td>
+ value="" required></td>
</tr>
</table>
<input type="submit" id="create" value="Add">
<th><label for="version">Version:</label></th>
<td>
<input id="version" size="64" maxlength="64" name="version"
- value="[% version.name FILTER html %]">
+ value="[% version.name FILTER html %]" required>
</td>
</tr>
<tr>
value="[% value FILTER html %]" size="40"
maxlength="[% constants.MAX_FREETEXT_LENGTH FILTER none %]"
[% ' pattern="\d+"' IF field.type == constants.FIELD_TYPE_INTEGER %]
- [% ' aria-required="true"' IF field.is_mandatory %]>
+ [% ' aria-required="true" required' IF field.is_mandatory %]>
[% CASE [constants.FIELD_TYPE_DATETIME, constants.FIELD_TYPE_DATE] %]
[% size = (field.type == constants.FIELD_TYPE_DATE) ? 10 : 20 %]
<input name="[% field.name FILTER html %]" size="[% size FILTER none %]"
id="[% field.name FILTER html %]"
value="[% value FILTER html %]"
- [% ' aria-required="true"' IF field.is_mandatory %]
+ [% ' aria-required="true" required' IF field.is_mandatory %]
onchange="updateCalendarFromField(this)">
<button type="button" class="calendar_button"
id="button_calendar_[% field.name FILTER html %]"
<span id="[% field.name FILTER html %]_input_area">
<input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]"
value="[% value FILTER html %]" size="7"
- [% ' aria-required="true"' IF field.is_mandatory %]>
+ [% ' aria-required="true" required' IF field.is_mandatory %]>
</span>
[% SET field_size = field.legal_values.size %]
[% END %]
size="[% field_size FILTER html %]" multiple="multiple"
- [% ' aria-required="true"' IF field.is_mandatory %]
+ [% ' aria-required="true" required' IF field.is_mandatory %]
[% END %]
>
[% IF allow_dont_change %]
# multiple: optional, do multiselect box, value is size (height) of box
# custom_userlist: optional, specify a limited list of users to use
# field_title: optional, extra information to display as a tooltip
+ # mandatory: optional; if true, the field cannot be empty.
#%]
[% IF Param("usemenuforusers") %]
[% IF accesskey %] accesskey="[% accesskey FILTER html %]" [% END %]
[% IF multiple %] multiple="multiple" size="[% multiple FILTER html %]" [% END %]
[% IF field_title %] title="[% field_title FILTER html %]" [% END %]
+ [% IF mandatory %] required [% END %]
>
[% IF emptyok %]
<option value=""></option>
[% IF field_title %] title="[% field_title FILTER html %]" [% END %]
[% IF size %] size="[% size FILTER html %]" [% END %]
[% IF id %] id="[% id FILTER html %]" [% END %]
+ [% IF mandatory %] required [% END %]
>
[% IF feature_enabled('jsonrpc') && Param('ajax_user_autocompletion') && id %]
<div id="[% id FILTER html %]_autocomplete_container"></div>
<input type="hidden" name="action" value="add">
<input type="hidden" name="token"
value="[% issue_hash_token(['create-quips']) FILTER html %]">
- <input size="80" name="quip" maxlength="512">
+ <input size="80" name="quip" maxlength="512" required>
<p>
<input type="submit" id="add" value="Add This Quip">
</p>