You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/10/13 01:55:51 UTC
svn commit: r1182619 - in /tapestry/tapestry5/trunk/quickstart: ./
prototypes/ prototypes/META-INF/
prototypes/META-INF/maven/org.apache.tapestry/quickstart/
prototypes/archetype-resources/
prototypes/archetype-resources/src/main/java/components/ proto...
Author: hlship
Date: Wed Oct 12 23:55:50 2011
New Revision: 1182619
URL: http://svn.apache.org/viewvc?rev=1182619&view=rev
Log:
TAP5-1682: 5.3-beta-x Maven Archetype does not work
Removed:
tapestry/tapestry5/trunk/quickstart/prototypes/META-INF/INDEX.LIST
tapestry/tapestry5/trunk/quickstart/prototypes/META-INF/MANIFEST.MF
tapestry/tapestry5/trunk/quickstart/prototypes/META-INF/maven/org.apache.tapestry/quickstart/pom.properties
tapestry/tapestry5/trunk/quickstart/prototypes/META-INF/maven/org.apache.tapestry/quickstart/pom.xml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-catalog.xml
Modified:
tapestry/tapestry5/trunk/quickstart/build.gradle
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/pom.xml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/components/Layout.java
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/pages/Index.java
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/AppModule.java
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/DevelopmentModule.java
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/QaModule.java
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/components/Layout.tml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/log4j.properties
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/About.tml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Contact.tml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Index.tml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/WEB-INF/web.xml
tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/layout/layout.css
Modified: tapestry/tapestry5/trunk/quickstart/build.gradle
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/build.gradle?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/build.gradle (original)
+++ tapestry/tapestry5/trunk/quickstart/build.gradle Wed Oct 12 23:55:50 2011
@@ -17,51 +17,10 @@ import org.apache.tools.ant.filters.Repl
generatedDir = new File(buildDir, 'quickstart-generated')
-/*
- * An example on how to scp the generated archetype-catalog.xml to the tapestry.apache.org
- * site, we need a nice way to hook it in the right place
- */
-//configurations {
-// scpTask
-//}
-//
-//dependencies {
-// scpTask 'org.apache.ant:ant-jsch:1.8.2', 'com.jcraft:jsch:0.1.42'
-//}
-//
-//
-//task publishArchetypeCatalog(dependsOn: 'archetype') {
-// description = 'Update archetype on minotaur'
-//
-// // As with properties to deploy to the maven repositories (staging or central)
-// // minotaurDeployUsername and minotaurDeployPassword should be specified in
-// // ~/.gradle/gradle.properties
-// // "minotaurDeployUsername"
-// // "minotaurDeployPassword"
-// // "minotaurSshPassphrase"
-//
-// scpToDir = minotaurDeployUserName + "@people.apache.org:/tmp"
-//
-// println scpToDir
-//
-// ant.taskdef(name: 'scp', classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
-// classpath: configurations.scpTask.asPath)
-//
-// ant.scp(todir: scpToDir,
-// keyfile: '${user.home}/.ssh/id_rsa',
-// // passphrase: minotaurSshPassphrase,
-// // password: minotaurDeployPassword,
-// verbose: 'true') {
-// fileset(dir: generatedDir) {
-// include(name: '**/archetype-catalog.xml')
-// }
-// }
-//}
-
task generateArchetype(type: Copy) {
srcDir = file('prototypes')
- // This let gradle knwo where is UP-TO-DATE
+ // This let gradle know where is UP-TO-DATE
inputs.file srcDir
outputs.dir generatedDir
@@ -89,8 +48,5 @@ task archetype(type: Jar, dependsOn: 'ge
baseName = "quickstart"
version = project.version
- exclude '**/*.pom'
- exclude '**/archetype-catalog.xml'
-
from generatedDir
}
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/pom.xml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/pom.xml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/pom.xml Wed Oct 12 23:55:50 2011
@@ -1,4 +1,5 @@
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
@@ -7,11 +8,32 @@
<name>${artifactId} Tapestry 5 Application</name>
#set( $D = '$' )
<dependencies>
+ <!-- Too set up an application with a database, change the artifactId below to
+ tapestry-hibernate, and add a dependency on your JDBC driver. You'll also
+ need to add Hibernate configuration files, such as hibernate.cfg.xml. -->
<dependency>
<groupId>org.apache.tapestry</groupId>
<artifactId>tapestry-core</artifactId>
<version>${D}{tapestry-release-version}</version>
</dependency>
+
+ <!-- This adds automatic compression of JavaScript and CSS when in production mode. -->
+ <dependency>
+ <groupId>org.apache.tapestry</groupId>
+ <artifactId>tapestry-yuicompressor</artifactId>
+ <version>${D}{tapestry-release-version}</version>
+ </dependency>
+
+ <!-- Uncomment this to add support for file uploads:
+
+ <dependency>
+ <groupId>org.apache.tapestry</groupId>
+ <artifactId>tapestry-upload</artifactId>
+ <version>${D}{tapestry-release-version}</version>
+ </dependency>
+
+ -->
+
<!-- A dependency on either JUnit or TestNG is required, or the surefire plugin (which runs the tests)
will fail, preventing Maven from packaging the WAR. Tapestry includes a large number
of testing facilities designed for use with TestNG (http://testng.org/), so it's recommended. -->
@@ -45,7 +67,7 @@ of testing facilities designed for use w
<scope>provided</scope>
</dependency>
- <!-- Provided dependeny to the Tapestry javadoc taglet which server as the old component report -->
+ <!-- Provide dependency to the Tapestry javadoc taglet which replaces the Maven component report -->
<dependency>
<groupId>org.apache.tapestry</groupId>
<artifactId>tapestry-javadoc</artifactId>
@@ -93,7 +115,7 @@ of testing facilities designed for use w
<systemProperties>
<systemProperty>
<name>tapestry.execution-mode</name>
- <value>Development</value>
+ <value>development</value>
</systemProperty>
</systemProperties>
</configuration>
@@ -101,28 +123,18 @@ of testing facilities designed for use w
</plugins>
</build>
- <reporting />
+ <reporting/>
<repositories>
- <!-- This repository is only needed when the tapestry-release-version is a snapshot release. -->
+ <!-- This repository is only needed when the Tapestry version is a preview release, rather
+ than a final release. -->
<repository>
- <id>apache-snapshots</id>
- <url>http://repository.apache.org/snapshots/</url>
+ <id>apache-staging</id>
+ <url>https://repository.apache.org/content/groups/staging/</url>
</repository>
</repositories>
- <pluginRepositories>
-
- <!-- As above, this can be commented out when access to the snapshot version
-of a Tapestry Maven plugin is not required. -->
- <pluginRepository>
- <id>apache-snapshots</id>
- <url>http://repository.apache.org/snapshots/</url>
- </pluginRepository>
-
- </pluginRepositories>
-
<properties>
<tapestry-release-version>@tapestryReleaseVersion@</tapestry-release-version>
<servlet-api-release-version>@servletApiReleaseVersion@</servlet-api-release-version>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/components/Layout.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/components/Layout.java?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/components/Layout.java (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/components/Layout.java Wed Oct 12 23:55:50 2011
@@ -1,9 +1,12 @@
-package ${package}.components;
+package $
+
+{package}.components;
import org.apache.tapestry5.*;
import org.apache.tapestry5.annotations.*;
import org.apache.tapestry5.ioc.annotations.*;
import org.apache.tapestry5.BindingConstants;
+import org.apache.tapestry5.SymbolConstants
/**
* Layout component for pages of application ${artifactId}.
@@ -11,7 +14,9 @@ import org.apache.tapestry5.BindingConst
@IncludeStylesheet("context:layout/layout.css")
public class Layout
{
- /** The page title, for the <title> element and the <h1> element. */
+ /**
+ * The page title, for the <title> element and the <h1> element.
+ */
@Property
@Parameter(required = true, defaultPrefix = BindingConstants.LITERAL)
private String title;
@@ -30,15 +35,21 @@ public class Layout
@Inject
private ComponentResources resources;
+ @Property
+ @Inject
+ @Symbol(SymbolConstants.APPLICATION_VERSION)
+ private String appVersion;
+
+
public String getClassForPageName()
{
- return resources.getPageName().equalsIgnoreCase(pageName)
- ? "current_page_item"
- : null;
+ return resources.getPageName().equalsIgnoreCase(pageName)
+ ? "current_page_item"
+ : null;
}
public String[] getPageNames()
{
- return new String[] { "Index", "About", "Contact" };
+ return new String[]{"Index", "About", "Contact"};
}
}
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/pages/Index.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/pages/Index.java?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/pages/Index.java (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/pages/Index.java Wed Oct 12 23:55:50 2011
@@ -1,14 +1,49 @@
-package ${package}.pages;
+package $
+
+{package}.pages;
import java.util.Date;
+import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.ioc.annotations.*;
+import org.apache.tapestry5.corelib.components.*;
+import org.apache.tapestry5.SymbolConstants
/**
* Start page of application ${artifactId}.
*/
public class Index
{
- public Date getCurrentTime()
- {
- return new Date();
- }
+ @Property
+ @Inject
+ @Symbol(SymbolConstants.TAPESTRY_VERSION)
+ private String tapestryVersion;
+
+ @InjectComponent
+ private Zone zone;
+
+ @Persist
+ @Property
+ private int clickCount;
+
+ @Inject
+ private AlertManager alertManager;
+
+ public Date getCurrentTime()
+ {
+ return new Date();
+ }
+
+ void onActionFromIncrement()
+ {
+ alertManager.info("Increment clicked");
+
+ clickCount++;
+ }
+
+ Object onActionFromIncrementAjax()
+ {
+ alertManager.info("Increment (via Ajax) clicked");
+
+ return zone;
+ }
}
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/AppModule.java?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/AppModule.java (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/AppModule.java Wed Oct 12 23:55:50 2011
@@ -1,4 +1,6 @@
-package ${package}.services;
+package $
+
+{package}.services;
import java.io.IOException;
@@ -22,32 +24,36 @@ public class AppModule
public static void bind(ServiceBinder binder)
{
// binder.bind(MyServiceInterface.class, MyServiceImpl.class);
-
+
// Make bind() calls on the binder object to define most IoC services.
// Use service builder methods (example below) when the implementation
// is provided inline, or requires more initialization than simply
// invoking the constructor.
}
-
-
+
+ public static void contributeFactoryDefaults(
+ MappedConfiguration<String, Object> configuration)
+ {
+ // The application version number is incorprated into URLs for some
+ // assets. Web browsers will cache assets because of the far future expires
+ // header. If existing assets are changed, the version number should also
+ // change, to force the browser to download new versions. This overrides Tapesty's default
+ // (a random hexadecimal number), but may be further overriden by DevelopmentModule or
+ // QaModule.
+ configuration.override(SymbolConstants.APPLICATION_VERSION, "${version}");
+ }
+
public static void contributeApplicationDefaults(
- MappedConfiguration<String, String> configuration)
+ MappedConfiguration<String, Object> configuration)
{
// Contributions to ApplicationDefaults will override any contributions to
// FactoryDefaults (with the same key). Here we're restricting the supported
// locales to just "en" (English). As you add localised message catalogs and other assets,
// you can extend this list of locales (it's a comma separated series of locale names;
// the first locale name is the default when there's no reasonable match).
-
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-
- // The application version number is incorprated into URLs for some
- // assets. Web browsers will cache assets because of the far future expires
- // header. If existing assets are changed, the version number should also
- // change, to force the browser to download new versions.
- configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
}
-
+
/**
* This is a service definition, the service will be named "TimingFilter". The interface,
@@ -55,18 +61,18 @@ public class AppModule
* RequestHandler service configuration. Tapestry IoC is responsible for passing in an
* appropriate Logger instance. Requests for static resources are handled at a higher level, so
* this filter will only be invoked for Tapestry related requests.
- *
- * <p>
+ * <p/>
+ * <p/>
* Service builder methods are useful when the implementation is inline as an inner class
* (as here) or require some other kind of special initialization. In most cases,
- * use the static bind() method instead.
- *
- * <p>
- * If this method was named "build", then the service id would be taken from the
+ * use the static bind() method instead.
+ * <p/>
+ * <p/>
+ * If this method was named "build", then the service id would be taken from the
* service interface and would be "RequestFilter". Since Tapestry already defines
* a service named "RequestFilter" we use an explicit service id that we can reference
* inside the contribution method.
- */
+ */
public RequestFilter buildTimingFilter(final Logger log)
{
return new RequestFilter()
@@ -81,10 +87,9 @@ public class AppModule
// The responsibility of a filter is to invoke the corresponding method
// in the handler. When you chain multiple filters together, each filter
// received a handler that is a bridge to the next filter.
-
+
return handler.service(request, response);
- }
- finally
+ } finally
{
long elapsed = System.currentTimeMillis() - startTime;
@@ -102,13 +107,13 @@ public class AppModule
* that implement RequestFilter (defined in other modules).
*/
public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration,
- @Local
- RequestFilter filter)
+ @Local
+ RequestFilter filter)
{
// Each contribution to an ordered configuration has a name, When necessary, you may
// set constraints to precisely control the invocation order of the contributed filter
// within the pipeline.
-
+
configuration.add("Timing", filter);
}
}
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/DevelopmentModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/DevelopmentModule.java?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/DevelopmentModule.java (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/DevelopmentModule.java Wed Oct 12 23:55:50 2011
@@ -1,18 +1,6 @@
-// Copyright (c) 2011. 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.
+package $
-package ${package}.services;
+{package}.services;
import java.io.IOException;
@@ -29,25 +17,17 @@ import org.slf4j.Logger;
/**
* This module is automatically included as part of the Tapestry IoC Registry if <em>tapestry.execution-mode</em>
- * contains the <code>DevelopmentMode</code>.
+ * includes <code>development</code>.
*/
public class DevelopmentModule
{
public static void contributeApplicationDefaults(
- MappedConfiguration<String, String> configuration)
+ MappedConfiguration<String, Object> configuration)
{
- // Contributions to ApplicationDefaults will override any contributions to
- // FactoryDefaults (with the same key). Here we're restricting the supported
- // locales to just "en" (English). As you add localised message catalogs and other assets,
- // you can extend this list of locales (it's a comma separated series of locale names;
- // the first locale name is the default when there's no reasonable match).
-
- configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-
// The factory default is true but during the early stages of an application
// overriding to false is a good idea. In addition, this is often overridden
// on the command line as -Dtapestry.production-mode=false
- configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
+ configuration.add(SymbolConstants.PRODUCTION_MODE, false);
// The application version number is incorprated into URLs for some
// assets. Web browsers will cache assets because of the far future expires
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/QaModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/QaModule.java?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/QaModule.java (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/java/services/QaModule.java Wed Oct 12 23:55:50 2011
@@ -1,18 +1,6 @@
-// Copyright (c) 2011. 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.
+package $
-package ${package}.services;
+{package}.services;
import java.io.IOException;
@@ -29,7 +17,7 @@ import org.slf4j.Logger;
/**
* This module is automatically included as part of the Tapestry IoC Registry if <em>tapestry.execution-mode</em>
- * contains the <code>QaMode</code>.
+ * includes <code>qa</code> ("quality assurance").
*/
public class QaModule
{
@@ -38,23 +26,15 @@ public class QaModule
// Bind any services needed by the QA team to produce their reports
// binder.bind(MyServiceMonitorInterface.class, MyServiceMonitorImpl.class);
}
-
+
public static void contributeApplicationDefaults(
- MappedConfiguration<String, String> configuration)
+ MappedConfiguration<String, Object> configuration)
{
- // Contributions to ApplicationDefaults will override any contributions to
- // FactoryDefaults (with the same key). Here we're restricting the supported
- // locales to just "en" (English). As you add localised message catalogs and other assets,
- // you can extend this list of locales (it's a comma separated series of locale names;
- // the first locale name is the default when there's no reasonable match).
-
- configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-
// The factory default is true but during the early stages of an application
// overriding to false is a good idea. In addition, this is often overridden
// on the command line as -Dtapestry.production-mode=false
- configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
+ configuration.add(SymbolConstants.PRODUCTION_MODE, false);
// The application version number is incorprated into URLs for some
// assets. Web browsers will cache assets because of the far future expires
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/components/Layout.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/components/Layout.tml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/components/Layout.tml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/components/Layout.tml Wed Oct 12 23:55:50 2011
@@ -1,83 +1,89 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<!--
-
-Design by Free CSS Templates
-http://www.freecsstemplates.org
-Released for free under a Creative Commons Attribution 2.5 License
-
-Title : Concrete
-Version : 1.0
-Released : 20080825
-Description: A Web 2.0 design with fluid width suitable for blogs and small websites.
--->
- #set( $D = '$' )
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
- xmlns:p="tapestry:parameter">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <title>${D}{title}</title>
- </head>
- <body>
- <!-- start header -->
- <div id="header">
- <div id="logo">
- <h1>
- <t:pagelink page="index">${groupId}:${artifactId}</t:pagelink>
- </h1>
- </div>
- <div id="menu">
- <ul>
- <li t:type="loop" source="pageNames" value="pageName" class="prop:classForPageName">
- <t:pagelink page="prop:pageName">${D}{pageName}</t:pagelink>
- </li>
- </ul>
- </div>
- </div>
- <!-- end header -->
- <!-- start page -->
- <div id="page">
- <!-- start sidebar -->
- <div id="sidebar">
- <ul>
- <li id="search" style="background: none;">
- </li>
- <li t:type="if" test="sidebar">
- <h2>${D}{sidebarTitle}</h2>
- <div class="sidebar-content">
- <t:delegate to="sidebar"/>
- </div>
- </li>
- </ul>
- </div>
- <!-- end sidebar -->
- <!-- start content -->
- <div id="content">
- <div class="post">
- <div class="title">
- <h2>${D}{title}</h2>
- </div>
- <div class="entry">
- <t:body/>
- </div>
- </div>
- </div>
- <!-- end content -->
- <br style="clear: both;"/>
- </div>
- <!-- end page -->
- <!-- start footer -->
- <div id="footer">
- <p class="legal">
- ©2009 ${groupId}. All Rights Reserved.
- •
- Design by
- <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>
- •
- Icons by
- <a href="http://famfamfam.com/">FAMFAMFAM</a>.
- </p>
- </div>
- <!-- end footer -->
- </body>
-</html>
+<!DOCTYPE html>
+<!--
+
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+
+Title : Concrete (modified for Tapestry)
+Version : 1.0
+Released : 20080825
+Description: A Web 2.0 design with fluid width suitable for blogs and small websites.
+-->
+ #set( $D = '$' )
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
+ xmlns:p="tapestry:parameter">
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+ <title>${D}{title}</title>
+ </head>
+ <body>
+ <!-- start header -->
+ <div class="header">
+ <div class="logo">
+ <h1>
+ <t:pagelink page="index">${groupId}:${artifactId}</t:pagelink>
+
+ version ${D}{appVersion}
+ </h1>
+ </div>
+ <div class="menu">
+ <ul>
+ <li t:type="loop" source="pageNames" value="pageName" class="prop:classForPageName">
+ <t:pagelink page="prop:pageName">${D}{pageName}</t:pagelink>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <!-- end header -->
+ <!-- start page -->
+ <div class="page">
+ <!-- start sidebar -->
+ <div class="sidebar">
+ <ul>
+ <li class="search" style="background: none;">
+ </li>
+ <li>
+ <t:alerts/>
+ </li>
+ <li t:type="if" test="sidebar">
+ <h2>${D}{sidebarTitle}</h2>
+
+ <div class="sidebar-content">
+ <t:delegate to="sidebar"/>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <!-- end sidebar -->
+ <!-- start content -->
+ <div class="content">
+ <div class="post">
+ <div class="title">
+ <h2>${D}{title}</h2>
+ </div>
+ <div class="entry">
+ <t:body/>
+ </div>
+ </div>
+ </div>
+ <!-- end content -->
+ <br style="clear: both;"/>
+ </div>
+ <!-- end page -->
+ <!-- start footer -->
+ <div class="footer">
+ <p class="legal">
+ ©${year} ${groupId}. All Rights Reserved.
+ •
+ Design by
+ <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>
+ •
+ Icons by
+ <a href="http://famfamfam.com/">FAMFAMFAM</a>.
+ </p>
+ </div>
+ <!-- end footer -->
+ </body>
+</html>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/log4j.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/log4j.properties?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/log4j.properties (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/log4j.properties Wed Oct 12 23:55:50 2011
@@ -15,8 +15,8 @@ log4j.category.${package}.services.AppMo
# Outputs a list of pages, components and mixins at startup.
log4j.category.org.apache.tapestry5.services.TapestryModule.ComponentClassResolver=info
-# Outputs startup statistics; elapsed time to setup and initialize the registry, and a list of
-# available services.
+# Outputs startup statistics; elapsed time to setup and initialize the registry, a list of
+# available services, and a launch banner that includes the Tapestry version number.
log4j.category.org.apache.tapestry5.TapestryFilter=info
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/About.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/About.tml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/About.tml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/About.tml Wed Oct 12 23:55:50 2011
@@ -1,5 +1,5 @@
<html t:type="layout" title="About ${artifactId}"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p>About ${artifactId} application ...</p>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Contact.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Contact.tml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Contact.tml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Contact.tml Wed Oct 12 23:55:50 2011
@@ -1,5 +1,5 @@
<html t:type="layout" title="Contact ${groupId}"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p>Contact ${groupId} ...</p>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Index.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Index.tml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Index.tml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/resources/pages/Index.tml Wed Oct 12 23:55:50 2011
@@ -1,12 +1,16 @@
<html t:type="layout" title="${artifactId} Index"
t:sidebarTitle="Current Time"
- xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
+ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
#set( $D = '$' )
<!-- Most of the page content, including <head>, <body>, etc. tags, comes from Layout.tml -->
<p>${D}{message:greeting}</p>
+ <p>
+ You are running Tapestry version <strong>${D}{tapestryVersion}</strong>.
+ </p>
+
<p:sidebar>
<p>
@@ -15,9 +19,28 @@
<p>The current time is: ${D}{currentTime}.</p>
+ <!-- A Zone is a component that can be updated in place, triggered by other components. -->
+ <t:zone t:id="zone">
+ <p>
+ You have clicked the link <strong>${D}{clickCount}</strong> times.
+ </p>
+
+ <p>
+ [
+ <t:actionlink t:id="increment">increment</t:actionlink>
+ ]
+
+ [
+ <t:actionlink t:id="incrementAjax" zone="^">increment (via Ajax)</t:actionlink>
+ ]
+ </p>
+
+ </t:zone>
<p>
- [<t:pagelink page="Index">refresh</t:pagelink>]
+ [
+ <t:pagelink page="Index">refresh page</t:pagelink>
+ ]
</p>
</p:sidebar>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/WEB-INF/web.xml?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/WEB-INF/web.xml (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/WEB-INF/web.xml Wed Oct 12 23:55:50 2011
@@ -12,17 +12,17 @@ of where to look for pages, components a
</context-param>
<!--
Specify some additional Modules for two different execution
- modes: Development and Qa.
- Remember that the default execution mode is: Production
+ modes: development and qa.
+ Remember that the default execution mode is production
-->
<context-param>
- <param-name>tapestry.Development-modules</param-name>
+ <param-name>tapestry.development-modules</param-name>
<param-value>
${package}.services.DevelopmentModule
</param-value>
</context-param>
<context-param>
- <param-name>tapestry.Qa-modules</param-name>
+ <param-name>tapestry.qa-modules</param-name>
<param-value>
${package}.services.QaModule
</param-value>
Modified: tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/layout/layout.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/layout/layout.css?rev=1182619&r1=1182618&r2=1182619&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/layout/layout.css (original)
+++ tapestry/tapestry5/trunk/quickstart/prototypes/archetype-resources/src/main/webapp/layout/layout.css Wed Oct 12 23:55:50 2011
@@ -1,369 +1,369 @@
-/*
-Design by Free CSS Templates
-http://www.freecsstemplates.org
-Released for free under a Creative Commons Attribution 2.5 License
-*/
-
-body {
- margin: 0;
- padding: 0;
- background: #FFFFFF url( images/img01.jpg ) repeat-x;
- text-align: justify;
- font: 15px Arial, Helvetica, sans-serif;
- color: #626262;
-}
-
-form {
- margin: 0;
- padding: 0;
-}
-
-input {
- padding: 5px;
- background: #FEFEFE url( images/img13.gif ) repeat-x;
- border: 1px solid #626262;
- font: normal 1em Arial, Helvetica, sans-serif;
-}
-
-h1, h1 a, h2, h2 a, h3, h3 a {
- margin: 0;
- text-decoration: none;
- font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
- font-weight: normal;
- color: #444444;
-}
-
-h1 {
- letter-spacing: -1px;
- font-size: 2.2em;
- font-family: Verdana, Arial, Helvetica, sans-serif;
-}
-
-h2 {
- letter-spacing: -1px;
- font-size: 2em;
-}
-
-h3 {
- font-size: 1em;
-}
-
-p, ol, ul {
- margin-bottom: 2em;
- line-height: 200%;
-}
-
-blockquote {
- margin: 0 0 0 1.5em;
- padding-left: 1em;
- border-left: 5px solid #DDDDDD;
-}
-
-a {
- color: #1692B8;
-}
-
-a:hover {
- text-decoration: none;
-}
-
-/* Header */
-
-#header {
- height: 42px;
-}
-
-#logo h1, #logo p {
- float: left;
- text-transform: lowercase;
-}
-
-#logo h1 {
- padding: 0px 0 0 40px;
-}
-
-#logo p {
- margin: 0;
- padding: 14px 0 0 4px;
- line-height: normal;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 14px;
-}
-
-#logo a {
- text-decoration: none;
- color: #D0C7A6;
-}
-
-#menu {
- float: right;
-}
-
-#menu ul {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-
-#menu li {
- display: block;
- float: left;
- height: 42px;
-}
-
-#menu a {
- display: block;
- padding: 8px 20px 0px 20px;
- text-decoration: none;
- text-align: center;
- text-transform: lowercase;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: normal;
- font-size: 14px;
- color: #CEC5A4;
-}
-
-#menu .last {
- margin-right: 20px;
-}
-
-#menu a:hover {
- color: #FFFFFF;
-}
-
-#menu .current_page_item A {
- text-decoration: underline;
-}
-
-#menu .current_page_item a {
-}
-
-/* Page */
-
-#page {
- padding: 40px 40px 0 40px;
-}
-
-/* Content */
-
-#content {
- margin-right: 340px;
-}
-
-.post {
- margin-bottom: 10px;
-}
-
-.post .title {
- border-bottom: 1px #999999 dashed;
- font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
-}
-
-.post .title h2 {
- padding: 30px 30px 0 0px;
- text-transform: lowercase;
- font-weight: normal;
- font-size: 2.2em;
-}
-
-.post .title p {
- margin: 0;
- padding: 0 0 10px 0px;
- line-height: normal;
- color: #BABABA;
-}
-
-.post .title p a {
- color: #BABABA;
-}
-
-.post .entry {
- padding: 20px 0px 20px 0px;
-}
-
-.post .links {
- margin: 0;
- padding: 0 30px 30px 0px;
-}
-
-.post .links a {
- display: block;
- float: left;
- margin-right: 10px;
- margin-bottom: 5px;
- text-align: center;
- text-decoration: none;
- font-weight: bold;
- color: #FFFFFF;
-}
-
-.post .links a:hover {
-}
-
-.post .links .more {
- width: 128px;
- height: 30px;
- background: url( images/img03.jpg ) no-repeat left center;
-}
-
-.post .links .comments {
- width: 152px;
- height: 30px;
- background: url( images/img04.jpg ) no-repeat left center;
-}
-
-/* Sidebar */
-
-#sidebar {
- float: right;
- width: 300px;
- margin-top: 30px;
-}
-
-#sidebar ul {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-
-#sidebar li {
- margin-bottom: 10px;
- background: url( images/img10.gif ) no-repeat left bottom;
-}
-
-#sidebar li ul {
- padding: 0 30px 40px 30px;
-}
-
-#sidebar li li {
- margin: 0;
- padding-left: 20px;
-}
-
-#sidebar h2 {
- padding: 30px 30px 5px 10px;
- background: url( images/img09.gif ) no-repeat;
- text-transform: lowercase;
- font-weight: normal;
- font-size: 1.6em;
- color: #302D26;
-}
-
-#sidebar DIV.sidebar-content {
- width: 265px;
- margin-left: 10px;
- padding-bottom: 1px;
-}
-
-/* Search */
-
-#search {
- padding: 20px 30px 40px 30px;
-}
-
-#search input {
- padding: 0;
- width: 70px;
- height: 29px;
- background: #DFDFDF url( images/img14.gif ) repeat-x;
- font-weight: bold;
-}
-
-#search #s {
- padding: 5px;
- width: 150px;
- height: auto;
- background: #FEFEFE url( images/img13.gif ) repeat-x;
- border: 1px solid #626262;
- font: normal 1em Arial, Helvetica, sans-serif;
-}
-
-#search br {
- display: none;
-}
-
-/* Categories */
-
-#sidebar #categories li {
- background: url( images/img12.gif ) no-repeat left center;
-}
-
-/* Calendar */
-
-#calendar_wrap {
- padding: 0 30px 40px 30px;
-}
-
-#calendar table {
- width: 100%;
- text-align: center;
-}
-
-#calendar thead {
- background: #F1F1F1;
-}
-
-#calendar tbody td {
- border: 1px solid #F1F1F1;
-}
-
-#calendar #prev {
- text-align: left;
-}
-
-#calendar #next {
- text-align: right;
-}
-
-#calendar tfoot a {
- text-decoration: none;
- font-weight: bold;
-}
-
-#calendar #today {
- background: #FFF3A7;
- border: 1px solid #EB1400;
- font-weight: bold;
- color: #EB1400
-}
-
-/* Footer */
-
-#footer {
- padding: 70px 0 50px 0;
- background: #757575 url( images/img08.gif ) repeat-x;
-}
-
-#footer p {
- margin-bottom: 1em;
- text-align: center;
- line-height: normal;
- font-size: .9em;
- color: #BABABA;
-}
-
-#footer a {
- padding: 0 20px;
- text-decoration: none;
- color: #DDDDDD;
-}
-
-#footer a:hover {
- color: #FFFFFF;
-}
-
-#footer .rss {
- background: url( images/img18.gif ) no-repeat left center;
-}
-
-#footer .xhtml {
- background: url( images/img19.gif ) no-repeat left center;
-}
-
-#footer .css {
- background: url( images/img20.gif ) no-repeat left center;
-}
-
-#footer .legal a {
- padding: 0;
-}
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+
+body {
+ margin: 0;
+ padding: 0;
+ background: #FFFFFF url(images/img01.jpg) repeat-x;
+ text-align: justify;
+ font: 15px Arial, Helvetica, sans-serif;
+ color: #626262;
+}
+
+form {
+ margin: 0;
+ padding: 0;
+}
+
+input {
+ padding: 5px;
+ background: #FEFEFE url(images/img13.gif) repeat-x;
+ border: 1px solid #626262;
+ font: normal 1em Arial, Helvetica, sans-serif;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+ margin: 0;
+ text-decoration: none;
+ font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
+ font-weight: normal;
+ color: #444444;
+}
+
+h1 {
+ letter-spacing: -1px;
+ font-size: 2.2em;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+h2 {
+ letter-spacing: -1px;
+ font-size: 2em;
+}
+
+h3 {
+ font-size: 1em;
+}
+
+p, ol, ul {
+ margin-bottom: 2em;
+ line-height: 200%;
+}
+
+blockquote {
+ margin: 0 0 0 1.5em;
+ padding-left: 1em;
+ border-left: 5px solid #DDDDDD;
+}
+
+a {
+ color: #1692B8;
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+/* Header */
+
+div.header {
+ height: 42px;
+}
+
+div.logo h1, div.logo p {
+ float: left;
+ text-transform: lowercase;
+}
+
+div.logo h1 {
+ padding: 0px 0 0 40px;
+}
+
+div.logo p {
+ margin: 0;
+ padding: 14px 0 0 4px;
+ line-height: normal;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 14px;
+}
+
+div.logo a {
+ text-decoration: none;
+ color: #D0C7A6;
+}
+
+div.menu {
+ float: right;
+}
+
+div.menu ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+div.menu li {
+ display: block;
+ float: left;
+ height: 42px;
+}
+
+div.menu a {
+ display: block;
+ padding: 8px 20px 0px 20px;
+ text-decoration: none;
+ text-align: center;
+ text-transform: lowercase;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+ font-size: 14px;
+ color: #CEC5A4;
+}
+
+div.menu .last {
+ margin-right: 20px;
+}
+
+div.menu a:hover {
+ color: #FFFFFF;
+}
+
+div.menu .current_page_item A {
+ text-decoration: underline;
+}
+
+div.menu .current_page_item a {
+}
+
+/* Page */
+
+div.page {
+ padding: 40px 40px 0 40px;
+}
+
+/* Content */
+
+#content {
+ margin-right: 340px;
+}
+
+.post {
+ margin-bottom: 10px;
+}
+
+.post .title {
+ border-bottom: 1px #999999 dashed;
+ font-family: Tahoma, Georgia, "Times New Roman", Times, serif;
+}
+
+.post .title h2 {
+ padding: 30px 30px 0 0px;
+ text-transform: lowercase;
+ font-weight: normal;
+ font-size: 2.2em;
+}
+
+.post .title p {
+ margin: 0;
+ padding: 0 0 10px 0px;
+ line-height: normal;
+ color: #BABABA;
+}
+
+.post .title p a {
+ color: #BABABA;
+}
+
+.post .entry {
+ padding: 20px 0px 20px 0px;
+}
+
+.post .links {
+ margin: 0;
+ padding: 0 30px 30px 0px;
+}
+
+.post .links a {
+ display: block;
+ float: left;
+ margin-right: 10px;
+ margin-bottom: 5px;
+ text-align: center;
+ text-decoration: none;
+ font-weight: bold;
+ color: #FFFFFF;
+}
+
+.post .links a:hover {
+}
+
+.post .links .more {
+ width: 128px;
+ height: 30px;
+ background: url(images/img03.jpg) no-repeat left center;
+}
+
+.post .links .comments {
+ width: 152px;
+ height: 30px;
+ background: url(images/img04.jpg) no-repeat left center;
+}
+
+/* Sidebar */
+
+div.sidebar {
+ float: right;
+ width: 300px;
+ margin-top: 30px;
+}
+
+div.sidebar ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+div.sidebar li {
+ margin-bottom: 10px;
+ background: url(images/img10.gif) no-repeat left bottom;
+}
+
+div.sidebar li ul {
+ padding: 0 30px 40px 30px;
+}
+
+div.sidebar li li {
+ margin: 0;
+ padding-left: 20px;
+}
+
+div.sidebar h2 {
+ padding: 30px 30px 5px 10px;
+ background: url(images/img09.gif) no-repeat;
+ text-transform: lowercase;
+ font-weight: normal;
+ font-size: 1.6em;
+ color: #302D26;
+}
+
+div.sidebar DIV.sidebar-content {
+ width: 265px;
+ margin-left: 10px;
+ padding-bottom: 1px;
+}
+
+/* Search */
+
+li.search {
+ padding: 20px 30px 40px 30px;
+}
+
+li.search input {
+ padding: 0;
+ width: 70px;
+ height: 29px;
+ background: #DFDFDF url(images/img14.gif) repeat-x;
+ font-weight: bold;
+}
+
+li.search #s {
+ padding: 5px;
+ width: 150px;
+ height: auto;
+ background: #FEFEFE url(images/img13.gif) repeat-x;
+ border: 1px solid #626262;
+ font: normal 1em Arial, Helvetica, sans-serif;
+}
+
+li.search br {
+ display: none;
+}
+
+/* Categories */
+
+div.sidebar div.categories li {
+ background: url(images/img12.gif) no-repeat left center;
+}
+
+/* Calendar */
+
+div.calendar_wrap {
+ padding: 0 30px 40px 30px;
+}
+
+div.calendar table {
+ width: 100%;
+ text-align: center;
+}
+
+div.calendar thead {
+ background: #F1F1F1;
+}
+
+div.calendar tbody td {
+ border: 1px solid #F1F1F1;
+}
+
+div.calendar #prev {
+ text-align: left;
+}
+
+div.calendar #next {
+ text-align: right;
+}
+
+div.calendar tfoot a {
+ text-decoration: none;
+ font-weight: bold;
+}
+
+div.calendar #today {
+ background: #FFF3A7;
+ border: 1px solid #EB1400;
+ font-weight: bold;
+ color: #EB1400
+}
+
+/* Footer */
+
+div.footer {
+ padding: 70px 0 50px 0;
+ background: #757575 url(images/img08.gif) repeat-x;
+}
+
+div.footer p {
+ margin-bottom: 1em;
+ text-align: center;
+ line-height: normal;
+ font-size: .9em;
+ color: #BABABA;
+}
+
+div.footer a {
+ padding: 0 20px;
+ text-decoration: none;
+ color: #DDDDDD;
+}
+
+div.footer a:hover {
+ color: #FFFFFF;
+}
+
+div.footer .rss {
+ background: url(images/img18.gif) no-repeat left center;
+}
+
+div.footer .xhtml {
+ background: url(images/img19.gif) no-repeat left center;
+}
+
+div.footer .css {
+ background: url(images/img20.gif) no-repeat left center;
+}
+
+div.footer .legal a {
+ padding: 0;
+}