Work in progress - yet incomplete
Proposal: Page Fragment Context Editing
Note: This proposal is closely linked to the ProposalXIncludeAggregation but might be valid in other scenarios as well.
Understanding the need
If you implement the ProposalXIncludeAggregation (or use a different way to aggregate page fragements from different files into one page) you need a way to edit the individual page fragment.
(Be a bit more verbose here.)
Implementing
The Context Menu
In file lenya/pubs/<your-pub>/xslt/xhtml2xhtml.xsl
:
<xsl:if test="$area != 'live'" > <p>This is only visible if not live:<br/> rendertype: <xsl:value-of select="$rendertype" /><br/> nodeid: <xsl:value-of select="$nodeid" /><br/> area: <xsl:value-of select="$area" /><br/> documenturl: <xsl:value-of select="$documenturl" /><br/> document-url: <xsl:value-of select="$document-url" /><br/> server-uri: <xsl:value-of select="$server-uri" /><br/> document-path: <xsl:value-of select="$document-path" /><br/> </p> <p><a href="{$server-uri}{$document-path}.xml?&lenya.event=edit&lenya.usecase=kupu&lenya.step=open">Edit</a></p> </xsl:if>
Usecases for editing page fragments
(All these changes go into usecase.xmap)
<map:match pattern="*/authoring/**.xml"> <!-- Check for Kupu--> <map:act type="resource-exists" src="resources/kupu/common/kupueditor.js"> <map:act type="reserved-checkout"> <map:generate type="serverpages" src="content/rc/{exception}.xsp"> <map:parameter name="user" value="{user}"/> <map:parameter name="filename" value="{filename}"/> <map:parameter name="date" value="{date}"/> <map:parameter name="message" value="{message}"/> </map:generate> <map:transform src="xslt/rc/rco-exception.xsl"/> <map:call resource="style-cms-page"/> </map:act> <map:generate src="resources/kupu/apache-lenya/kupumacros.html"/> <map:transform src="resources/kupu/apache-lenya/kupumacros-xhtml.xsl"> <map:parameter name="contentfile" value="{page-envelope:context-prefix}/{../1}/authoring/{../2}.xml?lenya.usecase=kupu&lenya.step=content"/> <map:parameter name="context" value="{request:contextPath}"/> <map:parameter name="document-path" value="{page-envelope:document-path}"/> <map:parameter name="root" value="{page-envelope:context-prefix}"/> <map:parameter name="save-destination" value="{page-envelope:context-prefix}/{../1}/authoring/{../2}.xml?lenya.usecase=kupu&lenya.step=save"/> <map:parameter name="reload-on-save" value="0"/> <!-- 1 means you can see the saving --> <map:parameter name="use-css" value="1"/> <map:parameter name="redirect-to" value="{page-envelope:document-name}.html"/> </map:transform> <map:serialize type="html"/> </map:act> <map:generate src="resources/misc/kupu/download.xhtml"/> <map:call resource="style-cms-page"/> </map:match> </map:match>
<map:match pattern="content" type="step"> <map:match pattern="*/authoring/**.xml"> <map:generate src="pubs/{1}/content/authoring/{2}.xml"/> <map:transform src="resources/kupu/apache-lenya/kupucontent-xhtml.xsl"> <map:parameter name="css" value="{page-envelope:context-prefix}/{1}/authoring/css/page.css"/> </map:transform> <map:transform src="xslt/util/strip_namespaces.xsl"/> <!-- <map:serialize type="xml"/> --> <map:serialize type="xhtml"/> </map:match> </map:match>
<map:act type="reserved-checkin"> <map:generate src="content/rc/{exception}.xsp" type="serverpages"> <map:parameter name="user" value="{user}"/> <map:parameter name="filename" value="{filename}"/> <map:parameter name="checkType" value="{checkType}"/> <map:parameter name="date" value="{date}"/> <map:parameter name="message" value="{message}"/> </map:generate> <map:transform src="xslt/rc/rco-exception.xsl"/> <map:serialize/> </map:act> <!-- BEGIN CHANGED --> <map:match pattern="*/authoring/**.xml"> <map:transform src="xslt/authoring/edit/addSourceTags.xsl"> <map:parameter name="source" value="pubs/{page-envelope:publication-id}/content/authoring/{2}.xml"/> </map:transform> <map:transform type="write-source"/> </map:match> <map:match pattern="*/authoring/**.html"> <map:transform src="xslt/authoring/edit/addSourceTags.xsl"> <map:parameter name="source" value="pubs/{page-envelope:publication-id}/content/authoring/{page-envelope:document-path}"/> </map:transform> <map:transform type="write-source"/> </map:match> <!-- END CHANGED --> <!-- Trigger workflow with *edit* action --> <map:act type="workflow"> <map:parameter name="area" value="{page-envelope:area}"/> <map:parameter name="document-id" value="{page-envelope:document-id}"/> <map:parameter name="language" value="{page-envelope:document-language}"/> <map:parameter name="event" value="edit"/> </map:act>
Open Issues
- Creating new "fragments"
- Make sure RC works on the fragments