$self->{_old_product_name} = $old_product->name;
# Delete fields that depend upon the old Product value.
delete $self->{choices};
- delete $self->{milestoneurl};
$product_changed = 1;
}
return \@comments;
}
-sub milestoneurl {
- my ($self) = @_;
- return $self->{'milestoneurl'} if exists $self->{'milestoneurl'};
- return '' if $self->{'error'};
-
- $self->{'milestoneurl'} = $self->product_obj->milestone_url;
- return $self->{'milestoneurl'};
-}
-
sub product {
my ($self) = @_;
return $self->{product} if exists $self->{product};
COLUMN => 'id',
DELETE => 'CASCADE'}},
description => {TYPE => 'MEDIUMTEXT'},
- milestoneurl => {TYPE => 'TINYTEXT', NOTNULL => 1,
- DEFAULT => "''"},
isactive => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 1},
votesperuser => {TYPE => 'INT2', NOTNULL => 1,
_move_data_nomail_into_db();
# The products table lacked sensible defaults.
- $dbh->bz_alter_column('products', 'milestoneurl',
- {TYPE => 'TINYTEXT', NOTNULL => 1, DEFAULT => "''"});
+ if ($dbh->bz_column_info('products', 'milestoneurl') {
+ $dbh->bz_alter_column('products', 'milestoneurl',
+ {TYPE => 'TINYTEXT', NOTNULL => 1, DEFAULT => "''"});
+ }
if ($dbh->bz_column_info('products', 'disallownew')){
$dbh->bz_alter_column('products', 'disallownew',
{TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 0});
_set_attachment_comment_types();
+ $dbh->bz_drop_column('products', 'milestoneurl');
+
################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
################################################################
{TYPE => 'BOOLEAN', NOTNULL => 1}, 0);
}
- $dbh->bz_add_column('products', 'milestoneurl',
- {TYPE => 'TINYTEXT', NOTNULL => 1}, '');
$dbh->bz_add_column('components', 'initialqacontact',
{TYPE => 'TINYTEXT'});
$dbh->bz_add_column('components', 'description',
name
classification_id
description
- milestoneurl
isactive
votesperuser
maxvotesperbug
name
description
defaultmilestone
- milestoneurl
isactive
votesperuser
maxvotesperbug
description => \&_check_description,
version => \&_check_version,
defaultmilestone => \&_check_default_milestone,
- milestoneurl => \&_check_milestone_url,
isactive => \&Bugzilla::Object::check_boolean,
votesperuser => \&_check_votes_per_user,
maxvotesperbug => \&_check_votes_per_bug,
sub set_name { $_[0]->set('name', $_[1]); }
sub set_description { $_[0]->set('description', $_[1]); }
sub set_default_milestone { $_[0]->set('defaultmilestone', $_[1]); }
-sub set_milestone_url { $_[0]->set('milestoneurl', $_[1]); }
sub set_is_active { $_[0]->set('isactive', $_[1]); }
sub set_votes_per_user { $_[0]->set('votesperuser', $_[1]); }
sub set_votes_per_bug { $_[0]->set('maxvotesperbug', $_[1]); }
###############################
sub description { return $_[0]->{'description'}; }
-sub milestone_url { return $_[0]->{'milestoneurl'}; }
sub is_active { return $_[0]->{'isactive'}; }
sub votes_per_user { return $_[0]->{'votesperuser'}; }
sub max_votes_per_bug { return $_[0]->{'maxvotesperbug'}; }
my $id = $product->id;
my $name = $product->name;
my $description = $product->description;
- my $milestoneurl = $product->milestone_url;
my isactive = $product->is_active;
my votesperuser = $product->votes_per_user;
my maxvotesperbug = $product->max_votes_per_bug;
description => scalar $cgi->param('description'),
version => scalar $cgi->param('version'),
defaultmilestone => scalar $cgi->param('defaultmilestone'),
- milestoneurl => scalar $cgi->param('milestoneurl'),
isactive => scalar $cgi->param('is_active'),
votesperuser => scalar $cgi->param('votesperuser'),
maxvotesperbug => scalar $cgi->param('maxvotesperbug'),
$product->set_name($product_name);
$product->set_description(scalar $cgi->param('description'));
$product->set_default_milestone(scalar $cgi->param('defaultmilestone'));
- $product->set_milestone_url(scalar $cgi->param('milestoneurl'));
$product->set_is_active(scalar $cgi->param('is_active'));
$product->set_votes_per_user(scalar $cgi->param('votesperuser'));
$product->set_votes_per_bug(scalar $cgi->param('maxvotesperbug'));
</tr>
[% IF Param('usetargetmilestone') -%]
- <tr>
- <th align="right">URL describing milestones for this product:</th>
- <td><input type="text" size="64" maxlength="255" name="milestoneurl"
- value="[% product.milestoneurl FILTER html %]">
- </td>
- </tr>
<tr>
<th align="right">Default milestone:</th>
<td>
</p>
[% END %]
-[% IF changes.milestoneurl.defined %]
- <p>
- Updated milestone URL
- [% IF changes.milestoneurl.0 != '' %]
- from<br> <a href="[%- changes.milestoneurl.0 FILTER html %]">
- [%- changes.milestoneurl.0 FILTER html %]</a>
- [% END %]
- to
- [% IF product.milestone_url != '' %]
- <br><a href="[%- product.milestone_url FILTER html %]">
- [%- product.milestone_url FILTER html %]</a>.
- [% ELSE %]
- be empty.
- [% END %]
- </p>
-[% END %]
-
[% IF changes.defaultmilestone.defined %]
<p>
Updated default milestone from '[% changes.defaultmilestone.0 FILTER html %]' to
[% IF Param("usetargetmilestone") && bug.target_milestone %]
<tr>
- <td class="field_label">
- <label for="target_milestone"><b>
- [% IF bug.milestoneurl %]
- <a href="[% bug.milestoneurl FILTER html %]">
- [% END %]
- Target Milestone[% "</a>" IF bug.milestoneurl %]
- [%%]</b></label>:
+ <th class="field_label">
+ <label for="target_milestone">
+ <a href="page.cgi?id=fields.html#target_milestone">
+ Target Milestone</a></label>:
</td>
[% PROCESS select selname = "target_milestone" %]
</tr>