You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by ja...@apache.org on 2008/01/22 16:36:27 UTC

svn commit: r614218 - in /lenya/sandbox/modules/importfrom12: ./ config/ config/cocoon-xconf/ java/ java/src/ java/src/org/ java/src/org/apache/ java/src/org/apache/lenya/ java/src/org/apache/lenya/cms/ java/src/org/apache/lenya/cms/importfrom12/ resou...

Author: jann
Date: Tue Jan 22 07:36:23 2008
New Revision: 614218

URL: http://svn.apache.org/viewvc?rev=614218&view=rev
Log:
A start for an import-from-lenya12 module. At the moment it simply imports the content but no resources and other stuff

Added:
    lenya/sandbox/modules/importfrom12/
    lenya/sandbox/modules/importfrom12/config/
    lenya/sandbox/modules/importfrom12/config/cocoon-xconf/
    lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf
    lenya/sandbox/modules/importfrom12/config/module.xml
    lenya/sandbox/modules/importfrom12/java/
    lenya/sandbox/modules/importfrom12/java/src/
    lenya/sandbox/modules/importfrom12/java/src/org/
    lenya/sandbox/modules/importfrom12/java/src/org/apache/
    lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/
    lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/
    lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/
    lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java
    lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java
    lenya/sandbox/modules/importfrom12/resources/
    lenya/sandbox/modules/importfrom12/resources/i18n/
    lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml
    lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml
    lenya/sandbox/modules/importfrom12/usecases/
    lenya/sandbox/modules/importfrom12/usecases/importcontent.jx

Added: lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf (added)
+++ lenya/sandbox/modules/importfrom12/config/cocoon-xconf/usecases.xconf Tue Jan 22 07:36:23 2008
@@ -0,0 +1,8 @@
+<xconf xpath="/cocoon/usecases"
+       unless="/cocoon/usecases/component-instance[@name = 'importfrom12.importcontent']">
+  <component-instance name="importfrom12.importcontent"
+                      logger="lenya.usecases.importfrom12.importcontent"
+                      class="org.apache.lenya.cms.importfrom12.ImportContent">
+    <view template="modules/importfrom12/usecases/importcontent.jx" menu="false"/>
+  </component-instance>
+</xconf>
\ No newline at end of file

Added: lenya/sandbox/modules/importfrom12/config/module.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/config/module.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/config/module.xml (added)
+++ lenya/sandbox/modules/importfrom12/config/module.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,11 @@
+<module xmlns="http://apache.org/lenya/module/1.0">
+  <id>org.myproject.lenya.modules.importfrom12</id>
+  <depends module="org.apache.lenya.modules.usecase"/>
+  <package>org.apache.lenya.modules</package>
+  <version>0.1-dev</version>
+  <name>Import Content from a lenya-1.2 publication</name>
+  <lenya-version>1.0-dev</lenya-version>
+  <description>
+     Module to import Content from a lenya-1.2 publication
+  </description>
+</module>

