You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by gr...@apache.org on 2005/04/24 16:12:32 UTC

svn commit: r164478 - in /lenya/docu/src/documentation: content/xdocs/ content/xdocs/1_2_x/tutorial/ content/xdocs/1_4/installation/ content/xdocs/community/ resources/images/

Author: gregor
Date: Sun Apr 24 07:12:32 2005
New Revision: 164478

URL: http://svn.apache.org/viewcvs?rev=164478&view=rev
Log:
Added articles by Jon Linczak

Added:
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/anatomy_of_the_pipeline.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/custom_navigation.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/editing_in_lenya.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/index.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/installing_lenya.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya_continued.xml
    lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/understanding_lenya.xml
    lenya/docu/src/documentation/resources/images/bxet.gif   (with props)
    lenya/docu/src/documentation/resources/images/kuput.gif   (with props)
Modified:
    lenya/docu/src/documentation/content/xdocs/1_4/installation/source_version.xml
    lenya/docu/src/documentation/content/xdocs/community/acknowledgements.xml
    lenya/docu/src/documentation/content/xdocs/index.xml
    lenya/docu/src/documentation/content/xdocs/site.xml

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/anatomy_of_the_pipeline.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/anatomy_of_the_pipeline.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/anatomy_of_the_pipeline.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/anatomy_of_the_pipeline.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 3: Anatomy of the pipeline</title>
+  </header>
+    <body>
+        <p>With Lenya installed, you're itching to figure out how to get around this thing so
+            you can start creating a website. But, you want to put it all together the way
+            you're used to. Well, bring out the frozen dinners, because this is not your
+            momma's cooking. Instead of opening up a file, adding our HTML, and throwing in
+            some CSS, we'll be working with pipelines, XML, XSLT to get the job done.</p>
+        
+        <section id="what_are_pipelines"><title>What are pipelines?</title>
+        
+        <p>Pipelines aren't a Lenya thing - it's a Cocoon thing. If you want to master Lenya,
+            you'll have to get your hands around Cocoon, and that's not an easy thing. Let me
+            remind you that the articles we write here are not because I'm an expert in Lenya or
+            Cocoon. Far from it. But, we have learned some things along the way that we see being
+            asked over and over, so we think it's important to keep the open-source spirit
+            alive and document what I've learned.</p>
+        
+        <p>OK, so back to pipelines. Pipelines are basically part of a set of items that can be
+            found in a sitemap of your publication, which include the components, views,
+            resources, etc. We'll save all those for another time. Pipelines are a way to
+            match a request coming to your publication and act on them in some way. So, for
+            example, if you are accessing a particular page within your publication using
+            your web browser, a pipeline can find a match for that request and possibly send
+            back a page for you to view.</p>
+        
+        </section><section id="minimum_requirements"><title>Minimum Requirements</title>
+        
+        <p>For a pipeline to work, you'll need to match an incoming request, generate
+            something to be used, and then send it back in a format that is recognizable and can
+            be dealt with easily. Here's an example pipeline:</p>
+        
+        <source> 
+            1. &lt;map:pipeline&gt; 
+            2. &lt;map:match pattern="example"&gt;
+            3. &lt;map:generate type="file" src="example.xml"/&gt; 
+            4. &lt;map:serialize type="xml"/&gt; 
+            5. &lt;/map:match&gt; 
+            6. &lt;/map:pipeline&gt;
+        </source>
+        
+        <p>Let's walk through this line by line. Line 1 starts the definition of the pipeline.
+            Everything starts with "map:" because all of this XML is part of the map namespace
+            defined by Cocoon. Line 2 tries to match an incoming request to see if it looks like
+            "example". If it does, we keep going. If not, this pipeline gets skipped over.
+            Line 3 is the generator. In this case, we'll be generating "stuff" from a file, and
+            that file is example.xml. So, what do we do with this stuff inside the file? Well,
+            we need to send it back to the user making the request for "example" in something
+            they (or it) can understand. In line 4, we're doing just that by using a serializer
+            to take all that stuff in example.xml and sending back to the user as XML.</p>
+        
+        </section><section id="how_about_something_more_usable"><title>How about something more usable?</title>
+        
+        <p>OK, admittedly, that was a boring example. The file was already XML, so the only
+            thing the serializer did was probably add in our declaration at the top of the page
+            and send it back to the user. Let's add in some spice and relate it to web pages:</p>
+        
+        <source> 
+            1. &lt;map:pipeline&gt; 
+            2. &lt;map:match pattern="test.html"&gt; 
+            3. &lt;map:generate type="file" src="test.xml"/&gt;
+            4. &lt;map:transform type="xslt" src="test2html.xsl"/&gt; 
+            5. &lt;map:serialize type="html"/&gt; 
+            6. &lt;/map:match&gt; 
+            7. &lt;/map:pipeline&gt;
+        </source>
+        
+        <p>OK, so here, we're trying to match the request for test.html. Now, keep in mind, it
+            could very well be that test.html doesn't exist (and in this case it doesn't).
+            That's OK - we're just matching requests for something, and in return, we can send
+            back whatever we like. Think of it as a virtual link to another file we're creating
+            on the fly.</p>
+        
+        <p>So, if we do match test.html, we'll grab the contents of the file test.xml, but
+            before we send it back, we'll transform that XML into something else using the
+            transformer (line 4). Using XSLT, we can convert that batch of XML into an HTML
+            page! That's done using the file test2html.xsl. When that's all said and done,
+            off we go to serialize it back to the user, but this time as HTML instead of XML.</p>
+        
+        <p>We won't have time to show you how the XSL transformation works, but we can throw you
+            over to
+            <a href="http://www.w3schools.com/xsl/xsl_languages.asp">
+                W3Schools</a> and they'll give you a nice intro.</p>
+        
+        </section><section id="the_lenya_pipeline"><title>The Lenya pipeline</title>
+        
+        <p>So now that we know the basics, how does Lenya use the pipeline in creating it's
+            pages? Well, it's not too much different. While it looks more complicated, the
+            basics are still there.</p>
+        
+        <p>Below is the pipeline that is used in the publication-sitemap.xmap file in
+            Lenya's default publication:</p>
+        
+        <source> 
+            1. &lt;map:pipeline&gt; 
+            2. &lt;!--/lenyabody-{rendertype}/{publication-id}/{area}/{doctype}/{url}--&gt; 
+            3. &lt;map:match pattern="lenyabody-*/*/*/*/**"&gt; 
+            4. &lt;map:aggregate element="cmsbody"&gt;
+            5. &lt;map:part src="cocoon://navigation/{2}/{3}/breadcrumb/{5}.xml"/&gt; 
+            6. &lt;map:part src="cocoon://navigation/{2}/{3}/tabs/{5}.xml"/&gt;
+            7. &lt;map:part src="cocoon://navigation/{2}/{3}/menu/{5}.xml"/&gt; 
+            8. &lt;map:part src="cocoon://navigation/{2}/{3}/search/{5}.xml"/&gt; 
+            9. &lt;map:part src="cocoon:/lenya-document-{1}/{3}/{4}/{page-envelope:document-path}"/>&gt;
+            10.&lt;/map:aggregate&gt;
+            11.&lt;map:transform src="xslt/page2xhtml-{4}.xsl"&gt; 
+            12.&lt;map:parameter name="root" value="{page-envelope:context-prefix}/{2}/{3}"/&gt; 
+            13.&lt;map:parameter name="url" value="{5}"/&gt; 
+            14.&lt;map:parameter name="document-id" value="{page-envelope:document-id}"/&gt; 
+            15.&lt;map:parameter name="document-type" value="{page-envelope:document-type}"/&gt; 
+            16.&lt;/map:transform&gt;
+            17.&lt;map:select type="parameter"&gt; 
+            18.&lt;map:parameter name="parameter-selector-test" value="{1}"/&gt; 
+            19.&lt;map:when test="view"&gt; 
+            20.&lt;map:transform type="link-rewrite"/&gt; 
+            21.&lt;/map:when&gt;
+            22.&lt;/map:select&gt;
+            23.&lt;map:serialize type="xml"/&gt; 
+            24.&lt;/map:match&gt;
+            25.&lt;/map:pipeline&gt;
+        </source>
+        
+        <p>OK, yikes, we know what you're thinking. But seriously, it's not that bad. We still
+            open with a pipeline tag, we match something, we have this aggregation part which
+            I'll explain in a minute, we transform the results, and after another part I'll
+            explain, we serialize the results back the user. Let's start with the
+            matcher.</p>
+        
+        </section><section id="the_matcher"><title>The Matcher</title>
+        
+        <p>So, um, what exactly are we matching? Without going into too much and getting you
+            swamped with terminology, we're basically trying to match a whole bunch of
+            things at once. The comment right above the matcher tries to tell you what each of
+            the asterisks are. There's the rendertype (whether you're viewing the page, or
+            editing it), the publication ID (which in this case is "default" for the Default
+            Publication), the area (it could be Authoring, or Live, or Admin, etc.), the
+            document type, and the actual URL of the document.</p>
+        
+        <p>The document type is pretty interesting. In XML, one document could be for
+            describing a shape, while another could be describing a set of books. It doesn't
+            have to be that way, though. For example, the "homepage" and "xhtml" doctypes
+            provided for you in Lenya are exactly the same, except there's another pipeline
+            that says the top index.html page of the publication will be assigned the doctype
+            of "homepage". It's handy because since most homepages have a different design
+            that the secondary or tertiary pages, you can use a different XSLT file to
+            transform it however you want without having to setup a new pipeline for it. Just
+            think of the possibilities with different doctypes...</p>
+        
+        </section><section id="the_aggregator"><title>The Aggregator</title>
+        
+        <p>So, after we've matched all of those options (the asterisks mean anything and
+            everything), we get to this aggregate tag. Basically, it's a generator like we
+            saw in the previous examples, it's just aggregating the results of the
+            generation from all these sources together as one.</p>
+        
+        <p>So, Lenya separates out the menu (or navigation of the site), the tabs (all the
+            high-level items in the navigation), the breadcrumb trails on the pages, the
+            search box, and the actual content of the page into separate files. See all those
+            {2}'s, {3}'s, and {5}'s? Each one of those points to the value for that numbered
+            asterisk in the matcher. So, whatever happened to have been in the second
+            asterisk in the matcher, we use that in place of {2}. Simple, no?</p>
+        
+        </section><section id="the_transformer"><title>The Transformer</title>
+        
+        <p>The transformer is pretty straight-forward. We transform the results of all the
+            aggregated content using the file page2xhtml-{4}.xsl. Except, the {4} is
+            replaced with whatever was in the place of the fourth asterisk, or in this case,
+            the doctype. So, if our doctype was "homepage", we would transform our page using
+            the XSL file page2xhtml-homepage.xsl. If our doctype were "xhtml" (which is
+            what most of the pages are in Lenya), then you would transform it with
+            page2xhtml-xhtml.xsl. See how you can differentiate the design with different
+            transformations and doctypes?</p>
+        
+        <p>The parameters inside of the transform tag are basically setting up variables to
+            be passed to the XSL file. In this case, we're passing along the root location of
+            the publication (perhaps it's just a / in http://www.someplace.com/, for
+            example), the URL of the publication (like "some/where.html"), as well as the
+            document ID (the latter half of the URL without the .html extension), and the
+            doctype.</p>
+        
+        </section><section id="the_selector"><title>The Selector</title>
+        
+        <p>We haven't seen this one yet, but think of the selector as an if/else statement. You
+            have to tell the selector what you are testing against, then test it against some
+            value, and do something. In this case, we're testing the rendertype (that's the
+            first asterisk, or {1}). If the rendertype is "view", as in we're viewing the page
+            and not editing it, then go through one more transformation, called
+            link-rewrite.</p>
+        
+        <p>The link-rewrite transformer basically checks where you are, then goes through
+            the contents of the page and rewrites all links in relation to what area you are in.
+            For example, if we are in the Authoring environment in Lenya, then our links could be
+            rewritten to look like "/lenya/default/authoring/some/where.html". If we are
+            in the Live area, they would be rewritten to look like
+            "/lenya/default/live/some/where.html". That way, you just keep track of the
+            organization of the site using the Site tab within Lenya, and Lenya will rewrite
+            your links according to what area you are in when viewing the page so that it all
+            just works!</p>
+        
+        </section><section id="the_serializer"><title>The Serializer</title>
+        
+        <p>In the end, we serialize everything we've done into XML. So, why XML? Because it's
+            later on in the series of pipelines that the results are serialized again into
+            HTML (or XHTML, if you so choose).</p>
+        
+        </section><section id="fin"><title>Fin</title>
+        
+        <p>So hopefully that gets you cracking on understanding how Lenya is setup to handle
+            pages. There's no doubt we've exposed you to quite a bit that deserves more
+            explanation, and it will certainly come.</p>
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/custom_navigation.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/custom_navigation.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/custom_navigation.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/custom_navigation.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 5: Custom Navigation in Lenya</title>
+  </header>
+    <body>
+        <p>OK, so you have the basics: you know how to install Lenya, you understand it's
+            approach to content management, you understand the pipeline bit, and you know
+            how to edit existing documents. Through playing around, you probably now know
+            how to make new pages, and create the content hierarchy for your site. Now the
+            question becomes, how do we customize the navigation to be marked up the way you
+            want.</p>
+        
+        <section id="customizing_lenya_navigation_items"><title>Customizing Lenya
+            navigation items</title>
+            
+            <p>In order to understand customizing navigation items in Lenya, you'll need to
+                understand where that's possible. In the default publication's root
+                directory, you'll see a directory called 'lenya'. It's here where you can
+                add folders and files that override the global defaults set aside for all of
+                Lenya.</p>
+            
+            <p>One of the directories is 'navigation'. In there, you'll most likely see a
+                file called tabs.xsl. This is a customized version of the tabs just for the
+                default publication. But you can do others. Here's the list of the file names
+                you can add in the 'navigation' folder that will override the global
+                files:</p>
+            
+            <table>
+                <tr>
+                    <td>breadcrumb.xsl</td>
+                    <td>The breadcrumb trails at the top of the page
+                        (e.g. Home > Products > Furniture)</td>
+                </tr>
+                <tr>
+                    <td>menu.xsl</td>
+                    <td>The menu at the left of the pages (in the
+                        default publication, for example)</td>
+                </tr>
+                <tr>
+                    <td>tabs.xsl</td>
+                    <td>The tabs at the top of the page (in the
+                        default publication, they are the highest levels of nav on the
+                        site)</td>
+                </tr>
+                <tr>
+                    <td>search.xsl</td>
+                    <td>The search box on the site</td>
+                </tr>
+            </table>
+            
+            <p>There are others, but these will do for now. You can check out what the
+                originals are in
+                /usr/local/tomcat/webapps/lenya/lenya/xslt/navigation/. It
+                requires some understanding XSLT, which is again beyond the scope of this
+                article.
+                <a href="http://www.w3schools.com/xsl/default.asp">W3Schools</a>
+                has a nice place to learn XSLT quickly.</p>
+            
+            <p>We're going to take a look at the sitetree structure to find out what you're
+                capable of knowing about an item in the navigation of the site, then do a quick
+                example of how to create your own menu.</p>
+            
+        </section><section id="understanding_the_site_tree"><title>Understanding
+        the site tree</title>
+        
+        <p>The site tree is the place where all the "nodes", or pages in your publication are
+            stored, preserving the hierarchy. The XML file can be found by going to the
+            content/authoring/ directory in the default publication and viewing the
+            sitetree.xml file. Let's take a look at a chunk:</p>
+        
+        <source>
+            &lt;site&gt;
+                &lt;node id="index"&gt;
+                    &lt;label xml:lang="en"&gt;Home&lt;/label&gt;
+                    &lt;label xml:lang="de"&gt;Home&lt;/label&gt;
+                &lt;/node&gt;
+            
+                &lt;node id="tutorial"&gt;
+                    &lt;label xml:lang="en"&gt;Tutorial&lt;/label&gt;
+                    &lt;label xml:lang="de"&gt;Tutorial&lt;/label&gt;
+            
+                        &lt;node id="new_doctype"&gt;
+                            &lt;label xml:lang="en"&gt;Create new doctype&lt;/label&gt;
+                        &lt;/node&gt;
+                &lt;/node&gt;
+            &lt;/site&gt;
+        </source>
+        
+        <p>The above tells us that each page is characterized by a &lt;node&gt; tag. Each
+            &lt;node&gt; tag has an "id" attribute, which is the name of the document. So, if
+            this publication's address were http://www.someplace.com/, then the ID for
+            the second node would make the address to page
+            http://www.someplace.com/tutorial.html.</p>
+        
+        <p>Each node has an inner element called &lt;label&gt;. The label tag's contents are
+            the navigation title for the page. It's the link to the page that you see in menu of
+            the site. The xml:lang attribute signifies the language for this label, and as
+            you can see, this site has multiple supported languages: "en" for English, and
+            "de" for German.</p>
+        
+        <p>Nodes can be inside other nodes. In the example above, the "new_doctype" node is
+            inside the "tutorial" node. This means that the "tutorial" page is a parent of the
+            "new_doctype" page, so they fall underneath each other like so:</p>
+        
+        <source> 
+            1. Home 
+            2. Tutorial 
+                a. Create new doctype
+        </source>
+        
+        <p>Order is also important - the order of the nodes in the sitetree file is the order in
+            which the pages are displayed in the hierarchy of the site.</p>
+        
+        </section><section id="the_nav_namespace"><title>The nav:
+        namespace</title>
+        
+        <p>An XML namespace was created for users to grab these nodes with the appropriate
+            information. So, for example, you can reference a node in your XSL using
+            nav:node. Once you reference the node, you can reference it's label too:
+            nav:label. There's some other items you can reference when you are pointing at a
+            specific node:</p>
+        
+        <table>
+            <tr>
+                <td>@href</td>
+                <td>The location of the page relative to where you
+                    are currently in the site</td>
+            </tr>
+            
+            <tr>
+                <td>@current</td>
+                <td>A true or false value is possible to determine
+                    whether or not the page you are on is the node you are referencing</td>
+            </tr>
+            <tr>
+                <td>@visibleinnav</td>
+                <td>Another true/false value given if the page had
+                    been labeled as visible in the navigation</td>
+                
+            </tr>
+        </table>
+        
+        <p>Hiding navigation items can be helpful for situations like form
+            submission/confirmation pages. You don't want the user to go to that page right
+            away from within the site's menu, so you hide it, letting the programming of the
+            form's input redirect the user to that page instead. Other examples abound.</p>
+        
+        </section><section id="Using_your_new-found_knowledge"><title>Using your
+        new-found knowledge</title>
+        
+        <p>Let's try putting together a simple menu.xsl file that creates our own simple
+            markup. The contents are below:</p>
+        
+        <source>
+            &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+            
+            &lt;xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
+                xmlns="http://www.w3.org/1999/xhtml"
+                exclude-result-prefixes="nav"&gt;
+            
+            &lt;xsl:template match="nav:site"&gt;
+            
+                &lt;ul&gt;
+            
+                &lt;!-- loop through all top-level items and return as list items --&gt;
+                &lt;xsl:for-each select="/*/nav:node[@visibleinnav = 'true']"&gt;
+                    &lt;xsl:when test="@current = 'true'"&gt;
+                        &lt;li class="current"&gt;&lt;a href="{@href}"&gt;&lt;xsl:apply-templates select="nav:label"/&gt;&lt;/a&gt;&lt;/li&gt;
+                    &lt;/xsl:when&gt;
+                    &lt;xsl:otherwise&gt;
+                        &lt;li&gt;&lt;a href="{@href}"&gt;&lt;xsl:apply-templates select="nav:label"/&gt;&lt;/a&gt;&lt;/li&gt;
+                    &lt;/xsl:otherwise&gt;
+                &lt;/xsl:for-each&gt;
+            
+                &lt;/ul&gt;
+            &lt;/xsl:template&gt;
+            
+            &lt;xsl:template match="nav:label"&gt;
+                &lt;xsl:value-of select="."/&gt;
+            &lt;/xsl:template&gt;
+            
+            &lt;/xsl:stylesheet&gt;
+        </source>
+        
+        <p>OK, so let's dissect this one. You always start with your XML prologue and
+            stylesheet tags (notice how the root stylesheet tag references the nav
+            namespace?). Then, one template is created to match the &lt;site&gt; tag -
+            that's the root tag that wraps around all the &lt;node&gt; tags in our
+            sitetree.xml file.</p>
+        
+        <p>We open up the unordered list, and then we'll just loop through the top-level
+            navigation items on the site. The '/*/nav:node' part of the for-each loop steps
+            down into the site tag that you just matched (/*), and then through the nodes
+            underneath the site tag (/nav:node). Note that this is only the top level nodes,
+            not all the parents and children! Read up on
+            <a href="http://www.w3schools.com/xsl/default.asp">XSLT</a> and
+            <a href="http://www.w3schools.com/xpath/default.asp">XPath</a> to
+            better understand how this notation works.</p>
+        
+        <p>For each top-level item, we test to see that node happens to be the page we are
+            looking at right now (@current = 'true'). If it is, then we open up our list tag and
+            assign it the class of "current". Your CSS can then be created to give some special
+            styling to that list item.</p>
+        
+        <p>Once the list item is created, we need the link. The address for the link tag is
+            gathered from our handy @href. The text for the link will be the label of the node.
+            So, we call out another template shown at the bottom of our example menu.xsl file
+            where it basically just grabs the value of the contents inside the &lt;label&gt;
+            tags in the sitetree.xml file. We close the the link and the list items.</p>
+        
+        <p>Of course, if this isn't the page we are on, then we do the same thing but don't add in
+            our special class. Simple, no?</p>
+        
+        </section><section id="give_it_a_try"><title>Give it a try</title>
+        
+        <p>You now pretty much have the basics for putting together your own custom
+            navigation. There are those that feel our methods for generating the menus are
+            incorrect and that we should grab the nodes that we need in one fell swoop instead of
+            looping through each one, but this was the only method we could find where wewould
+            achieve the coding standards we wanted. Go experiment and have fun!</p>
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/editing_in_lenya.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/editing_in_lenya.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/editing_in_lenya.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/editing_in_lenya.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 4: Editing in Lenya</title>
+  </header>
+    <body>
+        <p>There are several editors that you can use in Lenya, but because we only have used 2 of
+            them, these are the ones we will briefly go over here.</p>
+        
+       <section id="Kupu"><title>Kupu</title>
+        
+        <p><a href="ext:kupu">Kupu</a> is a WYSIWYG editor that was developed through <a href="ext:oscom">OSCOM</a> and has been integrated
+            into Lenya. The editor is quite simple to use, and has an aggressive timeline for
+            future improvements. You can see a screenshot of Kupu in action below:</p>
+        
+        <p><img src="images/kuput.gif" alt="kupu"/></p>
+        
+        <p>When you
+            <a href="installing_lenya.html">install Lenya</a>, you'll
+            notice that when you try to edit a page in your publication using it, you'll get a
+            message stating to build it before you can use it. You'll need to go to Kupu's main
+            directory and type make to build it properly:</p>
+        
+        <source> 
+            cd /usr/local/tomcat/webapps/lenya/lenya/resources/kupu
+            make
+        </source>
+        
+        <p>You may get an error stating that the build could not be completed successfully
+            because it could not find xsltproc. If this is the case, you'll need to download
+            the xsltproc package and install it before continuing. Since we are using RedHat
+            Linux, we'll give you the steps for installing the RPM. Adapt the instructions for
+            your own OS.</p>
+        
+        <p>First off, check to see if you have the proper RPMs:</p>
+        
+        <source> rpm -qa | grep libxml2 rpm -qa | grep libxslt</source>
+        
+        <p>If nothing is returned for either one of them (or both), then there's two ways to
+            download the proper RPMs. One is by using RPMFind. Go to these URLs:</p>
+        
+        <ul>
+            <li>
+                    <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2">
+                http://rpmfind.net/linux/rpm2html/search.php?query=libxml2</a>
+                </li>
+            <li>
+                    <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt">
+                http://rpmfind.net/linux/rpm2html/search.php?query=libxslt</a>
+                </li>
+            
+        </ul>
+        
+        <p>Look for your OS and download the appropriate RPM. Once downloaded to your server,
+            install the packages:</p>
+        
+        <source> 
+            rpm -ivh libxml2-2.5.10-7.i386.rpm 
+            rpm -ivh libxslt-1.0.33-5.i386.rpm
+        </source>
+        
+        <p>The version numbers are probably different from the latest. Just be sure you get
+            the latest versions of each.</p>
+        
+        <p>The second way is if you use RedHat's up2date program (you must be registered with
+            RedHat). To use this, just run the following command:</p>
+        
+        <source> 
+            up2date --showall | grep libxml2 
+            up2date --showall | grep libxslt
+        </source>
+        
+        <p>Once the package names are found, you can download them from the up2date server
+            like so:</p>
+        
+        <source> 
+            up2date --get libxml2-2.5.10-7.i386 
+            up2date --get libxslt-1.0.33-5.i386
+        </source>
+        
+        <p>The RPMs will be stored in /var/spool/up2date/. Go there, then install them as
+            mentioned above (recapped below as well):</p>
+        
+        <source> 
+            rpm -ivh libxml2-2.5.10-7.i386.rpm 
+            rpm -ivh libxslt-1.0.33-5.i386.rpm
+        </source>
+        
+        <p>Those that are savvy with up2date can find a more efficient way to install these
+            RPMs, but this will do for now. Once the RPMs are installed, go back to Kupu's
+            directory and run make as mentioned above. Now you're ready to edit using
+            Kupu!</p>
+        
+        </section><section id="bxe"><title>BXE</title>
+        
+        <p>Bitflux Editor (<a href="ext:bxe">BXE</a>) is another WYSIWYG editor that was developed separately from Lenya and
+            integrated into the project. BXE's approach is slightly different from
+            Kupu's in that from the visual standpoint, it appears as if you are editing the
+            content right on the layout of the page. Kupu, from the screenshot above, gives
+            you a whole new page that focuses just on the content. We'll let you work with either
+            one and decide which is your favorite. Hiram College chose to use Kupu, not
+            because BXE was worse, but because Kupu was more flexible and easier to
+            understand for the faculty and staff that were using it. Below is a screenshot of
+            BXE at work:</p>
+        
+        <p><img alt="bxe" src="images/bxet.gif"/></p>
+        
+        <p>In version 1.2.3, BXE is already installed and ready to go, so there's no need
+            for any added configuration.</p>
+        
+        </section><section id="next_articles"><title>Next articles</title>
+        
+        <p>Well, we wanted to keep this one short, as we are working on cooking up some more heftier
+            articles, including customizing your navigation and an intro to doctypes and
+            usecases.</p>
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/index.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/index.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/index.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/index.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Lenya Tutorial articles</title>
+  </header>
+  <body>
+        <p>These tutorial articles were originally written by <a href="http://redarrow.textdrive.com/">Jon Linczak</a> and have been slightly updated.</p>
+  </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/installing_lenya.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/installing_lenya.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/installing_lenya.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/installing_lenya.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 2: Installing Lenya</title>
+  </header>
+  <body>
+<p>So here you are, ready to install the mysterious Lenya. If you haven't already, we encourage
+    you to take a quick gander at
+    <a href="understanding_lenya.html">Part I: Understanding Lenya</a>
+    to make sure you know what you are getting into before attempting this install. Also, some
+    knowledge in the basics of using a UNIX/Linux operating system are assumed. So without
+    further delay, let's kick it!</p>
+
+<section id="Requirements"><title>Requirements</title>
+
+<p>OK, we do have to mention one thing: while you can install Lenya on Windows, I'm going to be
+    taking you through a Linux installation. For Windows help, I'll have to direct you to the
+    <a href="site:ml">user mailing
+        lists</a>.</p>
+
+<p>We also recommend a broadband connection, especially for downloading Cocoon (approx. 43
+    MB) and the Java SDK (approx. 35 MB), but if you want to sit around and wait while they
+    download on a phone line, be our guest!</p>
+
+<ol>
+  <li>Linux/UNIX (I'm using <a href="http://www.redhat.com/software/rhel/as/">RedHat Enterprise AS</a>, but any Linux will do)</li>
+  <li><a href="http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&amp;PartDetailId=j2sdk-1.4.2_07-oth-JPR&amp;SiteId=JSC&amp;TransactionId=noreg">Java 1.4.2 SDK</a>  (we downloaded the RedHat RPM)</li>
+
+  <li><a href="http://cocoon.apache.org/mirror.cgi">Cocoon 2.1.7</a>  (the TAR/GZ source version)</li>
+  <li><a href="ext:lenya.dist">Lenya 1.2.3</a>  (the tar.gz source version is what we are using, under the SOURCES directory)</li>
+  <li>(optional) <a href="http://jakarta.apache.org/site/binindex.cgi#tomcat-5.0">Tomcat 5.0.28</a>  (the binary tar.gz version)</li>
+</ol>
+
+<p>Why is Tomcat optional? Well, because Lenya already comes with a servlet container called
+    Jetty. Both Jetty and Tomcat are the servlet containers tested with Lenya, and since we're
+    using Tomcat for Hiram's site, that's what I'll be taking you through. For brief
+    instructions on using Jetty, read
+    <a href="site:install">the
+        tutorial on Lenya's site</a>.</p>
+
+<p>It's also assumed that the first steps before switching to our new user in step 5 are done with
+    a user that has the capabilities of installing Java and the like. We used the root user to do
+    the installs and moves, then switched to the our new user for the rest.</p>
+</section>
+<section id="tensteps"><title>10 Steps to Lenya bliss</title>
+
+<section id="download"><title>Step 1: Download!</title>
+<p>Yeah, seems simple enough, doesn't it? Get 2-5 from above downloaded and on the server
+    you'll be using.</p>
+</section>
+<section id="installsdk"><title>Step 2: Install Java SDK</title>
+    <p>If you downloaded the RPM, you'll need to execute the file first. It spits out the
+        Licensing Agreement, for which you must agree to, and then your RPM file is ready. To
+        install on RedHat, type in the following:</p>
+    
+    <source>rpm -ivh j2sdk-1_4_2_07-linux-i586.rpm</source>
+    
+    <p>or whatever your RPM file happens to be named. This should install your Java files in
+        /usr/java/ by default. You'll also need to setup some environment variables for Java
+        in order for Tomcat to start up correctly later on. Again, these instructions are for
+        RedHat, so consult documentation for your OS if need be.</p>
+    
+    <source>cd /etc/profile.d/</source>
+    
+    <p>Create a new file called java.sh and fill it with the following for now:</p>
+    
+    <source> export JAVA_HOME=/usr/java/java export PATH=$PATH:$JAVA_HOME/bin export
+        CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib/ext
+    </source>
+    
+    <p>Save it and exit from the file. While we are here, let's add the rest of the environment
+        variables for the other applications. So, for Tomcat, create a new file called
+        tomcat.sh and add the following inside:</p>
+    
+    <source> export CATALINA_HOME=/usr/local/tomcat export
+        PATH=$PATH:$CATALINA_HOME/bin
+    </source>
+    
+    <p>Save and exit. Then, create a new file called webapps.sh and add the following
+        inside:</p>
+    
+    <source> export LENYA_HOME=/home/webapp/web_software/lenya-1.2.3 export
+        COCOON_HOME=/home/webapp/web_software/cocoon-2.1.7 export
+        COCOON_WEBAPP=/home/webapp/web_software/cocoon-2.1.7/build/webapp
+    </source>
+    
+    <p>Save and exit.</p>
+</section>
+<section id="setup_a_new_user"><title>Step 3: Setup a new user</title>
+<p>You'll want to create a new user that has access to all of the Cocoon, Tomcat, and Lenya files.
+    I'll call the user "webapp". In most Linux distributions, you can use the graphical tools
+    to add a new user, or if you are a die-hard command-line junkie, use the following command in
+    RedHat to add our new user:</p>
+
+<source>useradd -c "Web Applications" -m webapp</source>
+
+<p>This basically sets up a new user with the name of "Web Applications", a username of "webapp"
+    and creates a home directory (the -m switch) with the standard initialization files.</p>
+
+<p>You may want to setup a password for this user.  To do that, simply do this:</p>
+
+<source>passwd webapp</source>
+
+<p>It will prompt you for the new password twice. Assuming you typed it in the same way both
+    times, you're all set! This is only basic, so if you want to add password expiration
+    options, etc., go right ahead!</p>
+</section>
+<section id="move_downloads_to_right_places"><title>Step 4: Move downloads to right places</title>
+
+<p>In most UNIX/Linux systems, webapp's home directory should be /home/webapp/. Inside
+    webapp's home directory, we'll create a new directory to store our source files. Let's
+    call it "web_software":</p>
+
+<source>
+mkdir /home/webapp/web_software
+chown -R webapp:webapp /home/webapp/web_software
+</source>
+
+<p>Go ahead and move both Lenya's and Cocoon's zipped up files to that directory (you'll have to
+    change to the directory that your downloaded files are stored first):</p>
+
+<source>
+mv apache-lenya-1.2.3-src.tar.gz /home/webapp/web_software/
+mv cocoon-2.1.7-src.tar.gz /home/webapp/web_software/
+</source>
+
+<p>Tomcat needs to go in /usr/local/ (at least that's the typical place for it):</p>
+
+<source>mv jakarta-tomcat-5.0.28.tar.gz /usr/local/</source>
+</section>
+<section id="change_permissions_of_files"><title>Step 5: Change permissions of files</title>
+<p>Now that you created that webapp user, you'll want to assign permissions to the Lenya,
+    Cocoon, and Tomcat files to webapp:</p>
+
+<source>
+chown webapp:webapp /usr/local/jakarta-tomcat-5.0.28.tar.gz
+chown -R webapp:webapp /home/webapp/web_software/
+
+</source>
+
+<p>And then switch to that user:</p>
+
+<source>su - webapp</source>
+</section>
+<section id="unzip_lenya"><title>Step 6: Unzip Lenya</title>
+<p>Pretty easy stuff:</p>
+
+<source>
+cd web_software
+tar xzvf apache-lenya-1.2.3-src.tar.gz
+
+mv apache-lenya-1.2.3-src lenya-1.2.3
+</source>
+</section>
+<section id="unzip_and_build_cocoon"><title>Step 7: Unzip and build Cocoon</title>
+<p>Same deal here:</p>
+
+<source>
+tar xzvf cocoon-2.1.7-src.tar.gz
+mv cocoon-2.1.7-src cocoon-2.1.7
+</source>
+
+<p>Now, you'll need to copy some config files from Lenya into Cocoon's directory:</p>
+
+<source>
+cp lenya-1.2.3/local.build.properties cocoon-2.1.7/
+cp lenya-1.2.3/local.blocks.properties cocoon-2.1.7/
+</source>
+
+<p>Then the all-important part, compiling Cocoon.  It's this simple:</p>
+
+<source>
+cd cocoon-2.1.7
+./build.sh -Dinclude.webapp.libs=yes webapp
+</source>
+</section>
+<section id="install_tomcat"><title>Step 8: Install Tomcat</title>
+
+<p>Since we downloaded the binary version of Tomcat, there's not much to do except to unzip the files.  So here we go again:</p>
+
+<source>
+cd /usr/local/
+tar xzvf jakarta-tomcat-5.0.28.tar.gz
+</source>
+
+<p>Since that name is rather long, let's create a link to it:</p>
+
+<source>ln -s jakarta-tomcat-5.0.28 tomcat</source>
+</section>
+<section id="configure_and_install_lenya"><title>Step 9: Configure and install
+    Lenya</title>
+    
+    <p>OK, we need to let Lenya know where Tomcat is before we install it.</p>
+    
+    <source> cd /home/webapp/web_software/lenya-1.2.3/ cp build.properties
+        local.build.properties
+        </source>
+    
+    <p>Inside this file, you'll need to change a couple of things. Below are the lines you'll
+        need to change in local.build.properties, so scope them out in the file, make the
+        changes, and save them:</p>
+    
+    <source> cocoon.src.dir=../cocoon-2.1.7 tomcat.home.dir=/usr/local/tomcat
+        enable.uploads=true
+        </source>
+    
+    <p>Once done, we'll need to compile:</p>
+    
+    <source>./build.sh install</source>
+</section>
+<section id="start_up_tomcat"><title>Step 10: Start up Tomcat</title>
+<p>To start Tomcat, simply type in the following:</p>
+
+<source>/usr/local/tomcat/bin/startup.sh</source>
+    </section>
+<section id="getting_your_first_access_to_lenya"><title>Getting your first access to Lenya</title>
+<p>Now that Tomcat is up, you should be able to access Lenya pretty easily. Just go to the
+    following URL: http://your.server.url:8080/lenya/. You should see a couple of
+    publications listed on the left with general information about Lenya. >From there, you can
+    log into the Default Publication with the username "lenya" and the password "levi".</p>
+</section>
+</section>
+<section id="next_article"><title>Next Article</title>
+<p>Now that you have the basic installation done, play around and have some fun. In the next
+    article, we'll take a look at how pages are created, published, and customized by changing
+    some of the files in the Default Publication as well as creating our own pipeline.</p>
+</section>
+  </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 6a: mod_proxy and Lenya</title>
+  </header>
+    <body>
+        <p>We had mentioned that we were going to do articles on usecases and doctypes, but as we were
+            reconfiguring the newest version of Lenya (1.2.3 as of this writing) to be
+            installed under the ROOT context of Tomcat, we were again interested in going back
+            and fixing up our mod_proxy configurations so that the following would
+            happen:</p>
+        
+        <ul>
+            <li>You can access the authoring environment with
+                http://lenya.client.com/</li>
+            <li>Any login requests to and subsequent usages of the authoring environment
+                are redirected to SSL for better security (no real certificate needed,
+                since just using it on inside)</li>
+            <li>Each publication is a directory under one virtualhost for
+                http://www.client.com/, unless a new domain name or sub-domain name was
+                needed, like http://publication.client.com/, where a separate
+                virtualhost would be created pointing to that one publication</li>
+            <li>A need for SSL pages on http://www.client.com/ (like form
+                submissions)</li>
+        </ul>
+        
+        <p>It seemed like a lot to ask for, and we wasn't sure how to go about getting it done.
+            Lucky for us (or so we thought), Lenya's documentation has a
+            <a href="http://wiki.apache.org/lenya/HowToModProxy">page on
+                mod_proxy</a> for a very similar configuration. As always, however,
+            making sense of the documentation was harder than the actual configuration.
+            Here's our attempt at explaining just how to get the above setup working.</p>
+        
+        <section id="getting_lenya_installed_under_the_ROOT_context"><title>
+            Getting Lenya installed under the ROOT context</title>
+            
+            <p>So, we were trying to make things a little cleaner for ourself and having Lenya be
+                the only web application installed under Tomcat. To do this, you'll have to
+                change a couple things in your local.build.properies file before building
+                Lenya (see
+                <a href="installing_lenya.html"> installing Lenya</a> for more
+                information):</p>
+            
+            <ol>
+                <li>Change the container from Jetty to Tomcat (new to
+                    1.2.3)
+                    #web.app.server=Jettyweb.app.server=Tomcat</li>
+                <li>Change the tomcat.webapps.dir line to the
+                    following:tomcat.webapps.dir=${tomcat.home.dir}/webapps/ROOT</li>
+                <li>Change the tomcat.cache.dir line to the
+                    following:tomcat.cache.dir=${tomcat.home.dir}/work/Catalina/localhost</li>
+            </ol>
+            
+            <p>While the last line may seem strange, our thinking here was that since we are only
+                using Tomcat for Lenya, if we ever reset Lenya, then we'll just clean out the
+                whole work directory before starting Tomcat again.</p>
+            
+            <p>Then install as always using ./build.sh. You'll have a shiny new
+                installation under the ROOT context, where you can now access Lenya with
+                http://lenya.client.com:8080/ (notice there's no 'lenya' at the end of
+                the URL now).</p>
+            
+        </section><section id="a_caveat_on_SSL"><title>A caveat on SSL</title>
+        
+        <p>Yes, we know, there's always a caveat. Well, one thing the mod_proxy document
+            doesn't mention is that you can't have two different domains or sub-domains with
+            SSL ports opened on the same Apache instance and using the same IP address. For
+            example, if we want to host http://lenya.client.com/ and
+            http://www.client.com/ on the same Apache instance and they both have the same
+            IP address (this is Name-based Virtual Hosting in Apache), you would think you
+            could do this:</p>
+        
+        <source>
+            NameVirtualHost 192.168.1.100:80
+            
+            &lt;VirtualHost 192.168.1.100:80&gt;
+                ServerName lenya.client.com
+                # rest of configuration goes here
+            &lt;/VirtualHost&gt;
+            
+            &lt;VirtualHost 192.168.1.100:443&gt;
+                ServerName lenya.client.com
+                # rest of configuration goes here
+            &lt;/VirtualHost&gt;
+            
+            &lt;VirtualHost 192.168.1.100:80&gt;
+                ServerName www.client.com
+                # rest of configuration goes here
+            &lt;/VirtualHost&gt;
+            
+            &lt;VirtualHost 192.168.1.100:443&gt;
+                ServerName www.client.com
+                # rest of configuration goes here
+            &lt;/VirtualHost&gt;
+        </source>
+        
+        <p>But in fact, you can't. The explanation for it is
+            <a href="http://httpd.apache.org/docs-2.0/ssl/ssl_faq.html#vhosts2">
+                in Apache's documentation</a>. The way around this would be to either get
+            another IP address for www.client.com, or assign another port to
+            www.client.com's SSL connection (instead of using the default 443). So, in this
+            case, we are going to be using another IP address. To be perfectly honest, we are
+            actually going to split the authoring and live servers on to two physical
+            machines, but setting it up this way on one server using one Apache instance is
+            good enough for demonstration purposes.</p>
+        
+        </section><section id="authoring_environment"><title>Authoring
+        environment</title>
+        
+        <p>So, for this first part, we want to be able to go to http://lenya.client.com/ and get
+            the first page of Lenya, where we can choose the publication we need to edit. Here's
+            what we have (it's nearly idential to the mod_proxy how-to document on Lenya's
+            website):</p>
+        
+        <source>
+            NameVirtualHost 192.168.1.100:80
+            
+            &lt;VirtualHost 192.168.1.100:80&gt;
+                ServerName lenya.client.com
+                ServerAlias lenya
+                ProxyRequests Off
+                RewriteEngine On
+                RewriteLog logs/lenya.client.com.rewrite.log
+                RewriteLogLevel 0
+                RewriteRule ^/([^/\.]+)$ $1/ [R]
+                RewriteRule ^/([^/\.]+)/$ http://lenya.client.com/$1/authoring/index.html [R,L]
+                RewriteCond %{QUERY_STRING} lenya\.usecase=login(.*)
+                RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
+                RewriteRule ^/(.*) http://lenya.client.com:8080/$1 [P,L]
+                ProxyPassReverse / http://lenya.client.com:8080/
+            &lt;/VirtualHost&gt;
+            
+            &lt;VirtualHost 192.168.1.100:443&gt;
+                ServerName lenya.client.com
+                ServerAlias lenya
+                ProxyRequests Off
+                RewriteEngine On
+                RewriteLog logs/ssl.lenya.client.com.rewrite.log
+                RewriteLogLevel 0
+                RewriteRule ^/([^/\.]+)$ $1/ [R]
+                RewriteRule ^/([^/\.]+)/$ http://lenya.client.com/$1/authoring/index.html [R,L]
+                RewriteRule ^/(.*) http://%{SERVER_NAME}:8080/$1 [P,L]
+                ProxyPassReverse / http://lenya.client.com:8080/
+            &lt;/VirtualHost&gt;
+        </source>
+        
+        <p>Let's step through this quickly. We setup our name-based virtual host for the IP
+            address assigned to lenya.client.com:</p>
+        
+        <source> NameVirtualHost 192.168.1.100:80
+        </source>
+        
+        <p>In the first virtual host (the non-SSL one on port 80), we give it a name of
+            lenya.client.com, keep proxy requests off (so that it's only a reverse proxy,
+            not a forwarding one), and then turn on the rewriting engine to enable to rewrite
+            URLs. We also setup a log for the rewrites, but since the log level is 0, it won't
+            actually log anything.</p>
+        
+        <p>The first group of RewriteRules are for convenience's sake, really. They match
+            everything after but up to the first forward slash that doesn't have a dot in it. In
+            other words, it's trying to match a directory, like this:</p>
+        <source> http://lenya.client.com/default
+        </source>
+        
+        <p>If it matches, it resends it as
+            http://lenya.client.com/default/authoring/index.html, meaning that it
+            goes through the whole rigamarole of matching again inside the VirtualHost.
+            Well, whenever you access the authoring environment for the first time, Lenya
+            checks to see if there's a session of you being logged in. Since there probably
+            isn't, it forwards you an address where "lenya.usecase=login"
+            something-or-another is appended to it. And that's where the second group of
+            Rewrites comes in. See the RewriteCond? It checks to see if the query string of the
+            URL has that pattern. If it does, it send it off to the SSL portion (see the https?).
+            The rest of it gets sent back to the reverse proxy, where the content is grabbed
+            from port 8080 where Tomcat is installed.</p>
+        
+        <p>In the VirtualHost section for SSL on lenya.client.com, it's pretty much exactly
+            the same. If you try to hit the SSL port with just a directory, like so:</p>
+        
+        <source> https://lenya.client.com/default
+            
+        </source>
+        
+        <p>It rewrites the URL as
+            http://lenya.client.com/default/authoring/index.html. Here, again, it
+            goes back to the first VirtualHost, and if you aren't logged in, it eventually
+            takes you back to the SSL portion of the site to login. Otherwise, it matches
+            everything and sends it through the reverse proxy on port 8080. So, once you login
+            through SSL, you stay in SSL for all your editing.</p>
+        
+        </section><section id="next_part"><title>Next part</title>
+        <p>This article turned out to be quite long, so the next time around, which should be
+            very shortly, we will post the second half on configuring the live server
+            mod_proxy config.
+        </p>
+        </section>
+    </body>
+    </document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya_continued.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya_continued.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya_continued.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/mod_proxy_and_lenya_continued.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 6b: mod_proxy and Lenya</title>
+  </header>
+    <body>
+        <p>One thing to note about the previous article: the last statement is indeed correct
+            if you don't make any changes to the publication.xconf file in the "config"
+            directory of your default publication. However, if you update it according to
+            the
+            <a href="http://wiki.apache.org/lenya/HowToModProxy">
+                HowToModProxy</a> document, after login, you'll be taken back to a non-SSL
+            connection for the rest of your editing.</p>
+        
+        <p>OK, now that the Authoring environment has been setup, we need to finish the Live
+            server setup.</p>
+        
+        <section id="live_environment"><title>Live environment</title>
+            
+            <p>The live environment, at least for this setup, is remarkably similar. Since
+                we're using the same Apache instance but a different IP address, just setup
+                another NameVirtualHost directive with the new IP address. We'll assume
+                that for every publication in Lenya, that will be a directory under our
+                domain name. So, say we have the following publications in our pubs
+                directory:</p>
+            
+            <source>
+                default -&gt; Default Publication 
+                weblog -&gt; Lenya Weblog</source>
+            
+            <p>Then we want to access them this way:</p>
+            
+            <source>
+                http://www.client.com/default/ 
+                http://www.client.com/weblog/</source>
+            
+            <p>In the end, our setup for the live server should look like this:</p>
+            
+            <source> 
+                NameVirtualHost 192.168.1.200:80
+                
+                &lt;VirtualHost 192.168.1.200:80&gt; 
+                    ServerName www.client.com
+                    ServerAlias www
+                    ProxyRequests Off 
+                    RewriteEngine On
+                    RewriteLog logs/www.client.com.rewrite.log 
+                    RewriteLogLevel 0
+                    RewriteRule ^/([^/\.]+)$ $1/ [R] 
+                    RewriteRule ^/([^/\.]+)/$ $1/index.html [R] 
+                    RewriteRule ^/([^/\.]+)/live/(.*)$ $1/$2 [R,L]
+
+                    # Rewrite for Lenya-wide resources (e.g. 404 page) 
+                    RewriteRule ^/lenya/(.*) http://www.client.com:8080/lenya/$1 [P]
+                    RewriteRule ^/([^/\.]+)/(.*) http://www.client.com:8080/$1/live/$2 [P] 
+                    ProxyPassReverse / http://www.client.com:8080/
+                &lt;/VirtualHost&gt;
+                
+                &lt;VirtualHost 192.168.1.200:443&gt; 
+                    ServerName www.client.com
+                    ServerAlias www
+                    ProxyRequests Off 
+                    RewriteEngine On
+                    RewriteLog logs/ssl.www.client.com.rewrite.log
+                    RewriteLogLevel 0
+                    RewriteRule ^/([^/\.]+)$ $1/ [R] 
+                    RewriteRule ^/([^/\.]+)/$ $1/index.html [R] 
+                    RewriteRule ^/([^/\.]+)/live/(.*)$ $1/$2 [R,L]
+                
+                    # Rewrite for Lenya-wide resources (e.g. 404 page) 
+                    RewriteRule ^/lenya/(.*) http://www.client.com:8080/lenya/$1 [P]
+                    RewriteRule ^/([^/\.]+)/(.*) http://%{SERVER_NAME}:8080/$1/live/$2 [P]
+                    ProxyPassReverse / http://www.client.com:8080/
+                &lt;/VirtualHost&gt;
+            </source>
+            
+            <p>So, what's going on here? Well, to use the non-SSL virtualhost as an example,
+                we're simply matching for any directory and mapping it to it's live
+                counterpart. We add the rewrite for the 404 page (remember, this
+                installation is under the ROOT context, so some of the "lenya" directories
+                are missing) and then reverse proxy it to port 8080 as usual. Now, if you go to
+                http://www.client.com/default/, you get taken to the live site for the
+                default publication.</p>
+            
+            <p>There are some things that aren't good about this. For one, it doesn't take
+                into account the root directory (i.e., http://www.client.com/). It will
+                be served by Apache in the DocumentRoot instead of through Lenya. That may be
+                what you're looking for, but my guess is that your publications won't
+                directly match to their URLs. No problems - just be more specific. If you
+                wanted to map the http://www.client.com/ URL to the default publication,
+                then just use this instead:</p>
+            
+            <source> 
+                RewriteRule ^/$ index.html [R] 
+                RewriteRule ^/default/live/(.*)$ $1 [R,L] 
+                RewriteRule ^/(.*) http://www.client.com:8080/default/live/$1 [P]
+            </source>
+            
+            <p>Then reverse proxy as always. In configurations we've used, we just list each
+                publication we have that maps to a URL, so we know for certain that we are matching
+                everything we want to.</p>
+            
+        </section><section id="modifying_the_publication_proxy_configuration">
+        <title>Modifying the publication proxy configuration</title>
+        
+        <p>There's one last thing that you'll want to do, and that's modifying the default
+            proxy settings in the publication's files itself so that you can switch between
+            SSL and non-SSL encrypted pages with ease. The start of the
+            <a href="http://wiki.apache.org/lenya/HowToModProxy">
+                HowToModProxy</a> document, as mentioned before, shows how to do this
+            really well. Using the
+            example above where the publications relate to their web address:</p>
+        
+        <source>
+            &lt;proxy url="https://www.client.com/default" ssl="true" area="live"/&gt;
+            &lt;proxy url="http://www.client.com/default" ssl="false" area="live"/&gt;
+            &lt;proxy url="https://lenya.client.com/default" ssl="true" area="authoring"/&gt;
+            &lt;proxy url="http://lenya.client.com/default" ssl="false" area="authoring"/&gt;
+        </source>
+        
+        <p>WARNING! we haven't tried the above configuration because we don't have the
+            necessary resources to test it properly. Hopefully someone will test it and get
+            back to us on the results. According to the documentation on Lenya's website, it
+            should be correct.</p>
+        
+        </section>
+            <section id="this_concludes_the_test_of_the_emergency_broadcast_system">
+        <title>This concludes the test of the emergency broadcast system</title>
+        
+        <p>Well, that's it. There's obviously more that you can play with when it comes to
+            mod_proxy and general URLs, but we hope this is a springboard for more ideas and a
+            place to gather more resources on the subject. If you're ever stuck on mod_proxy
+            in general, you can visit
+            <a href="http://httpd.apache.org/docs-2.0/mod/mod_proxy.html">
+                Apache's documentation</a> on the subject, and as always, a post to the
+            Lenya user <a href="site:ml">mailing list</a> will most likely yield some answers.</p>
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/understanding_lenya.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/understanding_lenya.xml?rev=164478&view=auto
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/understanding_lenya.xml (added)
+++ lenya/docu/src/documentation/content/xdocs/1_2_x/tutorial/understanding_lenya.xml Sun Apr 24 07:12:32 2005
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: index.xml 55543 2004-10-26 00:14:59Z gregor $ -->
+
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
+
+<document>
+  <header>
+    <title>Part 1: Understanding Lenya</title>
+  </header>
+    <body>
+        <p>In this first installment in a series of articles on Lenya, we’d like to talk about
+            what Lenya is and what approach it takes in content management, including its
+            advantages and disadvantages.</p>
+        
+        <section id="history">
+                    <title>History</title>
+        
+        <p>Lenya was started by Michael Wechner in early 1999 as a way to document a journal on
+            pattern formation. From there, he co-started a company called
+            <a href="ext:wyona">Wyona</a> which continued to work on the project
+            until the spring of 2003, where the project was donated to the Apache Software
+            Foundation.</p>
+        </section>
+        <section id="approach"><title>Approach to Content Management</title>
+        
+        <p>Lenya’s approach to content management is just that: content management. While
+            <a href="http://www.textpattern.com/">some</a> CMS’s allow users to
+            change the styling of pages in the graphical interface of the application, Lenya
+            does not. Some consider this to be a big negative for Lenya, and for a large
+            institution with multiple designers and CSS developers, it can be. We’ve been
+            finding, however, as just one user that maintains the look and feel of Hiram’s
+            website, this isn’t that bad. Instead of working in a webpage to update our CSS, we
+            just upload it to the server.</p>
+        
+        <p>Of course, this means that the structural markup for the overall page layout is not
+            managed in Lenya either, well, at least not through the graphical user
+            interface. Instead, your page layout is done in XSL files, and when the page is
+            accessed through your web browser, the content and the XSL template merge and get
+            transformed into a valid HTML or XHTML document.</p>
+        </section>
+        <section id="goodstuff"><title>The good stuff</title>
+        
+        <p>What grabbed our attention with Lenya was how it went about presenting your content
+            for editing. When you log in to your website through Lenya, you can click on the
+            navigation in the pages as if you were browsing your website right there. Find
+            something wrong in the text of one page as you browse? Just go to Edit -> WYSIWYG
+            Editor and you’re taken to a page where you can change the content. Save your
+            changes, then publish the updated page. It’s incredibly easy.</p>
+        
+        <p>What’s also nice is that the foundation of Lenya is built on XML which, of course, is
+            great news for web standards gurus who will only work with XHTML. By default,
+            Lenya uses HTML 4.0, but a quick change in one file will switch all your pages to
+            XHTML Strict. And since it relies on XML, there’s no backend database that
+            manages this: it’s all flat XML files stored on the server. Don’t get this
+            confused, however, with having the ability to connect to a database as you would
+            with any
+            <a href="http://www.php.net/">PHP</a>-type language, because Lenya can
+            definitely do this as well.</p>
+        
+        <p>And as any good CMS would, information about the pages, like metadata, amongst
+            other things, can be edited for each page and is kept separate from the content on
+            the page itself. Lenya utilizes the
+            <a href="http://www.dublincore.org/">Dublin Core</a> for its metadata
+            tags in pages.</p>
+            </section>
+        
+        <section id="downers"><title>Some downers</title>
+        
+        <p>OK, so there are some downers. The terminology takes a bit of getting used to. For
+            example, “assets” are documents, images, or anything you want to link to in the
+            page that isn’t text. Some things just don’t happen by default in Lenya: they
+            require some extra programming. For example, say you add a new item in your site’s
+            navigation, but it doesn’t have a page on your website, it just links to an outside
+            site. There’s no nice way of doing this in the graphical interface. A login to the
+            server to edit the publication’s sitemap will provide this functionality.</p>
+        
+        <p>Also, Lenya runs on top of
+            <a href="http://cocoon.apache.org/">Apache Cocoon</a>, which is not the
+            downer, but the time required to learn it makes a lot of people give up quickly.
+            
+                <a href="http://cocoon.apache.org/2.1/userdocs/concepts/index.html#Basic+Mechanisms.">
+                Pipelines</a> are the big key to understanding how a page is created in
+            Lenya, and trust me, that will take some getting used to when you want to do
+            something that doesn’t fit the general site provided for you as an example. With
+            that, it’s much harder to find a company that will host Lenya for you – chances are
+            you’ll need to have a server of your own.</p>
+        
+        <p>One last thing for picky web developers: getting a website to have clean URLs is a
+            bit tricky. Even we have yet to get this working exactly the way we would like it to.
+            And with Lenya and clean URLs comes a much more detailed look into configurations
+            with the Apache web server than you are probably used to, which does take some
+            time.</p>
+        </section>
+        <section id="next"><title>What’s next?</title>
+        
+        <p>So, you read the advantages and disadvantages and you want to take the plunge into
+            Lenya? Good, because in my next article we’ll be explaining the methods we took to
+            get Lenya up and running on our RedHat Enterprise Linux server. Don’t worry, you
+            won’t need this specific operating system to make Lenya work. Lenya can run on
+            pretty much any UNIX/Linux server and (even) Microsoft Windows.</p>
+            </section>
+    </body>
+</document>
\ No newline at end of file

Modified: lenya/docu/src/documentation/content/xdocs/1_4/installation/source_version.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/1_4/installation/source_version.xml?rev=164478&r1=164477&r2=164478&view=diff
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/1_4/installation/source_version.xml (original)
+++ lenya/docu/src/documentation/content/xdocs/1_4/installation/source_version.xml Sun Apr 24 07:12:32 2005
@@ -103,9 +103,9 @@
           <p>
             <strong>Get Apache Lenya</strong>
             <br/>
-            (see <a href="site:download">Download Lenya</a>)
+            (see <a href="site:download14">Download Lenya</a>)
             <br/>
-            Using <a href="site:subversion">Subversion</a>, checkout Lenya inside the
+            Using <a href="site:subversion14">Subversion</a>, checkout Lenya inside the
             <code>src/</code> directory. 
           </p>
         </li>

Modified: lenya/docu/src/documentation/content/xdocs/community/acknowledgements.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/community/acknowledgements.xml?rev=164478&r1=164477&r2=164478&view=diff
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/community/acknowledgements.xml (original)
+++ lenya/docu/src/documentation/content/xdocs/community/acknowledgements.xml Sun Apr 24 07:12:32 2005
@@ -64,6 +64,7 @@
 <li>Guido Wesdorp (Releasing tree javascript under BSD license)</li>
 <li>Olivier Lange (french translation)</li>
 <li>Kars Veiling</li>
+<li>Jon Linczak (tutorial articles, new lenya menu)</li>
 <li>Lon Boonen
 <p>
 Lon is the original creator of Xopus. He helped a lot to integrate Xopus into Lenya.

Modified: lenya/docu/src/documentation/content/xdocs/index.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/index.xml?rev=164478&r1=164477&r2=164478&view=diff
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/index.xml (original)
+++ lenya/docu/src/documentation/content/xdocs/index.xml Sun Apr 24 07:12:32 2005
@@ -23,7 +23,7 @@
 		<title>Apache Lenya - Open Source Java/XML Content Management System</title>
 	</header>
 	<body>
-<p><img src="images/menubar.png" alt="Screenshot of the Apache Lenya authoring area"/></p><p>
+<p><img src="images/menubar.png" alt="Screenshot of the Apache Lenya menu bar"/></p><p>
 Apache Lenya is an Open Source Java/XML Content Management System and comes with revision control, site management, scheduling, search, WYSIWYG editors, and workflow.</p>
 
 <p>
@@ -35,6 +35,7 @@
       <ul>
         <li>Two Lenya presentations at <a href="ext:apachecon">ApacheCon Europe 2005</a> (Stuttgart, Germany
 18-22 July 2005)</li>
+        <li>New <a href="site:tutorial">Lenya tutorials</a> posted (April 24, 2005) </li>
         <li>Lenya 1.2.2 released (February 28, 2005) </li>
         <li>Lenya 1.2.1 released (December 29, 2004) </li>
         <li>Apache Lenya becomes a top-level Apache project. (September 22, 2004)</li>
@@ -56,7 +57,7 @@
 <li> Browser-based WYSIWYG Editors that validate input against a Relax
 NG Schema. This prevents invalid markup as produced by other WYSIWYG
 editors, and allows to enforce web site style guidelines. ships with the <a href="http://bxe.oscom.org">BXE</a> 
-and <a href="http://kupu.oscom.org">Kupu</a> editors out of the box. Asset management 
+and <a href="ext:kupu">Kupu</a> editors out of the box. Asset management 
 and link management are integrated into BXE and Kupu.
 </li>
 <li> A forms editor is available for situations where a full-blown 

Modified: lenya/docu/src/documentation/content/xdocs/site.xml
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/content/xdocs/site.xml?rev=164478&r1=164477&r2=164478&view=diff
==============================================================================
--- lenya/docu/src/documentation/content/xdocs/site.xml (original)
+++ lenya/docu/src/documentation/content/xdocs/site.xml Sun Apr 24 07:12:32 2005
@@ -45,11 +45,11 @@
 <!--          <whole_docu href="../documentation-1-4.pdf" label="1.4 PDF docs (all in one)" />
           <whole_docu href="../documentation-1-4.html" label="1.4 HTML docs (all in one)" />
 -->          
-    <installation href="installation/" label="Installation">
-      <download href="index.html" label="Download"/>
-      <cvs href="subversion.html" label="Subversion Access"/>
-      <install href="source_version.html" label="Install Instructions"/>
-    </installation>
+    <installation14 href="installation/" label="Installation">
+      <download14 href="index.html" label="Download"/>
+      <subversion14 href="subversion.html" label="Subversion Access"/>
+      <instal14l href="source_version.html" label="Install Instructions"/>
+    </installation14>
 
     <concepts href="concepts/" label="Concepts"> 	 
       <wysiwyg href="wysiwyg.html" label="WYSIWYG" />
@@ -88,6 +88,17 @@
               <cvs href="subversion.html" label="Subversion Access"/>
               <install href="source_version.html" label="Install Instructions"/>
             </installation12>
+      
+            <tutorial href="tutorial/" label="Tutorial">
+                <index_pm href="index.html" label="Introduction"/>
+                <understanding href="understanding_lenya.html" label="1. Understanding Lenya"/>
+                <installing_lenya href="installing_lenya.html" label="2. Installing Lenya"/>
+                <pipeline href="anatomy_of_the_pipeline.html" label="3. Anatomy of the Pipeline"/>
+                <editing_in_lenya href="editing_in_lenya.html" label="4. Editing in Lenya"/>
+                <custom_navigation href="custom_navigation.html" label="5. Custom Navigation in Lenya"/>
+                <mod_proxy_and_lenya href="mod_proxy_and_lenya.html" label="6a. Mod Proxy and Lenya"/>
+                <mod_proxy_and_lenya_cont href="mod_proxy_and_lenya_continued.html" label="6b. Mod Proxy and Lenya"/>
+            </tutorial>
 
             <components href="components/" label="Components">
                 <accesscontrol href="accesscontrol/" label="Access&#160;Control">
@@ -245,7 +256,8 @@
         <lenya.dist href="http://www.apache.org/dyn/closer.cgi/lenya"/>
         <cvs.asf href="http://svn.apache.org/"/>
         <bxe href="http://bxe.oscom.org"/>
-        <forrest.apache.org href="http://forrest.apache.org/">
+        <kupu href="http://kupu.oscom.org"/>
+                <forrest.apache.org href="http://forrest.apache.org/">
             <forrest.build href="build.html"/>
             <forrest.install href="docs/your-project.html#installing"/>
             <forrest.contrib href="contrib.html"/>
@@ -273,6 +285,7 @@
                 <websiteUpdate href="../cocoon/CocoonWebsiteUpdate"/>
             </cocoon>
         </wiki>
+        <oscom href="http://oscom.org"/>
         <wyona href="http://wyona.com" />
         <java href="http://java.sun.com/j2se/1.4.2/download.html"/>
         <java.endorsedmechanism href="http://java.sun.com/j2se/1.4.2/docs/guide/standards/index.html"/>

Added: lenya/docu/src/documentation/resources/images/bxet.gif
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/resources/images/bxet.gif?rev=164478&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lenya/docu/src/documentation/resources/images/bxet.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lenya/docu/src/documentation/resources/images/kuput.gif
URL: http://svn.apache.org/viewcvs/lenya/docu/src/documentation/resources/images/kuput.gif?rev=164478&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lenya/docu/src/documentation/resources/images/kuput.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org