Difference between revisions of "Adding a Field to a Live Repository"
m (appears out of date and needing an update) |
(Brought the most recent documentation to the top, so the warnings about needing to modify the SQL tables was clearly referring to 3.0 and not 3.3+.) |
||
| Line 3: | Line 3: | ||
[[Category: Out of Date]] | [[Category: Out of Date]] | ||
| − | + | === EPrints 3.3+ === | |
| − | + | Follow the instructions as you would for [[HOW TO: Add a New Field]]. | |
| − | + | As described there, you define your new fields in... | |
| + | * <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/eprint_fields.pl</code> for EPrint-level metadata, | ||
| + | * <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/document_fields.pl</code> for document-level metadata (this file doesn't exist by default, but is honoured), | ||
| + | * and <code>/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/user_fields.pl</code> for user metadata, etc etc. | ||
| − | |||
| − | + | Since a repository's <code>eprint_fields.pl</code> will override a flavour's <code>eprint_fields.pl</code> based on them both having the same file name, should you only wish to add to a flavour's fields rather than replace them, you may prefer to give your archive's local version a file name such as <code>eprint_fields_local.pl</code>, and then inside have only your new field(s): | |
| − | + | push @{$c->{fields}->{eprint}}, | |
| + | |||
| + | { | ||
| + | name => 'my_first_new_field', | ||
| + | type => 'set', | ||
| + | options => [ | ||
| + | 'yes', | ||
| + | 'no', | ||
| + | 'maybe', | ||
| + | ], | ||
| + | input_rows => 1, | ||
| + | }, | ||
| + | |||
| + | { | ||
| + | name => 'my_second_new_field', | ||
| + | type => 'set', | ||
| + | options => [ | ||
| + | 'yes', | ||
| + | 'no', | ||
| + | 'maybe', | ||
| + | ], | ||
| + | input_rows => 1, | ||
| + | }, | ||
| + | |||
| + | ; | ||
| − | |||
| − | + | Simply make sure your <code>push</code>, is adding your field to the correct dataset you wish to add fields to - in this case an <code>eprint</code> dataset. | |
| + | |||
| + | |||
| + | |||
| + | Then, once you have added your new field definitions to the appropriate configuration file you can run ''update'' via [[API:bin/epadmin|epadmin]] from the shell: | ||
| + | |||
| + | ./bin/epadmin update ARCHIVEID | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=== EPrints 3.1+ === | === EPrints 3.1+ === | ||
| − | + | EPrint 3.3's ''update'' is a synonym of the ''update_database_structure'' method available from Eprints 3.1+: | |
./bin/epadmin update_database_structure ARCHIVEID | ./bin/epadmin update_database_structure ARCHIVEID | ||
| − | + | ||
| + | === EPrints 3.0 === | ||
| + | |||
| + | To add a field to a live eprints archive in Eprints 3.0 you have to modify the SQL tables. | ||
| + | Before you start this, you may wish to BackupTheDatabase. | ||
| + | |||
| + | * Add the new columns to the appropriate tables. There are no longer four separate tables for eprints as there were in EP2 (<code>archive</code>, <code>buffer</code> etc), so it's simpler. | ||
| + | ** For a field defined in <code>eprint_fields.pl</code>, the tables are <code>eprint</code> and <code>eprint__ordervalues_en</code> (replacing <code>en</code> with your language as required). | ||
| + | ** For a field defined in <code>document_fields.pl</code>, you want <code>document</code> and <code>document__ordervalues_en</code>. | ||
| + | ** And so on... | ||
| + | * The column types are the same as for EP2, ie in <code>eprint</code> you want a type appropriate to the type of your field exactly as described in the Recipe for EP2, while in <code>eprint__ordervalues_en</code> you want <code>text</code> irrespective of your field type. | ||
| + | |||
| + | |||
| + | === EPrints 2.x === | ||
| + | |||
| + | See historical versions of this wiki page. | ||
Revision as of 17:08, 17 July 2023
EPrints 3.3+
Follow the instructions as you would for HOW TO: Add a New Field.
As described there, you define your new fields in...
/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/eprint_fields.plfor EPrint-level metadata,/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/document_fields.plfor document-level metadata (this file doesn't exist by default, but is honoured),- and
/opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/user_fields.plfor user metadata, etc etc.
Since a repository's eprint_fields.pl will override a flavour's eprint_fields.pl based on them both having the same file name, should you only wish to add to a flavour's fields rather than replace them, you may prefer to give your archive's local version a file name such as eprint_fields_local.pl, and then inside have only your new field(s):
push @{$c->{fields}->{eprint}},
{
name => 'my_first_new_field',
type => 'set',
options => [
'yes',
'no',
'maybe',
],
input_rows => 1,
},
{
name => 'my_second_new_field',
type => 'set',
options => [
'yes',
'no',
'maybe',
],
input_rows => 1,
},
;
Simply make sure your push, is adding your field to the correct dataset you wish to add fields to - in this case an eprint dataset.
Then, once you have added your new field definitions to the appropriate configuration file you can run update via epadmin from the shell:
./bin/epadmin update ARCHIVEID
EPrints 3.1+
EPrint 3.3's update is a synonym of the update_database_structure method available from Eprints 3.1+:
./bin/epadmin update_database_structure ARCHIVEID
EPrints 3.0
To add a field to a live eprints archive in Eprints 3.0 you have to modify the SQL tables. Before you start this, you may wish to BackupTheDatabase.
- Add the new columns to the appropriate tables. There are no longer four separate tables for eprints as there were in EP2 (
archive,bufferetc), so it's simpler.- For a field defined in
eprint_fields.pl, the tables areeprintandeprint__ordervalues_en(replacingenwith your language as required). - For a field defined in
document_fields.pl, you wantdocumentanddocument__ordervalues_en. - And so on...
- For a field defined in
- The column types are the same as for EP2, ie in
eprintyou want a type appropriate to the type of your field exactly as described in the Recipe for EP2, while ineprint__ordervalues_enyou wanttextirrespective of your field type.
EPrints 2.x
See historical versions of this wiki page.