Added: lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java (added)
+++ lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ContentImporter.java Tue Jan 22 07:36:23 2008
@@ -0,0 +1,243 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.
+ *
+ */
+package org.apache.lenya.cms.importfrom12;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.linking.LinkConverter;
+import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.publication.Area;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.DocumentManager;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.ResourceType;
+import org.apache.lenya.cms.site.SiteNode;
+import org.apache.lenya.cms.site.SiteStructure;
+import org.apache.lenya.cms.site.tree.DefaultSiteTree;
+import org.apache.lenya.xml.DocumentHelper;
+import org.apache.lenya.xml.NamespaceHelper;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Import content.
+ */
+public class ContentImporter extends AbstractLogEnabled {
+
+    private ServiceManager manager;
+
+    /**
+     * Ctor.
+     * 
+     * @param manager
+     *            The service manager.
+     * @param logger
+     *            The logger.
+     */
+    public ContentImporter(ServiceManager manager, Logger logger) {
+        this.manager = manager;
+        enableLogging(logger);
+    }
+
+    /**
+     * Imports content into an area.
+     * 
+     * @param area
+     *            The area.
+     * @param path
+     *            The path containing the content.
+     * @throws Exception
+     *             if an error occurs.
+     */
+    public void importContent(Area area, String path) throws Exception {
+        importContent(area.getPublication(), area, path);
+    }
+
+    /**
+     * Imports content from a different publication into an area.
+     * 
+     * @param srcPub
+     *            The source publication.
+     * @param area
+     *            The area.
+     * @param path
+     *            The path containing the content.
+     * @throws Exception
+     *             if an error occurs.
+     */
+    public void importContent(Publication srcPub, Area area, String path)
+            throws Exception {
+        getLogger().info("Importing documents into area [" + area + "]");
+
+        String baseUri = "file://" + path;
+        String sitetreeUri = baseUri + "/sitetree.xml";
+
+        org.w3c.dom.Document xml = SourceUtil
+                .readDOM(sitetreeUri, this.manager);
+        NamespaceHelper helper = new NamespaceHelper(
+                DefaultSiteTree.NAMESPACE_URI, "", xml);
+
+        Element siteElement = xml.getDocumentElement();
+        importChildren(area, helper, siteElement, baseUri, "");
+
+        convertLinks(srcPub, area);
+    }
+
+    protected void importElement(Area area, NamespaceHelper helper,
+            Element element, String baseUri, String parentPath) {
+        String path = parentPath + "/" + element.getAttribute("id");
+
+        boolean visible = true;
+        String visibleString = element.getAttribute("visibleinnav");
+        if (visibleString != null && !visibleString.equals("")) {
+            visible = Boolean.valueOf(visibleString).booleanValue();
+        }
+
+        Element[] labelElements = helper.getChildren(element, "label");
+        for (int i = 0; i < labelElements.length; i++) {
+            importDocument(area, labelElements[i], baseUri, path, visible);
+        }
+        importChildren(area, helper, element, baseUri, path);
+    }
+
+    protected void importDocument(Area area, Element element, String baseUri,
+            String path, boolean visibleInNav) {
+
+        // We need to know how forrest was going to determine the Namespace from
+        // document root xml element :-( This should be made configurable!
+        // see http://forrest.apache.org/docs_0_80/cap.html and parameter-doctype.xmap
+        // in a 1.2 publication.
+        String forrest_doctype_rule = "namespace";
+
+        String language = element.getAttribute("xml:lang");
+        String navigationTitle = DocumentHelper.getSimpleElementText(element);
+
+        String contentUri = baseUri + path + "/index_" + language + ".xml";
+        String metaUri = contentUri + ".meta";
+
+        DocumentManager docManager = null;
+        ServiceSelector selector = null;
+        ResourceType resourceType = null;
+        SourceResolver resolver = null;
+        try {
+
+            org.w3c.dom.Document metaDoc = DocumentHelper.createDocument(
+                    "http://apache.org/cocoon/lenya/page-envelope/1.0",
+                    "lenya:document", null);
+            Element root = metaDoc.getDocumentElement();
+
+            org.w3c.dom.Document xml = SourceUtil.readDOM(contentUri,
+                    this.manager);
+            
+//            String doctype = this.getUsedDoctype(xml.getDocumentElement(),"jkl");
+           String resourceTypeName="xhtml";
+           String mimeType = "application/xhtml+xml";
+           
+
+           NamespaceHelper helper = new NamespaceHelper(
+                    "http://apache.org/cocoon/lenya/page-envelope/1.0", "", xml);
+
+           Element metaElement = helper.getFirstChild(
+                    xml.getDocumentElement(), "meta");
+           Node newNode = metaDoc.importNode(metaElement, true);
+           root.appendChild(newNode);
+           
+            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE
+                    + "Selector");
+            resourceType = (ResourceType) selector.select(resourceTypeName);
+
+            docManager = (DocumentManager) this.manager
+                    .lookup(DocumentManager.ROLE);
+            Document newDoc;
+            SiteStructure site = area.getSite();
+            if (!site.contains(path)
+                    || site.getNode(path).getLanguages().length == 0) {
+                newDoc = docManager.add(area.getPublication().getFactory(),
+                        resourceType, contentUri, area.getPublication(), area
+                                .getName(), path, language, "xml",
+                        navigationTitle, visibleInNav);
+                newDoc.setMimeType(mimeType);
+            } else {
+                SiteNode node = site.getNode(path);
+                Document doc = node.getLink(node.getLanguages()[0])
+                        .getDocument();
+                newDoc = docManager.addVersion(doc, area.getName(), language,
+                        true);
+                resolver = (SourceResolver) this.manager
+                        .lookup(SourceResolver.ROLE);
+                SourceUtil.copy(resolver, contentUri, newDoc.getOutputStream());
+                newDoc.getLink().setLabel(navigationTitle);
+            }
+
+            String dcNamespace = "http://purl.org/dc/elements/1.1/";
+
+
+            NamespaceHelper dcHelper = new NamespaceHelper(dcNamespace, "dc", xml);
+            Element[] dcElements = dcHelper.getChildren(metaElement);
+
+            MetaData meta = newDoc.getMetaData(dcNamespace);
+            
+            for (int i = 0; i < dcElements.length; i++) {
+                String key = dcElements[i].getLocalName();
+                String value = DocumentHelper
+                        .getSimpleElementText(dcElements[i]);
+                meta.setValue(key, value);
+            }
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (docManager != null) {
+                this.manager.release(docManager);
+            }
+            if (selector != null) {
+                this.manager.release(selector);
+            }
+            if (resolver != null) {
+                this.manager.release(resolver);
+            }
+        }
+    }
+
+    protected void importChildren(Area area, NamespaceHelper helper,
+            Element element, String baseUri, String path) {
+        Element[] elements = helper.getChildren(element, "node");
+        for (int i = 0; i < elements.length; i++) {
+            importElement(area, helper, elements[i], baseUri, path);
+        }
+    }
+
+    protected void convertLinks(Publication srcPub, Area area) {
+        Document[] docs = area.getDocuments();
+        for (int i = 0; i < docs.length; i++) {
+            LinkConverter converter = new LinkConverter(this.manager,
+                    getLogger());
+            converter.convertUrlsToUuids(srcPub, docs[i], false);
+        }
+    }
+
+    protected String getUsedDoctype(Element rootElement, String rule) {
+        String test = rootElement.getBaseURI();
+        return null;
+    }
+
+}

