<?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=WikiSysop</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=WikiSysop"/>
	<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/Special:Contributions/WikiSysop"/>
	<updated>2026-05-02T11:45:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.8</generator>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6566</id>
		<title>StyleGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6566"/>
		<updated>2009-08-07T17:33:41Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Licensing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints has been under development for many years and has some fluff about the place. For new programmers this document is intended as a 'style guide' to at least keep the code and documentation consistent across new modules.&lt;br /&gt;
&lt;br /&gt;
==Programming Style==&lt;br /&gt;
&lt;br /&gt;
===Naming===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             TYPE           EXAMPLE&lt;br /&gt;
&lt;br /&gt;
             module         StyleGuide&lt;br /&gt;
             subroutine     get_value&lt;br /&gt;
             global var     AUTH_OK&lt;br /&gt;
             local var      $field_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Subroutines===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1, $arg2 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where possible, use &amp;quot;return&amp;quot; rather than an &amp;quot;if&amp;quot; block.&lt;br /&gt;
&lt;br /&gt;
AVOID:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     my $r;&lt;br /&gt;
                     if( $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                             $r = $arg1 * 2;&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                             log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                     }&lt;br /&gt;
                     &lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prefer this style instead, treating the problem like a basic exception to the normal running of the function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     if( !defined $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                            log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                            return;&lt;br /&gt;
                     }&lt;br /&gt;
     &lt;br /&gt;
                     return $arg1 * 2;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditionals===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( ref($a) eq &amp;quot;ARRAY&amp;quot; )&lt;br /&gt;
             {&lt;br /&gt;
                     print &amp;quot;Dang&amp;quot;;&lt;br /&gt;
                     return 0;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the code inside the condition this is acceptable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             return 0 if( ref($a) eq &amp;quot;ARRAY&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             $a = 23 if( !defined $a );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However this is NEVER OK:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( !defined $a ) $a = 23;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Loops===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             foreach my $field ( @fields )&lt;br /&gt;
             {&lt;br /&gt;
                     push @foo, $field-&amp;gt;get_name();&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
OR, when nested:&lt;br /&gt;
&lt;br /&gt;
             FIELD: foreach my $field ( @fields )&lt;br /&gt;
             { &lt;br /&gt;
                     VALUE: foreach my $value ( @{$field-&amp;gt;{ &amp;quot;lsd&amp;quot; }} )&lt;br /&gt;
                     {&lt;br /&gt;
                             next VALUE if !defined $value; &lt;br /&gt;
                             $values{ $value } = 1;&lt;br /&gt;
                     }&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid $_ where possible.&lt;br /&gt;
&lt;br /&gt;
Try and use &amp;quot;next&amp;quot; rather than if when inside loops.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Below the license block the name, description and synopsis (a synopsis is an example of usage). Lastly the METHODS title begins the section for inline subroutine documentation.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	=head1 NAME&lt;br /&gt;
&lt;br /&gt;
	EPrints::MyModule - A one line description of MyModule&lt;br /&gt;
&lt;br /&gt;
	=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
	One or two paragraphs explaining the function of EPrints::MyModule.&lt;br /&gt;
&lt;br /&gt;
	=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
		use EPrints::MyModule;&lt;br /&gt;
&lt;br /&gt;
		my $obj = EPrints::MyModule-&amp;gt;new( $opts );&lt;br /&gt;
		$obj-&amp;gt;do_thing( $thingy );&lt;br /&gt;
&lt;br /&gt;
	=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
	=over 4&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Methods==&lt;br /&gt;
===Public Methods===&lt;br /&gt;
Each public subroutine should have POD documentation above it, with hashes to&lt;br /&gt;
separate it from the method above. A large module should probably be split into&lt;br /&gt;
different sections, e.g. &amp;quot;CONSTRUCTOR METHODS&amp;quot;, &amp;quot;ACCESSOR METHODS&amp;quot;, etc.&lt;br /&gt;
Private methods can be documented using Perl comments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	=item $objname = EPrints::StyleGuide-&amp;gt;my_sub( $arg1, [$opt_arg2], \%opts )&lt;br /&gt;
&lt;br /&gt;
	A description of what my_sub does and arguments it takes ($opt_arg2 is&lt;br /&gt;
	shown as optional by using brackets).&lt;br /&gt;
&lt;br /&gt;
	A description of $arg1 if needed, along with an example:&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub( &amp;quot;eprintid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub(&lt;br /&gt;
			$arg1,&lt;br /&gt;
			undef,&lt;br /&gt;
			{&lt;br /&gt;
				opt1 =&amp;gt; $var1, # What is var1&lt;br /&gt;
				opt2 =&amp;gt; $var2, # What is var2&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	Further elaboration on the effect of $var2.&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	sub my_sub&lt;br /&gt;
	{&lt;br /&gt;
		...&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Private Methods===&lt;br /&gt;
&lt;br /&gt;
==Automatically reformatting code==&lt;br /&gt;
There is a wonderful utility called ''perltidy'' (find link)&lt;br /&gt;
&lt;br /&gt;
This reformats perl for you (and does a syntax check at the same time... lovely.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&lt;br /&gt;
  perltidy -gnu -csc -b JSON.pm&lt;br /&gt;
&lt;br /&gt;
  -gnu reformats into the general 'gnu' style (as opposed to the &amp;quot;Larry Wall/Perl&amp;quot; style)&lt;br /&gt;
  -csc adds comments to the end of longish loops&lt;br /&gt;
  -b edits the file in place (so you may want to leave that off initially)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6565</id>
		<title>StyleGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6565"/>
		<updated>2009-08-07T17:32:55Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Conditionals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints has been under development for many years and has some fluff about the place. For new programmers this document is intended as a 'style guide' to at least keep the code and documentation consistent across new modules.&lt;br /&gt;
&lt;br /&gt;
==Programming Style==&lt;br /&gt;
&lt;br /&gt;
===Naming===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             TYPE           EXAMPLE&lt;br /&gt;
&lt;br /&gt;
             module         StyleGuide&lt;br /&gt;
             subroutine     get_value&lt;br /&gt;
             global var     AUTH_OK&lt;br /&gt;
             local var      $field_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Subroutines===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1, $arg2 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where possible, use &amp;quot;return&amp;quot; rather than an &amp;quot;if&amp;quot; block.&lt;br /&gt;
&lt;br /&gt;
AVOID:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     my $r;&lt;br /&gt;
                     if( $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                             $r = $arg1 * 2;&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                             log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                     }&lt;br /&gt;
                     &lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prefer this style instead, treating the problem like a basic exception to the normal running of the function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     if( !defined $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                            log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                            return;&lt;br /&gt;
                     }&lt;br /&gt;
     &lt;br /&gt;
                     return $arg1 * 2;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditionals===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( ref($a) eq &amp;quot;ARRAY&amp;quot; )&lt;br /&gt;
             {&lt;br /&gt;
                     print &amp;quot;Dang&amp;quot;;&lt;br /&gt;
                     return 0;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the code inside the condition this is acceptable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             return 0 if( ref($a) eq &amp;quot;ARRAY&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             $a = 23 if( !defined $a );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However this is NEVER OK:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( !defined $a ) $a = 23;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Loops===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             foreach my $field ( @fields )&lt;br /&gt;
             {&lt;br /&gt;
                     push @foo, $field-&amp;gt;get_name();&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
OR, when nested:&lt;br /&gt;
&lt;br /&gt;
             FIELD: foreach my $field ( @fields )&lt;br /&gt;
             { &lt;br /&gt;
                     VALUE: foreach my $value ( @{$field-&amp;gt;{ &amp;quot;lsd&amp;quot; }} )&lt;br /&gt;
                     {&lt;br /&gt;
                             next VALUE if !defined $value; &lt;br /&gt;
                             $values{ $value } = 1;&lt;br /&gt;
                     }&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid $_ where possible.&lt;br /&gt;
&lt;br /&gt;
Try and use &amp;quot;next&amp;quot; rather than if when inside loops.&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We would like everything under the same license.... the EPrints license:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ######################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #  This file is part of GNU EPrints 3.&lt;br /&gt;
 #  &lt;br /&gt;
 #  Copyright (c) 2000-2007 University of Southampton, UK. SO17 1BJ.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is free software; you can redistribute it and/or modify&lt;br /&gt;
 #  it under the terms of the GNU General Public License as published by&lt;br /&gt;
 #  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 #  (at your option) any later version.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is distributed in the hope that it will be useful,&lt;br /&gt;
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 #  GNU General Public License for more details.&lt;br /&gt;
 #  &lt;br /&gt;
 #  You should have received a copy of the GNU General Public License&lt;br /&gt;
 #  along with EPrints 3; if not, write to the Free Software&lt;br /&gt;
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 #&lt;br /&gt;
 ######################################################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Below the license block the name, description and synopsis (a synopsis is an example of usage). Lastly the METHODS title begins the section for inline subroutine documentation.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	=head1 NAME&lt;br /&gt;
&lt;br /&gt;
	EPrints::MyModule - A one line description of MyModule&lt;br /&gt;
&lt;br /&gt;
	=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
	One or two paragraphs explaining the function of EPrints::MyModule.&lt;br /&gt;
&lt;br /&gt;
	=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
		use EPrints::MyModule;&lt;br /&gt;
&lt;br /&gt;
		my $obj = EPrints::MyModule-&amp;gt;new( $opts );&lt;br /&gt;
		$obj-&amp;gt;do_thing( $thingy );&lt;br /&gt;
&lt;br /&gt;
	=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
	=over 4&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Methods==&lt;br /&gt;
===Public Methods===&lt;br /&gt;
Each public subroutine should have POD documentation above it, with hashes to&lt;br /&gt;
separate it from the method above. A large module should probably be split into&lt;br /&gt;
different sections, e.g. &amp;quot;CONSTRUCTOR METHODS&amp;quot;, &amp;quot;ACCESSOR METHODS&amp;quot;, etc.&lt;br /&gt;
Private methods can be documented using Perl comments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	=item $objname = EPrints::StyleGuide-&amp;gt;my_sub( $arg1, [$opt_arg2], \%opts )&lt;br /&gt;
&lt;br /&gt;
	A description of what my_sub does and arguments it takes ($opt_arg2 is&lt;br /&gt;
	shown as optional by using brackets).&lt;br /&gt;
&lt;br /&gt;
	A description of $arg1 if needed, along with an example:&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub( &amp;quot;eprintid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub(&lt;br /&gt;
			$arg1,&lt;br /&gt;
			undef,&lt;br /&gt;
			{&lt;br /&gt;
				opt1 =&amp;gt; $var1, # What is var1&lt;br /&gt;
				opt2 =&amp;gt; $var2, # What is var2&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	Further elaboration on the effect of $var2.&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	sub my_sub&lt;br /&gt;
	{&lt;br /&gt;
		...&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Private Methods===&lt;br /&gt;
&lt;br /&gt;
==Automatically reformatting code==&lt;br /&gt;
There is a wonderful utility called ''perltidy'' (find link)&lt;br /&gt;
&lt;br /&gt;
This reformats perl for you (and does a syntax check at the same time... lovely.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&lt;br /&gt;
  perltidy -gnu -csc -b JSON.pm&lt;br /&gt;
&lt;br /&gt;
  -gnu reformats into the general 'gnu' style (as opposed to the &amp;quot;Larry Wall/Perl&amp;quot; style)&lt;br /&gt;
  -csc adds comments to the end of longish loops&lt;br /&gt;
  -b edits the file in place (so you may want to leave that off initially)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6564</id>
		<title>StyleGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6564"/>
		<updated>2009-08-07T17:31:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Conditionals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints has been under development for many years and has some fluff about the place. For new programmers this document is intended as a 'style guide' to at least keep the code and documentation consistent across new modules.&lt;br /&gt;
&lt;br /&gt;
==Programming Style==&lt;br /&gt;
&lt;br /&gt;
===Naming===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             TYPE           EXAMPLE&lt;br /&gt;
&lt;br /&gt;
             module         StyleGuide&lt;br /&gt;
             subroutine     get_value&lt;br /&gt;
             global var     AUTH_OK&lt;br /&gt;
             local var      $field_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Subroutines===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1, $arg2 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where possible, use &amp;quot;return&amp;quot; rather than an &amp;quot;if&amp;quot; block.&lt;br /&gt;
&lt;br /&gt;
AVOID:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     my $r;&lt;br /&gt;
                     if( $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                             $r = $arg1 * 2;&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                             log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                     }&lt;br /&gt;
                     &lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prefer this style instead, treating the problem like a basic exception to the normal running of the function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     if( !defined $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                            log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                            return;&lt;br /&gt;
                     }&lt;br /&gt;
     &lt;br /&gt;
                     return $arg1 * 2;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditionals===&lt;br /&gt;
&lt;br /&gt;
(trivial)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             return 0 if( ref($a) eq &amp;quot;ARRAY&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             $a = 23 if( !defined $a );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Multi-line)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( ref($a) eq &amp;quot;ARRAY&amp;quot; )&lt;br /&gt;
             {&lt;br /&gt;
                     print &amp;quot;Dang&amp;quot;;&lt;br /&gt;
                     return 0;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Loops===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             foreach my $field ( @fields )&lt;br /&gt;
             {&lt;br /&gt;
                     push @foo, $field-&amp;gt;get_name();&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
OR, when nested:&lt;br /&gt;
&lt;br /&gt;
             FIELD: foreach my $field ( @fields )&lt;br /&gt;
             { &lt;br /&gt;
                     VALUE: foreach my $value ( @{$field-&amp;gt;{ &amp;quot;lsd&amp;quot; }} )&lt;br /&gt;
                     {&lt;br /&gt;
                             next VALUE if !defined $value; &lt;br /&gt;
                             $values{ $value } = 1;&lt;br /&gt;
                     }&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid $_ where possible.&lt;br /&gt;
&lt;br /&gt;
Try and use &amp;quot;next&amp;quot; rather than if when inside loops.&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We would like everything under the same license.... the EPrints license:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ######################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #  This file is part of GNU EPrints 3.&lt;br /&gt;
 #  &lt;br /&gt;
 #  Copyright (c) 2000-2007 University of Southampton, UK. SO17 1BJ.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is free software; you can redistribute it and/or modify&lt;br /&gt;
 #  it under the terms of the GNU General Public License as published by&lt;br /&gt;
 #  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 #  (at your option) any later version.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is distributed in the hope that it will be useful,&lt;br /&gt;
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 #  GNU General Public License for more details.&lt;br /&gt;
 #  &lt;br /&gt;
 #  You should have received a copy of the GNU General Public License&lt;br /&gt;
 #  along with EPrints 3; if not, write to the Free Software&lt;br /&gt;
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 #&lt;br /&gt;
 ######################################################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Below the license block the name, description and synopsis (a synopsis is an example of usage). Lastly the METHODS title begins the section for inline subroutine documentation.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	=head1 NAME&lt;br /&gt;
&lt;br /&gt;
	EPrints::MyModule - A one line description of MyModule&lt;br /&gt;
&lt;br /&gt;
	=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
	One or two paragraphs explaining the function of EPrints::MyModule.&lt;br /&gt;
&lt;br /&gt;
	=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
		use EPrints::MyModule;&lt;br /&gt;
&lt;br /&gt;
		my $obj = EPrints::MyModule-&amp;gt;new( $opts );&lt;br /&gt;
		$obj-&amp;gt;do_thing( $thingy );&lt;br /&gt;
&lt;br /&gt;
	=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
	=over 4&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Methods==&lt;br /&gt;
===Public Methods===&lt;br /&gt;
Each public subroutine should have POD documentation above it, with hashes to&lt;br /&gt;
separate it from the method above. A large module should probably be split into&lt;br /&gt;
different sections, e.g. &amp;quot;CONSTRUCTOR METHODS&amp;quot;, &amp;quot;ACCESSOR METHODS&amp;quot;, etc.&lt;br /&gt;
Private methods can be documented using Perl comments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	=item $objname = EPrints::StyleGuide-&amp;gt;my_sub( $arg1, [$opt_arg2], \%opts )&lt;br /&gt;
&lt;br /&gt;
	A description of what my_sub does and arguments it takes ($opt_arg2 is&lt;br /&gt;
	shown as optional by using brackets).&lt;br /&gt;
&lt;br /&gt;
	A description of $arg1 if needed, along with an example:&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub( &amp;quot;eprintid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub(&lt;br /&gt;
			$arg1,&lt;br /&gt;
			undef,&lt;br /&gt;
			{&lt;br /&gt;
				opt1 =&amp;gt; $var1, # What is var1&lt;br /&gt;
				opt2 =&amp;gt; $var2, # What is var2&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	Further elaboration on the effect of $var2.&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	sub my_sub&lt;br /&gt;
	{&lt;br /&gt;
		...&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Private Methods===&lt;br /&gt;
&lt;br /&gt;
==Automatically reformatting code==&lt;br /&gt;
There is a wonderful utility called ''perltidy'' (find link)&lt;br /&gt;
&lt;br /&gt;
This reformats perl for you (and does a syntax check at the same time... lovely.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&lt;br /&gt;
  perltidy -gnu -csc -b JSON.pm&lt;br /&gt;
&lt;br /&gt;
  -gnu reformats into the general 'gnu' style (as opposed to the &amp;quot;Larry Wall/Perl&amp;quot; style)&lt;br /&gt;
  -csc adds comments to the end of longish loops&lt;br /&gt;
  -b edits the file in place (so you may want to leave that off initially)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6563</id>
		<title>StyleGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6563"/>
		<updated>2009-08-07T17:30:03Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints has been under development for many years and has some fluff about the place. For new programmers this document is intended as a 'style guide' to at least keep the code and documentation consistent across new modules.&lt;br /&gt;
&lt;br /&gt;
==Programming Style==&lt;br /&gt;
&lt;br /&gt;
===Naming===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             TYPE           EXAMPLE&lt;br /&gt;
&lt;br /&gt;
             module         StyleGuide&lt;br /&gt;
             subroutine     get_value&lt;br /&gt;
             global var     AUTH_OK&lt;br /&gt;
             local var      $field_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Subroutines===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1, $arg2 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where possible, use &amp;quot;return&amp;quot; rather than an &amp;quot;if&amp;quot; block.&lt;br /&gt;
&lt;br /&gt;
AVOID:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     my $r;&lt;br /&gt;
                     if( $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                             $r = $arg1 * 2;&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                             log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                     }&lt;br /&gt;
                     &lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prefer this style instead, treating the problem like a basic exception to the normal running of the function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     if( !defined $arg1 )&lt;br /&gt;
                     {&lt;br /&gt;
                            log( &amp;quot;some error&amp;quot; );&lt;br /&gt;
                            return;&lt;br /&gt;
                     }&lt;br /&gt;
     &lt;br /&gt;
                     return $arg1 * 2;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditionals===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( ref($a) eq &amp;quot;ARRAY&amp;quot; )&lt;br /&gt;
             {&lt;br /&gt;
                     return 0;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Loops===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             foreach my $field ( @fields )&lt;br /&gt;
             {&lt;br /&gt;
                     push @foo, $field-&amp;gt;get_name();&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
OR, when nested:&lt;br /&gt;
&lt;br /&gt;
             FIELD: foreach my $field ( @fields )&lt;br /&gt;
             { &lt;br /&gt;
                     VALUE: foreach my $value ( @{$field-&amp;gt;{ &amp;quot;lsd&amp;quot; }} )&lt;br /&gt;
                     {&lt;br /&gt;
                             next VALUE if !defined $value; &lt;br /&gt;
                             $values{ $value } = 1;&lt;br /&gt;
                     }&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid $_ where possible.&lt;br /&gt;
&lt;br /&gt;
Try and use &amp;quot;next&amp;quot; rather than if when inside loops.&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We would like everything under the same license.... the EPrints license:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ######################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #  This file is part of GNU EPrints 3.&lt;br /&gt;
 #  &lt;br /&gt;
 #  Copyright (c) 2000-2007 University of Southampton, UK. SO17 1BJ.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is free software; you can redistribute it and/or modify&lt;br /&gt;
 #  it under the terms of the GNU General Public License as published by&lt;br /&gt;
 #  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 #  (at your option) any later version.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is distributed in the hope that it will be useful,&lt;br /&gt;
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 #  GNU General Public License for more details.&lt;br /&gt;
 #  &lt;br /&gt;
 #  You should have received a copy of the GNU General Public License&lt;br /&gt;
 #  along with EPrints 3; if not, write to the Free Software&lt;br /&gt;
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 #&lt;br /&gt;
 ######################################################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Below the license block the name, description and synopsis (a synopsis is an example of usage). Lastly the METHODS title begins the section for inline subroutine documentation.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	=head1 NAME&lt;br /&gt;
&lt;br /&gt;
	EPrints::MyModule - A one line description of MyModule&lt;br /&gt;
&lt;br /&gt;
	=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
	One or two paragraphs explaining the function of EPrints::MyModule.&lt;br /&gt;
&lt;br /&gt;
	=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
		use EPrints::MyModule;&lt;br /&gt;
&lt;br /&gt;
		my $obj = EPrints::MyModule-&amp;gt;new( $opts );&lt;br /&gt;
		$obj-&amp;gt;do_thing( $thingy );&lt;br /&gt;
&lt;br /&gt;
	=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
	=over 4&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Methods==&lt;br /&gt;
===Public Methods===&lt;br /&gt;
Each public subroutine should have POD documentation above it, with hashes to&lt;br /&gt;
separate it from the method above. A large module should probably be split into&lt;br /&gt;
different sections, e.g. &amp;quot;CONSTRUCTOR METHODS&amp;quot;, &amp;quot;ACCESSOR METHODS&amp;quot;, etc.&lt;br /&gt;
Private methods can be documented using Perl comments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	=item $objname = EPrints::StyleGuide-&amp;gt;my_sub( $arg1, [$opt_arg2], \%opts )&lt;br /&gt;
&lt;br /&gt;
	A description of what my_sub does and arguments it takes ($opt_arg2 is&lt;br /&gt;
	shown as optional by using brackets).&lt;br /&gt;
&lt;br /&gt;
	A description of $arg1 if needed, along with an example:&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub( &amp;quot;eprintid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub(&lt;br /&gt;
			$arg1,&lt;br /&gt;
			undef,&lt;br /&gt;
			{&lt;br /&gt;
				opt1 =&amp;gt; $var1, # What is var1&lt;br /&gt;
				opt2 =&amp;gt; $var2, # What is var2&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	Further elaboration on the effect of $var2.&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	sub my_sub&lt;br /&gt;
	{&lt;br /&gt;
		...&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Private Methods===&lt;br /&gt;
&lt;br /&gt;
==Automatically reformatting code==&lt;br /&gt;
There is a wonderful utility called ''perltidy'' (find link)&lt;br /&gt;
&lt;br /&gt;
This reformats perl for you (and does a syntax check at the same time... lovely.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&lt;br /&gt;
  perltidy -gnu -csc -b JSON.pm&lt;br /&gt;
&lt;br /&gt;
  -gnu reformats into the general 'gnu' style (as opposed to the &amp;quot;Larry Wall/Perl&amp;quot; style)&lt;br /&gt;
  -csc adds comments to the end of longish loops&lt;br /&gt;
  -b edits the file in place (so you may want to leave that off initially)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6562</id>
		<title>StyleGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=StyleGuide&amp;diff=6562"/>
		<updated>2009-08-07T17:25:01Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Loops */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints has been under development for many years and has some fluff about the place. For new programmers this document is intended as a 'style guide' to at least keep the code and documentation consistent across new modules.&lt;br /&gt;
&lt;br /&gt;
==Programming Style==&lt;br /&gt;
&lt;br /&gt;
===Naming===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             TYPE           EXAMPLE&lt;br /&gt;
&lt;br /&gt;
             module         StyleGuide&lt;br /&gt;
             subroutine     get_value&lt;br /&gt;
             global var     AUTH_OK&lt;br /&gt;
             local var      $field_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Subroutines===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             sub get_value&lt;br /&gt;
             {&lt;br /&gt;
                     my( $self, $arg1, $arg2 ) = @_;&lt;br /&gt;
&lt;br /&gt;
                     return $r;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Conditionals===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             if( ref($a) eq &amp;quot;ARRAY&amp;quot; )&lt;br /&gt;
             {&lt;br /&gt;
                     return 0;&lt;br /&gt;
             }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Loops===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
             foreach my $field ( @fields )&lt;br /&gt;
             {&lt;br /&gt;
                     push @foo, $field-&amp;gt;get_name();&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
OR, when nested:&lt;br /&gt;
&lt;br /&gt;
             FIELD: foreach my $field ( @fields )&lt;br /&gt;
             { &lt;br /&gt;
                     VALUE: foreach my $value ( @{$field-&amp;gt;{ &amp;quot;lsd&amp;quot; }} )&lt;br /&gt;
                     {&lt;br /&gt;
                             next VALUE if !defined $value; &lt;br /&gt;
                             $values{ $value } = 1;&lt;br /&gt;
                     }&lt;br /&gt;
             }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avoid $_ where possible.&lt;br /&gt;
&lt;br /&gt;
Try and use &amp;quot;next&amp;quot; rather than if when inside loops.&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We would like everything under the same license.... the EPrints license:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ######################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #  This file is part of GNU EPrints 3.&lt;br /&gt;
 #  &lt;br /&gt;
 #  Copyright (c) 2000-2007 University of Southampton, UK. SO17 1BJ.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is free software; you can redistribute it and/or modify&lt;br /&gt;
 #  it under the terms of the GNU General Public License as published by&lt;br /&gt;
 #  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 #  (at your option) any later version.&lt;br /&gt;
 #  &lt;br /&gt;
 #  EPrints 3 is distributed in the hope that it will be useful,&lt;br /&gt;
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 #  GNU General Public License for more details.&lt;br /&gt;
 #  &lt;br /&gt;
 #  You should have received a copy of the GNU General Public License&lt;br /&gt;
 #  along with EPrints 3; if not, write to the Free Software&lt;br /&gt;
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 #&lt;br /&gt;
 ######################################################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Below the license block the name, description and synopsis (a synopsis is an example of usage). Lastly the METHODS title begins the section for inline subroutine documentation.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	=head1 NAME&lt;br /&gt;
&lt;br /&gt;
	EPrints::MyModule - A one line description of MyModule&lt;br /&gt;
&lt;br /&gt;
	=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
	One or two paragraphs explaining the function of EPrints::MyModule.&lt;br /&gt;
&lt;br /&gt;
	=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
		use EPrints::MyModule;&lt;br /&gt;
&lt;br /&gt;
		my $obj = EPrints::MyModule-&amp;gt;new( $opts );&lt;br /&gt;
		$obj-&amp;gt;do_thing( $thingy );&lt;br /&gt;
&lt;br /&gt;
	=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
	=over 4&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Methods==&lt;br /&gt;
===Public Methods===&lt;br /&gt;
Each public subroutine should have POD documentation above it, with hashes to&lt;br /&gt;
separate it from the method above. A large module should probably be split into&lt;br /&gt;
different sections, e.g. &amp;quot;CONSTRUCTOR METHODS&amp;quot;, &amp;quot;ACCESSOR METHODS&amp;quot;, etc.&lt;br /&gt;
Private methods can be documented using Perl comments.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	=item $objname = EPrints::StyleGuide-&amp;gt;my_sub( $arg1, [$opt_arg2], \%opts )&lt;br /&gt;
&lt;br /&gt;
	A description of what my_sub does and arguments it takes ($opt_arg2 is&lt;br /&gt;
	shown as optional by using brackets).&lt;br /&gt;
&lt;br /&gt;
	A description of $arg1 if needed, along with an example:&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub( &amp;quot;eprintid&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
		EPrints::StyleGuide-&amp;gt;my_sub(&lt;br /&gt;
			$arg1,&lt;br /&gt;
			undef,&lt;br /&gt;
			{&lt;br /&gt;
				opt1 =&amp;gt; $var1, # What is var1&lt;br /&gt;
				opt2 =&amp;gt; $var2, # What is var2&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	Further elaboration on the effect of $var2.&lt;br /&gt;
&lt;br /&gt;
	=cut&lt;br /&gt;
&lt;br /&gt;
	######################################################################&lt;br /&gt;
&lt;br /&gt;
	sub my_sub&lt;br /&gt;
	{&lt;br /&gt;
		...&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Private Methods===&lt;br /&gt;
&lt;br /&gt;
==Automatically reformatting code==&lt;br /&gt;
There is a wonderful utility called ''perltidy'' (find link)&lt;br /&gt;
&lt;br /&gt;
This reformats perl for you (and does a syntax check at the same time... lovely.&lt;br /&gt;
&lt;br /&gt;
Use:&lt;br /&gt;
&lt;br /&gt;
  perltidy -gnu -csc -b JSON.pm&lt;br /&gt;
&lt;br /&gt;
  -gnu reformats into the general 'gnu' style (as opposed to the &amp;quot;Larry Wall/Perl&amp;quot; style)&lt;br /&gt;
  -csc adds comments to the end of longish loops&lt;br /&gt;
  -b edits the file in place (so you may want to leave that off initially)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6561</id>
		<title>Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6561"/>
		<updated>2009-08-07T16:53:53Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
See the [[Main Page]] for other areas of this wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Introduction|Introduction to EPrints]] and [[History|History of EPrints]] &lt;br /&gt;
* New Features in [[New Features in EPrints 3.1|EPrints 3.1]] and planned for [[New Features in EPrints 3.2|EPrints 3.2]] (see also the note on [[EPrints Version Numbering]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation and First Steps =&lt;br /&gt;
&lt;br /&gt;
* [[Quick Server Install Guide (Debian / Ubuntu Server)]]&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Binary ==&lt;br /&gt;
* [[Installing EPrints 3 via Redhat RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via Fedora RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via apt (Debian/Ubuntu)]]&lt;br /&gt;
&lt;br /&gt;
== Using the Live CD ==&lt;br /&gt;
* [[EPrints Live CD Help]]&lt;br /&gt;
* [[Building the Live CD]]&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Source (.tar.gz) ==&lt;br /&gt;
&lt;br /&gt;
* [[Recommended Platforms]]&lt;br /&gt;
* [[Required software]]&lt;br /&gt;
* Install Guides&lt;br /&gt;
** [[Installing Eprints 3 on Fedora Core 7]] (also applicable to FC6)&lt;br /&gt;
** [[Installing EPrints 3 on RedHat Enterprise 4]]&lt;br /&gt;
** [[Installing EPrints 3 on OS X]]&lt;br /&gt;
** [[Debian from source | Installing EPrints 3 on Debian/Ubuntu - The Quick Way]]&lt;br /&gt;
** [[Installing EPrints 3 on Ubuntu 6.10]]&lt;br /&gt;
** [[Installing EPrints 3 on Debian]]&lt;br /&gt;
** [[Installing in a chroot Debian/Ubuntu]]&lt;br /&gt;
** [[:Category:Installation|Installing]] EPrints on various platforms.&lt;br /&gt;
* [[Https3 | Installing EPrints 3 with an https server]]&lt;br /&gt;
&lt;br /&gt;
==Post Installation==&lt;br /&gt;
&lt;br /&gt;
* [[Upgrading EPrints 3 versions | Upgrading from an earlier version of EPrints3]]&lt;br /&gt;
* [[Migration|Migrating from EPrints 2.3]]&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
* [[Getting Started with EPrints 3|Getting Started]] &lt;br /&gt;
&lt;br /&gt;
* Maintenance &lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Generate Scripts]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Log Files]]&lt;br /&gt;
** [[Automating your maintenance]]&lt;br /&gt;
&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border-left: solid 1px #ccc; border-right: solid 1px #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How-to Guides =&lt;br /&gt;
&lt;br /&gt;
''[http://en.wikipedia.org/wiki/Howto What is a how-to?]&lt;br /&gt;
&lt;br /&gt;
* Orientation &amp;lt;span style=&amp;quot;color: #f94; font-size: 130%&amp;quot;&amp;gt;(Start here)&amp;lt;/span&amp;gt;&lt;br /&gt;
** [[Configuration orientation|New to EPrints 3?]]  - ''before diving into the how-tos, take some time to read through this brief orientation guide and familiarise yourself with the EPrints configuration landscape...''&lt;br /&gt;
** [[EPrints_3_Configuration_orientation_for_EPrints_2_administrators|Migrated from EPrints 2?]] - ''this orientation guide is intended to help you re-orient yourselves in your new EPrints 3 set up...'' &lt;br /&gt;
* [[Front Page Warning | Removing the Front Page Warning]] - Your first go at branding&lt;br /&gt;
* [[Branding with confidence]] - ''one of the most common EPrints customisations is to add your own institution's branding and &amp;quot;look and feel&amp;quot; to the interface...''&lt;br /&gt;
** [[Branding, the next level]] - ''how to completely change the interface to your own design''&lt;br /&gt;
* [[OAI]]&lt;br /&gt;
* [[Adding new views]]&lt;br /&gt;
* Workflow&lt;br /&gt;
* Deposit Types&lt;br /&gt;
** [[Removing types]]&lt;br /&gt;
* Metadata&lt;br /&gt;
* Subjects (fold in with Organisation Hierarchy under &amp;quot;controled vocabularies&amp;quot;)&lt;br /&gt;
* [[EPrints_3_Organisation_Hierarchy|Organisation Hierarchy]] - ''how to put your own organisation's Hierarchy into EPrints 3''&lt;br /&gt;
* Searches&lt;br /&gt;
* [[Autocompletion and Authority Files (Romeo Autocomplete)]] - ''add autocomplete functionality to the Publication Title input field based on an authority file downloaded from EPrints Romeo...''&lt;br /&gt;
* [[Create Export Plugins]] - ''create a Perl Module that will export your data...''&lt;br /&gt;
* [[Login-Only Repository]] - ''require a username and password to access all pages (including search, browse, and the front page)...''&lt;br /&gt;
* [[Change Deposit Status in Bulk]] - ''move a large number of deposits from inbox to archive&lt;br /&gt;
* [[Demoprints Repository]] - ''How to set up and configure the demoprints.eprints.org repository.&lt;br /&gt;
* [[SWORD]] - ''How to configure the SWORD protocol on EPrints.&lt;br /&gt;
* [[:Category:Howto|more ...]]&lt;br /&gt;
&lt;br /&gt;
= How to contribute =&lt;br /&gt;
&lt;br /&gt;
There's a number of different ways you can contribute to the EPrints project. This section covers all the ones we can think of...&lt;br /&gt;
&lt;br /&gt;
Always make an entry on http://files.eprints.org/ for your contribution, even if you don't upload the files. This will make it the one-stop place for people to find EPrints extensions.&lt;br /&gt;
&lt;br /&gt;
* [[Contribute: Plugins | Plugins]]&lt;br /&gt;
* [[Contribute: Scripts | Scripts]]&lt;br /&gt;
* [[Contribute: Themes | Themes]]&lt;br /&gt;
* [[Contribute: Translations | Translations]]&lt;br /&gt;
* [[Contribute: Other | Other neighbourly things to do]]&lt;br /&gt;
* [[Extension Packages]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
* [[Preservation Support]] in EPrints 3&lt;br /&gt;
* [[i18n]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;33%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Directory Structure]] - will be linked somewhere better, later.&lt;br /&gt;
&lt;br /&gt;
* [[Metadata]] - configuring metadata fields.&lt;br /&gt;
* [[Archives/ARCHIVEID/cfg/|Repository Configuration]]&lt;br /&gt;
* [[XML Configuration]] Files&lt;br /&gt;
** [[EPScript]] - documentation for the EP3 Scripting language (for use in citations and workflow files).&lt;br /&gt;
** [[EPrints Control Format]] - the structure used to embed EPScript in an XML configuration file.&lt;br /&gt;
** [[Citation Format]]&lt;br /&gt;
** [[Workflow Format]] - the structure of the EP3 workflow files&lt;br /&gt;
** [[Phrase Format]]&lt;br /&gt;
** [[Template Format]]&lt;br /&gt;
** [[XPAGE Format]]&lt;br /&gt;
* [[XML Export Format]]&lt;br /&gt;
* EPrints data structure &lt;br /&gt;
** of the software&lt;br /&gt;
** of the database (relating the dataobjects to each other using eprints fields)&lt;br /&gt;
* [[Data Object]]s and data sets&lt;br /&gt;
** The [[EPrint Object]]&lt;br /&gt;
** The [[User Object]]&lt;br /&gt;
** The [[Document Object]]&lt;br /&gt;
** The [[Subject Object]]&lt;br /&gt;
** The [[Saved Search Object]]&lt;br /&gt;
** The [[History Object]]&lt;br /&gt;
** The [[Access Object]]&lt;br /&gt;
** The [[Request Object]]&lt;br /&gt;
* Plugins&lt;br /&gt;
** Import&lt;br /&gt;
** [[Export Plugins]]&lt;br /&gt;
** Components&lt;br /&gt;
** [[Screen Plugins]]&lt;br /&gt;
** Convert&lt;br /&gt;
* [[Autocompletion]]&lt;br /&gt;
** [[Understanding IDs in Workflow Forms]]&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Dynamic Template System]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6560</id>
		<title>Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6560"/>
		<updated>2009-08-07T16:53:33Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Introduction to EPrints 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
See the [[Main Page]] for other areas of this wiki.&lt;br /&gt;
&lt;br /&gt;
= Introduction to EPrints 3 =&lt;br /&gt;
&lt;br /&gt;
* [[Introduction|Introduction to EPrints]] and [[History|History of EPrints]] &lt;br /&gt;
* New Features in [[New Features in EPrints 3.1|EPrints 3.1]] and planned for [[New Features in EPrints 3.2|EPrints 3.2]] (see also the note on [[EPrints Version Numbering]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation and First Steps =&lt;br /&gt;
&lt;br /&gt;
* [[Quick Server Install Guide (Debian / Ubuntu Server)]]&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Binary ==&lt;br /&gt;
* [[Installing EPrints 3 via Redhat RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via Fedora RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via apt (Debian/Ubuntu)]]&lt;br /&gt;
&lt;br /&gt;
== Using the Live CD ==&lt;br /&gt;
* [[EPrints Live CD Help]]&lt;br /&gt;
* [[Building the Live CD]]&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Source (.tar.gz) ==&lt;br /&gt;
&lt;br /&gt;
* [[Recommended Platforms]]&lt;br /&gt;
* [[Required software]]&lt;br /&gt;
* Install Guides&lt;br /&gt;
** [[Installing Eprints 3 on Fedora Core 7]] (also applicable to FC6)&lt;br /&gt;
** [[Installing EPrints 3 on RedHat Enterprise 4]]&lt;br /&gt;
** [[Installing EPrints 3 on OS X]]&lt;br /&gt;
** [[Debian from source | Installing EPrints 3 on Debian/Ubuntu - The Quick Way]]&lt;br /&gt;
** [[Installing EPrints 3 on Ubuntu 6.10]]&lt;br /&gt;
** [[Installing EPrints 3 on Debian]]&lt;br /&gt;
** [[Installing in a chroot Debian/Ubuntu]]&lt;br /&gt;
** [[:Category:Installation|Installing]] EPrints on various platforms.&lt;br /&gt;
* [[Https3 | Installing EPrints 3 with an https server]]&lt;br /&gt;
&lt;br /&gt;
==Post Installation==&lt;br /&gt;
&lt;br /&gt;
* [[Upgrading EPrints 3 versions | Upgrading from an earlier version of EPrints3]]&lt;br /&gt;
* [[Migration|Migrating from EPrints 2.3]]&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
* [[Getting Started with EPrints 3|Getting Started]] &lt;br /&gt;
&lt;br /&gt;
* Maintenance &lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Generate Scripts]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Log Files]]&lt;br /&gt;
** [[Automating your maintenance]]&lt;br /&gt;
&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border-left: solid 1px #ccc; border-right: solid 1px #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How-to Guides =&lt;br /&gt;
&lt;br /&gt;
''[http://en.wikipedia.org/wiki/Howto What is a how-to?]&lt;br /&gt;
&lt;br /&gt;
* Orientation &amp;lt;span style=&amp;quot;color: #f94; font-size: 130%&amp;quot;&amp;gt;(Start here)&amp;lt;/span&amp;gt;&lt;br /&gt;
** [[Configuration orientation|New to EPrints 3?]]  - ''before diving into the how-tos, take some time to read through this brief orientation guide and familiarise yourself with the EPrints configuration landscape...''&lt;br /&gt;
** [[EPrints_3_Configuration_orientation_for_EPrints_2_administrators|Migrated from EPrints 2?]] - ''this orientation guide is intended to help you re-orient yourselves in your new EPrints 3 set up...'' &lt;br /&gt;
* [[Front Page Warning | Removing the Front Page Warning]] - Your first go at branding&lt;br /&gt;
* [[Branding with confidence]] - ''one of the most common EPrints customisations is to add your own institution's branding and &amp;quot;look and feel&amp;quot; to the interface...''&lt;br /&gt;
** [[Branding, the next level]] - ''how to completely change the interface to your own design''&lt;br /&gt;
* [[OAI]]&lt;br /&gt;
* [[Adding new views]]&lt;br /&gt;
* Workflow&lt;br /&gt;
* Deposit Types&lt;br /&gt;
** [[Removing types]]&lt;br /&gt;
* Metadata&lt;br /&gt;
* Subjects (fold in with Organisation Hierarchy under &amp;quot;controled vocabularies&amp;quot;)&lt;br /&gt;
* [[EPrints_3_Organisation_Hierarchy|Organisation Hierarchy]] - ''how to put your own organisation's Hierarchy into EPrints 3''&lt;br /&gt;
* Searches&lt;br /&gt;
* [[Autocompletion and Authority Files (Romeo Autocomplete)]] - ''add autocomplete functionality to the Publication Title input field based on an authority file downloaded from EPrints Romeo...''&lt;br /&gt;
* [[Create Export Plugins]] - ''create a Perl Module that will export your data...''&lt;br /&gt;
* [[Login-Only Repository]] - ''require a username and password to access all pages (including search, browse, and the front page)...''&lt;br /&gt;
* [[Change Deposit Status in Bulk]] - ''move a large number of deposits from inbox to archive&lt;br /&gt;
* [[Demoprints Repository]] - ''How to set up and configure the demoprints.eprints.org repository.&lt;br /&gt;
* [[SWORD]] - ''How to configure the SWORD protocol on EPrints.&lt;br /&gt;
* [[:Category:Howto|more ...]]&lt;br /&gt;
&lt;br /&gt;
= How to contribute =&lt;br /&gt;
&lt;br /&gt;
There's a number of different ways you can contribute to the EPrints project. This section covers all the ones we can think of...&lt;br /&gt;
&lt;br /&gt;
Always make an entry on http://files.eprints.org/ for your contribution, even if you don't upload the files. This will make it the one-stop place for people to find EPrints extensions.&lt;br /&gt;
&lt;br /&gt;
* [[Contribute: Plugins | Plugins]]&lt;br /&gt;
* [[Contribute: Scripts | Scripts]]&lt;br /&gt;
* [[Contribute: Themes | Themes]]&lt;br /&gt;
* [[Contribute: Translations | Translations]]&lt;br /&gt;
* [[Contribute: Other | Other neighbourly things to do]]&lt;br /&gt;
* [[Extension Packages]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
* [[Preservation Support]] in EPrints 3&lt;br /&gt;
* [[i18n]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;33%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Directory Structure]] - will be linked somewhere better, later.&lt;br /&gt;
&lt;br /&gt;
* [[Metadata]] - configuring metadata fields.&lt;br /&gt;
* [[Archives/ARCHIVEID/cfg/|Repository Configuration]]&lt;br /&gt;
* [[XML Configuration]] Files&lt;br /&gt;
** [[EPScript]] - documentation for the EP3 Scripting language (for use in citations and workflow files).&lt;br /&gt;
** [[EPrints Control Format]] - the structure used to embed EPScript in an XML configuration file.&lt;br /&gt;
** [[Citation Format]]&lt;br /&gt;
** [[Workflow Format]] - the structure of the EP3 workflow files&lt;br /&gt;
** [[Phrase Format]]&lt;br /&gt;
** [[Template Format]]&lt;br /&gt;
** [[XPAGE Format]]&lt;br /&gt;
* [[XML Export Format]]&lt;br /&gt;
* EPrints data structure &lt;br /&gt;
** of the software&lt;br /&gt;
** of the database (relating the dataobjects to each other using eprints fields)&lt;br /&gt;
* [[Data Object]]s and data sets&lt;br /&gt;
** The [[EPrint Object]]&lt;br /&gt;
** The [[User Object]]&lt;br /&gt;
** The [[Document Object]]&lt;br /&gt;
** The [[Subject Object]]&lt;br /&gt;
** The [[Saved Search Object]]&lt;br /&gt;
** The [[History Object]]&lt;br /&gt;
** The [[Access Object]]&lt;br /&gt;
** The [[Request Object]]&lt;br /&gt;
* Plugins&lt;br /&gt;
** Import&lt;br /&gt;
** [[Export Plugins]]&lt;br /&gt;
** Components&lt;br /&gt;
** [[Screen Plugins]]&lt;br /&gt;
** Convert&lt;br /&gt;
* [[Autocompletion]]&lt;br /&gt;
** [[Understanding IDs in Workflow Forms]]&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Dynamic Template System]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6559</id>
		<title>Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6559"/>
		<updated>2009-08-07T16:53:11Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Introduction to EPrints 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
See the [[Main Page]] for other areas of this wiki.&lt;br /&gt;
&lt;br /&gt;
= Introduction to EPrints 3 =&lt;br /&gt;
&lt;br /&gt;
* [[Introduction|Introduction to EPrints]] and [[History|History of EPrints]] &lt;br /&gt;
* New Features in [[New Features in EPrints 3.1|EPrints 3.1]] and planned for[[New Features in EPrints 3.2|EPrints 3.2]] (see also the note on [[EPrints Version Numbering]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation and First Steps =&lt;br /&gt;
&lt;br /&gt;
* [[Quick Server Install Guide (Debian / Ubuntu Server)]]&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Binary ==&lt;br /&gt;
* [[Installing EPrints 3 via Redhat RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via Fedora RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via apt (Debian/Ubuntu)]]&lt;br /&gt;
&lt;br /&gt;
== Using the Live CD ==&lt;br /&gt;
* [[EPrints Live CD Help]]&lt;br /&gt;
* [[Building the Live CD]]&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Source (.tar.gz) ==&lt;br /&gt;
&lt;br /&gt;
* [[Recommended Platforms]]&lt;br /&gt;
* [[Required software]]&lt;br /&gt;
* Install Guides&lt;br /&gt;
** [[Installing Eprints 3 on Fedora Core 7]] (also applicable to FC6)&lt;br /&gt;
** [[Installing EPrints 3 on RedHat Enterprise 4]]&lt;br /&gt;
** [[Installing EPrints 3 on OS X]]&lt;br /&gt;
** [[Debian from source | Installing EPrints 3 on Debian/Ubuntu - The Quick Way]]&lt;br /&gt;
** [[Installing EPrints 3 on Ubuntu 6.10]]&lt;br /&gt;
** [[Installing EPrints 3 on Debian]]&lt;br /&gt;
** [[Installing in a chroot Debian/Ubuntu]]&lt;br /&gt;
** [[:Category:Installation|Installing]] EPrints on various platforms.&lt;br /&gt;
* [[Https3 | Installing EPrints 3 with an https server]]&lt;br /&gt;
&lt;br /&gt;
==Post Installation==&lt;br /&gt;
&lt;br /&gt;
* [[Upgrading EPrints 3 versions | Upgrading from an earlier version of EPrints3]]&lt;br /&gt;
* [[Migration|Migrating from EPrints 2.3]]&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
* [[Getting Started with EPrints 3|Getting Started]] &lt;br /&gt;
&lt;br /&gt;
* Maintenance &lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Generate Scripts]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Log Files]]&lt;br /&gt;
** [[Automating your maintenance]]&lt;br /&gt;
&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border-left: solid 1px #ccc; border-right: solid 1px #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How-to Guides =&lt;br /&gt;
&lt;br /&gt;
''[http://en.wikipedia.org/wiki/Howto What is a how-to?]&lt;br /&gt;
&lt;br /&gt;
* Orientation &amp;lt;span style=&amp;quot;color: #f94; font-size: 130%&amp;quot;&amp;gt;(Start here)&amp;lt;/span&amp;gt;&lt;br /&gt;
** [[Configuration orientation|New to EPrints 3?]]  - ''before diving into the how-tos, take some time to read through this brief orientation guide and familiarise yourself with the EPrints configuration landscape...''&lt;br /&gt;
** [[EPrints_3_Configuration_orientation_for_EPrints_2_administrators|Migrated from EPrints 2?]] - ''this orientation guide is intended to help you re-orient yourselves in your new EPrints 3 set up...'' &lt;br /&gt;
* [[Front Page Warning | Removing the Front Page Warning]] - Your first go at branding&lt;br /&gt;
* [[Branding with confidence]] - ''one of the most common EPrints customisations is to add your own institution's branding and &amp;quot;look and feel&amp;quot; to the interface...''&lt;br /&gt;
** [[Branding, the next level]] - ''how to completely change the interface to your own design''&lt;br /&gt;
* [[OAI]]&lt;br /&gt;
* [[Adding new views]]&lt;br /&gt;
* Workflow&lt;br /&gt;
* Deposit Types&lt;br /&gt;
** [[Removing types]]&lt;br /&gt;
* Metadata&lt;br /&gt;
* Subjects (fold in with Organisation Hierarchy under &amp;quot;controled vocabularies&amp;quot;)&lt;br /&gt;
* [[EPrints_3_Organisation_Hierarchy|Organisation Hierarchy]] - ''how to put your own organisation's Hierarchy into EPrints 3''&lt;br /&gt;
* Searches&lt;br /&gt;
* [[Autocompletion and Authority Files (Romeo Autocomplete)]] - ''add autocomplete functionality to the Publication Title input field based on an authority file downloaded from EPrints Romeo...''&lt;br /&gt;
* [[Create Export Plugins]] - ''create a Perl Module that will export your data...''&lt;br /&gt;
* [[Login-Only Repository]] - ''require a username and password to access all pages (including search, browse, and the front page)...''&lt;br /&gt;
* [[Change Deposit Status in Bulk]] - ''move a large number of deposits from inbox to archive&lt;br /&gt;
* [[Demoprints Repository]] - ''How to set up and configure the demoprints.eprints.org repository.&lt;br /&gt;
* [[SWORD]] - ''How to configure the SWORD protocol on EPrints.&lt;br /&gt;
* [[:Category:Howto|more ...]]&lt;br /&gt;
&lt;br /&gt;
= How to contribute =&lt;br /&gt;
&lt;br /&gt;
There's a number of different ways you can contribute to the EPrints project. This section covers all the ones we can think of...&lt;br /&gt;
&lt;br /&gt;
Always make an entry on http://files.eprints.org/ for your contribution, even if you don't upload the files. This will make it the one-stop place for people to find EPrints extensions.&lt;br /&gt;
&lt;br /&gt;
* [[Contribute: Plugins | Plugins]]&lt;br /&gt;
* [[Contribute: Scripts | Scripts]]&lt;br /&gt;
* [[Contribute: Themes | Themes]]&lt;br /&gt;
* [[Contribute: Translations | Translations]]&lt;br /&gt;
* [[Contribute: Other | Other neighbourly things to do]]&lt;br /&gt;
* [[Extension Packages]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
* [[Preservation Support]] in EPrints 3&lt;br /&gt;
* [[i18n]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;33%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Directory Structure]] - will be linked somewhere better, later.&lt;br /&gt;
&lt;br /&gt;
* [[Metadata]] - configuring metadata fields.&lt;br /&gt;
* [[Archives/ARCHIVEID/cfg/|Repository Configuration]]&lt;br /&gt;
* [[XML Configuration]] Files&lt;br /&gt;
** [[EPScript]] - documentation for the EP3 Scripting language (for use in citations and workflow files).&lt;br /&gt;
** [[EPrints Control Format]] - the structure used to embed EPScript in an XML configuration file.&lt;br /&gt;
** [[Citation Format]]&lt;br /&gt;
** [[Workflow Format]] - the structure of the EP3 workflow files&lt;br /&gt;
** [[Phrase Format]]&lt;br /&gt;
** [[Template Format]]&lt;br /&gt;
** [[XPAGE Format]]&lt;br /&gt;
* [[XML Export Format]]&lt;br /&gt;
* EPrints data structure &lt;br /&gt;
** of the software&lt;br /&gt;
** of the database (relating the dataobjects to each other using eprints fields)&lt;br /&gt;
* [[Data Object]]s and data sets&lt;br /&gt;
** The [[EPrint Object]]&lt;br /&gt;
** The [[User Object]]&lt;br /&gt;
** The [[Document Object]]&lt;br /&gt;
** The [[Subject Object]]&lt;br /&gt;
** The [[Saved Search Object]]&lt;br /&gt;
** The [[History Object]]&lt;br /&gt;
** The [[Access Object]]&lt;br /&gt;
** The [[Request Object]]&lt;br /&gt;
* Plugins&lt;br /&gt;
** Import&lt;br /&gt;
** [[Export Plugins]]&lt;br /&gt;
** Components&lt;br /&gt;
** [[Screen Plugins]]&lt;br /&gt;
** Convert&lt;br /&gt;
* [[Autocompletion]]&lt;br /&gt;
** [[Understanding IDs in Workflow Forms]]&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Dynamic Template System]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6558</id>
		<title>Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Manual&amp;diff=6558"/>
		<updated>2009-08-07T16:51:02Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
See the [[Main Page]] for other areas of this wiki.&lt;br /&gt;
&lt;br /&gt;
= Introduction to EPrints 3 =&lt;br /&gt;
&lt;br /&gt;
* [[Introduction]]&lt;br /&gt;
* [[History]] &lt;br /&gt;
&lt;br /&gt;
* [[New Features in EPrints 3.1]]&lt;br /&gt;
* [[New Features in EPrints 3.2]]&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Version Numbering]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installation and First Steps =&lt;br /&gt;
&lt;br /&gt;
* [[Quick Server Install Guide (Debian / Ubuntu Server)]]&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Binary ==&lt;br /&gt;
* [[Installing EPrints 3 via Redhat RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via Fedora RPM]]&lt;br /&gt;
* [[Installing EPrints 3 via apt (Debian/Ubuntu)]]&lt;br /&gt;
&lt;br /&gt;
== Using the Live CD ==&lt;br /&gt;
* [[EPrints Live CD Help]]&lt;br /&gt;
* [[Building the Live CD]]&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints From Source (.tar.gz) ==&lt;br /&gt;
&lt;br /&gt;
* [[Recommended Platforms]]&lt;br /&gt;
* [[Required software]]&lt;br /&gt;
* Install Guides&lt;br /&gt;
** [[Installing Eprints 3 on Fedora Core 7]] (also applicable to FC6)&lt;br /&gt;
** [[Installing EPrints 3 on RedHat Enterprise 4]]&lt;br /&gt;
** [[Installing EPrints 3 on OS X]]&lt;br /&gt;
** [[Debian from source | Installing EPrints 3 on Debian/Ubuntu - The Quick Way]]&lt;br /&gt;
** [[Installing EPrints 3 on Ubuntu 6.10]]&lt;br /&gt;
** [[Installing EPrints 3 on Debian]]&lt;br /&gt;
** [[Installing in a chroot Debian/Ubuntu]]&lt;br /&gt;
** [[:Category:Installation|Installing]] EPrints on various platforms.&lt;br /&gt;
* [[Https3 | Installing EPrints 3 with an https server]]&lt;br /&gt;
&lt;br /&gt;
==Post Installation==&lt;br /&gt;
&lt;br /&gt;
* [[Upgrading EPrints 3 versions | Upgrading from an earlier version of EPrints3]]&lt;br /&gt;
* [[Migration|Migrating from EPrints 2.3]]&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
* [[Getting Started with EPrints 3|Getting Started]] &lt;br /&gt;
&lt;br /&gt;
* Maintenance &lt;br /&gt;
** [[Backups]]&lt;br /&gt;
** [[Generate Scripts]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Log Files]]&lt;br /&gt;
** [[Automating your maintenance]]&lt;br /&gt;
&lt;br /&gt;
* [[Troubleshooting]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;33%&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border-left: solid 1px #ccc; border-right: solid 1px #ccc;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How-to Guides =&lt;br /&gt;
&lt;br /&gt;
''[http://en.wikipedia.org/wiki/Howto What is a how-to?]&lt;br /&gt;
&lt;br /&gt;
* Orientation &amp;lt;span style=&amp;quot;color: #f94; font-size: 130%&amp;quot;&amp;gt;(Start here)&amp;lt;/span&amp;gt;&lt;br /&gt;
** [[Configuration orientation|New to EPrints 3?]]  - ''before diving into the how-tos, take some time to read through this brief orientation guide and familiarise yourself with the EPrints configuration landscape...''&lt;br /&gt;
** [[EPrints_3_Configuration_orientation_for_EPrints_2_administrators|Migrated from EPrints 2?]] - ''this orientation guide is intended to help you re-orient yourselves in your new EPrints 3 set up...'' &lt;br /&gt;
* [[Front Page Warning | Removing the Front Page Warning]] - Your first go at branding&lt;br /&gt;
* [[Branding with confidence]] - ''one of the most common EPrints customisations is to add your own institution's branding and &amp;quot;look and feel&amp;quot; to the interface...''&lt;br /&gt;
** [[Branding, the next level]] - ''how to completely change the interface to your own design''&lt;br /&gt;
* [[OAI]]&lt;br /&gt;
* [[Adding new views]]&lt;br /&gt;
* Workflow&lt;br /&gt;
* Deposit Types&lt;br /&gt;
** [[Removing types]]&lt;br /&gt;
* Metadata&lt;br /&gt;
* Subjects (fold in with Organisation Hierarchy under &amp;quot;controled vocabularies&amp;quot;)&lt;br /&gt;
* [[EPrints_3_Organisation_Hierarchy|Organisation Hierarchy]] - ''how to put your own organisation's Hierarchy into EPrints 3''&lt;br /&gt;
* Searches&lt;br /&gt;
* [[Autocompletion and Authority Files (Romeo Autocomplete)]] - ''add autocomplete functionality to the Publication Title input field based on an authority file downloaded from EPrints Romeo...''&lt;br /&gt;
* [[Create Export Plugins]] - ''create a Perl Module that will export your data...''&lt;br /&gt;
* [[Login-Only Repository]] - ''require a username and password to access all pages (including search, browse, and the front page)...''&lt;br /&gt;
* [[Change Deposit Status in Bulk]] - ''move a large number of deposits from inbox to archive&lt;br /&gt;
* [[Demoprints Repository]] - ''How to set up and configure the demoprints.eprints.org repository.&lt;br /&gt;
* [[SWORD]] - ''How to configure the SWORD protocol on EPrints.&lt;br /&gt;
* [[:Category:Howto|more ...]]&lt;br /&gt;
&lt;br /&gt;
= How to contribute =&lt;br /&gt;
&lt;br /&gt;
There's a number of different ways you can contribute to the EPrints project. This section covers all the ones we can think of...&lt;br /&gt;
&lt;br /&gt;
Always make an entry on http://files.eprints.org/ for your contribution, even if you don't upload the files. This will make it the one-stop place for people to find EPrints extensions.&lt;br /&gt;
&lt;br /&gt;
* [[Contribute: Plugins | Plugins]]&lt;br /&gt;
* [[Contribute: Scripts | Scripts]]&lt;br /&gt;
* [[Contribute: Themes | Themes]]&lt;br /&gt;
* [[Contribute: Translations | Translations]]&lt;br /&gt;
* [[Contribute: Other | Other neighbourly things to do]]&lt;br /&gt;
* [[Extension Packages]]&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
* [[Preservation Support]] in EPrints 3&lt;br /&gt;
* [[i18n]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot; width=&amp;quot;33%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Directory Structure]] - will be linked somewhere better, later.&lt;br /&gt;
&lt;br /&gt;
* [[Metadata]] - configuring metadata fields.&lt;br /&gt;
* [[Archives/ARCHIVEID/cfg/|Repository Configuration]]&lt;br /&gt;
* [[XML Configuration]] Files&lt;br /&gt;
** [[EPScript]] - documentation for the EP3 Scripting language (for use in citations and workflow files).&lt;br /&gt;
** [[EPrints Control Format]] - the structure used to embed EPScript in an XML configuration file.&lt;br /&gt;
** [[Citation Format]]&lt;br /&gt;
** [[Workflow Format]] - the structure of the EP3 workflow files&lt;br /&gt;
** [[Phrase Format]]&lt;br /&gt;
** [[Template Format]]&lt;br /&gt;
** [[XPAGE Format]]&lt;br /&gt;
* [[XML Export Format]]&lt;br /&gt;
* EPrints data structure &lt;br /&gt;
** of the software&lt;br /&gt;
** of the database (relating the dataobjects to each other using eprints fields)&lt;br /&gt;
* [[Data Object]]s and data sets&lt;br /&gt;
** The [[EPrint Object]]&lt;br /&gt;
** The [[User Object]]&lt;br /&gt;
** The [[Document Object]]&lt;br /&gt;
** The [[Subject Object]]&lt;br /&gt;
** The [[Saved Search Object]]&lt;br /&gt;
** The [[History Object]]&lt;br /&gt;
** The [[Access Object]]&lt;br /&gt;
** The [[Request Object]]&lt;br /&gt;
* Plugins&lt;br /&gt;
** Import&lt;br /&gt;
** [[Export Plugins]]&lt;br /&gt;
** Components&lt;br /&gt;
** [[Screen Plugins]]&lt;br /&gt;
** Convert&lt;br /&gt;
* [[Autocompletion]]&lt;br /&gt;
** [[Understanding IDs in Workflow Forms]]&lt;br /&gt;
* [[API]]&lt;br /&gt;
* [[Dynamic Template System]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=EPrints_Control_Format&amp;diff=6335</id>
		<title>EPrints Control Format</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=EPrints_Control_Format&amp;diff=6335"/>
		<updated>2009-06-02T10:37:36Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* epc:choose, epc:when, epc:otherwise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= EPrints Control =&lt;br /&gt;
&lt;br /&gt;
== Output Tags ==&lt;br /&gt;
&lt;br /&gt;
=== epc:print ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epc:print expr='expression' opt='key=value;key2=value2'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;cite:citation xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
           xmlns:cite=&amp;quot;http://eprints.org/ep3/citation&amp;quot;&lt;br /&gt;
           xmlns:epc=&amp;quot;http://eprints.org/ep3/control&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;epc:print expr=&amp;quot;$item.citation('default')&amp;quot; /&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/cite:citation&amp;amp;gt; &lt;br /&gt;
&lt;br /&gt;
Outputs the result of the expression in the 'expr' attribute. &lt;br /&gt;
&lt;br /&gt;
Rendering options may be passed in the opt attribute using a key=value form, with semicolons separating multiple options.&lt;br /&gt;
&lt;br /&gt;
Any [[EPScript]] expression can be used. The most simple is just 'eprintid','title','creators' etc. You can also use values from the configuration files by using '$config{base_url}'.&lt;br /&gt;
&lt;br /&gt;
=== Print in attributes using {} ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you may wish to insert a value into an XML attribute. eg. the &amp;quot;href&amp;quot; part of an anchor. Rather than a complicated system, but correct XML, we decide to go for something a bit more readable. Any {} pair in an XML attribute will be treated as a epc:print.&lt;br /&gt;
&lt;br /&gt;
So you can do something like &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://eprints.badger.edu/cgi/myscript.pl?eprintid={eprintid}&amp;quot;&amp;gt;run myscript on this eprint&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== epc:phrase ===&lt;br /&gt;
&lt;br /&gt;
simple:&lt;br /&gt;
 &amp;lt;epc:phrase ref='phraseid' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with pins:&lt;br /&gt;
 &amp;lt;epc:phrase ref='phraseid'&amp;gt;&lt;br /&gt;
   &amp;lt;epc:param name='somepin'&amp;gt;Content&amp;lt;/epc:param&amp;gt;&lt;br /&gt;
 &amp;lt;/epc:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outputs the content of the phrase refered to by 'ref'. Any necessary parameters may be set using the &amp;lt;epc:param&amp;gt; tag, with the contents inserted into the pin with the name corresponding to the name attribute.&lt;br /&gt;
&lt;br /&gt;
== Conditional Tags ==&lt;br /&gt;
&lt;br /&gt;
=== epc:if ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epc:if test='expr'&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;lt;/epc:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outputs any XHTML content and evaluates any EPrints Control structures within the epc:if block if the expression in the test attribute is true.&lt;br /&gt;
&lt;br /&gt;
=== epc:choose, epc:when, epc:otherwise ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epc:choose&amp;gt;&lt;br /&gt;
   &amp;lt;epc:when test='expr'&amp;gt; &lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/epc:when&amp;gt;&lt;br /&gt;
   &amp;lt;epc:when test='expr2'&amp;gt; &lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/epc:when&amp;gt;&lt;br /&gt;
   &amp;lt;epc:otherwise&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/epc:otherwise&amp;gt;&lt;br /&gt;
 &amp;lt;/epc:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
epc:choose allows for the construction of a complex conditional. Each epc:when block's 'test' attribute is evaluated, and the content of the block is returned if the result is true. If no expressions return true, the optional epc:otherwise block is returned. Note that no subsequent epc:when blocks are evaluated once the first block to return true is reached.&lt;br /&gt;
&lt;br /&gt;
== Loops ==&lt;br /&gt;
&lt;br /&gt;
Multiple values can be iterated over. For example.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    ( &amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt; )&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6321</id>
		<title>Template:Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6321"/>
		<updated>2009-05-13T12:51:36Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''EPrints 3.1 series (latest release)'''&lt;br /&gt;
** [http://files.eprints.org/447/ .tar.gz] v3.1.3 [RECOMMENDED]&lt;br /&gt;
** [http://deb.eprints.org/3.1/stable/eprints_3.1.2.1_all.deb Debian/Ubuntu deb] v3.1.2.1&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.1-x.iso Live CD] - Xubuntu 8.04-1 LTS based v3.1.1&lt;br /&gt;
* '''EPrints 3.0 series (stable release)'''&lt;br /&gt;
** [http://files.eprints.org/350/ .tar.gz] v3.0.5&lt;br /&gt;
** [http://deb.eprints.org/unstable/eprints_3.0.5_all.deb Debian/Ubuntu deb] v3.0.5&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.0-x.iso Live CD] - Ubuntu based v3.0.5 (652mb)&lt;br /&gt;
* '''Migration Toolkit (for [[Migration]] from EPrints v2)'''&lt;br /&gt;
** [http://files.eprints.org/256/ Migration Toolkit 1.0 (beta)]&lt;br /&gt;
** When migrating use [http://files.eprints.org/268/ EPrints 3.0.2] or later.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Workflow_Format&amp;diff=6260</id>
		<title>Workflow Format</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Workflow_Format&amp;diff=6260"/>
		<updated>2009-02-24T12:34:46Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Field Element */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{formats}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The EPrints 3 workflow configuration files are stored in the repository's [[EPrints_Directory_Structure/eprints3/archives/ARCHIVEID/cfg/workflows|workflows]] directory, within folders identifying the [[Data Object]]s to which they apply (e.g. eprint or user). Multiple workflows may be defined in each folder, although typically only the default.xml file will be necessary.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
At the centre of a workflow is a 'flow' description. This denotes the path through the workflow process from stage to stage. This may contain EPrints Control tags, allowing for the flow to vary depending on parameters of the data object (or other objects). For example, the flow may be different for users with certain roles. The flow is structured like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;flow&amp;gt;&lt;br /&gt;
   &amp;lt;stage ref=&amp;quot;type&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;stage ref=&amp;quot;files&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;stage ref=&amp;quot;core&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;stage ref=&amp;quot;subjects&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/flow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'ref' attribute of the stage element refers to the individual stages. The stage elements describe the components within each screen of the process and, like flow, may contain EPrints Control tags. The 'name' attribute of the stage element is identical to that of the stage element in the 'flow' section.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;stage name=&amp;quot;core&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;component&amp;gt;&amp;lt;field ref=&amp;quot;title&amp;quot; required=&amp;quot;yes&amp;quot; /&amp;gt;&amp;lt;/component&amp;gt;&lt;br /&gt;
   &amp;lt;component&amp;gt;&amp;lt;field ref=&amp;quot;abstract&amp;quot;/&amp;gt;&amp;lt;/component&amp;gt;&lt;br /&gt;
 &amp;lt;/stage&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
An EPrints component is responsible for the rendering of a graphical element in a workflow. This may be a text-box for title entry, a collection of fields in an appropriate grouping, or just a piece of XHTML. Six components are provided by default and, as they are plugins, it is straightforward to drop in new components when necessary. The type attribute of the component element corresponds to the plugin to be used.&lt;br /&gt;
&lt;br /&gt;
== Field-Related Components ==&lt;br /&gt;
&lt;br /&gt;
=== Field Element ===&lt;br /&gt;
&lt;br /&gt;
The majority of field-related components in EPrints 3 make use of the field element in their configuration. This provides a reference to a metafield and any attributes which may be relevant to rendering or operation. Several attributes are available to the element:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Attribute&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Values&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt; &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ref&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A string&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(required) Refers to the name of the metafield this field represents&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;required&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;yes/no&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(optional) Whether a value is required in this field before the workflow may complete&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;help&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;An XHTML block&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(optional) A block of XHTML to be rendered as help for the field&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;title&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;An XHTML block&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(optional) A block of XHTML to be rendered as the title for the field&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;input_lookup_url&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A URL&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(optional) The location of an auto-lookup URL for the field&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;input_lookup_params&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A string&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;(optional) An &amp;amp;-separated list of parameters (e.g. sort=descending&amp;amp;number=3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Field Component ===&lt;br /&gt;
&lt;br /&gt;
The default component, this renders the field title, an input box suitable for the field, a star if the field is required, and any help information. A single field element is required:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;component&amp;gt;&amp;lt;field ref=&amp;quot;title&amp;quot; required=&amp;quot;yes&amp;quot; /&amp;gt;&amp;lt;/component&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiple Field Component ===&lt;br /&gt;
&lt;br /&gt;
The multiple field component is able to render several fields in a group, such as all fields related to a publication or an event. A title element and a help element may be provided that describe the group itself. One or many field elements are also required.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;component type=&amp;quot;Field::Multi&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Event Details&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;help&amp;gt;Enter information about your event here.&amp;lt;/help&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;event_title&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;event_type&amp;quot; required=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;event_location&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;event_dates&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/component&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Subject Component ===&lt;br /&gt;
&lt;br /&gt;
The subject component allows for the selection of one or more subjects from a subject tree. In this instance, the field element specifies the subject metafield.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;component type=&amp;quot;Field::Subject&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;subjects&amp;quot; required=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/component&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other Components ==&lt;br /&gt;
&lt;br /&gt;
=== Upload Component ===&lt;br /&gt;
&lt;br /&gt;
The upload component provides an interface for files to be uploaded to EPrints documents, and for new documents to be created/edited. It does not require any elements other than the component tag, but field elements to be rendered for each document may be added as in the example. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;component type=&amp;quot;Upload&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;format&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;formatdesc&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;security&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;license&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;field ref=&amp;quot;date_embargo&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/component&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XHTML Component ===&lt;br /&gt;
&lt;br /&gt;
This component inserts any contained nodes into the rendered document. As EPrints Control elements may be used, it is possible to insert phrases into the screen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;component type=&amp;quot;XHTML&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;epc:phrase ref=&amp;quot;Plugin/InputForm/Component/Upload:help&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/component&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6220</id>
		<title>Template:Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6220"/>
		<updated>2008-12-18T12:28:25Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''EPrints 3.1 series (latest release)'''&lt;br /&gt;
** [http://files.eprints.org/414/ .tar.gz] v3.1.2 [RECOMMENDED]&lt;br /&gt;
** [http://deb.eprints.org/3.1/unstable/eprints_3.1.1_all.deb Debian/Ubuntu deb] v3.1.1&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.1-x.iso Live CD] - Xubuntu 8.04-1 LTS based v3.1.1&lt;br /&gt;
* '''EPrints 3.0 series (stable release)'''&lt;br /&gt;
** [http://files.eprints.org/350/ .tar.gz] v3.0.5&lt;br /&gt;
** [http://deb.eprints.org/unstable/eprints_3.0.5_all.deb Debian/Ubuntu deb] v3.0.5&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.0-x.iso Live CD] - Ubuntu based v3.0.5 (652mb)&lt;br /&gt;
* '''Migration Toolkit (for [[Migration]] from EPrints v2)'''&lt;br /&gt;
** [http://files.eprints.org/256/ Migration Toolkit 1.0 (beta)]&lt;br /&gt;
** When migrating use [http://files.eprints.org/268/ EPrints 3.0.2] or later.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6219</id>
		<title>Template:Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6219"/>
		<updated>2008-12-18T12:27:52Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''EPrints 3.0 series (stable release)'''&lt;br /&gt;
** [http://files.eprints.org/350/ .tar.gz] v3.0.5&lt;br /&gt;
** [http://deb.eprints.org/unstable/eprints_3.0.5_all.deb Debian/Ubuntu deb] v3.0.5&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.0-x.iso Live CD] - Ubuntu based v3.0.5 (652mb)&lt;br /&gt;
* '''EPrints 3.1 series (latest release)'''&lt;br /&gt;
** [http://files.eprints.org/414/ .tar.gz] v3.1.2&lt;br /&gt;
** [http://deb.eprints.org/3.1/unstable/eprints_3.1.1_all.deb Debian/Ubuntu deb] v3.1.1&lt;br /&gt;
** [http://www.eprints.org/files/eprints3/livecd_v3.1-x.iso Live CD] - Xubuntu 8.04-1 LTS based v3.1.1&lt;br /&gt;
* '''Migration Toolkit (for [[Migration]] from EPrints v2)'''&lt;br /&gt;
** [http://files.eprints.org/256/ Migration Toolkit 1.0 (beta)]&lt;br /&gt;
** When migrating use [http://files.eprints.org/268/ EPrints 3.0.2] or later.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1.2&amp;diff=6218</id>
		<title>Files/EPrints 3.1.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1.2&amp;diff=6218"/>
		<updated>2008-12-18T12:23:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: New page: Released for Christmas 2008.  = Changes since 3.1.1 =  == Admin Tools == * &amp;quot;Edit phrases&amp;quot; tool appears in toolbar for admins, on pages that are generated &amp;quot;on the fly&amp;quot;. It allows web-based ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Released for Christmas 2008.&lt;br /&gt;
&lt;br /&gt;
= Changes since 3.1.1 =&lt;br /&gt;
&lt;br /&gt;
== Admin Tools ==&lt;br /&gt;
* &amp;quot;Edit phrases&amp;quot; tool appears in toolbar for admins, on pages that are generated &amp;quot;on the fly&amp;quot;. It allows web-based editing of the phrases used to generate the page, including missing phrases.&lt;br /&gt;
* Improvements to web based phrase editor.&lt;br /&gt;
* &amp;quot;Edit page&amp;quot; option now appears if a static page is viewed by an admin, making it easy to get to the right edit screen.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
* In views, links to empty pages are now rendered as text, not links.&lt;br /&gt;
* /view/ pages may now be exported in the same way as searches.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* search.pl is now split into one file per search.&lt;br /&gt;
* Search forms now have a show_help option to allow the help to be always hidden or always shown. The default is the toggle button.&lt;br /&gt;
&lt;br /&gt;
== Submission ==&lt;br /&gt;
* Can now use &amp;lt;upload-methods&amp;gt; option in upload component configuration, in a workflow, to set which methods are available to upload files (or set to an empty list to stop new documents being created). Zip, from url etc.&lt;br /&gt;
* Document fields can now be marked as required, and will have the star appear and report problems if not set. &lt;br /&gt;
* Now when you add a document or modify one, it's always unrolled when the page upload form is rendered.&lt;br /&gt;
&lt;br /&gt;
== Import &amp;amp; Export ==&lt;br /&gt;
* RSS2 now has thumbnail and media data, this allows some new fun mash-ups.&lt;br /&gt;
* New Excel and CSV import and export plugins.&lt;br /&gt;
&lt;br /&gt;
== Saved Search and Review emails == &lt;br /&gt;
* Improved style of HTML format emails.&lt;br /&gt;
* Fixed broken links in emails.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* .xpage files can now have a &amp;lt;template&amp;gt; to override the use of the default template.&lt;br /&gt;
* Many bugfixes. Notably in emails, views and unicode handling. See CHANGELOG for details.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6213</id>
		<title>Adding new views</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6213"/>
		<updated>2008-11-19T14:17:00Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* variations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{development}}&lt;br /&gt;
&lt;br /&gt;
Browse views provide a way for visitors to your site to discover relevant content without a specific item in mind (for example, browsing all the content associated with a particular topic). Visitors arriving directly at the page for a specific item in the repository (for example, via a search engine) also use views you have defined to discover related content. &lt;br /&gt;
&lt;br /&gt;
There are two default views in EPrints - '''By Year''' and '''By Subject'''. This guide describes how to add additional views to your repository. &lt;br /&gt;
Instead with this link you can read a [http://wiki.eprints.org/w/Views.pl complete list of all options] avaible for views.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===The basics===&lt;br /&gt;
&lt;br /&gt;
The views for your repository are defined in the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Open this file and find the browse_views configuration setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;-date;res=year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
The views are defined using a special (Perl) syntax: the view definition consists of a pair of curly braces (''note the comma after each closing brace'') enclosing a list of property/value pairs (note ''the comma'' after each line).&lt;br /&gt;
&lt;br /&gt;
The key part of the view definition is the '''fields''' property. This names the metadata field (or fields) that EPrints will use to construct the view. For example, for the '''By Year''' view, EPrints groups the records in the repository according to their '''date''' (note that the '''res=year''' suffix tells EPrints to only consider the year part), and constructs a Web page for each date listing the records. Similarly, the '''Browse by Subjscts''' view, groups the records according to the ''subjects'' they have been assigned to (a record may appear in more than one group!).&lt;br /&gt;
&lt;br /&gt;
Both the '''Browse by Year''' and '''Browse by Subject''' views are constructed using the values of a single field ('''date''' and '''subjects''' respectively).&lt;br /&gt;
&lt;br /&gt;
It is also possible to construct a view using the ''combined'' values of two or more fields (eg. group records by author '''and''' editor), or even using a sequence of two or more fields (eg. group records by journal title '''and then''' by volume number).&lt;br /&gt;
&lt;br /&gt;
===Worked example: browse by organisational structure===&lt;br /&gt;
&lt;br /&gt;
By default, EPrints has a ''divisions'' metadata field which allows authors to associate their deposits with the divisions (units, faculties, schools, departments, institutes, centres..) that were involved in producing their item (for example, the author's department, and the departments of any co-authors). This worked example allows visitors to browse the repository content by division.&lt;br /&gt;
&lt;br /&gt;
Open the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
                hideempty =&amp;gt; 1,&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
Save the file and generate the new view pages (this will also re-generate any existing views defined in the views configuration file):&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
Open the view page in a Web browser:&lt;br /&gt;
&lt;br /&gt;
 http://your.repository.url/view/&lt;br /&gt;
&lt;br /&gt;
The view page lists all the available views. You should see your new views on the list:&lt;br /&gt;
&lt;br /&gt;
[[Image:View_page2.png|frame|none|The view page lists available views]]&lt;br /&gt;
&lt;br /&gt;
'''Fixing the undefined phrase warning''' The new view may appear on the views page with an ''undefined phrase'' warning (you may also notice a similar warning message when running generate_views):&lt;br /&gt;
&lt;br /&gt;
 [&amp;quot;viewname_eprint_divisions&amp;quot; not defined]&lt;br /&gt;
&lt;br /&gt;
Each view you create needs to be assigned a ''human-readable'' name, which EPrints will use on the view Web pages.&lt;br /&gt;
&lt;br /&gt;
Edit the language-specific phrases file for view names:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/lang/en/phrases/views.xml&lt;br /&gt;
&lt;br /&gt;
Add an appropriate phrase which describes the new view, for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Division&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the phrases file and regenerate the view pages:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
===Example view definitions===&lt;br /&gt;
&lt;br /&gt;
====Browse by type====&lt;br /&gt;
&lt;br /&gt;
Every deposit in EPrints has a type (article, book, thesis...). To allow visitors to browse your repository content by type, add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id =&amp;gt; &amp;quot;types&amp;quot;,&lt;br /&gt;
        fields =&amp;gt; &amp;quot;type&amp;quot;,&lt;br /&gt;
        order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
====Browse by author====&lt;br /&gt;
&lt;br /&gt;
===Example views (combined fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by author and editor====&lt;br /&gt;
&lt;br /&gt;
===Example views (multiple fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by journal title, then by volume====&lt;br /&gt;
&lt;br /&gt;
This example lets visitors browse the journals items in your repository have been published in, and then volumes within each journal.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id=&amp;gt;&amp;quot;journal_volume&amp;quot;,&lt;br /&gt;
        fields=&amp;gt;&amp;quot;publication,volume&amp;quot;,&lt;br /&gt;
        order=&amp;gt;&amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal.png|border]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal_volume.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Linking in your view===&lt;br /&gt;
&lt;br /&gt;
You now need to add a link to your repository pages which takes visitors directly to your new view, or to the views page from where they can access all available views.&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_navbar.png]]&lt;br /&gt;
&lt;br /&gt;
====Generating CVs etc====&lt;br /&gt;
&lt;br /&gt;
===Linking items back to views===&lt;br /&gt;
===Views as collections===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New options in EPrints 3.1===&lt;br /&gt;
&lt;br /&gt;
====subfield no longer supported====&lt;br /&gt;
&lt;br /&gt;
The subfield option is no longer supported in EPrints 3.1.&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
See [[views.pl]] for the list of options.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=6212</id>
		<title>Views.pl</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=6212"/>
		<updated>2008-11-19T14:16:26Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* variations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Option avaible 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;
===Basic===&lt;br /&gt;
&lt;br /&gt;
====id (mandatory)====&lt;br /&gt;
&lt;br /&gt;
====fields (mandatory)====&lt;br /&gt;
&lt;br /&gt;
====order====&lt;br /&gt;
&lt;br /&gt;
===Standard===&lt;br /&gt;
&lt;br /&gt;
====allow_null====&lt;br /&gt;
&lt;br /&gt;
====hideempty:====&lt;br /&gt;
&lt;br /&gt;
====heading_level====&lt;br /&gt;
&lt;br /&gt;
====include====&lt;br /&gt;
&lt;br /&gt;
====subheadings====&lt;br /&gt;
&lt;br /&gt;
===Extra feature===&lt;br /&gt;
&lt;br /&gt;
====citation====&lt;br /&gt;
&lt;br /&gt;
====nocount====&lt;br /&gt;
&lt;br /&gt;
====nohtml====&lt;br /&gt;
&lt;br /&gt;
====noindex====&lt;br /&gt;
&lt;br /&gt;
====nolink====&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
====render_menu====&lt;br /&gt;
&lt;br /&gt;
The name of a config element which defines a function with an alternate way to render the menu page for a view. For an example, try looking in cfg.d/views_render_menu_example.pl&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following options are available:&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;
|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;
|-&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
|-&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;
|-&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;
|-&lt;br /&gt;
|first_letter&lt;br /&gt;
|The same as 'truncate=1'&lt;br /&gt;
|-&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;
&lt;br /&gt;
 truncate=4&lt;br /&gt;
|-&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;
|-&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;
|-&lt;br /&gt;
|cloudmax&lt;br /&gt;
|The % size of the largest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|cloudmin&lt;br /&gt;
|The % size of the smallest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|jump&lt;br /&gt;
|&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
|-&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;
|-&lt;br /&gt;
|string&lt;br /&gt;
|Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
|-&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;
|-&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;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6211</id>
		<title>Adding new views</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6211"/>
		<updated>2008-11-19T14:14:10Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* variations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{development}}&lt;br /&gt;
&lt;br /&gt;
Browse views provide a way for visitors to your site to discover relevant content without a specific item in mind (for example, browsing all the content associated with a particular topic). Visitors arriving directly at the page for a specific item in the repository (for example, via a search engine) also use views you have defined to discover related content. &lt;br /&gt;
&lt;br /&gt;
There are two default views in EPrints - '''By Year''' and '''By Subject'''. This guide describes how to add additional views to your repository. &lt;br /&gt;
Instead with this link you can read a [http://wiki.eprints.org/w/Views.pl complete list of all options] avaible for views.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===The basics===&lt;br /&gt;
&lt;br /&gt;
The views for your repository are defined in the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Open this file and find the browse_views configuration setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;-date;res=year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
The views are defined using a special (Perl) syntax: the view definition consists of a pair of curly braces (''note the comma after each closing brace'') enclosing a list of property/value pairs (note ''the comma'' after each line).&lt;br /&gt;
&lt;br /&gt;
The key part of the view definition is the '''fields''' property. This names the metadata field (or fields) that EPrints will use to construct the view. For example, for the '''By Year''' view, EPrints groups the records in the repository according to their '''date''' (note that the '''res=year''' suffix tells EPrints to only consider the year part), and constructs a Web page for each date listing the records. Similarly, the '''Browse by Subjscts''' view, groups the records according to the ''subjects'' they have been assigned to (a record may appear in more than one group!).&lt;br /&gt;
&lt;br /&gt;
Both the '''Browse by Year''' and '''Browse by Subject''' views are constructed using the values of a single field ('''date''' and '''subjects''' respectively).&lt;br /&gt;
&lt;br /&gt;
It is also possible to construct a view using the ''combined'' values of two or more fields (eg. group records by author '''and''' editor), or even using a sequence of two or more fields (eg. group records by journal title '''and then''' by volume number).&lt;br /&gt;
&lt;br /&gt;
===Worked example: browse by organisational structure===&lt;br /&gt;
&lt;br /&gt;
By default, EPrints has a ''divisions'' metadata field which allows authors to associate their deposits with the divisions (units, faculties, schools, departments, institutes, centres..) that were involved in producing their item (for example, the author's department, and the departments of any co-authors). This worked example allows visitors to browse the repository content by division.&lt;br /&gt;
&lt;br /&gt;
Open the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
                hideempty =&amp;gt; 1,&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
Save the file and generate the new view pages (this will also re-generate any existing views defined in the views configuration file):&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
Open the view page in a Web browser:&lt;br /&gt;
&lt;br /&gt;
 http://your.repository.url/view/&lt;br /&gt;
&lt;br /&gt;
The view page lists all the available views. You should see your new views on the list:&lt;br /&gt;
&lt;br /&gt;
[[Image:View_page2.png|frame|none|The view page lists available views]]&lt;br /&gt;
&lt;br /&gt;
'''Fixing the undefined phrase warning''' The new view may appear on the views page with an ''undefined phrase'' warning (you may also notice a similar warning message when running generate_views):&lt;br /&gt;
&lt;br /&gt;
 [&amp;quot;viewname_eprint_divisions&amp;quot; not defined]&lt;br /&gt;
&lt;br /&gt;
Each view you create needs to be assigned a ''human-readable'' name, which EPrints will use on the view Web pages.&lt;br /&gt;
&lt;br /&gt;
Edit the language-specific phrases file for view names:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/lang/en/phrases/views.xml&lt;br /&gt;
&lt;br /&gt;
Add an appropriate phrase which describes the new view, for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Division&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the phrases file and regenerate the view pages:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
===Example view definitions===&lt;br /&gt;
&lt;br /&gt;
====Browse by type====&lt;br /&gt;
&lt;br /&gt;
Every deposit in EPrints has a type (article, book, thesis...). To allow visitors to browse your repository content by type, add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id =&amp;gt; &amp;quot;types&amp;quot;,&lt;br /&gt;
        fields =&amp;gt; &amp;quot;type&amp;quot;,&lt;br /&gt;
        order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
====Browse by author====&lt;br /&gt;
&lt;br /&gt;
===Example views (combined fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by author and editor====&lt;br /&gt;
&lt;br /&gt;
===Example views (multiple fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by journal title, then by volume====&lt;br /&gt;
&lt;br /&gt;
This example lets visitors browse the journals items in your repository have been published in, and then volumes within each journal.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id=&amp;gt;&amp;quot;journal_volume&amp;quot;,&lt;br /&gt;
        fields=&amp;gt;&amp;quot;publication,volume&amp;quot;,&lt;br /&gt;
        order=&amp;gt;&amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal.png|border]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal_volume.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Linking in your view===&lt;br /&gt;
&lt;br /&gt;
You now need to add a link to your repository pages which takes visitors directly to your new view, or to the views page from where they can access all available views.&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_navbar.png]]&lt;br /&gt;
&lt;br /&gt;
====Generating CVs etc====&lt;br /&gt;
&lt;br /&gt;
===Linking items back to views===&lt;br /&gt;
===Views as collections===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New options in EPrints 3.1===&lt;br /&gt;
&lt;br /&gt;
====subfield no longer supported====&lt;br /&gt;
&lt;br /&gt;
The subfield option is no longer supported in EPrints 3.1.&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&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;
|-&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
|-&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;
|-&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;
|-&lt;br /&gt;
|first_letter&lt;br /&gt;
|The same as 'truncate=1'&lt;br /&gt;
|-&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;
&lt;br /&gt;
 truncate=4&lt;br /&gt;
|-&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;
|-&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;
|-&lt;br /&gt;
|cloudmax&lt;br /&gt;
|The % size of the largest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|cloudmin&lt;br /&gt;
|The % size of the smallest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|jump&lt;br /&gt;
|&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
|-&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;
|-&lt;br /&gt;
|string&lt;br /&gt;
|Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
|-&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;
|}&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6210</id>
		<title>Adding new views</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6210"/>
		<updated>2008-11-19T14:12:44Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* variations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{development}}&lt;br /&gt;
&lt;br /&gt;
Browse views provide a way for visitors to your site to discover relevant content without a specific item in mind (for example, browsing all the content associated with a particular topic). Visitors arriving directly at the page for a specific item in the repository (for example, via a search engine) also use views you have defined to discover related content. &lt;br /&gt;
&lt;br /&gt;
There are two default views in EPrints - '''By Year''' and '''By Subject'''. This guide describes how to add additional views to your repository. &lt;br /&gt;
Instead with this link you can read a [http://wiki.eprints.org/w/Views.pl complete list of all options] avaible for views.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===The basics===&lt;br /&gt;
&lt;br /&gt;
The views for your repository are defined in the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Open this file and find the browse_views configuration setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;-date;res=year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
The views are defined using a special (Perl) syntax: the view definition consists of a pair of curly braces (''note the comma after each closing brace'') enclosing a list of property/value pairs (note ''the comma'' after each line).&lt;br /&gt;
&lt;br /&gt;
The key part of the view definition is the '''fields''' property. This names the metadata field (or fields) that EPrints will use to construct the view. For example, for the '''By Year''' view, EPrints groups the records in the repository according to their '''date''' (note that the '''res=year''' suffix tells EPrints to only consider the year part), and constructs a Web page for each date listing the records. Similarly, the '''Browse by Subjscts''' view, groups the records according to the ''subjects'' they have been assigned to (a record may appear in more than one group!).&lt;br /&gt;
&lt;br /&gt;
Both the '''Browse by Year''' and '''Browse by Subject''' views are constructed using the values of a single field ('''date''' and '''subjects''' respectively).&lt;br /&gt;
&lt;br /&gt;
It is also possible to construct a view using the ''combined'' values of two or more fields (eg. group records by author '''and''' editor), or even using a sequence of two or more fields (eg. group records by journal title '''and then''' by volume number).&lt;br /&gt;
&lt;br /&gt;
===Worked example: browse by organisational structure===&lt;br /&gt;
&lt;br /&gt;
By default, EPrints has a ''divisions'' metadata field which allows authors to associate their deposits with the divisions (units, faculties, schools, departments, institutes, centres..) that were involved in producing their item (for example, the author's department, and the departments of any co-authors). This worked example allows visitors to browse the repository content by division.&lt;br /&gt;
&lt;br /&gt;
Open the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
                hideempty =&amp;gt; 1,&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
Save the file and generate the new view pages (this will also re-generate any existing views defined in the views configuration file):&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
Open the view page in a Web browser:&lt;br /&gt;
&lt;br /&gt;
 http://your.repository.url/view/&lt;br /&gt;
&lt;br /&gt;
The view page lists all the available views. You should see your new views on the list:&lt;br /&gt;
&lt;br /&gt;
[[Image:View_page2.png|frame|none|The view page lists available views]]&lt;br /&gt;
&lt;br /&gt;
'''Fixing the undefined phrase warning''' The new view may appear on the views page with an ''undefined phrase'' warning (you may also notice a similar warning message when running generate_views):&lt;br /&gt;
&lt;br /&gt;
 [&amp;quot;viewname_eprint_divisions&amp;quot; not defined]&lt;br /&gt;
&lt;br /&gt;
Each view you create needs to be assigned a ''human-readable'' name, which EPrints will use on the view Web pages.&lt;br /&gt;
&lt;br /&gt;
Edit the language-specific phrases file for view names:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/lang/en/phrases/views.xml&lt;br /&gt;
&lt;br /&gt;
Add an appropriate phrase which describes the new view, for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Division&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the phrases file and regenerate the view pages:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
===Example view definitions===&lt;br /&gt;
&lt;br /&gt;
====Browse by type====&lt;br /&gt;
&lt;br /&gt;
Every deposit in EPrints has a type (article, book, thesis...). To allow visitors to browse your repository content by type, add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id =&amp;gt; &amp;quot;types&amp;quot;,&lt;br /&gt;
        fields =&amp;gt; &amp;quot;type&amp;quot;,&lt;br /&gt;
        order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
====Browse by author====&lt;br /&gt;
&lt;br /&gt;
===Example views (combined fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by author and editor====&lt;br /&gt;
&lt;br /&gt;
===Example views (multiple fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by journal title, then by volume====&lt;br /&gt;
&lt;br /&gt;
This example lets visitors browse the journals items in your repository have been published in, and then volumes within each journal.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id=&amp;gt;&amp;quot;journal_volume&amp;quot;,&lt;br /&gt;
        fields=&amp;gt;&amp;quot;publication,volume&amp;quot;,&lt;br /&gt;
        order=&amp;gt;&amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal.png|border]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal_volume.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Linking in your view===&lt;br /&gt;
&lt;br /&gt;
You now need to add a link to your repository pages which takes visitors directly to your new view, or to the views page from where they can access all available views.&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_navbar.png]]&lt;br /&gt;
&lt;br /&gt;
====Generating CVs etc====&lt;br /&gt;
&lt;br /&gt;
===Linking items back to views===&lt;br /&gt;
===Views as collections===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New options in EPrints 3.1===&lt;br /&gt;
&lt;br /&gt;
====subfield no longer supported====&lt;br /&gt;
&lt;br /&gt;
The subfield option is no longer supported in EPrints 3.1.&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
{|&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;
|-&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
|-&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;
|-&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;
|-&lt;br /&gt;
|first_letter&lt;br /&gt;
|The same as 'truncate=1'&lt;br /&gt;
|-&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;
&lt;br /&gt;
 truncate=4&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;
|-&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;
|-&lt;br /&gt;
|cloudmax&lt;br /&gt;
|The % size of the largest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|cloudmin&lt;br /&gt;
|The % size of the smallest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|jump&lt;br /&gt;
|&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
|-&lt;br /&gt;
|no_seperator (sic)&lt;br /&gt;
|Turns of the separator between each subheading navigation link (by default '|').&lt;br /&gt;
|-&lt;br /&gt;
|string&lt;br /&gt;
|Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
|-&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;
|}&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6209</id>
		<title>Adding new views</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6209"/>
		<updated>2008-11-19T14:11:58Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* variations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{development}}&lt;br /&gt;
&lt;br /&gt;
Browse views provide a way for visitors to your site to discover relevant content without a specific item in mind (for example, browsing all the content associated with a particular topic). Visitors arriving directly at the page for a specific item in the repository (for example, via a search engine) also use views you have defined to discover related content. &lt;br /&gt;
&lt;br /&gt;
There are two default views in EPrints - '''By Year''' and '''By Subject'''. This guide describes how to add additional views to your repository. &lt;br /&gt;
Instead with this link you can read a [http://wiki.eprints.org/w/Views.pl complete list of all options] avaible for views.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===The basics===&lt;br /&gt;
&lt;br /&gt;
The views for your repository are defined in the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Open this file and find the browse_views configuration setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;-date;res=year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
The views are defined using a special (Perl) syntax: the view definition consists of a pair of curly braces (''note the comma after each closing brace'') enclosing a list of property/value pairs (note ''the comma'' after each line).&lt;br /&gt;
&lt;br /&gt;
The key part of the view definition is the '''fields''' property. This names the metadata field (or fields) that EPrints will use to construct the view. For example, for the '''By Year''' view, EPrints groups the records in the repository according to their '''date''' (note that the '''res=year''' suffix tells EPrints to only consider the year part), and constructs a Web page for each date listing the records. Similarly, the '''Browse by Subjscts''' view, groups the records according to the ''subjects'' they have been assigned to (a record may appear in more than one group!).&lt;br /&gt;
&lt;br /&gt;
Both the '''Browse by Year''' and '''Browse by Subject''' views are constructed using the values of a single field ('''date''' and '''subjects''' respectively).&lt;br /&gt;
&lt;br /&gt;
It is also possible to construct a view using the ''combined'' values of two or more fields (eg. group records by author '''and''' editor), or even using a sequence of two or more fields (eg. group records by journal title '''and then''' by volume number).&lt;br /&gt;
&lt;br /&gt;
===Worked example: browse by organisational structure===&lt;br /&gt;
&lt;br /&gt;
By default, EPrints has a ''divisions'' metadata field which allows authors to associate their deposits with the divisions (units, faculties, schools, departments, institutes, centres..) that were involved in producing their item (for example, the author's department, and the departments of any co-authors). This worked example allows visitors to browse the repository content by division.&lt;br /&gt;
&lt;br /&gt;
Open the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
                hideempty =&amp;gt; 1,&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
Save the file and generate the new view pages (this will also re-generate any existing views defined in the views configuration file):&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
Open the view page in a Web browser:&lt;br /&gt;
&lt;br /&gt;
 http://your.repository.url/view/&lt;br /&gt;
&lt;br /&gt;
The view page lists all the available views. You should see your new views on the list:&lt;br /&gt;
&lt;br /&gt;
[[Image:View_page2.png|frame|none|The view page lists available views]]&lt;br /&gt;
&lt;br /&gt;
'''Fixing the undefined phrase warning''' The new view may appear on the views page with an ''undefined phrase'' warning (you may also notice a similar warning message when running generate_views):&lt;br /&gt;
&lt;br /&gt;
 [&amp;quot;viewname_eprint_divisions&amp;quot; not defined]&lt;br /&gt;
&lt;br /&gt;
Each view you create needs to be assigned a ''human-readable'' name, which EPrints will use on the view Web pages.&lt;br /&gt;
&lt;br /&gt;
Edit the language-specific phrases file for view names:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/lang/en/phrases/views.xml&lt;br /&gt;
&lt;br /&gt;
Add an appropriate phrase which describes the new view, for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Division&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the phrases file and regenerate the view pages:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
===Example view definitions===&lt;br /&gt;
&lt;br /&gt;
====Browse by type====&lt;br /&gt;
&lt;br /&gt;
Every deposit in EPrints has a type (article, book, thesis...). To allow visitors to browse your repository content by type, add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id =&amp;gt; &amp;quot;types&amp;quot;,&lt;br /&gt;
        fields =&amp;gt; &amp;quot;type&amp;quot;,&lt;br /&gt;
        order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
====Browse by author====&lt;br /&gt;
&lt;br /&gt;
===Example views (combined fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by author and editor====&lt;br /&gt;
&lt;br /&gt;
===Example views (multiple fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by journal title, then by volume====&lt;br /&gt;
&lt;br /&gt;
This example lets visitors browse the journals items in your repository have been published in, and then volumes within each journal.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id=&amp;gt;&amp;quot;journal_volume&amp;quot;,&lt;br /&gt;
        fields=&amp;gt;&amp;quot;publication,volume&amp;quot;,&lt;br /&gt;
        order=&amp;gt;&amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal.png|border]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal_volume.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Linking in your view===&lt;br /&gt;
&lt;br /&gt;
You now need to add a link to your repository pages which takes visitors directly to your new view, or to the views page from where they can access all available views.&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_navbar.png]]&lt;br /&gt;
&lt;br /&gt;
====Generating CVs etc====&lt;br /&gt;
&lt;br /&gt;
===Linking items back to views===&lt;br /&gt;
===Views as collections===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New options in EPrints 3.1===&lt;br /&gt;
&lt;br /&gt;
====subfield no longer supported====&lt;br /&gt;
&lt;br /&gt;
The subfield option is no longer supported in EPrints 3.1.&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
{|&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;
|-&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
|}&lt;br /&gt;
|-&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;
|-&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;
|=&lt;br /&gt;
|first_letter&lt;br /&gt;
|The same as 'truncate=1'&lt;br /&gt;
|-&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;
&lt;br /&gt;
 truncate=4&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;
|-&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;
|-&lt;br /&gt;
|cloudmax&lt;br /&gt;
|The % size of the largest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|cloudmin&lt;br /&gt;
|The % size of the smallest tag in a tag cloud.&lt;br /&gt;
|-&lt;br /&gt;
|jump&lt;br /&gt;
|&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
|-&lt;br /&gt;
|no_seperator (sic)&lt;br /&gt;
|Turns of the separator between each subheading navigation link (by default '|').&lt;br /&gt;
|-&lt;br /&gt;
|string&lt;br /&gt;
|Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
|-&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;
|}&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6199</id>
		<title>Adding new views</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Adding_new_views&amp;diff=6199"/>
		<updated>2008-10-14T10:49:45Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* string */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{development}}&lt;br /&gt;
&lt;br /&gt;
Browse views provide a way for visitors to your site to discover relevant content without a specific item in mind (for example, browsing all the content associated with a particular topic). Visitors arriving directly at the page for a specific item in the repository (for example, via a search engine) also use views you have defined to discover related content. &lt;br /&gt;
&lt;br /&gt;
There are two default views in EPrints - '''By Year''' and '''By Subject'''. This guide describes how to add additional views to your repository. &lt;br /&gt;
Instead with this link you can read a [http://wiki.eprints.org/w/Views.pl complete list of all options] avaible for views.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===The basics===&lt;br /&gt;
&lt;br /&gt;
The views for your repository are defined in the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Open this file and find the browse_views configuration setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;-date;res=year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
The views are defined using a special (Perl) syntax: the view definition consists of a pair of curly braces (''note the comma after each closing brace'') enclosing a list of property/value pairs (note ''the comma'' after each line).&lt;br /&gt;
&lt;br /&gt;
The key part of the view definition is the '''fields''' property. This names the metadata field (or fields) that EPrints will use to construct the view. For example, for the '''By Year''' view, EPrints groups the records in the repository according to their '''date''' (note that the '''res=year''' suffix tells EPrints to only consider the year part), and constructs a Web page for each date listing the records. Similarly, the '''Browse by Subjscts''' view, groups the records according to the ''subjects'' they have been assigned to (a record may appear in more than one group!).&lt;br /&gt;
&lt;br /&gt;
Both the '''Browse by Year''' and '''Browse by Subject''' views are constructed using the values of a single field ('''date''' and '''subjects''' respectively).&lt;br /&gt;
&lt;br /&gt;
It is also possible to construct a view using the ''combined'' values of two or more fields (eg. group records by author '''and''' editor), or even using a sequence of two or more fields (eg. group records by journal title '''and then''' by volume number).&lt;br /&gt;
&lt;br /&gt;
===Worked example: browse by organisational structure===&lt;br /&gt;
&lt;br /&gt;
By default, EPrints has a ''divisions'' metadata field which allows authors to associate their deposits with the divisions (units, faculties, schools, departments, institutes, centres..) that were involved in producing their item (for example, the author's department, and the departments of any co-authors). This worked example allows visitors to browse the repository content by division.&lt;br /&gt;
&lt;br /&gt;
Open the views configuration file:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/cfg.d/views.pl&lt;br /&gt;
&lt;br /&gt;
Add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 $c-&amp;gt;{browse_views} = [&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;year&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;subjects&amp;quot;,&lt;br /&gt;
                ...&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
                id =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                fields =&amp;gt; &amp;quot;divisions&amp;quot;,&lt;br /&gt;
                order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
                hideempty =&amp;gt; 1,&lt;br /&gt;
        },&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
Save the file and generate the new view pages (this will also re-generate any existing views defined in the views configuration file):&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
Open the view page in a Web browser:&lt;br /&gt;
&lt;br /&gt;
 http://your.repository.url/view/&lt;br /&gt;
&lt;br /&gt;
The view page lists all the available views. You should see your new views on the list:&lt;br /&gt;
&lt;br /&gt;
[[Image:View_page2.png|frame|none|The view page lists available views]]&lt;br /&gt;
&lt;br /&gt;
'''Fixing the undefined phrase warning''' The new view may appear on the views page with an ''undefined phrase'' warning (you may also notice a similar warning message when running generate_views):&lt;br /&gt;
&lt;br /&gt;
 [&amp;quot;viewname_eprint_divisions&amp;quot; not defined]&lt;br /&gt;
&lt;br /&gt;
Each view you create needs to be assigned a ''human-readable'' name, which EPrints will use on the view Web pages.&lt;br /&gt;
&lt;br /&gt;
Edit the language-specific phrases file for view names:&lt;br /&gt;
&lt;br /&gt;
 /opt/eprints3/archives/ARCHIVEID/cfg/lang/en/phrases/views.xml&lt;br /&gt;
&lt;br /&gt;
Add an appropriate phrase which describes the new view, for example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewname_eprint_divisions&amp;quot;&amp;gt;Division&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the phrases file and regenerate the view pages:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_views ARCHIVEID --verbose&lt;br /&gt;
&lt;br /&gt;
===Example view definitions===&lt;br /&gt;
&lt;br /&gt;
====Browse by type====&lt;br /&gt;
&lt;br /&gt;
Every deposit in EPrints has a type (article, book, thesis...). To allow visitors to browse your repository content by type, add the following definition to the browse_views setting:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id =&amp;gt; &amp;quot;types&amp;quot;,&lt;br /&gt;
        fields =&amp;gt; &amp;quot;type&amp;quot;,&lt;br /&gt;
        order =&amp;gt; &amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
====Browse by author====&lt;br /&gt;
&lt;br /&gt;
===Example views (combined fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by author and editor====&lt;br /&gt;
&lt;br /&gt;
===Example views (multiple fields)===&lt;br /&gt;
&lt;br /&gt;
====Browse by journal title, then by volume====&lt;br /&gt;
&lt;br /&gt;
This example lets visitors browse the journals items in your repository have been published in, and then volumes within each journal.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
        id=&amp;gt;&amp;quot;journal_volume&amp;quot;,&lt;br /&gt;
        fields=&amp;gt;&amp;quot;publication,volume&amp;quot;,&lt;br /&gt;
        order=&amp;gt;&amp;quot;-date/title&amp;quot;,&lt;br /&gt;
        hideempty =&amp;gt; 1,&lt;br /&gt;
 },&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal.png|border]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_journal_volume.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Linking in your view===&lt;br /&gt;
&lt;br /&gt;
You now need to add a link to your repository pages which takes visitors directly to your new view, or to the views page from where they can access all available views.&lt;br /&gt;
&lt;br /&gt;
[[Image:Browse_by_navbar.png]]&lt;br /&gt;
&lt;br /&gt;
====Generating CVs etc====&lt;br /&gt;
&lt;br /&gt;
===Linking items back to views===&lt;br /&gt;
===Views as collections===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New options in EPrints 3.1===&lt;br /&gt;
&lt;br /&gt;
====subfield no longer supported====&lt;br /&gt;
&lt;br /&gt;
The subfield option is no longer supported in EPrints 3.1.&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
=====reverse=====&lt;br /&gt;
&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;
&lt;br /&gt;
=====filename=====&lt;br /&gt;
&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
&lt;br /&gt;
=====first_value=====&lt;br /&gt;
&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;
&lt;br /&gt;
=====first_initial=====&lt;br /&gt;
&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;
&lt;br /&gt;
=====first_letter=====&lt;br /&gt;
&lt;br /&gt;
The same as 'truncate=1'&lt;br /&gt;
&lt;br /&gt;
=====truncate=====&lt;br /&gt;
&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;
&lt;br /&gt;
 truncate=4&lt;br /&gt;
&lt;br /&gt;
=====tags=====&lt;br /&gt;
&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;
&lt;br /&gt;
=====cloud=====&lt;br /&gt;
&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;
&lt;br /&gt;
=====cloudmax=====&lt;br /&gt;
&lt;br /&gt;
The % size of the largest tag in a tag cloud.&lt;br /&gt;
&lt;br /&gt;
=====cloudmin=====&lt;br /&gt;
&lt;br /&gt;
The % size of the smallest tag in a tag cloud.&lt;br /&gt;
&lt;br /&gt;
=====jump=====&lt;br /&gt;
&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
&lt;br /&gt;
=====no_seperator (sic)=====&lt;br /&gt;
&lt;br /&gt;
Turns of the separator between each subheading navigation link (by default '|').&lt;br /&gt;
&lt;br /&gt;
=====string=====&lt;br /&gt;
&lt;br /&gt;
Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=6174</id>
		<title>Views.pl</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Views.pl&amp;diff=6174"/>
		<updated>2008-07-14T16:47:49Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* New features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Option avaible 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;
===Basic===&lt;br /&gt;
&lt;br /&gt;
====id (mandatory)====&lt;br /&gt;
&lt;br /&gt;
====fields (mandatory)====&lt;br /&gt;
&lt;br /&gt;
====order====&lt;br /&gt;
&lt;br /&gt;
===Standard===&lt;br /&gt;
&lt;br /&gt;
====allow_null====&lt;br /&gt;
&lt;br /&gt;
====hideempty:====&lt;br /&gt;
&lt;br /&gt;
====heading_level====&lt;br /&gt;
&lt;br /&gt;
====include====&lt;br /&gt;
&lt;br /&gt;
====subheadings====&lt;br /&gt;
&lt;br /&gt;
===Extra feature===&lt;br /&gt;
&lt;br /&gt;
====citation====&lt;br /&gt;
&lt;br /&gt;
====nocount====&lt;br /&gt;
&lt;br /&gt;
====nohtml====&lt;br /&gt;
&lt;br /&gt;
====noindex====&lt;br /&gt;
&lt;br /&gt;
====nolink====&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
====render_menu====&lt;br /&gt;
&lt;br /&gt;
The name of a config element which defines a function with an alternate way to render the menu page for a view. For an example, try looking in cfg.d/views_render_menu_example.pl&lt;br /&gt;
&lt;br /&gt;
====new_column_at====&lt;br /&gt;
&lt;br /&gt;
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;
 [ 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column of values until there were 11, then there would be 2 columns.&lt;br /&gt;
&lt;br /&gt;
 [ 10, 10 ]&lt;br /&gt;
&lt;br /&gt;
This would have one column if there were ten or less values, two columns if there were between eleven and twenty (ten + ten) values, 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;
Add one to the number of integers in the array and you get the maximum number of columns.  The value of each integer defines the point at which that column becomes full, and more values cause an 'overflow' into the next column.&lt;br /&gt;
&lt;br /&gt;
====variations====&lt;br /&gt;
&lt;br /&gt;
This controls the various ways in which a browse view can be subheaded.  It consists of a list of strings.  Each string is the name of a non-compound metadata field (or the keyword DEFAULT, for an unsubheaded list), optionally followed by a semi-colon and a comma separated list of options.  E.G:&lt;br /&gt;
&lt;br /&gt;
 variations =&amp;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;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''reverse'''&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* '''filename'''&lt;br /&gt;
&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;
&lt;br /&gt;
 filename=different_filename&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''first_value'''&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* '''first_initial'''&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* '''first_letter'''&lt;br /&gt;
&lt;br /&gt;
The same as 'truncate=1'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''truncate'''&lt;br /&gt;
&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;
&lt;br /&gt;
 truncate=4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''tags'''&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* '''cloud'''&lt;br /&gt;
&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;
&lt;br /&gt;
&lt;br /&gt;
* '''cloudmax'''&lt;br /&gt;
&lt;br /&gt;
The % size of the largest tag in a tag cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''cloudmin'''&lt;br /&gt;
&lt;br /&gt;
The % size of the smallest tag in a tag cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''jump'''&lt;br /&gt;
&lt;br /&gt;
  jump=plain&lt;br /&gt;
&lt;br /&gt;
Turns of the 'jump to' text before the list of subheading navigation links.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''no_seperator (sic)'''&lt;br /&gt;
&lt;br /&gt;
Turns of the separator between each subheading navigation link (by default '|').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''string'''&lt;br /&gt;
&lt;br /&gt;
Uses values 'as is'.  No ordervalues, no phrases.&lt;br /&gt;
&lt;br /&gt;
* '''render_fn''' &lt;br /&gt;
&lt;br /&gt;
Name of a function to render this groupings list of items. For an example, see views_render_items_example.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6011</id>
		<title>Template:Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Template:Download&amp;diff=6011"/>
		<updated>2008-04-11T17:56:52Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''EPrints 3.x Series'''&lt;br /&gt;
** Stable &lt;br /&gt;
*** [http://files.eprints.org/318/ .tar.gz] v3.0.3&lt;br /&gt;
*** [http://deb.eprints.org/stable/eprints_3.0.3-1_all.deb Debian/Ubuntu deb] v3.0.3&lt;br /&gt;
*** [http://rpm.eprints.org/rhel4/noarch/eprints3-eprints-3.noarch.rpm Redhat rpm] v3.0.0&lt;br /&gt;
*** [http://rpm.eprints.org/fc6/noarch/eprints3-eprints-3.noarch.rpm Fedora (FC6)] v3.0.0&lt;br /&gt;
** Latest 3.0 series&lt;br /&gt;
*** [http://files.eprints.org/319/ .tar.gz] v3.0.4-rc-1&lt;br /&gt;
*** [http://deb.eprints.org/unstable/eprints_3.0.4-rc1-1_all.deb Debian/Ubuntu deb] v3.0.4-rc-1&lt;br /&gt;
** Latest 3.1 series&lt;br /&gt;
*** [http://files.eprints.org/339/ .tar.gz] v3.1.0-beta-2&lt;br /&gt;
*** [http://deb.eprints.org/3.1/unstable/eprints_3.1.0-beta-2_all.deb Debian/Ubuntu deb] v3.1.0-beta-2&lt;br /&gt;
** Live CD (Release v1.1)&lt;br /&gt;
*** [http://www.eprints.org/files/eprints3/livecd_v1.1.iso Live CD] Ubuntu based v3.0.3-rc-1 (652mb)&lt;br /&gt;
* '''Migration Toolkit (for [[Migration]] from EPrints v2)'''&lt;br /&gt;
** [http://files.eprints.org/256/ Migration Toolkit 1.0 (beta)]&lt;br /&gt;
** When migrating use [http://files.eprints.org/268/ EPrints 3.0.2] or later.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6010</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6010"/>
		<updated>2008-04-10T10:44:46Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* lang/en/phrases/views.xml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/views.pl ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;subheadings&amp;quot; option has been '''replaced''' by the variations heading. This only allows one level of subheading but is much faster.&lt;br /&gt;
&lt;br /&gt;
=== lang/en/phrases/views.xml ===&lt;br /&gt;
&lt;br /&gt;
The way the titles of views pages are configured has '''changed'''.&lt;br /&gt;
&lt;br /&gt;
The title of the first page of the view with id &amp;quot;subjects&amp;quot; is now:&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_1&amp;quot;&amp;gt;Browse by Subject and Year&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if there's a second level menu, configure it with:&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_2&amp;quot;&amp;gt;Browse by Year where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot;&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The actual list page title is configured like this:&lt;br /&gt;
 &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_list&amp;quot;&amp;gt;Items where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot; and &lt;br /&gt;
 Year is &amp;lt;epc:pin name=&amp;quot;value2&amp;quot; /&amp;gt; (Grouped by &amp;lt;epc:pin name=&amp;quot;grouping&amp;quot; /&amp;gt;)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6009</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6009"/>
		<updated>2008-04-10T10:44:28Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* lang/en/phrases/views.xml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/views.pl ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;subheadings&amp;quot; option has been '''replaced''' by the variations heading. This only allows one level of subheading but is much faster.&lt;br /&gt;
&lt;br /&gt;
=== lang/en/phrases/views.xml ===&lt;br /&gt;
&lt;br /&gt;
The way the titles of views pages are configured has '''changed'''.&lt;br /&gt;
&lt;br /&gt;
The title of the first page of the view with id &amp;quot;subjects&amp;quot; is now:&lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_1&amp;quot;&amp;gt;Browse by Subject and Year&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if there's a second level menu, configure it with:&lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_2&amp;quot;&amp;gt;Browse by Year where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot;&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The actual list page title is configured like this:&lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_list&amp;quot;&amp;gt;Items where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot; and &lt;br /&gt;
     Year is &amp;lt;epc:pin name=&amp;quot;value2&amp;quot; /&amp;gt; (Grouped by &amp;lt;epc:pin name=&amp;quot;grouping&amp;quot; /&amp;gt;)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6008</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6008"/>
		<updated>2008-04-10T10:43:59Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* cfg.d/views.pl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/views.pl ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;subheadings&amp;quot; option has been '''replaced''' by the variations heading. This only allows one level of subheading but is much faster.&lt;br /&gt;
&lt;br /&gt;
=== lang/en/phrases/views.xml ===&lt;br /&gt;
&lt;br /&gt;
The way the titles of views pages are configured has '''changed'''.&lt;br /&gt;
&lt;br /&gt;
The title of the first page of the view with id &amp;quot;subjects&amp;quot; is now:&lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_1&amp;quot;&amp;gt;Browse by Subject and Year&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if there's a second level menu, configure it with:&lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_menu_2&amp;quot;&amp;gt;Browse by Year where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot;&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &lt;br /&gt;
     &amp;lt;epp:phrase id=&amp;quot;viewtitle_eprint_subjects_list&amp;quot;&amp;gt;Items where Subject is &amp;quot;&amp;lt;epc:pin name=&amp;quot;value1&amp;quot; /&amp;gt;&amp;quot; and Year is &amp;lt;epc:pin name=&amp;quot;value2&amp;quot; /&amp;gt; (Grouped by &amp;lt;epc:pin name=&amp;quot;grouping&amp;quot; /&amp;gt;)&amp;lt;/epp:phrase&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=6007</id>
		<title>Upgrading EPrints 3 versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=6007"/>
		<updated>2008-04-09T16:46:05Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Upgrading 3.0.x to 3.1.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints developer Christopher Gutteridge gives the following instructions:&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.0.y ==&lt;br /&gt;
&lt;br /&gt;
This is very easy - just run &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; with the &lt;br /&gt;
&amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; set to the location of the current repo (you may also need to set the --with-user and --with-group options). Then run install.pl to upgrade the software.  Then run&lt;br /&gt;
&lt;br /&gt;
 epadmin upgrade REPOID&lt;br /&gt;
&lt;br /&gt;
For each repository to update the database. Normally minor updates would not update the db at all. In this case all it does is add an SQL index to make things go faster. Restart the webserver in indexer after an upgrade. (or better, shut them off before you start to upgrade)&lt;br /&gt;
&lt;br /&gt;
(lightly edited from [http://www.eprints.org/tech.php/6598.html], 2007-04-13 to eprints-tech)&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.1.x ==&lt;br /&gt;
&lt;br /&gt;
This is not yet widely tested, so at your own risk. Initial notes on 3.1.0-beta-2.&lt;br /&gt;
* large repositories can take a significant chunk of time to run epadmin upgrade (many minutes)&lt;br /&gt;
* &amp;quot;Views&amp;quot; get a little screwed up as the new configuration options are slightly altered.&lt;br /&gt;
* [[New Features in EPrints 3.1]] has a list of suggested configuration changes. The &amp;quot;variations&amp;quot; option replaces &amp;quot;subheadings&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
Known issues:&lt;br /&gt;
* epadmin upgrade reports lots of SQL errors, but these don't cause any problems &lt;br /&gt;
* VLit plugin is broken &lt;br /&gt;
* beta-2 has a bug which means &amp;quot;Smith, J&amp;quot; searches don't work on names but searching &amp;quot;Smith&amp;quot; does.&lt;br /&gt;
* &amp;quot;include&amp;quot; option in view.pl is being ignored.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6006</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=6006"/>
		<updated>2008-04-09T16:41:42Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* New Document Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/views.pl ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;subheadings&amp;quot; option has been '''replaced''' by the variations heading. This only allows one level of subheading but is much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=6005</id>
		<title>Upgrading EPrints 3 versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=6005"/>
		<updated>2008-04-09T16:40:31Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Upgrading 3.0.x to 3.1.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints developer Christopher Gutteridge gives the following instructions:&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.0.y ==&lt;br /&gt;
&lt;br /&gt;
This is very easy - just run &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; with the &lt;br /&gt;
&amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; set to the location of the current repo (you may also need to set the --with-user and --with-group options). Then run install.pl to upgrade the software.  Then run&lt;br /&gt;
&lt;br /&gt;
 epadmin upgrade REPOID&lt;br /&gt;
&lt;br /&gt;
For each repository to update the database. Normally minor updates would not update the db at all. In this case all it does is add an SQL index to make things go faster. Restart the webserver in indexer after an upgrade. (or better, shut them off before you start to upgrade)&lt;br /&gt;
&lt;br /&gt;
(lightly edited from [http://www.eprints.org/tech.php/6598.html], 2007-04-13 to eprints-tech)&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.1.x ==&lt;br /&gt;
&lt;br /&gt;
This is not yet widely tested, so at your own risk. Initial notes on 3.1.0-beta-2.&lt;br /&gt;
* epadmin upgrade reports lots of SQL errors, but these don't cause any problems (and will be suppressed by -rc-1)&lt;br /&gt;
* large repositories can take a significant chunk of time to run epadmin upgrade (many minutes)&lt;br /&gt;
* &amp;quot;Views&amp;quot; get a little screwed up as the new configuration options are slightly altered.&lt;br /&gt;
* [[New Features in EPrints 3.1]] has a list of suggested configuration changes. The &amp;quot;variations&amp;quot; option replaces &amp;quot;subheadings&amp;quot; option.&lt;br /&gt;
* VLit plugin is broken (needs fixing before release)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=5994</id>
		<title>Upgrading EPrints 3 versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=5994"/>
		<updated>2008-04-07T15:25:16Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Upgrading 3.0.x to 3.1.x */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints developer Christopher Gutteridge gives the following instructions:&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.0.y ==&lt;br /&gt;
&lt;br /&gt;
This is very easy - just run &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; with the &lt;br /&gt;
&amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; set to the location of the current repo (you may also need to set the --with-user and --with-group options). Then run install.pl to upgrade the software.  Then run&lt;br /&gt;
&lt;br /&gt;
 epadmin upgrade REPOID&lt;br /&gt;
&lt;br /&gt;
For each repository to update the database. Normally minor updates would not update the db at all. In this case all it does is add an SQL index to make things go faster. Restart the webserver in indexer after an upgrade. (or better, shut them off before you start to upgrade)&lt;br /&gt;
&lt;br /&gt;
(lightly edited from [http://www.eprints.org/tech.php/6598.html], 2007-04-13 to eprints-tech)&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.1.x ==&lt;br /&gt;
&lt;br /&gt;
This is not yet widely tested, so at your own risk. Initial notes on 3.1.0-beta-2.&lt;br /&gt;
* epadmin upgrade reports lots of SQL errors, but these don't cause any problems (and will be suppressed by -rc-1)&lt;br /&gt;
* large repositories can take a significant chunk of time to run epadmin upgrade (many minutes)&lt;br /&gt;
* &amp;quot;Views&amp;quot; get a little screwed up as the new configuration options are slightly altered.&lt;br /&gt;
* [[New Features in EPrints 3.1]] has a list of suggested configuration changes.&lt;br /&gt;
* VLit plugin is broken (needs fixing before release)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=5993</id>
		<title>Upgrading EPrints 3 versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Upgrading_EPrints_3_versions&amp;diff=5993"/>
		<updated>2008-04-07T15:16:31Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EPrints developer Christopher Gutteridge gives the following instructions:&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.0.y ==&lt;br /&gt;
&lt;br /&gt;
This is very easy - just run &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; with the &lt;br /&gt;
&amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; set to the location of the current repo (you may also need to set the --with-user and --with-group options). Then run install.pl to upgrade the software.  Then run&lt;br /&gt;
&lt;br /&gt;
 epadmin upgrade REPOID&lt;br /&gt;
&lt;br /&gt;
For each repository to update the database. Normally minor updates would not update the db at all. In this case all it does is add an SQL index to make things go faster. Restart the webserver in indexer after an upgrade. (or better, shut them off before you start to upgrade)&lt;br /&gt;
&lt;br /&gt;
(lightly edited from [http://www.eprints.org/tech.php/6598.html], 2007-04-13 to eprints-tech)&lt;br /&gt;
&lt;br /&gt;
== Upgrading 3.0.x to 3.1.x ==&lt;br /&gt;
&lt;br /&gt;
This is not yet widely tested, so at your own risk. Initial notes on 3.1.0-beta-2.&lt;br /&gt;
* epadmin upgrade reports lots of SQL errors, but these don't cause any problems (and will be suppressed by -rc-1)&lt;br /&gt;
* large repositories can take a significant chunk of time to run epadmin upgrade (many minutes)&lt;br /&gt;
* &amp;quot;Views&amp;quot; get a little screwed up as the new configuration options are slightly altered.&lt;br /&gt;
* [[New Features in EPrints 3.1]] has a list of suggested configuration changes.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5992</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5992"/>
		<updated>2008-04-07T12:31:00Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Handy Hooks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5991</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5991"/>
		<updated>2008-04-07T12:30:49Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* New Document Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl ===&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5990</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5990"/>
		<updated>2008-04-07T12:30:28Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* eprint_fields.pl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster. &lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5989</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5989"/>
		<updated>2008-04-07T12:30:06Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Changes to default configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to repository configuration =&lt;br /&gt;
We've made some changes to the configuration of a new repository. These will not be automatically applied to your current repositories when upgrading.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/indexing.pl&lt;br /&gt;
A new version of this was added in the 3.0 series, but if you're using an early 3.0 version of this file, then replace it with the one that comes with 3.1 - it's much faster. &lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5988</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5988"/>
		<updated>2008-04-07T12:27:42Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5987</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5987"/>
		<updated>2008-04-07T12:25:57Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Changes to default configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
== Suggested Changes ==&lt;br /&gt;
If upgrading from 3.0 to 3.1, the following changes to your own configuration are suggested to gain the features described above.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt; - this now chops the end of very long URLs for nicer page rendering.&lt;br /&gt;
* related_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_related_url'&amp;lt;/tt&amp;gt; - this is a renderer specifically for this field. It links the word &amp;quot;author&amp;quot;, or &amp;quot;publisher&amp;quot;, etc. to the URL. If no type is specified, it links the URL (truncated if over 40 chars).&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5986</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5986"/>
		<updated>2008-04-07T12:21:54Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Changes to default configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
=== New Document Formats ===&lt;br /&gt;
Added new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video. &lt;br /&gt;
* lang/en/phrases/document_formats.xml&lt;br /&gt;
* namedsets/document&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/search.pl ===&lt;br /&gt;
* added documents.format to advanced search &lt;br /&gt;
* changed all searches on &amp;quot;userid&amp;quot; to search &amp;quot;userid.username&amp;quot; instead. Another good option might be userid.name or even userid.usertype&lt;br /&gt;
* Most earches are now configured by default to show zero results (rather than returning to the search form). The option to add to searches in search.pl is &amp;lt;tt&amp;gt;show_zero_results =&amp;gt; 1&amp;lt;/tt&amp;gt;. This is handy for people who want to make a saved search, even if there were no results yet,.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/roles.pl ===&lt;br /&gt;
* Added the &amp;quot;edit-config&amp;quot; role to admin users.&lt;br /&gt;
&lt;br /&gt;
=== workflows/eprint/default.xml ===&lt;br /&gt;
* added &amp;quot;content&amp;quot; to the &amp;quot;Upload&amp;quot; component, as the first field (just before &amp;quot;format&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== namedsets/eprint_relation ===&lt;br /&gt;
This is a new file which describes the options in the new &amp;quot;document.content&amp;quot; field. Add this file if you enabled the field in the workflow.&lt;br /&gt;
&lt;br /&gt;
=== workflows/user/default.xml ===&lt;br /&gt;
* Removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
* Added user.roles to the &amp;quot;usertype&amp;quot; stage, so it's only editable by people who can also set the usertype.&lt;br /&gt;
&lt;br /&gt;
=== issues.xml ===&lt;br /&gt;
This is a new (optional) configuration file which defines some simple issues to warn about in live eprints.&lt;br /&gt;
&lt;br /&gt;
=== eprint_fields.pl ===&lt;br /&gt;
We applied some of the new Extras render and order methods:&lt;br /&gt;
* title field: &amp;lt;tt&amp;gt;'make_single_value_orderkey' =&amp;gt; 'EPrints::Extras::english_title_orderkey'&amp;lt;/tt&amp;gt; - so when ordering by title, leading &amp;quot;a&amp;quot;, &amp;quot;an&amp;quot; and &amp;quot;the&amp;quot; are ignored. If you add this as an upgrade you'll need to run &amp;lt;tt&amp;gt;epadmin reorder &amp;lt;i&amp;gt;repositoryid&amp;lt;/i&amp;gt; eprint&amp;lt;/tt&amp;gt;&lt;br /&gt;
* id_number field: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_possible_doi'&amp;lt;/tt&amp;gt; - which links to the DOI resolver if the field looks like a DOI.&lt;br /&gt;
* offical_url: &amp;lt;tt&amp;gt;'render_value' =&amp;gt; 'EPrints::Extras::render_url_truncate_end'&amp;lt;/tt&amp;gt;&lt;br /&gt;
* some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
** related_urls uses the related urls renderer.&lt;br /&gt;
** official_url uses the end-truncating URL renderer.&lt;br /&gt;
** title now uses english_title_orderkey&lt;br /&gt;
** id_number uses render_possible_doi&lt;br /&gt;
&lt;br /&gt;
== Other Changes to the default configuration ==&lt;br /&gt;
These are changes from 3.0 which you probably don't need to bother applying when upgrading.&lt;br /&gt;
&lt;br /&gt;
=== cfg.d/eprint_fields_automatic.pl ===&lt;br /&gt;
* Changed thesis to only be set to &amp;quot;unpub&amp;quot; if its' not yet defined. Thesis are not always unpublished.&lt;br /&gt;
&lt;br /&gt;
=== Contributor Field ===&lt;br /&gt;
The contributor field is like the creators field, but each contributor has a &amp;quot;type&amp;quot; set (with a default list of about 200 possible types of contribution. This field is not added to the workflow, by default, as it's more than most sites need. We suggest trimming the contributor type list down, but we started with a big list to ensure commonality of the values over all repositories using it.&lt;br /&gt;
* eprint_files.pl: added contributor field&lt;br /&gt;
* namedsets/contributor_type: List of all possible types of contributor.&lt;br /&gt;
* lang/en/phrases/eprint_fields.xml: Added related phrases.&lt;br /&gt;
* workflows/eprint/default.xml: Added the field in a comment, so people can add it if needed.&lt;br /&gt;
&lt;br /&gt;
=== Homepage ===&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== Comments ===&lt;br /&gt;
* Some cfg.d/*.pl files gained additional example code. Eg. user_roles.pl&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5985</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5985"/>
		<updated>2008-04-07T11:10:11Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* New Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
Important note. Some new features will be enabled in NEW repositories, but if you upgrade you will need to modify your configuration to use them. We strongly recommend you review the &amp;quot;changes to default configuration&amp;quot; section at the end of this page, and apply them to your configuration, where appropriate.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== New field-rendering tools ==&lt;br /&gt;
We've added some new field renderers to EPrints::Extras. If you're upgrading, you'll need to add these to eprint_fields.pl by hand.&lt;br /&gt;
* renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
* renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
* renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
* render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
&lt;br /&gt;
== Issues tracking system ==&lt;br /&gt;
The new issues system allows the discovery of eprints with issues. For example, duplicate titles, or an item from five years ago still listed as &amp;quot;in press&amp;quot;. You can configure the issues system via a simple XML file, similar to the citation file format. More richly specified issues discovery can be achieved using the new issues-plugins system.&lt;br /&gt;
* A issues_audit script is run nightly to discover and note issues. Issues which were there last time, but not there today are marked as &amp;quot;resolved&amp;quot; so you can review the resolution time. This audits items in the live archive and review buffer.&lt;br /&gt;
* An Issues Tab on the eprint control page shows the current logged issues, and also a live list of issues (although not all issues, such as a search for similar titles, can currently be done &amp;quot;on the fly&amp;quot;)&lt;br /&gt;
* An Issues Search tool to search the &lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search. You can order the list of items with issues by the number of issues, or by the most recently discovered issues.&lt;br /&gt;
&lt;br /&gt;
=== Planned extensions to the issues system ===&lt;br /&gt;
These are not yet implemented, but we may provide as a set of plugins to 3.1.&lt;br /&gt;
* Tool to allow QA staff to mark auto-discovered issues as &amp;quot;ignored&amp;quot;. For example, two items which really DO have the same title.&lt;br /&gt;
* Tool to allow staff to add issues by hand, and mark these issues as resolved.&lt;br /&gt;
&lt;br /&gt;
== Uncategorised features ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added. You're not restricted to the ones we think our useful - eg. &amp;quot;fullsize&amp;quot; is handy to add to get a large image of the front page of documents.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns. This makes search pages much more tidy.&lt;br /&gt;
* Added config option to set the citation style used in in saved search emails.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
* added contributor field with a related nameset for type of contributor.&lt;br /&gt;
* new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
* added documents.format to eprint search&lt;br /&gt;
* added several more sub-object searches to default cfg.&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
* Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
* admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
* some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
** related_urls uses the related urls renderer.&lt;br /&gt;
** official_url uses the end-truncating URL renderer.&lt;br /&gt;
** title now uses english_title_orderkey&lt;br /&gt;
** id_number uses render_possible_doi&lt;br /&gt;
* added document.content to the workflow&lt;br /&gt;
* Added user.roles to the workflow (for admins to edit)&lt;br /&gt;
* thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
* added a default issues.xml file to spot some common issues.&lt;br /&gt;
* removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
&lt;br /&gt;
Phew. Enjoy.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1-beta-1&amp;diff=5984</id>
		<title>Files/EPrints 3.1-beta-1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1-beta-1&amp;diff=5984"/>
		<updated>2008-04-07T10:56:05Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Redirecting to New Features in EPrints 3.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[New Features in EPrints 3.1]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1-beta-2&amp;diff=5983</id>
		<title>Files/EPrints 3.1-beta-2</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Files/EPrints_3.1-beta-2&amp;diff=5983"/>
		<updated>2008-04-07T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Redirecting to New Features in EPrints 3.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[New Features in EPrints 3.1]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5980</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5980"/>
		<updated>2008-04-07T01:20:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Toolbox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
== Other odds and ends ==&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
* Added some new Extra render fields:&lt;br /&gt;
** renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
** renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
** renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
** render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
* Added config option to set citation style sent out in saved searches.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
** EPrint Tab&lt;br /&gt;
** Audit Script&lt;br /&gt;
** Issues Search&lt;br /&gt;
** Issues Plugins&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
* added contributor field with a related nameset for type of contributor.&lt;br /&gt;
* new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
* added documents.format to eprint search&lt;br /&gt;
* added several more sub-object searches to default cfg.&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
* Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
* admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
* some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
** related_urls uses the related urls renderer.&lt;br /&gt;
** official_url uses the end-truncating URL renderer.&lt;br /&gt;
** title now uses english_title_orderkey&lt;br /&gt;
** id_number uses render_possible_doi&lt;br /&gt;
* added document.content to the workflow&lt;br /&gt;
* Added user.roles to the workflow (for admins to edit)&lt;br /&gt;
* thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
* added a default issues.xml file to spot some common issues.&lt;br /&gt;
* removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
&lt;br /&gt;
Phew. Enjoy.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5979</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5979"/>
		<updated>2008-04-07T01:10:44Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
* And you can define a new role. These are hats for assigning to individual users. For example a &amp;quot;edit item in buffer, but don't approve&amp;quot; hat.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
* oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
* New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
* Added some new Extra render fields:&lt;br /&gt;
** renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
** renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
** renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
** render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
* Added EPrints::Extras::english_title_orderkey - which can be used to cause a field to be sorted, ignoring a leading a/an/the&lt;br /&gt;
* added importid to eprints to link them to the related import object.&lt;br /&gt;
* added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
* Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
* Added config option to set citation style sent out in saved searches.&lt;br /&gt;
* New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
* New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
** EPrint Tab&lt;br /&gt;
** Audit Script&lt;br /&gt;
** Issues Search&lt;br /&gt;
** Issues Plugins&lt;br /&gt;
&lt;br /&gt;
= Changes to default configuration =&lt;br /&gt;
These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
* added contributor field with a related nameset for type of contributor.&lt;br /&gt;
* new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
* added documents.format to eprint search&lt;br /&gt;
* added several more sub-object searches to default cfg.&lt;br /&gt;
* Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
* Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
* admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
* some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
** related_urls uses the related urls renderer.&lt;br /&gt;
** official_url uses the end-truncating URL renderer.&lt;br /&gt;
** title now uses english_title_orderkey&lt;br /&gt;
** id_number uses render_possible_doi&lt;br /&gt;
* added document.content to the workflow&lt;br /&gt;
* Added user.roles to the workflow (for admins to edit)&lt;br /&gt;
* thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
* added a default issues.xml file to spot some common issues.&lt;br /&gt;
* removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;br /&gt;
&lt;br /&gt;
Phew. Enjoy.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5978</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5978"/>
		<updated>2008-04-07T01:03:49Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history:owner&amp;quot;. &lt;br /&gt;
* A &amp;quot;role&amp;quot; is a bunch of related privs that may be assigned to a user or usertype.&lt;br /&gt;
* A &amp;quot;user&amp;quot; has a &amp;quot;usertype&amp;quot;. The user_roles.pl config file defines what roles are assigned to each usertype.&lt;br /&gt;
Now for the changes in 3.1:&lt;br /&gt;
* You can add (and remove) individual privs in the user_roles.pl&lt;br /&gt;
* Also a new field in User can be used to assign &lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
 specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5977</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5977"/>
		<updated>2008-04-06T23:37:14Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* When a user logs out.&lt;br /&gt;
* When the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilege handling ==&lt;br /&gt;
First, a quick refresher on the way privileges, roles and usertypes relate to each other:&lt;br /&gt;
* A privilege is a very fine-grained right. It allows, for example, a user to view the &amp;quot;history&amp;quot; tab on eprints they submitted, while the eprint is in the inbox. In this case &amp;quot;eprint/inbox/history=user&amp;quot;&lt;br /&gt;
* New roles can be configured (roles are a set of related privileges)&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Additional templates can be added and used instead of the default template. You can configure a search and view to use such a template. You can also apply a different template to a static page, abstract page or screen plugin. &lt;br /&gt;
A good application of this new feature would be to create a view and search filtered to only show items from the university maths department, and give that view and search a template in the style of the maths dept. &lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
* Abstract pages can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
 specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5976</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5976"/>
		<updated>2008-04-06T23:11:38Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Abstract&amp;quot; pages (the page which describes an eprint) ==&lt;br /&gt;
* These can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* when a user logs out.&lt;br /&gt;
*  when the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
* Admins may view configuration via the web.&lt;br /&gt;
* Admins may modify configuration via the web.&lt;br /&gt;
* Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
* Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
* When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
* errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
* epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
* Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
* Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
== Administration ==&lt;br /&gt;
* Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
* New buttons on the admin screen:&lt;br /&gt;
** send a test email (to check outgoing email is working).&lt;br /&gt;
** refresh the abstracts (on request, not right now)&lt;br /&gt;
** refresh the views (on request, not right now)&lt;br /&gt;
** reload the all configuration files.&lt;br /&gt;
* Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
* New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
== Semantic Web/Complex Objects ==&lt;br /&gt;
* We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
* EP3 XML Export now adds the URI to each record.&lt;br /&gt;
* URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
* URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
* URIs for documents redirect the base URL of that document.&lt;br /&gt;
* Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
* Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
== Indexing ==&lt;br /&gt;
* Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
== Autocompletion ==&lt;br /&gt;
* Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
* New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
* Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
* Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
* search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
* Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
== Improved privilage handling ==&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
== Toolbox ==&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Support for alternate templates for a view, subject, abstract page and static file. Also screens can tell their processor to use a different template file.&lt;br /&gt;
- specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- abstracts now regenerate if older than a set date.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5975</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5975"/>
		<updated>2008-04-06T23:00:58Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Submission Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Abstract&amp;quot; pages (the page which describes an eprint) ==&lt;br /&gt;
* These can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* when a user logs out.&lt;br /&gt;
*  when the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
* Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
* The BibTeX export no longer requires an external module.&lt;br /&gt;
* EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
* XSLT based export plugins support.&lt;br /&gt;
* IDs Plugin - just export the IDs of each item.&lt;br /&gt;
* ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
* DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
* Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
== Import ==&lt;br /&gt;
* XSLT import plugin system&lt;br /&gt;
* Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
* Added import dataset for keeping track of imports.&lt;br /&gt;
* In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
* Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
== Search ==&lt;br /&gt;
* Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
* Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
* Abstracted database layer to allow support of other databases.&lt;br /&gt;
* Oracle Support!&lt;br /&gt;
* Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
* EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
* Messages and login_tickets are now datasets.&lt;br /&gt;
* epadmin has a command to create anything missing in the database. Handy if you want to add a field, you no longer have to fiddle with the SQL.&lt;br /&gt;
&lt;br /&gt;
== Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages ==&lt;br /&gt;
* Columns may now be moved left and right.&lt;br /&gt;
* Columns may be deleted.&lt;br /&gt;
* A column may be added for any eprint field.&lt;br /&gt;
* Changes to columns are saved on the user record.&lt;br /&gt;
* Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
Configuration&lt;br /&gt;
- New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
- Admins may view configuration via the web.&lt;br /&gt;
- Admins may modify configuration via the web.&lt;br /&gt;
- Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
- Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
- When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
- errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
- epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
- Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
- Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
Administration&lt;br /&gt;
- Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
- New buttons on the admin screen:&lt;br /&gt;
-- send a test email (to check outgoing email is working).&lt;br /&gt;
-- refresh the abstracts (on request, not right now)&lt;br /&gt;
-- refresh the views (on request, not right now)&lt;br /&gt;
-- reload the all configuration files.&lt;br /&gt;
- Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
- New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
Semantic Web/Complex Objects&lt;br /&gt;
- We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
- EP3 XML Export now adds the URI to each record.&lt;br /&gt;
- URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
- URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
- URIs for documents redirect the base URL of that document.&lt;br /&gt;
- Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
- Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
Indexing&lt;br /&gt;
- Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
Autocompletion&lt;br /&gt;
- Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
- New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
- Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
Searching&lt;br /&gt;
- Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
- search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
- Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
Improved privilage handling&lt;br /&gt;
&lt;br /&gt;
Templates&lt;br /&gt;
&lt;br /&gt;
Toolbox&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*******************************************&lt;br /&gt;
- Added the toolbox command line and cgi tools.&lt;br /&gt;
- Support for alternate templates for a view, subject, abstract page and static file. Also screens can tell their processor to use a different template file.&lt;br /&gt;
- specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- abstracts now regenerate if older than a set date.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5974</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5974"/>
		<updated>2008-04-06T22:56:13Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* STRING.strlen() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Abstract&amp;quot; pages (the page which describes an eprint) ==&lt;br /&gt;
* These can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings.&lt;br /&gt;
 &amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
=== today() ===&lt;br /&gt;
The today() function takes no parameters and returns the current date.&lt;br /&gt;
=== DATE.datemath( CHANGE, TYPE ) ===&lt;br /&gt;
CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
For example:&lt;br /&gt;
 today().datemath( -6, &amp;quot;month&amp;quot; )&lt;br /&gt;
would return a date six months before today.&lt;br /&gt;
&lt;br /&gt;
== Handy Hooks ==&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
* when a user logs out.&lt;br /&gt;
*  when the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
== Submission Process ==&lt;br /&gt;
* Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
* Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
* Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
* There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
* Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
* Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
Export&lt;br /&gt;
- Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
- The BibTeX export no longer requires an external module.&lt;br /&gt;
- EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
- XSLT export plugins supported.&lt;br /&gt;
- IDs Plugin - just export the IDs of each item.&lt;br /&gt;
- ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
- DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
- Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
Import&lt;br /&gt;
- XSLT import plugin system&lt;br /&gt;
- Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
- Added import dataset for keeping track of imports.&lt;br /&gt;
- In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
- Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
Search&lt;br /&gt;
- Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
- Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
Database&lt;br /&gt;
- Abstracted database layer to allow support of other databases.&lt;br /&gt;
- Oracle Support!&lt;br /&gt;
- Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
- EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
- Messages and login_tickets are now datasets.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages.&lt;br /&gt;
- Columns may now be moved left and right.&lt;br /&gt;
- Columns may be deleted.&lt;br /&gt;
- A column may be added for any eprint field.&lt;br /&gt;
- Changes to columns are saved on the user record.&lt;br /&gt;
- Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
Configuration&lt;br /&gt;
- New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
- Admins may view configuration via the web.&lt;br /&gt;
- Admins may modify configuration via the web.&lt;br /&gt;
- Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
- Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
- When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
- errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
- epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
- Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
- Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
Administration&lt;br /&gt;
- Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
- New buttons on the admin screen:&lt;br /&gt;
-- send a test email (to check outgoing email is working).&lt;br /&gt;
-- refresh the abstracts (on request, not right now)&lt;br /&gt;
-- refresh the views (on request, not right now)&lt;br /&gt;
-- reload the all configuration files.&lt;br /&gt;
- Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
- New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
Semantic Web/Complex Objects&lt;br /&gt;
- We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
- EP3 XML Export now adds the URI to each record.&lt;br /&gt;
- URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
- URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
- URIs for documents redirect the base URL of that document.&lt;br /&gt;
- Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
- Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
Indexing&lt;br /&gt;
- Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
Autocompletion&lt;br /&gt;
- Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
- New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
- Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
Searching&lt;br /&gt;
- Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
- search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
- Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
Improved privilage handling&lt;br /&gt;
&lt;br /&gt;
Templates&lt;br /&gt;
&lt;br /&gt;
Toolbox&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*******************************************&lt;br /&gt;
- Added the toolbox command line and cgi tools.&lt;br /&gt;
- Support for alternate templates for a view, subject, abstract page and static file. Also screens can tell their processor to use a different template file.&lt;br /&gt;
- specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- abstracts now regenerate if older than a set date.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5973</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5973"/>
		<updated>2008-04-06T22:53:40Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* &amp;lt;epc:foreach&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Abstract&amp;quot; pages (the page which describes an eprint) ==&lt;br /&gt;
* These can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings. eg.&amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
- Added &amp;quot;DATE&amp;quot; variable type to EPScript.&lt;br /&gt;
- Added today() function which returns the current date.&lt;br /&gt;
- Added DATE.datemath( CHANGE, TYPE ) - CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
Handy Hooks&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
- when a user logs out.&lt;br /&gt;
- when the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
Submission Process&lt;br /&gt;
- Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
- Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
- Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
- There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
- Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
- Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
Export&lt;br /&gt;
- Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
- The BibTeX export no longer requires an external module.&lt;br /&gt;
- EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
- XSLT export plugins supported.&lt;br /&gt;
- IDs Plugin - just export the IDs of each item.&lt;br /&gt;
- ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
- DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
- Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
Import&lt;br /&gt;
- XSLT import plugin system&lt;br /&gt;
- Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
- Added import dataset for keeping track of imports.&lt;br /&gt;
- In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
- Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
Search&lt;br /&gt;
- Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
- Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
Database&lt;br /&gt;
- Abstracted database layer to allow support of other databases.&lt;br /&gt;
- Oracle Support!&lt;br /&gt;
- Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
- EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
- Messages and login_tickets are now datasets.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages.&lt;br /&gt;
- Columns may now be moved left and right.&lt;br /&gt;
- Columns may be deleted.&lt;br /&gt;
- A column may be added for any eprint field.&lt;br /&gt;
- Changes to columns are saved on the user record.&lt;br /&gt;
- Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
Configuration&lt;br /&gt;
- New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
- Admins may view configuration via the web.&lt;br /&gt;
- Admins may modify configuration via the web.&lt;br /&gt;
- Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
- Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
- When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
- errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
- epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
- Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
- Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
Administration&lt;br /&gt;
- Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
- New buttons on the admin screen:&lt;br /&gt;
-- send a test email (to check outgoing email is working).&lt;br /&gt;
-- refresh the abstracts (on request, not right now)&lt;br /&gt;
-- refresh the views (on request, not right now)&lt;br /&gt;
-- reload the all configuration files.&lt;br /&gt;
- Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
- New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
Semantic Web/Complex Objects&lt;br /&gt;
- We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
- EP3 XML Export now adds the URI to each record.&lt;br /&gt;
- URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
- URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
- URIs for documents redirect the base URL of that document.&lt;br /&gt;
- Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
- Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
Indexing&lt;br /&gt;
- Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
Autocompletion&lt;br /&gt;
- Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
- New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
- Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
Searching&lt;br /&gt;
- Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
- search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
- Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
Improved privilage handling&lt;br /&gt;
&lt;br /&gt;
Templates&lt;br /&gt;
&lt;br /&gt;
Toolbox&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*******************************************&lt;br /&gt;
- Added the toolbox command line and cgi tools.&lt;br /&gt;
- Support for alternate templates for a view, subject, abstract page and static file. Also screens can tell their processor to use a different template file.&lt;br /&gt;
- specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- abstracts now regenerate if older than a set date.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5972</id>
		<title>New Features in EPrints 3.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=New_Features_in_EPrints_3.1&amp;diff=5972"/>
		<updated>2008-04-06T22:52:42Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* &amp;lt;epc:foreach&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= New Features =&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
The views part of EPrints has had a significant rewrite.&lt;br /&gt;
* Significant speed improvements&lt;br /&gt;
* On the command line, epadmin refresh_views, and a button on the Admin web page, which both cause all view pages to be regenerated next time they are requested.&lt;br /&gt;
* Groupings: You may configure alternate groupings for the views pages. Eg. group results by type, or by creators first initial.&lt;br /&gt;
* Views can be set to regenerate if they are requested and the file on disk is older than a specified age.&lt;br /&gt;
* Generate_views can be limited to just one view or language. Also just the menu pages, or just the lists-of-citations pages.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Abstract&amp;quot; pages (the page which describes an eprint) ==&lt;br /&gt;
* These can now be refreshed using epadmin or the web-interface.&lt;br /&gt;
&lt;br /&gt;
== XML based Scripting ==&lt;br /&gt;
=== &amp;lt;epc:foreach&amp;gt; ===&lt;br /&gt;
This is a new tag for XML files: &amp;lt;epc:foreach&amp;gt; takes a list (eg. the value of a &amp;quot;multiple&amp;quot; field) and returns the contents of the tag once for each value in the list.eg.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;ol&amp;gt;&lt;br /&gt;
   &amp;lt;epc:foreach expr=&amp;quot;creators_name&amp;quot; iterator=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;li&amp;gt;(&amp;lt;epc:print expr=&amp;quot;$name&amp;quot; /&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/epc:foreach&amp;gt;&lt;br /&gt;
 &amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
which would resolve to something like:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;(Smith, John)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;(Jones, Davy)&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STRING.strlen()===&lt;br /&gt;
This just returns the length of a string. Useful in the issues.xml for identifying very long or short strings. eg.&amp;lt;spc:print expr=&amp;quot;title.strlen()&amp;quot; /&amp;gt;&lt;br /&gt;
would return the number of characters in the title field.&lt;br /&gt;
- Added &amp;quot;DATE&amp;quot; variable type to EPScript.&lt;br /&gt;
- Added today() function which returns the current date.&lt;br /&gt;
- Added DATE.datemath( CHANGE, TYPE ) - CHANGE is a positive or negative value and type is year, month or day. Returns the resulting date.&lt;br /&gt;
Handy Hooks&lt;br /&gt;
Hooks are easy ways to add some code to be run on certain events. New hooks are:&lt;br /&gt;
- when a user logs out.&lt;br /&gt;
- when the thumbnails for a document are (re)generated.&lt;br /&gt;
&lt;br /&gt;
Submission Process&lt;br /&gt;
- Document Upload now allows upload+unpacking of .tgz or .zip files.&lt;br /&gt;
- Document Upload offers &amp;quot;capture from URL&amp;quot;.&lt;br /&gt;
- Documents now have an option to convert them to any format available in the convert plugins.&lt;br /&gt;
- There's a convert plugin to turn .doc into .pdf, which is available from the upload screen convert option.&lt;br /&gt;
- Also plugins to convert PDFs and images to various image formats (png, jpg etc.)&lt;br /&gt;
- Option to allow import plugins to caputre full text from URLs in the imported data.&lt;br /&gt;
&lt;br /&gt;
Export&lt;br /&gt;
- Existing export plugins have been improved in terms of speed and memory usage.&lt;br /&gt;
- The BibTeX export no longer requires an external module.&lt;br /&gt;
- EAP (SWAP) Plugin - The EPrints Application Profile.&lt;br /&gt;
- XSLT export plugins supported.&lt;br /&gt;
- IDs Plugin - just export the IDs of each item.&lt;br /&gt;
- ListUserEmails Plugin - lists the emails of a set of users. Only available to repository staff. This replaces the list_user_emails command.&lt;br /&gt;
- DatabaseSchema Plugin - exports the database schema.&lt;br /&gt;
- Plugin to Export history dataobjects in ical format. Potentially useful for preserving/sharing history in a standard format.&lt;br /&gt;
&lt;br /&gt;
Import&lt;br /&gt;
- XSLT import plugin system&lt;br /&gt;
- Import scripts can now download documents from a URL (mainly aimed at the EP3 XML format).&lt;br /&gt;
- Added import dataset for keeping track of imports.&lt;br /&gt;
- In the web interface, you can import from a file instead of just cut-and-pasting metadata.&lt;br /&gt;
- Also, the Import screen has an import full text option, if web imports are enabled in the config.&lt;br /&gt;
&lt;br /&gt;
Search&lt;br /&gt;
- Search by a sub-object field (eg. search eprints by the format of their documents)&lt;br /&gt;
- Search by a related-object field (eg. search eprints by the name of the depositing user)&lt;br /&gt;
&lt;br /&gt;
Database&lt;br /&gt;
- Abstracted database layer to allow support of other databases.&lt;br /&gt;
- Oracle Support!&lt;br /&gt;
- Writing objects which have not changed is now optimised to not actually write, speeding up some parts of the system.&lt;br /&gt;
- EPrints fields may be marked as volatile. These fields can be modified without causing a change to the last_modified time of the eprint, the revision_id does not increase and no history event is created. These fields are useful for storing values which change frequently, such as citation counts or hit counts imported from an external tool.&lt;br /&gt;
- Messages and login_tickets are now datasets.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Redesigned &amp;quot;Manage Deposits&amp;quot; and &amp;quot;Review&amp;quot; pages.&lt;br /&gt;
- Columns may now be moved left and right.&lt;br /&gt;
- Columns may be deleted.&lt;br /&gt;
- A column may be added for any eprint field.&lt;br /&gt;
- Changes to columns are saved on the user record.&lt;br /&gt;
- Added icons for common actions (edit, deposit, etc.)&lt;br /&gt;
&lt;br /&gt;
Configuration&lt;br /&gt;
- New form based interface for admins to add metadata fields via the web.&lt;br /&gt;
- Admins may view configuration via the web.&lt;br /&gt;
- Admins may modify configuration via the web.&lt;br /&gt;
- Phrases, Citations, Workflows, Templates and static files are automatically re-read if they are altered. This means no more running generate_static every five minutes (although you still need it to ADD files)&lt;br /&gt;
- Buttons to refresh the configuration, the views and the abstracts, via the Admin page.&lt;br /&gt;
- When creating a new repository, a db connection error doesn't abort the process, and you are offered a random password to use for the db account.&lt;br /&gt;
- errors and warnings in executing code from .pl files now show correct line number and filename making debugging less annoying.&lt;br /&gt;
- epadmin erase_data now recreates all tables, rather than drop and recreate the entire database.&lt;br /&gt;
- Added plugin-masking so a local plugin can take the id of an existing plugin even though it has a different Perl class.&lt;br /&gt;
- epadmin has a command to create anything missing in the database. Handy if you want to add a field.&lt;br /&gt;
- Plugins can now be installed in a repository-specific plugins dir, although the perl package names must be unique.&lt;br /&gt;
&lt;br /&gt;
Administration&lt;br /&gt;
- Batch editing: An administrator can perform a search and then set or modify values on all items which match the search.&lt;br /&gt;
- New buttons on the admin screen:&lt;br /&gt;
-- send a test email (to check outgoing email is working).&lt;br /&gt;
-- refresh the abstracts (on request, not right now)&lt;br /&gt;
-- refresh the views (on request, not right now)&lt;br /&gt;
-- reload the all configuration files.&lt;br /&gt;
- Staff can now queue an eprint for re-indexing via a button in the list of EPrint actions.&lt;br /&gt;
- New status screen to show database schema (replacing explain_sql)&lt;br /&gt;
&lt;br /&gt;
Semantic Web/Complex Objects&lt;br /&gt;
- We've assigned URI's to each object in each dataset, and you can get at them using $eprint-&amp;gt;uri, $user-&amp;gt;uri etc.&lt;br /&gt;
- EP3 XML Export now adds the URI to each record.&lt;br /&gt;
- URIs take the format &amp;lt;ARCHIVE_URL&amp;gt;/id/&amp;lt;datasetid&amp;gt;/&amp;lt;objectid&amp;gt; eg. http://foo.eprints.org/id/eprint/23&lt;br /&gt;
- URIs for eprints redirect the abstract page for that eprint.&lt;br /&gt;
- URIs for documents redirect the base URL of that document.&lt;br /&gt;
- Added a &amp;quot;Content&amp;quot; field to documents to describe their relationship to the main record.&lt;br /&gt;
- Added a &amp;quot;Relation&amp;quot; field to documents and eprints. This is a list of URI's and relationship type, and using several eprints records, complex objects can be described.&lt;br /&gt;
&lt;br /&gt;
Indexing&lt;br /&gt;
- Significant improvemnts to the speed items are indexed.&lt;br /&gt;
&lt;br /&gt;
Autocompletion&lt;br /&gt;
- Can now auto-complete on &amp;quot;select&amp;quot; fields.&lt;br /&gt;
- New options for autocompletion to target cells in the row being autocompleted, and to hide &amp;amp; show HTML elements when the auto-completion is triggered.&lt;br /&gt;
- Added some divs to the input forms to act as targets for the autocompletion and other javascript.&lt;br /&gt;
&lt;br /&gt;
Searching&lt;br /&gt;
- Float fields are now searchable (and searches can be mixed with ints)&lt;br /&gt;
- search cgi now understands the &amp;quot;EX&amp;quot; flag for exact matching. Not available via the form interface, but handy for some scripts.&lt;br /&gt;
- Made it possible for search results to show zero matches (so you can create an export).&lt;br /&gt;
&lt;br /&gt;
Improved privilage handling&lt;br /&gt;
&lt;br /&gt;
Templates&lt;br /&gt;
&lt;br /&gt;
Toolbox&lt;br /&gt;
The toolbox is a command line tool allows eprints and documents to be searched, queried and modified. Even adding files to documents. This is potentially very powerful as it allows a way to script reading and writing data without learning Perl. There's also a CGI interface, but it should be carefully secured before use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*******************************************&lt;br /&gt;
- Added the toolbox command line and cgi tools.&lt;br /&gt;
- Support for alternate templates for a view, subject, abstract page and static file. Also screens can tell their processor to use a different template file.&lt;br /&gt;
- specifying privs can now be done at the level of individual privs.&lt;br /&gt;
- Privs/roles can be set on individual users. - allowing hats to be assigned.&lt;br /&gt;
- oai_accesslog script to allow users with a given privilage to get access to access-logs via OAI.- New random data generating script to create any amount of random eprints.&lt;br /&gt;
- abstracts now regenerate if older than a set date.&lt;br /&gt;
- New types of &amp;quot;thumbnail&amp;quot; format can be added - eg. fullsize.&lt;br /&gt;
- Added some new Extra render fields:&lt;br /&gt;
-- renderer for URLs which truncates very long URLs at the end&lt;br /&gt;
-- renderer for URLs which truncates very long URLs in the middle&lt;br /&gt;
-- renderer for the related-urls field to lay out the values more sensibly.&lt;br /&gt;
-- render_possible_doi links to the DOI resolver if the field appears to be a DOI, otherwise doesn't.&lt;br /&gt;
- New EPrints::Extras to add some useful ordering functions.&lt;br /&gt;
-- english_title_orderkey - shifts a/an/the to the end of the sortkey. Also removes any non alphanumerics from the start of the title.&lt;br /&gt;
- added importid to eprints to link them to the related import object.&lt;br /&gt;
- added source_id to eprints to describe the id in the source repository.&lt;br /&gt;
- Lists of checkboxes which are more than 5 items long are now rendered as two columns.&lt;br /&gt;
- Added config option to set ciation style sent out in saved searches.&lt;br /&gt;
- New document icons for zip, tgz, rtf, xml, ppt, video, audio.&lt;br /&gt;
- New &amp;quot;Issues&amp;quot; system and plugins, with a tab on eprints and an issues search.&lt;br /&gt;
-- EPrint Tab&lt;br /&gt;
-- Audit Script&lt;br /&gt;
-- Issues Search&lt;br /&gt;
-- Issues Plugins&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Changes to default configuration. These will not appear in your configuration, but you should consider applying any you like the sound of! See the lib/defaultcfg dir to see the default config files for a new repository.&lt;br /&gt;
&lt;br /&gt;
- added contributor field with a related nameset for type of contributor.&lt;br /&gt;
- new default document formats: zip, tgz, rtf, xml, ppt, bz2, audio and video.&lt;br /&gt;
- added documents.format to eprint search&lt;br /&gt;
- added several more sub-object searches to default cfg.&lt;br /&gt;
- Improved the message at the top of the default homepage to be more friendly and link to a &amp;quot;what next?&amp;quot; page in the wiki.&lt;br /&gt;
- Searches are now configured by default to show zero results (rather than returning to the search form).&lt;br /&gt;
- admin users gain role &amp;quot;edit-config&amp;quot;&lt;br /&gt;
- some eprint fields now use the new Extras for ordering and rendering:&lt;br /&gt;
-- related_urls uses the related urls renderer.&lt;br /&gt;
-- official_url uses the end-truncating URL renderer.&lt;br /&gt;
-- title now uses english_title_orderkey&lt;br /&gt;
-- id_number uses render_possible_doi&lt;br /&gt;
- added document.content to the workflow&lt;br /&gt;
- thesis only defaults to unpublished, not forced to be unpublished.&lt;br /&gt;
- added a default issues.xml file to spot some common issues.&lt;br /&gt;
- removed item_fields and review_fields from the user workflow as these can now be modified more easily from the screens themselves.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
</feed>