
EPrints 2 changelog.

This starts at January 2002 with the changes after the release of
alpha-2 and is in chronological order. The following little symbols
are used for my benefit, but you may want to know what they mean:

 [api] a change to the way a function works or is called which could
        effect 3rd party code.
 [db]  a change to the actual structure of the SQL database tables.
 [c]   a change to the default configuration files, which may need
        to be applied to already installed versions configs too.
 [doc] a change which should be added to the documentation

======================================================================
2002-01-09 - EPRINTS-2-ALPHA-2
======================================================================

10/01/2002
 - Added CHANGELOG!
 - Added BUGLIST 
 - Added BUGGLIST & CHANGELOG to the distribution.
 - Session::send_http_header can now send content-types other
    than text/html. Still does text/html by default.
 - added Session::make_indent( $n ) which makes DOM of a CR +
    $n spaces (for laying out OAI XML returns)

21/01/2002
 - fixed bug in get_index_ids - which failed to get the last item from a list
of free words.
 - Added DataObj as a base class for EPrint,Document,User & Subject. Moved
get_value, set_value, get_session,  get_data, get_dataset, is_set, get_id & 
render_value.
 - Removed old OAI code from ArchiveConfig.pm  and some deadwood functions
from OpenArchives.pm
 - OAI now works. cgi/oai and OpenArchives.pm - uses DOM to generate the
replies. Only one function in ArchiveConfig.pm (make_metadata_oai_dc) 
but more metadata formats mean more functions (which is a bit cleaner).
 - Added experimental vlit support so documents can be retrieved as char-
ranges. This is for Ted Nelson research stuff. See www.xanadu.com for more
info. Currently in Xanadu.pm but'll probably get renamed.
 - removed Deletion.pm once and for all.
 - added use_private_cache and cache_id to SearchExpression cache_id can
set the current cache to save searching. use_private_cache: caches and
does not dispose of the cache after but flags it as unusable by other
searches.
 - added a method to session: render data element which returns an indented
XML element containing some text eg. (4,"key","value") ...
    <key>value</key>
 - fixed bug in search expression ( it didn't do the cache checking in the
right place).
 - fixed bug in the ordervalues table which only showed when the archive had
more than one supported language.
[C] - added make_metadata_oai_dc
[C] - XML config files for citation, ruler and phrases now use namespaces 
so that EPrints tags can be prefixed with "ep:" but XHTML tags remain the 
same. Which should make them clearer.
[C] - Added oai_metadata_functions to ArchiveConfig.pm 
[C] - renamed oai_metadata_formats to oai_metadata_namespaces
[C] - added "enable_vlit_support" config option, so you can disable it!
[C] - Added new options to browse views: noindex, nohtml, include, plain, 
citation
[C] - changed citations to contain SPAN class="citation" rather than do 
it in code. and to contain <ep:a> </ep:a> to show where to put the link.
[C] - added oai_sets config option, same format as browse views. 

23/01/2002
 - generate_apacheconf now (optionally) includes directives to pass .txt and
.uni files through the VLit (Xanadu) handler.
 - added VLit and Latex to startup.pl to force mod_perl to load them at the
start.
 - added support for render_value and render_single_value to MetaField.pm
 - removed some broken and useless old browse views linking code from 
MetaField.pm
 - added 3 new executable paths to the CVS SystemSettings: latex, dvips and
convert, convert is invoked as convert_crop_white as we may wish to invoke it
with other options. The autoinstaller does NOT add these new values.
 - put ' quotes around values in default system settings invocations - should
added to installer too.
 - Utils::tree_to_utf8 now understands to turn an <img> into the contents of
the alt attribute.
 - renamed Xanadu.pm to VLit.pm
 - added Latex.pm which calls latex, dvips & convert to turn a latex string
into a PNG and also a method which renders a string as DOM but replaces
bits which look like latex with <img>s which point to cgi/latex2png 
 - added cgi/latex2png which uses Latex.pm to create an image from a latex 
string and serve it. (uses a cache dir so each one only has to be done once)

25/01/2002

 - corrected the namespace in the XML files for XHTML1.
 - removed DOM.pm - going back to using normal one, not our hacked
one.
 - added a get_archive() method to DataSet.pm
 - MetaField: TYPE_SQL and TYPE_INDEX constants are removed and the
results generated directly from the subs which used them. This allows
different values for each archive (eg. for VARCHAR sizes)
 - MetaField: PROPERTIES is now just a list of properties. A value of
-1 means there is no default.
 - get_property_default returns what PROPERTIES used to contain. Allows
archive specific field property defaults.
 - the input field renderer routines now use the properties:
input_rows input_cols input_name_cols input_id_cols input_add_boxes
input_boxes input_style (and digits) to decide size and height and stuff
 - removed HTMLRenderer
 - booleans now can render as menus, radio buttons OR a checkbox 
 - plain text fields can have textareas as their input field.
 - phrase files now have namespaces for ep:foo like other XML files with
XHTML in.
[C] - [this has been undone again! 30/01/2002] added varchar_size option 
to set how big the SQL fields are.
[C] - added FIELD PROPERTY DEFAULTS SECTION WITH the fields:
input_rows input_cols input_name_cols input_id_cols input_add_boxes
input_boxes digits
[C] - fixed BUG in default field validator - now handles multiple
URL fields.
[C] - displaylines renamed to input_rows


26/01/2002

 - added default_action to the render_input_form method and code to
support it.
 - added button order and default_action to all render_input_form calls
where appropriate.
 - fixed braino in new metafield properites handling. All metafields need
a handle on the archive object, so those without a dataset must now have
an archive set. Added archive values to all calls to MetaField->new
 - added a client() method to Session which returns a code for the client,
currently: GECKO, LYNX, MSIE4, MSIE5, MSIE6 and "?". Used this to test
for lynx in the default action handler and not print the image button if 
it is lynx (as lynx ALWAYS displays it, we want it hidden).

28/01/2002

 - new metafield property: browse_link - which is the id of the browse view
it should link to when rendering.
 - added "generic" citations handling, via DataObj render_description which
replaces User::full_name and EPrints::short_title and Document::render_desc
 - added new param to template title field: textonly="yes" to squash down
the XHTML in the <title> into text only.
 - moved render_citation and render_citation_link from Document, EPrint and
User into DataObj. 
 - added get_url to Document, EPrint and User - (renamed the functions
static_url and url)
 - buildpage now takes a title as DOM not UTF8 (so markup is preserved) -
all calls have been changed.
 - fixed a bug in the user mailer. Sent the DOM ref, not the text
 - fixed a typo in edit_eprint which caused a 500 error
 - added a get_type() method to  Document, EPrint and User, returns the
type (as in which citation to use).
 - removed start_html end_html and end_form from Session.
[C] - split user_render and eprint_render into user_render, eprint_render,
user_render_full, and eprint_render_full. eprint_render_full now looks alot
better and puts the abstract page in a slightly darker box. - best to lose 
old render section and require the new one.
[C] - removed ArchiveConfig.pm : eprint_render_short_title and the sub which
returned a user name or "User 44489" - now down with citations.
[C] - added "generic" citations to citations file: these have no type and
are used to render a short (one-line) description.
user_display_name. Now these are done as generic citations for those objects.
[C] - added  textonly="yes" to the titlehere element in the <title> in the
template.
[C] - changed the ID of the public security setting from "public" to "" 
this WILL cause some problems upgrading but
UPDATE document SET security='' WHERE security='public';
will fix it. It means in the document citations we can do ifset on "security".
[C] - added document citations to the citations file - with advice on how
to view PDF and PS.

 - removed Subject::get_name and render and replaced with render_description
(well the one inherrited from DataObj)
 - fixed a bug in edit_subject : was rendering list of eprints in buffer, not
archive.
[C] - added a subject default citation to citations list.

 - upped OAI pagesize to 100 records (from 10)
 - OAI now correctly flags deleted records.
 - OAI now includes values from the deleted eprints when generating sets.
 - cgi/status now uses the phrase file. 
 - added code to Utils::send_mail and User::mail to allow a reply-to
header, other than the eprints admin.
 - fixed bug in search results page which said next 10 records, even if there
were only 7 left.
 - bounce & delete records from buffer now sets the reply-to field of the
email as the editor who did it.
 - fixed a couple of typos from where I added  _order to button lists.
 - added "quotes" around the names in the Utils::send_mail routine to stop
problems with names containing commas.

29/01/2002
[C] - !!!! split parts of ArchiveConfig.pm into
ArchiveOAIConfig.pm
ArchiveRenderConfig.pm
ArchiveValidateConfig.pm
ArchiveTextIndexingConfig.pm
ArchiveMetadataFieldConfig.pm
 and "require" them all from ArchiveConfig.pm. The resulting effect is exactly
the same. EXCEPT. {oai_foo} conf items are all renamed to {oai}->{foo}
[C] - TO upgrade alpha-2 to use OAI! just remove all oai conf items and 
methods from ArchiveConfig.pm, copy ArchiveOAIConfig.pm into the archives 
/cfg/ dir, and then add to ArchiveConfig.pm:
require "cfg/ArchiveOAIConfig.pm";
$c->{oai} = get_oai_conf();
- Latex.pm now uses MD5 to generate cache filename (so it does not go over
256 char limit)

30/01/2002
[C] - !removed varchar_size again!
[C] - changed the default title from a "text" to a "longtext"
 - removed varchar size setting support - the max size is 255. You want more
use a longtext metafield.
 - improved export_xml so it now does ID and NAME parts correctly. And now does
any dataset.
 - Fixed a bug in generate_static which didn't remove the <title> from around
the title name of an xpage.
 
 - the 404 error page now works (although does not spot urls which may have 
expired, yet).
 - can no longer view dir. index in the CGI directories
 - added a <mail> element which is only used to make tree_to_utf8 word wrap 
emails with no <p> elements: it works like a <p> except that \n\r etc are
not turned into generic whitespace.
 - cache settings on cgi pages are now just:
Cache-Control: must-revalidate
  which seems to be what they should have been all along.
 - added a get_status method to session which returns the HTTP status (usually
200!)
 - Subject->children now sorts by Subject name (not id!)
 - cleaned up the error401 page
 - split the document upload page into 2 parts: files and metadata. Cleaned
 up the phrases in that section.
 - the upload a file page now has a seperate form for the cancel button , so 
 that it does not upload the file if you hit "cancel"
[C] - added validate_document_meta to ArchiveValidateConfig.pm - this checks
just the meta data of a document. 

31/01/2002 
 - fixed bug when you have more than 3 items in a list. The form renderer was
chopping off the rest!
 - added a new doc-type: coverimage, which renders as an image on the abstract
page. It's not a required format, though.
 - renamed <ep:a> to <ep:linkhere> because it was clashing with XHTML's <a> 
and DOM lv 1 does not support namespaces.
 - added reindex method to dataset which re-commits EVERY item. Which will 
recreate index and ordervalue tables.
 - added bin/reindex  which is just a handle on that function.
 - added get_noise to session.pm to give the current noise level in command
line tools.
 - made dataset::map actually do a map rather than do it the stupid way. 
Changed the syntax to be the same as searchexp::map and changed things which 
call it.
 - fixed some bits in Document.pm which still thought public docs were 
"public" not "".
 - fixed something in searchexp::perform which assumed we had an order set
when we might not.
 - order values now correctly sort year and int (int not tested yet!)

01/02/2002
 [C] - ArchiveRenderConfig::id_value now returns XHTML-DOM not UTF-8
 - Fixed "clone" bug.
 - Fixed bug which escaped % when it didn't have to.
 - Fixed bug in ArchiveOAIConfig.pm - didn't know what the perl dir was
for making the Identify response.
 - rewrote the DC renderer to be neater.
 - made --verbose in scripts repeatable. 2 gives the SQL, 3 gives the whole
DBI trace.
 - fixed get_value_label to always return DOM. Fixed things that call it.
 - added Database::prep_like_value which escapes SQL value including "%"
 - if for some reason an attempt is made to cache "NONE" from a search it
 now just returns an empty cache.
 - SQL errors now go to the log not the webpage.
 - fixed 'wget' invocation
 - Added Utils::clone which clones a (non recursive) data structure. There
may be a perlmod which already does this, but what the hell.
 - turned MetaField::display_option into render_option
 - GET forms now do not set multi-part which reduces the annoyance of 
hitting the back button.
[C] - moved system variable phrases into system file from archive file.

02/02/2002
 - now removes un-needed ordervalue rows.
[C] - added username and userid to user search fields.
[C] - added document types: other and cover image to citations file.
 - fixed typo "=" instead of "=>" in edit user. And a utf8 which should
have been DOM.
 - remove_user feature now works, and so does the cgi script which calls
it.
 - added in some missing fieldnames in the phrase file for system fields.
 - fixed the title of the user search page.
 - changed staff user edit to have a different blurb.
 - added oneshot_cache to staff searches (user & eprint) so that
ordering works.
 - undefined phrases now get mentioned in the log.
 - fixed typo in MetaField EPrint:: should have been EPrints::

04/02/2002
 - passwords are now encrypted as they come from the form not as they go
into the DB! subtle but important change. They are also crypted when they
come from bin/create_user. Web based signup always crypts now.
 - icky SQL in cgi/confirm to swap around values from newpassword/newemail to
password/email. 
 - added an "unspecified" option to sets and subjects which are not multiple
or required so you can unselect them again if needed.
 - web based searches now use the cache again.
[C] - moved the eprints to unqualified DC code in OAIConfig to its own
function so that it can also be used to make metadata on abstract pages.
[C] - render_eprint can now optionally return a 3rd values, a list of 
links and metadata which it uses the DC maker in OAIConfig to make DC.foo
meta fields in the page header.
[C] - the suggestions field now renders in its own box to make it clear what
it is.
[C] - input_rows on the month field set to 1 so it becomes a pull-down.
[C] - ruler.xml now uses the entities.dtd file, not that it'll ever matter!
- added "-" to escaped values in LIKE params.
- moved "next" on search page to the right end of the list so it does
not get as confusing when you goto page 2.

