EPrints Technical Mailing List Archive
See the EPrints wiki for instructions on how to join this mailing list and related information.
Message: #00358
< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First
[EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- To: eprints-tech@ecs.soton.ac.uk
- Subject: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: Tim Brody <tdb2@ecs.soton.ac.uk>
- Date: Wed, 04 Apr 2012 17:31:50 +0100
You may want to backport EP_TRIGGER_REMOVED from trunk.
eprint_status_change is called when an eprint is moved (but you can't
programmatically block the move).
Cheers,
Tim.
On Wed, 2012-04-04 at 16:44 +0100, John Salter wrote:
> For render_fileinfo Tim's suggestion would be OK, but what about non-rendering methods - like 'remove'?
> Currently in a modified ~/perl_lib/EPrints/DataObj/Eprint.pm, I have:
>
> sub remove
> {
> ...
>
> #JLRS Added code
> my $repo = $self->{session}->get_repository->get_id;
> if( $repo eq "sherpawhiterose" ){
> # some stuff that's only applicable to 'sherpawhiterose'
> ...
> }
> #/JLRS Added code
>
> return $success;
> }
>
> Ideally this would be done somewhere in ~/archives/sherpawhiterose/cfg/, and not affect any other archives.
> Could I wrap a set of rules with some kind of archive-specific selector:
> [in this archive]
> *EPrints::DataObj::EPrint::remove = \&patched_DataObj_EPrint_remove;
> *EPrints::DataObj::EPrint::move_to_archive = \&patched_DataObj_EPrint_move_to_archive;
> [/in this archive]
>
> Cheers,
> John
>
> -----Original Message-----
> From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Sebastien Francois
> Sent: 04 April 2012 16:05
> To: eprints-tech@ecs.soton.ac.uk
> Subject: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
>
> On 04/04/12 15:49, John Salter wrote:
> > I really meant to suggest making the change in ~/archives/[ID]/cfg/cfg.d/core_overrides.pl
> > - would a change in there result in this inheritance?
> I think it would since EPrints::DataObj::EPrint.pm is loaded once by the
> webserver and you're changing it.
>
> What about Tim Brody's suggestion? That would be rather clean.
>
> Alternatively, try something like that:
>
> *EPrints::DataObj::EPrint::render_fileinfo = \&patched_render_fileinfo;
>
>
> sub patched_render_fileinfo
> {
> my( $session, $field, $value, $alllangs, $nolink, $eprint ) = @_;
>
> if( $session->can_call( 'local_render_fileinfo' ) )
> {
> return $session->call( 'local_render_fileinfo', $session, $field, $value, $alllangs, $nolink, $eprint );
> }
>
> # original render_fileinfo code follows:
> # ...
> }
>
> $c->{local_render_fileinfo} = sub {
>
> # your custom code
>
> };
>
>
>
> If you don't define $c->{local_render_fileinfo} in your other
> repositories, then the original code will be executed.
>
> Seb.
>
> > I need to make the change in one archive only!
> >
> > Cheers,
> > John
> >
> > -----Original Message-----
> > From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Sebastien Francois
> > Sent: 04 April 2012 15:41
> > To: eprints-tech@ecs.soton.ac.uk
> > Subject: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
> >
> > Good! Yes I'd add a file in cfg.d/ as you suggested. However be aware
> > that other repositories set up there (ie. archives/[id1],
> > archives/[id2]...) will inherit the change!
> >
> > Seb.
> >
> > On 04/04/12 15:33, John Salter wrote:
> >> Thanks Seb, works like a dream!
> >>
> >> Do you have any 'good practice' advice on how to do this within an archive?
> >> I already have ~/archives/[ID]/cfg/plugins/... for over-riding plugins.
> >> Would your advice be to add something within there, or to add something like cfg.d/core_overrides.pl?
> >>
> >> Cheers,
> >> John
> >>
> >> -----Original Message-----
> >> From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Sebastien Francois
> >> Sent: 04 April 2012 12:29
> >> To: eprints-tech@ecs.soton.ac.uk
> >> Subject: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
> >>
> >> What about:
> >>
> >> *EPrints::DataObj::EPrint::render_fileinfo = \&my_render_fileinfo;
> >>
> >> sub my_render_fileinfo
> >> {
> >> # your code ...
> >> }
> >>
> >> Seb.
> >>
> >>
> >> On 04/04/12 12:18, John Salter wrote:
> >>> I'm trying to do something the 'right way'*.
> >>> This advice: http://wiki.eprints.org/w/Read_Only_Directories says I shouldn't be editing anything under eprints3/perl_lib/ (with a couple of exceptions).
> >>>
> >>> I need to alter the 'render_fileinfo' subroutine in ~/perl_lib/EPrints/DataObj/EPrint.pm.
> >>> How do I achieve this without:
> >>> - altering the Eprint.pm file
> >>> - ending up with some 'Subroutine render_fileinfo redefined' messages
> >>> - using "no warnings 'redefine';" ;o)
> >>>
> >>> I've tried various attempts - without success.
> >>> I'm sure it can be done, and I'm sure it's a bit of perl magic I'm missing, and hopefully someone here can help!
> >>>
> >>> Cheers,
> >>> John
> >>>
> >>> *http://blogs.ecs.soton.ac.uk/oneshare/2009/09/25/taking-stock-and-mopping-up-the-mess-i-made-of-eprints/
> >>> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> >>> *** Archive: http://www.eprints.org/tech.php/
> >>> *** EPrints community wiki: http://wiki.eprints.org/
> >> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> >> *** Archive: http://www.eprints.org/tech.php/
> >> *** EPrints community wiki: http://wiki.eprints.org/
> >>
> >> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> >> *** Archive: http://www.eprints.org/tech.php/
> >> *** EPrints community wiki: http://wiki.eprints.org/
> > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> > *** Archive: http://www.eprints.org/tech.php/
> > *** EPrints community wiki: http://wiki.eprints.org/
> >
> > *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> > *** Archive: http://www.eprints.org/tech.php/
> > *** EPrints community wiki: http://wiki.eprints.org/
>
> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> *** Archive: http://www.eprints.org/tech.php/
> *** EPrints community wiki: http://wiki.eprints.org/
>
> *** Options: http://mailman.ecs.soton.ac.uk/mailman/listinfo/eprints-tech
> *** Archive: http://www.eprints.org/tech.php/
> *** EPrints community wiki: http://wiki.eprints.org/
Attachment:
signature.asc
Description: This is a digitally signed message part
- References:
- [EP-tech] Altering DajaObj/Eprint.pm behaviour without altering core code
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: Sebastien Francois <sf2@ecs.soton.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: Sebastien Francois <sf2@ecs.soton.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: Sebastien Francois <sf2@ecs.soton.ac.uk>
- [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- From: John Salter <J.Salter@leeds.ac.uk>
- [EP-tech] Altering DajaObj/Eprint.pm behaviour without altering core code
- Prev by Date: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- Next by Date: [EP-tech] Re: XAPIAN Search
- Previous by thread: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- Next by thread: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code
- Index(es):
