<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.eprints.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bdgregg%40pitt.edu</id>
	<title>EPrints Documentation - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.eprints.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bdgregg%40pitt.edu"/>
	<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/Special:Contributions/Bdgregg@pitt.edu"/>
	<updated>2026-08-13T09:33:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.8</generator>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12178</id>
		<title>ORCID</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12178"/>
		<updated>2016-09-26T18:24:20Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: /* Notes from Pittsburgh: */ - Added warning:orcid_invalid phrase.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been created to gather information about how different EPrints repositories have integrated ORCID.&lt;br /&gt;
At this time (April 2016) there doesn't seem to be a 'best practice' approach that has been adopted widely - this will hopefully change over time.&lt;br /&gt;
&lt;br /&gt;
If you are looking to retrieve publications from the ORCID service, the [http://bazaar.eprints.org/354/ Import from ORCID (Tier 1 API)] Bazaar package, or the [https://github.com/eprintsug/orcidt2 ORCID Tier 2 api framework] are good places to start.&lt;br /&gt;
&lt;br /&gt;
2016-05-20 [[User:Alan.stiles@open.ac.uk|Alan Stiles]] at The Open University is working on a plugin to connect EPrints with ORCID via the Tier 2 Members API to retrieve ORCID ids and synchronise publications and affiliation details.&lt;br /&gt;
&lt;br /&gt;
Some aspects that need to be considered when adopting ORCIDs, and making them available to other systems are:&lt;br /&gt;
&lt;br /&gt;
* storing the ORCID (see: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier)&lt;br /&gt;
* rendering the ORCID in abstract pages (see [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier link above])&lt;br /&gt;
* exposing ORCIDs over OAI-PMH metadata profiles e.g. RIOXX&lt;br /&gt;
&lt;br /&gt;
NB The examples below may refer to the 'creators' field - but the same approach could be used to extend other 'person' fields - e.g. contributors.&lt;br /&gt;
&lt;br /&gt;
= Re-using creators.id subfield =&lt;br /&gt;
&lt;br /&gt;
The creators.id field is labelled 'email' by default, but as it's an 'id' type field, it can be used to store ORCIDs.&lt;br /&gt;
To re-label the field, a simple addition to a phrase file in &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/lang/en/phrases/&amp;lt;/code&amp;gt; needs to be made:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;epp:phrase id=&amp;quot;eprint_fieldname_creators_id&amp;quot;&amp;gt;ORCID / Creators email (if known)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rendering the ORCID in a citation ==&lt;br /&gt;
The rendering of this field then needs to be changed to accommodate an author with an ORCID. The following script adds methods that can be called via the EPScript language:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/z_add_to_EPrints_Script_Compiled.pl&lt;br /&gt;
# Write into EPrints::Script::Compiled package to allow use of function in epscript&lt;br /&gt;
{&lt;br /&gt;
package EPrints::Script::Compiled;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
sub run_wrro_people_with_orcids&lt;br /&gt;
{&lt;br /&gt;
  my( $self, $state, $value ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my $session = $state-&amp;gt;{session};&lt;br /&gt;
  my $r = $state-&amp;gt;{session}-&amp;gt;make_doc_fragment;&lt;br /&gt;
&lt;br /&gt;
  my $creators = $value-&amp;gt;[0];&lt;br /&gt;
&lt;br /&gt;
  foreach my $i (0..$#$creators){&lt;br /&gt;
&lt;br /&gt;
    my $creator = @$creators[$i];&lt;br /&gt;
&lt;br /&gt;
    if( $i &amp;gt; 0 ){&lt;br /&gt;
      #not first item (or only one item)&lt;br /&gt;
      if( $i == $#$creators ){&lt;br /&gt;
        #last item&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; and &amp;quot; ) );&lt;br /&gt;
      } else {&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;, &amp;quot; ) );&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $person_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;person&amp;quot; );&lt;br /&gt;
    $person_span-&amp;gt;appendChild( $session-&amp;gt;render_name( $creator-&amp;gt;{name} ) );&lt;br /&gt;
&lt;br /&gt;
    my $id = $creator-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      my $orcid_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
#   According to https://orcid.org/trademark-and-id-display-guidelines&lt;br /&gt;
#     &amp;quot;recommended display is a hyperlinked URI preceded by the iD icon&amp;quot;&lt;br /&gt;
#   This looks terrible in a citation. Removed for the time being.&lt;br /&gt;
#&lt;br /&gt;
#   my $orcid_link = $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;a&amp;quot;,&lt;br /&gt;
#     &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/&amp;quot;,&lt;br /&gt;
#     &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
#     &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid-icon&amp;quot;&lt;br /&gt;
#   );&lt;br /&gt;
#   $orcid_link-&amp;gt;appendChild( $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;img&amp;quot;,&lt;br /&gt;
#     &amp;quot;src&amp;quot; =&amp;gt; &amp;quot;/images/orcid_16x16.png&amp;quot;,&lt;br /&gt;
#     &amp;quot;title&amp;quot; =&amp;gt; &amp;quot;ORCID&amp;quot;&lt;br /&gt;
#   ) );&lt;br /&gt;
#   $orcid_span-&amp;gt;appendChild( $orcid_link );&lt;br /&gt;
&lt;br /&gt;
      my $link = $session-&amp;gt;make_element(&lt;br /&gt;
        &amp;quot;a&amp;quot;,&lt;br /&gt;
        &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;,&lt;br /&gt;
        &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
      );&lt;br /&gt;
      $link-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;orcid.org/$1&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;(&amp;quot; ) );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $link );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;)&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; &amp;quot; ) );&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $orcid_span );&lt;br /&gt;
    }&lt;br /&gt;
    $r-&amp;gt;appendChild( $person_span );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return [ $r, &amp;quot;XHTML&amp;quot; ];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
