Posts tagged eprints
EPrints Plugin – Users Mass Mailer
0Nella gestione di un repository istituzionale ad accesso aperto come OASI, basato su ePrints, vi può essere la necessità di inviare una mail a tutti gli utenti (o ad una particolare categoria) per notificare eventuali manutenzioni, upgrade, disservizi o novità importanti.
Nativamente ePrints non consente di effettuare un Mass Mailing così un tale Greg Brian ha creato uno script che permette di inviare, da consolle, notifiche globali agli utenti.
Indubbiamente interessante ed utile, anche se poter disporre di tale funzionalità dall’interfaccia di gestione del repository è infinitamente più comodo. Così, prendendo spunto dal suo lavoro, modus operandi tipico del mondo open source, ho lavorato ad un Plugin che permettesse di inviare mail a tutti gli utenti o solamente ad una determinata categoria di essi.
Il risultato è un plugin estremamente semplice da usare, come si può vedere dallo screenshot.
Se siete interessati, potete scaricare le istruzioni ed il codice da questo link: http://files.eprints.org/593/
About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.
EPrints upgrade to 3.2 and RoMeO patch v1.1
0Hi all,
i decide to wrote this post in english because i’m talking about an international project, EPrints:
EPrints is the most flexible platform for building high quality, high value repositories, recognised as the easiest and fastest way to set up repositories of research literature, scientific data, student theses, project reports, multimedia artefacts, teaching materials, scholarly collections, digitised records, exhibitions and performances.
At the moment i’m working hard to build and configure an Institutional repository (called “OASi”) for research products of University of Siena.Since it is still in beta stage, i’ve upgraded to newest version 3.2 and i was impressed of all upgraded and innovations they made in that release !
Yep, as in any major releases, there are some changes and fixes to do but i spend only few hours fixing all repository issues.
One of those fix involve my RoMeO patch that let thedepositor to know, if found, editorial policies about your eprint. The patch modify Upload.pm in /perl_lib/EPrints/Plugin/InputForm/Component adding a table that show details about the ISSN’s policies grabbed from Sherpa/RoMeO.
Tecnically, my patch simply did queryes on the new RoMeO v2.4 API asking for infos about specified ISSN.
If you like the idea, try it: click here to get RoMeo.tar.gz !
About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.
EPrints: ESSPER Import Plugins
0Come sapete sono alle prese con EPrints in merito ad un importante progetto dell’Università di Siena. Attualmente sto dedicando tanto tempo allo sviluppo di nuovi plugin e sistemi per importare metadati relativi alle pubblicazioni che i Ns docenti e ricercatori hanno in giro per il mondo di Internet, tra cui la banca dati dell’Associazione ESSPER. Come fare per importare i metadati presenti su questa banca dati ? Beh, non c’è il modo di esportare, come per altre, in formati standard quali BibTeX o MARC ma, solamente per chi è iscritto, si può esportare in RefWorks. Insomma, EPrintsamente parlando, un disastro
.
Nella pagina però noto una certa regolarità nella presentazione dei metadati, oltre alla possibilità di recuperare ciascun record direttamente dal parametro GET codice dell’URL, così decido di dare una sbirciata al sorgente html. Noto che non vi sono particolari difficoltà nella realizzazione di un semplice parser, basato sulle Regular Expressions, per catturare i metadati che ci interessano. Così decido di fare un tentativo e scrivo qualche riga di codice in Perl:
my $browser = LWP::UserAgent->new; my $url = "http://www.biblio.liuc.it/scripts/essper/ricerca.asp?tipo=scheda&codice=150406"; my $response = $browser->get( $url ); my $plain_text = HTML::FormatText->new(leftmargin => 0, rightmargin => 256)->format(parse_html($response->content)); my %fields = (); my @vars = split(/\n/,$plain_text); foreach (@vars) { my $line = $_; if($line =~ m/^\s*(Autori|Titolo|Periodico|Anno|Volume|Fascicolo|Pagina iniziale|Pagina finale|SICI):\s*(.*)\s*$/) { print "$1: $2\n"; $fields{$1} = $2; } }
Carramba…funziona ! Praticamente nessun magheggio strano: faccio un fetch dell’html della pagina, elimino tutti i tags ed il codice html (HTML::FormatText) ed eseguo una operazione di matching riga per riga usando le perl Re salvando i metadati e relativo valore dentro una lista hash.
Riesco pertanto ad estrarre i seguenti metadati:
- Titolo
- Autori
- Rivista
- Anno
- Pagina iniziale, pagina finale, volume, serie, fascicolo
- ISSN (direttamente dal SICI)
Interessante approfondire quest’ultimo punto sull’estrazione dell’ISSN. Il SICI contiene sia ISSN della rivista che altri dati univoci dell’articolo, organizzati in maniera univoca. Attraverso una espressione regolare riesco ad estrapolare l’ISSN:
my $sici = $fields{SICI};
if($sici =~ m/^(\d+)-(\d+).*\s*$/) {
print "ISSN: $1-$2\n";
}
A questo punto sviluppare un plugin di importazione per EPrints è un gioco da ragazzi: devo preoccparmi esclusivamente di fare l’override delle classi new, input_fh e convert_input, aggiungendo alcuni controlli per verificare che l’utente inserisca o l’URL completo (da cui poi estrapolo il numero del documento) o direttamente il numero:
if ($ids =~ /^http:.*/) {
my $query = CGI->new("$ids");
$ids = $query->param('codice');
}
if (!($ids =~ /^\d+/)) {
print "Invalid ID: $ids\n";
}
ed alla fine ecco a voi il Plugin di Import EssPer.pm pronto per essere copiato dentro /perl_lib/EPrints/Plugin/Import/ !
About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.
E-Prints: aggiungere campo nella scheda utente
0
Mi sono trovato a dover aggiungere il campo “Codice Fiscale” sul nostro ePrints. Dopo vari smazzamenti, ecco un breve tutorial che descive come fare.
Le modifiche necessarie saranno esclusivamente sui file dell’istanza di ePrints e non sui file di sistema. Si inizia con il file {istanza}/cfg/cfg.d/user_fields.pl aggiungendo le righe necessarie (in grassetto quelle aggiunte):
$c->{fields}->{user} = [
{
'name' => 'name',
'type' => 'name',
'render_order' => 'gf',
},{
'name' => 'cf',
'type' => 'text',
},{
'name' => 'dept',
'type' => 'text',
},
poi si procede all'aggiornamento del database con il comando bin/epadmin update_database_structure {istanza} che vi comunicherà, a fine esecuzione, l'aggiunta del campo cf nella tavola users. A questo punto andiamo ad aggiungere il campo di immissione nella pagina dell'account dal file {istanza}/cfg/workflows/user/default.xml:
<component type="Field::Multi">
<title><epc:phrase ref="user_section_personal" /></title>
<field ref="name" required="yes" />
<field ref="cf"/>
<field ref="dept"/>
<field ref="org"/>
<field ref="address"/>
<field ref="country"/>
<field ref="url"/>
</component>
Nel caso desideriate rendere obbligatorio tale campo, basta aggiungere l'attributo required="yes" al relativo campo. A questo punto i passi necessari sono stati fatti ma, magari, avete la necessità di poter ricercare un utente anche attraverso il suo Codice Fiscale. Nel file {istanza}/cfg/cfg.d/user_search.pl aggiungete:
$c->{search}->{user} =
{
search_fields => [
{ meta_fields => [ "name", ] },
{ meta_fields => [ "username", ] },
{ meta_fields => [ "userid", ] },
{ meta_fields => [ "cf", ] },
{ meta_fields => [ "dept","org" ] },
{ meta_fields => [ "address","country", ] },
{ meta_fields => [ "usertype", ] },
{ meta_fields => [ "email" ] },
],
In più, se volete visualizzare il Codice Fiscale nella pagina dell’utente (quella visibile pubblicamente), potete farlo attraverso il file {istanza}/cfg/cfg.d/user_render.pl:
$p = $session->make_element( “p” );
$p->appendChild( $user->render_description() );
# Address, Starting with dept. and organisation…
if( $user->is_set( “cf” ) )
{
$p->appendChild( $session->make_element( “br” ) );
$p->appendChild( $user->render_value( “cf” ) );
}
if( $user->is_set( “dept” ) )
{
$p->appendChild( $session->make_element( “br” ) );
$p->appendChild( $user->render_value( “dept” ) );
}
I Vostri feedback sono benvenuti !
About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.
Personalizzare ePrints – Aggiungere nuovi campi
0Se avete, ad esempio, la necessità di aggiungere un nuovo campo (ad esempio distinguere se un brevetto è nazionale o internazionale) dovete fare alcune modifiche non proprio banali. La guida è anche sul Wiki di ePrints ed i passi sono i seguenti:
1) Aggiungete la definizione nel file cfg/cfg.d/eprint_fields.pm:
{
‘name’ => ‘patent_type’,
‘type’ => ‘set’,
‘options’ => [
'nazionale',
'internazionale',
],
‘input_style’ => ‘medium’,
},
In questo caso ho aggiunto la possibilità di definire un brevetto (patent) nazionale o internazionale.
2) Aggiungete le frasi nel relativo file di lingua cfg/lang/it/phrases/eprint_fields.xml
<epp:phrase id=”eprint_fieldname_patent_type”>Tipo brevetto</epp:phrase>
<epp:phrase id=”eprint_fieldhelp_patent_type”></epp:phrase>
<epp:phrase id=”eprint_fieldopt_patent_type_nazionale”>Nazionale</epp:phrase>
<epp:phrase id=”eprint_fieldopt_patent_type_internazionale”>Internazionale</epp:phrase>
3) Aggiungete il campo alle tabelle “eprint” :
patent_type VARCHAR(255)
e “eprint__ordervalues_it“:
patent_type TEXT
4) Adesso potete aggiungere il nuovo campo alla lista dei possibili indici per le ricerche avanzate. Editate il file cfg/cfg.d/eprint_search_advanced.pl:
search_fields => [
...
{ meta_fields => [ "patent_type" ] },
…
],
5) Adesso aggiungete il nuovo campo al workflow nel file cfg/workflows/eprint/default.xml:
<epc:if test=”type = ‘patent’”><component><field ref=”patent_type” required=”yes” /></component></epc:if>
6) Aggiornate ePrints e riavviate Apache:
./bin/epadmin update_database_structure ARCHIVEID apachectl restart
il risultato sarà questo (nel wordkflow dei Brevetti, ovviamente):
oltre ad avere anche, nella ricerca avanzata, la relativa opzione di ricerca:

