WebSphere Portal sports new theming features since 7 FixPack 2 and the freshly GA’d 8 release that enable the creation of advanced client side aggregated themes while allow for optimized delivery (that is minimal number of requests / kilobytes transfer required) to client devices : Portal Theme Optimization; here’s links to the docs for portal 7 and portal 8
For one, the theming framework itself is fully javascript library agnostic (the included theme uses dojo 1.6 on portal 7 and dojo 1.7.2 on portal 8 ) and furthermore defines a set of metadata components (modules/profiles) that express dependencies between static/dynamic html, css and javascript resources in such a way that the designer can define what resources are sent to the client by associating a profile with a theme, page or by setting the default profile for an entire Portal environment. One big benefit is you no longer need to touch code to eg. remove a feature from your theme, you just modify the profile metadata or assign a different one to the correct scope, very neat.
As a first step to creating such a theme, the right resources have to be created, primarily by copying & modifying the included theme (Portal7.0.0.2 for 7 FixPack 2).
This involves among others copying the theme directory from the WebDAV themelist mountpoint to a local harddisk for modification and copying it back afterwards to register it in Portal as a new theme.
While WebDAV is great, it did cause me to scratch my head a few times since I was noticing quite a few ‘file could not be found’ exceptions while copying back the new theme to the WebDAV themelist mountpoint and the copy operation itself did not seem to complete successfully.
As it turns out, you need to manually verify every file from your new theme has been copied over correctly and manually correct where/when needed until the entire theme directory has been trasferred to WebDAV successfully.
In my case, the metadata.properties file in the root of the theme directory was present *but* the contents were not as expected, and the localized metadata properties were missing altogether.
This was quite confusing, as a basic best practice when dealing with Portal (or any server/service) is to keep an eye on the logs (aka exceptions == bad), and the manual verification/retry was equally foreign to me (something usually completes successfully or not at all, there is no ‘partial’).
So, when adding directories to the Portal WebDAV:
- verify everything was copied over properly, completely
- keep correcting until everything is present