Added: lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java (added)
+++ lenya/sandbox/modules/importfrom12/java/src/org/apache/lenya/cms/importfrom12/ImportContent.java Tue Jan 22 07:36:23 2008
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.
+ *
+ */
+
+package org.apache.lenya.cms.importfrom12;
+
+import java.io.File;
+
+import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.importfrom12.ContentImporter;
+import org.apache.lenya.cms.publication.Area;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.usecase.AbstractUsecase;
+
+/**
+ * Import content.
+ */
+public class ImportContent extends AbstractUsecase {
+
+    protected void initParameters() {
+        super.initParameters();
+
+        Publication publication;
+        try {
+            publication = PublicationUtil.getPublicationFromUrl(this.manager, getDocumentFactory(),
+                    getSourceURL());
+        } catch (PublicationException e) {
+            throw new RuntimeException(e);
+        }
+        String path = getlenya12ContentPath(publication);
+        if (!new File(path).exists()) {
+            path = getlenya12ContentPath(getDefaultPub());
+        }
+        setParameter("path", path);
+    }
+
+    protected String getlenya12ContentPath(Publication publication) {
+        return publication.getDirectory().getAbsolutePath().replace(File.separatorChar, '/')
+                + "/lenya12-content";
+    }
+
+    protected Publication getDefaultPub() {
+        Publication defaultPub;
+        try {
+            defaultPub = getDocumentFactory().getPublication("default");
+        } catch (PublicationException e) {
+            throw new RuntimeException(e);
+        }
+        return defaultPub;
+    }
+
+    protected void doCheckPreconditions() throws Exception {
+        super.doCheckPreconditions();
+        Area area = getArea();
+        if (area.getDocuments().length > 0) {
+            addErrorMessage("You can't import anything because this publication already contains content.");
+        }
+    }
+
+    protected Area getArea() {
+        String url = getSourceURL();
+        URLInformation info = new URLInformation(url);
+        String pubId = info.getPublicationId();
+        String areaName = info.getArea();
+        Area area;
+        try {
+            area = getDocumentFactory().getPublication(pubId).getArea(areaName);
+        } catch (PublicationException e) {
+            throw new RuntimeException(e);
+        }
+        return area;
+    }
+
+    protected void doCheckExecutionConditions() throws Exception {
+        super.doCheckExecutionConditions();
+        String path = getParameterAsString("path");
+        String baseUri = "file://" + path;
+        String sitetreeUri = baseUri + File.separator + getArea().getName() + "/sitetree.xml";
+        if (!SourceUtil.exists(sitetreeUri, this.manager)) {
+            addErrorMessage("The sitetree file does not exist in this directory.");
+        }
+    }
+
+    protected void doExecute() throws Exception {
+        super.doExecute();
+        String path = getParameterAsString("path");
+        path = path.concat(File.separator + getArea().getName());
+        ContentImporter importer = new ContentImporter(this.manager, getLogger());
+        importer.importContent(getDefaultPub(), getArea(),path);
+    }
+
+}

