1.5 TO 2.0 CHANGES

Core repository

  • [important change] Daisy switched to namespaced document IDs. Before, document IDs where simply a sequence number, now they are the combination of a sequence number and a namespace suffix. For example "123-DSY". Namespaced document IDs allow export-import of documents between repositories without collisions in the document IDs. See the docs on namespaces and the import/export tools further on.

  • Hierarchical fields: a hierarchical field is a field whose value represents a path in a hierarchy. Practically speaking, a hierarchical value is a sequence of values, much like a multi-value field, but with a different meaning attached to it. The hierarchy property of a field type is orthogonal to its existing properties, so it is possible to have multi-value hierarchical fields, and to have hierarchical fields in a variety of data types (the Wiki's document editor only supports string and link hierarchical fields). The query language has been extended to allow searching on hierarchical fields. The value of a hierarchical field can be selected from a hierarchical selection list, which can be static or query+link based.

  • Non-editable parts and fields: parts and fields can be marked as non-editable. This is done in the association with a document type, so a field could be editable in one document type but non-editable in another. This non-editable restriction is a hint towards the frontend GUI that the part or field should not be editable, it is not an access control restriction. Non-editable parts and fields are useful for parts and fields which are automatically assigned by some process (e.g. the image width and height fields and its thumbnail and preview parts).

  • Asynchronously loaded selection lists: field types have a new property to indicate that the selection list of a field should be loaded asynchronously (in the document editor), which is useful for large or slow query-based selection lists.

  • The remote Java API of the repository server no longer requires that the 'cache user' is a user with the Administrator role. Now any user can be specified (for example guest, pwd guest). The cache user is the user specified in the Credentials object when constructing the RemoteRepositoryManager.

  • The repository server now keeps track of the last version in which the data of a part was changed, this information is available in the API (on the Part interface). This allowed to implement the version reversion feature more efficiently.

  • Upgrade to ActiveMQ-4.1.0. This fixes an issue where read messages were not always removed from the queue and a possible memory leak. This change also calls for a small modification in the ActiveMQ configuration file.

Query subsystem

  • Fulltext search enhancements:

    • possibility to retrieve relevant fragments from the documents, with matching query words highlighted. This functionality is available through the new FullTextFragment() function in the query language.
    • the score of the fulltext search is now accessible via an identifier (called score) in the query language, to allow explicit sorting on this value, or to display the score to the user.
    • upgraded the Lucene engine to version 2.0
  • Faceted Browser enhancements:

    • discrete values (ranges): when confronted with large lists of facet values the user can opt for placing the values in ranges. This reduces the amount of values seen in the list.
    • default order by clause: allows specification of the default sort order of search results.
    • option lists: users can create sets of options which can be selected using request parameters. This way one set of facets (one definition) can be used with different options.
    • active navigation path: the faceted browser can now display a navigation tree. When the active navigation path has been specified as a request parameter the navigation tree will be rendered.
    • alternative stylesheets: each facet browser definition can be styled differently using its own stylesheet.
    • request parameters: arbitrary request parameters can be included in the facet definition options.
  • Link dereferencing in the query language: this is a powerful new capability of the query language, allowing to 'walk through' link fields to access properties of the linked-to documents.

  • Chunks of query results can now be retrieved, by using the query options chunk_offset and chunk_length.

Big new features

  • Export and import tools. The export tool exports a set of documents to a specific format, and the import tool reads this exported data to import it into a repository. There are various options to control the behavior of the import and export, and it is possible to modify document content and schema structure upon import or export.

  • Extensive workflow functionality has been added, based on an integration of the jBPM workflow engine.

Navigation component

  • the query node has been completely rewritten to allow some powerful new features:

    • it is now possible to select multi-value values (which was previously not the case).
    • it is possible to select the new hierarchical values. This will build up hierarchical structures corresponding to the hierarchical field values.
    • when selecting link values (as non-last selected value), document nodes will be created instead of group nodes.
    • sort order and visibility can now be configured for each selected value.
    • query nodes can now have child nodes, the child nodes will be executed for each query result. This allows for things like importing all navigation trees satisfying a query, nested queries, building link nodes dynamically, ...
  • navigation trees can now be generated (expanded) up to a certain depth. In the Wiki, this is configured with a new element <navigationDepth> in the siteconf.xml. This makes it possible to have a navigation tree expanded up to e.g. the second level even if it is contextualized. As a result, there is not really a difference anymore between a contextualized tree and non-contextualized one. In absence of a specific navigationDepth configuration, a contextualized tree has a default depth of 1, while a non-contextualized tree has an unlimited default depth.

  • a new node type, separator, has been added. The separator node is smart enough to hide itself in case all documents between two separators would not be visible (e.g. as a result of access control restrictions).

Publisher component

No big changes, just miscellaneous enhancements:

  • new catchErrors attribute on p:group, allowing part of publisher request to fail without causing failure of the entire request.

  • new inlineParts attribute on p:annotatedDocument, allowing to inline the content of non-Daisy-HTML parts.

  • runtime instead of compile-time evaluation of document, branch, language, version attributes of p:document (making it possible to handle errors in these with catchErrors on p:group)

  • new hierarchyElement attribute on p:document, to specify how to run over the values of a hierarchical link field.

  • when used in queries in publisher requests, the ContextDoc() function of the query language now supports a new argument to specify how many "document contexts" to climb up (previously, only the most recent document context was accessible).

  • link annotation: information about the parts in the target document now includes size and mime-type, so that it possible to show these in the rendered link.

Daisy Wiki

HTML editor

  • improvements for working with includes:

    • include previews: in case of "daisy:" includes, the actual content of the included document is now shown right inside the editor. The content is (mostly) uneditable, trying to edit it will propose to open the included document in a new window.
    • there are now toolbar buttons to insert an include, query or query-and-include. This is more obvious to use than inserting an empty line and switching the block element via the dropdown.
  • Various improvements to the dialogs: better (correct) sizing especially on Internet Explorer, layout improvements, use of Dojo (such as a custom widget to edit Daisy links), bug fixes, ...

  • Firefox-specific improvement: pressing enter on the end of a paragraph, followed by backspace to remove the inserted paragraph, didn't always work.

  • Table editing improvements: table cursor is automatically located in first table cell after table creation, tables are by default 100% wide, some other small things.

  • Made it possible to create a link when only an image is selected.

  • The HTML cleaner removes single newlines before a closing </pre> tag, which were typically inserted by Firefox but lead to layout distortions in the HTML editor in Internet Explorer.

Other changes to the Daisy Wiki

  • Improvements to editing of date and datetime values: datetime values now also have date and time pickers, the pickers are Dojo-based (and don't open in a new window), the time format allows to edit seconds, and lenient date parse mode is disabled, meaning that a date like Jan 32 is no longer silently accepted as Feb 1, but gives a validation error.

  • Administration screens:

    • it is now possible to sort on the various columns in the listings of document types, users, etc.

    • editing selection lists is now done with the same widget as for editing navigation trees. This was done to support hierarchical navigation trees, but also makes editing of flat selection lists more comfortable, and allows for XML-source based editing.

  • Document types which are marked as deprecated are now hidden on the "New document" page and in the "Link to new" dialog.

  • When retrieving the data of a part in the Wiki, using the "..../data" URL (i.o.w. using the PartReader), the file name of the part (if available) is set via the Content-Disposition header.

  • "daisy/" is by default not included anymore at the start of URLs.

  • The query search page now features an autocompletion-suggestion popup.

  • The fulltext search page is enhanced with the new query language features, such as display of relevant content extracts, score indication, and paged results.

  • And of course various changes to support new repository features, such as hierarchical fields, asynchronous selection lists, a complete workflow GUI, ...

Other changes

  • [important change] Daisy now requires Java 1.5.

  • The tanuki wrapper scripts (with binaries for Linux and Windows) are now included in the binary distribution, they are immediately useable without further configuration work.
  • Email notifications can now be disabled for events caused by certain users (e.g. applications that do lots of uninteresting changes).

  • The image pre-save hook can now automatically rotate images based on the EXIF orientation information (this is enabled by default).

  • The API documentation (javadoc) now also includes the APIs of extension components, and is published online.

  • Various smaller improvements and bug fixes.