Commit 61ac61f0 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 357315: Add the ability to create <textarea> fields

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
parent e2ced369
......@@ -120,6 +120,7 @@ use File::Basename;
FIELD_TYPE_FREETEXT
FIELD_TYPE_SINGLE_SELECT
FIELD_TYPE_MULTI_SELECT
FIELD_TYPE_TEXTAREA
USAGE_MODE_BROWSER
USAGE_MODE_CMDLINE
......@@ -342,6 +343,7 @@ use constant FIELD_TYPE_UNKNOWN => 0;
use constant FIELD_TYPE_FREETEXT => 1;
use constant FIELD_TYPE_SINGLE_SELECT => 2;
use constant FIELD_TYPE_MULTI_SELECT => 3;
use constant FIELD_TYPE_TEXTAREA => 4;
# The maximum number of days a token will remain valid.
use constant MAX_TOKEN_AGE => 3;
......
......@@ -126,6 +126,7 @@ use constant SQL_DEFINITIONS => {
FIELD_TYPE_FREETEXT, { TYPE => 'varchar(255)' },
FIELD_TYPE_SINGLE_SELECT, { TYPE => 'varchar(64)', NOTNULL => 1,
DEFAULT => "'---'" },
FIELD_TYPE_TEXTAREA, { TYPE => 'MEDIUMTEXT' },
};
# Field definitions for the fields that ship with Bugzilla.
......@@ -254,7 +255,7 @@ sub _check_type {
my $saved_type = $type;
# The constant here should be updated every time a new,
# higher field type is added.
(detaint_natural($type) && $type <= FIELD_TYPE_MULTI_SELECT)
(detaint_natural($type) && $type <= FIELD_TYPE_TEXTAREA)
|| ThrowCodeError('invalid_customfield_type', { type => $saved_type });
return $type;
}
......
......@@ -665,7 +665,11 @@ sub create {
},
# Wrap a displayed comment to the appropriate length
wrap_comment => \&Bugzilla::Util::wrap_comment,
wrap_comment => [
sub {
my ($context, $cols) = @_;
return sub { wrap_comment($_[0], $cols) }
}, 1],
# We force filtering of every variable in key security-critical
# places; we have a none filter for people to use when they
......
......@@ -312,11 +312,11 @@ sub diff_strings {
}
sub wrap_comment {
my ($comment) = @_;
my ($comment, $cols) = @_;
my $wrappedcomment = "";
# Use 'local', as recommended by Text::Wrap's perldoc.
local $Text::Wrap::columns = COMMENT_COLS;
local $Text::Wrap::columns = $cols || COMMENT_COLS;
# Make words that are longer than COMMENT_COLS not wrap.
local $Text::Wrap::huge = 'overflow';
# Don't mess with tabs.
......@@ -332,6 +332,7 @@ sub wrap_comment {
}
}
chomp($wrappedcomment); # Text::Wrap adds an extra newline at the end.
return $wrappedcomment;
}
......
......@@ -317,6 +317,12 @@ dl dl > dt {
padding-left: 1em;
}
/* For bug fields */
.uneditable_textarea {
white-space: pre;
font-family: monospace;
}
div.user_match {
margin-bottom: 1em;
}
......
......@@ -76,7 +76,14 @@
[% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %]
<input type="hidden" name="defined_[% field.name FILTER html %]">
[% END %]
[% CASE constants.FIELD_TYPE_TEXTAREA %]
[% INCLUDE global/textarea.html.tmpl
id = field.name name = field.name minrows = 4 maxrows = 8
cols = 60 defaultcontent = value %]
[% END %]
[% ELSIF field.type == constants.FIELD_TYPE_TEXTAREA %]
<div class="uneditable_textarea">[% value FILTER wrap_comment(60)
FILTER html %]</div>
[% ELSE %]
[% value.join(', ') FILTER html %]
[% END %]
......
......@@ -82,6 +82,7 @@
${constants.FIELD_TYPE_FREETEXT} => "Free Text",
${constants.FIELD_TYPE_SINGLE_SELECT} => "Drop Down",
${constants.FIELD_TYPE_MULTI_SELECT} => "Multiple-Selection Box",
${constants.FIELD_TYPE_TEXTAREA} => "Large Text Box",
} %]
[% status_descs = { "UNCONFIRMED" => "UNCONFIRMED",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment