Grégory Joseph wrote:

In both cases, you'll need to work things out with a version handler:
   
http://documentation.magnolia-cms.com/reference/custom-module.html#Moduleversionhandling

To update site definitions:
  info.magnolia.module.templatingkit.setup.UpdateAllSiteDefinitions
.. unfortunately, this will indeed not modify site definitions that might be added after your module; on the other hand, seems to me like the important thing is that your module can be dropped on an existing instance and put into action. Whatever other site definition are added afterwards should probably just "know" that they want to use your module or not.

I have added a version handler to my module which extends DefaultModuleVersionHandler and implements the getExtraInstallTasks as follows:

----
protected List getExtraInstallTasks(InstallContext ctx) {
    List tasks = new ArrayList();
    tasks.add(new TemplatesInstallTask("/vpro-sitestat/.*\\.ftl", true));
tasks.add(new UpdateAllSiteDefinitions("Prototype template path update", "Changing prototype templatePath for all site definitions") {
        @Override
protected void updateSiteDefinition(InstallContext installContext, Content siteDefinition) throws RepositoryException, TaskExecutionException { final NodeBuilder nodeBuilder = new NodeBuilder(new TaskLogErrorHandler(installContext), siteDefinition,
                getNode("templates/prototype").then(
setProperty("templatePath", "/templating-kit/templates/main.ftl", "/vpro-sitestat/templates/main-with-sitestat.ftl")
                )
            );
            nodeBuilder.exec();
        }
    });
    return tasks;
}
----

I cleaned out my repository and restarted Magnolia. The TemplatesInstallTask succeeds (I see them in the repository), but the UpdateAllSiteDefinitions task fails with the following error message:

----
ERROR info.magnolia.module.InstallContextImpl : > Could not install or update vpro-sitestat module. Task 'Prototype template path update' failed. (PathNotFoundException: config) info.magnolia.module.delta.TaskExecutionException: Could not execute task: config at info.magnolia.module.delta.AbstractRepositoryTask.execute(AbstractRepositoryTask.java:60)
(...)
----

I don't really understand this PathNotFoundException and why it's referring to 'config'. Any ideas?

Or is there another, maybe even better, way of accomplishing this include?

Better, I don't know, but certainly a different approach: have you considered using SiteMesh ?

I know SiteMesh from my recent experiments with Grails, since SiteMesh is integrated in Grails. Introducing SiteMesh into our Magnolia stack just for this feature sounds like overkill, but yes, I guess it could work. Do you have any experience with/examples of using SiteMesh with Magnolia?

Nils.

----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to