Plugin per EPrints per l'assegnazione automatica di identificatori urn:nbn
copiare il contenuto della directory EPrints in {ARCHIVE}/cfg/plugins (installazione locale al singolo archivio) oppure in /perl_lib (installazione globale, usabile da tutti gli archivi nella medesima installazione)
credenziali di autenticazione al webservice, ottenute in seguito all'adesione al servizio
{ARCHIVE}/cfg/cfg.d/nbn.pl
$c->{nbnuser} = '';
$c->{nbnpassword} = '';
gli identificatori urn:nbn saranno salvati in un nuovo field dell'oggetto EPrint (mappato con una nuova colonna della database)
{ARCHIVE}/cfg/cfg.d/eprint_fields.pl
{
name => 'nbncheck',
type => 'boolean',
input_style => 'checkbox',
},
{
name => 'nbn',
type => 'text',
},
{
name => 'nbnlog',
type => 'text',
}
aggiornare la struttura del database
% ./bin/epadmin update_database_structure {ARCHIVE} --verbose
aggiungere la configurazione seguente al workflow (nella posizione più adatta). verrà visualizzata una checkbox ai soli utenti amministratori
{ARCHIVE}/cfg/workflows/eprint/default.xml
<epc:if test="$current_user{usertype} = 'admin'">
<component type="Field::Multi">
<title>NBN</title>
<epc:if test="nbncheck != 'TRUE' ">
<field ref="nbncheck" required="no" />
</epc:if>
<epc:if test="is_set(nbn)">
<field ref="nbn" required="no" />
</epc:if>
</component>
</epc:if>
al salvataggio dell'EPrints (o dopo un'avanzamento di step nel workflow) verrà chiamato il webservice del registro nbn e in seguito ad una risposta positiva verrà salvato l'identificatore nel database
{ARCHIVE}/cfg/cfg.d/eprint_fields_automatic.pl
if ($eprint->is_set("nbncheck")) {
my $nbncheck = $eprint->get_value("nbncheck");
if ( $nbncheck eq 'TRUE' && !$eprint->is_set("nbn") )
{
my $metadataurl = "http://".$c->{host}.
"/cgi/oai2?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai:".
$c->{oai}->{v2}->{archive_id}.":".$eprint->id;
my ($ret, $status) = EPrints::NBN::Webservice::mint( $eprint->get_url(), $metadataurl );
if ($ret eq '201') {
$eprint->set_value("nbn", $status->{'nbn'});
} else {
$eprint->set_value("nbnlog", $status->{'status'});
$eprint->set_value("nbncheck", "FALSE");
}
}
}
modificare {ARCHIVE}/cfg/citations/eprint/summary_page.xml o {ARCHIVE}/cfg/cfg.d/eprint_render.pl per visualizzare il contenuto del field nbn