[EP-tech] EPScript - Author Limit
David R Newman
drn at ecs.soton.ac.uk
Wed Sep 19 09:58:44 BST 2018
Hi James,
This is what I did for one of the repository I help maintain:
http://researchonline.ljmu.ac.uk/7570/
I should be able to share the code if I can extract it from the rest of
the codebase, as it requires edits to 3-4 files, if I remember
correctly. Also, if you have other features like people_with_orcids
that modifies the list of authors in the citation in some way (i.e. in
this case add little ORCID buttons to click), then it may require a bit
more of an effort to merge.
Regards
David Newman
On Wed, 2018-09-19 at 09:36 +0100, James Kerwin via Eprints-tech wrote:
> Hi All,
>
> I have been tasked with limiting the number of authors that display
> in any given EPrint Abstract page as when there are many
> authors/creators associated with an EPrint it ruins the abstract
> page.
>
> I have edited default.xml in citations and can make it show ten
> authors and add an "et al" to the end if there are more than ten
> authors.
>
> However, previously the creators/authors list was generated via:
>
> <print expr="people_with_orcids(creators)" />
>
> I wasn't able to iterate through this so I instead used:
>
> <epc:foreach expr="creators_name" iterator="name" limit="10">
> <print expr="$name" />
>
> If I wanted to change the behaviour of "people_with_orcids(creators)
> how would I do this? I don't need detailed instruction, just a nudge
> towards which file(s) control this if anybody knows.
>
> My suspicion is that I need to change the sub
> "run_people_with_orcids" in a file named z_orcid_support.pl in
> ../[Archive_Id]/cfg/cfg.d, but I'm not super excited about chopping
> and changing things without fully knowing if I should (sub snippet
> below).
>
> Thanks,
> James
>
> #Rendering ORCIDs
> {
> package EPrints::Script::Compiled;
> use strict;
>
> sub run_people_with_orcids
> {
> my( $self, $state, $value ) = @_;
>
> my $session = $state->{session};
> my $r = $state->{session}->make_doc_fragment;
>
> my $creators = $value->[0];
>
> foreach my $i (0..$#$creators)
> {
>
> my $creator = @$creators[$i];
>
> if( $i > 0 )
> {
> #not first item (or only one item)
> if( $i == $#$creators )
> {
> #last item
> $r->appendChild( $session->make_text( "
> and " ) );
> }
> else
> {
> $r->appendChild( $session->make_text(
> ", " ) );
> }
> }
>
> *** 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/
> *** EPrints developers Forum: http://forum.eprints.org/
More information about the Eprints-tech
mailing list