EPrints Technical Mailing List Archive

Message: #06957


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

Re: [EP-tech] Adding items to EP-XML template


> Both "date" and "datestamp" should be stored in the same format in EPrints:

Ah, Mr. Gutteridge…  close, but no cigar! :o)

 

The 'date' field normally doesn't include the time component - so the regex

/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/

won't match. This should:

/^(\d{4})-(\d{2})-(\d{2})$/

 

*BUT* I'd advise against updating the RSS2 feed to do this. People may be using it in the way it's intended.

I'd subclass the RSS2 feed - adding your new date sorting method.

-OR- configure an author browse view, and use the RSS links embedded in them (or pull in the .include version of the view page).

 

Cheers,

John

 

From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Christopher Gutteridge
Sent: 21 November 2017 16:28
To: eprints-tech@ecs.soton.ac.uk; Andrew Beeken <anbeeken@lincoln.ac.uk>
Subject: Re: [EP-tech] Adding items to EP-XML template

 

That's the correct behaviour for an RSS feed. I'm guessing the logic of this is that your website has an RSS importer already that makes it the desired route.

Both "date" and "datestamp" should be stored in the same format in EPrints, so you should just have this:

my $datestamp = $eprint->get_value( "date" );

                                if( $datestamp =~ /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/ )

                                {

                                                my $time = timelocal( $6, $5, $4, $3, $2-1, $1 );

                                                $item->appendChild( $session->render_data_element(

                                                                2,

                                                                "pubDate",

                                                                EPrints::Time::rfc822_datetime( $time ) ) );

                                }

So now it's an RSS feed with the dates of the items in the catalogue, rather than of catalogue records.

On 21/11/2017 16:05, Andrew Beeken wrote:

Okay, so the goalposts have shifted on this since talking in more detail with our ICT team!

 

Basically, our repository feeds our staff directory pages in real time using the available feeds; specifically this feed: http://eprints.lincoln.ac.uk/cgi/exportview/creators/userid/RSS2/userid.xml. I did question why the RSS2 feed was being used and received the answer that this particular feed formats up a “Description” which can be pulled straight into the staff profiles which are then ordered based on the date on the record. So far, so good, but the issue at hand is those dates. I initially thought the problem was the format that the dates were coming out in and proposed that we include the records pre-formatted citation in the standard XML feed for them.

 

However, it now transpires that the date on the RSS2 feed is just plain wrong; it’s using the datestamp, when the record was created, rather than the date that the article, book etc was published, as stored in the date field. For the academics this means that the records on their staff profile are not in publication order. So we come back to the decision – use the standard XML file and add the citation, or change the RSS2 template to use the published date rather than the created date. ICT would prefer the latter so that they don’t have to change the staff directory code.

 

I’ve been taking a look at the latter an I think I’ve found the chunk in the RSS2 script that deals with the date:

 

my $datestamp = $eprint->get_value( "datestamp" );

                                if( $datestamp =~ /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/ )

                                {

                                                my $time = timelocal( $6, $5, $4, $3, $2-1, $1 );

                                                $item->appendChild( $session->render_data_element(

                                                                2,

                                                                "pubDate",

                                                                EPrints::Time::rfc822_datetime( $time ) ) );

                                }

 

I tried tweaking this to change datestamp to date, however this completely removed the date from the feed. I’m guessing that this is something to do with how the RegEx decides to proceed on the if statement. So I thought I’d see what happened if I just pushed the date straight into the element which… didn’t work…

 

                                $item->appendChild( $session->render_data_element(

                                                2,

                                                "pubDate",

                                                EPrints::Time::rfc822_datetime( $eprint->get_value( "date" ) ) ) );

 

I’m sure there’s obvious reasons for that which I probably can’t see (I always feel code dyslexic when I look at EPrints source for some reason…) Personally I’d prefer to push the citation in a more capable feed than RSS2 but I think I’m going to be at the behest of the Staff Directory here.

 

From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of John Salter
Sent: 21 November 2017 14:53
To: eprints-tech@ecs.soton.ac.uk
Subject: Re: [EP-tech] Adding items to EP-XML template

 

> The XML export just exports all the fields on an object

Unless that field has

    export_as_xml => 0,

 

- like the suggestions field does by default…

 

What are you trying to achieve with your export?

Personally, I'd suggest subclassing that plugin, and adding a citation to it that way - as always, TMTOWTDI!

It depends on how and when you'll be calling the plugin.

 

If it's for active, user-generated requests, Adam's method may be more suitable, as the processing is done when a record is saved, rather than when a record is requested.

 

Cheers,

John

 

From: eprints-tech-bounces@ecs.soton.ac.uk [mailto:eprints-tech-bounces@ecs.soton.ac.uk] On Behalf Of Adam Field
Sent: 21 November 2017 14:34
To: eprints-tech@ecs.soton.ac.uk
Subject: Re: [EP-tech] Adding items to EP-XML template

 

Hi Andrew

 

                The XML export just exports all the fields on an object.  I wouldn’t modify it if I were you.  The simplest way would be to add a new field to your item.

 

                I’m not sure if virtual fields come out in the XML export, but if they do, adding a virtual field to your object may be the easiest way to do this.  Alternatively, use an automatic field and write the citation to it.  See

https://wiki.eprints.org/w/Training_Video:Virtual_Fields and https://wiki.eprints.org/w/Training_Video:Automatic_Fields

 

--

Adam

 

From: <eprints-tech-bounces@ecs.soton.ac.uk> on behalf of Andrew Beeken <anbeeken@lincoln.ac.uk>
Reply-To: <eprints-tech@ecs.soton.ac.uk>
Date: Tuesday, 21 November 2017 14:24
To: "eprints-tech@ecs.soton.ac.uk" <eprints-tech@ecs.soton.ac.uk>
Subject: [EP-tech] Adding items to EP-XML template

 

Hi all,

 

Just took a dive into the EPrints XML export template (perl_lib/EPrints/Plugin/Export/XML.pm) to try and add a node for the records citation to it and I can’t see where you would do this? Is there somewhere separate that defines what data it pulls through?

 

Cheers in advance!

Andrew


Image removed by sender. EF Gold

The University of Lincoln, located in the heart of the city of Lincoln, has established an international reputation based on high student satisfaction, excellent graduate employment and world-class research.


The information in this e-mail and any attachments may be confidential. If you have received this email in error please notify the sender immediately and remove it from your system. Do not disclose the contents to another person or take copies.

Email is not secure and may contain viruses. The University of Lincoln makes every effort to ensure email is sent without viruses, but cannot guarantee this and recommends recipients take appropriate precautions.

The University may monitor email traffic data and content in accordance with its policies and English law. Further information can be found at: http://www.lincoln.ac.uk/legal.

*** 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/



-- 
Christopher Gutteridge -- http://users.ecs.soton.ac.uk/cjg
 
University of Southampton Open Data Service: http://data.southampton.ac.uk/
You should read our Web & Data Innovation blog: http://blogs.ecs.soton.ac.uk/webteam/