EPrints Technical Mailing List Archive

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

Message: #09829


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

Re: [EP-tech] Conditional EPrints Field Names based on Eprint Type


CAUTION: This e-mail originated outside the University of Southampton.
Okay, so I'm revising what I thought in the first email.

I think a potential starting point is in: /opt/eprints3/perl_lib/EPrints/Plugin/Screen/EPrint/Details.pm around this area:

oreach my $field ( @fields )
{
next unless( $field->get_property( "show_in_html" ) );

my $name = $field->get_name();

my $stage = $self->_find_stage( $eprint, $name );
$stage = "" if !defined $stage;

my $rows = $stages{$stage}->{rows};
my $unspec = $stages{$stage}->{unspec};
$stages{$stage}->{count}++;

my $r_name = $self->_render_name_maybe_with_link( $eprint, $field );

if( $eprint->is_set( $name ) )
{
if( !$field->isa( "EPrints::MetaField::Subobject" ) )
{
push @$rows, $session->render_row(
$r_name,
$eprint->render_value( $field->get_name(), 1 ) );
}
}

Thanks,
James

On Fri, Aug 23, 2024 at 7:37 AM James Kerwin <jkerwin2101@gmail.com> wrote:
Hi All,

We're sprucing up the repository, which is awful news for me.

I need to alter how certain field names are rendered, depending on the EPrint type.

For example, if an item is an Article type I want the abstract to continue to be rendered as "Abstract". For report I want the Abstract to be rendered as "Executive Summary". That sort of thing. I can do this easily enough using epc:if in the summary_page.xml citation, but I want the field names to be consistent in the Details screen where my team log in.

Ideally I would do something in cfg.d, but I think it's going to be more involved than that. I'm aware I could simply conditionally map this in the crosswalks, but I'm trying to limit the number of new fields I create because we already have a lot.

Is there a way I should go about this? Looking at Details.pm I can see a "render_name" sub being called. I THINK the version of this I need to alter might be in MetaField.pm, but I'm really not sure.

Does anyone know if this would be possible and where I should start with it? I'm not looking for a fully flushed out solution, just some direction.

Thanks,
James