[Yanel-commits] rev 20586 - in public/yanel/trunk/src: contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources realms/yanel-website/content/rtd

josias at wyona.com josias at wyona.com
Tue Dec 5 17:03:19 CET 2006


Author: josias
Date: 2006-12-05 17:03:17 +0100 (Tue, 05 Dec 2006)
New Revision: 20586

Modified:
   public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
   public/yanel/trunk/src/realms/yanel-website/content/rtd/wiki.rtd
Log:
global.xsl applied to wiki resource

Modified: public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2006-12-05 16:00:43 UTC (rev 20585)
+++ public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2006-12-05 16:03:17 UTC (rev 20586)
@@ -16,6 +16,8 @@
 
 package org.wyona.yanel.impl.resources;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -42,6 +44,7 @@
 import org.wyona.yanel.core.api.attributes.CreatableV2;
 import org.wyona.yanel.core.attributes.viewable.View;
 import org.wyona.yanel.core.attributes.viewable.ViewDescriptor;
+import org.wyona.yanel.core.transformation.I18nTransformer;
 
 import org.wyona.yarep.core.RepositoryException;
 import org.wyona.yarep.core.Repository;
@@ -60,6 +63,8 @@
     private HashMap properties = new HashMap();
     private String defaultWikiParserBeanId = "jspWikiParser";
     
+    private String language = "en";
+    
     /**
      * 
      */
@@ -99,20 +104,34 @@
                 transformer = TransformerFactory.newInstance().newTransformer();
                 defaultView.setMimeType(XML_MIME_TYPE);
             } else {
-                transformer = TransformerFactory.newInstance().newTransformer(getXSLTStreamSource(path, repository));
+                transformer = TransformerFactory.newInstance().newTransformer(getXSLTStreamSource(null, repository));
                 transformer.setParameter("yanel.path.name", path.getName());
                 transformer.setParameter("yanel.path", path.toString());
                 defaultView.setMimeType("application/xhtml+xml");
             }
-            
             LinkChecker linkChecker = new LinkChecker(path2Resource);
             SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
             saxParser.parse(wikiParser.getInputStream(), linkChecker);
-            java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
-            transformer.transform(new StreamSource(linkChecker.getInputStream()), new StreamResult(baos));
             
-            defaultView.setInputStream(new java.io.ByteArrayInputStream(baos.toByteArray()));
+            java.io.ByteArrayOutputStream byteArrayOutputStream = new java.io.ByteArrayOutputStream();
+            transformer.transform(new StreamSource(linkChecker.getInputStream()), new StreamResult(byteArrayOutputStream));
             
+            inputStream = new java.io.ByteArrayInputStream(byteArrayOutputStream.toByteArray());
+            
+            transformer = TransformerFactory.newInstance().newTransformer(getXSLTStreamSource(path, repository));
+            transformer.setParameter("yanel.back2context", backToRoot(path, ""));
+            transformer.setParameter("yarep.back2realm", backToRoot(new org.wyona.yanel.core.Path(rp.getPath().toString()), ""));
+            
+            byteArrayOutputStream = new ByteArrayOutputStream();
+            transformer.transform(new StreamSource(inputStream), new StreamResult(byteArrayOutputStream));
+ 
+            inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
+            I18nTransformer i18nTransformer = new I18nTransformer("global", language);
+            saxParser = SAXParserFactory.newInstance().newSAXParser();
+            saxParser.parse(inputStream, i18nTransformer);
+
+            defaultView.setInputStream(i18nTransformer.getInputStream());
+            
             return defaultView;
         } catch (Exception e) {
             log.error(e, e);
@@ -120,10 +139,38 @@
         return null;
     }
     
+   /**
+    *
+    */
+   private String backToRoot(Path path, String backToRoot) {
+       org.wyona.commons.io.Path parent = path.getParent();
+       if (parent != null && !isRoot(parent)) {
+           return backToRoot(new Path(parent.toString()), backToRoot + "../");
+       }
+       return backToRoot;
+   }
+
+   /**
+    *
+    */
+   private boolean isRoot(org.wyona.commons.io.Path path) {
+       if (path.toString().equals(File.separator)) return true;
+       return false;
+   }
+    
     /**
      * 
      */
     public View getView(HttpServletRequest request, String viewId) {
+        String _language = language;
+        try {
+            _language = request.getParameter("yanel.meta.language");
+        } catch(Exception e) {
+            //use fallback language
+            _language = language;
+        }
+        if(_language == null || ("").equals(_language)) _language = language;
+        else language = _language;
         return getView(new Path(request.getServletPath()), viewId);
     }
 

Modified: public/yanel/trunk/src/realms/yanel-website/content/rtd/wiki.rtd
===================================================================
--- public/yanel/trunk/src/realms/yanel-website/content/rtd/wiki.rtd	2006-12-05 16:00:43 UTC (rev 20585)
+++ public/yanel/trunk/src/realms/yanel-website/content/rtd/wiki.rtd	2006-12-05 16:03:17 UTC (rev 20586)
@@ -1,2 +1,3 @@
 <{http://www.wyona.org/yanel/resource/1.0}wiki/>
 wiki-syntax: jspWikiParser
+xslt: /xslt/global.xsl




More information about the Yanel-commits mailing list