# END EPrints::Script::Compiled additions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want a bit of CSS to style ORCID links&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/* Add to e.g. ~/archives/ARCHIVEID/cfg/static/style/auto/zzz_orcid.css */&lt;br /&gt;
.person:hover {border-bottom: 1px dashed #a6ce39;}&lt;br /&gt;
.orcid {}&lt;br /&gt;
.orcid a:hover {&lt;br /&gt;
        color: #a6ce39;&lt;br /&gt;
}&lt;br /&gt;
.orcid-icon {}&lt;br /&gt;
.orcid-icon img { vertical-align: text-bottom; margin: 0 4px 0 2px; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, you have to call the new EPScript function from a citation file e.g. &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/citations/eprint/default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- replace reference to e.g. &amp;lt;print expr=&amp;quot;creators_name&amp;quot;/&amp;gt; with this: --&amp;gt;&lt;br /&gt;
    &amp;lt;print expr=&amp;quot;wrro_people_with_orcids(creators)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exposing the ORCID in RIOXX ==&lt;br /&gt;
Based on re-using the creators.id field, this block of code over-writes the default &amp;lt;code&amp;gt;rioxx2_value_author&amp;lt;/code&amp;gt; function.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/zzz_rioxx2_overwrites.pl&lt;br /&gt;
$c-&amp;gt;{rioxx2_value_author} = sub {&lt;br /&gt;
  my( $eprint ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my @authors;&lt;br /&gt;
  for( @{ $eprint-&amp;gt;value( &amp;quot;creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $id = $_-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
        id =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;&lt;br /&gt;
      };&lt;br /&gt;
    } else {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #NB If your corp_creators has DOIs or ISNIs for the entries, a similar method could be used to include these here.&lt;br /&gt;
  foreach my $corp ( @{ $eprint-&amp;gt;value( &amp;quot;corp_creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $entry = {};&lt;br /&gt;
    $entry-&amp;gt;{name} = $corp;&lt;br /&gt;
    push @authors, { author =&amp;gt; $corp };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return \@authors;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Add additional identifiers to creators =&lt;br /&gt;
Another approach to storing ORCIDs is to add an additional sub-field to the creator field.&lt;br /&gt;
This has been discussed on the Eprints tech list. If you know how to do this, please document it here!&lt;br /&gt;
&lt;br /&gt;
This is how University of Bath has done it.  We're getting the ORCID data from another system, so have used a text field to capture it for display.  At present there is no special rendering on it, it's just displaying as a number.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	name =&amp;gt; 'creators',&lt;br /&gt;
	type =&amp;gt; 'compound',&lt;br /&gt;
	multiple =&amp;gt; 1,&lt;br /&gt;
	fields =&amp;gt; [&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'name',&lt;br /&gt;
			type =&amp;gt; 'name',&lt;br /&gt;
			hide_honourific =&amp;gt; 1,&lt;br /&gt;
			hide_lineage =&amp;gt; 1,&lt;br /&gt;
			family_first =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'id',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'orcid',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	input_boxes =&amp;gt; 4,&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This is how University of Pittsburgh has done it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
          {&lt;br /&gt;
            'name' =&amp;gt; 'creators',&lt;br /&gt;
            'type' =&amp;gt; 'compound',&lt;br /&gt;
            'multiple' =&amp;gt; 1,&lt;br /&gt;
            'fields' =&amp;gt; [&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'name',&lt;br /&gt;
                            'type' =&amp;gt; 'name',&lt;br /&gt;
                            'hide_honourific' =&amp;gt; 1,&lt;br /&gt;
                            'hide_lineage' =&amp;gt; 1,&lt;br /&gt;
                            'family_first' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'email',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'id',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'orcid',&lt;br /&gt;
                            'type' =&amp;gt; 'id',&lt;br /&gt;
                            'input_cols' =&amp;gt; 19,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                        ],&lt;br /&gt;
            'input_boxes' =&amp;gt; 4,&lt;br /&gt;
            'render_value' =&amp;gt; 'custom_render_creators_with_orcid',&lt;br /&gt;
          },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes from Pittsburgh:==&lt;br /&gt;
&lt;br /&gt;
We have added some ORCID functionality in our IR System here at the University of Pittsburgh.  We however have not “linked” our IR with orcid.org in anyway such as we do not have a lookup user in ORCID or the ability to add publications from ORCID to our IR.  The only link is the entering of the ORCID into the system so that it can be displayed.&lt;br /&gt;
&lt;br /&gt;
An example record is available here: [http://d-scholarship.pitt.edu/28114/ http://d-scholarship.pitt.edu/28114/]&lt;br /&gt;
&lt;br /&gt;
# Users have an ORCID field in their profile – user_fields.pl&lt;br /&gt;
# Any “Creator” types have an ORCID field added to the workflow – eprint_fields.pl&lt;br /&gt;
# We have added ORCID validation adhering to this document: [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier] - eprint_validate.pl&lt;br /&gt;
# We have added the ORCID to the “lookup” function to populate the ORCID field from any user entries in the database. – cgi/users/lookup/name&lt;br /&gt;
# We display the ORCID as such on the input form, where the green icon links out to our own orcid.pitt.edu site, but could be to orcid.org by default.&lt;br /&gt;
# We display the ORCID as such on the public display of the record where the ORCID is linked out to orcid.org (see [http://d-scholarship.pitt.edu/28114/ example record])&lt;br /&gt;
&lt;br /&gt;
ORCID Validator - snippet for eprints_validate.pl&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
        # ORCID ID Validator for individuals&lt;br /&gt;
        # Reference: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier&lt;br /&gt;
        # REGEX: ^\d{4}-\d{4}-\d{4}-(\d{3}X|\d{4})$&lt;br /&gt;
        #&lt;br /&gt;
        my @name_fields = qw( creators contributors exhibitors producers conductors lyricists );  #which ever name fields you added 'orcid' to.&lt;br /&gt;
        foreach my $name_field ( @name_fields )&lt;br /&gt;
        {&lt;br /&gt;
           if( $eprint-&amp;gt;is_set( $name_field ) )&lt;br /&gt;
           {&lt;br /&gt;
              foreach my $creator ( @{ $eprint-&amp;gt;value( $name_field ) } )&lt;br /&gt;
              {&lt;br /&gt;
                 my $orcid = $creator-&amp;gt;{orcid};&lt;br /&gt;
                 next unless defined $orcid;&lt;br /&gt;
                 if ($repository-&amp;gt;get_repository-&amp;gt;can_call ( &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ) )&lt;br /&gt;
                 {&lt;br /&gt;
                    if (!$repository-&amp;gt;get_repository-&amp;gt;call( [ &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ], $orcid ))&lt;br /&gt;
                    {&lt;br /&gt;
                       my $field_text = $repository-&amp;gt;html_phrase( &amp;quot;eprint_fieldname_$name_field&amp;quot; );&lt;br /&gt;
                       my $field_frag = $repository-&amp;gt;make_element( &amp;quot;span&amp;quot;, class=&amp;gt;&amp;quot;ep_problem_field:$name_field&amp;quot; );&lt;br /&gt;
                       $field_frag-&amp;gt;appendChild($field_text);&lt;br /&gt;
                       push @problems, $repository-&amp;gt;html_phrase( &amp;quot;warnings:orcid_invalid&amp;quot;,&lt;br /&gt;
                            orcid =&amp;gt; $repository-&amp;gt;get_repository-&amp;gt;make_text($orcid),&lt;br /&gt;
                            field =&amp;gt; $field_frag,&lt;br /&gt;
                        );&lt;br /&gt;
                    }&lt;br /&gt;
                 } else {&lt;br /&gt;
                    $repository-&amp;gt;get_repository-&amp;gt;log( &amp;quot;Can not call isValidORCID.&amp;quot; );&lt;br /&gt;
                 }&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phrase for &amp;quot;warnings:orcid_invalid&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;epp:phrase id=&amp;quot;warnings:orcid_invalid&amp;quot;&amp;gt;The ORCID ID: &amp;lt;b&amp;gt;&amp;lt;epc:pin name=&amp;quot;orcid&amp;quot;/&amp;gt;&amp;lt;/b&amp;gt; is not a valid ORCID ID as it does not conform to the ORCID ID specification.  Please edit the &amp;lt;epc:pin name=&amp;quot;field&amp;quot;/&amp;gt; with the associated ORCID or remove it from the name completely.&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional Function that can be placed either at the end of eprints_validate.pl (after the final };) or elsewhere:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
############################################&lt;br /&gt;
# Function:     isValidORCID&lt;br /&gt;
# Description:  Used to validate ORCID IDs&lt;br /&gt;
# &lt;br /&gt;
# From: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier (Checksum)&lt;br /&gt;
#&lt;br /&gt;
$c-&amp;gt;{validators}-&amp;gt;{isValidORCID} = sub {&lt;br /&gt;
   my $ORCID = $_[0];&lt;br /&gt;
   #Check for valid length of 19 characters.&lt;br /&gt;
   my $size = length($ORCID);&lt;br /&gt;
   if ($size &amp;gt; 19 )&lt;br /&gt;
   {&lt;br /&gt;
        return 0;&lt;br /&gt;
   } else {&lt;br /&gt;
      #Check actual validity of the ID mathematically.&lt;br /&gt;
      $ORCID =~ s/\-//g;&lt;br /&gt;
      my @chars = split(//, $ORCID);&lt;br /&gt;
      my $total = 0;&lt;br /&gt;
      for ( my $i=0; $i&amp;lt;15; $i++) {&lt;br /&gt;
         $total = ($total + $chars[$i]) *2;&lt;br /&gt;
      }&lt;br /&gt;
      my $remainder = $total % 11;&lt;br /&gt;
      my $result = (12 - $remainder) % 11;&lt;br /&gt;
      return ($chars[15] == ($result==10 ? 'X' : $result))&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally you will have to define a custom render to add the fields to be displayed in the abstract/summary page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Information courtesy of Brian Gregg - bdgregg@pitt.edu)&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12176</id>
		<title>ORCID</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12176"/>
		<updated>2016-09-16T21:38:46Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: /* Notes from Pittsburgh: */ - Added another note.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been created to gather information about how different EPrints repositories have integrated ORCID.&lt;br /&gt;
At this time (April 2016) there doesn't seem to be a 'best practice' approach that has been adopted widely - this will hopefully change over time.&lt;br /&gt;
&lt;br /&gt;
If you are looking to retrieve publications from the ORCID service, the [http://bazaar.eprints.org/354/ Import from ORCID (Tier 1 API)] Bazaar package, or the [https://github.com/eprintsug/orcidt2 ORCID Tier 2 api framework] are good places to start.&lt;br /&gt;
&lt;br /&gt;
2016-05-20 [[User:Alan.stiles@open.ac.uk|Alan Stiles]] at The Open University is working on a plugin to connect EPrints with ORCID via the Tier 2 Members API to retrieve ORCID ids and synchronise publications and affiliation details.&lt;br /&gt;
&lt;br /&gt;
Some aspects that need to be considered when adopting ORCIDs, and making them available to other systems are:&lt;br /&gt;
&lt;br /&gt;
* storing the ORCID (see: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier)&lt;br /&gt;
* rendering the ORCID in abstract pages (see [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier link above])&lt;br /&gt;
* exposing ORCIDs over OAI-PMH metadata profiles e.g. RIOXX&lt;br /&gt;
&lt;br /&gt;
NB The examples below may refer to the 'creators' field - but the same approach could be used to extend other 'person' fields - e.g. contributors.&lt;br /&gt;
&lt;br /&gt;
= Re-using creators.id subfield =&lt;br /&gt;
&lt;br /&gt;
The creators.id field is labelled 'email' by default, but as it's an 'id' type field, it can be used to store ORCIDs.&lt;br /&gt;
To re-label the field, a simple addition to a phrase file in &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/lang/en/phrases/&amp;lt;/code&amp;gt; needs to be made:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;epp:phrase id=&amp;quot;eprint_fieldname_creators_id&amp;quot;&amp;gt;ORCID / Creators email (if known)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rendering the ORCID in a citation ==&lt;br /&gt;
The rendering of this field then needs to be changed to accommodate an author with an ORCID. The following script adds methods that can be called via the EPScript language:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/z_add_to_EPrints_Script_Compiled.pl&lt;br /&gt;
# Write into EPrints::Script::Compiled package to allow use of function in epscript&lt;br /&gt;
{&lt;br /&gt;
package EPrints::Script::Compiled;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
sub run_wrro_people_with_orcids&lt;br /&gt;
{&lt;br /&gt;
  my( $self, $state, $value ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my $session = $state-&amp;gt;{session};&lt;br /&gt;
  my $r = $state-&amp;gt;{session}-&amp;gt;make_doc_fragment;&lt;br /&gt;
&lt;br /&gt;
  my $creators = $value-&amp;gt;[0];&lt;br /&gt;
&lt;br /&gt;
  foreach my $i (0..$#$creators){&lt;br /&gt;
&lt;br /&gt;
    my $creator = @$creators[$i];&lt;br /&gt;
&lt;br /&gt;
    if( $i &amp;gt; 0 ){&lt;br /&gt;
      #not first item (or only one item)&lt;br /&gt;
      if( $i == $#$creators ){&lt;br /&gt;
        #last item&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; and &amp;quot; ) );&lt;br /&gt;
      } else {&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;, &amp;quot; ) );&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $person_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;person&amp;quot; );&lt;br /&gt;
    $person_span-&amp;gt;appendChild( $session-&amp;gt;render_name( $creator-&amp;gt;{name} ) );&lt;br /&gt;
&lt;br /&gt;
    my $id = $creator-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      my $orcid_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
#   According to https://orcid.org/trademark-and-id-display-guidelines&lt;br /&gt;
#     &amp;quot;recommended display is a hyperlinked URI preceded by the iD icon&amp;quot;&lt;br /&gt;
#   This looks terrible in a citation. Removed for the time being.&lt;br /&gt;
#&lt;br /&gt;
#   my $orcid_link = $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;a&amp;quot;,&lt;br /&gt;
#     &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/&amp;quot;,&lt;br /&gt;
#     &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
#     &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid-icon&amp;quot;&lt;br /&gt;
#   );&lt;br /&gt;
#   $orcid_link-&amp;gt;appendChild( $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;img&amp;quot;,&lt;br /&gt;
#     &amp;quot;src&amp;quot; =&amp;gt; &amp;quot;/images/orcid_16x16.png&amp;quot;,&lt;br /&gt;
#     &amp;quot;title&amp;quot; =&amp;gt; &amp;quot;ORCID&amp;quot;&lt;br /&gt;
#   ) );&lt;br /&gt;
#   $orcid_span-&amp;gt;appendChild( $orcid_link );&lt;br /&gt;
&lt;br /&gt;
      my $link = $session-&amp;gt;make_element(&lt;br /&gt;
        &amp;quot;a&amp;quot;,&lt;br /&gt;
        &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;,&lt;br /&gt;
        &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
      );&lt;br /&gt;
      $link-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;orcid.org/$1&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;(&amp;quot; ) );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $link );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;)&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; &amp;quot; ) );&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $orcid_span );&lt;br /&gt;
    }&lt;br /&gt;
    $r-&amp;gt;appendChild( $person_span );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return [ $r, &amp;quot;XHTML&amp;quot; ];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
# END EPrints::Script::Compiled additions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want a bit of CSS to style ORCID links&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/* Add to e.g. ~/archives/ARCHIVEID/cfg/static/style/auto/zzz_orcid.css */&lt;br /&gt;
.person:hover {border-bottom: 1px dashed #a6ce39;}&lt;br /&gt;
.orcid {}&lt;br /&gt;
.orcid a:hover {&lt;br /&gt;
        color: #a6ce39;&lt;br /&gt;
}&lt;br /&gt;
.orcid-icon {}&lt;br /&gt;
.orcid-icon img { vertical-align: text-bottom; margin: 0 4px 0 2px; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, you have to call the new EPScript function from a citation file e.g. &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/citations/eprint/default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- replace reference to e.g. &amp;lt;print expr=&amp;quot;creators_name&amp;quot;/&amp;gt; with this: --&amp;gt;&lt;br /&gt;
    &amp;lt;print expr=&amp;quot;wrro_people_with_orcids(creators)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exposing the ORCID in RIOXX ==&lt;br /&gt;
Based on re-using the creators.id field, this block of code over-writes the default &amp;lt;code&amp;gt;rioxx2_value_author&amp;lt;/code&amp;gt; function.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/zzz_rioxx2_overwrites.pl&lt;br /&gt;
$c-&amp;gt;{rioxx2_value_author} = sub {&lt;br /&gt;
  my( $eprint ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my @authors;&lt;br /&gt;
  for( @{ $eprint-&amp;gt;value( &amp;quot;creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $id = $_-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
        id =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;&lt;br /&gt;
      };&lt;br /&gt;
    } else {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #NB If your corp_creators has DOIs or ISNIs for the entries, a similar method could be used to include these here.&lt;br /&gt;
  foreach my $corp ( @{ $eprint-&amp;gt;value( &amp;quot;corp_creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $entry = {};&lt;br /&gt;
    $entry-&amp;gt;{name} = $corp;&lt;br /&gt;
    push @authors, { author =&amp;gt; $corp };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return \@authors;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Add additional identifiers to creators =&lt;br /&gt;
Another approach to storing ORCIDs is to add an additional sub-field to the creator field.&lt;br /&gt;
This has been discussed on the Eprints tech list. If you know how to do this, please document it here!&lt;br /&gt;
&lt;br /&gt;
This is how University of Bath has done it.  We're getting the ORCID data from another system, so have used a text field to capture it for display.  At present there is no special rendering on it, it's just displaying as a number.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	name =&amp;gt; 'creators',&lt;br /&gt;
	type =&amp;gt; 'compound',&lt;br /&gt;
	multiple =&amp;gt; 1,&lt;br /&gt;
	fields =&amp;gt; [&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'name',&lt;br /&gt;
			type =&amp;gt; 'name',&lt;br /&gt;
			hide_honourific =&amp;gt; 1,&lt;br /&gt;
			hide_lineage =&amp;gt; 1,&lt;br /&gt;
			family_first =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'id',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'orcid',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	input_boxes =&amp;gt; 4,&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This is how University of Pittsburgh has done it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
          {&lt;br /&gt;
            'name' =&amp;gt; 'creators',&lt;br /&gt;
            'type' =&amp;gt; 'compound',&lt;br /&gt;
            'multiple' =&amp;gt; 1,&lt;br /&gt;
            'fields' =&amp;gt; [&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'name',&lt;br /&gt;
                            'type' =&amp;gt; 'name',&lt;br /&gt;
                            'hide_honourific' =&amp;gt; 1,&lt;br /&gt;
                            'hide_lineage' =&amp;gt; 1,&lt;br /&gt;
                            'family_first' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'email',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'id',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'orcid',&lt;br /&gt;
                            'type' =&amp;gt; 'id',&lt;br /&gt;
                            'input_cols' =&amp;gt; 19,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                        ],&lt;br /&gt;
            'input_boxes' =&amp;gt; 4,&lt;br /&gt;
            'render_value' =&amp;gt; 'custom_render_creators_with_orcid',&lt;br /&gt;
          },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes from Pittsburgh:==&lt;br /&gt;
&lt;br /&gt;
We have added some ORCID functionality in our IR System here at the University of Pittsburgh.  We however have not “linked” our IR with orcid.org in anyway such as we do not have a lookup user in ORCID or the ability to add publications from ORCID to our IR.  The only link is the entering of the ORCID into the system so that it can be displayed.&lt;br /&gt;
&lt;br /&gt;
An example record is available here: [http://d-scholarship.pitt.edu/28114/ http://d-scholarship.pitt.edu/28114/]&lt;br /&gt;
&lt;br /&gt;
# Users have an ORCID field in their profile – user_fields.pl&lt;br /&gt;
# Any “Creator” types have an ORCID field added to the workflow – eprint_fields.pl&lt;br /&gt;
# We have added ORCID validation adhering to this document: [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier] - eprint_validate.pl&lt;br /&gt;
# We have added the ORCID to the “lookup” function to populate the ORCID field from any user entries in the database. – cgi/users/lookup/name&lt;br /&gt;
# We display the ORCID as such on the input form, where the green icon links out to our own orcid.pitt.edu site, but could be to orcid.org by default.&lt;br /&gt;
# We display the ORCID as such on the public display of the record where the ORCID is linked out to orcid.org (see [http://d-scholarship.pitt.edu/28114/ example record])&lt;br /&gt;
&lt;br /&gt;
ORCID Validator - snippet for eprints_validate.pl&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
        # ORCID ID Validator for individuals&lt;br /&gt;
        # Reference: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier&lt;br /&gt;
        # REGEX: ^\d{4}-\d{4}-\d{4}-(\d{3}X|\d{4})$&lt;br /&gt;
        #&lt;br /&gt;
        my @name_fields = qw( creators contributors exhibitors producers conductors lyricists );  #which ever name fields you added 'orcid' to.&lt;br /&gt;
        foreach my $name_field ( @name_fields )&lt;br /&gt;
        {&lt;br /&gt;
           if( $eprint-&amp;gt;is_set( $name_field ) )&lt;br /&gt;
           {&lt;br /&gt;
              foreach my $creator ( @{ $eprint-&amp;gt;value( $name_field ) } )&lt;br /&gt;
              {&lt;br /&gt;
                 my $orcid = $creator-&amp;gt;{orcid};&lt;br /&gt;
                 next unless defined $orcid;&lt;br /&gt;
                 if ($repository-&amp;gt;get_repository-&amp;gt;can_call ( &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ) )&lt;br /&gt;
                 {&lt;br /&gt;
                    if (!$repository-&amp;gt;get_repository-&amp;gt;call( [ &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ], $orcid ))&lt;br /&gt;
                    {&lt;br /&gt;
                       my $field_text = $repository-&amp;gt;html_phrase( &amp;quot;eprint_fieldname_$name_field&amp;quot; );&lt;br /&gt;
                       my $field_frag = $repository-&amp;gt;make_element( &amp;quot;span&amp;quot;, class=&amp;gt;&amp;quot;ep_problem_field:$name_field&amp;quot; );&lt;br /&gt;
                       $field_frag-&amp;gt;appendChild($field_text);&lt;br /&gt;
                       push @problems, $repository-&amp;gt;html_phrase( &amp;quot;warnings:orcid_invalid&amp;quot;,&lt;br /&gt;
                            orcid =&amp;gt; $repository-&amp;gt;get_repository-&amp;gt;make_text($orcid),&lt;br /&gt;
                            field =&amp;gt; $field_frag,&lt;br /&gt;
                        );&lt;br /&gt;
                    }&lt;br /&gt;
                 } else {&lt;br /&gt;
                    $repository-&amp;gt;get_repository-&amp;gt;log( &amp;quot;Can not call isValidORCID.&amp;quot; );&lt;br /&gt;
                 }&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional Function that can be placed either at the end of eprints_validate.pl (after the final };) or elsewhere:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
############################################&lt;br /&gt;
# Function:     isValidORCID&lt;br /&gt;
# Description:  Used to validate ORCID IDs&lt;br /&gt;
# &lt;br /&gt;
# From: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier (Checksum)&lt;br /&gt;
#&lt;br /&gt;
$c-&amp;gt;{validators}-&amp;gt;{isValidORCID} = sub {&lt;br /&gt;
   my $ORCID = $_[0];&lt;br /&gt;
   #Check for valid length of 19 characters.&lt;br /&gt;
   my $size = length($ORCID);&lt;br /&gt;
   if ($size &amp;gt; 19 )&lt;br /&gt;
   {&lt;br /&gt;
        return 0;&lt;br /&gt;
   } else {&lt;br /&gt;
      #Check actual validity of the ID mathematically.&lt;br /&gt;
      $ORCID =~ s/\-//g;&lt;br /&gt;
      my @chars = split(//, $ORCID);&lt;br /&gt;
      my $total = 0;&lt;br /&gt;
      for ( my $i=0; $i&amp;lt;15; $i++) {&lt;br /&gt;
         $total = ($total + $chars[$i]) *2;&lt;br /&gt;
      }&lt;br /&gt;
      my $remainder = $total % 11;&lt;br /&gt;
      my $result = (12 - $remainder) % 11;&lt;br /&gt;
      return ($chars[15] == ($result==10 ? 'X' : $result))&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally you will have to define a custom render to add the fields to be displayed in the abstract/summary page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Information courtesy of Brian Gregg - bdgregg@pitt.edu)&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12175</id>
		<title>ORCID</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12175"/>
		<updated>2016-09-16T21:06:41Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: /* Notes from Pittsburgh: */ - Added some additional code.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been created to gather information about how different EPrints repositories have integrated ORCID.&lt;br /&gt;
At this time (April 2016) there doesn't seem to be a 'best practice' approach that has been adopted widely - this will hopefully change over time.&lt;br /&gt;
&lt;br /&gt;
If you are looking to retrieve publications from the ORCID service, the [http://bazaar.eprints.org/354/ Import from ORCID (Tier 1 API)] Bazaar package, or the [https://github.com/eprintsug/orcidt2 ORCID Tier 2 api framework] are good places to start.&lt;br /&gt;
&lt;br /&gt;
2016-05-20 [[User:Alan.stiles@open.ac.uk|Alan Stiles]] at The Open University is working on a plugin to connect EPrints with ORCID via the Tier 2 Members API to retrieve ORCID ids and synchronise publications and affiliation details.&lt;br /&gt;
&lt;br /&gt;
Some aspects that need to be considered when adopting ORCIDs, and making them available to other systems are:&lt;br /&gt;
&lt;br /&gt;
* storing the ORCID (see: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier)&lt;br /&gt;
* rendering the ORCID in abstract pages (see [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier link above])&lt;br /&gt;
* exposing ORCIDs over OAI-PMH metadata profiles e.g. RIOXX&lt;br /&gt;
&lt;br /&gt;
NB The examples below may refer to the 'creators' field - but the same approach could be used to extend other 'person' fields - e.g. contributors.&lt;br /&gt;
&lt;br /&gt;
= Re-using creators.id subfield =&lt;br /&gt;
&lt;br /&gt;
The creators.id field is labelled 'email' by default, but as it's an 'id' type field, it can be used to store ORCIDs.&lt;br /&gt;
To re-label the field, a simple addition to a phrase file in &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/lang/en/phrases/&amp;lt;/code&amp;gt; needs to be made:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;epp:phrase id=&amp;quot;eprint_fieldname_creators_id&amp;quot;&amp;gt;ORCID / Creators email (if known)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rendering the ORCID in a citation ==&lt;br /&gt;
The rendering of this field then needs to be changed to accommodate an author with an ORCID. The following script adds methods that can be called via the EPScript language:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/z_add_to_EPrints_Script_Compiled.pl&lt;br /&gt;
# Write into EPrints::Script::Compiled package to allow use of function in epscript&lt;br /&gt;
{&lt;br /&gt;
package EPrints::Script::Compiled;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
sub run_wrro_people_with_orcids&lt;br /&gt;
{&lt;br /&gt;
  my( $self, $state, $value ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my $session = $state-&amp;gt;{session};&lt;br /&gt;
  my $r = $state-&amp;gt;{session}-&amp;gt;make_doc_fragment;&lt;br /&gt;
&lt;br /&gt;
  my $creators = $value-&amp;gt;[0];&lt;br /&gt;
&lt;br /&gt;
  foreach my $i (0..$#$creators){&lt;br /&gt;
&lt;br /&gt;
    my $creator = @$creators[$i];&lt;br /&gt;
&lt;br /&gt;
    if( $i &amp;gt; 0 ){&lt;br /&gt;
      #not first item (or only one item)&lt;br /&gt;
      if( $i == $#$creators ){&lt;br /&gt;
        #last item&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; and &amp;quot; ) );&lt;br /&gt;
      } else {&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;, &amp;quot; ) );&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $person_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;person&amp;quot; );&lt;br /&gt;
    $person_span-&amp;gt;appendChild( $session-&amp;gt;render_name( $creator-&amp;gt;{name} ) );&lt;br /&gt;
&lt;br /&gt;
    my $id = $creator-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      my $orcid_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
#   According to https://orcid.org/trademark-and-id-display-guidelines&lt;br /&gt;
#     &amp;quot;recommended display is a hyperlinked URI preceded by the iD icon&amp;quot;&lt;br /&gt;
#   This looks terrible in a citation. Removed for the time being.&lt;br /&gt;
#&lt;br /&gt;
#   my $orcid_link = $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;a&amp;quot;,&lt;br /&gt;
#     &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/&amp;quot;,&lt;br /&gt;
#     &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
#     &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid-icon&amp;quot;&lt;br /&gt;
#   );&lt;br /&gt;
#   $orcid_link-&amp;gt;appendChild( $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;img&amp;quot;,&lt;br /&gt;
#     &amp;quot;src&amp;quot; =&amp;gt; &amp;quot;/images/orcid_16x16.png&amp;quot;,&lt;br /&gt;
#     &amp;quot;title&amp;quot; =&amp;gt; &amp;quot;ORCID&amp;quot;&lt;br /&gt;
#   ) );&lt;br /&gt;
#   $orcid_span-&amp;gt;appendChild( $orcid_link );&lt;br /&gt;
&lt;br /&gt;
      my $link = $session-&amp;gt;make_element(&lt;br /&gt;
        &amp;quot;a&amp;quot;,&lt;br /&gt;
        &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;,&lt;br /&gt;
        &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
      );&lt;br /&gt;
      $link-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;orcid.org/$1&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;(&amp;quot; ) );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $link );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;)&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; &amp;quot; ) );&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $orcid_span );&lt;br /&gt;
    }&lt;br /&gt;
    $r-&amp;gt;appendChild( $person_span );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return [ $r, &amp;quot;XHTML&amp;quot; ];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
# END EPrints::Script::Compiled additions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want a bit of CSS to style ORCID links&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/* Add to e.g. ~/archives/ARCHIVEID/cfg/static/style/auto/zzz_orcid.css */&lt;br /&gt;
.person:hover {border-bottom: 1px dashed #a6ce39;}&lt;br /&gt;
.orcid {}&lt;br /&gt;
.orcid a:hover {&lt;br /&gt;
        color: #a6ce39;&lt;br /&gt;
}&lt;br /&gt;
.orcid-icon {}&lt;br /&gt;
.orcid-icon img { vertical-align: text-bottom; margin: 0 4px 0 2px; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, you have to call the new EPScript function from a citation file e.g. &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/citations/eprint/default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- replace reference to e.g. &amp;lt;print expr=&amp;quot;creators_name&amp;quot;/&amp;gt; with this: --&amp;gt;&lt;br /&gt;
    &amp;lt;print expr=&amp;quot;wrro_people_with_orcids(creators)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exposing the ORCID in RIOXX ==&lt;br /&gt;
Based on re-using the creators.id field, this block of code over-writes the default &amp;lt;code&amp;gt;rioxx2_value_author&amp;lt;/code&amp;gt; function.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/zzz_rioxx2_overwrites.pl&lt;br /&gt;
$c-&amp;gt;{rioxx2_value_author} = sub {&lt;br /&gt;
  my( $eprint ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my @authors;&lt;br /&gt;
  for( @{ $eprint-&amp;gt;value( &amp;quot;creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $id = $_-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
        id =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;&lt;br /&gt;
      };&lt;br /&gt;
    } else {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #NB If your corp_creators has DOIs or ISNIs for the entries, a similar method could be used to include these here.&lt;br /&gt;
  foreach my $corp ( @{ $eprint-&amp;gt;value( &amp;quot;corp_creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $entry = {};&lt;br /&gt;
    $entry-&amp;gt;{name} = $corp;&lt;br /&gt;
    push @authors, { author =&amp;gt; $corp };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return \@authors;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Add additional identifiers to creators =&lt;br /&gt;
Another approach to storing ORCIDs is to add an additional sub-field to the creator field.&lt;br /&gt;
This has been discussed on the Eprints tech list. If you know how to do this, please document it here!&lt;br /&gt;
&lt;br /&gt;
This is how University of Bath has done it.  We're getting the ORCID data from another system, so have used a text field to capture it for display.  At present there is no special rendering on it, it's just displaying as a number.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	name =&amp;gt; 'creators',&lt;br /&gt;
	type =&amp;gt; 'compound',&lt;br /&gt;
	multiple =&amp;gt; 1,&lt;br /&gt;
	fields =&amp;gt; [&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'name',&lt;br /&gt;
			type =&amp;gt; 'name',&lt;br /&gt;
			hide_honourific =&amp;gt; 1,&lt;br /&gt;
			hide_lineage =&amp;gt; 1,&lt;br /&gt;
			family_first =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'id',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'orcid',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	input_boxes =&amp;gt; 4,&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This is how University of Pittsburgh has done it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
          {&lt;br /&gt;
            'name' =&amp;gt; 'creators',&lt;br /&gt;
            'type' =&amp;gt; 'compound',&lt;br /&gt;
            'multiple' =&amp;gt; 1,&lt;br /&gt;
            'fields' =&amp;gt; [&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'name',&lt;br /&gt;
                            'type' =&amp;gt; 'name',&lt;br /&gt;
                            'hide_honourific' =&amp;gt; 1,&lt;br /&gt;
                            'hide_lineage' =&amp;gt; 1,&lt;br /&gt;
                            'family_first' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'email',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'id',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'orcid',&lt;br /&gt;
                            'type' =&amp;gt; 'id',&lt;br /&gt;
                            'input_cols' =&amp;gt; 19,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                        ],&lt;br /&gt;
            'input_boxes' =&amp;gt; 4,&lt;br /&gt;
            'render_value' =&amp;gt; 'custom_render_creators_with_orcid',&lt;br /&gt;
          },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes from Pittsburgh:==&lt;br /&gt;
&lt;br /&gt;
We have added some ORCID functionality in our IR System here at the University of Pittsburgh.  We however have not “linked” our IR with orcid.org in anyway such as we do not have a lookup user in ORCID or the ability to add publications from ORCID to our IR.  The only link is the entering of the ORCID into the system so that it can be displayed.&lt;br /&gt;
&lt;br /&gt;
An example record is available here: [http://d-scholarship.pitt.edu/28114/ http://d-scholarship.pitt.edu/28114/]&lt;br /&gt;
&lt;br /&gt;
# Users have an ORCID field in their profile – user_fields.pl&lt;br /&gt;
# Any “Creator” types have an ORCID field added to the workflow – eprint_fields.pl&lt;br /&gt;
# We have added ORCID validation adhering to this document: [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier] - eprint_validate.pl&lt;br /&gt;
# We have added the ORCID to the “lookup” function to populate the ORCID field from any user entries in the database. – cgi/users/lookup/name&lt;br /&gt;
# We display the ORCID as such on the input form, where the green icon links out to our own orcid.pitt.edu site, but could be to orcid.org by default.&lt;br /&gt;
# We display the ORCID as such on the public display of the record where the ORCID is linked out to orcid.org (see [http://d-scholarship.pitt.edu/28114/ example record])&lt;br /&gt;
&lt;br /&gt;
ORCID Validator - snippet for eprints_validate.pl&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
        # ORCID ID Validator for individuals&lt;br /&gt;
        # Reference: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier&lt;br /&gt;
        # REGEX: ^\d{4}-\d{4}-\d{4}-(\d{3}X|\d{4})$&lt;br /&gt;
        #&lt;br /&gt;
        my @name_fields = qw( creators contributors exhibitors producers conductors lyricists );  #which ever name fields you added 'orcid' to.&lt;br /&gt;
        foreach my $name_field ( @name_fields )&lt;br /&gt;
        {&lt;br /&gt;
           if( $eprint-&amp;gt;is_set( $name_field ) )&lt;br /&gt;
           {&lt;br /&gt;
              foreach my $creator ( @{ $eprint-&amp;gt;value( $name_field ) } )&lt;br /&gt;
              {&lt;br /&gt;
                 my $orcid = $creator-&amp;gt;{orcid};&lt;br /&gt;
                 next unless defined $orcid;&lt;br /&gt;
                 if ($repository-&amp;gt;get_repository-&amp;gt;can_call ( &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ) )&lt;br /&gt;
                 {&lt;br /&gt;
                    if (!$repository-&amp;gt;get_repository-&amp;gt;call( [ &amp;quot;validators&amp;quot;, &amp;quot;isValidORCID&amp;quot; ], $orcid ))&lt;br /&gt;
                    {&lt;br /&gt;
                       my $field_text = $repository-&amp;gt;html_phrase( &amp;quot;eprint_fieldname_$name_field&amp;quot; );&lt;br /&gt;
                       my $field_frag = $repository-&amp;gt;make_element( &amp;quot;span&amp;quot;, class=&amp;gt;&amp;quot;ep_problem_field:$name_field&amp;quot; );&lt;br /&gt;
                       $field_frag-&amp;gt;appendChild($field_text);&lt;br /&gt;
                       push @problems, $repository-&amp;gt;html_phrase( &amp;quot;warnings:orcid_invalid&amp;quot;,&lt;br /&gt;
                            orcid =&amp;gt; $repository-&amp;gt;get_repository-&amp;gt;make_text($orcid),&lt;br /&gt;
                            field =&amp;gt; $field_frag,&lt;br /&gt;
                        );&lt;br /&gt;
                    }&lt;br /&gt;
                 } else {&lt;br /&gt;
                    $repository-&amp;gt;get_repository-&amp;gt;log( &amp;quot;Can not call isValidORCID.&amp;quot; );&lt;br /&gt;
                 }&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional Function that can be placed either at the end of eprints_validate.pl (after the final };) or elsewhere:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
############################################&lt;br /&gt;
# Function:     isValidORCID&lt;br /&gt;
# Description:  Used to validate ORCID IDs&lt;br /&gt;
# &lt;br /&gt;
# From: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier (Checksum)&lt;br /&gt;
#&lt;br /&gt;
$c-&amp;gt;{validators}-&amp;gt;{isValidORCID} = sub {&lt;br /&gt;
   my $ORCID = $_[0];&lt;br /&gt;
   #Check for valid length of 19 characters.&lt;br /&gt;
   my $size = length($ORCID);&lt;br /&gt;
   if ($size &amp;gt; 19 )&lt;br /&gt;
   {&lt;br /&gt;
        return 0;&lt;br /&gt;
   } else {&lt;br /&gt;
      #Check actual validity of the ID mathematically.&lt;br /&gt;
      $ORCID =~ s/\-//g;&lt;br /&gt;
      my @chars = split(//, $ORCID);&lt;br /&gt;
      my $total = 0;&lt;br /&gt;
      for ( my $i=0; $i&amp;lt;15; $i++) {&lt;br /&gt;
         $total = ($total + $chars[$i]) *2;&lt;br /&gt;
      }&lt;br /&gt;
      my $remainder = $total % 11;&lt;br /&gt;
      my $result = (12 - $remainder) % 11;&lt;br /&gt;
      return ($chars[15] == ($result==10 ? 'X' : $result))&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Information courtesy of Brian Gregg - bdgregg@pitt.edu)&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12174</id>
		<title>ORCID</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=ORCID&amp;diff=12174"/>
		<updated>2016-09-16T20:49:57Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: /* Notes from Pittsburgh: */ - clarification.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been created to gather information about how different EPrints repositories have integrated ORCID.&lt;br /&gt;
At this time (April 2016) there doesn't seem to be a 'best practice' approach that has been adopted widely - this will hopefully change over time.&lt;br /&gt;
&lt;br /&gt;
If you are looking to retrieve publications from the ORCID service, the [http://bazaar.eprints.org/354/ Import from ORCID (Tier 1 API)] Bazaar package, or the [https://github.com/eprintsug/orcidt2 ORCID Tier 2 api framework] are good places to start.&lt;br /&gt;
&lt;br /&gt;
2016-05-20 [[User:Alan.stiles@open.ac.uk|Alan Stiles]] at The Open University is working on a plugin to connect EPrints with ORCID via the Tier 2 Members API to retrieve ORCID ids and synchronise publications and affiliation details.&lt;br /&gt;
&lt;br /&gt;
Some aspects that need to be considered when adopting ORCIDs, and making them available to other systems are:&lt;br /&gt;
&lt;br /&gt;
* storing the ORCID (see: http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier)&lt;br /&gt;
* rendering the ORCID in abstract pages (see [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier link above])&lt;br /&gt;
* exposing ORCIDs over OAI-PMH metadata profiles e.g. RIOXX&lt;br /&gt;
&lt;br /&gt;
NB The examples below may refer to the 'creators' field - but the same approach could be used to extend other 'person' fields - e.g. contributors.&lt;br /&gt;
&lt;br /&gt;
= Re-using creators.id subfield =&lt;br /&gt;
&lt;br /&gt;
The creators.id field is labelled 'email' by default, but as it's an 'id' type field, it can be used to store ORCIDs.&lt;br /&gt;
To re-label the field, a simple addition to a phrase file in &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/lang/en/phrases/&amp;lt;/code&amp;gt; needs to be made:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;epp:phrase id=&amp;quot;eprint_fieldname_creators_id&amp;quot;&amp;gt;ORCID / Creators email (if known)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rendering the ORCID in a citation ==&lt;br /&gt;
The rendering of this field then needs to be changed to accommodate an author with an ORCID. The following script adds methods that can be called via the EPScript language:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/z_add_to_EPrints_Script_Compiled.pl&lt;br /&gt;
# Write into EPrints::Script::Compiled package to allow use of function in epscript&lt;br /&gt;
{&lt;br /&gt;
package EPrints::Script::Compiled;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
sub run_wrro_people_with_orcids&lt;br /&gt;
{&lt;br /&gt;
  my( $self, $state, $value ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my $session = $state-&amp;gt;{session};&lt;br /&gt;
  my $r = $state-&amp;gt;{session}-&amp;gt;make_doc_fragment;&lt;br /&gt;
&lt;br /&gt;
  my $creators = $value-&amp;gt;[0];&lt;br /&gt;
&lt;br /&gt;
  foreach my $i (0..$#$creators){&lt;br /&gt;
&lt;br /&gt;
    my $creator = @$creators[$i];&lt;br /&gt;
&lt;br /&gt;
    if( $i &amp;gt; 0 ){&lt;br /&gt;
      #not first item (or only one item)&lt;br /&gt;
      if( $i == $#$creators ){&lt;br /&gt;
        #last item&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; and &amp;quot; ) );&lt;br /&gt;
      } else {&lt;br /&gt;
        $r-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;, &amp;quot; ) );&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $person_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;person&amp;quot; );&lt;br /&gt;
    $person_span-&amp;gt;appendChild( $session-&amp;gt;render_name( $creator-&amp;gt;{name} ) );&lt;br /&gt;
&lt;br /&gt;
    my $id = $creator-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      my $orcid_span = $session-&amp;gt;make_element( &amp;quot;span&amp;quot;, &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
#   According to https://orcid.org/trademark-and-id-display-guidelines&lt;br /&gt;
#     &amp;quot;recommended display is a hyperlinked URI preceded by the iD icon&amp;quot;&lt;br /&gt;
#   This looks terrible in a citation. Removed for the time being.&lt;br /&gt;
#&lt;br /&gt;
#   my $orcid_link = $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;a&amp;quot;,&lt;br /&gt;
#     &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/&amp;quot;,&lt;br /&gt;
#     &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
#     &amp;quot;class&amp;quot; =&amp;gt; &amp;quot;orcid-icon&amp;quot;&lt;br /&gt;
#   );&lt;br /&gt;
#   $orcid_link-&amp;gt;appendChild( $session-&amp;gt;make_element(&lt;br /&gt;
#     &amp;quot;img&amp;quot;,&lt;br /&gt;
#     &amp;quot;src&amp;quot; =&amp;gt; &amp;quot;/images/orcid_16x16.png&amp;quot;,&lt;br /&gt;
#     &amp;quot;title&amp;quot; =&amp;gt; &amp;quot;ORCID&amp;quot;&lt;br /&gt;
#   ) );&lt;br /&gt;
#   $orcid_span-&amp;gt;appendChild( $orcid_link );&lt;br /&gt;
&lt;br /&gt;
      my $link = $session-&amp;gt;make_element(&lt;br /&gt;
        &amp;quot;a&amp;quot;,&lt;br /&gt;
        &amp;quot;href&amp;quot; =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;,&lt;br /&gt;
        &amp;quot;target&amp;quot; =&amp;gt; &amp;quot;_blank&amp;quot;,&lt;br /&gt;
      );&lt;br /&gt;
      $link-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;orcid.org/$1&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;(&amp;quot; ) );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $link );&lt;br /&gt;
      $orcid_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot;)&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $session-&amp;gt;make_text( &amp;quot; &amp;quot; ) );&lt;br /&gt;
      $person_span-&amp;gt;appendChild( $orcid_span );&lt;br /&gt;
    }&lt;br /&gt;
    $r-&amp;gt;appendChild( $person_span );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return [ $r, &amp;quot;XHTML&amp;quot; ];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
# END EPrints::Script::Compiled additions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also want a bit of CSS to style ORCID links&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
/* Add to e.g. ~/archives/ARCHIVEID/cfg/static/style/auto/zzz_orcid.css */&lt;br /&gt;
.person:hover {border-bottom: 1px dashed #a6ce39;}&lt;br /&gt;
.orcid {}&lt;br /&gt;
.orcid a:hover {&lt;br /&gt;
        color: #a6ce39;&lt;br /&gt;
}&lt;br /&gt;
.orcid-icon {}&lt;br /&gt;
.orcid-icon img { vertical-align: text-bottom; margin: 0 4px 0 2px; }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, you have to call the new EPScript function from a citation file e.g. &amp;lt;code&amp;gt;archives/ARCHIVEID/cfg/citations/eprint/default.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- replace reference to e.g. &amp;lt;print expr=&amp;quot;creators_name&amp;quot;/&amp;gt; with this: --&amp;gt;&lt;br /&gt;
    &amp;lt;print expr=&amp;quot;wrro_people_with_orcids(creators)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exposing the ORCID in RIOXX ==&lt;br /&gt;
Based on re-using the creators.id field, this block of code over-writes the default &amp;lt;code&amp;gt;rioxx2_value_author&amp;lt;/code&amp;gt; function.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# Add to e.g. ~/archives/ARCHIVEID/cfg/cfg.d/zzz_rioxx2_overwrites.pl&lt;br /&gt;
$c-&amp;gt;{rioxx2_value_author} = sub {&lt;br /&gt;
  my( $eprint ) = @_;&lt;br /&gt;
&lt;br /&gt;
  my @authors;&lt;br /&gt;
  for( @{ $eprint-&amp;gt;value( &amp;quot;creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $id = $_-&amp;gt;{id};&lt;br /&gt;
    if( defined $id &amp;amp;&amp;amp; $id =~ m/^(?:orcid.org\/)?(\d{4}\-\d{4}\-\d{4}\-\d{3}(?:\d|X))$/ )&lt;br /&gt;
    {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
        id =&amp;gt; &amp;quot;http://orcid.org/$1&amp;quot;&lt;br /&gt;
      };&lt;br /&gt;
    } else {&lt;br /&gt;
      push @authors, {&lt;br /&gt;
        author =&amp;gt; EPrints::Utils::make_name_string( $_-&amp;gt;{name} ),&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #NB If your corp_creators has DOIs or ISNIs for the entries, a similar method could be used to include these here.&lt;br /&gt;
  foreach my $corp ( @{ $eprint-&amp;gt;value( &amp;quot;corp_creators&amp;quot; ) } )&lt;br /&gt;
  {&lt;br /&gt;
    my $entry = {};&lt;br /&gt;
    $entry-&amp;gt;{name} = $corp;&lt;br /&gt;
    push @authors, { author =&amp;gt; $corp };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return \@authors;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Add additional identifiers to creators =&lt;br /&gt;
Another approach to storing ORCIDs is to add an additional sub-field to the creator field.&lt;br /&gt;
This has been discussed on the Eprints tech list. If you know how to do this, please document it here!&lt;br /&gt;
&lt;br /&gt;
This is how University of Bath has done it.  We're getting the ORCID data from another system, so have used a text field to capture it for display.  At present there is no special rendering on it, it's just displaying as a number.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	name =&amp;gt; 'creators',&lt;br /&gt;
	type =&amp;gt; 'compound',&lt;br /&gt;
	multiple =&amp;gt; 1,&lt;br /&gt;
	fields =&amp;gt; [&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'name',&lt;br /&gt;
			type =&amp;gt; 'name',&lt;br /&gt;
			hide_honourific =&amp;gt; 1,&lt;br /&gt;
			hide_lineage =&amp;gt; 1,&lt;br /&gt;
			family_first =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'id',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			sub_name =&amp;gt; 'orcid',&lt;br /&gt;
			type =&amp;gt; 'text',&lt;br /&gt;
			input_cols =&amp;gt; 20,&lt;br /&gt;
			allow_null =&amp;gt; 1,&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	],&lt;br /&gt;
	input_boxes =&amp;gt; 4,&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This is how University of Pittsburgh has done it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
          {&lt;br /&gt;
            'name' =&amp;gt; 'creators',&lt;br /&gt;
            'type' =&amp;gt; 'compound',&lt;br /&gt;
            'multiple' =&amp;gt; 1,&lt;br /&gt;
            'fields' =&amp;gt; [&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'name',&lt;br /&gt;
                            'type' =&amp;gt; 'name',&lt;br /&gt;
                            'hide_honourific' =&amp;gt; 1,&lt;br /&gt;
                            'hide_lineage' =&amp;gt; 1,&lt;br /&gt;
                            'family_first' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'email',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'id',&lt;br /&gt;
                            'type' =&amp;gt; 'text',&lt;br /&gt;
                            'input_cols' =&amp;gt; 20,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                          {&lt;br /&gt;
                            'sub_name' =&amp;gt; 'orcid',&lt;br /&gt;
                            'type' =&amp;gt; 'id',&lt;br /&gt;
                            'input_cols' =&amp;gt; 19,&lt;br /&gt;
                            'allow_null' =&amp;gt; 1,&lt;br /&gt;
                          },&lt;br /&gt;
                        ],&lt;br /&gt;
            'input_boxes' =&amp;gt; 4,&lt;br /&gt;
            'render_value' =&amp;gt; 'custom_render_creators_with_orcid',&lt;br /&gt;
          },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes from Pittsburgh:==&lt;br /&gt;
&lt;br /&gt;
We have added some ORCID functionality in our IR System here at the University of Pittsburgh.  We however have not “linked” our IR with orcid.org in anyway such as we do not have a lookup user in ORCID or the ability to add publications from ORCID to our IR.  The only link is the entering of the ORCID into the system so that it can be displayed.&lt;br /&gt;
&lt;br /&gt;
An example record is available here: [http://d-scholarship.pitt.edu/28114/ http://d-scholarship.pitt.edu/28114/]&lt;br /&gt;
&lt;br /&gt;
# Users have an ORCID field in their profile – user_fields.pl&lt;br /&gt;
# Any “Creator” types have an ORCID field added to the workflow – eprint_fields.pl&lt;br /&gt;
# We have added ORCID validation adhering to this document: [http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier] - eprint_validate.pl&lt;br /&gt;
# We have added the ORCID to the “lookup” function to populate the ORCID field from any user entries in the database. – cgi/users/lookup/name&lt;br /&gt;
# We display the ORCID as such on the input form, where the green icon links out to our own orcid.pitt.edu site, but could be to orcid.org by default.&lt;br /&gt;
# We display the ORCID as such on the public display of the record where the ORCID is linked out to orcid.org (see [http://d-scholarship.pitt.edu/28114/ example record])&lt;br /&gt;
&lt;br /&gt;
(Information courtesy of Brian Gregg - bdgregg@pitt.edu)&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=How_to_use_EPrints_with_HTTPS&amp;diff=11386</id>
		<title>How to use EPrints with HTTPS</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=How_to_use_EPrints_with_HTTPS&amp;diff=11386"/>
		<updated>2015-10-06T15:09:55Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: /* Updated to reflect more recent versions of EPrints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manual}}&lt;br /&gt;
[[Category:Authentication]]&lt;br /&gt;
For information on setting up HTTPS on EPrints versions earlier than 3.0.5 see [[Https3]].&lt;br /&gt;
&lt;br /&gt;
If you are using Debian/Ubuntu see [[HTTPS for Debian/Ubuntu]].&lt;br /&gt;
&lt;br /&gt;
''Note: Setting up your Apache Web server is beyond the scope of this document.  Please see your operating system documentation and the Apache documentation for assistance in setting up Apache in your environment.''&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To start setting up your existing archive to work under HTTPS, you must first edit &amp;lt;tt&amp;gt;archives/[repoid]/cfg/cfg.d/10_core.pl&amp;lt;/tt&amp;gt;. Initially it will probably look something like the following which is the basic 10_core.pl configuration file after you have run &amp;lt;tt&amp;gt;bin/epadmin create&amp;lt;/tt&amp;gt; to setup your archive.  Alternatively you could run &amp;lt;tt&amp;gt;bin/epadmin config_core [repoid]&amp;lt;/tt&amp;gt; that will prompt you for the following information. It is suggested that you make a backup of the 10_core.pl file regardless before proceeding.&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{host} = 'your.dnshostname.org';&lt;br /&gt;
 $c-&amp;gt;{port} = 80;&lt;br /&gt;
 $c-&amp;gt;{aliases} = [];&lt;br /&gt;
 $c-&amp;gt;{securehost} = '';&lt;br /&gt;
 $c-&amp;gt;{secureport} = 443;&lt;br /&gt;
 $c-&amp;gt;{http_root} = undef;&lt;br /&gt;
&lt;br /&gt;
Update the file to define the secure host and modify ports as needed.  If your Apache web server is not using the standard ports (80,443) you can adjust the 'port' and 'secureport' parameters in the config file accordingly.&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{host} = 'your.dnshostname.org';&lt;br /&gt;
 $c-&amp;gt;{port} = 80;&lt;br /&gt;
 $c-&amp;gt;{aliases} = [];&lt;br /&gt;
 $c-&amp;gt;{securehost} = 'your.dnshostname.org';&lt;br /&gt;
 $c-&amp;gt;{secureport} = 443;&lt;br /&gt;
 $c-&amp;gt;{http_root} = undef;&lt;br /&gt;
&lt;br /&gt;
These additional settings may (but rarely) come into play are the following for special or for older setups.  In general these settings are only used when dealing with keeping settings from earlier versions of the EPrints software where you've migrated the 10_core.pl file from originally.  These configuration parameters tend to be deprecated.&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{securepath} = '/secure';&lt;br /&gt;
 $c-&amp;gt;{https_root} = '/secure';&lt;br /&gt;
 $c-&amp;gt;{http_cgiroot} = '/cgi';&lt;br /&gt;
 $c-&amp;gt;{https_cgiroot} = '/secure/cgi';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generate the Apache Configuration File for HTTPS ==&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;tt&amp;gt;bin/generate_apacheconf&amp;lt;/tt&amp;gt; to generate the secure Apache configuration files and depending upon the version of EPrints you are using, it may copy the default template &amp;lt;tt&amp;gt;archives/[repoid]/cfg/lang/en/templates/default.xml&amp;lt;/tt&amp;gt; to the template used for HTTPS &amp;lt;tt&amp;gt;archives/[repoid]/cfg/lang/en/templates/secure.xml&amp;lt;/tt&amp;gt;.  This will also setup the repository configuration file located in the &amp;lt;tt&amp;gt;/opt/eprints3/cfg/apache_ssl/&amp;lt;/tt&amp;gt; directory named [repoid].conf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add the Main Apache Config File to SSL Config ==&lt;br /&gt;
&lt;br /&gt;
Depending upon the version of EPrints you are running there are a couple files that may be involved.  It is recommended to run &amp;lt;tt&amp;gt;bin/generate_apacheconf --man&amp;lt;/tt&amp;gt; or view the source of &amp;lt;tt&amp;gt;bin/generate_apacheconf&amp;lt;/tt&amp;gt; file to understand what file(s) need to be setup.  In general you will need to place a line like either of the following inside your Apache SSL Virtual Host declaration (most likely found in &amp;lt;tt&amp;gt;/etc/httpd/conf.d/mod_ssl.conf&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/etc/httpd/conf.d/ssl.conf&amp;lt;/tt&amp;gt;).  Make sure that these lines are placed inside the &amp;lt;VirtualHost&amp;gt; Apache directive.&lt;br /&gt;
&lt;br /&gt;
 Include /opt/eprints3/archives/[repoid]/var/auto-secure.conf&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
 Include /opt/eprints3/cfg/apache_ssl.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Restart Apache to pick up the changes to the Apache configuration ==&lt;br /&gt;
Consult your operating system documentation on how to restart service processes but in general you need to run one of the following commands either as &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt; or using &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 # /sbin/service httpd restart&lt;br /&gt;
&lt;br /&gt;
 # /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confirmation ==&lt;br /&gt;
&lt;br /&gt;
Open your web browser and access your repository via its URL, this should be done over HTTP.  When you click to login you should notice that you will be redirected to an HTTPS connection.  Note that in general most tasks that require you to login are now redirected to an HTTPS connection otherwise an HTTP request will be used.&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=11331</id>
		<title>Views.pl</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=11331"/>
		<updated>2015-08-27T14:25:42Z</updated>

		<summary type="html">&lt;p&gt;Bdgregg@pitt.edu: Added the max_items view option per EP-Tech mailing list suggestion.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Browse Views]]&lt;br /&gt;
[[Category:Documentation Needed]]&lt;br /&gt;
== Views ==&lt;br /&gt;
Conceptually a ''view'' is a browsable list of eprints split into ''menus'' and a ''list''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-color:black; border-style:solid; border-width:1px 1px 0 1px; margin:0; padding:0; text-align:center; font-size:10px&amp;quot; |Menu1&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px; text-align: left; margin:0; padding:0; font-size:10px&amp;quot;| &amp;amp;nbsp; Item1_1 ------&lt;br /&gt;
| style=&amp;quot;font-size:10px&amp;quot;|---&amp;gt;&lt;br /&gt;
| style=&amp;quot;border-color:black; border-style:solid; border-width:1px 1px 0 1px; margin:0; padding:0; text-align:center; font-size:10px&amp;quot;|Menu2&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px; text-align: left; font-size:10px&amp;quot;| &amp;amp;nbsp; Item1_2 &lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px; text-align: left; margin:0; padding:0; font-size:10px&amp;quot;| &amp;amp;nbsp; Item2_1 ----- &lt;br /&gt;
|style=&amp;quot;font-size:10px&amp;quot;|---&amp;gt;&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:1px 1px 0 1px; margin:0; padding:0; text-align:center; font-size:10px&amp;quot;| &amp;amp;nbsp; &amp;amp;nbsp; LIST &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px 1px 1px; margin:0; padding:0; text-align:left; font-size:10px&amp;quot;| &amp;amp;nbsp; ....&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px; text-align: left; margin:0; padding:0; font-size:10px&amp;quot;| &amp;amp;nbsp; Item2_2&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px 1px 1px; margin:0; padding:0; text-align:left; font-size:10px&amp;quot;| &amp;amp;nbsp; ....&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;border-color:black; border-style:solid; border-width:0 1px 1px 1px; margin:0; padding:0; text-align:left; font-size:10px&amp;quot;| &amp;amp;nbsp; ....&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
In a ''menu'' values of one (or more) fields are listed, and a link points to the collection of all items with that particular value in that field.&lt;br /&gt;
&lt;br /&gt;
The ''list'' contains the final list of eprints with field values as determined by the menus above it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options available for the views config ==&lt;br /&gt;
This link is an [http://wiki.eprints.org/w/Adding_new_views 'How to' about views] with examples.&lt;br /&gt;
&lt;br /&gt;
The general form of views definition is&lt;br /&gt;
&lt;br /&gt;
  $c-&amp;gt;{browse_views} = [&lt;br /&gt;
    { &amp;lt;first view definition&amp;gt; },&lt;br /&gt;
    { &amp;lt;second view definition&amp;gt; },&lt;br /&gt;
    ...&lt;br /&gt;
    { &amp;lt;last view definition&amp;gt; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
(be careful about commas and semicolons). The order of the view definitions determines the order in which these will appear in the &amp;lt;nowiki&amp;gt;http://repoid/view/&amp;lt;/nowiki&amp;gt; page.&lt;br /&gt;
&lt;br /&gt;
Each view definition is a collection of attributes, given as&lt;br /&gt;
&lt;br /&gt;
    attribute1 =&amp;gt; value1,&lt;br /&gt;
    attribute2 =&amp;gt; value2,&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
(again, the ''value'' should end by a comma). The ''value'' can be&lt;br /&gt;
*''integer''&lt;br /&gt;
*''string'' enclosed by quotation marks (&amp;quot;) or by apostrophes (')&lt;br /&gt;
*''array'' which starts by a square bracket [ followed by the elements of the array (separated by commas) and closed by ] or &lt;br /&gt;
*''hash'' which is a list of &amp;quot;attribute =&amp;gt; value&amp;quot; pairs enclosed by curly brackets { and }.&lt;br /&gt;
Thus the browse_views definition is an array of hashes.&lt;br /&gt;
&lt;br /&gt;
Attributes marked by &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt; are ''view'' attributes and are in the view definition; attributes marked by &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt; are ''menu'' attributes and should be used only in [[#Menu options|menu definitions]].&lt;br /&gt;
&lt;br /&gt;
==Basic options==&lt;br /&gt;
&lt;br /&gt;
Options in the first category are ''view'' options.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| id &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| (mandatory) String, this is the ID by which you will refer to this view, and also the name of the top directory in &amp;lt;nowiki&amp;gt;http://repoid/view/&amp;lt;/nowiki&amp;gt;. This is the value of the ''browse_link'' attribute in [[eprint_fields.pl]]. Example:&lt;br /&gt;
&lt;br /&gt;
    id =&amp;gt; 'divisions',&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|fields &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt; &lt;br /&gt;
|(deprecated) This attribute describes the field(s) by which the view is built. It has been replaced by the more general [[#Menu options|menus]] attribute.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideempty &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
allow_null &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
new_column_at &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
render_menu &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|These define the default values of the same attributes in all [[#Menu options|menus]]. I.e, if not defined otherwise there, they take this as the default value in this view. &amp;quot;Hideempty&amp;quot; is also used when rendering the [[#View list options|view]] list.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|menus &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|An array of ''[[#Menu options|menu descriptions]]''. Each ''menu'' is a refinement of the previous ones, and last menu points to the [[#View list options|view list(s)]]. In each menu, as minimum, you should give the field(s) which are used to define entries at that level. The menus definition looks like&lt;br /&gt;
  menus =&amp;gt; [&lt;br /&gt;
     { &amp;lt;first menu definition&amp;gt; },&lt;br /&gt;
     { &amp;lt;second level menu&amp;gt; },&lt;br /&gt;
     { &amp;lt;last level&amp;gt; },&lt;br /&gt;
  ],&lt;br /&gt;
You must have at least one menu level.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|template &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Define an alternate template for all pages in this view. The template page should be a proper xml file in the &amp;lt;tt&amp;gt;repoid/cfg/lang/&amp;lt;langid&amp;gt;/templates/&amp;lt;/tt&amp;gt; directory. The best way is to copy the default.xml file and edit it according to taste. &lt;br /&gt;
  template =&amp;gt; 'view_template',&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|nolink &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|When this is set to 1 by adding&lt;br /&gt;
  nolink =&amp;gt; 1,&lt;br /&gt;
then this view won't appear in the outmost &amp;lt;nowiki&amp;gt;http://repoid/view/&amp;lt;/nowiki&amp;gt; browse page.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| max_menu_age&amp;amp;nbsp;&amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Defaults to 86400 (one day in seconds). If the menus in this view has been generated more than that many seconds ago, it is regenerated.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| max_items &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Defaults to 2000.  If the items list is larger increase the number enough to accomodate the number of items needed to be displayed.&lt;br /&gt;
  max_items =&amp;gt; 3000,&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===View list options===&lt;br /&gt;
These are the options which determine how the last list page in the menu chain should look like. They must be entered at the outmost ''view'' level. &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|order &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|This defines how the items in the view list (at the lowest level) are ordered. The format is 'foo/-bar'. This means that the list will be sorted by 'foo' and then any equal 'foo' values will be reverse sorted by 'bar'. More than 2 fields can be specified. Example:&lt;br /&gt;
  order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideup &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Don't show the &amp;quot;up one level&amp;quot; link in the list page. You ''must'' set this attribute for each menu separately, it is not inherited.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideempty &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Do not list the empty (undefined) entry in the list. This property inherits to the menus.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|nocount &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|If set, the &amp;quot;Number of items&amp;quot; line at the top of the page is omitted.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|notimestamp &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|If set, the &amp;quot;This list was generated on&amp;quot; line at the bottom of the list is omitted.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|variations &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|An array of strings describing different rendering of the items at the ''list''. For datails see [[#Variations|variations]]. Example:&lt;br /&gt;
    variation =&amp;gt; [ &amp;quot;creators_name;first_letter&amp;quot;, &lt;br /&gt;
        &amp;quot;type&amp;quot;, &amp;quot;DEFAULT&amp;quot;, ],&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|layout &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Possible values are &lt;br /&gt;
*paragraph (default)&lt;br /&gt;
*orderedlist&lt;br /&gt;
*unorderedlist&lt;br /&gt;
Determines how items in the list (or sublist) is rendered. In the first case each item is a paragraph by itself. In the other cases items are rendered as an ordered (unordered) list.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|citation &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|The citation style defined in archives/&amp;lt;REPOID&amp;gt;/cfg/citations/eprint/ which is used to render each item. Example:&lt;br /&gt;
  citation =&amp;gt; 'screen',&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|max_list_age&amp;amp;nbsp;&amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(V)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Defaults to 86400 (one day in seconds). If the lists in this view were generated more than than many seconds ago, it is regenerated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variations===&lt;br /&gt;
&lt;br /&gt;
Variations, if defined, determine how the final list is rendered. ''Variations'' is an array of strings, for example,&lt;br /&gt;
&lt;br /&gt;
 [ &amp;quot;creators_name;first_letter&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;,&lt;br /&gt;
   &amp;quot;DEFAULT&amp;quot;,&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
For each string in the list, a different rendering is produced, and you can switch from one to the other. The variation &amp;quot;DEFAULT&amp;quot; is the default one, it is always a good practice to include it in the list. If no variation is given, &amp;quot;DEFAULT&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
A ''variation definition'' consists of a field name, followed by zero, one or more ''options'' after a semicolon. Options are separated by commas. An ''option'' is either a single attribute, or an attribute, an equal sign, and the value of the attribute. For example,&lt;br /&gt;
    &amp;quot;creators_name;truncate=4,hideup&amp;quot;&lt;br /&gt;
sets the attribute value &amp;quot;truncate&amp;quot; to 4, and &amp;quot;hideup&amp;quot; to 1 (or true).&lt;br /&gt;
&lt;br /&gt;
The following options are available. These options are ''part of the string'' defining the variation, and ''should not be entered'' as attributes.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|reverse&lt;br /&gt;
|Reverses the order in which the groupings are shown.  Default is the ordervalue for that field (usually alphanumeric).  Useful for dates as you may want the highest values first.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|filename&lt;br /&gt;
|Changes the filename of the view variation.  The default is the name of the metadata field used, so if two variations use the same metadata field with different options, this is needed.&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|first_value&lt;br /&gt;
|If a field is multiple, only use the first value.  Otherwise each item will appear once for each value.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|first_initial&lt;br /&gt;
|If using a name, truncate the given name to the first initial.  This will make items like &amp;quot;Les Carr&amp;quot; and &amp;quot;Leslie Carr&amp;quot; appear together.  Note it will also make &amp;quot;John Smith&amp;quot; and &amp;quot;Jake Smith&amp;quot; appear together too, showing that you really never can win.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|first_letter&lt;br /&gt;
|The same as 'truncate=1'&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|truncate&lt;br /&gt;
|Use the first X characters of a value to group by.  truncate=4 may be useful for dates as it will group by the first four digits (the year) only.&lt;br /&gt;
 truncate=4&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|tags&lt;br /&gt;
|Useful for fields like keywords where values may be separated by commas or semi-colons.  The value is split on these two characters ( , and ; ) and a heading is created for each.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|cloud&lt;br /&gt;
|Creates a tag cloud.  Sets jump to 'plain', cloudmax to 200, cloudmin to 80 and no_separator, then resizes the jump-to links according to frequency of use.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|cloudmax&lt;br /&gt;
|The % size of the largest tag in a tag cloud.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|cloudmin&lt;br /&gt;
|The % size of the smallest tag in a tag cloud.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|jump&lt;br /&gt;
|Possible values are 'plain', 'default', and 'none'. Example:&lt;br /&gt;
  jump=plain&lt;br /&gt;
When set to 'plain' turns off the 'jump to' text before the list of subheading navigation links. When 'none', then the 'jump' part is not rendered.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|no_seperator (sic)&lt;br /&gt;
|Turns of the separator between each subheading navigation link (by default a vertical bar symbol).&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|string&lt;br /&gt;
|Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideup (since 3.1.1) &lt;br /&gt;
|Defaults to &amp;quot;0&amp;quot;. If set to &amp;quot;1&amp;quot; this hides the &amp;quot;up to parent&amp;quot; link (often you want to hide this on .include files)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|render_fn&lt;br /&gt;
|Name of a function to render this groupings list of items. For an example, see views_render_items_example.pl&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Menu options===&lt;br /&gt;
&lt;br /&gt;
These options can only be used in the '''menu definitions'''.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|fields  &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Obligatory, an array of field identifiers. Items in all fields are merged together. For example, to define a list of those those who are either authors or editors or both, use the definition&lt;br /&gt;
&lt;br /&gt;
    fields =&amp;gt; [ &amp;quot;creators_id&amp;quot;, &amp;quot;editors_id&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
Even if there is a single field, you must use square brackets, such as&lt;br /&gt;
&lt;br /&gt;
    fields =&amp;gt; [ &amp;quot;subjects&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;color: #662211; background-color:#ddffdc; border:1px solid black; padding:3px;&amp;quot;&amp;gt;'''Important!''' All fields must have the same type - i.e. you cannot mix titles and authors, say.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also add extra rendering info to the field name, without the &amp;quot;render_&amp;quot; prefix. For example, to make a date have resolution year, you would write&lt;br /&gt;
&lt;br /&gt;
    fields =&amp;gt; [ &amp;quot;date;res=year&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
or, ordering authors by their ''given'' names rather than by their family names:&lt;br /&gt;
&lt;br /&gt;
    fields =&amp;gt; [ &amp;quot;creators_name;order=gf&amp;quot; ],&lt;br /&gt;
&lt;br /&gt;
You can add &amp;quot;;quiet&amp;quot; to the field name to force non-existing values to appear as empty space rather than the ugly &amp;quot;UNDEFINED&amp;quot; (see the allow_null property below). You can find the available rendering properties of different fields in the [[Metadata]] section.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|allow_null &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt; &lt;br /&gt;
|The ''undefined'' value among the possible values of the fields does not show up in the generated view. To allow the undefined value to appear as well, set&lt;br /&gt;
&lt;br /&gt;
  allow_null =&amp;gt; 1,&lt;br /&gt;
&lt;br /&gt;
Beware: the title of the undefined entries will be the ugly UNDEFINED. You might consider to use the &amp;quot;;quiet&amp;quot; rendering option for field names.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideempty &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|If a category is empty, don't show it as an entry. Default value: show all entries, even if they contain no entries. Used only in menus, not at the lower level (list).&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
    hideempty =&amp;gt; 1,&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|reverse_order &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|If set, then the ordering of items in this menu is reversed. Example:&lt;br /&gt;
&lt;br /&gt;
    reverse_order =&amp;gt; 1,&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|mode &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Possible values: ''[[#Sections|sections]]'' and ''default'' (default). When defined as ''sections'' then grouping can be defined by the following data:&lt;br /&gt;
* ''grouping_function'' (group by first character if not defined)&lt;br /&gt;
* ''group_sorting_function'' (how to sort members of a group)&lt;br /&gt;
* ''group_range_function''&lt;br /&gt;
* ''open_first_section'' the front page should show the first section&lt;br /&gt;
See [[#Sections|below]].&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|hideup &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|When set to 1, don't show the &amp;quot;move one level up&amp;quot; link at the top of the page.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|render_menu &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|The configuration parameter which renders this menu. This should be a string, and also you should define a routine with the same name. For example if you write&lt;br /&gt;
    render_menu =&amp;gt; 'render_view_menu_3col_boxes',&lt;br /&gt;
then this menu will be rendered by the routine which is defined in [[views_render_menu_example.pl]] as&lt;br /&gt;
  $c-&amp;gt;{render_view_menu_3col_boxes} = sub&lt;br /&gt;
  {&lt;br /&gt;
       ...&lt;br /&gt;
  }&lt;br /&gt;
See there for hints how to tweak your own routine.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|new_column_at &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Used in menus (not lists) and in default mode. This is an array of integers representing the number of items in a view list before another column is added.  For example:&lt;br /&gt;
&lt;br /&gt;
 [ 11 ]&lt;br /&gt;
&lt;br /&gt;
The menu is rendered as a single column data if there are less than 11 entries, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 11, 21 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there are twenty or less, and three columns for all other cases.&lt;br /&gt;
&lt;br /&gt;
 [ 0, 0 ]&lt;br /&gt;
&lt;br /&gt;
This would always have three columns.&lt;br /&gt;
&lt;br /&gt;
 [ 2, 3 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column for a single data, two columns for two, and three columns for three or more data.&lt;br /&gt;
&lt;br /&gt;
Add one to the number of integers in the array and you get the maximum number of columns. The entries are evenly distributed in the columns.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sections===&lt;br /&gt;
&lt;br /&gt;
When a menu is using &amp;quot;sections&amp;quot;, then items on the menu are grouped together. The exact method is defined by defining values for several options. These options go to the ''menus section'' as well.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|grouping_function &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|This function determines how grouping is done. The following predefined functions can be used:&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_a_to_z&amp;quot;&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_first_character&amp;quot; (default)&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_2_characters&amp;quot;&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_3_characters&amp;quot;&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_4_characters&amp;quot;&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::group_by_5_characters&amp;quot;&lt;br /&gt;
with the usual meaning. If you use 'group_by_a_to_z', all entries not starting with a letter will be discarded.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|group_sorting_function &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|A costum function which sorts the group identifiers. The only available function&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::default_sort&amp;quot;&lt;br /&gt;
sorts alphabetically.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|group_range_function &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|Splits the groups (as determined by the grouping function) into sections so that a group never splits. Groups are rendered separately, but a section is kept on a single page. Available grouping functions are&lt;br /&gt;
*&amp;quot;Eprints::Update::Views::no_ranges&amp;quot; (default)&lt;br /&gt;
*&amp;quot;EPrints::Update::Views::cluster_ranges_&amp;lt;range&amp;gt;&amp;quot;&lt;br /&gt;
where &amp;lt;range&amp;gt; is one of 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, and 200.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|open_first_section &amp;lt;sup style=&amp;quot;font-weight:bold; font-size:10px;&amp;quot;&amp;gt;(M)&amp;lt;/sup&amp;gt;&lt;br /&gt;
|if set, the first section is included in the front page.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Phrases==&lt;br /&gt;
&lt;br /&gt;
Views can have their own titles and other phrases. If they do not exist, then a default one is used (usually containing the view's id). For examples, see the views.xml file.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewname_eprint_&amp;lt;viewid&amp;gt;&lt;br /&gt;
|the name of the browse pages&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewintro_&amp;lt;viewid&amp;gt;&lt;br /&gt;
|The phrase to replace the text &amp;quot;Please select a value to browse from the list below.&amp;quot; in the top level menu&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewintro_&amp;lt;viewid&amp;gt;/&amp;lt;value&amp;gt;&lt;br /&gt;
|Intro phrase on the next level&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewtitle_eprint_&amp;lt;viewid&amp;gt;_menu_&amp;lt;level&amp;gt;&lt;br /&gt;
|Title of browse page at level &amp;lt;level&amp;gt;, which is 1, 2, ... In the phrase you can use the pins &amp;quot;value1&amp;quot;, &amp;quot;value2&amp;quot;, etc. where the number can be one less than the present level; the value of the pin is the actual value of the previous levels. See the example below.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewgroup_eprint_&amp;lt;viewid&amp;gt;_&amp;lt;filename&amp;gt;&lt;br /&gt;
|Used as a pin value for the title on the list pages, when [[#Variations|variations]] are used. &amp;lt;Filename&amp;gt; is the filename defined as the option of the variation, or, if it is not defined, then it is the fieldname at the beginning.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|viewtitle_eprint_&amp;lt;viewid&amp;gt;_list&lt;br /&gt;
|Title of the list pages of the view. You can use the same pins as before (&amp;quot;value1&amp;quot;, &amp;quot;value2&amp;quot;, etc.). If the list was generated by a [[#Variations|variation]] then the &amp;quot;grouping&amp;quot; pin is also available.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following example shows how to define these values.&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Divisions&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_divisions_menu_1&amp;quot;&amp;gt;&lt;br /&gt;
    Browse by Division and Year&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_divisions_menu_2&amp;quot;&amp;gt;&lt;br /&gt;
    Browse by Year where Division is&lt;br /&gt;
     &amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt; &amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|heading_level&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|include&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|subheadings&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|nohtml&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|noindex&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
==EPrints 3.2 example==&lt;br /&gt;
===cfg/cfg.d/views.pl===&lt;br /&gt;
  { id         =&amp;gt; &amp;quot;target&amp;quot;,  # The 'name' for this view&lt;br /&gt;
    allow_null =&amp;gt; 0,&lt;br /&gt;
    hide_empty =&amp;gt; 1,&lt;br /&gt;
    menus      =&amp;gt; [&lt;br /&gt;
      { fields =&amp;gt; [&amp;quot;broker_reponame&amp;quot;], # The field(s) to use - in this case the 'reponame' sub-element of the 'broker' field&lt;br /&gt;
        new_column_at      =&amp;gt; [0],    # force 2 columns, even if the&lt;br /&gt;
                                      # second is blank&lt;br /&gt;
        mode               =&amp;gt; &amp;quot;sections&amp;quot;,&lt;br /&gt;
        open_first_section =&amp;gt; 1,&lt;br /&gt;
        group_range_function   =&amp;gt; &amp;quot;EPrints::Update::Views::cluster_ranges_30&amp;quot;,&lt;br /&gt;
        group_sorting_function =&amp;gt; &amp;quot;EPrints::Update::Views::default_sort&amp;quot;,&lt;br /&gt;
      },&lt;br /&gt;
    ],&lt;br /&gt;
    order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
    citation =&amp;gt; 'router',    # This defines the file in cfg/citations/eprint/&lt;br /&gt;
    layout   =&amp;gt; 'router',    # This is used in Views.pm to determine how to&lt;br /&gt;
                             # join individual citations together...&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
This creates a view, which will be 2-columns wide.&lt;br /&gt;
Two important definitions here are:&lt;br /&gt;
* '''citation''' defines the citation file used to create the block of html for each record to be displayed, and&lt;br /&gt;
* '''layout''' indicates how those blocks are joined together.&lt;br /&gt;
&lt;br /&gt;
====Layout====&lt;br /&gt;
'''Layout''' can be one of:&lt;br /&gt;
* paragraph (the default)&lt;br /&gt;
puts &amp;amp;lt;p&amp;gt; elements round each citation&lt;br /&gt;
&lt;br /&gt;
* orderedlist&lt;br /&gt;
makes an ordered list (1,2,3,4 or whatever the CSS defines)&lt;br /&gt;
&lt;br /&gt;
* unorderedlist&lt;br /&gt;
makes an unordered list&lt;br /&gt;
&lt;br /&gt;
* ''anything else''&lt;br /&gt;
just puts a newline (in the page source) after each citation&lt;br /&gt;
&lt;br /&gt;
====citation====&lt;br /&gt;
In our example, we're using a home-made citation layout&lt;br /&gt;
&lt;br /&gt;
The citation file is in &amp;lt;code&amp;gt;/cfg/citations/eprint/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above view, we have defined the citation format to be '''router''', therefore we need a file called '''router.xml''' in the citations directory.&lt;br /&gt;
&lt;br /&gt;
Remember this format is used for each record, so needs to be complete in it's own right - and if you want records to line up vertically, you need to plan that in advance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- &lt;br /&gt;
  	Full citation for an eprint. &lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;amp;lt;cite:citation xmlns:xhtml=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xmlns=&amp;quot;http://eprints.org/ep3/control&amp;quot; xmlns:cite=&amp;quot;http://eprints.org/ep3/citation&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;amp;lt;table class='ep_rt_citation'&amp;gt;;&lt;br /&gt;
    &amp;amp;lt;tr&amp;gt;&amp;amp;lt;td colspan='2'&amp;gt;&lt;br /&gt;
    &amp;amp;lt;choose&amp;gt;&lt;br /&gt;
      &amp;amp;lt;when test=&amp;quot;type = 'book' and is_set( creators )&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;amp;lt;span class='strong'&amp;gt;&amp;amp;lt;print expr=&amp;quot;creators_name&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
      &amp;amp;lt;/when&amp;gt;&lt;br /&gt;
      .... more code ....&lt;br /&gt;
    &amp;amp;lt;/choose&amp;gt;&lt;br /&gt;
    &amp;amp;lt;/td&amp;gt;&amp;amp;lt;td style=&amp;quot;width:8em&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;amp;lt;if test=&amp;quot;date&amp;quot;&amp;gt;&amp;amp;lt;span class='right strong'&amp;gt;(&amp;amp;lt;print expr=&amp;quot;date&amp;quot; opts=&amp;quot;res=year&amp;quot;/&amp;gt;)&amp;amp;lt;/span&amp;gt;&amp;amp;lt;/if&amp;gt;&lt;br /&gt;
    &amp;amp;lt;/td&amp;gt;&amp;amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;amp;lt;tr&amp;gt;&amp;amp;lt;td style=&amp;quot;width:50%&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;amp;lt;cite:linkhere&amp;gt;&amp;amp;lt;xhtml:em&amp;gt;&amp;amp;lt;print expr=&amp;quot;title&amp;quot; opts=&amp;quot;magicstop&amp;quot;/&amp;gt;&amp;amp;lt;/xhtml:em&amp;gt;&amp;amp;lt;/cite:linkhere&amp;gt;&lt;br /&gt;
    &amp;amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;amp;lt;choose&amp;gt;&lt;br /&gt;
     .... more code&lt;br /&gt;
    &amp;amp;lt;when test=&amp;quot;type = 'article'&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;amp;lt;if test=&amp;quot;publication&amp;quot;&amp;gt;&amp;amp;lt;print expr=&amp;quot;publication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;amp;lt;if test=&amp;quot;volume&amp;quot;&amp;gt;, &amp;amp;lt;print expr=&amp;quot;volume&amp;quot;/&amp;gt;&amp;amp;lt;/if&amp;gt;&lt;br /&gt;
        &amp;amp;lt;if test=&amp;quot;number&amp;quot;&amp;gt; (&amp;amp;lt;print expr=&amp;quot;number&amp;quot;/&amp;gt;)&amp;amp;lt;/if&amp;gt;&lt;br /&gt;
        .&amp;amp;lt;/if&amp;gt;&lt;br /&gt;
      &amp;amp;lt;if test=&amp;quot;pagerange&amp;quot;&amp;gt; &amp;amp;lt;print expr=&amp;quot;pagerange&amp;quot;/&amp;gt;.&amp;amp;lt;/if&amp;gt;&lt;br /&gt;
      &amp;amp;lt;/td&amp;gt;&amp;amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;amp;lt;if test=&amp;quot;issn&amp;quot;&amp;gt;&amp;lt;span class='right'&amp;gt; ISSN &amp;lt;print expr=&amp;quot;issn&amp;quot;/&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/if&amp;gt;&lt;br /&gt;
      &amp;amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;amp;lt;/when&amp;gt;&lt;br /&gt;
    .... more code&lt;br /&gt;
  &amp;amp;lt;/choose&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;amp;lt;if test=&amp;quot; ! type.one_of( 'patent','thesis' )&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;amp;lt;if test=&amp;quot;ispublished.one_of('unpub', 'submitted', 'inpress')&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;amp;lt;tr&amp;gt;&amp;amp;lt;td colspan='2'&amp;gt;&lt;br /&gt;
     (&amp;amp;lt;print expr=&amp;quot;ispublished&amp;quot;/&amp;gt;)&lt;br /&gt;
    &amp;amp;lt;/td&amp;gt;&amp;amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;amp;lt;/if&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/if&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/cite:citation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates a table for each record, and CSS is used to manage the size &amp;amp; position of the various elements&lt;br /&gt;
&lt;br /&gt;
===cfg/cfg.d/eprint_render.pl===&lt;br /&gt;
When viewing a record, the main abstract view page can also be altered&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;cfg/cfg.d/eprint_render.pl&amp;lt;/code&amp;gt;, towards the bottom of the subroutine &amp;lt;code&amp;gt;$c-&amp;gt;{eprint_render}&amp;lt;/code&amp;gt; is the following line:&lt;br /&gt;
&lt;br /&gt;
   my $page = $eprint-&amp;gt;render_citation( &amp;quot;router_page&amp;quot;, %fragments, flags=&amp;gt;$flags );&lt;br /&gt;
&lt;br /&gt;
Here, '''router_page''' is the name of the citation file for creating the abstract page..... '''router_page.xml''' in this case&lt;/div&gt;</summary>
		<author><name>Bdgregg@pitt.edu</name></author>
		
	</entry>
</feed>