diff options
author | mkanat%bugzilla.org <> | 2006-07-19 06:10:31 +0200 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2006-07-19 06:10:31 +0200 |
commit | f27aaa287562fb880934565d6a091ab1674bfab4 (patch) | |
tree | ef713bebee235631f1435d0312a0494caed9c8c1 | |
parent | aa205508ed3bc52b02cde76286daaec40aebfa5c (diff) | |
download | bugzilla-f27aaa287562fb880934565d6a091ab1674bfab4.tar.gz bugzilla-f27aaa287562fb880934565d6a091ab1674bfab4.tar.xz |
Bug 344521: Make custom fields optionally functional on enter_bug.cgi
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk
-rw-r--r-- | Bugzilla/DB/Schema.pm | 2 | ||||
-rw-r--r-- | Bugzilla/Field.pm | 19 | ||||
-rwxr-xr-x | checksetup.pl | 3 | ||||
-rwxr-xr-x | enter_bug.cgi | 11 | ||||
-rwxr-xr-x | post_bug.cgi | 7 | ||||
-rw-r--r-- | template/en/default/bug/create/create.html.tmpl | 9 | ||||
-rw-r--r-- | template/en/default/bug/field.html.tmpl | 3 |
7 files changed, 52 insertions, 2 deletions
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index c885987bc..94e457dd0 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -464,6 +464,8 @@ use constant ABSTRACT_SCHEMA => { sortkey => {TYPE => 'INT2', NOTNULL => 1}, obsolete => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, + enter_bug => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'FALSE'}, ], INDEXES => [ fielddefs_name_idx => {FIELDS => ['name'], diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index 2118d41ac..e964141d4 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -82,7 +82,8 @@ use constant DB_COLUMNS => ( 'description', 'type', 'custom', - 'obsolete' + 'obsolete', + 'enter_bug', ); our $columns = join(", ", DB_COLUMNS); @@ -182,6 +183,19 @@ a boolean specifying whether or not the field is obsolete; sub obsolete { return $_[0]->{obsolete} } +=over + +=item C<enter_bug> + +A boolean specifying whether or not this field should appear on +enter_bug.cgi + +=back + +=cut + +sub enter_bug { return $_[0]->{enter_bug} } + =pod @@ -267,6 +281,9 @@ sub match { if (defined $criteria->{obsolete}) { push(@terms, "obsolete=" . ($criteria->{obsolete} ? "1" : "0")); } + if (defined $criteria->{enter_bug}) { + push(@terms, "enter_bug=" . ($criteria->{enter_bug} ? '1' : '0')); + } my $where = (scalar(@terms) > 0) ? "WHERE " . join(" AND ", @terms) : ""; my $records = Bugzilla->dbh->selectall_arrayref( diff --git a/checksetup.pl b/checksetup.pl index 71e43d281..d6a76a0a0 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -4246,6 +4246,9 @@ if (!$dbh->bz_column_info('classifications', 'sortkey')) { } } +$dbh->bz_add_column('fielddefs', 'enter_bug', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}); + # If you had to change the --TABLE-- definition in any way, then add your # differential change code *** A B O V E *** this comment. # diff --git a/enter_bug.cgi b/enter_bug.cgi index 66f4109c7..70c989eca 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -336,6 +336,13 @@ $vars->{'cloned_bug_id'} = $cloned_bug_id; $vars->{'token'} = Bugzilla::Token::IssueSessionToken('createbug:'); + +my @enter_bug_fields = Bugzilla->get_fields({ custom => 1, obsolete => 0, + enter_bug => 1 }); +foreach my $field (@enter_bug_fields) { + $vars->{$field->name} = formvalue($field->name); +} + if ($cloned_bug_id) { $default{'component_'} = $cloned_bug->{'component'}; @@ -357,6 +364,10 @@ if ($cloned_bug_id) { $vars->{'cc'} = formvalue('cc'); } + foreach my $field (@enter_bug_fields) { + $vars->{$field->name} = $cloned_bug->{$field->name}; + } + # We need to ensure that we respect the 'insider' status of # the first comment, if it has one. Either way, make a note # that this bug was cloned from another bug. diff --git a/post_bug.cgi b/post_bug.cgi index b3f668e3f..083f577ac 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -172,10 +172,15 @@ if (!UserInGroup("editbugs") || $cgi->param('assigned_to') eq "") { -value => login_to_id(trim($cgi->param('assigned_to')), THROW_ERROR)); } + +my @enter_bug_field_names = map {$_->name} Bugzilla->get_fields({ custom => 1, + obsolete => 0, enter_bug => 1}); + my @bug_fields = ("version", "rep_platform", "bug_severity", "priority", "op_sys", "assigned_to", "bug_status", "everconfirmed", "bug_file_loc", "short_desc", - "target_milestone", "status_whiteboard"); + "target_milestone", "status_whiteboard", + @enter_bug_field_names); if (Bugzilla->params->{"usebugaliases"}) { my $alias = trim($cgi->param('alias') || ""); diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl index 1749813e3..8b2bcb997 100644 --- a/template/en/default/bug/create/create.html.tmpl +++ b/template/en/default/bug/create/create.html.tmpl @@ -313,6 +313,15 @@ function handleWantsAttachment(wants_attachment) { </td> </tr> + [% USE Bugzilla %] + [% FOREACH field = Bugzilla.get_fields({ obsolete => 0, custom => 1, + enter_bug => 1 }) %] + [% SET value = ${field.name} IF ${field.name}.defined %] + <tr> + [% PROCESS bug/field.html.tmpl editable=1 value_span=3 %] + </tr> + [% END %] + <tr> <td align="right"><strong>Summary:</strong></td> <td colspan="3"> diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl index 9c45b3e57..ece2f64bf 100644 --- a/template/en/default/bug/field.html.tmpl +++ b/template/en/default/bug/field.html.tmpl @@ -25,6 +25,8 @@ # value: The value of the field for this bug. # editable: Whether the field should be displayed as an editable # <input> or as just the plain text of its value. + # value_span: A colspan for the table cell containing + # the field value. #%] <th class="field_label"> @@ -41,6 +43,7 @@ [% CASE constants.FIELD_TYPE_FREETEXT %] <input name="[% field.name FILTER html %]" value="[% value FILTER html %]" + [% "colspan=\"$value_span\"" FILTER none IF value_span %] size="60"> [% END %] [% ELSE %] |