You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

GREYSolved by using Solution CGREY

Changing the node types

A) Change node type definition

The bad thing is that every node extends mgnl:content. But we need the mix:versionable only only on website pages and not on users, configuration, ...

B) Add mixins dynamically

Index: /Users/philipp/checkout/magnolia/magnolia-core/src/main/java/info/magnolia/cms/core/DefaultContent.java
===================================================================
--- /Users/philipp/checkout/magnolia/magnolia-core/src/main/java/info/magnolia/cms/core/DefaultContent.java	(revision 14777)
+++ /Users/philipp/checkout/magnolia/magnolia-core/src/main/java/info/magnolia/cms/core/DefaultContent.java	(working copy)
@@ -168,7 +168,12 @@
         this.setRootNode(rootNode);
         this.node = this.rootNode.addNode(this.path, contentType);
         this.setAccessManager(manager);
-        this.addMixin(ItemType.MIX_VERSIONABLE);
+        if(this.getItemType().equals(ItemType.CONTENT)){
+            this.addMixin(ItemType.MIX_VERSIONABLE);
+        }
+        else{
+            this.addMixin(ItemType.MIX_REFERENCEABLE);
+        }
         // add mix:lockable as default for all nodes created using this manager
         // for version 3.5 we cannot change node type definitions because of compatibility reasons
         // MAGNOLIA-1518

C) Add mixin when we create the first version (tick)

I add the mixin only in the mgnlVersion workspace. This is currently the only place we use it

Bootstrapfiles

We have to clean up the bootstrap files. Depending on solution A or B we have to clean the files differently:

A) remove all version related properties
B) keep mix:versionable for contentNode
C) remove all version related properties (tick)

Possible approaches

  • import, call update tasks, export
  • xml based cleanup code / script (tick)

Update

For that we must write some test

  • No labels