EPrints Technical Mailing List Archive

Message: #04425


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

[EP-tech] Re: Finding selected lang from configuration


Hi George

	I wouldn't worry about performance unless you're seeing specific problems.  However, you can get it from $repository->id() I believe.  Don't assume there's be a database lookup, as its

	I would also recommend the following changes in syntax for readability:

		%$v1{'lang'} becomes $v1->{lang}
		%$v1{'text'} becomes $v1->{text}
		${$$vals[0]}{'text'} becomes $vals->[0]->{text}

	Best Wishes

--
Adam Field
Business Relationship Manager and Community Lead
EPrints Services
+44 (0)23 8059 8814





On 1 Jul 2015, at 11:34, George Mamalakis wrote:

> Cheers Adam,
> 
> It worked like a charm! Now please allow me to asking you one more 
> thing: I changed my title field to contain code that looks for my 
> repository_id through the $eprint variable (which is my method's 
> parameter), which means that the system will have to make an additional 
> database call each time my field is accessed for each object. There's no 
> easier method of having access to it, I suppose? (eg. directly, like I 
> have access to the configuration via $c).
> 
> PS. My new title-field code is as follows:
> 
> {
>     name => 'title',
>     type => 'virtualwithvalue',
>     virtual => 1,
> 
>     get_value => sub
>     {
>         my ($eprint) = @_;
>         if ($eprint->is_set('ml_title'))
>         {
>             my $repo = $eprint->repository;
>             my $lang = $repo->get_langid;
>             # if cannot find a user language setting, I'm taking the 
> default one
>             if (!$lang)
>             {
>                 $lang = $c->{defaultlanguage};
>             }
>             my $vals = $eprint->get_value('ml_title');
>             my $title = '';
>             # set the default lang's text as title
>             foreach my $v1 (@{$vals})
>             {
>                 if (%$v1{'lang'} eq $lang)
>                 {
>                     $title = %$v1{'text'};
>                 }
>             }
>             # if I couldn't find a title in the user's language, get 
> the first object's text as title
>             if ($title eq '')
>             {
>                 $title = ${$$vals[0]}{'text'} ;
>             }
>             return $title;
> 
>         }
>         return undef;
>     }
> },
> 
> 
> 
> On 01/07/2015 12:30 μμ, Field A.N. wrote:
>> It should be:
>> 
>> 	$repository->get_lang(), which will return an EPrints::Language object, or $repository->get_langid, which will return the ID of the language.
>> 
>> --
>> Adam Field
>> Business Relationship Manager and Community Lead
>> EPrints Services
>> +44 (0)23 8059 8814
>> 
>> 
>> 
>> 
>> 
>> On 30 Jun 2015, at 10:29, George Mamalakis wrote:
>> 
>>> Hi all,
>>> 
>>> I am testing the multilang field (with virtual fields for title and
>>> abstract) and I am trying to make my virtual field return a different
>>> title (or abstract) based on what the user's language choice is. How can
>>> I have access to that variable on my perl configuration file? (I've
>>> tested the default language and works as expected, but I don't find it
>>> usable.)
>>> 
>>> Thanks all in advance.
>>> 
>>> -- 
>>> George Mamalakis
>>> 
>>> IT and Security Officer,
>>> Electrical and Computer Engineer (Aristotle Univ. of Thessaloniki),
>>> PhD (Aristotle Univ. of Thessaloniki),
>>> MSc (Imperial College of London)
>>> 
>>> School of Electrical and Computer Engineering
>>> Aristotle University of Thessaloniki
>>> 
>>> phone number : +30 (2310) 994379
>>> 
>>> 
>>> *** 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/
> 
> 
> -- 
> George Mamalakis
> 
> IT and Security Officer,
> Electrical and Computer Engineer (Aristotle Univ. of Thessaloniki),
> PhD (Aristotle Univ. of Thessaloniki),
> MSc (Imperial College of London)
> 
> School of Electrical and Computer Engineering
> Aristotle University of Thessaloniki
> 
> phone number : +30 (2310) 994379
> 
> 
> 
> *** 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/