Plugin per EPrints per la generazione di identificatori persistenti urn:nbn
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
EPrints/NBN
README.md

README.md

EPRINTS NBN

Plugin per EPrints per l'assegnazione automatica di identificatori urn:nbn

Installazione

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

credenziali di autenticazione al webservice, ottenute in seguito all'adesione al servizio

{ARCHIVE}/cfg/cfg.d/nbn.pl

  $c->{nbnuser} = '';
  $c->{nbnpassword} = '';

Nuovi fields

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

Visualizzazione di una checkbox per la generazione dell'nbn

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>

Salvataggio dell'nbn

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");
      }
    }
  }

Visualizzazione dell'nbn nella pagina di dettaglio dell'eprint

modificare {ARCHIVE}/cfg/citations/eprint/summary_page.xml o {ARCHIVE}/cfg/cfg.d/eprint_render.pl per visualizzare il contenuto del field nbn

Licenza

Public Domain