<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.pl-c
        {mso-style-name:pl-c;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">OK – I’ve submitted a pull request:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><a href="https://github.com/eprints/eprints/pull/371">https://github.com/eprints/eprints/pull/371</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Can anyone confirm that this works OK for multi-lingual repositories – creating a new subject with both English and French names?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">$new_subject_obj = EPrints::DataObj::Subject::create(<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="color:#1F497D">$repository,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:#1F497D">"new_subject_id",<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:#1F497D">[<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt;text-indent:36.0pt"><span style="color:#1F497D">{"name"=>"New subject name", lang=>"en"},<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt;text-indent:36.0pt"><span style="color:#1F497D">{"name"=>"Nouveau nom du sujet", lang=>"fr"}<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="color:#1F497D">],<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:#1F497D">["ROOT"],<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:#1F497D">0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">On a related note, there seems to be quite a few other bad pod blocks in the DataObjs…
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">John<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB"> eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk]
<b>On Behalf Of </b>Alan.Stiles<br>
<b>Sent:</b> 07 January 2016 12:15<br>
<b>To:</b> eprints-tech@ecs.soton.ac.uk<br>
<b>Subject:</b> [EP-tech] Re: Subject trees<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks John,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">That would be the same documentation that I’ve skipped over a dozen times trying to trace the function… maybe I should change the comments to a more contrasting colour… and also using the right syntax helps
(EP::DO::Subject::create rather than EP::DO::Subject->create) <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Point of note though, the $name parameter appears to actually be an array of hashes with a slightly different format from the comment – the line below is the one that finally worked!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">$new_subject_obj = EPrints::DataObj::Subject::create($repository,"new_subject_id",[{"name"=>"New Subject Name",lang=>"en"}],["ROOT"],0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for your help! (still not sure about whether create_child has a bug or I do though, in case anyone wants to dig deeper?)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Alan<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB">
<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">eprints-tech-bounces@ecs.soton.ac.uk</a> [<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">mailto:eprints-tech-bounces@ecs.soton.ac.uk</a>]
<b>On Behalf Of </b>John Salter<br>
<b>Sent:</b> 07 January 2016 10:58<br>
<b>To:</b> 'eprints-tech@ecs.soton.ac.uk' <<a href="mailto:eprints-tech@ecs.soton.ac.uk">eprints-tech@ecs.soton.ac.uk</a>><br>
<b>Subject:</b> [EP-tech] Re: Subject trees<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Aahhhhh, this is a good’un…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">In ~/perl_lib/EPrints/DataObj/Subject.pm, lines 278-291… I’ll recreate them here:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">######################################################################<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># =pod<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># =item $subject = EPrints::DataObj::Subject::create( $session, $id, $name, $parents, $depositable )<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># Creates a new subject in the database. $id is the ID of the subject,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># $name is a multilang data structure with the name of the subject in<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># one or more languages. eg. { en=>"Trousers", en-us=>"Pants}. $parents<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># is a reference to an array containing the ID's of one or more other<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># subjects (don't make loops!). If $depositable is true then eprints may<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># belong to this subject.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"># =cut<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">######################################################################<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">As you can see – a nice block of documentation… but unfortunately, each line starts with a ‘#’ – so the pod doesn’t get parsed as a pod – and you don’t get to see what’s going on! (this is still the case in
<a href="https://github.com/eprints/eprints/blob/3.3/perl_lib/EPrints/DataObj/Subject.pm">
https://github.com/eprints/eprints/blob/3.3/perl_lib/EPrints/DataObj/Subject.pm</a> - I’ll patch it!).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">John<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB">
<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">eprints-tech-bounces@ecs.soton.ac.uk</a> [<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">mailto:eprints-tech-bounces@ecs.soton.ac.uk</a>]
<b>On Behalf Of </b>Alan.Stiles<br>
<b>Sent:</b> 07 January 2016 10:10<br>
<b>To:</b> <a href="mailto:eprints-tech@ecs.soton.ac.uk">eprints-tech@ecs.soton.ac.uk</a><br>
<b>Subject:</b> [EP-tech] Re: Subject trees<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">What documentation are you looking at John? Think I’m fighting with the parameters on ‘create’. When I try the following code:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">#!/usr/bin/perl -w -I/opt/eprints3/perl_lib<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">use strict;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">use EPrints;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">my $ep = EPrints->new();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">my $repository = $ep->repository( "repoid" );<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">my $tech_item = EPrints::DataObj::Subject->create($repository, "new_item_id",[{"name"=>"New Item Description"}],["parentid"],1);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I get an error message<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Can't use string ("EPrints::DataObj::Subject") as a HASH ref while "strict refs" in use at /opt/eprints3/perl_lib/EPrints/DataObj.pm line 968.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Within ‘create_child’ it uses $self->{subjectid} as the value for parentid, but from debugging it looks like the value is actually in $self->{data}->{subjectid} not sure if this is me not understanding something
about eprints structure or a possible bug?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">The subjects don’t seem to need commit() to add them (at least via create_child – I had it in the code originally but it didn’t seem to make a difference) and reindexing the subject dataset hasn’t done anything.
Thanks for the ideas though.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Alan<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB">
<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">eprints-tech-bounces@ecs.soton.ac.uk</a> [<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">mailto:eprints-tech-bounces@ecs.soton.ac.uk</a>]
<b>On Behalf Of </b>John Salter<br>
<b>Sent:</b> 06 January 2016 21:20<br>
<b>To:</b> 'eprints-tech@ecs.soton.ac.uk' <<a href="mailto:eprints-tech@ecs.soton.ac.uk">eprints-tech@ecs.soton.ac.uk</a>><br>
<b>Subject:</b> [EP-tech] Re: Subject trees<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">No experience – but looking at the documentation, you could possibly achieve what you need with the ‘create’ method instead?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Other thoughts are:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">- does anything change when you commit() the new subject?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">- does reindexing the subjects change anything?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">John<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB">
<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">eprints-tech-bounces@ecs.soton.ac.uk</a> [<a href="mailto:eprints-tech-bounces@ecs.soton.ac.uk">mailto:eprints-tech-bounces@ecs.soton.ac.uk</a>]
<b>On Behalf Of </b>Alan.Stiles<br>
<b>Sent:</b> 06 January 2016 17:35<br>
<b>To:</b> <a href="mailto:eprints-tech@ecs.soton.ac.uk">eprints-tech@ecs.soton.ac.uk</a><br>
<b>Subject:</b> [EP-tech] Subject trees<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal">Anyone have any experience with updating the subject tree via the API? (using 3.3.10 but current github module for EPrints::DataObj::Subject looks similar)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to add a new top level entry with the following code snippet…<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> my $rootsubj = EPrints::DataObj::Subject->new($repository,"ROOT");<o:p></o:p></p>
<p class="MsoNormal"> exit unless defined($rootsubj);<o:p></o:p></p>
<p class="MsoNormal"> my $newsubj = $rootsubj->create_child("newid",[{name=>"New Top Level Subject"}],0);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It creates the subject, but orphaned rather than linked to the ROOT object as I’d expect…<o:p></o:p></p>
<p class="MsoNormal">Any clues?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#44546A;mso-fareast-language:EN-GB">Alan Stiles<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#44546A;mso-fareast-language:EN-GB">Digital Repository Developer<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#44546A;mso-fareast-language:EN-GB">Library Services, The Open University<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif;mso-fareast-language:EN-GB">-- The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland
(SC 038302). The Open University is authorised and regulated by the Financial Conduct Authority.
<o:p></o:p></span></p>
</div>
</body>
</html>