Document editor
In your document browser configurations you can now specify that the document browser popup should start in table mode or in preview mode. This is done by adding a startMode="previewMode|tableMode" attribute on the root element of docbrowser-....xml.
You can now control what is being searched by the FullText clause (name, contents and/or fields). For each location there is a checkbox for which the visibility (show/hide), default state (checked/unchecked) and read/write site can be configured in the documentbrowser configuration
XML formatting of Date and DateTime fields
The formatting of Date and DateTime fields in XML representations of
documents (over the HTTP interface, and in the export format) has been mildly
changed.
We keep following the formats as defined in the
relevant W3C
recommendation, but reside to a more controlled way of serializing the Java
Date objects to achieve some level of timezone-neutrality.
In detail:
- Date fields are serialized in a more strrict YYYY-MM-DD format (stripping the time and timezone fragments ensures that no time offsets between client and server can introduce shifts to previous/next day)
- Datetime fields are serialized after normalization to GMT (thus we now always have trailing "Z" indications on these)
Imports from previous verious should just keep on working on the new system as before (ie. possibly showing wrong value shifts when client and server have non matching time-zones. Note that this mismatch can be relieved by providing "-Duser.timezone=..." when starting the client.
Dependencies
Daisy now depends on Joda-time, an excellent java date and time API. The dependency is introduced via the repository API, so chances are that you will want to add it to your projects as well when upgrading.
Access control
There are two new detail permissions:
- read live history
- publish live history
The upgrade instructions will grant 'publish live history' to users who already have publish permissions.Read live history is not granted automatically.
API changes
Point in time related API changes
- PublisherVersionMode, NavigationVersionMode, WikiVersionMode: these have been replaced by a single class: org.outerj.daisy.repository.VersionMode
- new methods on Document:
- LiveHistoryEntry addLiveHistoryEntry(Date startDate, Date endDate, long versionId)
- void removeLiveHistoryEntry(LiveHistoryEntry);
- LiveHistoryEntry[] getLiveHistory();
- LiveHistoryEntry getLiveHistoryEntryAt(Date date);
- Version getVersion(VersionMode);
- long getVersionId(VersionMode);
- void setRequestedLiveVersionId(long);
- void setNewLiveStrategy(LiveStrategy);
- Timeline getTimeline()
Important change: the 'live' version is no longer calculated by looking at the most recent published version. In fact, the version state concept is completely detached from the 'live' version. However, for backwards compatibility reasons, if a new published version is created the default behaviour is to also make it the live version. (If you don't want this, use the new API method Document.setNewLiveStrategy(LiveStrategy)).
- new methods in NavigationManager:
- generateNavigationTree(..., boolean allowOld). If allowOld is false, you get the same result as the method without allowOld argument, else you can get a slightly outdated version - which is faster, especially when there are a lot of repository changes going on.
- lookup(..., boolean allowOld).
- reverseLookup(..., boolean allowOld).
new Repository.getRepositoryManager() method
This method is useful to get access to the RepositoryManager, and thus to be able to get a Repository for a different user, in situations where you only have access to a Repository. Concrete use-case: pre-save hooks (which are loaded before the repository itself).
new QueryManager.performDistinctQueryReturnValues method
Added new variants of the performDistinctQuery methods which directly return the values rather than an XMLBeans object. The values are returned as a List rather than a Set since they are optionally sorted. These methods are only supported in the local implementation.
Authentication
new UserPropertyVisitor interface
This interface is meant to be used for setting user properties in the UserCreator. The user creator will take care of setting the scheme name and storing the user object.
new UpdatingAuthenticationScheme interface
An interface used by authentication schemes that copy user properties from the external authentication system. If the daisy user object needs to stay in sync with the external system this interface should be implemented.
new UserCreator.create method
Method allowing the setting of user properties by an authentication scheme.
Wiki full text screen configuration
A new configuration <extraConditions> has been added, see docs.
Book publishing
When you publish a book and specify to use the last version of documents, this previously only affected the documents that are part of the book, but not the book definition itself. Now this will also affect the version of the book definition itself.
Document tasks
In previous versions, when the repository was shut down, running document tasks were marked as interrupted and nothing further was done. As of Daisy 2.4, document tasks that were interrupted by shutdown are resumed when the repository comes up again.
User auto creation / authentication schemes
You might have gathered this from the changes to the API but it is now possible to sync Daisy users with users fetched with an Authentication scheme. Read through the sample to see how it is done.
Document editor
- Configurable tabs in the document editor. The sequence in which tabs are displayed and if tabs should be displayed at all are configured by a configuration file in the conf directory. Configuration is done on a per document type basis. Have a look at the document editor notes
Various
- The default locale for notification emails and messages can be set with vm parameters -Duser.language= and -Duser.country= This is a fix for DSY-782