Bugzilla:Extension Notes: Difference between revisions
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.