Bugzilla:Extension Notes: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(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...")
 
Line 29: Line 29:
     return $_[0]->{'is_foopy'};
     return $_[0]->{'is_foopy'};
  }
  }
* You don't have to change <tt>Bugzilla/DB/Schema.pm</tt>.


==Adding New Fields To Other Things==
==Adding New Fields To Other Things==

Revision as of 15:22, 6 December 2010

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'};
}
  • You don't have to change Bugzilla/DB/Schema.pm.

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.