Hi Devs,
some users reported a problem to me concerning the Publication Workflow Application and
the nested pages feature.
The problem is as follows:
In their old instance (some 6.4.x) they had a draft space and a public space and
workflows attaching each page in the draft space with a page in the public space in an 1:1
manner, like:
Draft.WebHome --> Public.WebHome
Draft.PageA --> Public.PageA
Draft.PageB --> Public.PageB
Now if a link in, say, PageA in the Draft space points to another page, e.g. PageB, this
is done via a relative link like [[link text>>doc:PageB]]
After publishing PageA, the link of the published variant points to the published variant
of PageB (and not the variant in the Draft space), which is the desired effect from the
users point of view.
Now after migration to 9.10 the situation is as follows:
Draft.WebHome --> Public.WebHome
Draft.PageA.WebHome --> Public.PageA.WebHome
Draft.PageB.WebHome --> Public.PageB.WebHome
Now a link to PageB in PageA looks like: [[link text>>doc:Draft.PageB.WebHome]]
because both pages are no longer in the same space, but each in their own space.
Publishing the draft makes the link in the published variant point back to the Draft
space, of course. However this is different from the behavior before nested pages and the
users experience this as a bug.
A manual solution would be to edit all pages and make the links point to the published
variant of the pages. However this is not only a cumbersome and error prone task, but also
the users are used to the "automatic" link conversion that made links in the
published variant point to published pages and are wont to continue setting links to pages
in the draft space, expecting them to point to the "right place" after
publishing.
The fact that now titles are used throughout in the navigation tree, and the titles of the
draft and published variant are usually the same and thus indistinguishable complicates
the problem even more.
To fix this I could write a separate extension that listens to Publish events send from
the Workflow extension, and which converts the links in the published variant before it
gets saved.
However I remember that I once experienced strange issues where the events were sometimes
not send to the event listener in question, probably due some class loader issues or the
like.
(I only experienced these problems in a production instance and was not able to hunt them
down in a development instance.)
Also I cannot think of a use case where users want to link from a published variant back
into the draft space (except for pointing to the draft version of the page itself, which
is provided by the panel, however.)
Thus I would like to implement the link transformation in the extension itself. If a link
in a page points to a page in the draft space of that workflow, I would change that link
in the published variant to point to the corresponding published variant of the link
target.
I could add a checkbox to the workflow class so people can switch of that link
transformation if they do not want it.
What do you think? Are there any objections to implementing such a feature? Or do you have
different ideas how to solve the problem?
Best Regards
Clemens