Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Lenya Wiki" for change 
notification.

The following page has been changed by GregorRothfuss:
http://wiki.apache.org/lenya/KupuIntegration

The comment on the change is:
moved to lenya docs

------------------------------------------------------------------------------
- = Understanding the Kupu Integration =
+ deleted
  
- == Introduction ==
- 
- === About Kupu ===
- 
- Kupu is a browser based WYSIWYG XHTML editor which is developed independent 
of Lenya by the OSCOM poject ([http://www.oscom.org/]) and is available at 
[http://kupu.oscom.org/]. Kupu can and actually is beeing used in other 
projects as well, that have nothing to do with Java, XML or the Apache software 
stack. Lenya is just prepared for the Kupu Editor to be plugged in.
- 
- There are other Editors that can be plugged into Lenya as easily as Kupu, but 
the community is not yet sure which editor suits which needs best. For a 
discussion see [:Editors].
- 
- === Kupu as a sample for integrating editors in general ===
- 
- Understanding the Kupu integration in Lenya is helpful to understand how 
editors are integrated into Lenya at all. This knowledge is important if you 
are looking into changing the way Kupu is used inside Lenya or if you are 
thinking about taking any other editor and integrate it in Lenya.
- 
- === What integrating an editor is all about ===
- 
- From the user's perspective using an editor in Lenya works like this:
- 
-  1. Navigate to the item that is to be edited
-  1. Click on a link to start the editing process (mostly from a pull-down 
menu, but there are other options)
-  1. Edit
-  1. Save
-  1. Enjoy the changes
- 
- The link to start the editing is nohting but a GET request to an editing 
usecase. (See: [CreatePageWalkthrough] for some background on Usecases; did not 
find anything in the 'official' Documenation). The reply to that request is the 
page that contains the editor with the to be edited file loaded. As simple as 
that sounds, there is a number of things Lenya has to go through.
- 
- Between Step 2. and 3. (the user clicking on 'Edit' and the editor showing 
up) Lenya has to
- 
-  1. Make sure the editor is installed at all
-  1. Determine the file to be edited
-  1. Make sure editing is allowed (i.e. the file is not checked out reserved 
by someone else)
-  1. Aggregate the content that is to be edited, the editor part of the page 
itself and whatever parameter the editor needs and serve it to the browser.
- 
- Between Step 3. and 4. (Edit and Save) Lenya has to 
- 
-  1. Make sure the file is still checked out so it can be edited
-  1. Extract the edited page content from the HTTP POST
-  1. Save the edited file
-  1. Check in the edited file
-  1. Trigger and workflow events on the document that belong to the "edit" 
event.
- 
- ''Note: Kupu allows the user to Save in between and continue editing. This is 
achieved by using HTTP POST operations. Thus Lenya needs to be prepared to 
receive multiple updates of the same page and save it before the user might 
click on 'Exit and Save' so that Step 5 (Display the changed page) is finally 
triggered.''
- 
- == The Kupu usecase pipeline in detail ==
- 
- === step="open" ===
- 
- {{{
-         <map:match pattern="kupu" type="usecase">
-           <map:match pattern="open" type="step">
-             <map:match pattern="*/authoring/**.html">
-               <!-- 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}.html?lenya.usecase=kupu&amp;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}.html?lenya.usecase=kupu&amp;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>
- }}}
- 
- === step="content" ===
- 
- {{{
-           <map:match pattern="content" type="step">
-             <map:match pattern="*/authoring/**.html">
-               <map:generate 
src="pubs/{1}/content/authoring/{page-envelope:document-path}"/>
-               <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="xhtml"/>
-             </map:match>
-           </map:match>
- }}}
- 
- === step="save" ===
- 
- {{{
-           <map:match pattern="save" type="step">
-             <map:select type="request-method">
-               <map:when test="PUT">
- 
-                 <map:act type="reserved-checkout-test">
-                   <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:aggregate element="edit-envelope">
-                   <map:part element="edited" src="cocoon:/kupu-stream"/>
-                   <map:part element="original" 
src="pubs/{page-envelope:publication-id}/content/authoring/{page-envelope:document-path}"/>
-                 </map:aggregate>
- 
-                 <map:transform 
src="resources/kupu/apache-lenya/kupusave-xhtml.xsl"/>
- 
-                 <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>
- 
-                 <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"/>
- 
-                 <!-- 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>
- 
-                 <map:serialize type="xml" status-code="204"/>
-               </map:when>
-             </map:select>
-           </map:match>
- }}}
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to