You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by tw...@apache.org on 2010/06/08 04:34:32 UTC
svn commit: r952512 - in /forrest/trunk/whiteboard/f9/src/main:
resources/project/ resources/project/css/ resources/project/images/
resources/project/scripts/ scala/org/apache/forrest/f9/
scala/org/apache/forrest/f9/filters/ scala/org/apache/forrest/f9...
Author: twilliams
Date: Tue Jun 8 02:34:31 2010
New Revision: 952512
URL: http://svn.apache.org/viewvc?rev=952512&view=rev
Log:
Add some trivial autonavigation for now
Added:
forrest/trunk/whiteboard/f9/src/main/resources/project/
forrest/trunk/whiteboard/f9/src/main/resources/project/css/
forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/
forrest/trunk/whiteboard/f9/src/main/resources/project/images/group-logo.gif (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/icon-e.png (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/project-logo.gif (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/images/usemap.gif (with props)
forrest/trunk/whiteboard/f9/src/main/resources/project/scripts/
forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl (with props)
Modified:
forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/Main.scala
forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/filters/HtmlFileSink.scala
forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/task/BuildTask.scala
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css?rev=952512&view=auto
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css (added)
+++ forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css Tue Jun 8 02:34:31 2010
@@ -0,0 +1,48 @@
+body {
+ font-family: "Verdana", sans-serif;
+ font-size: 80%;
+}
+
+#flite-content-wrapper {
+
+}
+
+#flite-header {
+ background: #eeeeee;
+ text-align: center;
+ font-size: x-large;
+}
+
+#flite-content {
+ float:right;
+ width: 65%;
+ margin-left: 5%;
+}
+
+#flite-left {
+
+ width: 30%;
+ list-style: none;
+ border: 1px solid #dddddd;
+ margin: 5px;
+}
+
+#flite-left ul, #flite-left li{
+ list-style: none;
+ margin: 0px;
+ padding-left: 4px;
+ padding-top: 4px;
+ text-decoration: none;
+}
+
+#flite-left > ul > li > a {
+ font-weight: bold;
+ font-family: "Lucida Grande", sans-serif;
+}
+
+
+
+#flite-footer {
+ clear: both;
+ background: #eeeeee;
+}
\ No newline at end of file
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/css/style.css
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/group-logo.gif
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/group-logo.gif?rev=952512&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/group-logo.gif
------------------------------------------------------------------------------
svn:mime-type = image/gif
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg?rev=952512&view=auto
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg (added)
+++ forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg Tue Jun 8 02:34:31 2010
@@ -0,0 +1,82 @@
+<?xml version="1.0" standalone="no"?>
+<!--
+ 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.
+-->
+
+<!--
+ SVG Anteater logo
+
+To get started with SVG, I'd recommend getting the Adobe SVG plugin, and the
+xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the
+SVG spec (http://www.w3.org/TR/SVG/) as a reference.
+-->
+
+<!-- See Forrest Issue: FOR-229
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg xmlns:for CDATA #FIXED "http://apache.org/forrest">
+ <!ENTITY % textExt "|for:group-name">
+ <!ELEMENT for:group-name (#PCDATA)>
+]>
+-->
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xsl:version="1.0"
+ xmlns:for="http://apache.org/forrest"
+ width="220" height="65" >
+ <title>Anteater logo</title>
+
+ <defs>
+
+ <!--
+ <radialGradient id="radialGradient">
+ <stop style="stop-color:gold" offset="0"/>
+ <stop style="stop-color:orange" offset=".5"/>
+ <stop style="stop-color:crimson" offset="1"/>
+ </radialGradient>
+ <linearGradient id="linearGradient">
+ <stop style="stop-color:gold" offset="0"/>
+ <stop style="stop-color:orange" offset=".5"/>
+ <stop style="stop-color:crimson" offset="1"/>
+ </linearGradient>
+ -->
+
+ <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
+ <stop style="stop-color:white" offset="0"/>
+ <stop style="stop-color:lightgreen" offset="1"/>
+ </linearGradient>
+
+ <filter id="shadowFilter" filterUnits="objectBoundingBox" width="1.4" height="1.4">
+ <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' -->
+ <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/>
+ <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' -->
+ <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
+ <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the
+ former 'over' the latter, and using the merged result as the finished
+ image -->
+ <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
+ </filter>
+
+ </defs>
+
+ <g filter="url(#shadowFilter)" fill="url(#gradient)">
+ <text x="40%" y="60%" style="font-size:24pt; font-family:Verdana ; text-anchor: middle">
+ <for:group-name />
+ </text>
+ </g>
+</svg>
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/group.svg
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/icon-e.png
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/icon-e.png?rev=952512&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/icon-e.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/project-logo.gif
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/project-logo.gif?rev=952512&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/project-logo.gif
------------------------------------------------------------------------------
svn:mime-type = image/gif
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg?rev=952512&view=auto
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg (added)
+++ forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg Tue Jun 8 02:34:31 2010
@@ -0,0 +1,80 @@
+<?xml version="1.0" standalone="no"?>
+<!--
+ 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.
+-->
+
+<!--
+To get started with SVG, recommend getting the Adobe SVG plugin, and the
+xml-batik CVS module. Then have a look at the xml-batik/samples files. Use the
+SVG spec (http://www.w3.org/TR/SVG/) as a reference.
+-->
+
+<!-- See Forrest Issue: FOR-229
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg xmlns:for CDATA #FIXED "http://apache.org/forrest">
+ <!ENTITY % textExt "|for:project-name">
+ <!ELEMENT for:project-name (#PCDATA)>
+]>
+-->
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xsl:version="1.0"
+ xmlns:for="http://apache.org/forrest"
+ width="520" height="65" >
+ <title>Project logo</title>
+
+ <defs>
+
+ <!--
+ <radialGradient id="radialGradient">
+ <stop style="stop-color:gold" offset="0"/>
+ <stop style="stop-color:orange" offset=".5"/>
+ <stop style="stop-color:crimson" offset="1"/>
+ </radialGradient>
+ <linearGradient id="linearGradient">
+ <stop style="stop-color:gold" offset="0"/>
+ <stop style="stop-color:orange" offset=".5"/>
+ <stop style="stop-color:crimson" offset="1"/>
+ </linearGradient>
+ -->
+
+ <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
+ <stop style="stop-color:white" offset="0"/>
+ <stop style="stop-color:lightgreen" offset="1"/>
+ </linearGradient>
+
+ <filter id="shadowFilter" filterUnits="objectBoundingBox" width="1.4" height="1.4">
+ <!-- Takes the alpha channel (black outline of the text), blurs it and saves as 'blur' -->
+ <feGaussianBlur in="SourceAlpha" stdDeviation="2 2" result="blur"/>
+ <!-- Takes saved 'blur' and offsets it by 4 pixels, saves as 'offsetBlur' -->
+ <feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
+ <!-- Merges SourceGraphic (original image) and 'offsetBlur', putting the
+ former 'over' the latter, and using the merged result as the finished
+ image -->
+ <feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
+ </filter>
+
+ </defs>
+
+ <g filter="url(#shadowFilter)" fill="url(#gradient)">
+ <text x="99%" y="60%" style="font-size:24pt; font-family:Verdana ; text-anchor: end" >
+ <for:project-name />
+ </text>
+ </g>
+</svg>
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/project.svg
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/images/usemap.gif
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/images/usemap.gif?rev=952512&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/images/usemap.gif
------------------------------------------------------------------------------
svn:mime-type = image/gif
Added: forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl?rev=952512&view=auto
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl (added)
+++ forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl Tue Jun 8 02:34:31 2010
@@ -0,0 +1,50 @@
+<?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.
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:variable name="nav" select="document('/nav.xml')"/>
+ <xsl:template match="/">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="body">
+ <div id="flite-content-wrapper">
+ <div id="flite-header"></div>
+ <div id="flite-content">
+ <xsl:apply-templates/>
+ </div>
+ <div id="flite-left">
+ <xsl:copy-of select="$nav"/>
+ </div>
+ <div id="flite-footer">Footer</div>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="head">
+ <link rel="stylesheet" type="text/css" href="/resources/css/style.css" media="screen"/>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="node() | @*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Propchange: forrest/trunk/whiteboard/f9/src/main/resources/project/site.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Modified: forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/Main.scala
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/Main.scala?rev=952512&r1=952511&r2=952512&view=diff
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/Main.scala (original)
+++ forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/Main.scala Tue Jun 8 02:34:31 2010
@@ -31,7 +31,6 @@ object Main {
// we have to always init first, so ignore CL args
var state = "init"
var next = ""
- val currDir = new File(".")
while(true) {
state match {
Modified: forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/filters/HtmlFileSink.scala
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/filters/HtmlFileSink.scala?rev=952512&r1=952511&r2=952512&view=diff
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/filters/HtmlFileSink.scala (original)
+++ forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/filters/HtmlFileSink.scala Tue Jun 8 02:34:31 2010
@@ -10,7 +10,7 @@ import java.io.FileWriter
class HtmlFileSink(base: String) extends Filter {
private val xmldecl = "<?xml version='1.0' encoding='UTF-8'?>\n"
private val extension = ".xhtml"
- private val pinst = "<?xml-stylesheet type=\"text/xsl\" href=\"/resources/site.xsl\"?>\n"
+ private val pinst = "<?xml-stylesheet type=\"text/xsl\" href=\"/resources/f9/site.xsl\"?>\n"
def process(model: Map[String, Any]) = {
println("Processing HtmlFileSink: " + model("requestUri"))
Modified: forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/task/BuildTask.scala
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/task/BuildTask.scala?rev=952512&r1=952511&r2=952512&view=diff
==============================================================================
--- forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/task/BuildTask.scala (original)
+++ forrest/trunk/whiteboard/f9/src/main/scala/org/apache/forrest/f9/task/BuildTask.scala Tue Jun 8 02:34:31 2010
@@ -28,10 +28,21 @@ object BuildTask extends Task("build", f
def call(state: AppState):Boolean = {
println("Incoming state: " + state.projectDir)
base = new File(state.projectDir, "sources/docs")
- val resBase = new File(state.projectDir, "sources/resources")
- val resOut = new File(state.projectDir, "output/resources")
+ val resBase = new File(state.projectDir, "src/main/resources/project")
+ val resOut = new File(state.projectDir, "output/resources/f9")
+ //Copy all the static resources over.
FileUtils.copyDirectory(resBase, resOut)
+
+ //Maybe create some autonav for them.
+ val srcNav = new File(state.projectDir, "sources/docs/nav.xml")
+
+ if(!srcNav.exists) {
+ FileUtils.writeStringToFile( new File(state.projectDir, "output/nav.xml"),
+ "<?xml version=\"1.0\"?>" + getNav(base, state))
+ }
+
+ //Now, go ahead and generate the main content.
call(base)
true
}
@@ -46,7 +57,7 @@ object BuildTask extends Task("build", f
*/
private def call(f: File) {
- if(!f.isDirectory()) {
+ if(!f.isDirectory() && !f.isHidden()) {
val file = new File(base, f.getPath)
val r = Map("requestUri"->(f.getCanonicalPath.replace(base.getCanonicalPath, "")),
"contentType"->"application/xhtml+xml")
@@ -58,5 +69,60 @@ object BuildTask extends Task("build", f
})
}
}
+
+
+
+ def getNav(d: File, state: AppState): String = {
+ val buf = new StringBuilder
+ //println("CONTENT_DIR: " + d.getAbsolutePath)
+ //println(".. relative: " + d.getAbsolutePath.replace(contentDirFile.getAbsolutePath,""))
+ if (d.isHidden) return buf.toString
+
+ if(d.isDirectory() && !d.isHidden) {
+
+ if(isVisible(d)) {
+ buf.append("<ul><li>")
+ buf.append(format(d.getName))
+ buf.append("<ul>")
+ d.listFiles().foreach((f: File) => {
+ buf.append(getNav(f, state))
+ })
+ buf.append("</ul>")
+ buf.append("</li></ul>")
+ }
+ } else {
+ val srcpath = new File(state.projectDir, "sources/docs")
+ val path = srcpath.toURI.relativize(d.toURI)
+ buf.append("<li><a href=\"/")
+ /**
+ * TODO: I'm not at all sure where this is going. I'd like to be able to auto
+ * generate some nav for simple sites. I reckon we need some notion of a default
+ * Media Type which implies an extension, but not sure. Ideally, no extension with
+ * HTTP Conneg would take place maybe.
+ **/
+ buf.append(path.toString.replace(".xml",".xhtml"))
+ buf.append("\">")
+ buf.append(format(d.getName))
+ buf.append("</a></li>")
+ }
+
+ buf.toString
+ }
+
+ def format(s: String): String = {
+ val s2 = s.replace("_"," ").capitalize
+
+
+ if (s2.lastIndexOf(".") > 0)
+ s2.substring(0,s2.lastIndexOf("."))
+ else
+ s2
+ }
+ def isVisible(dir: File): Boolean = {
+ val hideme = new File(dir.getAbsolutePath() + "/hideme")
+
+ return !hideme.exists()
+
+ }
}
\ No newline at end of file