Problem

We want to drop the old ui modules, namely admininterfacegui and fckeditor. However, those modules are used almost everywhere, and dropping them without first porting the existing modules' UIs to 5.0 would mean, in many cases, a severe loss of functionality (think of data module which is used by several other modules). Given our time constraints (release due on 20th June 2013) porting even some of them is not a viable option. So here comes the compromise.

Proposal

Create an admininterface-legacy (for want of a better name) module which holds all the old ui modules classes. This would guarantee an almost complete backward compatibility of existing modules with 5.0.

Classes in this module would

  • keep their original packages
  • be all deprecated and encourage users (and ourselves!) to port existing modules to 5.0 apps
  • provide an update Task to easily wrap old Uis as 5.0 apps
Almost complete backward compatibility

To avoid confusion with the commands now provided by core, activation and dam, the legacy module will not contain any commands. Existing modules using commands provided by the old adminInterface will need to rewrite them by using their new counterparts. In most cases this amounts to changing a couple of imports, given that the command names have been kept, and/or update bootstrap files.

In practice

To make an existing module UI work in 5.0, one will need to

  1. replace references to old ui modules in pom.xml with the info.magnolia:magnolia-module-legacy-admininterface:5.0 artifact
  2. replace references to old ui modules in own module descriptor (the one under META-INF/some-module, not to be confused with pom.xm) with the adminInterface 5.0 version 
    1. e.g. suppose you have a module descriptor declaring a dependency on gui or fck-editor 4.5/*. What you have to do is replacing those dependencies with adminInterface 5.0/* (the Magnolia module name for legacy-admininterface). If you instead have a module descriptor already depending, e.g. on adminInterface 4.5/* then you only need to replace its version with 5.0/*
  3. change imports in the existing custom commands, e.g. replace info.magnolia.module.admininterface.commands.BaseRepositoryCommand with info.magnolia.commands.impl.BaseRepositoryCommand
  4. update bootstrap files referring to old commands with their new counterpart, e.g. replace info.magnolia.module.admininterface.commands.VersionCommand with info.magnolia.commands.impl.VersionCommand 
  5. add an update Task to wrap the old UI (basically either a page or a tree) as a 5.0 App, something along these lines

    WrapAs5ohApp
    public class MyFancyModuleVersionHandler extends DefaultModuleVersionHandler {
        public MyFancyModuleVersionHandler() {
            register(DeltaBuilder
                    .update("4.5", "5.0")
                    .addTask(new WrapLegacyModuleAsMagnoliaAppTask("myapp", "My app label", "someAppGroup", "an-icon", "pageUrlOrTreeName")));
        }
    ...
    }

    This would spare developers the tedious job of creating a proper app config in ui-admincentral. 

List of 5.0 compatible modules

As a general rule, 5.0 compatible versions of existing modules are the next major version after their 4.5 compatible versions. I.e. the resources module for 4.5 is 1.5.x, therefore the 5.0 version is 2.0.

One notable exception is STK whose 4.5 version is 2.0.x whereas the version to be used with 5.0 is 2.5. Another exception is forum which passes from 1.3.x to 3.0, due to the fact a 2.0 branch already existed for it.

Module name4.5 compatible version5.0 compatible versionNotes
4-5-migration1.2.x2.0 
activation-5.0Replaces exchange-simple which used to be part of main project. It is now a CE independent module.
cache4.5.x5.0Used to be part of main project. It is now a CE independent module.
categorization1.2.x2.0 
commenting1.2.x2.0 
dam-1.0Replaces dms. 
data1.7.x2.0 
dms1.6.x-Replaced by dam.
exchange-simple4.5.x-Used to be part of main project. Replaced by activation
form1.4.x2.0 
forum1.3.x3.0The leap from 1.3 to 3.0 is due to the fact that a 2.0 branch already existed for this module
groovy1.3.x2.0 
imaging2.2.x3.0 
inplace-templating1.3.x2.0 
mail4.5.x5.0Used to be part of main project. It is now a CE independent module.
pur1.4.x2.0 
resources1.5.x2.0 
rss-aggregator1.4.x2.0 
scheduler1.5.x2.0 
STK2.0.x2.5 
templating-samples4.5.x5.0Used to be part of main project. It is now a CE independent module.

exchange-transactional

1.3.x2.0EE
enterprise4.5.x5.0EE
store-client 4.5?

 

backup1.2.x?EE
blog1.0? 
blossom2.0.x? 
blossom-extension-data2.0.x? 
cas 1.1.x?EE
synchronisation 1.1.x?EE
webdav1.1.1? 
backup1.2.x?EE
content-dependencies 1.1.x?EE
content-translation-support1.1.x?EE
diff1.1.x?EE
extended-templating-kit2.0.x?EE
google-analytics1.1.x? 
packager4.0.x?EE
soft-locking2.0.x?EE
excelrenderer??

A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.

google-sitemap1.2.x? 
modeshape-support??A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
modifystream??EE - A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
observation1.3.x? 
openid??A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
packager??EE
poll??A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
shorturl??EE - A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
todolist??A 4.5 specific version doesn't exist. Current master depends on an older Magnolia version.
webdav1.1.x? 

 

Jira issue linked to this task

Unable to locate Jira server for this macro. It may be due to Application Link configuration.