Bugzilla:Extension Notes

From MozillaWiki
Revision as of 10:15, 1 December 2010 by Gerv (talk | contribs) (Created page with "==Adding New Fields To Bugs== To add new fields to a bug, you need to do the following: * Add an <tt>install_update_db</tt> hook to add the fields by calling <tt>Bugzilla::Fiel...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Adding New Fields To Bugs

To add new fields to a bug, you need to do the following:

  • Add an install_update_db hook to add the fields by calling Bugzilla::Field->create (only if the field doesn't already exist). Here's what it might look like for a single field:
my $field = new Bugzilla::Field({ name => $name });
return if $field;

$field = Bugzilla::Field->create({
    name        => $name,
    description => $description,
    type        => $type,        # From list in Constants.pm
    enter_bug   => 0,
    buglist     => 0,
    custom      => 1,
});
  • Push the name of the field onto the relevant arrays in the bug_columns and bug_fields hooks.
  • If you want direct accessors, or other functions on the object, you need to add a BEGIN block to your Extension.pm:
BEGIN { 
   *Bugzilla::Bug::is_foopy = \&_bug_is_foopy; 
}

...

sub _bug_is_foopy {
    return $_[0]->{'is_foopy'};
}

Adding New Fields To Other Things

If you are adding the new fields to an object other than a bug, you need to go a bit lower-level.

  • In install_update_db, use bz_add_column instead
  • Push on the columns in object_columns and object_update_columns instead of bug_columns.
  • Add validators for the values in object_validators

The process for adding accessor functions is the same.

Adding Configuration Panels

As well as using the config_add_panels hook, you will need a template to define the UI strings for the panel. See the templates in template/en/default/admin/params for examples, and put your own template in template/en/default/admin/params in your extension's directory.