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. <map:pipeline>
+ 2. <map:match pattern="example">
+ 3. <map:generate type="file" src="example.xml"/>
+ 4. <map:serialize type="xml"/>
+ 5. </map:match>
+ 6. </map:pipeline>
+ </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. <map:pipeline>
+ 2. <map:match pattern="test.html">
+ 3. <map:generate type="file" src="test.xml"/>
+ 4. <map:transform type="xslt" src="test2html.xsl"/>
+ 5. <map:serialize type="html"/>
+ 6. </map:match>
+ 7. </map:pipeline>
+ </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. <map:pipeline>
+ 2. <!--/lenyabody-{rendertype}/{publication-id}/{area}/{doctype}/{url}-->
+ 3. <map:match pattern="lenyabody-*/*/*/*/**">
+ 4. <map:aggregate element="cmsbody">
+ 5. <map:part src="cocoon://navigation/{2}/{3}/breadcrumb/{5}.xml"/>
+ 6. <map:part src="cocoon://navigation/{2}/{3}/tabs/{5}.xml"/>
+ 7. <map:part src="cocoon://navigation/{2}/{3}/menu/{5}.xml"/>
+ 8. <map:part src="cocoon://navigation/{2}/{3}/search/{5}.xml"/>
+ 9. <map:part src="cocoon:/lenya-document-{1}/{3}/{4}/{page-envelope:document-path}"/>>
+ 10.</map:aggregate>
+ 11.<map:transform src="xslt/page2xhtml-{4}.xsl">
+ 12.<map:parameter name="root" value="{page-envelope:context-prefix}/{2}/{3}"/>
+ 13.<map:parameter name="url" value="{5}"/>
+ 14.<map:parameter name="document-id" value="{page-envelope:document-id}"/>
+ 15.<map:parameter name="document-type" value="{page-envelope:document-type}"/>
+ 16.</map:transform>
+ 17.<map:select type="parameter">
+ 18.<map:parameter name="parameter-selector-test" value="{1}"/>
+ 19.<map:when test="view">
+ 20.<map:transform type="link-rewrite"/>
+ 21.</map:when>
+ 22.</map:select>
+ 23.<map:serialize type="xml"/>
+ 24.</map:match>
+ 25.</map:pipeline>
+ </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>
+ <site>
+ <node id="index">
+ <label xml:lang="en">Home</label>
+ <label xml:lang="de">Home</label>
+ </node>
+
+ <node id="tutorial">
+ <label xml:lang="en">Tutorial</label>
+ <label xml:lang="de">Tutorial</label>
+
+ <node id="new_doctype">
+ <label xml:lang="en">Create new doctype</label>
+ </node>
+ </node>
+ </site>
+ </source>
+
+ <p>The above tells us that each page is characterized by a <node> tag. Each
+ <node> 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 <label>. 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>
+ <?xml version="1.0" encoding="UTF-8" ?>
+
+ <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">
+
+ <xsl:template match="nav:site">
+
+ <ul>
+
+ <!-- loop through all top-level items and return as list items -->
+ <xsl:for-each select="/*/nav:node[@visibleinnav = 'true']">
+ <xsl:when test="@current = 'true'">
+ <li class="current"><a href="{@href}"><xsl:apply-templates select="nav:label"/></a></li>
+ </xsl:when>
+ <xsl:otherwise>
+ <li><a href="{@href}"><xsl:apply-templates select="nav:label"/></a></li>
+ </xsl:otherwise>
+ </xsl:for-each>
+
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="nav:label">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ </xsl:stylesheet>
+ </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 <site> tag -
+ that's the root tag that wraps around all the <node> 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 <label>
+ 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&PartDetailId=j2sdk-1.4.2_07-oth-JPR&SiteId=JSC&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
+
+ <VirtualHost 192.168.1.100:80>
+ ServerName lenya.client.com
+ # rest of configuration goes here
+ </VirtualHost>
+
+ <VirtualHost 192.168.1.100:443>
+ ServerName lenya.client.com
+ # rest of configuration goes here
+ </VirtualHost>
+
+ <VirtualHost 192.168.1.100:80>
+ ServerName www.client.com
+ # rest of configuration goes here
+ </VirtualHost>
+
+ <VirtualHost 192.168.1.100:443>
+ ServerName www.client.com
+ # rest of configuration goes here
+ </VirtualHost>
+ </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
+
+ <VirtualHost 192.168.1.100:80>
+ 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/
+ </VirtualHost>
+
+ <VirtualHost 192.168.1.100:443>
+ 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/
+ </VirtualHost>
+ </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 -> Default Publication
+ weblog -> 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
+
+ <VirtualHost 192.168.1.200:80>
+ 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/
+ </VirtualHost>
+
+ <VirtualHost 192.168.1.200:443>
+ 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/
+ </VirtualHost>
+ </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>
+ <proxy url="https://www.client.com/default" ssl="true" area="live"/>
+ <proxy url="http://www.client.com/default" ssl="false" area="live"/>
+ <proxy url="https://lenya.client.com/default" ssl="true" area="authoring"/>
+ <proxy url="http://lenya.client.com/default" ssl="false" area="authoring"/>
+ </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 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