hi, i don't fully grasp things, but after another hunt through the jcr doc, i think your cnd is not correct. there is an on-parent-version or onParentVersion attribute that controls if children are versioned along. best try to read this chapter: http://www.day.com/specs/jcr/2.0/15_Versioning.html it will mostly shorten the feature to OPV - maybe this helps?
[phpcr:versionCascade] > nt:unstructured + * multiple copy i think the "multiple" here means there may be same-name siblings (which you should not need to explicitly allow as its the default. and in the context of jackalope and phpcr-odm, its actually not working at all. i don't know what the "copy" stands for, but i think you need an onParentVersion attribute set somewhere. btw, > The nt:unstructured type I'm inheriting from comes from part of the > PHPCR project, I believe it uses this: nt:unstructured is not a PHPCR specific thing but part of JCR too. cheers, david Am 28.02.2013 16:55, schrieb Lars Janssen: > Hi all, > > I'm new to the list, but did have a good look through the archives. :) > > My problem: I have nodes representing pages and blocks (of content) in a > CMS. Pages can contain pages or blocks. I'm looking to add page versioning > capability, such that if I create a checkpoint (version) on a page, the > same is done for all child blocks (although to keep this simple, I'm > initially just trying to let it happen for all children). > > I'm using Jackrabbit 2.4.3 and PHP Content > Repository[1]/Jackalope-Jackrabbit[2] to connect my PHP application to it. > > Here's the CND for the node type I'm using: > > [phpcr:versionCascade] > nt:unstructured > + * multiple copy > > The nt:unstructured type I'm inheriting from comes from part of the PHPCR > project, I believe it uses this: > > [nt:unstructured] > ORDERABLE > - * (UNDEFINED) MULTIPLE > - * (UNDEFINED) > + * (nt:base) = nt:unstructured SNS VERSION > > If you don't mind looking at some PHP code, you can see what I'm trying to > do in my Github tests pull request[3][4] otherwise, here are the steps in > mostly pseudo-code: > > create parent/child nodes: > /tests_version_base/versioned (with property foo = something) > /tests_version_base/versioned/version_child (with property > foo_c = something_c) > checkpoint('/tests_version_base/versioned') > node->setProperty('foo', 'bar') > childNode->setProperty('foo_c', 'bar_c') > session->save() > checkin('/tests_version_base/versioned') > > What I'm hoping to see at this point is that both the nodes (parent and > child) have a corresponding frozen node, even though I only did a > checkpoint on the parent. What I actually see is a frozen node for the > parent (as expected) but not for the child. > > I suspect my understanding of how this works is not right. Should child > nodes automatically be versioned like this, or is there another way to get > something like this behaviour? > > Thanks, > > Lars. > > References: > [1] https://github.com/phpcr/phpcr > [2] https://github.com/jackalope/jackalope-jackrabbit > [3] > https://github.com/fazy/phpcr-api-tests/blob/c7cd60c7bfaf9bdb2211e8c8676344a58fa38a9b/tests/15_Versioning/VersionTest.php#L20 > [4] > https://github.com/fazy/phpcr-api-tests/blob/c7cd60c7bfaf9bdb2211e8c8676344a58fa38a9b/tests/15_Versioning/VersionTest.php#L91 > -- Liip AG // Agile Web Development // T +41 26 422 25 11 CH-1700 Fribourg // PGP 0xA581808B // www.liip.ch