1.1.0 TO 1.2.0 UPGRADE

Changes (compared to Daisy 1.1.0)

Features

  • Graphical navigation tree editor that should enable non-technical users to edit the navigation tree (XML knowledge is no longer required). The tree editor works in both IE and Mozilla and doesn't require any server round tripping, it all works client side like a desktop application, include easy moving or cut/copy/paste of nodes, unlimitted undo etc.
  • Comments can now be added to documents.
  • The document lookup dialog can now be used for includes and out-of-line links.
  • Generalized the database repository creation and JDBC usage to be able to support other databses besides MySQL, more specifically PostgreSQL can now be used.
  • The top-left logo is now a link to the home page of the current site, or the Daisy home page if outside of a site.
  • The Daisy Wiki now runs on both the 2.1.X and 2.2 branches of Cocoon.
  • Added a 'duplicate document' feature which copies the current document into a new one.
  • Improvements related to hierarchical navigation tree and URL space:
    • A 'nice' URL space can now be created by assigning explicit node IDs in the navigation tree editor. This makes it possible to completely hide the numeric document IDs from the URL path, if wanted.
    • A Daisy Wiki site can now be downloaded using a tool like wget, this is facilitated by giving certain pages a .html extension (previously there were paths that were both file and directory, by giving the files a .html extension this is avoided).
    • A group node can now be requested explicitely, which will cause a redirect to the first document child (possibly recursive if the first child is again a group). This makes that the contextualized tree mode now also works when using group nodes (the contextualized tree mode can be activated on a per-site basis by modifying the sites' siteconf.xml file, look for the contextualizedTree element)
    • Empty group nodes are not shown. Note that the emptyness is user-dependent, i.e. if a group contains only documents a user has no read access to, thus if the group node would show up empty for the user, it is not shown.
    • Links inside documents to other documents are now translated to their path in the navigation tree (if they are present in the navigation tree).
    • The browser is redirected if necessary so that the URL in the location bar corresponds to the location in the navigation tree of the current document.
  • Added text-extractors for the full text indexer for Microsoft Powerpoint and Excel files, contributed by Bernard Pire.
  • The following parameters are now available in the stylesheet that styles documents: user (login of the user), userId, role, roleId.
  • Users can now register themselves. By default they will get assigned the role guest, though this is configurable. Registered users are then able to add comments to documents or subscribe for notification mails. To support the user registration feature, users have two new properties: confirmed (a boolean) and confirmKey (a string).
  • Added a password/login reminder feature.
  • Added a list of sample queries to the query search page.
  • When editing a document who's last version is a draft version, set the " publish changes immediately" flag to false.
  • Part data is now handled using streams instead of byte arrays, which makes handling of parts larger then the available JVM memory possible (theoretical limit is 2^63 - 1 bytes or filesystem file size limit), and this also speeds up upload and download of larger parts seriously.
  • It is now possible to change the login from error pages.
  • Added link to admin pages to navigation.

Bug fixes or non-feature work

  • fix xml encoding detection problem in the repository server
  • fix classcastexception in authentication code
  • fix problem with @ sign being used in login
  • fix problem with subscription info being deleted when all subscription options are turned off
  • api change: user management related methods now declared "throws RepositoryException" instead of throws UserManagementException to avoid n eedless wrapping of RepositoryExceptions.
  • internal cleanup of Remote**Strategy classes, removed lots of duplicated code.
  • removed base element from output, not needed anymore and fixes problem with hardcoded http (which is a problem when using https)
  • fix problem with previewing larger navigation trees
  • fix problem with newlines at end of include URLs
  • the document state indication (publish/draft) was not translatable in a few locations, now this is possible
  • editing of the login on the user settings page did not actually work, fixed now.
  • the small info line displayed below each document has been replaced by a separate document info popup window. For the PDFs, the info line in the footer has been made shorter.
  • emailnotifier didn't handle role events, fixed now
  • to support some of the new features, the NavigationManager and Emailer components now have remote implementations of their Java interface.
  • fixed a NullPointerException in the diff component.
  • when a document node in a navigation tree references a non-existing document ID, skip it (and log a warning) instead of failing on it.
  • the session timeout is by default configured as 120 minutes.
  • made it possible to authenticate via the HTTP connector when the login contains an @ symbol, it can now be escaped by doubling it (thanks to Min Idzelis for reporting the problem).
  • To avoid a naming conflict, the variable 'navigationPath' which was used in the searchresult stylesheet and in custom search result stylesheets, is now renamed to searchResultBasePath. Thus if you created any custom query styling stylesheets, you'll need to update them.
  • Fixed a problem that made it impossible to delete a user which was last updated by the user itself.
  • Disabled russian translation because it hasn't been maintained.
  • Fix problem with spaces in user, role and collection names in HTTP interface implementation.

... and probably a bunch of other stuff that we neglected to write down.

Upgrading

In most cases upgrading from Daisy 1.1 to 1.2 should be a matter of minutes (excluding upgrading custom-developed skins).

Before starting

Shutdown Daisy (the repository server, the daisy wiki, and the openjms server)

Make backups! More specifically:

  • make a copy of the daisy data directory
  • do a dump of the database:
    mysqldump daisyrepository -uuser -ppassword > daisyrepo.sql

Update database schema

There have been some changes to the database schema (related to the comment functionality). The database schema can be upgraded by executing a SQL script, actually there are four of them, located at:

misc/daisy-1_1-to-1_2_pre1_update.sql
misc/daisy-1_2_pre1-to_1_2_pre2_update.sql
misc/daisy-1_2_pre2-to-1_2_pre3.sql

misc/daisy-1_1-to-1_2_pre3_update.sql

(yes, the names of those files are inconsistent)

Since the 1.2-pre3 release there have been no changes to the database schema, so if you're already running the pre3 release you don't need to update the database schema.

The names of the files should make it pretty clear which one(s) you need to execute. If you are directly upgrading from 1.1, use only the last one, otherwise use the appropriate ones from the first three.

So this is what needs to be done:

cd DAISY_HOME/misc
mysql -Ddaisyrepository -udaisy -p<password>
[then on the mysql prompt]
\. <name-of-the-script>.sql

The last command can be repeated multiple times if you need to execute multiple scripts.

Configuring JDBC driver classpath

(if you are upgrading from 1.2.0-pre1, 1.2.0-pre2 or 1.2.0-pre3, you can skip this)

Daisy 1.2 requires to configure the JDBC driver classpath. To do this, edit the file:

<location-of-daisy-data-dir>/conf/myconfig.xml

and look for the following lines:

  <target path="/daisy/datasource/datasource">
    <configuration>

Inside the configuration element, add the following element (exact location is not important):

<driverClasspath>DAISY_HOME/lib/mysql/jars/mysql-connector-java-3.0.15-ga-bin.jar</driverClasspath>

in which you should substitute DAISY_HOME by the real location of your daisy installation.

Copying over old configuration

Some of the configuration changes done during the initial setup of Daisy included changes to files within the Daisy distribution directory. These now need to be copied over:

  • OLD_DAISY_HOME/openjms/config/openjms.xml to DAISY_H OME/openjms/config/openjms.xml
  • OLD_DAISY_HOME/daisywiki/webapp/daisy/sites/* to DAISY_HOME/daisywiki/webapp/daisy/sites
  • In DAISY_HOME/daisywiki/webapp/WEB-INF/cocoon.xconf:
    • Adjust password for openjms user (if not left to default): <credentials password="openjms" username="admin"/>
    • Adjust password for "internal' user: <cacheUser login="internal" password="defaultpwd"/>
  • If you created any document type-specific stylesheets, you can copy them over also
  • If you developed a custom skin, then you'll have to update it to work with the new version. There's no easy or quick way to do this.

Edit DAISY_HOME/openjms/bin/setenv.(sh|bat), uncomment the line defining the CLASSPATH and put the MySQL driver in the CLASSPATH, which can be found at (substitute DAISY_HOME by its actual location):

DAISY_HOME/lib/mysql/jars/mysql-connector-java-3.0.15-ga-bin.jar

Creating the "registrar" user

(If you are upgrading from 1.2.0-pre2 or pre3 you can skip this step)

In support of the new self-registration and password reminder features, the Daisy Wiki requires a user with the administrator role for this. By default we call this user "registrar" and it can be created by the daisy-wiki-init program.

To create the registrar user, first start openjms and repository server, but NOT the daisy wiki (if necessary, update the DAISY_HOME and OPENJMS_HOME environment variables first). Then, open a command prompt, make sure DAISY_HOME is set, and go to the daisy-<version>/install directory. Over there execute the following command:

daisy-wiki-init --registrar-user

This will prompt for a password for the registrar user. The installation program will propose a complex autogenerated password. It's fine to leave it to this, since the next thing the installation program will do is propose to update the cocoon.xconf file with this password, so you don't need to remember it.

After this, you can also start the Daisy Wiki.

Note about static resources and caching

Since static resources are cached for about 5 hours by your browser, you might need to do a full reload (shift + reload button on the browsers' toolbar). Also when opening the editor for the first time do a shift + reload.

Note about users

In release 1.2-pre2 the first name and last name of users where merged into one name field. In release 1.2-pre3, the name field is again splitted in first name and last name. The automatic splitting might not be perfect, so have a look at your users list after updating. If you upgrade directly from 1.1 to 1.2-pre3, you won't have this problem.

If these instructions or unclear to you, or if you find an error in them, please share them with us on the Daisy mailing list.