Added: lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml (added)
+++ lenya/sandbox/modules/importfrom12/resources/i18n/cmsui.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->
+
+<catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  
+  <message key="import-from-lenya12">Import from lenya 1.2</message>
+  <message key="may-take-a-while">This may take a couple of seconds.</message>
+  
+</catalogue>

Added: lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml (added)
+++ lenya/sandbox/modules/importfrom12/resources/i18n/cmsui_de.xml Tue Jan 22 07:36:23 2008
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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: cmsui.xml 447395 2006-09-18 13:01:33Z andreas $ -->
+
+<catalogue xml:lang="de" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  
+  <message key="getting-started">Erste Schritte</message>
+  <message key="thanks">Vielen Dank, dass Sie sich Apache Lenya näher anschauen!</message>
+  <message key="import-from-lenya12">Inhalt aus lenya 1.2 importieren</message>
+  <message key="may-take-a-while">Dies kann einige Sekunden dauern.</message>
+  
+</catalogue>

Added: lenya/sandbox/modules/importfrom12/usecases/importcontent.jx
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/importfrom12/usecases/importcontent.jx?rev=614218&view=auto
==============================================================================
--- lenya/sandbox/modules/importfrom12/usecases/importcontent.jx (added)
+++ lenya/sandbox/modules/importfrom12/usecases/importcontent.jx Tue Jan 22 07:36:23 2008
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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: forms.jx 416646 2006-06-23 09:02:03Z andreas $ -->
+<page:page
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:ci="http://apache.org/cocoon/include/1.0"
+  >
+  
+  <page:title><i18n:text>Import</i18n:text></page:title>
+  <page:body>
+    
+    <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
+    
+       <jx:choose>
+      <jx:when test="${! usecase.hasErrors()}">
+        <p><i18n:text>thanks</i18n:text></p>
+        <p>In order to import content from lenya-1.2 you have to copy the
+        lenya 1.2 content folder to the  publication you would like to import
+        tha content and rename it to lenya12-content</p>
+        <form name="import" method="post">
+          <p>
+            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
+            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
+            <input type="submit" name="submit" value="import-from-lenya12" i18n:attr="value"/>
+            <i18n:text>may-take-a-while</i18n:text>
+          </p>
+        </form>
+        <form name="create" method="get">
+          <p>
+            <input type="hidden" name="lenya.usecase" value="sitemanagement.create"/>
+            <input type="hidden" name="path" value="/index"/>
+            <input type="submit" name="submit" value="create-own-page" i18n:attr="value"/>
+          </p>
+        </form>
+      </jx:when>
+      <jx:otherwise>
+        <p>
+          <form method="post">
+            <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
+            <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
+            <input type="submit" value="Cancel" i18n:attr="value"/>
+          </form>
+        </p>
+      </jx:otherwise>
+    </jx:choose>
+
+  </page:body>
+</page:page>
\ No newline at end of file



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