EPrints Technical Mailing List Archive

See the EPrints wiki for instructions on how to join this mailing list and related information.

Message: #00343


< 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


Thanks - I think Seb's answer is what I'm looking for (thanks Seb!).
I need to tweak other methods - like 'remove'.

Cheers,
John


-----Original Message-----
From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Tim Brody
Sent: 04 April 2012 13:00
To: eprints-tech@ecs.soton.ac.uk
Subject: [EP-tech] Re: Altering DajaObj/Eprint.pm behaviour without altering core code

On Wed, 2012-04-04 at 12:18 +0100, 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!

You can override the render method in your citation:

<epc:print expr="fileinfo" opts="value=render_fileinfo" />

$c->{render_fileinfo} = sub { ... };

(value becomes "render_value" ... clunky I know)

Check perl_lib/EPrints/Script::print has support for opts if it doesn't
work.

/Tim.