Bug 466178 - Add an INTEGER custom field type
r=glob, a=justdave git-svn-id: svn://10.0.0.236/trunk@265258 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
d0ab183ee0
commit
4530f26f49
@ -1 +1 @@
|
||||
8933
|
||||
8934
|
||||
@ -158,6 +158,9 @@ sub VALIDATORS {
|
||||
elsif ($field->type == FIELD_TYPE_TEXTAREA) {
|
||||
$validator = \&_check_textarea_field;
|
||||
}
|
||||
elsif ($field->type == FIELD_TYPE_INTEGER) {
|
||||
$validator = \&_check_integer_field;
|
||||
}
|
||||
else {
|
||||
$validator = \&_check_default_field;
|
||||
}
|
||||
@ -2110,6 +2113,27 @@ sub _check_textarea_field {
|
||||
return $text;
|
||||
}
|
||||
|
||||
sub _check_integer_field {
|
||||
my ($invocant, $value, $field) = @_;
|
||||
$value = defined($value) ? trim($value) : '';
|
||||
|
||||
if ($value eq '') {
|
||||
return 0;
|
||||
}
|
||||
|
||||
my $orig_value = $value;
|
||||
if (!detaint_signed($value)) {
|
||||
ThrowUserError("number_not_integer",
|
||||
{field => $field, num => $orig_value});
|
||||
}
|
||||
elsif ($value > MAX_INT_32) {
|
||||
ThrowUserError("number_too_large",
|
||||
{field => $field, num => $orig_value, max_num => MAX_INT_32});
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
sub _check_relationship_loop {
|
||||
# Generates a dependency tree for a given bug. Calls itself recursively
|
||||
# to generate sub-trees for the bug's dependencies.
|
||||
|
||||
@ -111,8 +111,9 @@ use Memoize;
|
||||
FIELD_TYPE_BUG_ID
|
||||
FIELD_TYPE_BUG_URLS
|
||||
FIELD_TYPE_KEYWORDS
|
||||
FIELD_TYPE_INTEGER
|
||||
FIELD_TYPE_HIGHEST_PLUS_ONE
|
||||
|
||||
|
||||
EMPTY_DATETIME_REGEX
|
||||
|
||||
ABNORMAL_SELECTS
|
||||
@ -398,9 +399,10 @@ use constant FIELD_TYPE_BUG_ID => 6;
|
||||
use constant FIELD_TYPE_BUG_URLS => 7;
|
||||
use constant FIELD_TYPE_KEYWORDS => 8;
|
||||
use constant FIELD_TYPE_DATE => 9;
|
||||
use constant FIELD_TYPE_INTEGER => 10;
|
||||
# Add new field types above this line, and change the below value in the
|
||||
# obvious fashion
|
||||
use constant FIELD_TYPE_HIGHEST_PLUS_ONE => 10;
|
||||
use constant FIELD_TYPE_HIGHEST_PLUS_ONE => 11;
|
||||
|
||||
use constant EMPTY_DATETIME_REGEX => qr/^[0\-:\sA-Za-z]+$/;
|
||||
|
||||
|
||||
@ -153,6 +153,7 @@ use constant SQL_DEFINITIONS => {
|
||||
FIELD_TYPE_DATETIME, { TYPE => 'DATETIME' },
|
||||
FIELD_TYPE_DATE, { TYPE => 'DATE' },
|
||||
FIELD_TYPE_BUG_ID, { TYPE => 'INT3' },
|
||||
FIELD_TYPE_INTEGER, { TYPE => 'INT4', NOTNULL => 1, DEFAULT => 0 },
|
||||
};
|
||||
|
||||
# Field definitions for the fields that ship with Bugzilla.
|
||||
|
||||
@ -35,11 +35,13 @@
|
||||
[% Hook.process('start_field_column') %]
|
||||
[% IF editable %]
|
||||
[% SWITCH field.type %]
|
||||
[% CASE constants.FIELD_TYPE_FREETEXT %]
|
||||
[% CASE [ constants.FIELD_TYPE_FREETEXT
|
||||
constants.FIELD_TYPE_INTEGER ] %]
|
||||
<input id="[% field.name FILTER html %]" class="text_input"
|
||||
name="[% field.name FILTER html %]"
|
||||
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 %]>
|
||||
[% CASE [constants.FIELD_TYPE_DATETIME, constants.FIELD_TYPE_DATE] %]
|
||||
[% size = (field.type == constants.FIELD_TYPE_DATE) ? 10 : 20 %]
|
||||
|
||||
@ -41,6 +41,7 @@
|
||||
|
||||
[% field_types = { ${constants.FIELD_TYPE_UNKNOWN} => "Unknown Type",
|
||||
${constants.FIELD_TYPE_FREETEXT} => "Free Text",
|
||||
${constants.FIELD_TYPE_INTEGER} => "Integer",
|
||||
${constants.FIELD_TYPE_SINGLE_SELECT} => "Drop Down",
|
||||
${constants.FIELD_TYPE_MULTI_SELECT} => "Multiple-Selection Box",
|
||||
${constants.FIELD_TYPE_TEXTAREA} => "Large Text Box",
|
||||
|
||||
@ -1366,6 +1366,12 @@
|
||||
Either no products have been defined to enter [% terms.bugs %] against or you have not
|
||||
been given access to any.
|
||||
|
||||
[% ELSIF error == "number_not_integer" %]
|
||||
[% title = "Integer Value Required" %]
|
||||
The value '[% num FILTER html %]' in the
|
||||
<em>[% field_descs.$field FILTER html %]</em> field
|
||||
is not an integer value (i.e. a whole number).
|
||||
|
||||
[% ELSIF error == "number_not_numeric" %]
|
||||
[% title = "Numeric Value Required" %]
|
||||
The value '[% num FILTER html %]' in the
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user