[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[EP-tech] Render_value help



Perfect !

thank you Adam.

Jean-Marie


Le 25/10/2017 ? 10:29, Adam Field a ?crit?:
>
> Hi Jean-Marie
>
> Try something like this (note that this is just typed into the email, 
> so will have lots of errors).
>
> --
>
> Adam
>
> #this is the render_value function that?s set in the field config
>
> $c->{render_authors_with_images} = sub
>
> {
>
> /my ($repo, $field, $value, $allangs, $nolink, $eprint) = @_;/
>
> //
>
> /my $frag = $repo->xml->create_document_fragment;/
>
> //
>
> /foreach my $person (@{$value})/
>
> {
>
> $frag->appendChild($repo->call(?render_author_as_link?, $repo, $person));
>
> }
>
> return $frag;
>
> };
>
> $c->{render_author_as_link} = sub
>
> {
>
> my ($repo, $author) = @_;
>
> $name = EPrints::Utils::make_name_string($author->{name});
>
> my $url = $repo->call(?staff_link_url?, $name->{ppn});
>
> my $image_url = $repo->call(?staff_image_url?, $name->{ppn});
>
> my $frag = $repo->xml->create_document_fragment;
>
> my $a = $repo->xml->create_element(?a?, href => $url);
>
> $a->appendChild($repo->xml->create_text_node($name));
>
> $frag->appendChild($a);
>
> my $img = $repo->xml->create_element(?img?, src => $image_url);
>
> $frag->appendChild($img);
>
> return $frag;
>
> };
>
> $c->{staff_link_url} = sub
>
> {
>
> my ($ppn) = @_;
>
> return ?http://myorganisation.org/staff/? . $ppn;? #build as required
>
> };
>
> $c->{staff_image_url} = sub
>
> {
>
> my ($ppn) = @_;
>
> return ?http://myorganisation.org/staff/images/? . $ppn . 
> ?/profile_thumbnail.jpg?;
>
> }
>
> *From: *<eprints-tech-bounces at ecs.soton.ac.uk> on behalf of 
> <Jean-Marie.Lebechec at inp-toulouse.fr>
> *Reply-To: *<eprints-tech at ecs.soton.ac.uk>
> *Date: *Wednesday, 25 October 2017 09:04
> *To: *<eprints-tech at ecs.soton.ac.uk>
> *Subject: *Re: [EP-tech] Render_value help
>
> Hi again Adam,
>
> How to add a hyperlink and especially an image associated with this 
> link? Which method to use?
>
> Thank you.
>
> Jean-Marie
>
> Le 25/10/2017 ? 08:17, Jean-Marie.Lebechec at inp-toulouse.fr 
> <mailto:Jean-Marie.Lebechec at inp-toulouse.fr> a ?crit?:
>
>     Ah yes, thank you. I understood better the mechanism ! It is
>     sometimes (often) difficult to debug Eprints :-)
>
>     Jean-Marie
>
>     Le 24/10/2017 ? 16:23, Adam Field a ?crit?:
>
>         You need to return a dom object from a render function.? ?Here
>         are a couple of replacement lines:
>
>         ?.
>
>         push @authors, /EPrints::Utils::make_name_string( $_->{name} );/
>
>         ?
>
>         return $repo->xml->create_text_node(join(?; ?, @authors));
>
>         Move the return to the bottom of the function, aswell.? At the
>         moment it?s in the loop.? Also, I think your render_value
>         config line may belong outside the fields section.
>
>         --
>
>         Adam
>
>         *From: *<eprints-tech-bounces at ecs.soton.ac.uk>
>         <mailto:eprints-tech-bounces at ecs.soton.ac.uk> on behalf of
>         <Jean-Marie.Lebechec at inp-toulouse.fr>
>         <mailto:Jean-Marie.Lebechec at inp-toulouse.fr>
>         *Reply-To: *<eprints-tech at ecs.soton.ac.uk>
>         <mailto:eprints-tech at ecs.soton.ac.uk>
>         *Date: *Tuesday, 24 October 2017 15:07
>         *To: *<eprints-tech at ecs.soton.ac.uk>
>         <mailto:eprints-tech at ecs.soton.ac.uk>
>         *Subject: *[EP-tech] Render_value help
>
>         Hi all,
>
>         I want to modify the rendering field creators to add an ID
>         ("ppn") as indicated in this page. So I defined in my
>         eprint_field.pl this configuration:
>
>         /{
>         ??????????? 'name' => 'creators',
>         ??????????? 'type' => 'compound',
>         ??????????? 'allow_null' => 1,
>         ??????????? 'multiple' => 1,
>         ??????????? 'fields' => [
>         ????????????????????????? {
>         ??????????????????????????? 'sub_name' => 'ppn',
>         ??????????????????????????? 'type' => 'text',
>         ??????????????????????????? 'input_cols' => 10,
>         ??????????????????????????? 'allow_null' => 1,
>         ????????????????????????? },
>         ????????????????????????? {
>         ??????????????????????????? 'sub_name' => 'name',
>         ??????????????????????????? 'type' => 'name',
>         ??????????????????????????? 'hide_honourific' => 1,
>         ??????????????????????????? 'hide_lineage' => 1,
>         ??????????????????????????? 'family_first' => 1,
>         ??????????????????????????? },
>         ????????????????????????? },
>         ????????????????????????? {
>         ??????????????????????????? 'sub_name' => 'id',
>         ??????????????????????????? 'type' => 'text',
>         ??????????????????????????? 'input_cols' => 20,
>         ??????????????????????????? 'allow_null' => 1,
>         ????????????????????????? },
>         ??????????????????????? ],
>         ??????????????????????? 'input_boxes' => 4,
>         ???????????????????????? 'render_value' => 'idref',
>         .../
>
>         /}/
>
>
>         but I can not write the code to display the authors' data in
>         the following form:
>         "Name, First name (ppn) and? Name, First name and Name, First
>         name (ppn)" for example.
>
>         I started writing things like this:
>         /$c->{idref} = sub
>         {
>
>         my ($repo, $field, $value, $allangs, $nolink, $eprint) = @_;
>         my @authors;
>
>         for( @{ $eprint->value( "creators" ) } )
>         {
>
>         ????? push @authors, {
>         ??????? author => EPrints::Utils::make_name_string( $_->{name} ),
>         ????? };
>         return \@authors;
>         }
>
>         }/
>
>         but it does not work....
>
>         Any help or example will be welcome!
>
>         Jean-Marie
>
>
>         -- 
>
>           
>
>         ***********************************************
>
>         Jean Marie Le Bechec
>
>         Service Commun de la Documentation
>
>         Responsable ingenierie documentaire
>
>         &
>
>         Direction du Systeme d'Information
>
>         Referent Etudes
>
>           
>
>         Institut National Polytechnique de Toulouse
>
>         6 allee Emile Monso - bp 34038 -
>
>         31029 Toulouse cedex 4
>
>         Tel : 05 34 32 31 16
>
>         Tel Port : 06 40 81 35 68
>
>         Mail :lebechec at inp-toulouse.fr <mailto:lebechec at inp-toulouse.fr>
>
>         ***********************************************
>
>         *** 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/
>
>
>
>
>         *** 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/
>
>
>
>     -- 
>
>     ***********************************************
>
>     Jean Marie Le Bechec
>
>     Service Commun de la Documentation
>
>     Responsable ingenierie documentaire
>
>     &
>
>     Direction du Systeme d'Information
>
>     Referent Etudes
>
>     Institut National Polytechnique de Toulouse
>
>     6 allee Emile Monso - bp 34038 -
>
>     31029 Toulouse cedex 4
>
>     Tel : 05 34 32 31 16
>
>     Tel Port : 06 40 81 35 68
>
>     Mail :lebechec at inp-toulouse.fr <mailto:lebechec at inp-toulouse.fr>
>
>     ***********************************************
>
>
>
>
>     *** 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/
>
>
>
> -- 
> ***********************************************
> Jean Marie Le Bechec
> Service Commun de la Documentation
> Responsable ingenierie documentaire
> &
> Direction du Systeme d'Information
> Referent Etudes
> Institut National Polytechnique de Toulouse
> 6 allee Emile Monso - bp 34038 -
> 31029 Toulouse cedex 4
> Tel : 05 34 32 31 16
> Tel Port : 06 40 81 35 68
> Mail :lebechec at inp-toulouse.fr <mailto:lebechec at inp-toulouse.fr>
> ***********************************************
>
> *** 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/
>
>
>
> *** 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/

-- 

***********************************************
Jean Marie Le Bechec
Service Commun de la Documentation
Responsable ingenierie documentaire
&
Direction du Systeme d'Information
Referent Etudes

Institut National Polytechnique de Toulouse
6 allee Emile Monso - bp 34038 -
31029 Toulouse cedex 4
Tel : 05 34 32 31 16
Tel Port : 06 40 81 35 68
Mail : lebechec at inp-toulouse.fr
***********************************************

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ecs.soton.ac.uk/pipermail/eprints-tech/attachments/20171025/c0d758fc/attachment-0001.html