05/02/2002
[C] - trimed out "dc" from OAIConfig.pm again, probably not going to
have time to add it before v2.0
[C] - OAI: Added "format" items to unqualified DC which give format &
URL of that doc.
[C] - cleaned up static pages to be "nice" for version 2.0 - added in
"powered by" images for things like apache & XHTML.
- import_eprints now needs to know which dataset - so you can export from
one and import into another.
- fixed bugs in export_xml multilang bit.
- top level tag of exported xml is now <eprintsdata> and does NOT have 
a dataset id.
- new Session method: render_link which creates an anchor: <a href="foo">
it also uri_escapes the href. All places which did do make_element("a",...
now use this instead.
- ImportXML now also needs to know which dataset to import to.
- everywhere theres a 'chdir' it now chdir's back to the origional dir
again.
- cleanded up subjects "depositable" field - now uses nice radio buttons.
- removed uses of the word "paper(s)" to keep the text more generic.
- cleaned up 2 errors in the CSS
- renamed setlang to set_lang and internationalised it.

[c] - removed "nowrapper" opt from views conf: now does no <p> wrapper round
citations if using custom citation.
- VLit stuff now uses charrange rather than byterange and requires "xuversion"
to be set.

06/02/2002
[c] - tweaked the OAI renderer to handle bad months!
[c] - commended out the "lang" field in metadata-types: {users} as it's
only needed for multilingual archives.
- VLit now runs over all of the "document" area but not secure docs or the 
front page.
- VLit now returns 401 or 501 where appropriate.
[c] - table on the default frontpage is no longer 100%: looked bad in IE.
- SearchField definitions now use 3 values rather than the icky
PHR:EQ:fred format. Still serialise OK. Also ANY/ALL/PHR is not needed if 
match mode is not "IN" and if match mode is not specified it defaults to
"EQ" - which is usually used internally.

[c]- fixed typo in citations file.
- fixed bug in "area" code of VLit
- removed sub render_struct - use Data::Dumper, dammit.

07/02/2002
[c] - removed defaults for "os" and "security" as these are no longer
meaningful. Defaults are now ""
[c] - changed template to use <pin> rather than <pagehere>, <titlehere> etc.
- Language now logs which lang a missing phrase was in (not in!)
- added change_email feature to user area.
- $user->mail() can now send email to a different address to the one given
(for email change).
- VLit now has an xml-entity mode
- added "latest" cgi script which lists the last weeks additions.

- CGI param mainonly now supresses the template and just serves the body.

11/02/2002
[c] - Rewrote warn and error thresholds to be 1024*foo to make a easier to work
out in megs. makes no functional difference.
[c] - cleaned up the refereed field and removed the Latex stuff from the default
configuration.
[c] - validation routines now check names have a family & a given part.
[c] - removed some unused citations.
[c] - commented out editorsubjects - not needed until we start using them.
- stopped mentioning editorsubjects on the "buffer" page, until they are used.
- now uses 'df' properly to decide which dir to use. Also cleaned up error log
message and emails caused by low disk space.
- DataSet totally ignored system fields required setting now a field is 
required if it is required in the system field conf function OR the metadata-
types.xml file.
- mainonly param was causing a warning, now checks it's defined first.
- buffer page items are now sorted by datestamp (newest first)
- made a note in the h2ph warning that you should be root when running it.

12/02/2002
[c] - Changed vlit config options. Now you can configure where the URL goes.
- added "context" mode to vlit which highlights around the quote. 
- vlit human mode now uses CSS.

[c] - Changed 'require' to 'do' in ArchiveConfig.pm because otherwise PERL
remembers it's seen that filename before and does not load it!
- Fixed the "MultiLang fields getting corrupted" bug.
- Added two new field properties - search_cols and search_rows for controling
look of search fields.
[c] - added defaults for search_cols and search_rows in ArchiveConfig.pm
[c] - Changed validation code for fields: now checks emails too.
[c] - Commented out uncommon languages from langauges.xml
- DataObj::get_value now returns at [] for empty multiple fields to save
on pointless undef checking.
- Fixed bug that booleans shown as menu/radio always came back TRUE.
- added Vlit copyright page.
- added user help page.
- configure_archive now lets archive hostnames have "-" in!

13/02/2002
- VLit No longer checks for text mimetype.
- Removed "generate_dtd" - it now regenerates the DTD each time it 
 loads the archive configuration. One less annoyance!

14/02/2002
- Added my own url_escape routine which makes a URL then tostrings it.
Due to change in functionality of uri_escape in URI 1.18
- All URL's now escape using EPrints::Utils::url_escape 
- cleaned up the default front page to look nicer under Netscape 4
- made the vlit icon on the about page point to the vlit permission page.
- tidied up vlit permission page.
- removed <p> tag around URL's in emails - don't want them word wrapped!

======================================================================
2002-02-14 - EPRINTS-2.0
======================================================================


03/03/2002
[c]- Fixed typo in citations "years" instead of "year"
- 404 page now spots /view/ and suggests you need to run generate_views
- "latest" cgi script no longer uses cached results.
- get_value on a non existant field now gives a clear error rather than
  a perl !defined error. (calls abort)
- importXML - treated whitespace inbetween <lang> tags as a lang'less 
  version of the value. Now ignores it. Still does that with non-white
  space.
- added get_top_subject to metafield - which returns the top subject for
  that field, or a helpful error if there isn't one. Used it where 
  possible in code: generate_views, SearchField.
- Fixed bugs in mailer with latin-1 text in MIME and body of mail.
- Fixed mistake in /help/ which refers to lemur1 rather than the current
  archive.

03/04/2002
[c] - All occurancies of
(defined $foo->get_value( "bar" )) have become ($foo->is_set( "bar" ))
in default configuration. Easier to understand and avoids a few bugs.
- abort() now gives an HTML page as well as logging, if we are running
in a CGI script (under mod_perl).
- configure_archive now defaults the MySQL user to $archiveid rather
than "eprints" which stops the problem of changing the MySQL User:
"eprints"'s password on ALL archives.
[c] - default template: now <title> contains the name of the archive
"sitename - pagetitle"
[c] - some rewrites to ArchiveFreeTextIndexingConfig - most importantly
now treats chars< #32 (eg RETURN and NEWLINE) as breaking characters.
*** Users should replace old ArchiveFreeTextIndexingConfig with new one
unless they have good reason not to.
- Changed the email change to tell you what your email just got changed
to.
- lack of "deposit" priv was not hiding the deposit option on the user
page (now it does).
- ImportXML now has an error context of 5 lines to aid debugging.
- Main phrases file now rephrased to be "go to homepage" rather than
"return to homepage" to make context more simple. Also "author page" or
"admin page", "staff area" and "your deposit items page"  renamed to
"user homepage".

16/04/2002
[c] - Abstract h2 was not added to render_eprint page. Now is.
- added $session->terminate() to generate_abstracts
- generate_apacheconf configuration now refers to apache configuration
rather than apache.conf (which was wrong)
- OAI: got rid of OAI_VERSION constant - now just hardwired.
- edit_eprint now does function of view_submission & edit_submission too and
can edit eprints in ANY dataset. Also now has a clone function.
- edit buffer page now links to edit_eprint
- staff eprint search now searches all datasets 
- SearchExpression can now have extra fields which don't get passed into
the actual search. Just rendered as part of the form. These are indicated
by ! before the name.
- SubmissionForm now maintains dataset as well as eprintid.
- added some debugging code to trace objects. This won't normally be
used. Mostly DESTORY subs, and hooks on bless.
- Changed Session, Archive & Auth to no longer use "port" when calculating
which archive config to use.
- editors can now succeed other peoples eprints.
- deletion records now auto fill in the suceeds fill when cloned (like
archive records always did)
- EPrint->remove_static now works properly. Actually removes the abstract.
- added DataObj->get_values to return a list of all the values of a given
metadata field - needed by OAI2 to list SetSpec's of an article.
- added oai2 protocol talkin' script /cgi/oai2 and modified some bits of
OpenArchives.pm to handle oai2 (in addition to oai1 which still works fine)
- replaced subject file with lib of Congress.

======================================================================
2002-04-16 - EPRINTS-2.0.1
======================================================================

2002-05-20
- [config] changed "Contact site admin" text at bottom of page template
to look less like an order (people thought it indicated an error)
- added --silent as a synonym for --quiet - part of GNU regs.
- added --version option to all command line options to print command
name, EPrints release version and license.
- fixed bug in cgi/oai - from and until were ignored!
- added an option to SystemSettings; disable_df. This makes cgi/status 
and the create EPrints subroutine skip looking at disk-free.
- metafield now returns the text of a text field as its value label. It 
returned an error before!
- added EPrints::Utils::cmd_version($progname) to automate generation of
   --version outputs.
- changed syntax of image quoting locspecs in VLit module.

2002-05-22
- [config] some test stuff added to default config. Should be removed
before next release. (metadata types & fields) 
- removed a number of doubled-up => symbols in scripts.
- POD doc'd DataObj
- Added 'search' metafield type. Does not work fully yet.
- in search expression, split the part which renders the actual search
   fields from the search page renderer. This allows it to be called
   by the search field type input form renderer.

2002-05-23
- Added pod templates for comments to all subroutines!
- Added pod docs to Archive.pm Auth.pm Config.pm Dataset.pm
- "search" metadata fields now work - rendering form and from the form.
- removed {datasetname} from DataSet - replaced it with {id}
- also in DataSet renamed {typeorder} to {type_order} and {stafftypes} to
   {staff_types}
- added an optional prefix to searchexpression cgi field ids, so that more
   than one can appear in a single form.
- changed $searchfield->get_form_name to ->get_id which returns an id for
   that searchfield in the expression (without the CGI prefix)
- added is_blank method to searchexpression and searchfield which returns
   true if there is no conditions for searchexp or for searchfield if it
   does not have a condition.
- added from_string method to searchexp which unserialises the string and
   applies the "safe" parts. Does not add any new searchfields or change
   the dataset.
- added pod docs to Database.pm

2002-05-29
- Added xhtml-entities.dtd to system cfg dir - contains all XHTML entites
   such as &nbsp; - these are now included in the archive dtd files which 
   means that &nbsp; &euro; etc. now work in phrase files, the template 
   and the static pages but NOT the citations.
- staff eprint edit now updates the eprints static page if needed.
- added "layout" option to views configuration. Allows <p>, <ul> or <ol> 
   style lists. A custom citation no longer automatically turns off the 
   <p> wrapper.
- [api] changed syntax of EPrints::Eprint->new so that the optional param 
   "dataset" is now the last option. This means that it can be called
   exactly like any other EPrints::DataObj->new (which is neater). Updated
   all uses of this call in the code.
- [conf] changed call to EPrints::EPrint->new in the commenarty bit of
   ArchiveRenderConfig
- [api] EPrints::EPrint::create() - removed the "userid" parameter which
   must now be set seperately. Updated all the code to reflect this change.
- Removed $EPrints::EPrint::id_code_digits and hardwired it to "8" as I've
   got no intentions of changing it and other parts of the code already 
   assume 8. 
- Added POD documentation to Document.pm , EPrint.pm , ImportXML.pm and
   RequestWrapper.pm
- Removed DIGITS from Document and hardwired occurances to 2.
- Added render_xhtml_field to Utils.pm - this acts as a special field 
   renderer like the one in Latex.pm (but renders as XML).

2002-05-29
- Added POD Documentation for Language.pm, Latex.pm, MetaField.pm

2002-06-13
- Added "pagehook" feature to allow certain pages to have extra body attibutes
   and "stuff" in the top of the head and body elements. For javascript. Mostly
   for Steve Harris in AKT.
- Added "pageid"'s to all the submission form pages.
- [c] Added examples of pagehooks to config.
- added an "export_as_xml" attribute to fields which defaults to true but if
   false then the field is not exported in an XML dump - now used by subject
   to supress dumping ancestors.
- fixed bug in abort() which attempted to report to the apache request while
   under modperl even at startup (so no request -> error ).

2002-06-24
- [db] Added subscriptions! including a send_subscriptions bin script, a cgi 
   page to edit them (subscribe) and added the link to the user home page. 
- added a new bin script: "upgrade" which upgrades the database tables to the
   latest version. (sorts out the subscription tables for 2.0->2.1)
- [db] added a new db id counter - subscriptionid
- turned _create_table in Database.pm into create_dataset_tables so that
   upgrade could use it.
- fixed a bug in the sql escaping code - escaped '.' when it didn't have to.
- added a whole bunch of $sth->finish commands to clean up more after db
   functions to hopefully reduce memory leaks.
- added "version" concept to the database tables to reflect what version of
   eprints they are suitable for the automatic "upgrade" script. Database.pm 
   gained: create_version_table, set_version, has_table, get_tables, 
   get_version, is_latest_version. 
- session now uses "is_latest_version" to check the DB is ok and reports a
   different warning if the "archive" tables exists. (wrong version vs. no
   tables.)
- SearchExpressions can now be rendered into a screenable description using
   ->render_description - SearchField also gained a render_description which
   is called by the SearchExpression method.
- MetaField gained "make_searchexp" which is only legal on search type fields
   and returns the searchexp described by the given value.
- Fixed a typo in the message about not having a top-level-subject.
- Added a hack to SearchExpression which gets the fields for a search-type
   field from the subscription_fields conf setting if the property is set to
   "subscriptionfields" rather than an array.
- SearchExp again; made render_order_menu a seperate function so that it can
   be used when rendering a inlined searchexp (eg. for a search-type-field)
- SearchExp and SearchField no longer return the bad words from a search. This
   is now handled by putting the searchexp description at the top of the 
   search results page as part of the "blurb" which now lays out the data
   about the search (so you can change the order, eg. Timing info first, or
   even not at all)
- added set_property to SearchExpression so that you can change properties
   of an existing searchexpression. Useful to set use_oneshot_cache on a 
   searchexp created from de-serialising.
- Now oai 2.0 Compliant.
- [conf] Added an oai2 oai_dc XML render function to ArchiveOAIConfig.pm AND
   added oai2 config section for keeping namespaces etc seperate.

2002-06-27
- Loosened regexp for passwords in configure_archive (now allows upper case 
   too)
- [c] Added new SystemSettings option: "virtualhost" which is now used by
   generate_apacheconf as the NameVirtualHost value (or "*" if it's not set)
- Added page id's to each build_page so that stuff can be hooked onto them.
- generate_views now orders the index page (using results from get_values)
   unless it's a view of multiple combined fields in which case it does not.
- bin/upgrade turns the "commentary", "replacedby" and "succeeds" in the
   tables "archive","deletion","inbox" and "buffer" from VARCHAR to
   INTEGER. These fields should have been INT's in the first place. This
   is done as root. bin/upgrade now makes a root dbh connection if needed.
   The origional values of the fields are dumped to /tmp first in case of 
   disaster.
- [c] Added new metafield configs: make_value_orderkey and 
   make_single_value_orderkey which can be used to override the normal orderkey
   generation - eg. could turn field with format "4.9d" into key
   "00000004.00000009d" that will sort alphabetically correctly.
- Now correctly generates orderkeys for subjects sets and datatype's fields.
- year orderkeys now pad 6 not 4 (just in case)
- removed code which always put <a name="t"></a> at the top of pages when
   an "internal" button was pushed. This broke the whole idea of the #t jump
   to where you were before.
- added new config option (submission_stages) which lets the admin override the
   default order of the submission form stages.

2002-06-28
- Added new config options:
    submission_hide_howmanyfiles
    submission_hide_upload_archive
    submission_hide_upload_graburl
    submission_hide_upload_plain
   to allow the admin to supress various parts of the submission file upload
   form.

2002-07-01
 - Fixed bug in render_ruler : it failed to take ownership of the
    new fuler.
 - Added more details into "information" page in default config. And a
    GNU linking to gnu.org.

2002-07-03
 - Fixed typo in MetaField.pm - had "searchfield" not "search" which
    meant search fields were ending up as VARCHAR not TEXT.
 - Missing subject titles now display as [Subjectid=footle]
 - Fixed some typos in installer
 - generate_views now treats a SystemSettings->virtualhost of "" as
    undefined.
 - Subjects now sort into correct order(yay!)
 - Bug in scoping for DF_AVAILABLE in Utils.pm - fixed.

======================================================================
04/07/2002 - EPRINTS-2.1
======================================================================

2002-07-04
 - Fixed bug in OAI 2.0 (Still using OAI 1.1 namespace in one place)
 - [c] Changed ArchiveOAIConfig.pm so that now archiveid, sample
    identifier and base_url are now all seperately configured for 
    OAI 2.0 (and changed cgi/oai2 and OpenArchives.pm to honour this)

======================================================================
04/07/2002 - EPRINTS 2.1.1
======================================================================

2002-07-07
 - Fixed ANOTHER minor issue in OAI2 code. At the end of a List there
    should have been (and now is) an empty resumptionToken.
 - New method added to MetaField: list_values. This takes flattens out
    multilang, multiple and non-multiple fields so that a list of 
    values of that field is returned. 
 - To avoid an error in oai, if datestamp is not set, datestamp now
    defaults to 0001-01-01.
 - SearchExpresion->dispose now does not try and dispose an undefined
    tmptable.
 - new method in SearchExpression: item_matches. This takes an item of
    the type appropriate for the search and returns true if the search
    expression matches on that item. Also a item_matches method on 
    SearchField used by the one in SearchExpression.
 - [c] removed all the darn GIF's. Set a CSS "style" on the 1x1 image 
    in searchforms to "display: none". Also it now links to a PNG 
    instead. Also updated the "information" page a bit more. Removed 
    GIF's from default homepage too.
 - new function is Utils.pm: is_in which takes searches in a list for
    items in a second list. Two modes: success if one found or success
    if all found.

2002-07-08
 - Added PNGs to replace GIFs for logos in the static/image directory.
 - [c] Made stylesheet link in the default template link to the full URL 
    rather than relative link. Eeep. That's not going to work - it'll
    give an error. Dammit.
 - [c] Added 2 new archive config settings: securehost and securepath for
    running https.
 - generate_apacheconf now generates all the apache confs (does not take
    an archive id, anymore). Also now generates extra auto file to be
    Include'd into a sercure virtualhost config. Played around with the
    config file which gets generated to make it work both secure & not.
 - tweak to /perl/users/home to make change_user work on secure setting.
 - made the Auth.pm module accept /00/00/00/00/00/ format document paths
    for authentications in addition to /0000000/00/. (needed for https
    mode).

2002-08-08 [cjg]
 - [c] Increased default results page size to 100 from 10.
 - [c] Increased default width of abstract input to 90 cols.
 - [c] Increased default number of author input fields to 6.
 - [c] Some tweaks to default citations.
 - [c] Made "publication" field optional in all types.
 - [c] Added a new config file to archives - apachevhost.conf - which is 
    included into the configuration inside the virutalhost definition.
 - Modified apacheconf rewrite rules so that a trailing "/" is not required
    to get record abstract pages.
 - Modified generate_views so that files for values which contain " " or "/"
    have "_" in their stead.
 - [db] Added new system fields to the database. DB version is now 2.2. 
    bin/upgrade will make the changes. Changes are:
      * in dataset "subscription"
         - add a new boolean field "mailempty"
      * in dataset "user"
         - remove the field "editorsubjects"
         - add the following fields:
            + editperms (search) 
            + mailempty (boolean) 
            + frequency (set) 
 - [c] New configuration option "catch404" which may be undefined, but may
    be a reference to a subroutine which takes ($session, $url) and returns
    either a new URL to redirect to or undef if it's really a 404. This is
    to handle migration from eprints 1 or other systems.
 - [c] New "priv" for users: "no_edit_own_record" which actually removes the
    edit my record option from the user page (for DB's where the users are
    imported not web-registered.)
 - Edit subscriptions page now includes extra option to indicate if a user
    wants a mail when there are zero matches.
 - Changed the layout of the subscriptions summary page to be a bit clearer.
 - Added a check in get_conf to prevent null reference errors in the case
    of an optional hash table. Eg $c->{a} = { c=>4, b=>5 } OR $c->{a} = undef;
    and someone requests $archive->get_conf( "a", "c" ) - will return "4" in
    1st case and undef in the 2nd.
 - [c] Added new metadata parameter "can_clone" which defaults to 1. If set 
    to 0 then the field is not cloned when the record containing it is cloned.
 - added a test to prevent a warning when unserialising an undefined value as
    a search expression (and treat it like an empty string).
 - fixed bug in SubmissionForm. Now only lists the required formats, and asks
    for at least one if there is at least one required format.
 - added some checks to render_name in Utils.pm to avoid warnings in the 
    case of undefined values.
 - fixed render_citation so that it should now not crash on nested <isset> 
    elements.

2002-08-20 cjg
 - [c] some mess ups to the default views (need to fix before release)
 - new method: EPrints::DataSet::get_sql_dataset_ids which returns an array
    of all the datasets which map directly into sets of SQL tables. This is
    used by create tables to get the list.
 - Added check to bin/create_tables to check if there are more than 32 fields
    requiring SQL Indexes in the main table.
 - Added a --force option to bin/create_tables to override warnings.
 - Added option to bin/generate_abstract to generate a single abstract. 
 - Added PerlFreshRestart to apache conf from generate_apacheconf to make 
    apache reload the perlmodules and eprints config on apache reload.
 - "options" to timestamp subject views and to only show subjects which have
    1 or more things in them. Although they are not yet options, they soon will
    be.
 - added new system metadata field to document: "hash" which contains the MD5
    of the files in the document. bin/upgrade will now add it to v2.1 
    databases.
 - [c] added default values for searches. New config options 
    advanced_search_defaults & simple_search_defaults which are references
    to hashes. Does not handle things like "ANY/ALL" just the text.
 - Tidied up bin/status to look nicer and also have report on subscriptions
    how many of each frequency and when the last mailing for that frequency
    was.
 - Archive config now remebers when it was last changed and if 
    /archvies/FOO/cfg/.changed has changed since then it reloads the archive.
 - Now does "do" rather than "require" on ArchiveConfig.pm so that it can be
    repeated to reload the module.
 - Some code in Config.pm tries to change UID to "eprints" (or whatever) if 
    running as root. But it does not work properly as the code gets "tainted".
 - Added a much clearer warning when errors in the config modules are 
    encountered.
 - Added count_indexes to DataSet which returns how many SQL indexes are
    required for the main table of that dataset.
 - Added rehash function to Document, which recalculates the hash of the
    files in the document (the will later be overridable with a config 
    opion). All functions which add or remove files to the document now
    call rehash.
 - [c] Added new metadata field property (sql_index). Which defaults to
    true but if set to zero will supress the field having an SQL index.
 - Fixed bugs in OpenArchives code which used OAI v1.1 id for part of OAI2.0
 - Fixed display bug: Buttons are now rendered in their own little <div>.
 - Cleaned up submission form for the case where there are NO required formats.
 - Subscriptions now obey "MailEmpty"? or not field.
 - Fixed bug in subscriptions which made them mail out multiple times.
 - Sucessful sending of subscriptions for a frequency cause a file called
    /opt/eprints2/archive/FOO/cfg/subscription-FREQUENCY.timestamp the
    timestamp of which is used in the archive "status" page.
 - Added $subscription->get_last_timestamp($session,$frequency) which gives
    a neat interface to that value.
 - Fixed a view in User.pm where the URL for a given user was wrong (eprint 1
    URL)
 - Added code which won't get documented just yet to citation renderer which 
    processes @year@ in an ATTRIBUTE of a citation like it would &year; eg.
    <a href="http://www.google.com/search?v=@year@+papers+from">&year;</a>
 - Added Utils::get_timestamp which returns a neat time stamp string, similar
    to that from UNIX date command.


2002-08-28 cjg
 - Fixed a bug in oai2 which meant it occasionally used the wrong session in
    munge_date.

2002-09-11 cjg
 - [api] Added EPrints::XML to handle abstraction of XML::DOM/XML::GDOME
 - Added new option is SystemSettings to allow users to turn on gdome support.
 - [c] Changed use XML::DOM to EPrints::XML in ArchiveConfig.pm
 - [c] removed SYSTEM "entities-en.dtd" from the DOCTYPE of ruler.xml
 - Improved much of the DOM code to be faster and more stable, using new
    functions in EPrints::XML where appropriate. Specifically in phrase 
    pin insertion, page pin insertion and citation rendering.
 - [api] MetaField objects no longer know what dataset they belong to. 
 - [api] removed $metafield->get_dataset() and $metafield->set_dataset()
 - [api] $metafield->get_values( $session ) is now 
     $metafield->get_values( $session, $dataset )
 - [api] $archive->parse_xml( $filename, %config ) is now 
     $archive->parse_xml( $filename, $no_expand ) as %config was XML::DOM
     specific.
 - [api] EPrints::Config::parse_xml() removed. Use EPrints::XML functions 
     instead.
 - DataSet now caches configurations so that it can share the same configur-
     ation between inbox,buffer,archive,deletion and eprint which saves a 
     chunk of RAM.
 - DataSet now keeps track of which fields are required for a type, rather 
     than cloning MetaFields and setting their required property. 
 - [api] To find out if a metafield is required within a specific type of
     eprint there is a new DataSet method
     $boolean = $ds->field_required_in_type( $field, $type )
     the field property now just indicates if it is globally required.
 - [api] The Database method  $db->get_values( $field ) is now 
     $db->get_values( $field, $dataset ) 
 - [api] $field->render_input_field now additionally takes optional parameters
     of $dataset, $type which if defined will be used to see if the field is
     required for the specified type when rendering it.
 - $session now keeps a handle on a document {doc} in addition to the current
     page {page} which must be owned by {doc}. 
 - [api] $session->new_page() is removed (and no longer required)
 - [api] two new options for $session->render_input_form: field & type which
     if set will be passed to render_input_field (see above).
 - [api] $session->take_ownership removed. Use clone_for_me instead.
 - [api] New method for $session: $session->clone_and_own( $node, $deep )
     which clones the specified node, but owned by the sessions own document
     (and thus can be part of the output page). If $deep is 0 then only the
     node is cloned and not it's children too.
 - [api] Please use EPrints::XML::to_string( $node ) rather than 
     $node->toString as in GDOME this does not work properly on 
     DocumentFragments

2002-09-20 cjg
 - Added EPrints::Utils::make_name_string to return a utf-8 string from a 
    name structure. Replaced render_name with it in some places.
 - [conf] Added editperms and related fields to metadata-types.xml
 - generate_views can now do "name" fields. Name fields are "browse-able"
 - [doc] notimestamp & hideempty are new paramaters to views.
 - Editor alerts: mailed out at same time as subscription to tell what
    editors have in the "buffer".
 - Subject editors: editors may now be properly limited to a search set.
 - phrases generation now is more careful about garbage collection. Esp.
    unused pin values.
 - [api] render_input_field has new optional param: $staff which is used
    to render id fields with the id_editors_only condtional. Also in
    render_input_form to pass through.
 - SubmissionForm and UserForm tell render_input_form if they are in 
    staff mode.
 - [doc] New metadata fields:
    - id_editors_only for has_id fields to show the "id" input bit to
       editors only or everyone?
    - allow_set_order for search fields to show the "order" selector?
 - fixed bug in OpenArchives that only looked for oai 1 identifiers in
    from_oai_identifier.
 - [api] Removed set_value from SearchField (not used)
 - Changed the phrase for mailing subscriptions to be one big phrase so
    layout change is possible.
 - added to User.pm: $thing->send_out_editor_alert and 
    EPrints::User::process_editor_alerts( $session, $frequency );
 - changed email encoding for latin from iso-latin-1 to iso-8859-1
    probably make no difference.
 - EPrints::XML::dom can now take a list of types, not just one.
 - Improved EPrints::XML::to_string to make <br/> into <br />


2002-10-08 cjg
 - [c] Fixed ArchiveConfig.pm so that a user can always view a document
     they deposited even if it's secure.
 - Added regexp to make_text to remove all characters < ord(32) except
    0x09, 0x0a and 0x0d. They're not legal in XML!
 - Modified the selection field renderer so that if the specified height
    is 2 or more, the actual height will always be at least 2. (so it does
    not become a pull-down).
 - Fixed a bug in SubmissionForm so that "cancel" on the "eprinttype" page
    does not store any change in type.
 - Added a "submit later" button to Deposit Page.
 - Changed the submission form "thanks" page to mention that it is awaiting
    approval by an editor.
 - Fixed an error in "lib/userform:blurb" phrase which linked to set_email 
    rather than change_email. 
 - Added google_site which appends "site:whatever.com" to a search param
    and redirects that search to google.

2002-10-09 cjg
 - [c] Added skip_buffer config option which makes articles go from the
    work area directly to the archive.
 - [c] Default abstract page now lists eprint type.
 - [c] Default render_user_full now lists subscriptions too.
 - fixed typo in cgi/confirm s/timepout/timeout/
 - fixed bug in MD5 hash code and added hook to use different hash if
    required.
 - [c] override default hash method. 
 - added <ep:ifmatch> and <ep:ifnotmatch> to citations. These implement
    conditionals using some of the eprints search semantics.
 - new script - export_hashes - which dumps all the hash values of documents
    in an archive.

2002-10-23
 - changed editperms in User.pm to be a multiple field, and made changes where
    this is used. Each search is "OR" not "AND". Changed "upgrade" to add the
    table (rather than just a field).
 - eprints no longer have a "hash" value after all. It's just stored in the
    XML files.
 - Fixed OAI2 bug which meant it did not complain when identifiers did not 
    match the oai regexp. Should now, finally, be 100% compliant.
 - Some improvements to the archive loader, should hopefully express more
    errors in the perl config modules.
 - the from_buffer method in Database now takes offset, count and justids
    params as used elsewhere.
 - Added Probity.pm which hashes files and outputs in the probity XML format.
 - Document rehash() now uses Probity.pm everytime any document modifying 
    method is called.
 - export_hashes now works with the XML probity format. (.xsh)
 - Added phrases for seperators in multiple value rendering (eg. the " and "
    in name lists. Searches are seperated by " <strong>OR<strong> "
 - added "boolean" to the is_browsable list. It acts like a 2 value set.
 - SearchExpressions now always call from_buffer with the offset, count and
    justids, if set.
 - Fixed icky error in SearchField::item_matches which halted if a subject
    no longer exists for some reason. Now logs an warning and muddles on.
 - Added a get_UTC_timestamp to Utils
 - Fixed the VLit non-port-80 bug. Added some new functionality, including
    a "scale" factor, and a "fax" detector.

2002-10-24 cjg
 - Fixed a bug in subjects multiple render join. Subject "join" is now <br/>
 - Renamed use_gdome to be enable_gdome for configure-like goodness.
 - <securehost> and <securepath> are now optional (in archive.xml)
 - Fixed a bug in the 2.1->2.2 SQL in bin/upgrade 

2002-10-28 cjg
 - No edit rules now means an editor can edit anything not nothing
 - new method "make_comment" in EPrints::Session
 - Fixed VLit & configure_archive to use whichever XML library is prefered.
 - more work on the tools/update_phrase_file utility to aid translation. Still
    not finished.

2002-10-29 cjg
 - Cleaned up ArchiveConfig.pm (views etc)
 - Citations may now use @title@ instead of &title; although this is optional
 - Changed default citation file to use @title@ format
 - Removed some junk from metadata-types.xml (junk comment)
 - Improved text about restarting apache in configure_archive
 - Added a --all option to export_hashes
 - Fixed bug in UTC timestamp function (now uses gmtime, like it was supposed 
    to)
 - Added parse_xml_string to EPrints::XML to do the obvious
 - Added Paracite module and cgi script to render reference links. Added 
    Citation/Parser to bundled libraries. Added a "seek" image for links
    to paracite.

2002-10-29 cjg
 - export_xml was using XML::DOM (now uses EPrints::XML)

2002-10-29 cjg
 - staff eprint search now defaults to showing "archive" as the selected
    dataset
 - phrases no longer log unused parameters (but still log missing ones)
 - "extra" search fields can now have defaults
 - corrected some spelling
 - changed links on default pages to go to software.eprints.org and
    call the software GNU EPrints not eprints.org software.

2002-10-30 cjg
 - [c] Cleaned up the default config files. Added examples of all the 
    new options.
 - Fixed some issues with documents which have been orphened (have no
    eprints)

======================================================================
31/10/2002 - EPRINTS-2.2
======================================================================

2002-11-14 cjg
 - [c] fixed a missing ";" in the commented-out catch404 example in
    ArchiveConfig.pm
 - Fixed bug with export_xml (the vital "print" was missing)
 - added a missing $searchexp->dispose() to generate_views
 - generate_views now uses new sub: EPrints::Utils::escape_filename
    to escape the non-filesystem characters.
 - commented out illegal   $delfield->set_dataset( $ds_del ); in 
    oai & oai2
 - fixed bug in oai2 which returned only eprints IN a subject, and not
    those in subjects under it.
 - fixed view_eprint to work (never worked since ep2.0). Still a
    bit shoddy.
 - is_browsable also now uses EPrints::Utils::escape_filename to link.
 - fixed bug in "search defaults" which meant that a boolean setting
    of no-preference failed to over-ride the default!
 - removed render_subject_desc from Session. It's never used.
 - fixed bug in searchexp unserialise, which did not set fields in
    the target exp to null if they were not mentioned in the serial-
    ised version. This caused defaults to appear again when you 
    select "refine search".
 - fixed bug in EPrints::XML which used toStringEnc even if we were
    using XML::DOM (and broke configure_archive)

======================================================================
14/11/2002 - EPRINTS-2.2.1
======================================================================

2003-02-06 cjg
 - [c] Added submission_long_types config option and made the default
    true.
 - [doc] New config options allow_user_checkout_eprint and
    submission_long_types.
 - [c] Changed default pin timeout number from 3 hours to a week!
*- [c] Messed around with the citations file. Will need to be cleaned
    up before next release.
*- [c] Messed around with the metadata-types file. Will need cleanup.
 - Changed latex2png so that it no longer spawns a cat command using
    backticks, but does it all in Perl instead.
 - [api] Changed occurances of $user->get_eprints to be 
    $user->get_owned_eprints in "user_eprints" & "home" so that 
    eprints related, but not directly submitted by someone appear
    as theres too.
 - Started work on "checkout" option to allow people to remove their
    items from the archive and edit them. Not 100% sure of the 
    interface & rules yet.
 - [doc] New config option "submission_stage_last_for_staff_edit" 
    which indicates if the last page of the submission format is
    different to normal (files) so that people swapping the order
    of fields won't break the staff edit mode.
*- [doc] Added support for "paged" input of metadata, indicated by a
    <page /> tag in metadata-types. Still needs to be made to look
    nicer.
 - [doc] When getting fields from citations or $obj->get_value, 
    qualifiers such as .id or .res=D are now allowed.
 - [doc] Added support for data resolutions. min_resolution and
    max_resolution. min_resolution is the resolution Y/M/D which
    must be entered. max_resolution is the resolution which 
    is returned from get_value(s) etc. (This can be set "on the
    fly" with submission.res=Y style qualifiers.
 - Date search improved to handle YYYY-YYYY, YYYY-MM-, -YYYY-MM-DD
    etc. not just (YYYY-MM-DD)?|(-(YYYY-MM-DD)?)? but
    (YYYY(-MM(-DD)?)?)?|(-(YYYY(-MM(-DD)?)?)?)? (sheesh)
 - added page_order, staff_pages and pages instance variables to
    dataset.
 - [doc] Added new input_style for sets and datatype fields: "long"
    which renders them as a <dl> list with radio buttons.
 - Fixed a '\n' to be "\n" instead in an error in Archive.pm
 - New function: @fields = $ds->get_page_fields( $type, $page, 
    $staff )
 - New function: @pages = $ds->get_type_pages( $type );
 - [db] Database now stores date 2000 as 2000-00-00 (which is the
    mysql way. This is not super portable, but hey.
 - New function:  EPrints::Database::trim_date( $mysql_date )
 - New function:  EPrints::Database::pad_date( $mysql_date, [$inc] )
 - These functions convert from eprints date format to mysql
    and back (strip/add -00's). 
 - in Document.pm, changed "cp" to "/bin/cp" which is still a touch
    flakey as it's shelling out, but is an absolute path and avoids
    some problems on securer systems.
 - in EPrints.pm changed an "if defined $obj->get_value(x)" to 
    "if $obj->is_set(x)"
*- New function: $eprint->validate_meta_page( $page, [$for_archive] )
    for validating each page of the meta data entry (so you don't
    have to wait until the end). * does not have a callback yet *
 - Now the render_latex function removes trailing whitespace if any
    is left over after it's shenanigens (it was adding a single space
    on the end which screwed up citations.)
*- [api] New function: $xhtml = $field->render_help( $session )
    now used in preference to display_help. ** maybe display_help can
    be removed? **
 - Improved rendering of date type so that it renders at it's 
    max_resolution.
*- Added a really odd hack to editperms so that it only shows extra
    input boxes if explicitly clicked. That can't be right!
 - Added a charset = utf-8 to textarea input fields.
 - Made it so that a field of type search with a "null" search is now
    considered unset, lots of empty searches were getting stored.
 - Made the "EX" search flag mean nothing for date fields. This might
    be changed later, but for now means that 1999 = 1999-09-01
    even in "EX" mode.
*- Fiddled with "height" code for pick lists. It's still not right.
*- hacked "DOCTYPES" into the top of pages. Gotta be a better way.
 - [api] new option to submission forms: $autosend. This causes the
    form to store the resultant XHTML for the next page of the form
    in a way that can be requested, rather then render it right away
    as a page.
 - submission form now uses $user->is_owner($eprint) to establish 
    ownership, rather than checking that user submitted it.
 - Added a couple of lines to Subscription.pm to deal with the
    fact that mailempty might not be defined (gets rid of a warning)
 - [api][doc] Changed  $user->get_owned_eprints() to be 
     $thing->get_owned_eprints( $dataset ). Now returns all the
     eprints created by that user, in that dataset. UNLESS the
     config option "get_users_owned_eprints" is set in which case
     it calls that as a function and returns the result of that
     instead.
 - Improved field_from_config_string so that it can now have any
    number of qualifications after a fieldname, if desired. eg.
    foo.main.res=Y (not sure why you'd want to, but let's keep
    it rebust eh?)
*- New function:  EPrints::XML::write_xhtml_file( $node, $filename )
    this outputs the node just like write_xml_file but prints a
    DOCTYPE at the top. Bit of a hack really.
 - (in tools/update_phrase_file) improved the layout of the 
    translation flagging and the flags now include the reference code.

2003-05-20 cjg

 - [c] Made default to hide lineage and honourific
 - [c] Made default to skip linking stage
 - New option; invert name input - so family name comes first
*- [c] Made invert name input default to 1. Probably want to change
    before release.
*- New option: submission_hide_howmanyfiles, which will cause the 
    "how many files?" part of the file upload to be supressed. May
    be removed due to rewrite of that whole section.
 - [c] TOTAL reworking of all metadata fields, eprint types and
     some changes to citations (needs more there!). EPrint types
     now divided into several pages.
*- [c] Added some defaults & automatics which will need to be 
    removed before release. Could use them as examples.
 - [c] view & search default config changed to reflect new fields.
*- [c] Added input_names to MetadataFieldsConfig.pm as an alternate
    input method for names. Currently being used by creators and
    editors. Should be moved to core code?
 - [c] Changed OAI config to reflect new fields.
 - [c] put a table around default site template to limit pages
    to 720 wide for readability.
 - [api] Added new option to SearchExpression. "citation" which 
    specifies a citation to use instead of the defaults for each
    type when rendering results.
 - [c] Added new options: advanced_search_citation, 
    simple_search_citation, latest_citation to allow the citation
    to be used on those pages to be explicitly specified.
 - [web] Deprecated set_password page, split it into "register"
    and "reset_password" which should make things a little 
    less confusing.
*- [web] Extensively redesign of /perl/users/home - not finished
    yet.
 - Fixed small bug in edit_user
 - Loosened up the regexp for archive id's. is now ^[a-zA-Z0-9_]+$
 - [api] New method for document; get_baseurl which returns the
    URL of the document directory, not the first item. get_url
    now uses this to calculate it's value.
 - [api] New method for Language: has_phrase(). This tests to see
    if a phrase is available in the language (without useing
    the fallback languaage)
 - [c] New config option for fields: render_input. This overrides
    the code which renders the input form for that field.
 - [api] display_help and render_help now take an optional $type
    parameter, to allow them to provide type specific help if
    available (tested using $language->has_phrase()
*- Added date search functionality, although still seems a bit
    buggy.
 - [api] Added get_lang method to Session, to get the current
    language (as oppose to the current language id)
 - [api] New method to Session: render_nbsp which renders an XHTML
    DOM non breaking space.
 - Fixed bug in menus which meant they where always the same 
    default height as textareas.
 - New option to $session->render_input_form: above_buttons which
    is some XHTML data to insert above the buttons but below
    the input fields.
*- Significant changes to SubmissionForm. Changed the way in which
    files are uploaded. Still in progress.
 - Improved the rendering of emails in EPrints::Utils::tree_to_utf8
    now does not over-do whitespace between paragraphs.
 - [api] New function: EPrints::Utils::human_filesize($size_in_bytes)
    which returns a sensible description of the given filesize 
    e.g. 5Mb (rather than 5484023bytes)
*- [c] Help & Fieldnames in the phrase file for all new fields. Not
    quite done yet. Also improved the registration/password reset 
    email.
*- [c] Some changes to the style sheet, including making most of 
    the system sans-serif.
*- [c] NEED TO ADD to registration a config option for which fields
    are asked for.

(eprints2-3-0-tardis-1)
 
2003-06-10 cjg

 - [c] Changed "includes" in ArchiveConfig.pm to give better messages
    for syntax errors in ArchiveRenderConfig.pm etc.
 - [c] New config option: "user_registration_fields", allows extra fields
    to be asked for in registration.
 - [doc] New custom input renderer for subjects:
    &EPrints::MetaField::subject_browser_input which does a navigable subject
    tree rather than the pull-down menu.
 - [c] Subject field now uses that custom input renderer.
 - [c] Added more items to the monograph_type field.
 - [c] Added "lecture" to the presentation_type field.
 - [c] Made abstract the same width as all other fields again (looked 
    really ugly being super-wide)
 - [c] Editors now use custom name input.
 - [c] Removed institution default, but left comment to show how to do it.
 - [c] Added automatics to set effective date to issue, or submission if
    no date of issue.
 - [c] Added automatic to set full_text_status.
 - [c] Added code to show subtypes in abstract renderer for thesis,
    monograph & conf_or_pres.
 - [c] Abstract page again: datestamp now only renders if specified, will
    not show UNSPECIFIED.
 - [c] Full Summary Renderer now just lists unspecified fields to make the
    page shorter & neater.
 - [c] Does not bother telling you the password is UNSPECIFIED, duh.
 - [c] Added two conditions to validation: date_issue AND/OR date_sub must 
    be set. Same for authors/editors.
 - [c] Redesigned citations for book & article to be much neater. Also made
    the search results citation style show stuff like if it's not published 
    and the full text status (if not available, or restricted)
 - [c] Swapped order of date_sub & date_issue 
 - [c] Changed template to link to register instead of deprecated set_password
 - Rewrote some of export_xml to be more XML module independent. Should fix
    some errors reported.
 - Tried to make eprints run in "tainted" mode but didn't get any far.
 - Added phrase "cgi/register:register_agreement" which can be overriden if
    some text needs to appear on the "register" page by the "register" button.
 - reset_password was generating the error title even if it didn't need to.
    fixed.
 - reset_password: no such user msg now tells you the email which failed.
 - user home now renders inbox eprints as a list with links for options next
    to each item. Much neater!
 - user home list of recently accepted items links to the abstracts now.
 - submission form now goes to "userhome" not /perl/users/home -> it was
    hardwired before. 
 - removed similar hardwiring in review, record & system-en-current
 - get_type_fields now returns those fields in the order which they appear
    in metadata-types.xml
 - qualifiers for fieldnames (eg. in citations) are now seperated by ";" not
    ".", although ".id" will continue to work. 
 - added new qualifier "magicstop" which will, when rendering, add a "." to
    the *single* value if it does not end with ".","?" or "!"
 - new metafield property, "render_opts" which is a hash of all such
    render opts.
 - render_input_field now gets a list of hidden fields in case it wants
    to make a GET link instead of the normal POST. This is needed by the
    new subject_browse renderer.
 - in normal subject input fields, the selected subjects are moved to the
    top so they can be easily seen.
 - added another custom renderer: render_pagerange_pp which renders page
    range type fields something like the harvard style.
 - fixed a glitch in searchexpression that if it didn't have an order or
    a dataset it dereferenced a null {dataset} anyway. This occured in 
    unserialising an empty string.
 - added "description" to date searches. Still a bit ropey.
 - put classed spans around peoples names.
 - new feature in get_subjects: no cascade label, which will soon be used
    to make subject lists which DON'T have all the super-subjects as
    part of each label.
 - added type, eprintid and desc to the options to the titles in the
    submission form. They're not all used, but could be if people want.
 - redesigned file upload section. No functional changes, but extensive
    cosmetic ones.
 - User eprints now returned sorted by eprintid
 - render_date now only shows "Feb 2000" if day == 00
 - created _citation_field_value to tidy up citation rendering code.
 - [c] lots more changes to phrase files and stylesheet. Stylesheet really
    needs a spring clean.
 - All fields in citations are now class'd with span tags for extra 
    easy style changes via CSS, and for an easy life for extraction tools.

(eprints2-3-0-tardis-2)
 
2003-06-17 cjg
 
 - [c] removed "chapter" metadata field, no longer used.
 - [c] added "fileinfo" metadata field, will be used for caching info
    on available file formats for use when rendering citations.
 - [c] default editor summary mailing frequency is no "never" not NULL
 - [c] renamed conf_or_pres type to conference_item
 - [c] valign="top" added to render_row for abstract page. looks a bit
    neater.
 - [c] added harvard style(ish) citation formats for all types. As 
    good as possible, based on lots of different standards for the 
    standard. It's bound to be wrong, but at least it's neat and 
    consistant.
 - removed a stray debug line from oai2
 - fixed a bug in oai2, ListMetadataFormats used oai v1.1 config, now
    uses v2.
 - [d] removed "max_resolution" metafield option. Now just uses ;res=Y
    in citations & browse views.
 - internationalised subject browser.
 - searchfield now correctly renders descriptions of date searches. 
 - moved ": " the subject-path-join into the phrase file, and changed
    it to " > "
 - swapped the order of the confirm delete buttons to make "confirm"
    come first.

2003-06-17 cjg/moj

*- [doc] New parameter to SystemSettings: apache_version. (renamed 
   later to "apache" )
 - Support for Apache2 added, changes to VLit, startup.pl and Auth.pm, 
    added new module RequestWrapper2 which Auth will use if directed.
    now does some 1.3/2.0 specific stuff in generate_apacheconf

2003-06-24 cjg

 - [c] New config option to OAIRender {mime_types} to map the document
    types to mime types for the dublin core conversion.
 - [c] EPrint->Unqualified Dublin Core now more or less follows Andy
    Powell's recommendations.
 - [c] removed place of publication from converence_item (it's not
    published!)
 - Fixed bug in $dataobj->get_value which didn't strip the id's as
    requested on "mainpart" fields.
 - bugfix: moving an eprint to the deletion buffer deleted the abstract
    but didn't replace it with the deleted message.
 - fixed a warning in $field->render_value for dates.
 - Added a search function to the subject browse input method.
 - Internal buttons now only count as pressed if they are set to 
    something other than an empty string.
 - If a problem occurs in submission form then the problem gets name="t"
    which should override whichever field currently wants focus
 
2003-10-01 cjg

 NOTE: VERY LARGE CHANGES TO METAFIELD & SEARCHES. 

 - Split MetaField.pm into subclasses to describe each field type, 
    also these new modules contain all type specific code from 
    searchfield.
 - code for full text search has been prepared for, a function
    in document returns a junk string for now until that other
    code is in place.
 - new module; "SearchCondition" which represents a simple 
    atomic part of a search (eg YEAR > 2000). One field, one
    operator & one parameter. SearchCondition can also 
    represent an AND or OR and have a number of sub-conditions
    SearchExpression now returns a search condition and 
    $sc->item_matches is now used to test items.
 - totally redesigned the code for rendering input fields, 
    everything is now based on a grid so that complex things
    like names lists should render in a more compact & clear way.
 - [c] added code to ArchiveRenderConfig to add icons for documents
    to the abstract page.
 - [c] added a fileinfo field and a custom renderer function to
    show what files the eprint has.
 - Moved much of the indexing code to Index.pm
 - created indexer which does background reindexing of the 
    archive.
 - [c] added "fileinfo" to the "neat" citiation type.
 - [c] added "pubinfo" to most metafield types.
 - [c],[db] the inital GRANT in the SQL now allows the eprints
    SQL user to do "ALTER", so it can rename tables (needed for
    the indexer daemon)
 - [api] use_oneshot_cache, use_cache & use_private_cache are
    now deprecated. Caches are created if needed to order or 
    to retrieve values. They are not erased if keep_cache=>1
    but they are no longer shared.
 - bin/reindex is now deprecated
 - added Extras.pm which contains alternate methods for 
    rendering input and output of fields.
 - user home page now stripes lists of eprints to make them
    more readable.
 - we now have a var directory for each archive to store things
    like timestamps.
 - stopped "use Config" loading the config files there and then.
    The first time any function which needs them is called then
    they are loaded (also there is an ensure_init() function). 
    This is to stop it needing libraries which need Config and
    getting stuck.
 - added a magick field generator. This will allow dataset to
    create fields prefixed with "_" even if they do not exist
    in the full text. I'm not sure about this. It's a horrid
    hack. (removed it again)
 - added get_item_ids to dataset to return the id's of all
    items in that dataset.
 - removed indexing code from Database and put it in Index instead.
    items are no longer automatically reindexed each time they are
    udated.
 - simplified the caches so they no longer are used except by
    things which know the cache id. cache_id() count_cache() and
    is_cached() are removed.
 - added concept of a "simple" mode for search field. Used when
    searching accross incompatible fields like name, text and int.
 - added a cookie for prefered language.
 - removed some unused code from SearchExpression
 - [c] fixed a bug in systemsettings.pm that zip invoked "zip" not
     "unzip".

2003-10-06 cjg

 - made indexer call "/usr/bin/renice" to reduce how much it loads.
    This needs to be done with a proper system call before code
    release.
 - field properties are now handled by the new OO metafield modules.
    some fields can have additional properties. Magical default values
    are UNDEF, REQUIRED, FROM_CONFIG and NO_CHANGE meaning in order
    "default is undef", "this field must be explicitly set", "get
    the default from the archive config" and "don't change this
    property if if set to undef"   
 - name filtering now works! Searching for "Harris Smithe, Bob"
    will now do an index search for harris AND smithe and then
    filter it to things which match either 
      %[harris]%[smithe]%-%[bob]%   or
      %[harris]%[smithe]%-%[b%
 - [c] made TH's smaller in the CSS - looks nicer

2003-10-16 cjg

 - new render option for name fields order="gf" or order="fg" to 
    control order given & family are rendered.
 - new options for name fields: family_first, hide_honourific and
    hide_lineage. All set as field details then over-rideable.
 - changed Y,M,D to year,month,day in date resolutions - why be
    obscure about it?
 - added per-page validation for metadata input
*- some scripts are currently perl 5.8 for testing puposes
 - generate_views now does sub-pages eg type then year.
 - cleaned up some "cache" options in various searches.
 - added to status page info on when each dataset was last indexed.
 - moved rename_table, drop_table, swap_tables & install_table into
    the database module (was in index.pm)
 - added a get_last_timestamp option to index.pm to be used by the
    status page.
 - Improved error messages for metafields with illegal properties.
 - fixed an oversight in metafield (still using _ordervalue_aux1 not
    ordervalue_single)
 - eliminated a warning in the render date code in Utils.pm
 - improved VLit code: now does 2 stages to span selection so that
    it doesn't cane the web browser & bandwidth. Also added a "quote"
    link from the "human" page.
 - added cgi/counter" which returns a text/plain report on the size
    of each dataset. Handy for stats building.
 - added cgi/latestn for showing the last "n" eprints. Handy for 
    embedding in other sites.

2003-10-20 cjg

 - Added some better comments to the "disable web based signup" 
    option to warn people to change the HTML pages.
 - date fields can now never be "EX" so that searches for "2000"
    will not look for "2000", but for anything in the year 2000.

2003-10-22 cjg

 - Added up and down arrows to multiple input fields to make it
    easier to rearrange things like lists of authors names.
 - Added icons for the up and down arrows.
 - Some work getting Everything to work with Perl 5.8
 - Removed requirement for mod_rewrite. Now requires mod_perl
    compiled with "EVERYTHING" so mod_perl can do the translations.
*- Changes still required to generate_apacheconf to reflect new design
    including adding some vars and removing all rewrite rules.
 - [c] Removed VLit Context size option. Hardwired it.
 - /perl/users/home now redirects invalid users to the user-metadata
    entry page. Not ideal but better than it was.
 - Made some changes to the way CGI.pm is initialised to try and
    avoid some strange errors with P5.8
 - Several improvements to vlit. Now has 2 levels of context, and
    more sensible links at the top of "human" mode, and a nicer
    stylesheet entry.

2003-10-22 cjg

 - Changed generate_abstracts to set a PerlVar to identify the
    archive rather than all that mucking around with host and path.
 - Removed all host & path code to use the PerlVar from the apache
    conf instead. Much nicer. Making a session from a CGI script
    is now much more straight forward.

2003-10-30 cjg

 - going to the URL of a metadata page without the trailing "/" now
    neatly redirects rather than giving a 404 eg.
    http://ep2stable.ecs.soton.ac.uk:8000/foo/bar/archive/00000109
    to
    http://ep2stable.ecs.soton.ac.uk:8000/foo/bar/archive/00000109/
 - Moved vlit related CSS stuff into their own stylesheet.
 - Added a tardis logo to the eprints information page
 - Added pauline, jessie & Harry to the AUTHORS and information.xpage
 - Renamed latestn to latest_tool, including all the related config
    options.
 - Replaced search configuration with a new style, although the config
    code will translate "simple" and "advanced" from old versions into
    this new format.
 - Removed "extra" fields from searches in SearchExpression.pm
 - Simplified serialised searches so that they ALWAYS unserialise into
    an existing searchexpression. The use "ID" of search paramater if
    available. 
 - Removed code using serialisation from oai and oai2 - now clone a
    search expression instead (to make the deleted search).
 - Added "clone" method to search expressions.
 - When a search expression has it's dataset changed it forgets it's
    cache (and disposes of it if needs-be)
 - [c] changed ArchiveConfig.pm to use the new search configs.
 - advsearch deprecated. Now forwards to /perl/search/advanced
 - Now many named searches can exist as sub-files of /search/ default
    is "simple".
 - Searches may now have filters. These may be configured in 
    the oai and the simple & advanced searches (etc).
 - Added config options for the newly named "latest_tool". It allows
    multiple modes. Each mode has it's own filters and citation style.
    A mode lists the last "n" items matching the filter. Handy for
    making external sites.
 - [c] Renamed "msc" in the thesis_type set to be "masters" as this
    is a more general term. 
 - [c] fileinfo renderer is now render_value not render_single_value
    to skip issues with it being unset.
 - [c] New config option for oai: filters.
 - [c] Made the "note" appear on the abstract page. It was supposed to.
 - deprecated $field->display_name. Now use $field->render_name instead.
 - [c] Edited all code, including RenderConfig, to use 
    $field->render_name($session) instead of 
    $session->make_text( $field->display_name( $session )
 - [c] Changed fileicons renderer so that it uses the proper root URL
    and does not assume it's in the top directory.
 - [c] Changed citations file so that unpublished warnings only happen
    if the item is explicitly not published rather than the field being
    NULL.
 - Removed PerlFreshRestart from the apache config - it appeared to 
    cause load of warnings.
 - apacheconf now handles eprints in a sub-dir properly.
*- commented out rewrite rule for "secure". need to fix that.
 - Changed resumptiontokens in OAI to indicate which set they search
    as this is no longer easily available from the cache system.
 - Added "unset cookie" option to setlang.
 - setlang now knows where it came "from" using the referer, so it can take
    you back to where you followed the link from.
 - Removed ARCHIVEMAP code from Config.pm - not needed now we set the
    ID using PerlVar.
 - Added some code to Config.pm which skunges any old search configs to
    look like the new search config. Means I don't have to do any hacks
    anywhere else in the code.
 - Fixed a bug in database which returned lists of ID's only as an array
    not a reference to an array.
 - Unspecified field values now say "UNSPECIFIED Subject" rather than just
    "UNSPECIFIED".
 - Simplified Rewrite.pm; Now it works out the filename itself.
 - Added Array of all legal options to new() to SearchExpression, as this
    list is used in both new() and clone()
 - SearchField: Changed get_help and display_name to render_help and 
    render_name. Changed all calls to them. Now both return XHTML.
 - Added more CSS stuff to rendering buttons. Made submission form
    have optional top buttons as well as the normal bottom bit.
 - Added to .css to make submission form buttons look nice.
 - Meta-stages in submission can have custom titles
 - Renamed submission cancel button to "save for later" and put it on
    every page of submission.
 - Fixed bug in Utils which meant ifnotmatch blocks were not removed from
    citations.
 - MetaField->render_search_input now just takes a handle to the searchfield
    rather than lots of options. 
 - "set" input fields when merged for search now offer all options from all
    fields included in searchfield.
 - Added some code to MetaField/Date.pm strings which were "" were considered
    set.
 - [c] Added submission form page titles to phrases.
 - changed submission form "back" to be "previous" instead.

2003-10-31 cjg

 - Input Form up/down buttons now on empty fields too. Because they might NOT
    be empty by the time the button is clicked.
 - Metafield::Name now extends Metafield::Text (so it can pick up the
    indexing code)
*- Full text searching code disabled for now.
 - Renamed "name" index to "grep" index as it's far more generic a concept.
    All related variables renamed too.
 - get_index_codes is now a method of MetaField.pm; moved from Index.pm
    name grepping appears to be working OK.
 - Fixed loads of bugs in SearchCondition due to earlier omission of "use 
    strict". 


2003-11-03 cjg

 - Fixed Cookies to work with Apache, rather than CGI
 - Got rid of all occurances of CGI
 - Got rid of all occurances of host_and_path (ugh)
 - Added Archive->new_from_request which takes an apache request object
    looks at the PerlVar and returns an archive or aborts. Used by 
    Session.pm and VLit.
 - Made "frontpage link" always appear on set_lang even if referer is
    set.
 - Removed some seemingly junk code from SearchCondition->item_matches: grep
 - Cleaned up VLit to use $archive instead of $session
 - Made Name.pm indexing handle undefined "given" parts without warning

2003-11-04 cjg
 
 - Made "hideemail" field true by default (in Users)
 - Allowed "refereed" to be NULL without warning in OAI/DC code
 - Cleaned up output of "indexer" when it already appears to be running.
    now it gives sensible advice about running "ps" to check etc.
 - Changed eprints staff search to work in the same (new) way as other
    searches. Allowed "dataset_id" to be a parameter so that it can be
    config'd by admin. 
 - Config.pm now generates 4 staff searches if they are not already configured;
    "inbox","buffer",etc.
 - ordervalues are now created and updated each time a record is creaded or 
    changed (don't need to be deleted, really, indexer does that)
 - renamed phraseid's in Extra.pm to logical names.
 - Added a "Go!" button to subject search.
 - Searches, User Forms and Submission Forms now render problems in a CSS'd
    DIV so that they are clearly highlighted.
 - [c] Added problem_box entry to .css file.
 - Problem with UTF-8 *objects* as attributes in some of the DOM code. Forced
    them to strings.
 - Subscriptions now say who they are mailing to (in debug mode), not just
    that they are trying to send subscription #11

2003-11-05 cjg

 - Made FULLTEXT search use a constant for clarity.
 - 404, 401 pages and the PerlVar now only happen in the correct sub-dir
 - latsest tool now does RSS output, kinda
 - get_value is now a property of MetaField which always just calls 
    get_value_raw on the object, except for the fulltext object.
 - Added a fulltext field type which just gets the full texts from a 
    file. Feels like a multiple-longtext.
 - Added "delete_ordervalues". Stray ordervalues were lying around after
    items were moved out of the current buffer. Caused error (INSERT) when
    they came back later.
 - Renamed "freetext" search to "index" and commented out name_match for
    now.

PACKAGE: 2.2.99.0

2003-11-06 cjg

 - Fixed file uploads. Now uses the Apache::Request style upload
 
PACKAGE: 2.2.99.1

2003-11-07 cjg
 
 - Fixed bug that erase_archive failed to "use Archive"
 - Added new metafield: langid. Needed to create database tables.

PACKAGE: 2.2.99.2

2003-11-14 cjg
 
 - Made searches use "neat" citation again.
 - Fixed bug in Metadata defaults
 - Fixed bug in render_nbsp. Didn't always give the right unicode value.

2003-11-23 cjg

 - Browse views can now have subheadings within one page. New options to
    views: subheadings and heading_level
 - Fixed bug which given "aa bb " searched for "aa" & "bb" & ""
 - Fixed bug which meant when a live document is made secure after being
    public the public symlink was not removed. Now when an eprint makes
    it's static files, it unlinks them first.
 - Fixed merge function so that it can deal with the first value in either
    array being undef.
 - Fixed a bug in the validation of users when editing a user record in
    staff mode. 
 - Added some code to cleanly handle undefined date fields.
 
2003-11-24 cjg

 - Added code to upgrade database to v2.3
 - Added "contact" page to statics, rather than email on all pages.

2003-11-25 cjg

 - [c] Added demo subject search. remove it or comment it out before
    release.
 - [c] hideemail is now a radio button not a checkbox
 - Added AnApache.pm which decides if it should "use" Apache or Apache2.
    it also loads related libraries for that mod_perl. All calls to
    use Apache now replaced with use EPrints::AnApache
 - disabled buggy return-to-previous on set_lang
 - generate_apacheconf now uses correct v1/v2 modperl registry module
 - s/apache_version/apache/
 - Added release version of paracite code.
 - Added $dataset->has_field 
 - Used it to make paracite cgi script use authors or creators - whichever.
 - Added new CGI script /users/search which does ALL staffmode searches. This
    replaces both eprint_search and user_search
 - Added some missing phrases
 - Improved examples for date search
 - Deprecated links to user_search & eprints_search. Scripts now just
    forward to /users/search 

2003-11-25

 - Fixed some problems in exporting apache constants in apache 1.3 
 - ..and some with AuthDBI requiring only Apache.pm not AnApache
 - Fixed a bug with attr->toString not working in newer gdome's

2003-11-27

 - Added some code to wrapper differences between file uploads in
    apache 1.3 & 2.
 - Removed some debugging code from generate_views
 - Fixed a warning in generate_views
 - indexer now shows current object id it's working on as it's $0
 - indexer now nice's to 8 not 20
 - removed more useless "untaint" code
 - hide_lineage/honourific renamed to {field_defaults}->{hide_lineage}.
    added some code to Config to deal with old 2.2 config files.
 - added add_archive and add_file to Document (like upload, but take
    filenames not handles). 
 - added sanitise to document. Handles cleaning up the uploaded file
    names (no longer clears :.* as that's not desirable.
 - Escaped values in indexer so that we can index "don't"
 - Improved file uploads interface a little (new style)
 - Escaped values in toString'd XML attributes.

2003-11-27

 - Fixed bug that status page erased half-done index tables with "dispose"
 - renamed $index->dispose to "cleanup" as it's not a required dispose 
    function.
 - Made AnApache eval the subroutines for that apache to avoid any 
    confusion. 
 - Added apache2 upload file routines to AnApache
 - fixed typo in Document.pm (add_archive x2. one should have been add_file)
 - Fixed bug that full text searching lowercased and stemmed words when
    it shouldn't.
 - Apache 2 post trans handler does not map "/" to "/index.html" so Rewrite 
    now does it.
 - Fixed warning if accept-language is not set.
 - Userpage list-of-eprints now links to correct new search URL
 - Renamed arrow images to all start with "multi" so that the upgrading 
    admins can use "multi*" 

2003-11-28 cjg

 - Cleaned up browse_view config.
 - Cleaned up search config.
 - Fixed bug in indexer (didn't give up STDOUT etc).
 - Removed debug code from generate_views
 - Submission form validate page now only has submit buttons at the
    bottom of the page if the eprint is valid.
 - Fixed search form on default index page.
 - Added Proc/Reliable and Unicode/Normalise to bundled stuff.

2003-12-02 cjg

 - Option to use CGI script "mimetex" for Latex rendering. Rewrite
    now ignores any requests to /cgi/ and if enable_mimetex is set
    then an extra ScriptAlias is added to the apache conf and the
    Latex render_single_value points at that URL instead.
 - Tidied some config files.
 - Improved install.pl to rename old files to format ".YYYY-MM-DD.N" 
    rather than ".old"

2003-12-08 cjg

 - Fixed bug in form renderer of multilang fields. 
 - Improved interface to subject editor (and fixed some bugs)
 - Added current version to counter script.
 - Internal Buttons now work again on user forms.
 - Removed silly BONG message at startup.
 - Startup now lists all archives which have been loaded.
 - Text Searches now correctly stem words to be searched.

2003-12-19 cjg

 - Added "perlmodules.pl" utility which should make installing the
    required perl modules much easier.
 - Added new config option "send_email" which allows the normal email
    method (using sendmail) to be over-ridden.
 - Fixed subjects linking to view pages with multiple levels.
 - removed debug line from SearchExpression
 - split words (Basic) now splits on whitespace again not any split char.
 - Fixed subject-browse so there's a mini-tree at the top again.
 - Fixed bug in up/down arrows in multiple fields.

======================================================================
19/12/2003 - EPRINTS-2.3.0
======================================================================

2004-01-14 cjg 

 - Patched DOM.pm to work in perl 5.8

2004-02-05 cjg

 - Fixed some typos in phrase files
 - Added 'last indexed' info on search results page
 - Browse by 'name' type fields now works
 - Hooks for input field renderers so that it can be made dependent on
    properties of the associated object. If any.
 - Patched the XML/DOM which ships with EPrints to fix some problems 
    with running under Perl 5.8
 - Fixed a bug in 'lang' when $multilingual options are set to true
 - Added escaping for cachecodes in database. a ' could cause an SQL
    error before.
 - Made the ordering stage use a left join rather than an inner join
    so that items not in the order table for some reason don't show. 
    not that that should ever happen.
 - Metafields are now dynamically loaded modules, don't need to 'use'
    them.
 - Changed paracite code so that the SEEK button now generates a 
    POST rather than a GET request. This stops search engines form
    following these links and hammering the server.
 - The name_match search condition now works for searches but not on
    does-it-match? calls yet.
 - Total rewrite of the generate_views code which escapes the 
    filename to escape any uncode character.
 - Fixed VLit code to handle an archive on a sub path.
 
======================================================================
05/02/2004 - EPRINTS-2.3.1
======================================================================

2004-02-24 cjg

 - Added 'hideempty' option to default browse subject view.
 - Changed configure_archive to just do GRANT ALL.
 - Made generate_views correctly show two combined subject trees.
 - Fixed bug in generate_views. hideempty works correctly again.
 - Changed header_in to headers_in to work with libapreq v2 AND v1
 - Fixed a bug which meant <options> tags could sometimes have
    illegal characters in.
 - import_subjects now dies with an error if a naughty subjectid
    is used.

2004-02-24 cjg 

 - Changed all $r->connection->user to $r->user for libapreq2 
    compatability.
 - Added header_in header_out and send_http_headers to AnApche
    to abstract differences between v1 and v2 API.
 - Used new AnApache functions to replace current calls throughout.

2004-02-24 cjg

 - Swaped the header_in and header_out functions 1.3 and 2.0 ones
    were the wrong way around. d'oh.

2004-02-25 cjg

 - Commented out a filter in ArchiveOAIConfig.pm that should not
    have been active by default.

======================================================================
25/02/2004 - EPRINTS-2.3.2
======================================================================

2004-03-03 cjg

 - Added a new script - explain_sql_tables, which explains what all 
    the SQL tables are used for.
 - Another try to fix the hideempty bugs in generate_views while making
    the subjects list show totals for super-catagories.
 - Chopped up generate_views into subroutines a little - may be a bit
    clearer to understand now (maybe not).
 - Hacked the bundled Apache::DBI module to use log_error rather than
    log_reason (v1 and v2 mod_perl compliant)
 - The name of a language can now be specified in an language specific 
    phrase file. Added a new method to session: render_language_name
    which renders the given name in the right language. Everywhere 
    which mentions language names now uses this. Maybe set_lang should
    not.
 - Added a feature which looks for optional extra 'join' phrases to 
    use in the first and/or last join of a sequence of values. ie. you
    can use name_join = ', ' and name_join.last = ' and '
 - Changed all Apache::exit's to just be exit's for apache 2 
    compatability.
 - Fixed bug in searches so that a single search on a multiple 
    table can no longer return two instances of the same item (added
    a DISTINCT!)
 - Changed all remaining occurances of "iso-latin-1" to "iso-8859-1"
 - Added a fix to mkdir to make sure that the dir string is not 
    a Unicode::String (as this causes an error).
 - Updated copyright statement to 2004!
 - XML to_string function now correctly handles <!-- comments -->
 - ordervalue for an undefined int is now "" (was causing warning)

======================================================================
04/03/2004 - EPRINTS-2.3.3
======================================================================

2004-07-05 cjg

 - Cleaned up some error messages
 - Fixed bug in oai2 interface that sometimes printed empty 
    resumption tokens.
 - Changed options to /bin/cp in Document.pm to some which should
    work on more platforms.
 - Some validation things in EPrint never got added to @problems
    list. Fixed.
 - Fixed bug in new subjects input field, didn't add subjects which
    were top level. 
 - Fixed bug with changing username.
 - XML exported now strips xmlns attributes so that output is legal
    XHTML.
 - XML comments should now be exported correctly.
 - Upped maximum pagerange field width to 120 from 10.
 - Fixed typo in system phrases.

======================================================================
06/07/2004 - EPRINTS-2.3.4
======================================================================

2004-08-06 cjg

 - Added Hungarian chars to freetext index map
 - New options to indexer --once, --notdaemon, --loglevel, --rollcount
 - Indexer now creates log files
 - Commented-out un-needed command in SearchExpression
 - Fixed xmlns filtering so it only occurs on XHTML output, not XML
 - Fixed a call in Config to use AnApache, so it'll work with v1.3 & 2
 - Fixed a bug in MetaField/Set; it didn't show the currently 
    selected value in any/all menus.
 - documents_url option removed. It's hardwired to /archive/ in lots
    of places.
 - Added support for short URLs for records, so you can use
    /33/ instead of /archive/00000033/
 - added config option 'shorturl' to make the short version the
    canonnical one. 

2004-08-06 cjg

 - Added code to SQL prepare and do so that it tries to reconnect
    if the mysql connection goes away (not yet for 'execute' however)
 - Modified Fulltext field type to cache extracted index codes to
    reduce CPU load.

2004-08-06 cjg

 - Fixed spelling mistake in Fulltext.pm
 - Made noxmlns actually cause/not cause xmlns to be stripped in
    XML to_string (bug fix)

======================================================================
06/08/2004 - EPRINTS-2.3.5
======================================================================

2004-08-09 cjg

 - Fixed a bug introduced last version which failed to render buttons
    which id's started with "_". (Such as those on the staff eprint
    edit page.)

======================================================================
09/08/2004 - EPRINTS-2.3.6
======================================================================

2004-09-20 cjg

 - Text searches for stop words now return PASS. 
 - OR and AND searches containing a PASS get optimised out if they
    are AND'd or OR'd with a AND or OR which does not contain a PASS.
 - Removed dependance on libapreq. Now uses CGI.pm (again). 
 - Reduced loading message in web startup to a single line. 

2004-09-29 cjg 

 - Rewrite modules now preserves CGI arguments. So /foo?x=1 now
    changes to /bar?x=1 not just /bar
 - Renamed $a variable in "buffer" so that it does not interfere
    with $a in sort function.
 - All document symlinks are updated when an eprints abstract page
    is created. This includes secure area links for docs not yet in
    the live archive. 

2004-11-15 cjg

 - Added three new field parameters, input_assist, input_advice_right
    and input_advice_below. Names subject to change.
 - input_assist makes an assist button appear. Which is just a null
    internal button.
 - input_advice makes values appear below or to the right of the input
    fields, commenting on the current value (ie. if it's an enter
    userid field, it might show the full name of person with that
    id)
 - Cleaned up minor issue in OAI conf for the situation when 
    date_effective is not defined.
 - Changed render eprint code to use official_url. Renderer still
    refered to altloc
 - Removed some double entries from citations file
 - Added oai2.xsl to make OAI output look nice in browsers
 - Added print.css - a slightly different css file for printing
 - Made RSS output completely standards compliant (dates were not)
 - Fixed bug in members area home page regarding negative style
    permissinos.
 - Added warning to metafield new. Warns if a parameter not relevant
    to that field type is passed. 
 - Added a tweak to search results for case when no ordering is needed
    and no offset or count.
 - Fixed a bug in the sans-libapreq workarounds. It only handles cookies
    when there are cookies to handle.
 - Added some extra cache conditions. not just must-revalidate but
    no-cache, so if working offline (or the extreme never reload if there's
    a local copy option in IE) it will fail rather than display a CGI
    page which was not loaded right then.
 - buffer page now sorted by reverse datestamp

2004-11-22 cjg

 - added underscore "_" to the list of characters not to escape in 
    views. This could cause some broken links, I'll make it a config
    option if anyone complains.
 - Added new config option to searches controls=>{ top=>1, bottom=1}
    this allows the search control buttons (reset/perform) to appear
    at the top and/or the bottom of a search page.
 - New config option: log_submission_timing which if true writes a 
    log in /opt/eprints2/var of all the stages visited in the 
    submission process. This is for usage analysis by the developers
    but may be of interest to others.
 - Added a link from the subscriptions page back to the user home.

2004-11-23 cjg

 - required_formats can now be a function pointer which returns the
    formats required for that eprint. 

2004-11-24 cjg

 - Improved CSS stylesheet to look much nicer, only affects new 
    archives.
 - Made "lineage" in names hidden by default, nobody likes it!
 - Reduced title input to 3 rows, much neater.
 - Added a number of extra css elements to pages to help new style,
    should not effect existing archives.
 - Added filesize to default eprint page renderer
 - Changed default template to work with new CSS styles.
 - Made submission buffer look a bit neater
 - Changed text of "new document" button to be either "new format"
    or "another format".
 - Added methods to document to return path of words and indexcodes
    files and use those throughout, rather than making up the string
    in multiple places.
 - Fixed what appears to be a bug in fulltext indexing which was
    not generating a words file if one didn't exist. 
 - Added new script: erase_fulltext_cache to force recreation of
    words and indexcodes files.

2004-11-24 cjg

 - Added config to apache config to allow awstats to be symlinked
    in without getting messed around by mod_perl.

2004-11-25 cjg

 - Search field titles now have the same styling as input field
    titles.
 - Search by ID part now works via the web interface.

2004-11-25 cjg

 - removed cgi/oai and reindex as these are obselete.
 - Fixed repeated "comment" element in XSL

======================================================================
25/11/2004 - EPRINTS-2.3.7
======================================================================

2004-12-01 cjg

 - a couple of calls to header_out did not use apache abstraction but
    just did the 1.3 way. Fixed to use abstraction.

2004-12-03 cjg

 - minor changes to default config to give a message when there is
    no document. Also moved "official URL" to be right under the 
    documents, not in the main block.

2005-01-17 cjg

 - Made configure_archive use the OLD_PASSWORD feature if 
    mysql>=4.01.00 as the new authentication method does not appear
    to work with the latest DBD::mysql
 - Added method to EPrints::Database to get the current mysql version.
 - Fixed a messy bit in book section which had a link on book title
 - Fixed a bug which meant the staff edit eprint didn't work properly
    when the file stage was being skipped.
 - Fixed spelling in phrases
 - Removed a couple of references to Southampton University which 
    should not be in the default config.
 - Added umask(0022) to the installer scripts as it goes very wrong
    if it isn't.

2005-01-18 cjg

 - Split the configure archive GRANT statement into a two, now
    has a SET_PASSWORD that is a seperate call.
 - Fixed bug which meant file checksums were not written at
    install, only in upgrades.

2005-01-19 cjg

 - Fixed typo in SET_PASSWORD line
 - Removed duplicate "my" in configure_archive

2005-01-24 cjg

 - Changed tmp files for generate_views to use _tmp.$$ instead so 
    to simultaneous copies won't screw each other up.

2005-01-27 cjg

 - Fixed bug in edit_eprint staff script when the archive has 
    skipping the file stage set.

2005-02-16 cjg

 - Added disable_userinfo option to allow the public user info
    page to be disabled. 
 - Fix to secure apacheconf generation. Needs testing.
 - Deprecated "clone" and replaced it with "new version" and
    "use as template" to be more clear as to function. [#5]
 - Redesigned review-my-deposits page to look more like the
    redesigned homepage. 
 - Added "nolink" option to eprint->clone to supress the later
    version of field being set. Used by "use as template".
 - Added a id="page_xxx" attribute to the body so that 
    dynamic pages can be css'd specifically.
 - Added current item description to submission process.
 - Added work-around to VLit code to handle param's with '='
    signs in the values. Fixed bug with tiff transcluding.

2005-02-16 cjg

 - Added a new bin script: recommit_dataset which runs commit
    on every item in the dataset. Thus updating the automatic
    values. [#41]

2005-02-16 cjg

 - users/home now uses "copy" not "clone" so files are not copied. [#5]

2005-02-16 cjg

 - "checkout" was hard-wired on in "review".
 - Added initial code to test for changes for logging.


2005-02-16 cjg

 - "checkout" was hard-wired on in "review".
 - Added initial code to test for changes for logging.

======================================================================
16/02/2005 - EPRINTS-2.3.8
======================================================================

2005-02-17 cjg

 - Changed NameVirtualHost to work correctly in apache 2 on RHE4
 - Added to_xml function to dataobj
 - Added to_xml function to Metafield/Basic
 - These are now used by export_xml
 - Added EPrints::XML::namespace function which returns the xml ns
    of a given version of an eprints xml schema.
 - Start of code to log changes to eprints records
 - Change to XML output to not have an unneeded space after tag name.

======================================================================
17/02/2005 - EPRINTS-2.3.9
======================================================================

2005-02-22 cjg

 - Fixed issues with secure include for generate_apacheconf
 - [#85] Fixed bug in secure server change user 
 - Fixed error in database that failed to strip "00" for month and
    day at the end of year-only (and month-only) dates.
 - [#81,#87] Added two missing phrases.
 - [#83] Added chkconfig comments to the top of bin/indexer to make it
    easier to use as a linux service.
 - [#62] Fixed problem with "%20" in uploaded filenames. 

2005-02-23 cjg

 - [#83] Added epindexer as a linux service to go in /etc/init.d, 
    removed chkconfig comments from indexer.

2005-02-25 cjg 

 - [#82] Added Net::SMTP mail method.
 - [c] Made it the default.
 - Added a ./configure option to set the SMTP server to use.
 - sendmail is no longer required by ./configure
 - Cleaned up the configure --help page
 - Apache version 2 is now the default 

2005-03-01 cjg

 - [#76] When skip_buffer is set, it is now no longer possible to 
    move items into the buffer, they go back to the inbox instead, 
    and also the "buffer" link from the user home page is hidden.
 - Changed PDF and Postscript document citation styles to link to 
    free views in addition to acrobat.
 - Added experimental new XML export format to export_xml
 - PerlModule installer now attempts to install Net::SMTP
 - removed unused variable from export_hashes
 - Added POD for export_xml
 - [#98] Sort order of menus in view section now treats accented
    latin characters correctly.

2005-03-02 cjg

 - [#89] Fixed bug that caused abstract-pages to be generated for 
    inbox and buffer.
 - [#75] Fixed bug that clone eprint did not cause the files of
    the clone to be hashed.
 - [#112] Added new config option "rewrite_exceptions" which 
    allows certain URL paths to not be subject to the eprints
    rewrite module.
 - Sorted out apacheconf to work with multiple archives with different
    port numbers under both apache 1.3 and 2

======================================================================
02/03/2005 - EPRINTS-2.3.10
======================================================================

2005-03-04 cjg

 - Added flag to let us know when mod_perl has finished loading perl
    modules. Without this errors in startup are sent to the web
    request, except there isn't one.
 - [c] Reversed order of years on the browse by year menu page.
 - [#78] Added two new fieldtypes "Itemrefint" and "Itemreftext" which 
    each reference objects in the system. They work in the same way 
    but subclass "int" and "text" respecively so that "int" fields 
    can be searched logically. They use a require'd file to include 
    the same subroutines in both packages (slightly easier than 
    multiple inheritance)
 - Improved error message for missing required field properties 
 - Added new method to dataset: get_object which takes an ID and
    returns an object in the dataset with that id.
 - itemrefutils was not loading correctly. Now uses a "do" with
    the full path.
 - All Sub-classes of DataObj now use itemrefint and itemreftext
    where appropriate. (not for their OWN Id's though).
 - EPrint->new() without a dataset now searches all four datasets,
    before it used to skip deletion for some reason.

2005-03-08 cjg

 - Renamed "itemrefint" to "itemref" and removed "itemreftext" for 
    now. Hopefully we won't need it.
 - Combined itemrefutils into Itemref
 - Renamed itemrefint to itemref throughout
 - Removed 'datasetid' parameters from Subject system fields.

======================================================================
08/03/2005 - EPRINTS-2.3.11
======================================================================

2005-03-14 cjg

 - Added more exceptions to filename escaping in Documents. Now should
    comply with RFC 2396.
 - Moved secure apache config include file from /cfg/ to 
    /archives/xxx/cfg/auto-secure.conf
 - generate_apacheconf will now clean up old auto-...conf files in 
    /cfg/
 - If secure mode is in operation confirm,register, set_password and
    reset_password are redirected to the secure server.
 - [#96] If https mode is in effect, the web registration is now
    done via the https server.
 - The static website is now available from the secure website URL, 
    the webpages should never be linked, but the images & css must
    be available in a secure way.
 - Auth.pm and Rewrite.pm now handle the secure server by looking
    for a config option: PerlSetVar EPrints_Secure yes

2005-03-18 cjg

 - [c] https pages now use a secure template called 
    template-secure-en.xml
 - If we are using a secure server and /secure/ is accessed on
    the http server, it's redirected to https.
 - Searchfield's from_form function now looks to see if *_match is
    set so we can have web based "EQ" searches, although there's no
    web interface for it yet.
 - [#50] Https mode should now work properly.

2005-03-21 cjg

 - Fixed warning in Archive.pm (duplicated "my" line)
 - Fixed bug in installer: confusion between userid and username.

2005-04-04 cjg

 - Fixed bug in build_page which occured when generating non-secure
    pages from a script when the site has secure mode on.
 - Convert.pm messed about with STDIN and STDOUT for text/plain and 
    text/html. Now it uses more sensible file handles.
 - Several modules did not have "use strict" set. All modules and
    scripts now use "use strict" and a number of warnings were 
    corrected. Mostly adding "my" statements. This probably fixes
    a bug which occasionally meant odd errors happend at startup.
 - Added missing "my" to UserPage.pm 

2005-04-05 cjg

 - $archive->log now uses $archive->call, fixing a "strict" 
    restriction.

2005-04-07 cjg

 - Added new option to build_page, to allow an explicit template
    to be used. Currently only "secure" and "default" are supported.
 - The code which generates the metadata summary page always uses
    the default template, even if the current URL is in the secure
    site. (so that static pages do not have the secure template)

2005-04-14 cjg

 - Fixed bug in logging
 - Up and down arrows graphics now use https if appropriate

2005-05-16 cjg

 - commented out some stray debug code in edit_eprint
 - fixed incorrect attribute name in <style> elements in default
    template.
 - Fixed bug by adding code to ensure that $db->get_index_ids
    does not return any duplicates. [#1022]
 - Render error now sends warnings to log when in online mode.
    [#841] 
 - Fixed bug introduced in 2.3.7, EPrints would fail to set
    a mysql users password in mysql versions < 4.1 [#1010]
 - Added warning to be sent to log if mail does not get sent
    correctly. [#848]
 - If cgi/register fails to send email, it removes the new
    user it just created and redisplays to registration form
    with a warning at the top. [#848]
 - Made the "problems" in the register page appear as css
    class problems (big red box). This way they are more 
    obvious, and in the same style as problems in the 
    submission form. 
 - Changed the "email_failed" phrase to be generic as it will
    be used in several places. [#848]
 - The "cgi/reset_password" form now warns (via webpage) if
    the email did not get sent. [#848]
 - The "cgi/users/change_email" form now warns (via webpage) if
    the email did not get sent. [#848]
 - The deletion request on "cgi/users/review" now warns
     (via webpage) if the email did not get sent. [#848]
 - removed test code from cgi/register
 - If no SMTP server is configured, and an attempt to send 
    mail via STMP is made, the system now logs a warning with
    advice on how to set the SMTP server. [#973]
 - Fixed bug: It was possible to select the "------" divide
    in set search form fields. [#853]
 - Value of secret fields now displays as [hidden] unless for
    some strange reason they are multiple, multilang or
    hasid. [#859]
 - When AnApache loads it checks to see if it can require the
    appropriate Apache or Apache2 module. If not it prints an
    error then sees if the other is available. If it is then
    it prints a suggestion that the SystemSettings param may
    be wrong.  [#884]
 - generate_apacheconf now causes the apache config to set an
    environment variable indicating the apache version it is
    intended for use with. If this ENV is set then it compares
    it to the setting in SystemSettings and if they don't 
    match it prints a helpful error and quits. [#885]

2005-05-17 cjg

 - [#876] New configuration option: allow_reset_password. If 
    undefined it is assumed to be true. If set to false it
    causes the reset_password page to display a "this 
    feature is disabled" message.
 - If you can't register via the web or reset passwords then
    set_password shows the same "feature disabled" message.

2005-05-18 cjg

 - [#979] Added a new callback configuration option:
    sql_adjust. This takes an SQL string and returns a modifed
    version. It is called just before the SQL is passed to 
    the database.
 - Modified $dataset->get_type_fields to log a warning if
    an unknown type is passed to it, and return [] rather
    than fail.
 - [#982] The "whitedot" now loads of the https server if
    we are in https mode.
 - [#970] The script cgi/users/status now correctly checks
    that the user has the view-status priv.
 - cgi/users/staff/edit_eprint used to assume the "archive" 
    dataset if no dataset id was specified. Now it hunts 
    through all datasets to find the item.
 - [#962] Added new option to staff/edit_eprint: Use as 
    Template: called "copy" internally. This clones the
    eprint into the buffer but does not set the succeeds 
    field and does not copy the documents. Nb. that the
    new version will have the same "userid" as the copied
    version, it does not currently get the userid from
    the editor who clones it.
 - [#962] "Use as Template" is available on eprints in
    all buffers. "New Version" is now only available
    on eprints in the "archive" or "deletion" buffers.
 - [#962] When an item is cloned/copied from edit_eprint
    the user is now redirected to the first page of editing
    the new record. 
 - [#1027] Moved hard-wired "Continue" from Session.pm into
    the phrase file.
 - [#1025] Added missing phrase "lib/searchfield:help_itemref"

2005-05-24 cjg 

 - [#1047] If "skip_buffer" is in effect, the "new version" 
    and "use as template" buttons on edit_eprint make the
    new eprints appear in the live archive, not the submission
    buffer.
 - $args is now parsed to handlers in VLit
 - VLit now uses the system wide path for 'convert' rather
    than a hard-wired one.
 - VLit now has a "human" mode for area transclusions.

======================================================================
24/05/2005 - EPRINTS-2.3.12
======================================================================

2005-06-07 cjg
 
 - [#1140] If using mod_perl 2 then detect if the old or new API is
    in effect and make AnApache work accordingly.
 - Added a new method to AnApache : get_request which gets the current
    Apache request, using the old or new API. All calls to 
    Apache->request have been replaced with this.
 - [#1140] Modified ReqestWrapper2 to work correctly with the new
    API.
 - If expecting mod_perl 1 and it's not, then both API's are checked 
    for when testing if mod_perl 2 is installed to give advice
    about it.
 - Removed debug code in generate_static
 - Removed debug code in RequestWrapper2
 - [#1140] Modified configure to detect old and new API's for 
    mod_perl
 - Added new registration intro to archive-phrase-file so as not to
    change the message on existing archvies.

2005-06-09 cjg

 - [#1173] Replaced all occurrances of "archive" in user interface 
    with "repository" instead. (except for self-archiving and
    open-archives)
 - [#1174] Made sure that "buffer" is titled correctly as
    "editorial buffer" in the user interface and configuration
    files.

2005-06-13 cjg

 - Changed PERL to Perl in information.xpage.

2005-06-16 cjg

 - [#862] Added an allow from all to the base html directory. 
 - DataSet::get_sql_dataset_ids now just returns a hard wired array,
    rather than get it from $INFO. is_sql_dataset is now unneeded and
    removed. This allows the order of the id's to be hard-wired.
 - Added new method $dataset->render_name which returns the name of 
    this dataset (in the current language).
 - Corrections to terms in phrase file.
 - Renamed "records" to "items" on default front page.
 - cgi/users/status now uses $ds->render_name to show the name of
    the datasets in the last-indexed section.
 - [#1193] afixed spelling mistake in can't-send-email error.

2005-06-29 cjg 

 - [#972] Caused indexer to reopen STDIN and STDOUT as /dev/null
    and the indexer log file - this prevents a warning about re-opening
    STDOUT as input etc.

2005-06-30 cjg

 - Added new method EPrints::Utils::email_date which gives the current
    date and time encoded for an email header.
 - [#1290] Added Date: headers to both send_email_via_smtp and 
    via_sendmail.
 - [#1210] Fixed typo.
 - [#1097] The any/all of these fields option is now hidden if there
    is only a single search field.

2005-07-01 cjg

 - [#1146] Added an empty phrase to the top of /cgi/latest in case
    people want to add an introduction.

2005-07-04 cjg

 - [#1182] Added default values to user fields "frequency" and 
    "mailempty" this will stop new editors being bugged for values 
    which should have sensible defaults.
 - [#1159] Fixed a bug which meant that edit_eprint would give a 
    500 error rather than a clean warning in the situation that
    no dataset was given AND the eprintid did not exist.
 - [#1005] Code in EPrints.pm which handles threads now checks to
    make sure that loops don't exist. Before it just got into a tight
    loop and never exited! If a loop is detected then the code is
    exited and a warning is logged. If rendering a thread HTML list 
    then a warning message is placed at the point the loop was
    detected. 

2005-07-05 cjg

 - Added option "show_ids_in_log" which causes the id of the archive
    causing the log message to be prefixed to every line it logs.
    This can be set at the archive level, but is more useful in
    SystemSettings to control all archives.
 - Added method to EPrints::Archive, "can_call" which tests to see
    if it is possible to call a subroutine in the config. package.
 - Added method to EPrints::Archive. "try_call" which acts like
    "call" but first checks that it can can_call, and if not 
    silently fails, rather than cause a perl error.
 - The configuration subroutines: "update_archived_eprint" and
    "update_submitted_eprint" are now only called by EPrints::EPrint
    if they exist. They are considered deprecated.
 - Added new configuration option, a function handle called
    "eprint_status_change" which, if it exists, is called each time
    an eprint successfully moves between buffers. 
 - Removed "update_archived_eprint" and "update_submitted_eprint"
    from the default configuration. 

2005-07-08 cjg

 - [#1167] When configure tests for a perl module is now says that
    it's a perl module. Before it said "looking for Apache2... no"
    which confused people.
 - Changed the message at the end of configure from "...to install"
    to "...to install/upgrade". Should be less worrying for people.
 - In "install.pl.in" renamed $c to $from_configure to make the code
    clearer.
 - Also renamed $syssettings to $system_settings_file for the same
    reason.
 - Added a subroutine set($$$$) to update simple system settings 
    values, with an optional default if no value already exists or 
    was provided.
 - [#1191][#1315] set() is now used to set smtp_server, enable-gdome, 
    show_ids_in_log and apache. 
 - [#1192] In an install (not upgrade), install.pl will warn if no
    value for smtp_server has been set.
 - [#1176] configure now checks for DBD::mysql

2005-07-13 cjg

 - [#1164] When an editor removes an item from a user workarea the
    default email message is now different to the one sent when an
    eprint is removed from buffer.
 - [#1178] Editors may now not modify (edit) items in the buffer
    "deletion". They can undelete them and then modify them. There
    is a new config option allow_edit_deleted to turn off this
    restriction.
 - Corrected a missing ; in eprints.css
 - [#1158] On user area page, begin new item, and items-in-workarea
    are now seperate boxes. The box with the items-in-workarea is
    now called "Undeposited Items".
 - [#1089] The deprecated cache option warning in SearchExpression
    ->new now tells the file and line that passed the deprecated 
    option.

** 2.3.13.beta.1

2005-07-20 cjg

 - Fixed bug in package creator which meant the codename didn't get
    set correctly.
 - Dataset unknown field error now reports the archiveid for better
    debugging.

======================================================================
25/07/2005 - EPRINTS-2.3.13
======================================================================

2005-08-23 cjg

 - Changed "deny, allow" to "deny,allow" - apache didn't like the
    space.

2005-08-31 cjg

 - Added start of export plugin support. This includes:
    * New module Plugins which loads plugins and knows about system
       level plugins.
    * New module Plugin which contains a class which represents a
       single instance of a plugin.
    * New top level config /opt/eprints2/plugins/output/
    * New archive config .../foo/cfg/plugins/output/
    * Two initial output types: xml & bibtex
 - Fixed the "use" lines for the new plugin modules.
 - EPrints::Plugins now loads system plugins when it is "use"d.
 
2005-09-12 cjg

 - Fixed bug in $eprint->last_in_thread which reported a loop
    error, even when there wasn't one.

2005-09-13 cjg

 - XML Plugin now ensures utf8() of strings, so duff data will not
    produce an invalid file.
 - Public and staff search now ignore everything after a second slash.
    this makes /perl/search/simple/foo.txt legal. This is used to
    provide sane filenames when exporting via plugins.
 - added $dataobj->export method which exports a single dataobject 
    using a single output plugin.
 - Correction to $session->plugin_call - @array changed to %hash
 - New method $session->plugin_list. This returns the ids of
    available plugins, optionally filtered by various paramaters.
 - Commented out debug code in EPrints::Archive
 - New method $archive->plugin_list which returns the id's off all
    plugins available to the archive (not system plugins).
 - Commented out debug code in EPrints::Plugins
 - New subroutine: EPrints::Plugins::plugin_list() which returns the 
    ids of all system level plugins.
 - Significant changes to SearchExpression:
    * Added documentation for many methods
    * perform_search now returns a SearchResults object.
    * cache_results, dispose, count, map, get_records and get_ids 
       have been moved to SearchResults, but stubs have been left in
       SearchExpression to keep existing code working.
    * process_webpage has been split into several more subroutines
       to improve readability.
    * the search results now have two additional actions. 
    * action=export_redir just redirects to the same URL but with
       a pretend filename suitable for the export format. eg.
       export_soton_xml.xml 
    * action=export takes a serialised expression and a cacheid, 
       and a output plugin id and exports the search results in
       that format. If the cacheid has expired then the search 
       will be silently re-done.
    * SearchResults has an "export" method which calls an output
       plugin on the ressults.

2005-09-14 cjg

 - Added method to all output plugins which returns the URL which
    will export a given dataobj in that format. 
 - Added "/perl/export" which exports an eprint in a named output
    format. If no format is specified, it lists legal formats.
 - Added multilang support to output/core_xml
 - Added method $eprint->render_export_links which returns a <ul>
    of all things an eprint an eprint can be output as.
 - Moved text for export-search results and cgi/export to phrases
    file.
 - export-results now offers only output modes for the current 
    dataset.
 - New method $eprint->skip_validation which returns false unless
    the config option skip_validation is defined, in which case
    it is called as a function pointer and returns true if the
    eprint should _not_ be validated.
 - Added skip_validation test to all eprint & document validation
    routines.
 - Added commented-out skip_validation stub to the default 
    ArchiveConfig.pm
 - Made changes to tech_docs and makepackage to reflect new paths
    in eprint.org website.
 - Fixed bug in install.pl.in which did a numerical compare when it
    should have been string compare.
 - Added plugins directory to the installer.
 
2005-09-20 cjg

 - Fixed typo in install.pl.in "eq" should have been "ne"

2005-09-21 tmb

 - Applied patch to core_bibtex to add grave characters.

2005-09-23 cjg

 - Added /testdata/ directory. This contains a script to load test
    data into a repository, and the files containing that data.
 - Documented many methods in EPrints::Session

2005-09-26 cjg

 - Added new config option "match_start_of_name". This allows name
    searching to work more like it did in version 2.2
 - Added new type of search condition: "index_start". This matches
    search keys which start with the given value.

2005-11-11 cjg

 - Removed OAI1.1 config
 - Added DIDL OAI config 
 - Made the authentication username case insensitive so far as the
    change user feature is concerned.
 - Removed some pointless lines of code from SearchField->from_form
 - added "use bytes" to XML.pm - this solves some of the problems
    encountered with XML::DOM with unicode chars.

2005-11-16 cjg

 - Removed plugins from archivecfg and replaced it with Plugins
    which will use the new perl module based plugins.

2005-11-17 cjg

 - Changed to using perl modules for plugins. 
 - Made output plugins use this system, including archive-specific
    plugins.

2005-11-21 cjg

 - Rationalisted plugin directory names.
 - Merged Plugins.pm into being static methods of Plugin.pm
 - Added inital SOAP related files. These should not go in the
    release until they are more secure.
 - Erasing (completely) an eprint now also causes the static
    pages associated with it to be erased.

2005-11-22 cjg

 - Made a new method to database which returns the sql table of
    a cache given it's ID. Used this throughout Database.pm

2005-11-23 cjg 

 - Auth.pm can now use two additional config-area functions to
    limit a security setting by domain as well as by username.
 - Plugins now check they loaded correctly, and dump error 
    information if they didn't.
 - Split the rendering of search descriptions into what the
    set contains and how it is ordered. These are then passed
    to the results object as seperate XHTML objects.
 - SearchResults can now describe themselves in XHTML
 - SearchResults can create a new search results object with
    their set, but differently ordered.
 - Fixed a regexp to use "/" as a seperator - fixed syntax
    highlight issue.
 - Removed debug print's from Session
 - Auth now has 3 modes REQ REQ_AND_USER, REQ_OR_USER. REQ
    makes sure that a username/password is not prompted for
    when it is irrelevant.
 - Plugins now use paramters where possible rather than 
    functions which just return a single value. eg. suffix.

2005-11-24 cjg

 - Corrected a missing $session in soap/xsd
 - Moved to using params for plugin suffix

2005-11-25 cjg

 - Cleaned up DIDL in accordance with Herbert van de Sompel's
    suggestions. (different namespaces identifier not DC in
    components).

2005-11-29 cjg

 - Changed Session to get the current user from the request 
    rather than reply on the ENV variable.
 - Moved around the SVN Filesystem to match that in the release.
 - Modified URI::Escape and URI::Heuristic to supress some 
    warnings.
 - Corrected a typo in EPrints::Archive which called 
    Prints::abort rather than EPrints::abort

2005-12-02 cjg

 - Added a new metadata field: Time which represents a DATETIME in the 
    database.
 - Modified the way dates and times are stored in the database - they
    now have an additional column called .._resolution which contains
    an integer indicating what resolution the date/time is (minutes, 
    months etc.)
 - Added a "lastmod"ified field to eprints. 
 - Changed the "datestamp" field to "time" from "date"
 - Changed the "joined" field (in user) to "time" from "date".
 - Modified bin/upgrade to change the database to add resolution
    columns, modify datestamp to be a time and date, and add lastmod,
    and modift joined to be a date and time.
 - Deprecated $eprint->datestamp()
 - commit() now only commits if some metadata has actually changed
    or a $force option is set.
 - The $eprint->_transfer method now calls commit(1) to force it to
    write.
 - Removed all calls to $eprint->datestamp
 - $eprint->commit now sets the lastmod field to the current time and
    sets the datestamp to the current time if the eprint is live and
    does not already have a datestamp.
 - Changed the default render_eprint config method so that it does not
    barf on an eprint with no type set.
 - Fixed a bug in DataSet which returned a [] instead of a () when
    get_type_fields was called with an unknown type.
 - New method: EPrints::Utils::get_datetime which returns the given
    UNIX time in the format YYYY-MM-DD HH:MM:SS
 - Changed the layout of $eprint->_transfer
 - Removed out-of-date comments from generate_views

2005-12-06 cjg

 - Rebuilt the indexer! It now works like it did in 2.2 except that
    when fields are modified they are put in a queue and the indexer
    pulls things off of the queue. This means significant changes 
    through some internal systems but very few that will affect 
    anybody.
 - Removed the "index rebuilt" information from search results and
    the status page. 
 - Added a new index "rindex" which is the reverse of "index". Used
    to remove things from the index again.
 - Added code to the upgrade script to remove old index tables and
    build new ones.
 - Added code to all dataobj's to queue indexing when items are created
    or modified.
 - Rewrote bin/indexer
 - Added bin/reindex_dataset which queues an entire dataset for re-
    indexing. An option of --purge will remove all existing index
    information first.
 - New property text_index which if false skips indexinf for that field.
 - text_index and sql_index now have sensible defaults for each 
    field type. ie. text fields are text_indexed and not sql_indexed
    and int fields are the reverse.
 - Index is no longer an object.
 - When a document is modified, the related eprint has it's _fulltext_
    field queued for indexing.
 - updated explain_sql_tables

2005-12-07 cjg

 - Renamed the "users" database table to be "user" to come into line
    with all the other datasets.
 - Yesterdays change to bin/upgrade erased the ordervalue tables in
    addition to the index tables. This has been undone.
 - Also yesterdays update had a type in bin/upgrade conf_id vs confid
    method on dataset. fixed.

2005-12-08 cjg

 - The OAI interface now uses the plugin system!
 - New method for output plugins: xml_dataobj which returns the 
    result as a DOM object.
 - Added plugins for DIDL, DC and OAI_DC
 - The OAI configuration file is now very slimmed down, and includes
    oai_dc and DIDL!
 - The ArchiveRenderConfig eprint_render script now uses the DC plugin
    to get the list of DC elements.   
 - $dataobj->to_xml defaults to the new XML format
 - The output/xml plugin now uses $dataobj->to_xml
 - Added a warning to the $dataobj->to_xml in case an non-existant
    XML version is asked for.
 - Added a warning to the $session->plugin method to warn if a non-
    existant plugin is requested.
 
2005-12-08 moj

 - Added initial versions of Workflow modules to repository
 - Added configuration setting in ArchiveConfig.pm (use_workflow)
 - Archive.pm now loads workflow with _load_workflow function 
 	(from workflow.xml)
 - users/submit respects the use_workflow flag
 - Shifted SystemSettings.pm to SystemSettings.pm.tmpl
 - Added Blister, Default, Subjects, and Phrase plugins 
 	(all developmental, use at own risk)
 - Also added base Control plugin
 - Added Workflow modules to startup.pl
 - Added workflow.xml file to defaultcfg

2005-12-08 cjg

 - Added perl_lib/EPrints/LocalPlugin to make installing from SVN slightly
    easier.
 - Fixed bug in the to_xml function for Name fields.
 - $dataset->to_xml now puts <eprint> not <record> around v2 XML
    items.

2005-12-08 cjg

 - Made Plugin/Control.pm abstract.

 2005-12-08 cjg
 
 - Added a nice favicon.ico

2005-12-08 cjg

 - Plugins now have a type() method to say what type they are
 - The plugins_list method can now filter plugins by type. ie. only
    output plugins.
 - Added an OldXML plugin for the 2.3 XML format. Hidden by default.
 - Made a warning if a non-abstract plugin does not have an ID.

2005-12-12 cjg

 - Added rev_number revision number field to all dataobjects, and the
    code to add it to bin/upgrade.
 - Added favicon to the template

2005-12-13 cjg

 - Fixed cgi/export to understand that not all plugins are output plugins.

2005-12-14 cjg

 - Plugins now have a filter method which takes a type, eg. visible or 
    can_accept and a parameter. It returns true or false. Several of these
    restrictions can be passed to $session->plugin_list to get a filtered
    list. The method is called "matches".
 - Added some accessor functions to plugins - get_type, get_name, get_id
 - Improved the error message when a document has no eprint - now says 
    what eprint ID it can't find.
 - Plugins now have a default property "type" which is output/control/
    whatever.
 - Removed the new() constructor from Control as it confuses how things
    work. I'll need to sync with MOJ about this, but either the params
    should be properties of $self or of $self->{params} but it must
    be consistant. 
 - Added new script /bin/export for export using plugins.

2005-12-15 cjg
 
 - Incrementing rev_number no longer gives a warning if it was not set
    already.

2005-12-15 moj

 - NB: Temporary breakage while switching from Control to Component
 - get_first_stage convenience method added to Workflow
 - Processor rends first stage if none other specified
 - render method now takes in the eprint to render with
 - Stage renders a placeholder control for any nonexistent/broken controls
 - Blister and Default now use the new stylesheet
 - Default renders default values + required images
 - Added initial uploader/multiple modules (under dev)
 - Added JS, help/req gifs, and workflow.css
 - Renamed Control to Component
 - Updated workflow.xml

2005-12-16 moj

 - Fixed Default.pm (was checking wrong var for field info)
 - Updated workflow.css to match the control/component swap

2005-12-21 moj

 - Removed redundant methods from Workflow.pm
 - Stage.pm can now read arrays <wf:array>, which may be nested. 
 - Created FieldComponent.pm to replace Default. This is extended by
    MultiComponent, PlaceHolder, etc - any field which has a title,
    help, and an input.
 - Shifted render_outer (now render_shell) to FieldComponent, and created
    render_field, render_help, and render_title methods. These may be
	overridden when necessary.
 - Updated FieldConfig to not require a metafield to render the shell -
    the necessary values are now passed in a parameter hash.
 - Created MultiComponent. This takes an array of fields, and renders them
    in a sideways table style (headings on lhs, fields on right). It also
	concatenates the help (with headings in between).

2005-12-22 moj

 - Added get_next_stage/get_prev_stage functions to Workflow
 - Processor now has _pre_process to handle stage progression and (soon)
   validation.
 - Can now go forward/back using the standard Next/Prev button bar. 
 - Fixed indentation in Stage
 - _read_params now returns a hashref
 - Removed property setting code for now (will be in future revision)
 - Removed 'delete' call - was mucking up the object (oops)

2006-01-04 cjg

 - Added EPrints Search to SOAP tools.

2006-01-10 tmb

 - Added support for publisher- or funder-imposed embargos.
 - date_embargo field and custom render/fromform functions in
    ArchiveMetadataFieldsConfig.pm
 - date_embargo field part of article type in metadata-types.xml
 - ArchiveValidateConfig.pm (make sure embargo expiry date is in
    future) 
 - Render embargo expiry date on abstract pages (ArchiveRenderConfig.pm)
 - Relevant phrases in phrases-en.xml
 - Created lift_embargos in bin/ - search for and remove expired
    embargos.

2006-01-10 tmb

 - Changed date_embargo to be a system field in EPrint.pm
 - Added date_embargo database upgrades to bin/upgrade
 - Removed custom render/fromform functions for now

2006-01-13 tmb

 - Added output plugins for EndNote (based on Refer) and RefManager (RIS)
 - Tidied up BibTeX plugin

2006-01-16 cjg

 - Modified Utils::get_input_hidden to use a Perl module to hide
    keyboard input, rather than an external tool. Should be more
    portable.
 - configure_archive and erase_archive now use get_render_hidden
    to get the MySQL root password.

2006-01-16 tmb

 - Added support for requesting non-uploaded/restricted documents
 - Added a new system field contact_email in EPrint.pm
 - Added a function "email_for_doc_request" to ArchiveConfig.pm
	which determines the contact email for a given eprint
 - Changed ArchiveRenderConfig.pm so that if an eprint has no documents, 
	or 1+ restricted documents AND we can determine a contact email via
	the email_for_doc_request function, a link is rendered on the 
	abstract page 
 - Created request_doc script which handles a document request
 - Created respond_doc script to handle responses to a document request
	in the cases where the contact email for a document request matches
	a registered user and the documents requested are held (restricted)
	by EPrints.

2006-01-23 cjg

 - Added POD documentation to Dataobj.pm
 - Added POD documentation to SearchCondition.pm
 - Added POD documentation to AnApache.pm
 - Added POD documentation to Config.pm

2006-01-23 tdb

 - Added eprint citation to Dublin Core output
 - Added LogHandler to generate_apache

2006-01-23 cjg

  * removed the mailto: from the OAI2 identify response.

2006-01-23 cjg

  * Improved the _equals comparison between two data structures to be true
    if one is [1,undef,undef] and the other is [1].
  * For the new XML format, added documents to eprints, and files to
    documents. So that they appear as sub elements.

2006-01-23 cjg

  * Removed a commit to a document in SubmissionForm which was not required.

2006-01-23 cjg
 
  * Added some POD documentation to Session.pm
  * Added the History dataset. A new item appears in the history every time
     an eprint is modified, or a document is modified.
  * Added some POD DOCUmentation to Database.pm
  * Fixed a bug which sometimes caused the resulution of a date to be
     incorrectly set.
  * When an EPrint is modified a snapshot of the metadata, including child
     objects (documents, files) is written to the filesystem.

2006-01-23 cjg

  * Changes to bin/upgrade to added the History dataset.

2006-01-30 cjg

  * Changed "the rights you grant" to "the access rights you grant" for
     clarity.
  * Added links to the .ico file in the header of the template. Still needs
     an actual .ico file to exist.

2006-01-25 tdb

  * Added bin/import_xml script to import eprints xml data into an arbitrary
     dataset

2006-01-30 cjg

  * Added PerlDoc documentation to all methods in the top level EPrints modules,
     not including Plugin/ and MetaField/
  * Split SearchExpression into SearchExpression and List. List represents the
     results of a search.
  * Changed the default search style to "AND" not "PHR"
  * When a List gets the perl DESTROY method it cleans up any tables it no
     longer needs.
  * Renamed some varilables inside methods to improve clarity.
  * Added stub methods to EPrints::DataObj to make the inherritance clearer.
     resolves. #1904.
  * Fixed bug in multilingual fields to_xml function (in MetaField/Basic)
  * Added order_value_basic to MetaField/Time
  * Removed unused methods
    * $session->old_render_option_list
    * EPrints::Utils::cmp_names
    * EPrints::Utils::cmp_namelists
    * EPrints::Utils::cmp_ints
    * EPrints::Utils::cmp_strings
    * EPrints::Utils::cmp_dates
    * EPrints::Utils::is_in
  * Fixed a bug which wasn't padding the time part of time fields with 0.

2006-01-30 cjg

  * Search API now gives warnings if non legal options are passed for match
     and merge. Closes #1211.
  * Removed a line of debug code from List.

2006-01-30 cjg

 - Added a robots.txt telling them to leave /perl/ alone. It's only in the
    static website config, so will not appear on upgraded archives. Closes
    #1897.

2006-02-01 cjg

 - Staff searches now show plugins with both "all" and "staff" visibility.
    closing ticket #1673

2006-02-01 cjg

 - Added XMLFiles export plugin which outputs eprints 2.4 xml format with
    the files embeded (unlike the other XML output plugin).

2006-02-01 cjg

 - Removed some unwanted comments from Plugin::Output::XML
 - Fixed any incorrect calls to SearchField. Now all merges are "ALL" not
    "AND". Fixed some typos in previous commit.

2006-02-01 cjg

 - New command line script: erase_eprints. It erases the eprints without
    touching the users or subjects. Also recreates the SQL tables so makes
    metadata tweaking have a faster turn-around. Closes #1902
 
2006-02-01 cjg

 - Everywhere the code skips "CVS" directories it now also skips ".svn"

2006-02-01 cjg

 - Added an option to $dataobj->to_xml. If embed is set to 1 then the 
    entire file is output encoded in base64.

2006-02-01 cjg

 - History now knows how to render itself as XHTML.
 - When an email is sent to the owner of an eprint a history record is
    created.
 - When an eprint is moved between datasets, a history record is created.
 - Moved render_xhtml_field from Utils to Extras (although the old method
    still calls the new one for compatibility).
 - New method in Extras: render_preformatted_field which renders a field
    value in a diff.

2006-02-01 cjg

 - New method to database. counter_reset which sets a counter back to 0.

2006-02-02 cjg (it's by birthday. I'm 30. Woooo!)

 - Large redesign of the edit_eprint page. It now allows jumps into any
    point in the edit process. The edit process has different buttons 
    when running in staff mode. The edit_eprint page can show 3 different
    views: summary, full metadata or history. 
 - Added some missing phrases for new system metadata fields.
 - Added a new render_full method to dataobj. 
 - Removed the render full functions for eprint and user form. Now just 
    uses the render_full method.
 - Added new EPrints::Session method, render row. This takes a title and
    a value and renders an HTML table row with them in.
 - Rewrote default render functions in ArchiveRenderConfig.pm to use 
    $session->render_row. 
 - Removed the, now not needed, render row function from ArchiveRenderConfig
 - New metafield property: show_in_html. Defaults to true, but if set
    to false then won't be shown in render_full.
 - Fields in user which are totally system only, such as pin and new
    email are set to show_in_html.
 - When an EPrints::Session terminates it now deletes all the properties
    which should improve garbage collection. 
 - When adding a record to a dataset, eprints now checks to make sure
    that the record doesn't already exist in the dataset.
 - removed dataset from edit_eprint. It is less efficient, but more 
    reliable to just work through by elmimination.
 - removed export_xml - export should handle the same functions in the new
    plugin scheme.
 - added 'documents' to the create tables in erase_eprints (forgot it last
    commit).
 - Changed Plugins to use the class name as the ID (with the EPrints::Plugin
    removed).
 - When a document object is created by an eprint it the document retains
    a handle on the eprint rather than having to reload if get_eprint is
    called.
 - Changed the testdata script to commit the eprint before starting the
    document to give cleaner diffs.
 - Added a staff export eprint script to allow them to export individual
    records in formats not available to the public.

2006-02-08 cjg

 - EPrints::List can now be constructed with a list of values, and if no
    order property is set, the initial ordering is preserved.
 - bin/export can now handle lists of objects ids, single objects and
    can list which plugins can handle lists only or dataobjects only.

2006-02-09 cjg

 - Added phrases for the History module.
 - The staff export script can now output EPrints from any dataset, not
    just archive.
 - added can_clone=0 to all rev_number fields. The revision number should
    revert to 1.
 - If a dataset is asked for the pages of an unknown type it now returns
    an empty list instead of crashing.
 - Plugins now have a get type and a get sub-type method which returns 
    everything before and after the first :: respectively.
 - History now renders nicely.
 - A warning is now given if an EPrint has no valid directory set.
 - bin/upgrade broken, but with notes of what it needs to do before we
    make the next release.
 
2006-02-09 cjg

 - Changed $user->get_eprints, get_owned_eprints and get_editable_eprints
    to return an EPrints::List instead of an array. 
 - Everything which uses those methods now handles the list object instead
    of the array.
 - Added a new method to EPrints::List: merge, which creates a new list 
    containing all the records from two existing lists.
 - Set CGI module to compile on load, this may be slightly more efficient
    under mod_perl.
 - Added a new mode to session, mode 2, which means online, but ignore the
    CGI data (so it's not consumed by the authentication sessions).
 - Just in case, uploaded files filehandles are reset to the start of the
    file.
 - If there is a problem with the eval code in AnApache, it will now quit
    reporting the problem.
 - bin/export now quits with an error if an invalid plugin is selected. 

2006-02-13 cjg

 - Changed the OAI plugin config to be a hash not an array. This means that
    the metadataPrefix does not have to be the plugin id.
 - Added a new oai output plugin for the UK ETD project at the BL. It's 
    enabled by default.
 - Made eprints type an oai set to help the ETD project.

2006-02-13 cjg

 - Added SOAP methods to add/remove files. add/remove documents and modify
    eprints and documents.
 - Cleaned up WSDL generator to be more simple.

2006-02-13 tdb

 - Added prepare_cmd to EPrints::Utils. Prepares a command as specified in
   SystemSettings by substituting named variables.
 - Cleaned up help text for get_input_hidden
 - Fixed abort() location in bin/startup.pl
 - Plain-text conversion now uses Convert plugin(s)
 - Added search-like ability to Convert::can_convert

2006-02-14 tdb

 - DC Output: Changed abstract page to be relation and full-text links to be
   identifier
 - Changed Convert/pdftotext.pm to PlainText.pm
 - Added support for antiword, ps2ascii, elinks (if configured in SystemSettings)
 - Removed Convert/* modules (superceded by EPrints::Plugin::Convert)

2006-02-16 cjg

 - Fixed bug in SearchExpression - didn't correctly extract the ID of 
    output plugins. (due to change from / to :: as the seperator).

2006-02-16 cjg
 
 - Added a method to AnApache which gets a named cookie, but does it
    without using CGI.pm so that the POST request is not consumed.
 - The language cookie now uses this method.
 - The http_header method in session now can print an eplogin cookie
    for cookie based authentication (being worked on).

2006-02-19 cjg

 - Added input plugin system.
 = Added bin/import to import things
 - Added an import plugin for the new EPrints XML schema. It even handles
    files.
 - Added $dataset parameter to EPrints::DataObj->new_from_data, to bring 
    it in line with EPrints::EPrint->new_frmo_data
 - Also added a create_from_data method to dataobj which creates a
    new object of that type from a standard data structure. This is a 
    standardised function and deprecates the existing create method.
 - Added get_defaults to all the DataObj objects which sets the default
    values for a new object. Used by create_from_data.
 - Fixed bug in is_set so that it does not need the data to be set in
    the object, just the field exist in the dataset.
 - Added intersect and remainder methods to List. Renamed merge to union.
 - Added MetaField::File which is a no-sql-columns metafield which is 
    used to represent the files in a document.
 - Added MetaField::Subobject to represent documents in EPrints and
    Subscriptions in User.
 - Added a 'import' flag to certain types of dataset to indicate if it
    is possible to import items into them.
 - Several minor code relayouts. 
 - Added a create_object method to dataset to create a new object in
    the dataset.
 - Improved the error reporting when loading plugins.

2006-02-21 cjg

 - Fixed assumption in the user email method that the "name" field 
    of a user would always exist and be of type "name". Now uses describe
    instead.
 - Added a confess if make_name is called with something other than a 
    hash. 

2006-02-21 cjg

 - Moved all subclasses of DataObj into DataObj/
 - Made stub functions in EPrints::Session to handle any pass along 
    static calls to methods so that nothing breaks.
 - Made a new module EPrints.pm which loads all the other modules in
    the right order.
 - All scripts and modules now just "use EPrints" without worrying
    about additional details.
 - Moved EPrints::Config::abort to EPrints::abort. (old name will still
    work). 
 - Added several calls to abort() and changed some calls to confess() to
    use abort() instead.

2006-02-21 cjg

 - Added new field "status_changed" which is set to the current time each
    time the status of the EPrint changes (ie. it moves between datasets).
 - Made this field appear on the edit_eprint view.
 - Removed a warning from new EPrint because sometimes eprints are created
    without an ID field. Although this is iffy.
 - Fixed a bug in the EPrints::create method from where create_from_data
    was added.

2006-02-21 cjg

 - Cleaned up some more typos from the DataObj/* change and the 
    create_from_data change.
 - Made the add record method skip subobject fields.

2006-02-21 cjg

 - Added a link from edit_eprint to buffer.

2006-02-22 cjg

 - Seperated the code from citations which handles ifset and ifmatch into
    a seperate method which can be used by the workflow system: 
    collapse_conditions.

2006-02-22 cjg

 - Renamed EPrints::Archive to EPrints::Repository.
 - Renamed all $archive variables to $repository 
 - Changed all get_archive calls to get_repository
 - Renamed s/archive/repository/ in comments.

2006-02-23 tdb

 - Fixed bug in Plugin::loaddir where subclasses were being loaded before
    superclasses

2006-02-23 cjg

 - Added a BackCompatability module and moved all the stub packages from
    Session into it.

2006-02-23 tdb

 - Added accesslog dataset to store accesses to the EPrints server, with
    supporting Access DataObj.

2006-02-23 cjg

 * Changed SOAP scripts to use get_repository.

2006-02-23 cjg

 * Merged inbox,buffer, archive and deletion into a single set of SQL tables
    prefixed with "eprint".
 * Status is now represented as the field eprint_status. Which is of type
    set.
 * The seperate datasets continue to exist but as sub versions of eprint. 
    If an eprint is added to these datasets it gets its eprint_status set
    to the id of the dataset. If a dataset map, count or get_item_ids is called
    on one it only returns the appropriate ones, not all.
 * Added feature to search fields so that they can be excluded from the
    description.
 * All items with rev_number now set it to 1 in their defaults.
 * When the files of a document are modified, if main is not set then it is
    set to the alphabetically first file.
 * Added CREATE history even for when EPrints are created.
 * Removed () from the end of methods in EPrint.pm
 * Rewrote the eprints _transfer code to reflect the fact it is now much
    more simple.
 * Made some changes to the version/succeeds threading. May cause eprints to
    be included which are not in the "archive" dataset. It's not clear how
    much of a problem this will cause.

2006-02-24 cjg

 * Renamed Search modules to be EPrints::Search, EPrints::Search::Condition
    and EPrints::Search::Field

2006-02-24 tdb

 * Modified LogHandler to use EPrints::OpenArchives::oai_identifier
 * Changed timestamp to datestamp field in Access to be consistent with EPrint
 * Added ContextObject and Journal output plugins (Journal is really an
    auxillary plugin)

2006-02-28 tdb

 * Added wrap_text method to EPrints::Utils
 * Added get_input_bool method to EPrints::Utils (uses wrap_text)
 * Modified scripts to use get_input_bool
 * Modified EPrints::Utils xml_to_utf8 to use wrap_text and cleaned up
    indenting
 * Added Permission dataset
 * Added permission_group to User and Document

2006-02-28 cjg
                                                                                                                                                             
 * Added $dataobj->exists_and_set which is like is_set but does not give a
    warning if the field does not exist.

2006-02-28 cjg

 * Change to the are-you-sure code in bin scripts - now uses a variable called
    $sure for clarity, and also tidied the code a little.

2006-02-28 cjg

 * Moved Apache related methods into a subdirectory Apache/ and renamed them. 

2006-02-28 cjg

 * Changed all output plugins to use exists_and_set rather than is_set. 

2006-02-28 tdb

 * Renamed Utils::get_input_bool to get_input_confirm and changed $default
    option to be $quick (ask only for [y/n])
 * Moved LogHandler to Apache/

2006-02-28 cjg

 * Improved behaviour of get_input_confirm - now reprompts if it gets a non
    yes/no value. Also fixed bug where it didn't trim "\n" from the inputed
    data.

2006-02-28 cjg

 * The call-back properties in Metafield can now be scalars describing the
    method name, rather than code references. 
 * Added a method $metafield->call_property() which calls the named property
    regardless of if it's a code reference or a scalar. 

2006-03-01 tdb

 * Changed create_user to create in cgi scripts.
 * Changed 'to' to 'recipient' and added check in send_mail_via_smtp 
    (otherwise rejection by the smtp server wouldn't be caught) - 'to' isn't 
    documented in Net::SMTP???
 * Added brackets around URLs in emails (confirmation email and document
    request) - most mail clients should be able to handle wrapped URLs if
    enclosed in brackets.

2006-03-01 cjg

 * Changed default ArchiveRenderConfig to use scalars for call-backs instead 
    of code references.

2006-03-02 tmb

 * Added ssl_base_url entity and template-secure-en.xml for easier HTTPS setup

2006-03-03 cjg

 * Caused the Apache related modules to only be loaded under mod_perl. This 
    also fixes a problem between the Apache modules and Devel::DProf
 * Added a new metafield property: import (default 1). If set to zero then
    this field is ignored when the item is created. Used for eprintid's,
    user'ids (*not* subjectids). Also used for "dir" and "last modified".
 * $field->render_single_value and $field->get_values now accept render_opts
    as a parameter, over-riding those set in the field.
 * Added a final method to fields to indicate they are cached and should not
    be modified. Causes an error if a property is set on a finalised field.
 * DefaultXML import now removes tmp files after each item, rather than 
    waiting until the end.
 * Input plugins now output more information if noise is set.
 * field_from_config_string now only clones the field if render_opts was set.
 * Updated the POD for bin/indexer
 * The indexer now rolls the logs once per day.
 * Cleaned up the non-daemon mode of the indexer.
 * import_subjects had an import_bool which needed to be changed to 
    input_confirm .
 * Minor tweaks to import_test_data

2006-03-06 cjg

 * Renamed get_db to get_database
 * Rewrote ->error() as ->error

2006-03-11 tmb

 * Added EndNote Input plugin

2006-03-14 cjg

 * Deprecated create class method on dataobj's in favour of the create_object
    method on $dataset (which could do with renaming).
 * Fixed a bug in the validate subject id method.
 * Cleaned up some variable names and calls to create.

2006-03-15 cjg

 * Removed render_opts property. Each render_opt becomes a property in its
    own right. Closes #1989.

2006-03-16 cjg
 
 * Added an XML tidy method to produce indented XML.

2006-03-21 tdb

 * Removed METS test plugin (no relevant profile for eprints)
 * Added Dissertation ContextObject support
 * Few fixes to OpenURL Output
 * Added ContextObject to OAI outputs

2006-03-21 cjg

 * Changed dates (and times) to use INT's with NULL indicating an unknown value.

2006-03-21 cjg

 * Updated bin/upgrade to get more of the way from 2.3 to the next release. Not
    quite there yet. 

2006-03-22 cjg

 * Moved around Output::ContextObject - made it a little easier to understand.

2006-03-22 cjg
 
 * Added an error if the dataset is requested from an eprint with no 
    eprint_status 
 * Added HTML and ASCII output plugins
 * Added system to detect broken plugins and disable them
 * import and export scripts now warn of broken plugins, and can explain why
 * EndNote now correctly registers as broken if the required modules are not 
    installed.
 * Renamed parameters and methods in plugins to call eprints data structures
    epdata rather than data.
 * Input plugins now take a file handle rather than a string. Possibly later
    they should except either.
 * Added new input method for XML plugins: xml_to_dataobj which just calls
    xml_to_epdata, which should be subclassed.
 * Renamed the accesslog dataset to access for consistancy
 * Disabled the privilages dataset
 * Added an under construction flag to documents so that they don't cause an
    eprint to be re-commited when they are constructed. 
 * Rearranged code in LogHandler for readability
 * Added optimisation to List.pm - no point caching a single item - now just
    does a get instead.
 * Added microsecond timer to SQL do method (for debugging).
 * Added script name/user name to history dataset

2006-03-23 cjg

 * Under construction flag for dataobjects. Used to avoid generating logs and
    static pages twice.
 * Renamed Plugin::Input to Plugin::Import
 * Dataset_id field is now set in creation before defaults, so the defaults 
    can see it.
 * Renamed Plugin::Output to Plugin::Export
 * EPrint default values now sets status_change and lastmod. datestamp is set
    if it's part of the archive dataset only.

2006-03-24 cjg

 * user home page now uses a phrase to control layout.

2006-03-27 cjg

 * Fixed bug in cgi/register (didn't work!)
 * Changed email system to use MIME::Lite
 * Changed email system to send HTML as well as text emails
 * Tweaked the subscriptions to look better under HTML
 * Made <a href=""> convert to text by inserting the URL in brackets after
    the link text.
 * Rewrote collapse conditions to handle more complicated paramteters, ready
    for the new workflow code.
 * The email methods have a new hash based set of paramters. This will break
    any configs with custom email setups, but should be easy to adapt them.
 * EPrints now set automatic fields when they first get created. 

2006-04-06 cjg

 * XML to_string method now allows ProcessingInstructions. Things in <?..?>

2006-04-28 cjg

 * Added cookie authentication
 * Removed old basic auth configuration
 * Split current_user and authentication methods into basic and cookie
 * Added a read_params method to session. Session parameters are not consumed
    until needed.
 * A SQL table stores the tickets for logged in users.

2006-04-28 cjg

 * Fixed only-one-result bug. 
 * Made user methods only request one result for by-username etc.

2006-05-02 cjg

 * Minor style changes to LogHandler
 * Commended out not-yet-working GEOIP code.

2006-05-03 cjg

 * Remove duplicate ->connection line in Session
 * Added a check to current_user_cookie to check it's not in command line mode.
 * When an undef is passed into List->get_ids for the count, but not the offset,
    it now works out the correct value rather than printing a warning.
 * Made default directory /opt/eprints not /opt/eprints2
 * Updated bin/ scripts to use /opt/eprints/bin by default
 * auto apache config files are now stored in var dirs rather than cfg
 * removed config element sys_path as it is not used.

2006-05-04 cjg

 * Fixed bug in List which was introduced by the code which skipped caches 
    when only item was required. The bug occured when ALL items where 
    requested.
 * DataObj->render_full no longer renders subobjects.
 * Fixed a warning in DataObj/Subject.pm
 * ArchiveConfig can now handle an eprint without a valid userid.
 * New system field for EPrints - metadata_visibility which can either be 
    'show' meaning the normal behaviour, "no_search" which stops the 
    metadata appearing on public searches and browse, but does not hide 
    the abstract page, and "hide" which supresses the data and abstract 
    page from all non-registered users. no_search does not remove the item 
    from OAI, but hide does.
 * Fixed a DOM warning in oai2.

2006-05-08 cjg

 * When an eprint has its status changed or has its succeeds setting changed
    then it, the item it succeeds (if any) and the item it previously 
    succeeded (if any). 
 * Fixed bug in History that aborted with an error if the 1.xml file did not
    exist rather then rendering a warning and continuing.

2006-05-12 cjg

 * Removed debug line from FieldComponent.
 * Moved arround Input plugins to new layout. Fixed some minor issues like
    a missing ISA.
 * Fixed lots of typos and bugs in the FieldComponents to make it actually 
    work with the demo.
 * Added a demo script to check workflow stuff works - remove before beta.

2006-05-16 cjg

 * Moved metafield to Plugin::Field - will break code until the backcomp. 
    stuff is in place.
 * And undid it again because it all went wrong.

2006-05-17 cjg

 * Added experimental OVID link to abstract page
 * generate_workflows now generates a more compressed version with if's
    removed if possible.
 * EPrints::XML now has "strict" mode working properly - some minor fixes
    were required as a result.
 * the XML tidy method now can be told to ignore certain elements.

2006-06-05 cjg

 * Fixed bug in phrase for user homepage.
 * Commented-out code which generates experimental OVID/SFX links
 * Removed use_workflow option - it's not going to be optional.
 * Documents now only update their EPrint if they know what that eprint is
    (workaround for bug)
 * Fixed problem with generate_workflows - the if's needed merge="ANY"
    as they default to ALL.
 * Overhaul of MOJ's components: 
 * Components now know what session and dataobj they are working on.
 * Removed InputField - it now just makes a cloned metafield.
 * If type/page related methods are called on dataset it now loads a 
    bunch of workflows to work out what values to return. It's not very
    efficient, but the plan is to phase it out.
 * Workflow configs are now loaded when eprints start.
 * Added a cheap and cheerful way for staff to search the history.
 * Added a config option to add additional tools to the user home page.

2006-06-09 cjg
 
 * Added methods to append and prepend stages to a workflow.

2006-06-12 cjg

 * Properly commented EPrints::DataObj::History
 * Fixed bug which didn't write the revision of an EPrint when it was 
    created.
 * History now shows revision number.
 * Fixed bugs which meant 1.xml revision didn't get written.
 * Made "action" in history into a set rather than text field.
 * EPrints now log when they are destroyed
 * Fixed the history so it can now render history events for destroyed
    items.

2006-06-14 cjg

 * Fixed possible bug with Apache 1 in cookie login (although it might
    not work for other reasons)
 * Changed GET and POST to lowercase to be stanadards compliant
 * Templates are now optimised to avoid using the DOM system where 
    possible.
 * Static pages are now written using a single function, which also
    creates cache files describing just the page_content, title and
    title with images stripped. This can be used by the optimised 
    template system.
 * Dynamic pages: this allows dynamic content to be included in other-
    wise static pages.

2006-06-15 moj
 
 * Added cgi/users/eprint - this makes use of the Workflow modules to
    handle EPrint editing
 * Added get_last_stage_id to Workflow for use by button bars/blisters
 * Added process to Workflow - this is the equivalent of the SubmissionForm
    method, but greatly trimmed down and not reliant on any specific 
	stages.
 * Tided Stage to only require the stage XML and Workflow object on 
    construction.
 * Stage now pulls the 'surround' choice from the <component> if it's
    there. Could probably move to a <surround> config option later.
 * Added ReviewComponent (currently a null component), PlaceHolder (for
    when components can't load), and ButtonBar (renders prev/next etc).
 * Added the None surround - renders a component with no extra decoration.

2006-06-16

 * Loads of work on cgi/epint to make it have a neat interface.

2006-06-19

 * Fixed bug in generate_static which used "body" instead of "page"
    as the part name for generating pages.

2006-06-21 moj

 * Updated CSS for the control tabs + action bar
 * Interface/EPrint/Control and Interface/EPrint now use the actions as defined
    on the wiki.
 * Added 'interface' method to Interface/EPrint - this returns the prefix for
    any phrases.
 * allow_action now has the same functionality as edit_eprint

2006-06-26 cjg

 * Reverted some changes to CSS and phrases by moj :)
 * Added Compound fields
 * Removed hasid support
 * Added object passing to all render and input field methods
 * Added code for set_value and get_value to do something special for compound
    fields. 
 * and get_data too.
 * Added concept of virtual fields for fields which do not exist in the
    database.
 * Added export links tabs to eprint control page

2006-06-27 cjg

 * Another fix to the tab css
 * Added "edit" tabs to the control page
 * Added javascript to switch between tabs
 * Fixed issue with // in a stylesheet
 * Added padder to stop problem with script tags being collapsed.

2006-07-05 cjg

 * Fixed a bug in the history rendering of xml diffs
 * Control page tabs now use <table> not <ul>

2006-07-06 cjg

 * Added minimal render_toolbox method to session
 * Added get_next_id method to session to create unique id's in the
    HTML page.

2006-07-07 moj

 * Workflow now runs update_from_form on stages
 * Added validate/update_from_form to stage
 * Surround now handles ->{problems}
 * Created UploadComponent for file uploads
 * New methods in Component: update_from_form, validate, params/param
    (to get component-specific parameters), and get_problems

2006-07-13 cjg

 * Added URIs to all plugins
 * More work on eprint control page. Not complete, but much progress.
 * Moved around the interface code to make better use of inheritance.

2006-07-14 cjg

 * More development on new user interface. The interface is no longer
    staff or not staff, that's a property of the screen or tab.

2006-07-19 cjg

 * Fixed template - search was hardlinked to flag.ecs
 * Added $session->render_tabs plus a javascript function to support it.

2006-07-21 cjg

 * Removed workflow->process as it's not used any more.
 * Added Home as a screen in the interface. Currently home is the deposit
    screen, but it will probably become a jump-off screen to take you to
    the first tool you can use. The current code will probably become
    "Deposit".
 * Deposit tool now shows all owned eprints in any dataset (will be 
    filter-able later)
 * Removed user-page layout stuff from phrases.
 * Renamed the action phrases to have a logical set of ids for names and
    help text.
 * Tweaked workflow demo to use an eprintid on my machine and handle the
    changes to workflow.pm
 * Shortend the names of the workflow stages
 * Improved MetaField::Set to handle null defaults in the input renderer.
 * Many more changes to the user Interface modules, including addin a 
    new view of eprints for non-owner, non-editors. Making the views all
    subclass EPrint::View. Making EPrint::View make a redirect to a 
    sensible view. Adding a wrapper for all logged in pages, and a weapper
    for pages dealing with a single eprint record.
 
2006-07-24 cjg

 * Added javascript to template which causes the scroll bar to always be
    shown.
 * Added stubs for all user tools.
 * Added sketch of tool defintion code to Screen.pm
 * Added Status tool.
 * Added colour codes to the deposit view.
 * Added a new default workflow for eprints - shorter and nearer.
 * Added phrases to make workflow look neater.

2006-07-25 cjg

 * Merged MetaField::Basic into MetaField. Removed MetaField::Basic.
 * Added eprints.js for eprints own javascript functions.
 * Included it from the template
 * Added a javascript toggle which can handle toggling things which start
    hidden, without needing a style='none' in their element. 
 * Added classes to handle only_js and no_js without using !important for
    IE compatability.
 * Surround help and the tools bar now use these functions.
 * Changed ref="" in phrases files to id="" and changed the namespace to ep3.
 * Added a warning if a phrase with no id is loaded, although it will fall
    back to ref="" for easy compatibility.
 * Begin new item link now works again.
 * Renamed "Home" screen to "Items"
 * Added "FirstTool" screen which redirects to the first available tool,
    usually Items.
 * Restructured defaultcfg directory - this will take several commit's to
    get all done.
 * Changed Repository and Language to load files from new locations.
 * Fixed minor bug in toolbar.
 * Moved cgi/users/control to home. It's now the key interface for users
    in eprints.
 * Removed some unused cgi scripts.
 * Made EPrint::Remove pass through to FirstTool when it's done.
 * Deprecated get_url( 1 ) as we no longer have staff mode per se.
 * Added $eprint->get_control_url 
 * Made the abstract renderer call that method to link to the control page.
 * entities-en.dtd is now generated in var/ to avoid messing up /cfg
 * XML files are symlink/loaded from var not cfg now. 
 * XML files symlinks are now removed from var after use.
 * fields.dtd is no longer used. 
 * Split XML::GDOME and XML::DOM specific parts of EPrints::XML into two
    sub files. One or the other is required.
 * Removed all uses of hasAttribute as it's not available in XML::DOM
 * Added phrases for tools names.
 * Removed unused components eg. BlisterBar
 * Renaming components to shorter names.

2006-07-26 cjg

 * Split style sheet into parts. Began process of making rational class names
    for all css used in eprints.
 * Removed debug code from workflow.pm
 * Rejigged eprints workflow to be closer to what we plan for 3.0
 * Shortend names of several component modules to be more manageable.
 * Moved vlit.css to sit in same dir as other css files, but didn't rename 
    the classes as they are reasonably prefixed and pretty much a seperate  
    system.
 * Moved the workflow surround styles into the new scheme.
 * Moved the search form and results styles into the new scheme.
 * Moved the blister bar style into the new scheme.
 * Moved the old style input form components and buttons into the new scheme.
 * Moved the toolbox and messages styles over.
 * Tidied up last style in tabs 
 * Changed requiredness of a field to be a red star icon. Not css'd yet.
 * Sorted out style of required stars.
 * removed *'s from phrases. May put them back in later.
 * Fixed bug in View::Owner which auto forwarded to View::Editor due to
    inherriting from View
 * Added a phrase for adding required icon to a label
 * Moved example style to ep_form_example
 * Added a ep_ prefix to problem_field classes

2006-07-27 cjg

 * Added alt tag to required Star.
 * Added a mini scripting language for collapsing workflow (and citations)
 * Changed to using attributes for 'required' rather than elements
 * Fixed bug which meant database opened too many connections.
 * Moved install dir to /opt/eprints3 and made the scripts expect this when
    running from SVN checkout.
 * Multi fields now validate required contents.
 * Multi fields now available as problem_field targets.
 
2006-07-31 cjg

 * Added a new debugging message to Script when property or method is called 
    on an undefined value.
 * Tweaks to improve the look of the input form.
 * Added collapse feature to components.
 * Moved Screen into the plugins system
 * Got reject_with_email screen working. 
 * Fixed bug in mailer which corrupted the message which meant a seg-fault
    when the email got logged.
 * Got reject_with_email and remove_with_email working.
 * Changed email messages to talk of "items" not "eprints"
 * Fixed bug which meant the help toggle didn't work on IE (can't use display
    type of "table-cell")
 * Changed surround title bar to use a div not a table.
 * Added + and - icons to the show/hide help.
 * Moved the help to be inside the toolbox
 * Added seperating lines to multihelp and added names of fields before each
    help section in multi.
 * Added test_config to load a repository but not do anything.

2006-08-03 cjg

 * Moved citations into seperate files for clarity
 * Citations now use new style workflow control
 * Commented out pod for citation methods - they should not be part of the
    API execpt via $dataobjs.
 * Subject now bypasses the citation system to improve the speed of rendering
    the subjects page.

2006-08-04 cjg

 * Tidied up file upload component.
 * Changed coverimage to image (more work needed there)
 * Changed AnApache to have file upload methods in the non-apache specific
    bit, as they are not.
 * Caused object handle to be passed throughout rendering input and from-
    forming of fields.
 * Changed the "prefix" passed around fields into a basename to tie it in with
    the workflow basenames.
 * Added a hacky property to set fields to allow their tags and labels to 
    depend dynamically on the object. Used this for $doc->main
 * Internal buttons can now be images.
 * Made Edit_staff inherit from Edit
 * Made internal buttons in components use #t to keep them on screen.
 * Added method to component that tests if a button was pressed within that
    component.
 * Rendering names for views now obeys render options. 
 * Moved templates into template directory.
 * Moved non-editable files from /cfg into /lib

2006-08-07 cjg

 * Reworked screens to use properties rather than methods for expensive, 
    and the priv required to view them.
 * Checked the $screen->{priv} property where appropriate.
 * Actions now can be called on screens as methods, but they must be 
    registered in the constructor.
 * Shifted edit and edit_staff to use actions like this.

2006-08-08 cjg
 
 * Moved _staff screens into a Staff/ directory.
 * Made screens register themselves as parts of lists. These lists are now 
    used by the tools, other tools and eprint view tabs.
 * Renamed screens with _ in the module name to use CamelCase instead.
 * If there is only one "other" tool then it doesn't bother hiding it below
    the cut.
 * Plugins now have their own logical prefix in phrases, and a handy method
    which gets their phrases without adding the prefix by hand.
 * Added a move screen to handle moving eprints around, although it never
    actually gets rendered.
 * Actions work in lists, as well as just screens.
 * The actions screen now picks up actions and has (most) of the actions 
    registered with it.

2006-08-09 cjg

 * Split metadata-types.xml into /types/document.xml etc.
 * Added deprecated warnings to type-related methods in dataset
 * Nerfed get_fields_required_for_type as it won't be used soon.
 * Datasets no longer have types (actually they still do in the code, but
    the don't conceptually)
 * Renamed archive config perl modules to have shorter names.
 * Fixed typos in types/eprint.xml
 * Shifted /en/ to be /lang/en/ in .../cfg/ and /lib/
 * Made systems phrases file be in a phrases dir, so there can later be
    other top level phrase files (eg. for plugins)
 * Removed other types related code called on dataset. Now uses session
    an repository calls.
 * Changed set to have two overriding methods input_tags and render_option
    (this fixes issues with datatype.pm)
 * Changed the datasetid param in datatype fields to be "type_set"
 * languages.xml is no longer loaded by the repository and has been removed.
 * languages are now loaded from the types.
 * removed lanuage dataset
 * removed language related methods
 * added lots of phrases for all major languages to system phrases.
 * removed licenses.xml
 * used datatype system for licence field in document.


2006-08-09 tmb

 * Split search result pagination out of Search into a generic function 
    which paginates any List of items
 * Function currently in a new Paginate module, but needs a better home 
    - perhaps in List?
 * Added page jumps to existing Next/Prev page links

2006-08-09 cjg
 
 * Removed old submission code.

2006-08-09 cjg

 * Moved subscriptions to the new user interface

2006-08-09 cjg

 * Shifted old type methods into backcompatibility.pm
 * arclanguages dataset now replaced with a special subclass of "set" 
    field which has the options of the languages allowed for the 
    current repository.

2006-08-09 cjg

 * Removed DataObj::License and DataObj::Permissions, MetaField::License
    and import_permissions. Removed them as datasets too.
   (permissions may make a come back in 3.1)

2006-08-11 cjg
 
 * Added some missing images. 
 * Added missing Fields.pm
 * Added missing languages.xml

2006-08-11 tmb
 * Lists on Items and Editorial Review screens are now paginated
 * Added sorting functionality to Editorial Review screen
 * Added simple default template for rendering pages

2006-08-14 cjg
 * Added order_methods param to searches to override default options.
 * Added custom order list for editorial review screen.

2006-08-14 tmb
 * Deprecated get_order_names and get_order_name
 * render_order_menu in Search now renders labels for its order_methods 
 * Added specific configuration options for sorting methods on editorial 
    review screen
 * Displayed the right datetime info on items (lastmod) and review 
    (status_changed) screens

2006-08-15 tdb
 * Added get_gid method to DataObj (implemented for EPrint and Access)
 * oai2 now uses xmlns and schema from the plugins
 * Modified OA:make_record to take a plugin argument to export to XML
 * Now only uses output_plugins argument from config

2006-08-15 cjg
 * Added addition filter to export plugins to test if they have an xmlns.

2006-08-21 cjg
 * Rewrote generate_static to use /lib/static as well as archive static.

2006-08-21 cjg
 * Changed datatype fields to be called namedset
 * types/*.xml are now namedset/* and are plain text, not XML
 * Changed public security from "" to "public" on documents.

2006-09-04 cjg
 * Removed type validation from EPrint

2006-09-04 cjg
 * Mapped status, editor, deposit and editor user flags into detailed privs
    - still needs other flags doing, and some privs may need tweaking.
 * Added $user->allow() to test if a user can do a lowlevel priv on a given
    item.
 * Shifted more of screens to use action methods
 * Added $screen->allow_foo() methods to test if a given action is allowed.
 * Removed {priv} property of screens and replaced it with can_be_viewed
 * Removed get_allowed_actions and get_allowed_tools - replaced with
    list_items.
 * Added some missing phrases.

2006-09-04 cjg
 * Removed unused javascript and css files
 * Moved all system images to /lib from /defaultcfg

2006-09-04 cjg
 * Action tabs now work with actions as well as screens
 * Sorted out priv methods for remaining screens

2006-09-04 cjg
 * Split mail related methods out of Utils.pm into Email.pm
 * Removed some old unused mail encoding methods
 * Script now has typed variables
 * Improved error messages in Script to shop point of error
 * Changed the Script is_set method to take different params
 * Added functions to Script in addition to methods
 * Added types to variables in Script
 * Added as_item() to Script to turn itemrefs into objects.
 * Removed unused constant from Apache/Template
 * Changed collapse_conditions to pass session in the param hash
 * Workflow now passes current user as an param
 * Added a get_item() method to MetaField::Itemref
 * Added deprecated message to all BackCompatability methods
 * Fixed bug that meant Screen::EPrint::View didn't work
 * Removed some commented out old code from the end of XML
 * Changed default eprints citation file to have eprints, not
    xhtml as the default namespace.

2006-09-05 cjg
 * Made Script use objects for the compiler and compiled scripts.
 * <print /> now can have a opts attribute to set render options
 * Script now has a cleaner tokeniser
 * Script now gets fields from dataobjs using $item{foo}
 * a bareword in a Script eg. foo is now equiv to $item{foo}

2006-09-11 cjg
 * Removed priv code from Apache::Auth
 * Fixed typo in workflow
 * Removed auth_check and has_privilage from Session.pm
 * Removed the priv code from Processor.pm that is no longer used.
 * $user->is_owner and is_editor now take any dataobj, not just eprints.
 * renamed can_edit to is_editor (and made a fwd in BackCompatability)
 * Removed TDB's get_roles method
 * Added system which turns macro user privs into ep3 privs (mapping)
 * Added get_privs and get_roles methods to User.
 * Removed check in EPrint which said only owners or editors can 
    post new versions of an eprint.

2006-09-11 cjg
 * Fixed bug in run_eq and run_oneof EPScript methods.
 * Added integers to epscript
 * expr's in citations which resolve to boolean, int or string now
    get rendered - handy for debugging.
 * added new epscript function: length() to return the length of
    a list.
 * Modified default citation to make ed/eds show when eds list is 
    plural/single.

2006-09-11 cjg
 * Restored hide help/show help buttons in surround/default
 * Added a [-] button to collapsed fields which have been un-collapsed.

2006-09-12 cjg
 * HTML-Escaped the error message in abort()

2006-09-12 cjg
 * Fixed Issue in Language with spanning pins being passed as a fragment
    containing just that one element. Internal nodes were added to the
    fragment not inside the element.

2006-09-12 cjg
 * Removed the <phrase> config element from Component/Field/Multi as
    this is now handled at the collapse level.

2006-09-12 cjg
 * Bug in validate which was using "public" where it should have been 
    testing for is_set().

2006-09-12 cjg
 * Added <phrase> to collapse which inserts a phrase in the current 
    language.

2006-09-12 cjg
 * Fixed warning if the first value passed to one_of in Script was undef.
   
2006-09-12 cjg
 * Moved citations into general config dir from the lang specific config
    dir. 
 * Removed test code from eprint/default citation.

2006-09-12 cjg
 * Moved $user->can_edit is_editor and is_creator to be instead,
    $dataobj->has_owner( $user ) and ->has_editor( $user) 

2006-09-12 cjg
 * Renamed $doc->public to $dsoc->is_public for clarity

2006-09-12 cjg
 * Renamed Interface/Processor to ScreenProcessor

2006-09-12 cjg
 * First part of splitting up Config.pm etc.

2006-09-13 cjg
 * Broke up .pm files into cfg.d/*.pl
 * Added $session to one of the indexing.pl methods
 * Fixed bug in has_owner permission checks
 * Renamed config {archivefields} to {fields}

2006-09-13 cjg
 * Removed @foo@ from citations

2006-09-14 cjg
 * Removed links to old prototype.js in template

2006-09-14 cjg
 * Moved defaultcfg to lib

2006-09-15 cjg
 * Cleaned up the neat citation (not completely)

2006-09-15 cjg
 * Made line breaks in abort show as <br> in HTML report.

2006-09-15 cjg
 * Fixed bug in Script::Compiled->runtime_error
 * Made Scripts report an error if an unknown function 
    call is met rather than just bailing with a perl error.

2006-09-18 cjg
 * Sorted out time. Times in the db are GMT. Logs are logged in
    localtime. When times are rendered they are converted into
    localtime. Dates are not subject to localtime unless they have
    an hour set too.
 * Time functions in Utils reworked for local/GMT issues.
 * Dates inside eprints can now have T separating date and time and
    Z at the end so it can take ISO date-times.

2006-09-19 cjg
 * Broke up core.pl
 * Fixed some small bugs

2006-09-19 cjg
 * Changed ref="" to name="" in pins in phrase files.

2006-09-19 cjg
 * Added phrases for alt text in warning/error icons
 * Fixed bug in subject component being slow!
 * Reworked subject component (still needs js and css)
 * Removed unused Subjects input component

2006-09-20 cjg
 * EPrints should now install as group apache and group
    writable directories.
 * Added EPrints::try method which runs a code reference in an eval and
    if it fails calls abort with the error.
 * Added dir_perms and file_perms to SystemSettings

2006-09-20 cjg
 * Subject Component now collapses and expands using javascript
 * Errors in document validation now link to the right page

2006-09-20 cjg
 * Broke up validate.pl into separate files
 * Cleaned up validate of eprints
 * Fixed it so that document & file validation errors now have a link
    to the page with the upload component on.
 * Moved delete-document button to be in the tab label
 * Removed the document-change button
 * s/upload some files/upload a file/

2006-09-20 cjg
 * renamed core.pl to Core.pl so it loads first
 * Added brand.pl to contain quick and easy branding stuff like sitelogo
    and theme.
 * Added a new entity &logo; which is an image of the url spec'd in site_logo
 * Added style/auto and javascript/auto which cause all files in these dirs 
    to be included by the template. Handy for plugins.
 * Sorted some issues with print.css
 * Moved appropriate .js and .css into the auto dirs.

2006-09-20 cjg
 * Upload component now takes which doc fields to ask for as a workflow 
    config.
 * Moved style related images to /style/images rather than /images/style
 * Moved all style related images into that dir.
 * Added option to xml_to_metafield to take an alternate dataset
 * Added a minimal green theme to prove themes are working.

2006-09-20 cjg
 * Phrases now work from a directory of phrase files, not a single file.
 * Broke up phrases.xml for archive phrases.

2006-09-20 cjg
 * Details now has 2 versions staff/owner
 * Each version links into the edit pages if allowed
 * Fixed bug in the problems warnings which jumped always into owner
    edit rather than the appropriate type of edit.
 * Convert was dieing if it could not work out the mime type of a file. Now
    it just returns undef.

2006-09-21 cjg
 * Compound fields now have the sub-field expressed withing them. 
 * Compound fields input/render has now been cleaned up.
 * Fixed a bug in the hyperlinking problems to the right edit scren code
 * Added file_perms and dir_perms to SystemSettings.tmpl

2006-09-22 cjg
 * Fixed rendering bugs in History

2006-09-22 cjg
 * Fixed citations-don't-link bug.

2006-09-26 cjg
 * Renamed some inner variables and method names in MetaField::Compound
 * Fixed bug in Compound so that field id's are prefixed by their subfield
    name too.

2006-09-27 moj
 * Added phrases for most plugins
 * Component render_title/render_help using phrases by default
 * Upload now uses correct document ID for format delete
 * Removed Review component

2006-09-27 moj
 * Added $icons param before slow_tabs in Session::render_tabs
 * Modified EPrint View and Upload accordingly.

2006-09-28 moj
 * render_tabs now takes a hash of parameters (updated View/Upload)
 * Removed extra space in document citations
 * Removed unnecessary space from upload component

2006-09-28 tmb
 * Made date_embargo a document field rather than an eprint field for finer-
    grained control. This requirement arose out of a Services contract and
    seemed like a good idea to make it a standard feature in EP itself.

2006-09-28 moj
 * More plugin strings shifted to phrases

2006-09-28 moj
 * Phrasing import plugins (unstable atm)

2006-09-28 cjg
 * Added user type to user render 

2006-09-28 cjg
 * In render eprint; changed hascontact to has_contact_email

2006-09-28 cjg
 * added new roles, edit-own-record and general (general needs to be removed
    asap)
 * Fixed urls of icons for file icons and arrows
 * Added scriptlicious and prototypes.js
 * Added id's to all metafield input and select
 * Added id's to cells in metafield input grids
 * Added hacky issn script - remove it again later (used for drop downs)
 * Added example drop downs to issn and creators fields (tidy later)
 * Removed underlines from all hide/show links and tabs and blister bar
 * Made tabs and blister bar work when you click anywhere in them, not just 
    the text.
 * Made icons right align in tabs.
 * Added class ep_form_text to all text <input> tags to allow them to be
    styled without effecting buttons.
 * Added get_basic_input_ids which lists the ids of the fields in a metafield
 * cfg.d/ no only loads .pl files
 * Added staff actions screen
 * removed for_archive required restriction - we'll do it better another way
 * Added user and userid as a property to all screens, not just user screens,
    this is needed to make the toolbar understand if you can edit your record 
    or not.

2006-09-29 moj
 * Added login failed phrase

2006-09-29 moj
 * Subject component now shows selections at top with remove buttons
 * Removed list icons from subject tree
 * Selected subjects are shown bold in tree (without remove buttons)

2006-09-29 moj
 * Added 'cp' and 'cpall' to SystemSettings, the former just to contain the command
    and the latter to specify the invocation to copy all files from one directory to
	another. Note the slightly magic quotes on the first arg: 'source'/* - this stops
	spaces confusing things, while ensuring the * gets expanded.

2006-09-29 moj
 * Added 'rm' and 'rmall' to SystemSettings. Decided against 'rmdir' in case we want
    to add a rmdir alternative later. Also updated erase_archive and erase_eprints.

2006-10-02 moj
 * Shifted InputForm::Phrase to XHTML - now takes in any XHTML (including phrase blocks)
     and inserts them into the page. Note that the surround should be set to None to stop
	 help/titles being shown.

2006-10-02 moj
 * Added search to subject component + refactored some of the code to render the results/selections
 * Refactored some of the duplicate code in the render. 
 * Fixed bug that prevented emboldening selected subjects if they were parent nodes.
 * Added 'searchstore' hidden field to store previous search.
 * Added clear button to clear searchstore.
 * Tweak to system.xml to add clear button.

2006-10-09 cjg
 * Removed need for SOAP::Lite from soap code.

2006-10-09 cjg
 * Made the A in tabs and blisters into a block element so clicking anywhere 
    works.
 * Fixed bug in bluring tabs after selection
 * Fixed bug with the Loading... in the history tab
 * Swapped order of Summary and Details tabs
 * Fixed bug in delete-document tab X link. 

2006-10-09 cjg
 * Removed ruler.xml and hardwired it as an <hr>

2006-10-09 cjg
 * Split up Core.pl into more small config files. Some stray things are left
    in misc.pl
 * Remved unsused config options
 * Renamed a number of config options
 * Removed archivename from entities (it will become a phrase)
 * Renamed s/brand.pl/branding.pl/
 * Cookies now all use the same domain and have hard wired names.
 * EPrint-type now always uses "long types"
 * No longer loads archive/foo.xml at all!
 * Added better warnings for Warnings and Errors in foo.pl files.

2006-10-10 moj
 * Phrasing in subject component.

2006-10-10 moj
 * Fixed notes (for userid/cookie_code/params) to clear themselves
 * Added logout to Session

2006-10-11 moj
 * Added entity_convert tool

2006-10-11 cjg
 * Config values are now available from EPScript
 * EPScript can now be embeded in attributes using {}
 * archivename is now a phrase named archive_name
 * Disabled localplugin feature
 * EPScript phrase and print are now available to templates
 * foo{bar} in eprscript now returns value bar of hash foo

2006-10-11 moj
 * generate_apacheconf now loads the repository to make sure the 
    config is there

2006-10-11 moj
 * Converted files with entities to use EPScript and phrases

2006-10-11 cjg
 * Moved upgrade into tools - we'll need it later but not until the
    ep2>ep3 script.

2006-10-11 cjg
 * Started reworking configure_archive into epadmin

2006-10-12 cjg 
 * Removed entities.pl
 * No longer copies entites-en.dtd per language - now just makes one
    copy names entities.dtd
 * Changed the header of all XML files to reflect this.
 * Renamed archivename.pl to archive_name.pl

2006-10-12 cjg
 * Added labels and style to eprint-type (and long-view sets in general)

2006-10-12 cjg
 * Removed GEO IP code from Apache/LogHandler - this will be handled 
    in the batch script.

2006-10-12 tdb
 * test_pod script checks for presence of POD for public methods in
    EPrints modules
 * Added missing POD in TempDir

2006-10-12 cjg
 * Added labels to the refereed field.

2006-10-12 cjg
 * Fixed bug in render multifield component which caused the title to
    vanish when uncollapsing.
 * Made top of default surround a bit darker to look more like the top
    of window.
 * Made the text in the surround title bar bigger and bold
 * Made the collapsed bar look like the title bar.

2006-10-12 moj
 * Added namespaces throughout lib

2006-10-12 cjg 
 * Added some warnings when XML functions are passed undefined nodes.
 * Moved document type guesser into cfg.d/document_upload.pl
 * Fixed a couple of namespace change issues

2006-10-12 cjg 
 * Fixing some knock on effects from namespacing the XML files.
 * Phrases now use collapse to insert their pins.
 * Changes the margins on the surround css.
 * Removed a stray collapse option from the subjects input component
    in the default workflow.
 * Added a little padding to the top of the tabs 

2006-10-12 cjg
 * Added citation function to epscript
 * Added yesno function to epscript

2006-10-12 cjg
 * Added a new input_style to set which shows the items as a short list
    of radio buttons.
 * Made most sets use this input style.

2006-10-13 cjg
 * Fixed bug in render-set-long
 * Added xml tidy to pins so that we can debug the HTML. This needs to
    become a config option.
 * Show/Hide of help, subjects and collapsed components now uses animation.
 * Help for multiple components is now inlined into the table.
 * Moved js files around so they load in the right order.
 * Put dotted lines between elements in multi-component.
 * Removed the "may be ommited" text from date input.

2006-10-13 cjg
 * Added warning on running scripts as root.

2006-10-16 cjg
 * Removed code which checks we're not running as root, and removed code
    that tries to do a change uid if we're root. Even if it works, the taint
    flag still applies.

2006-10-16 cjg
 * Fixed a bug that stopped you logging out.

2006-10-16 cjg
 * Rewrote document security to use rewrite rules not symlinks!
 * Removed concept of "areas" in apache security
 * Removed the secure/ dir as this was just used for symlinks
 * Documents URLs are now /444/1/ not /444/01/ but the old style will 
    redirect and the filesystem still uses "01" not "1".
 * Added pos to Document and Subscription. This will be used to order them.
 * Added documentid counter to generate unique ID's for documents
 * Documents now use integer to acutally identify themselves.
 * Removed support for not short_urls 
 
2006-10-16 cjg
 * Fixed minor bug in javascript tabs caused by the "tidy" HTML output.

2006-10-16 moj
 * Converted all subs in cfg.d to be $c->{mysub} = sub
 * Converted Repository::call and can_call to handle this
 * Converted most &{...} calls to use Repository::call - some still need
     changing, but will need an alteration to the call method.
 * Added some missing phrases to system.xml
 * Added missing namespace info to epadmin

2006-10-16 cjg
 * Indexer now updates .pid every "tick"

2006-10-17 moj
 * Added call support to Apache/Auth and Session for dynamic templates
 * Adapted can_call to allow multiple args (for cases such as 
	$c->{dynamic_template}->{function}).
 * Removed previous namespace calls - now just uses the new approach.
 * Returns and prints error if invalid call (note that it can't use
    $self->log, as this uses call.

2006-10-17 moj
 * Shifted _render_fileicon to its own sub in $c->{render_fileicon}
 * Altered eprint_render and fileinfo_render to use this.

2006-10-17 cjg
 * Added Platform code (defaults to UNIX) so that cross platform issues
    can be easily handled. 
 * Made chmod and chown platform based functions.
 * Made it possible to pass a type as well as a value in EPC state.
 * Made STAFF_ONLY have type "BOOLEAN"
 * Reorder now doesn't bother if there's zero or one results.
 * Subjects Search now uses a nested view. Not perfect, but better.
 * render_input_field and render_input_field_actual no longer pass the 
    type.
 * Session now uses XML::to_string to convert strings to XHTML, as does
    repository template loading. This fixes a few bugs including the 
    xmlns in HTML one.
 * Added $session->reload_current_user and made logout call this.
 * Reworked user workflow
 * s/in_owner/has_owner/ in DataObj/User
 * Added view and edit user (both own and other)

2006-10-17 cjg 
 * Fixed tiny bug introduced by call code which broke guessing file format.
 * Fixed regexps to match new style document ids.
 * Fixed pos of new documents.
 * Added style to upload document fields table.
 * Right aligned document fields titles.

2006-10-18 cjg
 * Added action lists for all variations of eprint status and owner/editor
 * These are now used to generate quick-link buttons at the top and bottom
    of the view page.
 * All lists of actions with descriptions are now generated by a single 
    method.
 * Moved New EPrint to a screen of its own
 * Added a new actions list which is used on the top of the items page. 

2006-10-18 cjg
 * Named Sets now search correctly and have a correct help phrase.

2006-10-18 cjg
 * Deposit button on owner-view page now goes to deposit screen, not action.

2006-10-18 cjg
 * Indexing config now sets "index" to true (or else no indexing happens)
 * Moved $FOO style indexing constants to $c->{indexing}->{foo} style.

2006-10-18 cjg
 * Fixed undef error when an eprint tried to get the lowest pos of doc when
    there wasn't one at all.
 * Renamed indexqueue table to index_queue

2006-10-20 cjg
 * Added current user to the state available to epscript
 * Improved a debug message in epscript
 * Reworked citation methods to take parameters which are
    passed into epscript.
 * Cleaned up search rendering
 * Cleaned up items page
 * Search results now obey page_size
 * Added option to turn off ordering in multiple fields. It hides
    the numbers and arrows.
 * Added the option to editperms
 * Fixed a typo s/()/{}/ in Import::Endnote
 * Added a FlatSubjects import that can replace import_subjects 
 * Changed the default search results size to 20 as 100 was very slow.
 * Added some missing phrases
 * Screens now ignore "login" action (which sometimes get sent
    if someone hits back/reload after logging in)
 * Styled Pagination

2006-10-20 cjg
 * Renamed /perl/ to /cgi/
 * Improved rendering of details tab
 * Removed test script lookup_demo
 * Changed export text on search
 * Fixed typo in workflow/eprint/default.xml

2006-10-20 cjg
 * Renamed neat citation to result
 * Added a warning for the case of a citation style not existing.
 * Removed hide from metadata visibility
 * Changed citations files to neatly redirect user.brief to default

2006-10-20 cjg
 * Fixed some issues in platform code

2006-10-23 moj
 * Moved several bin/indexer functions into Index.pm
 * Added tick file (separate from pid file)
 * Added functions to Index.pm to allow start/stop from within EPrints
    (these call bin/indexer)
 * Added is_empty function to XML.pm to return true if node has no
     children.

2006-10-23 moj
 * Added is_running to Index
 * Added actions for start/stop indexer and force-config reload
 * Added necessary phrases
 * Added roles to admin
 (nb: known bug - indexer currently stopping on apache reload)

2006-10-23 moj
 * Fixed indexer spawning in Index.pm
 * Created Admin/Indexer.pm and Admin/Reload.pm and moved actions
    into the correct places.
 * Added render_common_actions to Status, as Reload/Indexer extend
    it.
 * Renamed phrases and added Admin/Indexer:title
 * Added a setsid to indexer
 * Added _run_indexer to avoid redundant code
  
2006-10-23 cjg
 * Moved collapse conditions to EPrints::XML::EPC::process
 * Added screen citiation formats for headers of EPrint and User screens.
 * Modified generate_static to find title and body directly rather than
    use XML::find_elements
 * Removed now unused XML::find_elements

2006-10-23 cjg
 * Login now no longer talks about IPs and sessions. We can maybe add those
    features later.

2006-10-23 cjg
 * Fixed bug in oai2, rss and latest_tool which was looking for the config
    option 
 * Added "n" to latest_tool to make it render result citation correctly

2006-10-24 tdb
 * Added LibXML DOM option
 * Modified to_dom to use isa (otherwise inheritence will break comparison)
 * Added dom_compare tool to, er, compare DOM implementations

2006-10-24 cjg
 * Moved use Apache::SubProcess into AnApache so it handles mod_perl 1.99 
    correctly.

2006-10-24 moj
 * Created render_action_button in Screen that is used by action_bar and
    action_list. 
 * Added render_action_button_if_allowed - only returns a button if it is
    allowed to be viewed. Returns an empty doc fragment otherwise.
 * Created 'allowed' to return true if an action is allowed (used by 
    action_list and render_action_button_if_allowed)

2006-10-24 moj
 * Added 'has_stalled' to Index - returns true if the tick file is out of
    date.
 * Added 'force_start' to Index - stops the indexer (with no checking of the
    result - just to kill off any remaining process), unlinks the pid and tick
    files, and then starts the indexer and returns the result.
 * Added force_start_indexer to the Admin/Index screen
 * Rejigged Screen.pl to take $params (a hash array that can contain 'hidden').
    This replaces 'passthrough'.
 * Added Admin.pm. This warns if the indexer is not started, or needs force
    restarting, with buttons to carry these out. It also shows a list of
    available admin tools. 
 * Added the relevant phrases for the start/stop/force_start
 * Adjusted indexer.pl to use has_stalled
 * Added necessary roles to User.pm

2006-10-25 moj
 * Renamed Indexer.pm to IndexerControl.pm and updated Status.pm accordingly.
 * Renamed phrases to use IndexerControl

2006-10-25 moj
 * Moved edit-subject and edit-user privs into admin, along with admin-indexer
 * EPrints::Index::stop_indexer now writes a indexer.suicide file, and waits for 8
    seconds to see if the indexer has exited before trying the cmdline approach.
 * Put the logfile path in the 'couldn't start/stop' phrase for now, should be
    a link to a screen soon.
 * Moved the indexer warning code to Status and put in indexer_warnings
 * Added 'Indexer Status' to the status view as well as a few phrases
 * Form now uses 'inline' to keep the button in the right place.
 * Moved stop_indexer to cleanup_indexer

2006-10-25 cjg
 * Added additional test to $dataset->get_value_raw.
 * Compound fields now have an automatically created propert fields_cache 
    which contains references to the actual subfield objects.
 * Compound sub-fields now inherit multiple from their parents.
 * Compound sub-fields now have a sub name and parent name and their sql 
    name is the two joined.
 * Added get_basic_input_elements to set so that it can render single input
    elements for use in compound list.
 * Fixed bug in SQL in indexer.
 * "creators" and "editors" are now compound fields with sub-parts name
    and id.
 * date_issue, date_sub and date_effective become date and date_type.
 * Updated plugins and config files to reflect this. 
 * Removed input_id_cols as we don't use id parts in ep3.
 * Added loads of new document types
 * Documents now use mime types as their ids
 * File icons replace "/" with "_" for file icons.
 * Added corporate creator field
 * Removed ImportXML (ep2 importer)
 * Added related_url which is a list of urls and types.
 * Removed some id part related code.
 * Removed repository specific plugin dir (we're not doing it that way)
 * import_subjects now uses Import plugins
 * testdata/bin/import_test_data now uses gziped ep3xml data

2006-10-26 moj
 * Rearranged AUTHORS for EP3
 * Added /eprints/ dir for EPrints-related docs
 * Trimmed information.xpage to just have a link to the EPrints docs.
 * Changed software.eprints.org to eprints.org/software/
 * Changed EPrints 2 to EPrints 3 where applicable
 * Added eprints/index.xpage with some info about the EPrints project
 * Removed licences from Workflow etc and replaced with __LICENSE__
 * Changed copyright to 2000-2006

2006-10-26 cjg
 * Renamed subscription dataset to saved_search
 * Renamed DataObj::Subscription to DataObj::SavedSearch
 * Renamed subscriptions to alerts in UI
 * Merged create_user into epadmin
 * Merged force_config reload into epadmin
 * Turned export_hashes into an export plugin
 * Removed the requirement that metafields of type search MUST have
    fields defined in the config.
 * XHTML is no longer tidied before output.
 * Local Repository Plugin code removed entirely.
 * Added a new field render function which just puts a css highlighted
    div around an item.
 * Made "suggestions" render with a highlight.
 * Saved Search option disabled for beta release.
 * Split render_field into also having render_field_actual which is not
    subject to the render_value config option.
 * Fixed bug in function pointer names containing :: in fields.
 * Made simple search simple
 * Removed some cruft from index.xpage
 * Removed /help/ from the template
 * Fixed bug in information.xpage

2006-10-26 moj
 * Tweaked Subject to avoid deprecation warning
 * Moved db ok/down to phrase file
 * Tweaked Staff/Edit:Description to be less 'tech'
 * Moved phrases_map out of the way
 * Added phrases for missing fields
 * Rearranged user workflow slightly to have Account/Personal sections 

2006-10-26 cjg
 * related_url field no longer has up and down arrows in input
 * Moved a bunch of bin scripts away until they get combined into epadmin
    later. (recommit_dataset, rehash_documents, erase_eprints, 
    reindex_dataset, erase_fulltext_cache)
 * create_tables is now part of epadmin
 * erase_archive is now part of epadmin
 * test_config is now part of epadmin

2006-10-26 moj
 * s/children/get_children/ in Subject (and Extras/Session)
 * Added has_help to Component, made has_help in Field check the content
    of the help DOM, made Surround only show help on the field if there's 
    help content. Note that this should be refined to use colspan if there
    is a mixture of fields with help/no help.
 * s/auth/author/ for the url types.
 * Added help for the Personal Details fields. 

2006-10-26 cjg
 * Reworked template and default homepage for beta release

2006-10-26 cjg
 * Fixed bug introduced in s/children/get_children/ 

======================================================================
26/10/2006 - EPRINTS-3.0-beta-1
======================================================================

2006-10-27 tmb
 * Added hook for overriding default username/password check (e.g. for handing off to LDAP server)

2006-10-27 tdb
 * DOM spec fixes to XML::DOM, XML::LibXML
 * Added hasAttribute to XML::DOM (error in EPC.pm)
 * More examples from dom_compare.pl

2006-10-27 tdb
 * Added support for XML::LibXML
 * Changed (most) DOM calls to use the DOM Core method names

2006-10-30 cjg
 * Changed autocomplete param to "q="
 * Added a lookup directory for doing autocompletion responses
 * The workflow now points to the new autocompletion scripts
 * Made a nominal name completion script. Just works on-the-fly.
 * Changed searching from "editors" to "editors_name"
 * Fixed a broken link in index.xpage
 * Converted some embedded phrases in the phrase file to epc: (they
    were mistakenly epp:)
 * Removed dodgey "issn" autocompletion demonstrator.
 * Cleaned up warnings for __WARN__ and __DIE__ when tunning inside the
    $c->{} subroutines.
 * Added an environmental variable to disable checking the correct user
 * Used this to call eprints bin scripts from mod_perl

2006-10-30 cjg
 * Changed blister bar to use buttons
 * Added jump action to deposit and edit eprint, to handle response to the
    blister buttons.
 * Fixed bug in render-date which showed wrong date by one month.
 * Added set_stage method to workflow to facilitate jumps
 * Flag on blister bar was inverted (said "isstaff" but actually meant 
    "notstaff"). Fixed.
 * Journal autocomplete now works in a limited fashion.

2006-10-30 cjg
 * Added note about DOAR policies tool into oai.pl
 * Fixed plugins which use mime_types to just take the document type as 
    the mime_type by default.

2006-11-02 cjg 
 * Removed old subjects input code.

2006-11-02 tdb
 * /cgi/openurl is now runnable

2006-11-02 cjg
 * Search errors now show as a warning box, like in screens.
 * No-matches no counts as an error (so stays on search form page)
 * Moved message/error/warning render into Session
 * Metafield search form problems now return XML, not text
 * $session->render_row now just inserts a nbsp; without a : after it
    if undef is passed as the heading. Also now takes an array of <td>
    contents, not just one.
 * Status now uses $session->render_row
 * Corrected error message in EPC
 * The sub-parts of compound field are no show_in_html=>0
 * Added a flag to tell eprint_render if it's a preview or the final
    page.
 * Tests this flag for the "edit" button on the abstract page.
 * Added documents to the details screen.
 * Blister bar now occurs in form to allow buttons to work.
 * Upload component now places "add another file" under some javascript
    and pops up a warning before showing it.
 * lookup/name now filters on eprint_status=archive

2006-11-02 cjg
 * Fixed bug in expand/close on subjects with multiple parents
 
2006-11-02 cjg
 * Added "public" field to saved searches.
 * Added "items_fields" and "review_fields" to users.
 * Added epadmin upgrade to update the database.
 * Added items_fields and review_fields to user workflow.

2006-11-03 cjg
 * Fixed bug with get_values which meant it returned values from all
    datasets of eprint, not just the requested one.

2006-11-04 tdb 
 * Added more fields to openurl resolver
 * Added support for svc.fulltext=yes to openurl resolver

2006-11-03 cjg
 * Fixed some broken parameters in render_citation_link
 * Changed the way searches are serialised. They now store both the field
    names and the alias. Also separates filters and normal search fields.
 * Can deserialise a search safely, into an existing search, or raw which
    creates all the conditions from the serialised search.
 * Removed UserPage and UserForm - no longer used.
 * Added option to save searches
 * Added saved search view, edit and remove
 * New MetaField type - Field
 * Made items_fields and review_fields type "field"
 * New option to multiple set fields to allow them to be ordered.
 * Added filtering options to Items page (needs tidying up) 

2006-11-03 cjg
 * Moved soap code out of normal cgi dir.

2006-11-03 cjg
 * Indexer now cleans up suicide file when it starts.
 * Indexer stop now tries the suicide file approach before trying kill.

2006-11-04 cjg
 * Workflow can now override help for a field.
 * Removed type-based help.
 * New XML utility method: contents_of which returns the children of a
    node in a doc fragment.

2006-11-04 cjg
 * Subjects now work inside compound fields

2006-11-05 cjg 
 * Added "Add User" feature
 * Tidied up citations/user/screen.xml
 * Fixed bug in rendering user/screen citation 

2006-11-06 cjg
 * Saved search workflows now are in the generic lib config, not part of the
    repository.

2006-11-06 tdb
 * Modified get_input and get_input_hidden to remove return (CR) as well
 * Added ownerDocument to XML::DOM compatibility
 * Removed AuthDBI from requirements (unused?)
 * Added copy() to EPrints::Utils to copy files from one location to another
    in a cross-platform compatible manner
 * Removed file-handle based copying
 * Replaced all chomp()s with s/\015?\012?$/s
 * XML::LibXML::Element doesn't copy attributes on cloneNode, fixed in
    compatibility module

2006-11-06 cjg
 * Reworked parser in Import::DefaultXML to be more SAXY.

2006-11-06 cjg
 * Moved testing the correct UID into the Platform module because it won't
    work on all platforms.
 * Changed $dataobj->get_url( 1 ) to dataobj->get_control_url.
 * Fixed bug in getting new ids for saved searches.
 * Removed debug code from index-stopping-screen
 * Citations now can have /lib level ones as well as repository specific.
 * Fixed bug in edit-linking documents in Details.pm
 * Moved the administer user action to the bottom of the list.
 * Added the description of the search as a parameter to the savedsearch 
    workflow.
 * Added a default citation for saved searches.
 * Removed extra info at the top of the run-saved-search page.
 * Name-Ajax-autocomplete now orders by number of eprints the name appaers
    on.
 * Removed unused coverimage code in eprint_render.pl
 * The last vestages of Apache::AuthDBI have been swept away.
 * Added label to user_radio_hideemail.
 * Added warning to indexer if a single session fails to start.

2006-11-06 tmb
 * Columns in Items and Editorial Screens now displayed according to user
    preference

2006-11-07 tdb
 * Added Compat::Term::ReadKey module to avoid Term::ReadKey requirement 
    (linux support only via stty)
 * Modified Term::ReadKey usage to fallback to Compat::Term::ReadKey.
 * $session->make_doc_fragment now calls EPrints::XML::make_document_fragment
 * Work-around for LibXML appendChild() bug for empty DocumentFragment

2006-11-07 moj
 * Fixed typo in epadmin config_db
 * Added event_parse subs to all XML parser modules. LibXML uses the SAX 
    parser, and GDOME/DOM use the technique from Import::DefaultXML (with 
    XML::Parser). Takes a filehandle to read from, and a handler object 
    (see the example in Import::DefaultXML)

2006-11-07 moj
 * Added send_status_line to AnApache - this takes a code and message, and 
    does status and status_line on the request. This fixes the problem with 
    redirecting.
 * Adjusted other modules to use send_status_line.

2006-11-07 tmb

 * Added shortcut sub paginate_list_with_columns to Paginate.pm which 
    displays the list as a table of field values, with sortable columns.

2006-11-07 cjg
 * Changed epadmin create_repo back to epadmin create.

2006-11-07 cjg 
 * Cleaned up filters in Items screen.

2006-11-07 cjg
 * Added $session->render_input_field and made all metafield <input> elements 
    go via this method.
 * Added javascript hooks to register code it be exexed when buttons are
    pressed.
 * Upload now popups a confirm box if you have a value in the file upload but
    push "Next>" 
 * Renamed "Add" to "Upload" for clarity.
 * Renamed workflow->from to workflow->update_from_form
 * Workflow update_from_form and component methods now take a handle to the
    processor (or something which accepts add_message( $type, $msg). 
 * Component->update_from_form now registers errors with the processor rather
    than muddling them with the validation messages.
 * Added top margin to message boxes.
 * Added a render_buttom method to $session
 * Uploading a 0byte file now fails with an error.
 * Added empty checkbox square and items filters now show this rather than a
    cross.
 * Renamed some instances of "Deletion" to "Retired"
 * Removed some unused javascript 

2006-11-07 cjg
 * title of pages now has archive id AFTER page name.

2006-11-08 cjg 
 * Search results now include <link>'s to all the various metadata formats.
 * Abstract pages now lincude <link>'s to various metadata formats
 * Fixed issue that links were not included in dynamic templates.
 * Rewrote document security code and security config file.
 * Renamed $doc->can_view to $doc->user_can_view
 * Security config subs now return ALLOW and DENY not 0 and 1.
 * Fixed bug in buttons in EPrint Remove.
 * Changed rss mimetpye from text/xml to application/rss+xml
 * Renamed XML export methods to EP3 XML
 * Corrected some calls to hidden_field
 * cgi/users/login no longer tries to set login cookie
 * cgi/users/login now provides link to target docum,ent, rather than
    a redirect.
 * Added some vital code to generate_apacheconf to trip the Auth handlers
    into working.

2006-11-08 cjg
 * Used message style for login and logout errors and messages.

2006-11-08 cjg
 * Added pins above and below results in paginator.
 * Moved status filter to be between controls and results on items
    page.
 * Pagination now defaults to sorting by the first field.
 * Fixed size of search controls when no controls are needed.

2006-11-08 moj
 * Added block_enter.js to stop form submission when pressing enter in
    text inputs, along with a hook in Session's render_input_field.

2006-11-09 tdb
 * Bug fix for LibXML, undef warning on empty TextNode

2006-11-09 cjg
 * pagerange now searches as an integer, on the first value. Nb. not
    indexed!

2006-11-09 moj
 * Re-added Apache::DBI - needed to stop MySQL running out of connections
 * RejectWithEmail and RemoveWithEmail both use mail_body to send email
 * Ditto for mail_view for viewing the email on the page (includes header
    bits)
 * Added javascript toggle to let users enter a reason where it would appear
    in the email.
 * Added action_cancel to RemoveWithEmail
 * Added relevant phrases (mail_[delete_reason,delete_body,delete_body.inbox,
    bounce_reason,bounce_body])

2006-11-09 moj
 * mail_administrator should now work (!) using the EPrints::Email::send_mail
    args.
 * User now uses Email instead of Utils
 * Email now uses mail_body to provide the sig, etc - tweaked Remove/Reject to
    accomodate.
 * Switched links to use <...> after the link text
 * Put <p>s around the reason text
 * Added mail.css
 * Updated the email cfg to use Email

2006-11-09 cjg
 * Styled buttons on *WithEmail
 * Fixed bug on *WithEmail that the From and To names were empty.
 * Made the phrase on *WithEmail only show if the user has a language pref.
    - needs to be split into two phrases now.

2006-11-09 cjg
 * Added some missing modules to EPrints.pm
 * Removed "default","contsol","page_size" from search config - it is unused.
 * Removed search rendering code from Search.pm
 * Added Search screens. One abstract then subclasses for public and staff 
    seatch.
 * /cgi/search now uses Public/EPrintSearch screen
 * Improved styling of paginate::columns - added nice arrows
 * Split paginate_with_columns into a separate module.
 * Fixed bug in from_form of metafield::Search
 * Added field param to hide some fields from the Metafield::Fields list.
 * Made subobjects, fulltext and compound fields not show in that list.
 * Made that list order by name, alphabetically
 * Added an option to date fields to make them render a short version of
    the date.
 * Added the concept of "public privs" so that the search screen works ok.
 * Moved some of Items style into css.
 * Removed unused Search/User screen
 * Made Review and Items screens make the page 100% width
 * Renamed Save/Cancel buttons on user and savedsearch edit forms to be 
    clearer.
 * Fixed bug in EPrint Remove.
 * Screens can now add links to the <head> and request output other than
    XHTML.
 * Fixed bug in resetting search form.
 * Added property to fields to indicate if they are best ordered in reverse
    - dates and times have this set so most recent shows first.
 * Removed unsused staff/eprint_search
 * Cleaned up user search config.
 * Results citation now returns a <tr>

2006-11-10 cjg
 * Removed more unused stuff from Search 
 * Removed deprecated order methods 
 * Redesigned search input form
 * Search results no longer use a phrase.
 * Added User Search and History Search

2006-11-10 cjg
 * Added ordering for history search

2006-11-10 cjg
 * Changed screen layout.
 * Heading now centered
 * User toolbar now at top of screen above the h1.
 * Fixed some bugs introduced with earlier search changes.
 * Search forms now do submit when you hit return
 * Remved field_required_in_type
 * Fixed bug in error messages from user functions 
 * Fixed a bug in javascript toggle.

2006-11-10 cjg
 * Added new field to cachemap (userid)
 * Added new field to saved_search (name)
 * Disabled default and automatic calls for saved searches
 * Added some missing phrases.
 * Saved search name defaults to a description.
 * Saved search "public" defaults to false.
 * Added css to the saved search list
 * Cleaned up the search button in the template
 
2006-11-10 cjg
 * Moved code to create a login entry in the db into session
 * Registing via email now logs you on confirm
 * Add user now only appears for people with the correct permission.

2006-11-10 cjg
 * Public saved searches (including export)

2006-11-10 cjg
 * Fixed bug in EPrint screen header which meant the thing always thought
    people were an editor.
 * ditto for EPrint::View
 * Titles of EPrint Screens are now in the actual title.

2006-11-12 cjg
 * Fixed bug in looking for .head files in static pages using the dynamic
    template.
 * links in views no longer place the count inside the anchor.
 * Render toolbox now has title as optional.
 * Added "set-password" priv.
 * Made much of the site centred. Addded ep_block class which is a centered
    block, the contents of which is left aligned.
 * Fixed bug in new user - it registered the action when it should have been
    the screen itself that was linked.
 * Removed dupicated sub def. in SavedSearch.
 * Fixed bug in reset_password

2006-11-13 cjg
 * Fixed typo in Session
 * Added flag to citations to indicate if they should be placed in a table
    or not. Used this in paginate and latest.
 * Added ep_block to EPrint::Remove and EPrint::View::Owner
 * Removed RSS code from latest_tool.
 * Fixed example code in document_upload.
 
2006-11-13 cjg
 * Cleaned up style on login page.
 * Login page now focuses on first input field.
 * Cleaned up default information.html page.

2006-11-13 cjg
 * Renamed $eprint->has_editor to $eprint->in_editorial_scope_of to 
    avoid semantic confusion. 
 * Ordervalues of pagerange fixed.

2006-11-13 cjg
 * DROP TABLE now only drops tables which exist.
 * All drop tables now go via $db->drop_table

2006-11-13 cjg
 * Fixed timestamp in OAI record headers
 * Moved getpwnam into platform module

2006-11-13 cjg
 * Fixed title in latest tool

2006-11-13 moj
 * switched 'an owner' to 'a depositor' in phrases.
 * Lost a block of redundant phrases
 * Fixed typo (cancec->cancel)

2006-11-13 moj
 * Added back compatibility for get_children

2006-11-13 cjg
 * Added check that dirs have not changed since generate_apacheconf was run.
 * Added CORE:: clarity to Platform::UNIX
 
2006-11-13 cjg
 * Fixed bug in Platform::Unix::getpwnam

2006-11-13 moj
 * Split up the intros for reject/remove with email - now have
    author_lang_pref, remove_form_intro, reject_form_intro
 * Added use for SavedSearch::Run (cjg)
 * Removed 'Not logged in' from login bar (cjg)
 * Switched sides for search/login (cjg)

2006-11-13 cjg
 * Made method in Session to render an input grid with hidden help.
 * Multi and Upload now use this
 * Toggles now blur when you click them
 * If only one component then internal buttons don't do the #t thing
 * Added help to document fields.
 * Redesigned subject component interface
 * Disabled degenerate mode for metafield input - always in a grid now.
 * Added styling to arrows and pos numbers in grid
 * Made headings in input grid a bit smaller
 * Renamed "Email (if known)" to "Email".
 * Renamed "More Spaces" to "More input rows"
 * Changed page width back to 720
 * More CSS styling.

2006-11-13 cjg
 * Added phrase for subject ancestors name

2006-11-13 cjg
 * Fixed a bug in error phrases in Upload

2006-11-13 moj
 * Added Light surround for file upload help
 * Added help phrase for upload
 * Added CC link to license help

2006-11-13 cjg
 * Added verbose option to import testdata
 * Removing all of a tree is now done via EPrints::Utils::rmtree which
    does not use File::Path.
 * Fixed bug in Auth - stopped you seeing documents.
 * Removed need for File::Path
 * Fixed bug that the eprint_fields file was utf-8 encoded rather than 
    latin-1

2006-11-13 cjg
 * Removed margins from the top and bottom of the upload help to save 
    vertical real estate.
 * Radio-button input for metafields can now have UNSPECIFIED if it's 
    neither multiple or required.
 * Date-type now uses radio-button-input
 * Set-input fields are now inside a grid table for consistent styling.
 * Multi field help now renders nicely if a field does not have help.

2006-11-14 moj
 * Switched document_upload.pl example for required fields to return
    mime types.

2006-11-14 moj
 * Fixed typo in RoMEO

2006-11-14 moj
 * Added target="_blank" to license + upload help.

2006-11-14 cjg
 * Updated NEWS for beta-2
 * Minor css + javascript tweaks to make things look better in windows.

2006-11-14 cjg
 * Improved help in epadmin

2006-11-14 cjg
 * Removed unused adminemail config option from email.pl
 * Fixed transparency image problems in IE
 * Stopped views being centered
 * Stopped unwanted centering in several places.

2006-11-14 cjg
 * Fixed bug in rmtree when dir doesn't exist if gave a warning!
 * (re)Fixed bug in ordervalues of metafield pagerange.

======================================================================
14/11/2006 - EPRINTS-3.0-beta-2
======================================================================

2006-11-14 cjg
 * Tweaked favicon - could still be better
 * Non existant archiveid now gives a nice error.

2006-11-15 tdb
 * Moved mkdir to EPrints::Platform (#2632)
 * Documented EPrints::Platform
 * Fixed bug in EPrints::EPrint: ->session to ->get_session

2006-11-15 moj
 * Added EPJS_enter_click - clicks a button when enter is pressed in 
    a field.
 * Set reference rows to 15 (also fixes Safari bug)
 * Set subject quicksearch to use the enter javascript

2006-11-15 moj
 * Metafield.pm now uses the noenter input field (enter blocking wasn't working
    on some fields). 

2006-11-15 moj
 * Added $self->{surround} to Component. This is overriden by XHTML and Upload
    to Light and None respectively. Any surround attributes in the workflow files
    override these defaults.
 * Added get_surround to component. This returns the relevant Surround object 
    (Default if none is specified).
 * Tidied the %params bit in Stage.pm a little.

2006-11-15 moj
 * Removed 10_core.pl, database.pl, and archive_name.xml from the repository 
    - they are created by epadmin, and otherwise get in the way when making 
    commits.

2006-11-15 moj
 * Create human_delay in EPrints::Utils. This is similar to human_filesize, and
    returns a string in the form 'N hour(s)', 'N day(s)', or 'N week(s)'. It
    is not meant to be accurate (e.g. it doesn't say '3 days and 2 hours').
 * The registration mail now says how long the user has to confirm registration.
 * The reject email now has a link to the edit page.
 * Tidied up Reject/Remove a little.

2006-11-16 tdb
 * Added export plugins for METS and MODS

2006-11-17 moj
 * Added export plugin for Atom

2006-11-17 cjg
 * Added method require_if_exists which requires a perl module if possible, 
    and caches failures to save time.
 * Used this to supress warnings in Import plugins
 * Added XML::trim_whitespace which removes whitespace at the start and end of
    XML chunks plus converts N whitespace to 1 space.
 * Used this to tidy up citations.
 * Used this in RSS and ATOM feeds
 * Renamed feed exports to Feed: foo

2006-11-17 moj
 * Added export plugin for RSS 2.0
 
2006-11-17 cjg
 * Added Thumbnails convert plugin
 * Added thumbnails directory for thumbnails
 * Rewrote fileicon code
 * fileinfo is now a core field
 * Added $doc->get_icon_url and $doc->render_icon_link
 * Added $session->get_full_url to get the, er, full url of the request.
 * Added New Version and Use as Template actions 
 * Fixed a bug in loggin of email messages
 * Added "Message" tab to eprint view
 * Fixed typo and modified lay-out in ImageMagick.pm
 * Changed "no reason given" to "no reason was given" - nicer.
 * Fixed bug with null emails in list_user_emails

2006-11-17 cjg
 * Added view-user-history screen.

2006-11-17 cjg
 * Added latitude and longitude fields to eprints and users.

2006-11-17 cjg
 * Added results citation for users which fixed a render bug.
 * Fixed bug in saved search xml export (from within user xml)

2006-11-17 cjg
 * Removed RequestWrapper
 * Fixed non-cookie login to use db authentication. maybe.
 * Moved DB login code to database, called nicely from 
    $session->valid_login( $user,$pass)

2006-11-17 cjg
 * Fixed bug in redirecting /perl/ if port!=80

2006-11-17 cjg
 * Tidied up field definitions for users & eprints

2006-11-17 cjg
 * XML::DOM no longer encodes " outside of attributes.

2006-11-20 cjg
 * Fixed rendering of language names
 * Added better error reporting if pins in a phrase are not DOM.
 * Started work on edit-subject but it's not really working yet.
 * Added removal request, including it creating a history event.
 * Removed some unused language code.
 * Removed some old cgi scripts.
 * Added a dark border to the mail textarea.

2006-11-20 cjg
 * Added warnings to deposit page.
 * No documents now causes a warning, even if it's legal.

2006-11-20 cjg
 * Fixed typo in requestremoval
 * Added tab in a convert plugin
 * Autocomplete now sends values of all fields in row.
 * Autocomplete now handles absolute id's and block replacement
    (in addition to field-value replacement).
 * Name search now uses all values, not just current field.

2006-11-20 tdb
 * Added wrapper element around <METS> (unsure whether there is
    an 'official' wrapper?)
 * Made openurl error messages more friendly - "not found" is now a
    system phrase
 * Added a show_404 option to handle_404 that, if set in the connection
    notes and is false, suppresses the normal 404 response
 * Added a not_found method to Session (compliments redirect)

2006-11-20 cjg
 * Removed bunch of unused CGI scripts
 * Moved /users/staff/export to users/export so that /users/staff could
    be removed.
 * Tidied help text and plugin-list output for import and export bins.

2006-11-20 cjg
 * Changed METS to call getChildNodes rather than childNodes

2006-11-20 moj
 * Added inital version of event_by_name (passes back the event
    type, but this isn't handled by the autocompleter script 
    yet)

2006-11-20 cjg
 * Added recommit functionality to epadmin

2006-11-20 tmb
 * Moved "Request a Copy" scripts to screens

2006-11-21 cjg
 * Removed a whole bunch of unused cgi scripts
 * Moved all admin tools into epadmin

2006-11-21 cjg
 * Feeds are now rendered as links in the export bar.
 * Added some padding to the icons in message windows.

2006-11-21 cjg
 * Redrew up & down sorting arrows
 * Redrew up & down multi-row rearranging arrows and changed the layout.
 * Added vertical aligning to +/- icons.
 * Redrew +/- icons
 * Redrew required star icon
 * Added an example image for other icons
 * Redrew delete file/document X icon.

2006-11-21 moj
 * Fixed small bug in Convert.pm (if split on mime type returned
    undef)
 * Added link to repository version from View.pm (if item is in
    live archive).

2006-11-21 moj
 * Added indexer queue size to Status.pm

2006-11-21 cjg
 * Fixed issue in list that it warns if a cache should have been dropped
    and wasn't but couldn't be as the database had already been GC'd
 * Date didn't supress enter in the year input field. Now does.
 * Changed show/hide help to a [?] mark
 * Redesigned Upload component
 * Added new javascript Slide toggle which centers on the toggled thing.
 * New upload and collapsed component-show uses it.
 * Changed and onClick to be onclick
 * Renamed Files stage to Upload
 * Fixed pins in placeholder - they were not DOM
 * Changed the lines between bits in the blister into arrows.
 * Messed up import (will fix asap)
 
2006-11-22 cjg
 * Fixed import and it now obeys --user

2006-11-22 cjg
 * Added help to search forms.
 * Reset password option now always shows on login page, but only if you are
    allowed.

2006-11-22 cjg
 * Shifted logged-in toolbar to appear in the dynamic template.
 * Changed the "more" in the template to a toggle.
 * generate_static now reports inexpected files in the website and removes 
    them if --remove is set.
 * The editlink tab now shows the blister bar rather than a <ul>

2006-11-22 moj
 * Shifted mime_type from Convert to Document. Takes the local filename and
   prepends the path. If no filename, uses the main file.
 * Added can_invoke to Repository. This takes a cmd_id and map (as with 
    invocation) and returns 1 if it can be invoked. This checks that the
    invocation exists, and also that all the slots $(SOURCE) etc are filled
    by the map.
 * Converted METS and Unpack to use the new mime_type call

2006-11-12 moj
 * Tweaked exists_and_set to call is_set - was getting the value incorrectly
    so failing on compound fields.

2006-11-22 cjg
 * Added document thumbnail plugin
 * Added popup preview of files
 * Added redo_thumbnails to epadmin
 * mkdir now sets the correct gid
 * $doc->thumbnail_url now checks if the file exists on disk rather than if
    it theoretically should exist.
 * Added getgrnam to Platform
 * Fixed scroll on file roller to go to the outer element not the element 
    being revealed.
 * Changed generate_static --remove to --prune

2006-11-23 cjg
 * EPrint screens now label explicit editor and depositor screens.

2006-11-23 cjg
 * $search->render_condition_description no longer ends with "."
 * Search results pages now have a title of the search description
 * Fixed broken saved search export
 * Fixed broken feeds export
 * Export link now describes how many results will be exported.
 * Fixed problems with links in submission problems warning boxes.

2006-11-23 cjg
 * $subject_field->get_values() was returning values more than once if
    they occured twice in a lattice.

2006-11-23 tdb
 * Access log now ignores inline content
 
2006-11-23 cjg
 * Added a inline-based no_js class as well as the block one.
 * Fixed render issue with blister bar in EditLink
 * Added erase_eprints to epadmin (it was missing)
 * Moved ImageMagick plugins to a subdir for tidyness.
 * Fixed error with "prev" button in eprint edit
 * Shortened some of the admin option names.
 * Swapped order of views (doesn't really matter)

2006-11-23 cjg
 * Fixed bug in using the same field in view and subheading.
 * Fixed error in subject upload if metadata subjects don't exist in
    subject tree.
 * Added information on where EPC scripts came from (phrase,citation etc.)
 * Internal buttons no longer trigger validation warmings 
 * thumbnails now exist in document dir, not one big dir
 * thumbnails now pick up security of document they came from
 * Fixed some links to documents which were /02/ when that'll just redirect
    to /2/ so made it explicit in the link.
 * Fixed rendering of blister bar on deposit page
 * Link in "request a copy" email now goes to item control page.
 * RequestCopy screen now uses new icon link method
 * Added chown-for-eprints to convert plugins
 * Fixed bug that imagemagick convert plugins didn't handle uppercase
    suffixes.
 * Split thumbnail convert id into thumbnail_small etc.
 * Fixed EPC error in phrase in requestdoc
 * Browse by year now subdivides page into months
 * Added a little bit of vertical alignment on +/- icons in subject input.

2006-11-23 cjg
 * Added some padding above and below the blister in editlink to stop it 
    looking odd.
 * Added update button to upload component
 * Added styles to view pages.
 * Changed "number of items" text for subject views to make it clearer.
 * Added forgotten "blister arrow"
 * Broke up eprints.js
 * Renamed all js files to be prefixed with a number to make them look 
    less confusing.

2006-11-23 cjg
 * Got rid of toggling menu at top of screen - moved actions into Admin

2006-11-24 cjg
 * Fixed plugin loader to only load files _ending_ in .pm
 * Changed ABSTRACT to DISABLE as the varname to disable a plugin.

2006-11-24 cjg
 * Added local .js and .css files to show people where to add stuff.

2006-11-24 cjg
 * Fixed bug in plugin loader.

2006-11-24 cjg
 * Fixed back button/re-post problem
 * Changed login system to set a cookie BEFORE you log in
 * stuff now creates a url of the static view for the resource after
    a post redirects.
 * Messages in a POST request now save to a db table to be shown the
    next time the current user gets a screen rendered.
 * Fixed bug in blister bar - did not highlight deposit stage.

2006-11-26 cjg
 * Fixed issues with internal buttons and values being passed int the new
    POST/GET system.
 * Fixed bug that surrounds lost the [?] help button.
 * Disposed of an XML which is tested but not used.
 * Removed get_internal_value_id - no longer used
 * removed get_internal_value from metafield

2006-11-27 moj
 * RequestRemoval/RemoveWithEmail/RejectWithEmail now use a phrase for
    'click to edit'.
 * AbstractSearch uses phrase for bad subscreen
 * Upload's Hide/Show options are now phrases. 

2006-11-27 moj
 * Added phrases for unphrased admin actions

2006-11-28 moj
 * Added phrases for import plugins (not for those in constructor,
    as no session is available at that point). 
 * Renamed $name to $a_name/$e_name in BibTeX, as this was giving
    warnings.

2006-11-28 moj
 * Missed phrase in XML, tidied up file a bit.
 * General testing with flawed XML import file. 

2006-11-29 tdb
 * Fix XML::LibXML::Text->toString returning undef on empty string
 * Added support for File::BOM and dos-format files to Endnote
    import
 * Fix my fix for XML::LibXML::Text (ought to be toString, not
    ->data!)

2006-11-29 moj
 * Added citations for succeeds/commentary.
 * Added phrase to put HTML wrapper around mail.
 * Email.pm uses HTML wrapper phrase.

2006-11-29 moj
 * Temporary fix to avoid errors with messages (puts <div> around
    strings). Probably a better way to do this.

2006-11-30 moj
 * Added cursor:pointer to dropdown (better than the text cursor)

2006-11-30 moj
 * Altered password field help (no longer logged out when you change
    password).

2006-11-30 moj
 * Created render_no_results as an opt to the Paginate module. This
    is rendered in place of the results if none are returned. 
 * Added a render_no_results to render a tr with the correct colspan
    in Paginate::Columns

2006-12-01 tdb
 * Added experimental mapping from OpenURL resolver to OAI-PMH
 * Added BOM and CRLF detection to bin/import
 * Removed BOM and CRLF detection from EndNote
 * Removed user=0 dropping of the user argument
 * Added a confirmation to bin/import if user argument isn't set
 * Added an OAI script to export access logs

2006-12-01 cjg
 * Removed unused #! header from Script.pm
 * Better handling for broken messages so they don't crash the display.
 * Moved when thumbnails are triggered.
 * Made an abort in platform::unix call the abort() method explicitly.
 * Import screen now uses command line script to import.
 * bin/import now has --scripted option which gives machine readable info
    on what has been imported and if it completed ok.
 * Fixed bug that meant that to_string could contain non utf8 data if 
    dirty data was used to create the DOM using XML::DOM

2006-12-02 cjg
 * Shortened "fieldname UNSPECIFIED" to "UNSPECIFED".

2006-12-02 cjg
 * Fixed bug that pagerange was an INT in the database.

2006-12-02 cjg
 * In EPScript = and one_of now do something sensible with multiple fields.

2006-12-03 cjg
 * Fixed a couple of bugs if abstractsearch gets the wrong subscreen or
    a non available export format.
 * Added config to disable plugins and link screens into new lists.

2006-12-03 cjg
 * Removed some stray debug lines introduced in last commit.

2006-12-03 cjg
 * Actions now do POST but screen buttons still do GET
 * Fixed bug with thumbnails on new-version
 * Fixed bug with thumbnails on import
 * Fixed some method="form" oddness.

2006-12-03 cjg
 * Added MIME::Lite module 

2006-12-04 cjg
 * Renamed a css file to lose the "_" in the filename
 * css'd the action list and action bar

2006-12-04 cjg
 * Added missing phrase.

2006-12-04 cjg
 * Fixed issue with repeating background in toolboxes.
 * Upped user history page size to 50 from 5.

2006-12-04 cjg
 * Changed "Editorial Review" to "Review" (may still need some tweaks)
 * Added new history events: "note" and "other". 
 * "note" appears in the "messages" tab.

2006-12-04 cjg
 * Changed all aborts to EPrints::abort()

2006-12-04 moj
 * Tweaked emails to be a bit more HTML (slightly larger font for 
    headings, and bold around usernames/titles).

2006-12-04 moj
 * Added email link to activation email.
 * Reworded activation email a little.

2006-12-04 moj
 * Added EngD thesis as thesis_type
 * Added Keynote as pres_type
 * Added relevant phrases

2006-12-04 cjg
 * Fixed bug in ordering of search results.
 * Added form to change order of results from results page.

2006-12-04 cjg
 * Fixed issue with import script treating no --user as user "0"
 * import script now only frets about no --user if it's an eprint import
 * Import plugins now set eprint_status to buffer if no other value is 
    available.

2006-12-04 tdb
 * Changed default for user arg in bin/import to undef, otherwise
    --user 0 gives a confusing error (non-obvious users are 1-indexed)
 * Replaced input_list with input_file (read from filename) and input_fh
    (read from filehandle)
 * input_file opens file for reading, sets binmode and calls input_fh
 * Added Import::TextFile abstract plugin that subclasses input_file to 
    detect Byte Order Marks and CRLF encoding
 * Removed CRLF encoding check from Import::FlatSubjects
 * Added error for STDIN to Import::BibTeX (unsupported)
 * Changed bin/import_subjects to use input_file

2006-12-04 cjg

 * Changed _foo to foo in params in searches - looks neater.
 * Added export to latest_tool
 * Added links to global feeds from front page.

2006-12-05 cjg
 * Fixed input_list call in testdata to be input_fh
 * Updated contributors list in AUTHORS and webpage.
 * Fixed bug with validating compound fields.
 * Fixed issue that Endnote and flatsubject import plugins didn't have
    "textfile" loaded. 
 * Moved around some fields in workflows
 * Added optional params to lookup urls (for passing extra info, eg. user
    group)
 * Added LIMIT 40 to journal lookups
 * Added publisher to article type
 * Cleaned up user validation subroutine

2006-12-05 moj
 * Item(s)->Field(s)
 * 'No Tools Available' as FirstTool title

2006-12-05 cjg
 * Improved the way columns shows no items

2006-12-05 moj
 * Added pin delta to reset_password

2006-12-05 cjg
 * Sort rendering for reset_password

2006-12-05 cjg
 * Fixed bug with messages and GDOME. (hopefully also fixed for LibXML, but
    not tested)

======================================================================
05/12/2006 - EPRINTS-3.0-beta-3
======================================================================

2006-12-05 tmb
 * Improved Import screen, added "Test Import" option

2006-12-06 tmb
 * Added placeholders for new eprint types

2006-12-06
 * Added broad strokes of Pubmed XML and Pubmed ID import plugins (needs 
    refining later)

2006-12-06 moj
 * Switched pages->pagerange

2006-12-07 cjg
 * Fixed issue with no columns in items and review

2006-12-07 cjg
 * Added a clear error if an unknown export plugin is called from the search.
 * Fixed bug that a failed login caused it to forget where we were going.
 * Added (!) warning box for "there is a newer version" messages and 
    improved phrasing.

2006-12-08 cjg
 * Fixed a bug that workflow fields ignored required param
 * Fixed the some confusion that required was "1" in the fields config and
    "yes" in workflow.

2006-12-10 cjg
 * Added lookup scripts to use files and directories.
 * Added an empty autocomplete directory.

2006-12-10 cjg
 * Added new metadata type : multilang
 * Subject now uses multilang rather than the hack
 * Removed lots of old multilang code.
 * Made up/down arrows on multiple input css style nowrap.

2006-12-11 cjg
 * Added a note about cookies being needed.

2006-12-11 cjg
 * XML subject import now ok.
 * PubMedXML now only imports eprints, not all types.

2006-12-11 cjg
 * Fixed bug that export buffer exported all datasets

2006-12-11 cjg
 * De-centered abstracts.

2006-12-11 cjg
 * Fixed validate jump links for user area validate fields.

2006-12-11 cjg
 * Friendly error for owner of eprint on denied screens.

2006-12-11 cjg
 * Added generate_static, import_subjects and generate_apacheconf to 
    epadmin create and erase_data

2006-12-11 moj
 * Added maxdelta to password change mail_sent phrase
 * Changed confirmation email to put link around 'active password'.

2006-12-11 moj
 * Fixed 'to name' in RequestDeletion email (was not being converted
    from DOM to string).

2006-12-11 moj
 * Updated RequestDeletion to use the nicer mail format, and reworded
    email to avoid 'click here'.

2006-12-11 cjg
 * Changed cookies to expire on browser close.
 * Improved style of search field titles in editorial scope select
 * Added pretty styles to Import screen.
 * Changed eprint_render to call null action on request copy screen.

2006-12-11 cjg
 * Added Readonly.pm

2006-12-11 cjg
 * Abstract search now does not abort on bad plugin in redirect substage.

2006-12-11 cjg
 * Now removes expired login tickets.

2006-12-11 cjg 
 * Fixed bug in "next" search results 
 * List was leaving stray caches around. Fixed.
 * NULL dir field in EPrint now causes abort: it's too serious for just a 
    warning.

2006-12-12 moj
 * Shifted time/date-related functions from Utils to Time.
 * Added moved functions to BackCompatibility
 * Searched/Replaced any functions that were moved and updated to 
    Time.

2006-12-12 moj
 * Added help for corp authors

2006-12-12 moj
 * Removed a '!' and fixed the required fields bug

2006-12-12 cjg
 * Added Subject::Edit
 * Fixed bug in filtered searches when searchfields were being OR'd so 
    were filters. Which was bad.
 * Multilang subjects now don't spew warnings to log if they have undefined
    languages (although there should be a validation issue)
 * Added more code to keep abstract search from spewing warnings when it
    gets odd params.
 * Added subject editor to admin options.

2006-12-12 cjg
 * Added hook on files modified.

2006-12-12 cjg
 * Added description for subject::edit
 * Made multilang use $c->{languages} for their default list of langs.
 * ...or take it from a multifield property.

2006-12-12 cjg
 * Another attempt to supress the odd no-results bug we're seeing in the log.
 * Added a warning if no contact_email and no public docs.

2006-12-12 cjg
 * Boolean fields which are not required now get an UNSPECIFIED option
 * workflow can override the top subject field and the options from a set
 
2006-12-12 cjg
 * Added a way to override parameters of plugins.
 * Added "advertised" option to import/export plugins to allow them to
    still work, but not get advertised that they are available.
 * Added examples to plugins.pl

2006-12-12 cjg
 * namedset fields can have an option param. This is largely used to limit
    the options shown in workflows.

2006-12-12 cjg
 * New from data now handles compound datastructures
 * XML export now run through XML::tidy.
 * Import/Export XML does something nice with compound fields.
 * Fixed some $plugin->params which should have been ->param

2006-12-13 cjg
 * set_value now does not abort if the field is not a real field, but it
    still gives a warning.
 * Added tidy method to dataobj to remove empty rows in multiple fields.
 * Called tidy from each commit() method
 * Removed broken blank-row-removed from database module.
 * Fixed warning in Boolean caused by recent changes.
 * Fixed typo in Access where timestamp should have been datestamp.
 * More attempts to fix that weird abstractsearch no results bug.
 * Fixed import to only ask about userid if we are actually importing.

2006-12-13 tmb
 * added funders, projects and divisions fields
 * added default organisation structure hierarchy for divisions field
 * added lookup script which attempts to detect and prevent duplicate deposits
    by looking at the title being entered

2006-12-13 cjg
 * Fixed bug that workflow next/prev didn't look at current data, but pre-
    update from form data.

2006-12-13 tmb
 * Prettier import screen
 * Import screen complains if no file/data given
 * Test run and Test run + Import actions for import screen

2006-12-13 cjg
 * Fixed OldXML export.

2006-12-13 tmb
 * Added redirect_to_me_url subs to fix Public::RequestCopy and 
    Request::Respond screens 
 * Removed "click here" from request copy email

2006-12-13 tmb
 * Added eprintid param to title dup lookup so that the current record isn't 
    suggested as a duplicate
 * Wrapping for warning/error messages in Import screen

2006-12-13 tmb
 * Don't try and suggest duplicate titles unless at least 5 chars have been typed

2006-12-13 cjg
 * erase_eprints now offers to rebuild static pages.
 * added google scholar headers
 * moved LINKS in eprint_render to being done by plugins - cleaner 
    eprint_render.pl
 * Added \n after header links to make produced page less annoying.
 
2006-12-13 cjg
 * Tiny change to render_citation so that we can pass through a target param.
 * Used this to stop entire citation being a link in title_lookup

2006-12-14 cjg
 * Fixed rendering problem with itemref fields.

2006-12-14 cjg
 * Moved google-friendly headers into a plugin called "simple" and 
    made it available as an export option.

2006-12-14 cjg
 * Minor change to lookup scripts to make them work in mysql 4.

2006-12-14 cjg
 * Registration errors now use proper error message style.

2006-12-14 cjg
 * Document upload no longer required by default (but a warning is still
    given).

2006-12-14 cjg
 * Removed unused secure template.

2006-12-14 tdb
 * Increased dependency for LibXML to 1.62 (segfault under 1.58* that I
    can't identify).
 * Modified BackCompatibility to set %INC correctly (now works with
    Apache::Reload!)

2006-12-14 cjg
 * Fixed odd situation when screen plugin forgot it's session
 * Added option to disable plugins by default and then de-disable them per
    repository.
 * Changed disable config option from {pluginid}->{disable} to 
    {pluginid}->{params}->{disable} and updated plugins.pl to reflect this.

2006-12-15 cjg 
 * Fixed buggy use of param() in component which classed with plugin param
    method.
 * Fixed security hole in PubMedID import.
 * Fixed issue with importing data via compound fields.

2006-12-15 cjg
 * Added DOI Import

2006-12-15 cjg
 * Fixed broken user link in render page.

2006-12-18 cjg
 * Moved stty in Compat::Term::ReadKey so that it's only called if needed,
    not at the start time, which was producing a warning in cron.

======================================================================
18/12/2006 - EPRINTS-3.0-RC-1
======================================================================

2006-12-18 cjg
 * Changed INSERT to REPLACE on login tickets - should fix bug with IP 
    changing on laptops.

2007-01-03 tmb
 * Added more examples for Request Copy configuration (eg. first author)

2007-01-03 tmb
 * Used File::Temp for temp files in Import screen

2007-01-03 tmb
 * Moved EFetch URL out of code
 * Added filter on PubMed ID - must be an int
 * Used LWP::Simple to get PubMed XML - not wget
 * Used File::Temp for temp file in PubMed ID import
 * Added extra mappings to PubMed XML import

2007-01-08 moj
 * Set userid to be optional
 * Previous commit: Changed userid to use user dataset rather than
    document.

2007-01-08
 * Added ApacheLog import plugin for access log data

2007-01-09 cjg 
 * Changed INSERT to REPLACE on login tickets- should fix bug with IP 
    changing on laptops.
 * Added $current_lang to available data in eprint script.
 * Moved exec'ing of SystemSetting binaries into Platform so that they
    can use custom code on non-UNIX platforms.

2007-01-09 tmb
 * Used TeX::Encode to provide some handling of accented characters in
    BibTeX import.

2007-01-10 moj
 * Added user/remove action
 * Changed sure_delete to be a plugin phrase
 * Added User::Remove screen (similar to EPrint::Remove)
 * Added phrases for User::Remove

2007-01-11 tmb
 * Added first cut of metadata fields, phrases and citations for new 
    eprint types.

2007-01-11 tmb
 * Added necessary bits to make activating minimal users simple.

2007-01-16 moj
 * Added exists_and_set checks to DC exporter.

2007-01-16 cjg
 * made fileinfo not export in XML.

2007-01-16 cjg
 * made fileinfo not export in XML actually work.

2007-01-16 cjg
 * Commented out autoloader in Tex::Encode to get rid of a warning.

2007-01-11 moj
 * Public::RequestCopy stores actor as user's name (if logged in)
    or email address (if not).

2007-01-17 cjg
 * Fixed issue with &<> in autocomplete.
 * Fixed up confusing help in import
 * Added --force option to import

2007-01-17 cjg
 * fix rolllogs to EPrints::Index::rolllogs in indexer

======================================================================
17/01/2007 - EPRINTS-3.0-RC-2
======================================================================

2007-01-20 tdb
 * Fixed security holes in lookup scripts

2007-01-22 cjg
 * Removed SQL from lookup script.

2007-01-22 cjg
 * Fixed bug in Session which caused buttons to do odd things for
    a few seconds after initial login. (due to failing to clear an
    apache note).

======================================================================
22/01/2007 - EPRINTS-3.0
======================================================================
