DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
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