About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.
Personalizzare ePrints – Impostare lingua italiana
3Per un progetto di lavoro, da qualche giorno sto lavorando su ePrints cercando di addattarlo alle nostre esigenze. ePrints è davvero ben scritto e strutturato ma ha alcune carenze di documentazione. Per fortuna, però, la ML di supporto è davvero veloce nel risolvere i problemi. Sia per scopo di memorandum personale che per aiutare eventuali sventurati che dovranno mettere le mani su ePrints, ecco qualche tip sulla personalizzazione.
Creare una istanza in italiano
in {istanza}/cfg/lang aggiungere cartella it e relative 3 sottodirectory: phrases static templates con i relativi files:
|-- phrases| |-- approve_with_email.xml| |-- archive_name.xml| |-- deposit_agreement.xml| |-- document_formats.xml| |-- document_security.xml| |-- dynamic.xml| |-- eprint_fields.xml| |-- eprint_order.xml| |-- eprint_types.xml| |-- intro.xml| |-- intro_mini.xml| |-- mail_bounce_reason.xml| |-- mail_delete_reason.xml| |-- mail_email.xml| |-- mail_password.xml| |-- mail_sig.xml| |-- news.xml| |-- render.xml| |-- subject_check.xml| |-- user_fields.xml| |-- user_order.xml| |-- validate.xml| |-- views.xml| |-- warnings.xml| |-- workflow.xml| `-- zz_webcfg.xml|-- static| |-- contact.xpage| |-- error401.xpage| |-- help| | `-- index.xpage| |-- index.xpage| |-- information.xpage| |-- policies.xpage| `-- vlit.xpage`-- templates`-- default.xml
poi modificate il file in {istanza}/cfg/cfg.d/languages.pl:
$c->{defaultlanguage} = 'it';$c->{languages} = [ 'it', 'en' ];
le traduzioni delle frasi vanno nei files .xml della directory phrases, le modifiche alle pagine web statiche (come la pagina principale) sono nella cartella static ed i file hanno l’estensione .xpage
A breve altre tips su:
- aggiungere campi persoanlizzati
- aggiungere indici di ricerca
About Michele Pinassi
Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale come attivista nel Movimento Siena 5 Stelle.

Commenti recenti