svn commit: r577177 [8/12] - in /lenya/branches/revolution/1.3.x: ./ src/webapp/ src/webapp/WEB-INF/ src/webapp/lenya/pubs/default/ src/webapp/lenya/pubs/default12/ src/webapp/lenya/pubs/default12/config/ac/ src/webapp/lenya/pubs/default13/ src/webapp/...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/content/search/search-and-results.xsp
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/content/search/search-and-results.xsp?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/content/search/search-and-results.xsp (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/content/search/search-and-results.xsp Wed Sep 19 00:09:42 2007
@@ -0,0 +1,674 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  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: usecase-bxeng.xmap 180171 2005-06-05 23:16:13Z gregor $ -->
+
+<xsp:page language="java"
+  xmlns:xsp="http://apache.org/xsp"
+  xmlns:util="http://apache.org/xsp/util/2.0"
+  xmlns:xsp-request="http://apache.org/xsp/request/2.0"
+>
+  <xsp:structure>
+    <xsp:include>java.io.FileNotFoundException</xsp:include>
+    <xsp:include>java.util.Enumeration</xsp:include>
+    <xsp:include>java.util.HashSet</xsp:include>
+    <xsp:include>java.util.Hashtable</xsp:include>
+    <xsp:include>java.util.Iterator</xsp:include>
+    <xsp:include>java.util.StringTokenizer</xsp:include>
+    <xsp:include>java.util.Vector</xsp:include>
+    <xsp:include>org.apache.avalon.framework.context.ContextException</xsp:include>
+    <xsp:include>org.apache.avalon.framework.component.ComponentException</xsp:include>
+    <xsp:include>org.apache.cocoon.environment.Session</xsp:include>
+    <xsp:include>org.apache.lenya.ac.Accreditable</xsp:include>
+    <xsp:include>org.apache.lenya.ac.Identifiable</xsp:include>
+    <xsp:include>org.apache.lenya.ac.Identity</xsp:include>
+    <xsp:include>org.apache.lenya.lucene.ReTokenizeFile</xsp:include>
+    <xsp:include>org.apache.lenya.lucene.Publication</xsp:include>
+    <xsp:include>org.apache.lucene.analysis.Analyzer</xsp:include>
+    <xsp:include>org.apache.lucene.analysis.standard.StandardAnalyzer</xsp:include>
+    <xsp:include>org.apache.lucene.document.Document</xsp:include>
+    <xsp:include>org.apache.lucene.document.Field</xsp:include>
+    <xsp:include>org.apache.lucene.queryParser.QueryParser</xsp:include>
+    <xsp:include>org.apache.lucene.queryParser.MultiFieldQueryParser</xsp:include>
+    <xsp:include>org.apache.lucene.search.Hits</xsp:include>
+    <xsp:include>org.apache.lucene.search.IndexSearcher</xsp:include>
+    <xsp:include>org.apache.lucene.search.Query</xsp:include>
+    <xsp:include>org.apache.lucene.search.Searcher</xsp:include>
+    <xsp:include>org.apache.lucene.search.Sort</xsp:include>
+  </xsp:structure>
+
+<xsp:logic>
+    File workDir = null;
+    File indexDir=null;
+    File excerptDir=null;
+    String[] fields={"contents","title"};
+    String field = "contents";
+    Vector roles = new Vector();
+    Hashtable protectedAreas = new Hashtable();
+
+    /** 
+     * Contextualize this class 
+     */
+    public void contextualize(Context context) throws ContextException {
+      super.contextualize( context );
+      workDir = (File) context.get(Constants.CONTEXT_WORK_DIR);
+    }
+
+    /**
+     * Search index
+     */
+    Hits search(String query_string, String publication_id, String sortField, boolean sortReverse) throws ProcessingException, IOException{
+
+       // Load roles
+       Session session = request.getSession(true);
+       if(session != null){
+          Identity id=(Identity) session.getAttribute("org.apache.lenya.ac.Identity");
+          if(id != null){
+             Identifiable[] ids = id.getIdentifiables();
+             Accreditable[] acs =id.getAccreditables();
+             for (int ai = 0; ai &lt; acs.length; ai++) {
+                boolean found = false;
+                for(int i = 0; i &lt; ids.length; i++){
+                   if(ids[i].toString().equals(acs[ai].toString())){ found = true;}
+                }
+                if(!found){
+                   roles.add(acs[ai].toString());
+                }
+             }
+          }  // id
+       }  // session
+      hits=null;
+      try{
+        Searcher searcher=new IndexSearcher(indexDir.getAbsolutePath());
+        Analyzer l_analyzer=new StandardAnalyzer();
+
+        QueryParser l_queryParser = new QueryParser(field,l_analyzer); // Single field
+        l_queryParser.setOperator(QueryParser.DEFAULT_OPERATOR_AND);
+
+        getLogger().debug(query_string);
+        Query l_query = l_queryParser.parse(query_string); // Single field
+
+        if (sortField != null) {
+          Sort sort = new Sort(sortField, sortReverse);
+          hits = searcher.search(l_query, sort);
+        }else{
+          hits = searcher.search(l_query);
+        }
+        if(hits != null){
+          return hits;
+        }
+      }catch(IOException e){
+        System.err.println(".search(): EXCEPTION: "+e);
+        throw e;
+      }catch(Exception e){
+        System.err.println(".search(): EXCEPTION: "+e);
+      }
+      return null;
+   }
+
+   /**
+    *
+    */
+   String getPercent(float score){
+     return ""+java.lang.Math.round(score*100.0);
+   }
+
+   Hits hits;
+   int hits_length=-1;
+
+   String[] words=new String[0];
+
+   int hitsPerPage;
+   int maxPages;
+   int excerptOffset;
+   int start;
+   int end;
+
+</xsp:logic>
+
+  <search-and-results>
+<xsp:logic>
+    // ***********************
+    // *** Protected Areas ***
+    // ***********************
+    // DEFINITION: protectedAreas.add("/UrlStart", "group,group");  
+    // UrlStart begins with / after .../live.
+    // There are no spaces between groups and commas.
+    protectedAreas.put("/employee", "employee");
+
+    // Get sitemap path
+    org.apache.excalibur.source.Source input_source=this.resolver.resolveURI("");
+    String sitemapPath=input_source.getURI();
+    sitemapPath=sitemapPath.substring(5); // Remove "file:" protocol
+
+    // Read parameters from sitemap
+    String numberOfPubs = parameters.getParameter("number-of-pubs", "1");
+    Publication[] pubs = new Publication[Integer.parseInt(numberOfPubs)];
+    for(int i = 0;i &lt; pubs.length;i++) {
+      pubs[i] = new Publication();
+      pubs[i].id = parameters.getParameter("pub"+i+"-id","@ID@");
+      pubs[i].name = parameters.getParameter("pub"+i+"-name","@NAME@");
+      pubs[i].indexDir = parameters.getParameter("pub"+i+"-index-dir","@INDEX-DIR@");
+      pubs[i].searchFields = parameters.getParameter("pub"+i+"-search-fields","title,contents");
+      pubs[i].excerptDir = parameters.getParameter("pub"+i+"-excerpt-dir","@EXCERPT-DIR@");
+      pubs[i].prefix = parameters.getParameter("pub"+i+"-prefix","@PREFIX@");
+    }
+    String param_hits_per_page = parameters.getParameter("max-hits-per-page","13");
+    hitsPerPage = Integer.parseInt(param_hits_per_page);
+    String param_max_pages = parameters.getParameter("max-pages","5");
+    maxPages = Integer.parseInt(param_max_pages);
+    String param_excerpt_offset = parameters.getParameter("excerpt-offset","100");
+    excerptOffset = Integer.parseInt(param_excerpt_offset);
+
+    // Read parameters from query string
+    String urlQuerystring = <xsp-request:get-query-string />;
+    String query = <xsp-request:get-parameter name="query" default=""/>;
+    String publication_id = <xsp-request:get-parameter name="publication-id" default="phlburg"/>;
+    String sortBy = <xsp-request:get-parameter name="sortBy" default="score"/>;
+    String sortReverse = <xsp-request:get-parameter name="sortReverse" default="false"/>;
+
+    String language = "";
+    StringTokenizer qsTokens = new StringTokenizer(urlQuerystring, "&amp;&#061;", true);
+    String token = "";
+    HashSet languageSet = new HashSet();
+    if(qsTokens.hasMoreTokens()){ token = qsTokens.nextToken(); }
+    while(qsTokens.hasMoreTokens()){
+       if(token.equalsIgnoreCase("language")){ 
+          token = qsTokens.nextToken();
+          if(token.equals("=") &amp;&amp; qsTokens.hasMoreTokens()){
+             languageSet.add(qsTokens.nextToken());
+          }
+       }else{
+          token = qsTokens.nextToken();
+       }
+    }
+    Iterator languageSetItems = languageSet.iterator();
+    if(languageSetItems.hasNext()){ language = languageSetItems.next().toString(); }
+    while(languageSetItems.hasNext()){ language += "," + languageSetItems.next().toString(); }
+    if(language.length() == 0) language = "en";
+
+    String startString = <xsp-request:get-parameter name="start" default="1"/>;
+    String endString = <xsp-request:get-parameter name="end" default="10"/>;
+    start=new Integer(startString).intValue();
+    if(endString == null){
+      end=hitsPerPage;
+    }else{
+      end=new Integer(endString).intValue();
+    }
+
+    // Find the number of the selected publication
+    int whichPublication=0;
+    for (int i = 0;i &lt; pubs.length;i++) {
+      if (pubs[i].id.equals(publication_id)) {
+        whichPublication = i;
+      }
+    }
+
+    // Get all search fields
+    Vector twords = null;
+    Vector myFields = new Vector();
+    Enumeration parameterNames = request.getParameterNames();
+    while(parameterNames.hasMoreElements()){
+       String parameterName=(String)parameterNames.nextElement();
+       String value=request.getParameter(parameterName);
+
+       if (parameterName.indexOf(".fields") > 0) { // looking for field parameters
+          StringTokenizer st = new StringTokenizer(parameterName, ".");
+          int length = st.countTokens();
+          if(st.hasMoreTokens()){
+             String fieldPublicationId = st.nextToken();
+             if(st.hasMoreTokens()){
+                if(fieldPublicationId.equals(publication_id) || fieldPublicationId.equals("dummy-index-id")) {
+                   st.nextToken(); // Ignore "fields" token
+                   if(length == 2) { // radio or select
+                      myFields.addElement(value);
+                   }else if (length == 3) { // checkbox
+                      myFields.addElement(st.nextToken());
+                   }else{
+                      // something is wrong
+                   }
+                }
+             }
+          }
+       }
+    }
+    if(myFields.size() > 0) {
+       field = (String)myFields.elementAt(0);
+       fields = new String[myFields.size()];
+       for(int i = 0; i &lt; myFields.size(); i++) {
+          fields[i] = (String)myFields.elementAt(i);
+       }
+     }
+     // Set index and excerpt dir
+     String param_index_dir=pubs[whichPublication].indexDir;
+     if(param_index_dir.charAt(0) == '/'){
+        indexDir=new File(param_index_dir);
+        }
+     else{
+        indexDir=new File(sitemapPath+File.separator+param_index_dir);
+        }
+     String param_excerpt_dir=pubs[whichPublication].excerptDir;
+     if(param_excerpt_dir.charAt(0) == '/'){
+        excerptDir=new File(param_excerpt_dir);
+     }else{
+        excerptDir=new File(sitemapPath+File.separator+param_excerpt_dir);
+     }
+</xsp:logic>
+    <configuration><xsp:attribute name="checked-pid"><xsp:expr>publication_id</xsp:expr></xsp:attribute>
+      <number-of-publications><xsp:expr>numberOfPubs</xsp:expr></number-of-publications>
+
+<xsp:logic>
+      for(int i = 0;i &lt; pubs.length;i++) {
+</xsp:logic>
+         <publication><xsp:attribute name="pid"><xsp:expr>pubs[i].id</xsp:expr></xsp:attribute>
+           <name><xsp:expr>pubs[i].name</xsp:expr></name>
+           <index-dir><xsp:expr>pubs[i].indexDir</xsp:expr></index-dir>
+           <search-fields>
+<xsp:logic>
+               String[] searchFields = pubs[i].getFields();
+               if (searchFields != null) {
+                   for (int k = 0; k &lt; searchFields.length; k++) {
+                       <field><xsp:expr>searchFields[k]</xsp:expr></field>
+                   }
+               } else {
+</xsp:logic>
+                   <xsp:content><xsp:expr>pubs[i].searchFields</xsp:expr></xsp:content><exception>.getFields() returned null</exception>
+<xsp:logic>
+               }
+</xsp:logic>
+           </search-fields>
+           <excerpt-dir><xsp:expr>pubs[i].excerptDir</xsp:expr></excerpt-dir>
+           <prefix><xsp:expr>pubs[i].prefix</xsp:expr></prefix>
+         </publication>
+<xsp:logic>
+      }
+</xsp:logic>
+      <hits-per-page><xsp:expr>hitsPerPage</xsp:expr></hits-per-page>
+      <max-pages><xsp:expr>maxPages</xsp:expr></max-pages>
+      <excerpt-offset><xsp:expr>excerptOffset</xsp:expr></excerpt-offset>
+    </configuration>
+
+<!-- Search Results -->
+      <search>
+<xsp:logic>
+          Enumeration para_names = request.getParameterNames();
+          if(para_names.hasMoreElements()){
+</xsp:logic>
+            <request-parameters>
+<xsp:logic>
+              while(para_names.hasMoreElements()){
+                String para_name=(String)para_names.nextElement();
+                String para_value=request.getParameter(para_name);
+</xsp:logic>
+                <parameter><xsp:attribute name="name"><xsp:expr>para_name</xsp:expr></xsp:attribute><xsp:attribute name="value"><xsp:expr>para_value</xsp:expr></xsp:attribute></parameter>
+                <xsp:element><xsp:param name="name"><xsp:expr>para_name</xsp:expr></xsp:param><xsp:expr>para_value</xsp:expr></xsp:element>
+<xsp:logic>
+                }
+</xsp:logic>
+            </request-parameters>
+<xsp:logic>
+            }
+          if(query != null &amp;&amp; query.length() != 0 &amp;&amp; publication_id != null &amp;&amp; publication_id.length() > 0){
+
+            try {
+                if (sortBy.equals("score")) {
+                   hits = search(query, publication_id, null, false);
+                } else {
+                   if (sortReverse.equals("true")) {
+                       hits = search(query, publication_id, sortBy, true);
+                   } else {
+                       hits = search(query, publication_id, sortBy, false);
+                   }
+                }
+            } catch(Exception e) {
+</xsp:logic>
+                <exception><xsp:expr>e.toString()</xsp:expr></exception>
+<xsp:logic>
+            }
+            if(hits != null){
+              hits_length=hits.length();
+              }
+            else{
+              hits_length=-1;
+              hits=null;
+              }
+</xsp:logic>
+            <publication-id><xsp:expr>publication_id</xsp:expr></publication-id>
+            <publication-name><xsp:expr>pubs[whichPublication].name</xsp:expr></publication-name>
+            <publication-prefix><xsp:expr>pubs[whichPublication].prefix</xsp:expr></publication-prefix>
+            <sort-by><xsp:expr>sortBy</xsp:expr></sort-by>
+            <query><xsp:expr>query</xsp:expr></query>
+<xsp:logic>
+            if(query != null){
+              twords = new Vector();
+</xsp:logic>
+              <words>
+<xsp:logic>
+              StringTokenizer st=new StringTokenizer(query," ");
+              while(st.hasMoreTokens()){
+                String word=(String)st.nextElement();
+                if(!(word.equalsIgnoreCase("OR") || word.equalsIgnoreCase("AND"))){
+                  <word><xsp:expr>word</xsp:expr></word>
+                  twords.addElement(word);
+                  }
+                }
+              words=new String[twords.size()];
+              for(int i=0;i&lt;twords.size();i++){
+                words[i]=(String)twords.elementAt(i);
+              }
+</xsp:logic>
+              </words>
+<xsp:logic>
+              }
+</xsp:logic>
+            <start><xsp:expr>start</xsp:expr></start>
+            <end><xsp:expr>end</xsp:expr></end>
+            <language><xsp:expr>language</xsp:expr></language>
+            <fields>
+<xsp:logic>
+              for (int i = 0; i &lt; fields.length; i++) {
+                <field><xsp:expr>fields[i]</xsp:expr></field>
+              }
+</xsp:logic>
+            </fields>
+<xsp:logic>
+      try{
+        Analyzer ll_analyzer=new StandardAnalyzer();
+        QueryParser queryParser = new QueryParser(field,ll_analyzer);
+        //MultiFieldQueryParser queryParser = new MultiFieldQueryParser("contents",ll_analyzer);
+        queryParser.setOperator(QueryParser.DEFAULT_OPERATOR_AND);
+        Query ll_query = queryParser.parse(query);
+        //Query ll_query = queryParser.parse(query,fields,ll_analyzer);
+        <query><xsp:expr>ll_query.toString("contents")</xsp:expr></query>
+        }
+      catch(Exception e){
+        <exception><xsp:expr>e.toString()</xsp:expr></exception>
+        }
+            }
+          else{
+            hits_length=-1;
+            hits=null;
+            }
+</xsp:logic>
+      </search>
+<xsp:logic>
+            if(hits != null){
+    int validCount = 0;  //number of valid results
+</xsp:logic>
+        <results>
+<xsp:logic>
+       if(hits_length &gt; 0){
+</xsp:logic>
+     <hits>
+<xsp:logic>
+// i = index of result.  validCount = count valid results.
+for (int i = 0; (i &lt; hits.length()); i++) {
+                Document ldoc=hits.doc(i);
+                Enumeration lfields = ldoc.fields();
+                String lpath=ldoc.get("path");
+
+                String lurl=ldoc.get("url");
+                String ltitle=ldoc.get("title");
+                String mime_type=ldoc.get("mime-type");
+                String docLanguage = "";
+                if(lpath != null){
+</xsp:logic>
+                  <hit>
+                    <score><xsp:attribute name="percent"><xsp:expr>getPercent(hits.score(i))</xsp:expr></xsp:attribute>
+                    <xsp:expr>hits.score(i)</xsp:expr></score> 
+                    <path><xsp:expr>lpath</xsp:expr></path>
+                  </hit>
+<xsp:logic>
+                }
+                else if(lurl != null){
+                   // Check Language
+                   // This also filters sitetree.xml since it has no language.
+                   docLanguage = "";
+                   while (lfields.hasMoreElements()) {
+                      Field lfield = (Field)lfields.nextElement();
+			    if(0 == lfield.name().compareTo("language")){
+                         docLanguage = lfield.stringValue();
+			    }
+                   }
+</xsp:logic>
+<language><xsp:expr>language</xsp:expr></language>
+<language-check><xsp:attribute name="doc"><xsp:expr>docLanguage</xsp:expr></xsp:attribute></language-check>
+<xsp:logic>
+                   if((docLanguage.length() > 0) &amp;&amp; (language.indexOf(docLanguage) != -1)){
+</xsp:logic>
+<language-yes/>
+<xsp:logic>
+                      // Get URL parts
+                      String parent = "";
+                      String filename = "";
+                      String querystring = "";
+                      if(lurl.lastIndexOf("/") &gt; -1) {
+                          parent = lurl.substring(0,lurl.lastIndexOf("/"));
+                          filename = lurl.substring(lurl.lastIndexOf("/")+1);
+                      }
+                      if(lurl.indexOf("?") &gt; -1) {
+                          querystring = lurl.substring(lurl.indexOf("?"));
+                      }
+                      // Check Restricted
+                      boolean restricted = false;
+                      // Get list of restricted prefixes and check against roles.
+                      Enumeration protectedArea = protectedAreas.keys();
+                      while((!restricted) &amp;&amp; protectedArea.hasMoreElements()){
+                         String startUrl = (String) protectedArea.nextElement();
+                         if(parent.startsWith(startUrl)){
+                            StringTokenizer rolesAllowed = new StringTokenizer((String)protectedAreas.get(startUrl), ",");
+                            restricted = true; 
+                            while(rolesAllowed.hasMoreElements()){
+                      // Check roles
+                               if(roles.contains(rolesAllowed.nextElement())){
+                                  restricted = false;
+                               }
+                            }
+                         }
+                      }
+                      if(!restricted){
+                         // Build hit
+                         validCount++;
+                         if((validCount &gt;= start) &amp;&amp; (validCount &lt;= end)){
+</xsp:logic>
+                  <hit><xsp:attribute name="pos"><xsp:expr>validCount</xsp:expr></xsp:attribute>
+                    <fields>
+<xsp:logic>
+                    lfields = ldoc.fields();
+                    int first = -1;
+                    while (lfields.hasMoreElements()) {
+                       Field lfield = (Field)lfields.nextElement();
+                       String slfield = lfield.stringValue();
+
+                       if(lfield.name().equals("htmlbody")){
+                          String tmphtmlbody = slfield;
+                          String upperhtmlbody = tmphtmlbody.toUpperCase();
+                          if(twords != null){
+                             Enumeration twordsE = twords.elements();
+                             while(twordsE.hasMoreElements()){
+                                int last = 0;
+                                String word = twordsE.nextElement().toString();
+                                String upperword = word.toUpperCase();
+                                int wordLen = word.length();
+                                StringBuffer sb = new StringBuffer();
+                                int current = upperhtmlbody.indexOf(upperword);
+                                if((current &lt; first) || (first == -1)) first = current;
+                                while(current &gt; last){
+                                   sb.append(tmphtmlbody.substring(last, current));
+                                   sb.append("~").append(tmphtmlbody.substring(current, current + wordLen)).append("~");
+                                   last = current + wordLen;
+                                   current = upperhtmlbody.indexOf(upperword, last);
+                                }
+                                sb.append(tmphtmlbody.substring(last));
+                                tmphtmlbody = sb.toString();
+                                upperhtmlbody = tmphtmlbody.toUpperCase();
+                             }
+                          }
+                          if(slfield.length() &gt; excerptOffset){
+                             int start = 0;
+                             int end = excerptOffset;
+                             int half = excerptOffset/2;
+                             if(first &lt; half){
+                                end = tmphtmlbody.indexOf(' ', excerptOffset);
+                             }else{
+                                start = tmphtmlbody.indexOf(' ', first - half);
+                                end = tmphtmlbody.indexOf(' ', start + excerptOffset);
+                             }
+                             tmphtmlbody = tmphtmlbody.substring(start, end);
+                          }
+                          StringTokenizer tokens = new StringTokenizer(tmphtmlbody, "~");
+                          boolean needCloseHtmlBody = false;
+                          if(tokens.hasMoreTokens()){
+                          needCloseHtmlBody = true;
+</xsp:logic>
+                             <htmlbody><xsp:expr>tokens.nextToken()</xsp:expr>
+<xsp:logic>
+                          }
+                          while(tokens.hasMoreTokens()){
+</xsp:logic>
+                             <word><xsp:expr>tokens.nextToken()</xsp:expr></word>
+<xsp:logic>
+                             if(tokens.hasMoreTokens()){
+</xsp:logic>
+                                <xsp:expr>tokens.nextToken()</xsp:expr>
+<xsp:logic>
+                             }
+                          }
+                          if(needCloseHtmlBody){
+</xsp:logic>
+                             </htmlbody>
+<xsp:logic>
+                          }
+                       }else{
+
+</xsp:logic>
+                        <xsp:element><xsp:param name="name"><xsp:expr>lfield.name()</xsp:expr></xsp:param><xsp:expr>slfield</xsp:expr></xsp:element>
+<xsp:logic>
+                       }
+                    }
+
+</xsp:logic>
+                    </fields>
+                    <score><xsp:attribute name="percent"><xsp:expr>getPercent(hits.score(i))</xsp:expr></xsp:attribute><xsp:expr>hits.score(i)</xsp:expr></score> 
+                    <uri>
+                      <xsp:attribute name="parent"><xsp:expr>parent</xsp:expr></xsp:attribute>
+                      <xsp:attribute name="filename"><xsp:expr>filename</xsp:expr></xsp:attribute>
+                      <xsp:attribute name="querystring"><xsp:expr>querystring</xsp:expr></xsp:attribute>
+                      <xsp:expr>lurl</xsp:expr>
+                    </uri>
+<xsp:logic>
+                    File excerptFile=new File(excerptDir+File.separator+lurl);
+                    if((ltitle != null) &amp;&amp; (ltitle.length() &gt; 0)){
+                      <title><xsp:expr>ltitle</xsp:expr></title>
+                    }else{
+                      <title><xsp:expr>excerptFile.getName()</xsp:expr></title>
+                      <no-title/>
+                    }
+                    if((mime_type != null) &amp;&amp; (mime_type.length() &gt; 0)){
+                      <mime-type><xsp:expr>mime_type</xsp:expr></mime-type>
+                    }else{
+                      <no-mime-type/>
+                    }
+                    try{
+                      ReTokenizeFile rtf=new ReTokenizeFile();
+                      rtf.setOffset(excerptOffset);
+                      String excerpt=rtf.getExcerpt(excerptFile,words);
+                      if(excerpt != null){
+                        excerpt=rtf.emphasizeAsXML(rtf.tidy(excerpt),words);
+                        <util:include-expr><util:expr><xsp:expr>excerpt</xsp:expr></util:expr></util:include-expr>
+                      }else{
+                        throw new Exception("excerpt == null. Maybe file does not contain the words!");
+                        }
+                      }
+                    catch(FileNotFoundException e){
+</xsp:logic>
+                      <no-excerpt>
+                      <file><xsp:attribute name="src"><xsp:expr>excerptFile.getAbsolutePath()+" "+words[0]+" "+e</xsp:expr></xsp:attribute></file>
+                      </no-excerpt>
+<xsp:logic>
+                      }
+                    catch(Exception e){
+                      <excerpt-exception><xsp:expr>""+e</xsp:expr></excerpt-exception>
+                      }
+</xsp:logic>
+                  </hit>
+<xsp:logic>
+                 }
+} // END - Within range (start-end)
+} // END - Check Restricted
+} // END - Check Language
+             }
+</xsp:logic>
+     </hits>
+<xsp:logic>
+        }else{
+</xsp:logic>
+       <no-hits/>
+<xsp:logic>
+        }
+             int number_of_pages=(validCount/hitsPerPage);
+             if(number_of_pages*hitsPerPage != validCount){
+               number_of_pages=number_of_pages+1;
+               }
+             if(number_of_pages &gt; maxPages){
+               number_of_pages=maxPages;
+               }
+             if(validCount == 0){
+               number_of_pages=0;
+               <no-pages/>
+               }
+             else{
+</xsp:logic>
+             <pages>
+<xsp:logic>
+             for(int i=0;i&lt;number_of_pages;i++){
+               int pstart=i*hitsPerPage+1;
+               int pend=(i+1)*hitsPerPage;
+               if(validCount &lt; pend){
+                 pend=validCount;
+                 }
+               String type="other";
+               if(pstart == start){
+                 type="current";
+                 }
+               else if(pstart == start-hitsPerPage){
+                 type="previous";
+                 }
+               else if(pstart == start+hitsPerPage){
+                 type="next";
+                 }
+</xsp:logic>
+               <page>
+                 <xsp:attribute name="start"><xsp:expr>pstart</xsp:expr></xsp:attribute>
+                 <xsp:attribute name="end"><xsp:expr>pend</xsp:expr></xsp:attribute>
+                 <xsp:attribute name="type"><xsp:expr>type</xsp:expr></xsp:attribute>
+               </page>
+<xsp:logic>
+              }
+</xsp:logic>
+             </pages>
+<xsp:logic>
+             }
+</xsp:logic>
+<total-hits><xsp:expr>validCount</xsp:expr></total-hits>
+        </results>
+<xsp:logic>
+            }
+</xsp:logic>
+   </search-and-results>
+</xsp:page>
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   
+   Copyright 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: cmsui.xml 169213 2005-05-09 01:32:49Z gregor $
+   
+-->
+
+<catalogue xml:lang="en">
+ 
+  <message key="default.createdoc.idtaken">The ID you've entered is already taken. Please choose another one.</message>
+  <message key="default.createdoc.visibleinnavigation">Document visible in navigation:</message>
+ 
+  <message key="Create new language version">Create new language version</message>
+  <message key="New language for existing Document">New language for existing Document</message>
+  <message key="default.createdoc.info.all-language-versions-exists">There are already versions of this document for all languages.</message>
+
+  <message key="last_published">Last Published</message>
+</catalogue>

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_de.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_de.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_de.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_de.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   
+   Copyright 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: cmsui_de.xml 169213 2005-05-09 01:32:49Z gregor $ 
+   
+-->
+
+<catalogue xml:lang="de">
+
+  <message key="default.doc.create.idtaken">Die eingebene ID ist schon vergeben. Bitte wä;hlen Sie eine andere ID.</message>
+  <message key="default.createdoc.visibleinnavigation">Dokument sichtbar in der Navigation:</message>
+
+  <message key="Create new language version">Neue Sprachversion anlegen</message>
+  <message key="New language for existing Document">Neue Sprachversion für existierendes Dokument anlegen</message>
+  <message key="default.createdoc.info.all-language-versions-exists">Das Dokument existiert bereits in allen notwendigen Sprachen.</message>
+  
+  <message key="last_published">Letzte Aktualisierung</message>
+</catalogue>
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_es.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_es.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_es.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_es.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+   Copyright 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: cmsui_es.xml 209982 2005-07-10 02:44:49Z antonio $
+
+   @translators Salvador Cobrero <salvador_cobrero_jimenez at dmr-consulting dot com>
+
+-->
+
+<catalogue xml:lang="es">
+
+  <message key="default.createdoc.idtaken">El ID introducido ya existe. Por favor, elija otro.</message>
+  <message key="default.createdoc.visibleinnavigation">Documento visible en navegación:</message>
+
+  <message key="Create new language version">Crear nueva versión de idioma</message>
+  <message key="New language for existing Document">Nuevo idioma para el documento existente</message>
+  <message key="default.createdoc.info.all-language-versions-exists">Ya existen versiones de este documento para todos los idiomas.</message>
+
+  <message key="last_published">Última publicación</message>
+</catalogue>
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_fr.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_fr.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_fr.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_fr.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   
+   Copyright 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: cmsui_fr.xml 153091 2005-02-09 17:27:19Z edith $
+   
+   @translators Olivier Lange <wire at petit-atelier dot ch>
+   
+-->
+
+<catalogue xml:lang="fr">
+
+  <message key="default.createdoc.idtaken">L'identifiant (ID) que vous avez choisi est déjà utilisé. Veuillez en choisir un autre.</message>
+  <message key="Create new language version">Créer une nouvelle traduction</message>
+  <message key="New language for existing Document">Nouvelle traduction d'un document existant</message>
+  <message key="default.createdoc.info.all-language-versions-exists">Les traductions de ce document existent déjà dans toutes les langues.</message>
+  <message key="last_published">Mise à jour</message>
+  
+</catalogue>

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_it.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_it.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_it.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_it.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   
+   Copyright 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: cmsui_it.xml 413285 2006-06-10 11:10:23Z thorsten $
+   @translators Giampaolo Trapasso  <trapo at trapo dot it>
+-->
+<catalogue xml:lang="it">
+	<message key="default.createdoc.idtaken">L'ID scelto è già utilizzato. Scegliere un altro ID.</message>
+	<message key="Create new language version">Crea nuova lingua</message>
+	<message key="New language for existing Document">Nuova lingua per un Documento esistente</message>
+	<message key="default.createdoc.info.all-language-versions-exists">Esistono già versioni di questo documento per tutte le lingue.</message>
+</catalogue>

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_pt.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_pt.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_pt.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_pt.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2005 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: cmsui_pt.xml 111676 2005-06-15 23:50:43Z gregor $
+
+   @translators Rolando Isidoro <rli at uninova dot pt>
+
+-->
+
+<catalogue xml:lang="pt">
+
+  <message key="default.createdoc.idtaken">O ID introduzido já existe. Por favor introduza outro.</message>
+ 
+  <message key="Create new language version">Criar nova versão de idioma</message>
+  <message key="New language for existing Document">Novo idioma para o Documento existente</message>
+  <message key="default.createdoc.info.all-language-versions-exists">Já existem versões deste documento em todos os idiomas.</message>
+
+</catalogue>
+

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_ru.xml
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_ru.xml?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_ru.xml (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/resources/i18n/cmsui_ru.xml Wed Sep 19 00:09:42 2007
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   
+   Copyright 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: cmsui.xml 153091 2005-02-09 17:27:19Z edith $
+   
+-->
+
+<catalogue xml:lang="ru">
+ 
+  <message key="default.createdoc.idtaken">Введённый идентификатор занят. Выберете дьругой, пожалуйста.</message>
+  <message key="Create new language version">Создать версию на другом языке</message>
+  <message key="New language for existing Document">Перевести существующий документ</message>
+  <message key="default.createdoc.info.all-language-versions-exists">Версии этого документа уже есть на всех языках.</message>
+
+  <message key="last_published">Последняя публикация</message>
+</catalogue>
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create-language.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create-language.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create-language.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create-language.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,211 @@
+<?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: create-language.xsl 169217 2005-05-09 02:04:30Z gregor $ -->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns="http://www.w3.org/1999/xhtml">
+
+  <xsl:output version="1.0" indent="yes" encoding="UTF-8"/>
+
+  <xsl:param name="lenya.usecase" select="'create-language'"/>
+  <xsl:param name="contextprefix"/>
+
+  <xsl:template match="/">
+    <page:page xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0">
+      <page:title>
+        <i18n:text>Create new language version</i18n:text>
+      </page:title>
+      <page:body>
+        <xsl:apply-templates/>
+      </page:body>
+    </page:page>
+  </xsl:template>
+
+  <xsl:template match="parent-child">
+
+    <xsl:apply-templates select="exception"/>
+
+    <xsl:if test="count(//dc:language) = 0">
+      <div class="lenya-box">
+        <div class="lenya-box-title">
+          <i18n:text>New language for existing Document</i18n:text>
+        </div>
+        <div class="lenya-box-body">
+          <form method="GET" action="{/parent-child/referer}">
+            <table class="lenya-table-noborder">
+              <tr>
+                <td>
+                  <p>
+                    <i18n:text key="default.createdoc.info.all-language-versions-exists"/>
+                  </p>
+                </td>
+              </tr>
+              <tr>
+                <td>
+                  <input i18n:attr="value" type="button" onClick="location.href='{/parent-child/referer}';" value="Cancel"/>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </div>
+      </div>
+    </xsl:if>
+
+    <xsl:if test="not(exception) and count(//dc:language) &gt; 0">
+      <div class="lenya-box">
+        <div class="lenya-box-title">
+          <i18n:text>New language for existing Document</i18n:text>
+        </div>
+        <div class="lenya-box-body">
+          <script type="text/javascript" src="{$contextprefix}/lenya/javascript/validation.js">&#160;</script>
+          <script Language="JavaScript">
+function validateForm(theForm)
+{
+  if (!validRequired(theForm["properties.create.child-name"],"Navigation Title"))
+    return false;
+
+  if (!validRequired(theForm["properties.create.title"],"Document Title"))
+    return false;
+  
+  return true;
+}
+          </script>
+          <form method="GET"
+              action="{/parent-child/referer}" onsubmit="return validateForm(this)">
+            <input type="hidden" name="lenya.usecase" value="{$lenya.usecase}"/>
+            <input type="hidden" name="lenya.step" value="create"/>
+            <input type="hidden" name="properties.create.document-id" value="{/parent-child/document-id}"/>
+            <input type="hidden" name="properties.create.old.language" value="{/parent-child/document-language}"/>
+            <input type="hidden" name="properties.create.userid" value="{/parent-child/user-id}"/>
+            <input type="hidden" name="properties.create.ipaddress" value="{/parent-child/ip-address}"/>
+            <table class="lenya-table-noborder">
+              <tr>
+                <td class="lenya-form-caption">
+                  <i18n:text>Document ID</i18n:text>: </td>
+                <td>
+                  <xsl:value-of select="/parent-child/document-id"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.child-name">
+                  <i18n:text>Navigation Title</i18n:text>*: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.child-name"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.new.language">
+                  <i18n:text>Language</i18n:text>: </label></td>
+                <td>
+                  <select class="lenya-form-element" name="properties.create.new.language">
+                    <xsl:apply-templates select="dc:languages"/>
+                  </select>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.creator">
+                  <i18n:text>Creator</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="hidden" name="properties.create.creator" value="{/parent-child/dc:creator}"/>
+                  <xsl:value-of select="/parent-child/dc:creator"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.subject">
+                  <i18n:text>Subject</i18n:text>:</label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.subject"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.publisher">
+                  <i18n:text>Publisher</i18n:text>:</label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.publisher" value="{/parent-child/dc:publisher}"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.date">
+                  <i18n:text>Date</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="hidden" name="properties.create.date" value="{/parent-child/dc:date}"/>
+                  <xsl:value-of select="/parent-child/dc:date"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-form-caption"><label for="properties.create.rights">
+                  <i18n:text>Rights</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.rights" value="{/parent-child/dc:rights}"/>
+                </td>
+              </tr>
+              <tr>
+                <td>* <i18n:text>required fields</i18n:text>
+                </td>
+              </tr>
+              <tr>
+                <td/>
+                <td>
+                  <input i18n:attr="value" type="submit" value="Create"/>&#160;
+                  <input i18n:attr="value" type="button" onClick="location.href='{/parent-child/referer}';" value="Cancel"/>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </div>
+      </div>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="dc:languages">
+    <xsl:for-each select="dc:language">
+      <option>
+        <xsl:value-of select="."/>
+      </option>
+    </xsl:for-each>
+  </xsl:template>
+
+
+  <xsl:template match="exception">
+    <font color="red">
+      <i18n:text>EXCEPTION</i18n:text>
+    </font>
+    <br />
+    <a href="{../referer}">
+      <i18n:text>Back</i18n:text>
+    </a>
+    <br />
+    <p>
+      <i18n:text>Please check the following possible causes of the exception</i18n:text>
+      <ol>
+        <li>
+          <i18n:text key="exception.cause.createdoc.whitespace-in-id"/>
+        </li>
+        <li>
+          <i18n:text key="exception.cause.createdoc.id-in-use"/>
+        </li>
+      </ol>
+      <i18n:text>Exception handling will be improved in the near future</i18n:text>
+    </p>
+  </xsl:template>
+  
+
+</xsl:stylesheet>  

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/authoring/create.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,208 @@
+<?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: create.xsl 169217 2005-05-09 02:04:30Z gregor $ -->
+
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns="http://www.w3.org/1999/xhtml">
+
+  <xsl:output version="1.0" indent="yes" encoding="ISO-8859-1"/>
+
+  <xsl:param name="status"/>
+  <xsl:param name="lenya.usecase" select="'create'"/>
+  <xsl:param name="contextprefix"/>
+
+  <xsl:template match="/">
+    <page:page xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0">
+      <page:title>
+        <i18n:text>New Document</i18n:text>
+      </page:title>
+      <page:body>
+        <xsl:apply-templates/>
+      </page:body>
+    </page:page>
+  </xsl:template>
+
+  <xsl:template match="parent-child">
+
+    <xsl:apply-templates select="exception"/>
+
+    <xsl:if test="not(exception)">
+      <div class="lenya-box">
+        <div class="lenya-box-title">
+          <i18n:text>New Document</i18n:text>
+        </div>
+        <div class="lenya-box-body">
+          <script type="text/javascript" src="{$contextprefix}/lenya/javascript/validation.js">&#160;</script>
+          <script Language="JavaScript">
+function validateForm(theForm)
+{
+  if (!validContent(theForm["properties.create.child-id"],"Document ID"))
+    return false;
+
+  if (!validRequired(theForm["properties.create.child-id"],"Document ID"))
+    return false;
+
+  if (!validRequired(theForm["properties.create.child-name"],"Navigation Title"))
+    return false;
+
+  if (!validRequired(theForm["properties.create.language"],"Language"))
+    return false;
+
+  return true;
+}
+          </script>
+
+          <form method="GET"
+              action="{/parent-child/referer}" onsubmit="return validateForm(this)">
+            <input type="hidden" name="properties.create.parent-id" value="{/parent-child/parentid}"/>
+            <input type="hidden" name="lenya.usecase" value="{$lenya.usecase}"/>
+            <input type="hidden" name="lenya.step" value="create"/>
+            <input type="hidden" name="properties.create.child-type" value="branch"/>
+            <input type="hidden" name="properties.create.doctype" value="{/parent-child/doctype}"/>
+            <table class="lenya-table-noborder">
+              <xsl:if test="$status != ''">
+                <tr>
+                  <td class="lenya-form-message-error" colspan="2">
+                    <i18n:text key="default.createdoc.idtaken"/>
+                  </td>
+                </tr>
+              </xsl:if>
+              <tr>
+                <td class="lenya-entry-caption">
+                  <i18n:text>Parent ID</i18n:text>:</td>
+                <td>
+                  <xsl:value-of select="/parent-child/parentid"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption">
+                  <label for="properties.create.child-id"><i18n:text>Document ID</i18n:text>*: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.child-id"/>
+                  <br/> (<i18n:text>No whitespace, no special characters</i18n:text>)</td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption">
+                  <label for="properties.create.child-name"><i18n:text>Navigation Title</i18n:text>*: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.child-name"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.visible"><i18n:text>default.createdoc.visibleinnavigation</i18n:text></label></td>
+                <td>
+                  <select class="lenya-form-element" name="properties.create.visible">
+                    <option selected="true" value="yes"><i18n:text>true</i18n:text></option>
+                    <option value="no"><i18n:text>false</i18n:text></option>
+                  </select>
+                </td>
+              </tr>
+              <xsl:apply-templates select="allowedLanguages"/>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.creator"><i18n:text>Creator</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.creator" value="{/parent-child/dc:creator}"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.subject"><i18n:text>Subject</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.subject"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.publisher"><i18n:text>Publisher</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.publisher" value="{/parent-child/dc:publisher}"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.date"><i18n:text>Date</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.date" value="{/parent-child/dc:date}"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption"><label for="properties.create.rights"><i18n:text>Rights</i18n:text>: </label></td>
+                <td>
+                  <input class="lenya-form-element" type="text" name="properties.create.rights"/>
+                </td>
+              </tr>
+              <tr>
+                <td class="lenya-entry-caption">* <i18n:text>required fields</i18n:text>
+                </td>
+              </tr>
+              <tr>
+                <td/>
+                <td>
+                  <input i18n:attr="value" type="submit" value="Create"/>&#160;
+            <input i18n:attr="value" type="button" onClick="location.href='{/parent-child/referer}';" value="Cancel"/>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </div>
+      </div>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="allowedLanguages">
+    <tr>
+      <td class="lenya-entry-caption">
+        <i18n:text>Language</i18n:text>*:</td>
+      <td>
+        <select class="lenya-form-element" name="properties.create.language">
+          <xsl:apply-templates select="allowedLanguage"/>
+        </select>
+      </td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="allowedLanguage">
+    <option value="{.}">
+      <xsl:value-of select="."/>
+    </option>
+  </xsl:template>
+
+  <xsl:template match="exception">
+    <font color="red">
+      <i18n:text>EXCEPTION</i18n:text>
+    </font>
+    <br />
+    <a href="{../referer}">
+      <i18n:text>Back</i18n:text>
+    </a>
+    <br />
+    <p>
+      <i18n:text>Please check the following possible causes of the exception</i18n:text>
+      <ol>
+        <li>
+          <i18n:text key="exception.cause.createdoc.whitespace-in-id"/>
+        </li>
+        <li>
+          <i18n:text key="exception.cause.createdoc.id-in-use"/>
+        </li>
+      </ol>
+      <i18n:text>Exception handling will be improved in the near future</i18n:text>
+    </p>
+  </xsl:template>
+
+</xsl:stylesheet>  

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/homepage.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/homepage.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/homepage.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/homepage.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+  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: xhtml.xsl 42703 2004-03-13 12:57:53Z gregor $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+
+<xsl:import href="xhtml.xsl"/>
+
+</xsl:stylesheet>  

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml-common.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml-common.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml-common.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml-common.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+  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: xhtml-common.xsl 153164 2005-02-10 06:00:46Z gregor $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+
+<xsl:template match="xhtml:body">
+<node name="Body" />
+<xsl:apply-templates mode="body"/>
+</xsl:template>
+
+<xsl:template name="insertmenu">
+<xsl:param name="path"/>
+<xsl:variable name="ns">namespace=&quot;http://www.w3.org/1999/xhtml&quot;</xsl:variable>
+<insert-after select="{$path}[@tagID='{@tagID}']">
+  <element name="Paragraph" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:p&quot; {$ns}&gt;New Paragraph&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Table" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:table&quot; {$ns}&gt;&lt;tr&gt;&lt;td&gt;New Table&lt;/td&gt;&lt;/tr&gt;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Unordered List" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:ul&quot; {$ns}&gt;&lt;li&gt;New Unordered List&lt;/li&gt;;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Ordered List" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:ol&quot; {$ns}&gt;&lt;li&gt;New Ordered List&lt;/li&gt;&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Headline 1" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h1&quot; {$ns}&gt;New Headline 1&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Headline 2" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h2&quot; {$ns}&gt;New Headline 2&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Headline 3" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h3&quot; {$ns}&gt;New Headline 3&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+  <element name="Headline 4" xupdate="&lt;xupdate:insert-after select=&quot;{$path}[@tagID='{@tagID}']&quot;&gt;&lt;xupdate:element name=&quot;xhtml:h4&quot; {$ns}&gt;New Headline 4&lt;/xupdate:element&gt;&lt;/xupdate:insert-after&gt;"/>
+</insert-after>
+</xsl:template>
+
+  <xsl:template match="xhtml:p" mode="body">
+    <xsl:choose >
+      <xsl:when test="xhtml:object">
+	<xsl:apply-templates select="xhtml:object" mode="body"/>
+      </xsl:when>
+      <xsl:otherwise>
+	<node name="Paragraph" select="/*/xhtml:body/xhtml:p[@tagID='{@tagID}']">
+	  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:p[@tagID='{@tagID}']&quot;/&gt;"/></action>
+	  <content>
+	    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:p[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="30">
+	      <xsl:copy-of select="node()"/>
+	    </textarea>
+	  </content>
+	</node>
+	
+	<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:p</xsl:with-param></xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+<xsl:template match="xhtml:table" mode="body">
+<node name="Table" select="/*/xhtml:body/xhtml:table[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:table[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:table[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="30">
+      <xsl:copy-of select="."/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:table</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:ul" mode="body">
+<node name="Unordered List" select="/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:ul[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="30">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:ul</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:ol" mode="body">
+<node name="Ordered List" select="/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:ol[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="30">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:ol</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:h1" mode="body">
+<node name="Headline 1" select="/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h1[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="3">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h1</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+    
+<xsl:template match="xhtml:h2" mode="body">
+<node name="Headline 2" select="/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h2[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="3">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h2</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:h3" mode="body">
+<node name="Headline 3" select="/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h3[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="3">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h3</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:h4" mode="body">
+<node name="Headline 4" select="/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']&quot;/&gt;"/></action>
+  <content>
+    <textarea name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:h4[@tagID='{@tagID}']&quot;&gt;" cols="40" rows="3">
+      <xsl:copy-of select="node()"/>
+    </textarea>
+  </content>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:h4</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+<xsl:template match="xhtml:hr" mode="body">
+<node name="Horizontal Rule" select="/*/xhtml:body/xhtml:hr[@tagID='{@tagID}']">
+  <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:hr[@tagID='{@tagID}']&quot;/&gt;"/></action>
+</node>
+
+<xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body/xhtml:hr</xsl:with-param></xsl:call-template>
+
+</xsl:template>
+
+  <xsl:template match="xhtml:object" mode="body">
+    <node name="Object">
+      <action><delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/xhtml:p/xhtml:object[@tagID='{@tagID}']&quot;/&gt;"/></action>
+      <content>
+	<input type="text" name="&lt;xupdate:update select=&quot;/*/xhtml:body/xhtml:p/xhtml:object[@tagID='{@tagID}']&quot;&gt;" size="40">
+	  <xsl:attribute name="value">
+      <xsl:value-of select="@data"/>
+	  </xsl:attribute>
+	</input>
+      </content>
+    </node>
+    
+    <xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body</xsl:with-param></xsl:call-template>
+    
+  </xsl:template>
+
+  <xsl:template match="lenya:asset" mode="body">
+    <node name="Asset">
+      <action>
+	<delete name="&lt;xupdate:remove select=&quot;/*/xhtml:body/lenya:asset[@tagID='{@tagID}']&quot;/&gt;"/>
+      </action>
+      <content>
+	<input type="text" name="&lt;xupdate:update select=&quot;/*/xhtml:body/lenya:asset[@tagID='{@tagID}']&quot;&gt;" size="40">
+	  <xsl:attribute name="value">
+	    <xsl:value-of select="@src"/>
+	  </xsl:attribute>
+	</input>
+      </content>
+    </node>
+
+    <xsl:call-template name="insertmenu"><xsl:with-param name="path">/*/xhtml:body</xsl:with-param></xsl:call-template>
+    
+  </xsl:template>
+
+</xsl:stylesheet>  
\ No newline at end of file

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/formeditor/xhtml.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+  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: xhtml.xsl 413285 2006-06-10 11:10:23Z thorsten $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+
+<xsl:import href="../../../../../xslt/authoring/edit/form.xsl"/>
+<xsl:import href="xhtml-common.xsl"/>
+
+<xsl:template match="xhtml:html">
+<node name="Title" select="/xhtml:html/lenya:meta/dc:title[@tagID='{lenya:meta/dc:title/@tagID}']">
+  <content><input type="text" name="&lt;xupdate:update select=&quot;/xhtml:html/lenya:meta/dc:title[@tagID='{lenya:meta/dc:title/@tagID}']&quot;&gt;" size="40"><xsl:attribute name="value"><xsl:value-of select="lenya:meta/dc:title"/></xsl:attribute></input></content>
+</node>
+
+<xsl:apply-templates select="xhtml:body"/>
+
+</xsl:template>
+
+</xsl:stylesheet>  

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/search.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/search.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/search.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/search.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,44 @@
+<?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: search.xsl 76018 2004-11-16 20:12:54Z gregor $ -->
+
+<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:i18n="http://apache.org/cocoon/i18n/2.1"
+    xmlns="http://www.w3.org/1999/xhtml"
+    exclude-result-prefixes="nav"
+    >
+    
+<xsl:param name="area"/>
+<xsl:param name="root"/>
+<xsl:param name="chosenlanguage"/> 
+
+<xsl:template match="nav:site">
+  <div id="search">
+    <form><input type="hidden" name="lenya.usecase" value="search"/><input type="hidden" name="language" value="{$chosenlanguage}"/><input class="searchfield" type="text" name="query" alt="Search field"/><input class="searchsubmit" i18n:attr="value" type="submit" value="Search" name="find"/></form>
+  </div>
+</xsl:template>
+
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()"/>
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet> 

Added: lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/tabs.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/tabs.xsl?rev=577177&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/tabs.xsl (added)
+++ lenya/branches/revolution/1.3.x/src/webapp/lenya/pubs/default13/lenya/xslt/navigation/tabs.xsl Wed Sep 19 00:09:42 2007
@@ -0,0 +1,84 @@
+<?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: tabs.xsl 189879 2005-06-10 02:36:04Z gregor $ -->
+
+<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:import href="../../../../../xslt/navigation/tabs.xsl"/>
+
+<xsl:template match="nav:site">
+    
+  <div id="tabs">
+  <table border="0" cellpadding="0" cellspacing="0">
+    <tr>
+    <xsl:call-template name="pre-separator"/>
+    <xsl:for-each select="nav:node">
+      <xsl:if test="position() &gt; 1">
+        <xsl:call-template name="separator"/>
+      </xsl:if>
+      
+      <xsl:choose>
+        <xsl:when test="@visibleinnav = 'false'"/>
+        <xsl:when test="descendant-or-self::nav:node[@current = 'true']">
+          <xsl:call-template name="tab-selected"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="tab"/>
+        </xsl:otherwise>
+      </xsl:choose>
+        
+    </xsl:for-each>
+    <xsl:call-template name="post-separator"/>
+    </tr>
+  </table>
+  </div>
+
+</xsl:template>
+
+
+<xsl:template name="tab">
+  <td><div class="tab"><xsl:call-template name="label"/></div></td>
+</xsl:template>
+
+
+<xsl:template name="tab-selected">
+  <td><div class="tab-selected"><xsl:call-template name="label"/></div></td>
+</xsl:template>
+
+
+<xsl:template name="separator">
+    <td><div class="tab-separator">&#160;</div></td>
+</xsl:template>
+
+
+<xsl:template name="pre-separator">
+    <td><div class="tab-pre-separator">&#160;</div></td>
+</xsl:template>
+
+
+<xsl:template name="post-separator">
+    <td class="tab-post-separator"><div class="tab-separator">&#160;</div></td>
+</xsl:template>
+
+
+</xsl:stylesheet>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.