WW-3764 WW-1832 Adds small demo app to demonstrate possible usage of struts.ui.templateDir
Project: http://git-wip-us.apache.org/repos/asf/struts-examples/repo Commit: http://git-wip-us.apache.org/repos/asf/struts-examples/commit/111b1a7c Tree: http://git-wip-us.apache.org/repos/asf/struts-examples/tree/111b1a7c Diff: http://git-wip-us.apache.org/repos/asf/struts-examples/diff/111b1a7c Branch: refs/heads/master Commit: 111b1a7c3f03b72a2c6dcb5dffb5188c012671b8 Parents: c73eae6 Author: Lukasz Lenart <lukasz.len...@gmail.com> Authored: Thu Jul 10 09:40:29 2014 +0200 Committer: Lukasz Lenart <lukasz.len...@gmail.com> Committed: Thu Jul 10 09:40:29 2014 +0200 ---------------------------------------------------------------------- pom.xml | 1 + themes_override/README.txt | 16 + themes_override/pom.xml | 54 ++++ .../apache/struts/edit/action/EditAction.java | 96 ++++++ .../org/apache/struts/edit/model/Person.java | 96 ++++++ .../org/apache/struts/edit/model/State.java | 39 +++ .../apache/struts/edit/service/EditService.java | 12 + .../edit/service/EditServiceInMemory.java | 51 ++++ themes_override/src/main/resources/log4j.dtd | 227 ++++++++++++++ themes_override/src/main/resources/log4j.xml | 28 ++ .../struts/edit/action/EditAction.properties | 8 + themes_override/src/main/resources/struts.xml | 30 ++ .../src/main/webapp/META-INF/MANIFEST.MF | 3 + .../webapp/WEB-INF/template/simple/a-close.ftl | 45 +++ .../main/webapp/WEB-INF/template/simple/a.ftl | 22 ++ .../WEB-INF/template/simple/actionerror.ftl | 43 +++ .../WEB-INF/template/simple/actionmessage.ftl | 43 +++ .../webapp/WEB-INF/template/simple/checkbox.ftl | 50 +++ .../WEB-INF/template/simple/checkboxlist.ftl | 113 +++++++ .../webapp/WEB-INF/template/simple/combobox.ftl | 103 +++++++ .../template/simple/common-attributes.ftl | 25 ++ .../WEB-INF/template/simple/controlfooter.ftl | 22 ++ .../WEB-INF/template/simple/controlheader.ftl | 22 ++ .../main/webapp/WEB-INF/template/simple/css.ftl | 35 +++ .../webapp/WEB-INF/template/simple/debug.ftl | 82 +++++ .../WEB-INF/template/simple/div-close.ftl | 23 ++ .../main/webapp/WEB-INF/template/simple/div.ftl | 32 ++ .../WEB-INF/template/simple/doubleselect.ftl | 198 ++++++++++++ .../template/simple/dynamic-attributes.ftl | 34 +++ .../webapp/WEB-INF/template/simple/empty.ftl | 22 ++ .../WEB-INF/template/simple/fielderror.ftl | 82 +++++ .../webapp/WEB-INF/template/simple/file.ftl | 48 +++ .../WEB-INF/template/simple/form-close.ftl | 113 +++++++ .../WEB-INF/template/simple/form-common.ftl | 67 +++++ .../webapp/WEB-INF/template/simple/form.ftl | 27 ++ .../webapp/WEB-INF/template/simple/head.ftl | 23 ++ .../webapp/WEB-INF/template/simple/hidden.ftl | 41 +++ .../template/simple/inputtransferselect.ftl | 124 ++++++++ .../webapp/WEB-INF/template/simple/label.ftl | 45 +++ .../webapp/WEB-INF/template/simple/optgroup.ftl | 51 ++++ .../template/simple/optiontransferselect.ftl | 301 +++++++++++++++++++ .../webapp/WEB-INF/template/simple/password.ftl | 53 ++++ .../webapp/WEB-INF/template/simple/radiomap.ftl | 94 ++++++ .../webapp/WEB-INF/template/simple/reset.ftl | 76 +++++ .../template/simple/scripting-events.ftl | 64 ++++ .../webapp/WEB-INF/template/simple/select.ftl | 140 +++++++++ .../WEB-INF/template/simple/submit-close.ftl | 6 + .../webapp/WEB-INF/template/simple/submit.ftl | 93 ++++++ .../webapp/WEB-INF/template/simple/table.ftl | 76 +++++ .../webapp/WEB-INF/template/simple/text.ftl | 54 ++++ .../webapp/WEB-INF/template/simple/textarea.ftl | 53 ++++ .../webapp/WEB-INF/template/simple/token.ftl | 24 ++ .../WEB-INF/template/simple/updownselect.ftl | 57 ++++ .../webapp/WEB-INF/template/xhtml/checkbox.ftl | 129 ++++++++ .../WEB-INF/template/xhtml/checkboxlist.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/combobox.ftl | 25 ++ .../WEB-INF/template/xhtml/control-close.ftl | 23 ++ .../webapp/WEB-INF/template/xhtml/control.ftl | 26 ++ .../WEB-INF/template/xhtml/controlfooter.ftl | 38 +++ .../template/xhtml/controlheader-core.ftl | 81 +++++ .../WEB-INF/template/xhtml/controlheader.ftl | 28 ++ .../WEB-INF/template/xhtml/doubleselect.ftl | 25 ++ .../main/webapp/WEB-INF/template/xhtml/file.ftl | 25 ++ .../template/xhtml/form-close-validate.ftl | 158 ++++++++++ .../WEB-INF/template/xhtml/form-close.ftl | 35 +++ .../WEB-INF/template/xhtml/form-validate.ftl | 31 ++ .../main/webapp/WEB-INF/template/xhtml/form.ftl | 33 ++ .../main/webapp/WEB-INF/template/xhtml/head.ftl | 24 ++ .../webapp/WEB-INF/template/xhtml/hidden.ftl | 27 ++ .../template/xhtml/inputtransferselect.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/label.ftl | 25 ++ .../template/xhtml/optiontransferselect.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/password.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/radiomap.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/reset.ftl | 31 ++ .../webapp/WEB-INF/template/xhtml/select.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/styles.css | 29 ++ .../WEB-INF/template/xhtml/submit-close.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/submit.ftl | 29 ++ .../main/webapp/WEB-INF/template/xhtml/text.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/textarea.ftl | 25 ++ .../WEB-INF/template/xhtml/theme.properties | 21 ++ .../webapp/WEB-INF/template/xhtml/tooltip.ftl | 41 +++ .../WEB-INF/template/xhtml/updownselect.ftl | 25 ++ .../webapp/WEB-INF/template/xhtml/validation.js | 139 +++++++++ themes_override/src/main/webapp/WEB-INF/web.xml | 19 ++ themes_override/src/main/webapp/edit.jsp | 29 ++ themes_override/src/main/webapp/index.jsp | 16 + themes_override/src/main/webapp/thankyou.jsp | 21 ++ 89 files changed, 4645 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 5065411..1c7bde1 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,7 @@ <module>exclude_parameters</module> <module>restful2actionmapper</module> <module>bean_validation</module> + <module>themes_override</module> </modules> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/README.txt ---------------------------------------------------------------------- diff --git a/themes_override/README.txt b/themes_override/README.txt new file mode 100644 index 0000000..2ef262e --- /dev/null +++ b/themes_override/README.txt @@ -0,0 +1,16 @@ +This is the example project referred to in the +Struts 2 documentation, Struts 2 Themes tutorial. +See: http://struts.apache.org. + +To build the application's war file run mvn clean package +from the project's root folder. + +The war file is created in the target sub-folder. + +Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and +then startup the Servlet container. + +In a web browser go to: http://localhost:8080/themes_override/index.action. + +You should see a web page with Welcome to Struts 2! + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/pom.xml ---------------------------------------------------------------------- diff --git a/themes_override/pom.xml b/themes_override/pom.xml new file mode 100644 index 0000000..b0e33cc --- /dev/null +++ b/themes_override/pom.xml @@ -0,0 +1,54 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> +<!-- + FIXME: this is temporary solution to use the latest snapshot version + <parent> + <groupId>struts.apache.org</groupId> + <artifactId>struts2examples</artifactId> + <version>1.0.0</version> + </parent> +--> + <groupId>struts.apache.org</groupId> + <version>1.0.0</version> + + <artifactId>themes_override</artifactId> + + <name>Struts 2 Themes Override</name> + + <description>Struts 2 themes override example application for the + Struts 2 getting started tutorials + </description> + + <packaging>war</packaging> + + <dependencies> + <dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-core</artifactId> + <version>2.3.18-SNAPSHOT</version> + </dependency> + </dependencies> + <build> + <finalName>themes_override</finalName> + <plugins> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-maven-plugin</artifactId> + <version>8.1.7.v20120910</version> + <configuration> + <stopKey>CTRL+C</stopKey> + <stopPort>8999</stopPort> + <scanIntervalSeconds>10</scanIntervalSeconds> + <scanTargets> + <scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget> + </scanTargets> + </configuration> + </plugin> + </plugins> + + </build> + +</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/java/org/apache/struts/edit/action/EditAction.java ---------------------------------------------------------------------- diff --git a/themes_override/src/main/java/org/apache/struts/edit/action/EditAction.java b/themes_override/src/main/java/org/apache/struts/edit/action/EditAction.java new file mode 100644 index 0000000..aa07ff2 --- /dev/null +++ b/themes_override/src/main/java/org/apache/struts/edit/action/EditAction.java @@ -0,0 +1,96 @@ +package org.apache.struts.edit.action; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.struts.edit.model.Person; +import org.apache.struts.edit.model.State; +import org.apache.struts.edit.service.EditService; +import org.apache.struts.edit.service.EditServiceInMemory; + +import com.opensymphony.xwork2.ActionSupport; + +/** + * Acts as a controller to handle actions + * related to editing a Person. + * @author bruce phillips + * + */ +public class EditAction extends ActionSupport { + + private static final long serialVersionUID = 1L; + + private EditService editService = new EditServiceInMemory(); + + private Person personBean; + + private String [] sports = {"football", "baseball", "basketball" }; + + private String [] genders = {"male", "female", "not sure" }; + + private List<State> states ; + + private String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"}; + + public String execute() throws Exception { + + editService.savePerson( getPersonBean() ); + + return SUCCESS; + + } + + + public String input() throws Exception { + + setPersonBean( editService.getPerson() ); + + return INPUT; + } + + public Person getPersonBean() { + + + return personBean; + + } + + public void setPersonBean(Person person) { + + personBean = person; + + } + + + public List<String> getSports() { + return Arrays.asList(sports); + } + + public List<String> getGenders() { + + return Arrays.asList(genders); + + } + + + + public List<State> getStates() { + + states = new ArrayList<State>(); + states.add( new State("AZ", "Arizona") ); + states.add( new State("CA", "California") ); + states.add( new State("FL", "Florida") ); + states.add( new State("KS", "Kansas") ); + states.add( new State("NY", "New York") ); + + return states; + } + + + + public String [] getCarModelsAvailable() { + return carModelsAvailable; + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/java/org/apache/struts/edit/model/Person.java ---------------------------------------------------------------------- diff --git a/themes_override/src/main/java/org/apache/struts/edit/model/Person.java b/themes_override/src/main/java/org/apache/struts/edit/model/Person.java new file mode 100644 index 0000000..392a8de --- /dev/null +++ b/themes_override/src/main/java/org/apache/struts/edit/model/Person.java @@ -0,0 +1,96 @@ +package org.apache.struts.edit.model; + +import java.util.Arrays; + + +/** + * Models a Person who registers. + * @author bruce phillips + * + */ +public class Person +{ + private String firstName; + private String lastName; + private String sport; + private String gender; + private String residency; + private boolean over21; + private String [] carModels; + + + public String getFirstName() + { + return firstName; + } + + public void setFirstName(String firstName) + { + this.firstName = firstName; + } + + public String getLastName() + { + return lastName; + } + + public void setLastName(String lastName) + { + this.lastName = lastName; + } + + + + + public void setSport(String sport) { + this.sport = sport; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getGender() { + return gender; + } + + public String getSport() { + return sport; + } + + public void setResidency(String residency) { + this.residency = residency; + } + + public String getResidency() { + return residency; + } + + public void setOver21(boolean over21) { + this.over21 = over21; + } + + public boolean isOver21() { + return over21; + } + + public void setCarModels(String [] carModels) { + this.carModels = carModels; + } + + public String [] getCarModels() { + return carModels; + } + + public String toString() + { + return "First Name: " + getFirstName() + " | " + + " Last Name: " + getLastName() + " | " + + " Favorite Sport: " + getSport() + " | " + + " Gender: " + getGender() + " | " + + " Residency: " + getResidency() + " | " + + " Over 21: " + isOver21() + " | " + + " Car models: " + Arrays.asList( getCarModels() ) ; + + } +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/java/org/apache/struts/edit/model/State.java ---------------------------------------------------------------------- diff --git a/themes_override/src/main/java/org/apache/struts/edit/model/State.java b/themes_override/src/main/java/org/apache/struts/edit/model/State.java new file mode 100644 index 0000000..bb927e1 --- /dev/null +++ b/themes_override/src/main/java/org/apache/struts/edit/model/State.java @@ -0,0 +1,39 @@ +package org.apache.struts.edit.model; + +public class State { + + private String stateAbbr; + + private String stateName; + + public State (String stateAbbr, String stateName) { + + this.stateAbbr = stateAbbr; + this.stateName = stateName; + + } + + public void setStateAbbr(String stateAbbr) { + this.stateAbbr = stateAbbr; + } + + public String getStateAbbr() { + return stateAbbr; + } + + public void setStateName(String stateName) { + this.stateName = stateName; + } + + public String getStateName() { + return stateName; + } + + public String toString() { + + return getStateAbbr() ; + + } + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/java/org/apache/struts/edit/service/EditService.java ---------------------------------------------------------------------- diff --git a/themes_override/src/main/java/org/apache/struts/edit/service/EditService.java b/themes_override/src/main/java/org/apache/struts/edit/service/EditService.java new file mode 100644 index 0000000..79d759a --- /dev/null +++ b/themes_override/src/main/java/org/apache/struts/edit/service/EditService.java @@ -0,0 +1,12 @@ +package org.apache.struts.edit.service; + +import org.apache.struts.edit.model.Person; + +public interface EditService { + + + Person getPerson() ; + + void savePerson(Person personBean); + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java ---------------------------------------------------------------------- diff --git a/themes_override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/themes_override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java new file mode 100644 index 0000000..7638152 --- /dev/null +++ b/themes_override/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java @@ -0,0 +1,51 @@ +package org.apache.struts.edit.service; + +import org.apache.struts.edit.model.Person; + +/** + * Implement Services needed to edit and save + * a Person object's state. In this implementation + * the Person object's state is stored in memory + * @author brucephillips + * + */ +public class EditServiceInMemory implements EditService { + + + private static Person person ; + private static String [] carModels = {"Ford","Nissan"}; + + + static { + + person = new Person(); + person.setFirstName("Bruce"); + person.setLastName("Phillips"); + person.setSport("basketball"); + person.setGender("not sure"); + person.setResidency("KS"); + person.setOver21(true); + person.setCarModels( carModels); + + } + + + public Person getPerson() { + + return EditServiceInMemory.person; + } + + + public void savePerson(Person personBean) { + + EditServiceInMemory.person.setFirstName(personBean.getFirstName() ); + EditServiceInMemory.person.setLastName(personBean.getLastName() ); + EditServiceInMemory.person.setSport(personBean.getSport() ); + EditServiceInMemory.person.setGender( personBean.getGender() ); + EditServiceInMemory.person.setResidency( personBean.getResidency() ); + EditServiceInMemory.person.setOver21( personBean.isOver21() ); + EditServiceInMemory.person.setCarModels(personBean.getCarModels() ); + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/resources/log4j.dtd ---------------------------------------------------------------------- diff --git a/themes_override/src/main/resources/log4j.dtd b/themes_override/src/main/resources/log4j.dtd new file mode 100644 index 0000000..1aabd96 --- /dev/null +++ b/themes_override/src/main/resources/log4j.dtd @@ -0,0 +1,227 @@ +<?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. +--> + +<!-- Authors: Chris Taylor, Ceki Gulcu. --> + +<!-- Version: 1.2 --> + +<!-- A configuration element consists of optional renderer +elements,appender elements, categories and an optional root +element. --> + +<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, + (categoryFactory|loggerFactory)?)> + +<!-- The "threshold" attribute takes a level value below which --> +<!-- all logging statements are disabled. --> + +<!-- Setting the "debug" enable the printing of internal log4j logging --> +<!-- statements. --> + +<!-- By default, debug attribute is "null", meaning that we not do touch --> +<!-- internal log4j logging settings. The "null" value for the threshold --> +<!-- attribute can be misleading. The threshold field of a repository --> +<!-- cannot be set to null. The "null" value for the threshold attribute --> +<!-- simply means don't touch the threshold field, the threshold field --> +<!-- keeps its old value. --> + +<!ATTLIST log4j:configuration + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" + debug (true|false|null) "null" + reset (true|false) "false" +> + +<!-- renderer elements allow the user to customize the conversion of --> +<!-- message objects to String. --> + +<!ELEMENT renderer EMPTY> +<!ATTLIST renderer + renderedClass CDATA #REQUIRED + renderingClass CDATA #REQUIRED +> + +<!-- Appenders must have a name and a class. --> +<!-- Appenders may contain an error handler, a layout, optional parameters --> +<!-- and filters. They may also reference (or include) other appenders. --> +<!ELEMENT appender (errorHandler?, param*, + rollingPolicy?, triggeringPolicy?, connectionSource?, + layout?, filter*, appender-ref*)> +<!ATTLIST appender + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT layout (param*)> +<!ATTLIST layout + class CDATA #REQUIRED +> + +<!ELEMENT filter (param*)> +<!ATTLIST filter + class CDATA #REQUIRED +> + +<!-- ErrorHandlers can be of any class. They can admit any number of --> +<!-- parameters. --> + +<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> +<!ATTLIST errorHandler + class CDATA #REQUIRED +> + +<!ELEMENT root-ref EMPTY> + +<!ELEMENT logger-ref EMPTY> +<!ATTLIST logger-ref + ref CDATA #REQUIRED +> + +<!ELEMENT param EMPTY> +<!ATTLIST param + name CDATA #REQUIRED + value CDATA #REQUIRED +> + + +<!-- The priority class is org.apache.log4j.Level by default --> +<!ELEMENT priority (param*)> +<!ATTLIST priority + class CDATA #IMPLIED + value CDATA #REQUIRED +> + +<!-- The level class is org.apache.log4j.Level by default --> +<!ELEMENT level (param*)> +<!ATTLIST level + class CDATA #IMPLIED + value CDATA #REQUIRED +> + + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named category. --> +<!ELEMENT category (param*,(priority|level)?,appender-ref*)> +<!ATTLIST category + class CDATA #IMPLIED + name CDATA #REQUIRED + additivity (true|false) "true" +> + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named logger. --> +<!ELEMENT logger (level?,appender-ref*)> +<!ATTLIST logger + name CDATA #REQUIRED + additivity (true|false) "true" +> + + +<!ELEMENT categoryFactory (param*)> +<!ATTLIST categoryFactory + class CDATA #REQUIRED> + +<!ELEMENT loggerFactory (param*)> +<!ATTLIST loggerFactory + class CDATA #REQUIRED> + +<!ELEMENT appender-ref EMPTY> +<!ATTLIST appender-ref + ref CDATA #REQUIRED +> + +<!-- plugins must have a name and class and can have optional parameters --> +<!ELEMENT plugin (param*, connectionSource?)> +<!ATTLIST plugin + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT connectionSource (dataSource?, param*)> +<!ATTLIST connectionSource + class CDATA #REQUIRED +> + +<!ELEMENT dataSource (param*)> +<!ATTLIST dataSource + class CDATA #REQUIRED +> + +<!ELEMENT triggeringPolicy ((param|filter)*)> +<!ATTLIST triggeringPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + +<!ELEMENT rollingPolicy (param*)> +<!ATTLIST rollingPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + + +<!-- If no priority element is specified, then the configurator MUST not --> +<!-- touch the priority of root. --> +<!-- The root category always exists and cannot be subclassed. --> +<!ELEMENT root (param*, (priority|level)?, appender-ref*)> + + +<!-- ==================================================================== --> +<!-- A logging event --> +<!-- ==================================================================== --> +<!ELEMENT log4j:eventSet (log4j:event*)> +<!ATTLIST log4j:eventSet + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + version (1.1|1.2) "1.2" + includesLocationInfo (true|false) "true" +> + + + +<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, + log4j:locationInfo?, log4j:properties?) > + +<!-- The timestamp format is application dependent. --> +<!ATTLIST log4j:event + logger CDATA #REQUIRED + level CDATA #REQUIRED + thread CDATA #REQUIRED + timestamp CDATA #REQUIRED + time CDATA #IMPLIED +> + +<!ELEMENT log4j:message (#PCDATA)> +<!ELEMENT log4j:NDC (#PCDATA)> + +<!ELEMENT log4j:throwable (#PCDATA)> + +<!ELEMENT log4j:locationInfo EMPTY> +<!ATTLIST log4j:locationInfo + class CDATA #REQUIRED + method CDATA #REQUIRED + file CDATA #REQUIRED + line CDATA #REQUIRED +> + +<!ELEMENT log4j:properties (log4j:data*)> + +<!ELEMENT log4j:data EMPTY> +<!ATTLIST log4j:data + name CDATA #REQUIRED + value CDATA #REQUIRED +> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/themes_override/src/main/resources/log4j.xml b/themes_override/src/main/resources/log4j.xml new file mode 100644 index 0000000..2100cb2 --- /dev/null +++ b/themes_override/src/main/resources/log4j.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> + + <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> + </layout> + </appender> + + <!-- specify the logging level for loggers from other libraries --> + <logger name="com.opensymphony"> + <level value="DEBUG" /> + </logger> + + <logger name="org.apache.struts2"> + <level value="DEBUG" /> + </logger> + + <!-- for all other loggers log only debug and above log messages --> + <root> + <priority value="INFO"/> + <appender-ref ref="STDOUT" /> + </root> + +</log4j:configuration> + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/resources/org/apache/struts/edit/action/EditAction.properties ---------------------------------------------------------------------- diff --git a/themes_override/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/themes_override/src/main/resources/org/apache/struts/edit/action/EditAction.properties new file mode 100644 index 0000000..0f08667 --- /dev/null +++ b/themes_override/src/main/resources/org/apache/struts/edit/action/EditAction.properties @@ -0,0 +1,8 @@ +personBean.firstName=First name +personBean.lastName=Last name +personBean.sport=Favorite sport +personBean.gender=Gender +personBean.residency=State resident +personBean.over21=21 or older +personBean.carModels=Car models owned +submit=Save Changes \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/themes_override/src/main/resources/struts.xml b/themes_override/src/main/resources/struts.xml new file mode 100644 index 0000000..5c37a7b --- /dev/null +++ b/themes_override/src/main/resources/struts.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + + <constant name="struts.devMode" value="true" /> + <constant name="struts.ui.templateDir" value="WEB-INF/template"/> + + <package name="basicstruts2" extends="struts-default"> + + <!-- If no class attribute is specified the framework will assume success and + render the result index.jsp --> + <!-- If no name value for the result node is specified the success value is the default --> + <action name="index"> + <result>/index.jsp</result> + </action> + + <action name="edit" class="org.apache.struts.edit.action.EditAction" method="input"> + <result name="input">/edit.jsp</result> + </action> + + <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute"> + <result name="success">/thankyou.jsp</result> + </action> + + </package> + +</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/META-INF/MANIFEST.MF b/themes_override/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/themes_override/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/a-close.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/a-close.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/a-close.ftl new file mode 100644 index 0000000..84b5aae --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/a-close.ftl @@ -0,0 +1,45 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<a<#rt/> +<#if parameters.id?if_exists != ""> + id="${parameters.id?html}"<#rt/> +</#if> +<#if parameters.href?if_exists != ""> + href="${parameters.href}"<#rt/> +</#if> +<#if parameters.tabindex??> + tabindex="${parameters.tabindex?html}"<#rt/> +</#if> +<#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> +</#if> +<#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> +</#if> +<#if parameters.title??> + title="${parameters.title?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> +>${parameters.body}</a> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/a.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/a.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/a.ftl new file mode 100644 index 0000000..dcf27d2 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/a.ftl @@ -0,0 +1,22 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl new file mode 100644 index 0000000..6563876 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/actionerror.ftl @@ -0,0 +1,43 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#if (actionErrors?? && actionErrors?size > 0)> + <ul<#rt/> +<#if parameters.id?if_exists != ""> + id="${parameters.id?html}"<#rt/> +</#if> +<#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> +<#else> + class="errorMessage"<#rt/> +</#if> +<#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> +</#if> +> + <#list actionErrors as error> + <#if error?if_exists != ""> + <li><span><#if parameters.escape>${error!?html}<#else>${error!}</#if></span><#rt/></li><#rt/> + </#if> + </#list> + </ul> +</#if> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/actionmessage.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/actionmessage.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/actionmessage.ftl new file mode 100644 index 0000000..07174dd --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/actionmessage.ftl @@ -0,0 +1,43 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#if (actionMessages?? && actionMessages?size > 0 && !parameters.isEmptyList)> + <ul<#rt/> +<#if parameters.id?if_exists != ""> + id="${parameters.id?html}"<#rt/> +</#if> +<#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> +<#else> + class="actionMessage"<#rt/> +</#if> +<#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> +</#if> +> + <#list actionMessages as message> + <#if message?if_exists != ""> + <li><span><#if parameters.escape>${message!?html}<#else>${message!}</#if></span></li> + </#if> + </#list> + </ul> +</#if> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/checkbox.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/checkbox.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/checkbox.ftl new file mode 100644 index 0000000..1ef6b03 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/checkbox.ftl @@ -0,0 +1,50 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<input type="checkbox" name="${parameters.name?html}" value="${parameters.fieldValue?html}"<#rt/> +<#if parameters.nameValue?? && parameters.nameValue> + checked="checked"<#rt/> +</#if> +<#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> +</#if> +<#if parameters.readonly?default(false)> + readonly="readonly"<#rt/> +</#if> +<#if parameters.tabindex??> + tabindex="${parameters.tabindex?html}"<#rt/> +</#if> +<#if parameters.id??> + id="${parameters.id?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" /> +<#if parameters.title??> + title="${parameters.title?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> +/><input type="hidden" id="__checkbox_${parameters.id?html}" name="__checkbox_${parameters.name?html}" value="${parameters.fieldValue?html}"<#rt/> +<#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> +</#if> + /> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/checkboxlist.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/checkboxlist.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/checkboxlist.ftl new file mode 100644 index 0000000..3ce8686 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/checkboxlist.ftl @@ -0,0 +1,113 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#assign itemCount = 0/> +<#if parameters.list??> +<@s.iterator value="parameters.list"> + <#assign itemCount = itemCount + 1/> + <#if parameters.listKey??> + <#assign itemKey = stack.findValue(parameters.listKey)/> + <#else> + <#assign itemKey = stack.findValue('top')/> + </#if> + <#if parameters.listValue??> + <#assign itemValue = stack.findString(parameters.listValue)?default("")/> + <#else> + <#assign itemValue = stack.findString('top')/> + </#if> + <#if parameters.listCssClass??> + <#if stack.findString(parameters.listCssClass)??> + <#assign itemCssClass= stack.findString(parameters.listCssClass)/> + <#else> + <#assign itemCssClass = ''/> + </#if> + </#if> + <#if parameters.listCssStyle??> + <#if stack.findString(parameters.listCssStyle)??> + <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/> + <#else> + <#assign itemCssStyle = ''/> + </#if> + </#if> + <#if parameters.listTitle??> + <#if stack.findString(parameters.listTitle)??> + <#assign itemTitle= stack.findString(parameters.listTitle)/> + <#else> + <#assign itemTitle = ''/> + </#if> + </#if> + <#assign itemKeyStr=itemKey.toString() /> +<input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}"<#rt/> + <#if parameters.id??> + id="${parameters.id?html}-${itemCount}"<#rt/> + <#else> + id="${parameters.name?html}-${itemCount}"<#rt/> + </#if> + <#if tag.contains(parameters.nameValue, itemKey)> + checked="checked"<#rt/> + </#if> + <#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> + </#if> + <#if itemCssClass?if_exists != ""> + class="${itemCssClass?html}"<#rt/> + <#else> + <#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> + </#if> + </#if> + <#if itemCssStyle?if_exists != ""> + style="${itemCssStyle?html}"<#rt/> + <#else> + <#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> + </#if> + </#if> + <#if itemTitle?if_exists != ""> + title="${itemTitle?html}"<#rt/> + <#else> + <#if parameters.title??> + title="${parameters.title?html}"<#rt/> + </#if> + </#if> + <#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" /> + <#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" /> + <#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /> + <#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> + /> +<label<#rt/> + <#if parameters.id??> + for="${parameters.id?html}-${itemCount}"<#rt/> + <#else> + for="${parameters.name?html}-${itemCount}"<#rt/> + </#if> + class="checkboxLabel">${itemValue?html}</label> +</@s.iterator> + <#else> + +</#if> +<input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" + value=""<#rt/> +<#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> +</#if> + /> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/combobox.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/combobox.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/combobox.ftl new file mode 100644 index 0000000..760ad71 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/combobox.ftl @@ -0,0 +1,103 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<script type="text/javascript"> + function autoPopulate_${parameters.escapedId?html}(targetElement) { + <#if parameters.headerKey?? && parameters.headerValue??> + if (targetElement.options[targetElement.selectedIndex].value == '${parameters.headerKey?html}') { + return; + } + </#if> + <#if parameters.emptyOption?default(false)> + if (targetElement.options[targetElement.selectedIndex].value == '') { + return; + } + </#if> + targetElement.form.elements['${parameters.name?html}'].value=targetElement.options[targetElement.selectedIndex].value; + } +</script> +<#include "/${parameters.templateDir}/simple/text.ftl" /> +<br /> +<#if parameters.list??> +<select onChange="autoPopulate_${parameters.escapedId?html}(this);"<#rt/> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" /> + <#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> + </#if> +> + <#if (parameters.headerKey?? && parameters.headerValue??)> + <option value="${parameters.headerKey?html}">${parameters.headerValue?html}</option> + </#if> + <#if parameters.emptyOption?default(false)> + <option value=""></option> + </#if> + <@s.iterator value="parameters.list"> + <#if parameters.listKey??> + <#assign tmpListKey = stack.findString(parameters.listKey) /> + <#else> + <#assign tmpListKey = stack.findString('top') /> + </#if> + <#if parameters.listValue??> + <#assign tmpListValue = stack.findString(parameters.listValue) /> + <#else> + <#assign tmpListValue = stack.findString('top') /> + </#if> + <#if parameters.listCssClass??> + <#if stack.findString(parameters.listCssClass)??> + <#assign itemCssClass= stack.findString(parameters.listCssClass)/> + <#else> + <#assign itemCssClass = ''/> + </#if> + </#if> + <#if parameters.listCssStyle??> + <#if stack.findString(parameters.listCssStyle)??> + <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/> + <#else> + <#assign itemCssStyle = ''/> + </#if> + </#if> + <#if parameters.listTitle??> + <#if stack.findString(parameters.listTitle)??> + <#assign itemTitle= stack.findString(parameters.listTitle)/> + <#else> + <#assign itemTitle = ''/> + </#if> + </#if> + <option value="${tmpListKey?html}"<#rt/> + <#if (parameters.nameValue == tmpListKey)> + selected="selected"<#rt/> + </#if> + <#if itemCssClass?if_exists != ""> + class="${itemCssClass?html}"<#rt/> + </#if> + <#if itemCssStyle?if_exists != ""> + style="${itemCssStyle?html}"<#rt/> + </#if> + <#if itemTitle?if_exists != ""> + title="${itemTitle?html}"<#rt/> + </#if> + ><#t/> + ${tmpListValue?html}<#t/> + </option><#lt/> + </@s.iterator> +</select> +</#if> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/common-attributes.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/common-attributes.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/common-attributes.ftl new file mode 100644 index 0000000..6056654 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/common-attributes.ftl @@ -0,0 +1,25 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#if parameters.accesskey??> + accesskey="${parameters.accesskey?html}" +</#if> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/controlfooter.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/controlfooter.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/controlfooter.ftl new file mode 100644 index 0000000..32bba27 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/controlfooter.ftl @@ -0,0 +1,22 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/controlheader.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/controlheader.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/controlheader.ftl new file mode 100644 index 0000000..32bba27 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/controlheader.ftl @@ -0,0 +1,22 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/css.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/css.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/css.ftl new file mode 100644 index 0000000..6623c1d --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/css.ftl @@ -0,0 +1,35 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/> +<#if parameters.cssClass?? && !(hasFieldErrors && parameters.cssErrorClass??)> + class="${parameters.cssClass?html}"<#rt/> +<#elseif parameters.cssClass?? && (hasFieldErrors && parameters.cssErrorClass??)> + class="${parameters.cssClass?html} ${parameters.cssErrorClass?html}"<#rt/> +<#elseif !(parameters.cssClass??) && (hasFieldErrors && parameters.cssErrorClass??)> + class="${parameters.cssErrorClass?html}"<#rt/> +</#if> +<#if parameters.cssStyle?? && !(hasFieldErrors && (parameters.cssErrorStyle?? || parameters.cssErrorClass??))> + style="${parameters.cssStyle?html}"<#rt/> +<#elseif hasFieldErrors && parameters.cssErrorStyle??> + style="${parameters.cssErrorStyle?html}"<#rt/> +</#if> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/debug.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/debug.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/debug.ftl new file mode 100644 index 0000000..8b2db3d --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/debug.ftl @@ -0,0 +1,82 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<script type="text/javascript"> +<!-- + function toggleDebug(debugId) { + var debugDiv = document.getElementById(debugId); + if (debugDiv) { + var display = debugDiv.style.display; + if (display == 'none') { + debugDiv.style.display = 'block'; + } else if (display == 'block') { + debugDiv.style.display = 'none'; + } + } + } +--> +</script> +<p /> + +<a href="#" onclick="toggleDebug('<#if parameters.id?if_exists != "">${parameters.id?html}<#else>debug</#if>');return false;">[Debug]</a> +<div style="display:none" id="<#if parameters.id?if_exists != "">${parameters.id?html}<#else>debug</#if>"> +<h2>Struts ValueStack Debug</h2> +<p /> + +<h3>Value Stack Contents</h3> +<table border="0" cellpadding="2" cellspacing="0" bgcolor="#DDDDDD"> + <tr><th>Object</th><th>Property Name</th><th>Property Value</th></tr> + + <#assign index=1> + <#list parameters.stackValues as stackObject> + <tr> + <td rowspan="${stackObject.value.size()}">${stackObject.key}</td> + + <#assign renderRow=false> + <#list stackObject.value.keySet() as propertyName> + <#if renderRow==true></tr><tr><#else> <#assign renderRow=false> </#if> + <td bgcolor="<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>">${propertyName}</td> + <td bgcolor="<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>"><#if stackObject.value.get(propertyName)??>${stackObject.value.get(propertyName).toString()?html}<#else>null</#if></td> + </tr> + <#assign index= index + 1> + </#list> + </#list> +</table> +<p /> + +<h3>Stack Context</h3> +<i>These items are available using the #key notation</i> +<table border="0" cellpadding="2" cellspacing="0" bgcolor="#DDDDDD"> + <tr> + <th>Key</th><th>Value</th> + </tr> + + <#assign index=1> + <#list stack.context.keySet() as contextKey> + <tr bgcolor="<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>"> + <td>${contextKey}</td> + <td><#if stack.context.get(contextKey)??>${struts.toStringSafe(stack.context.get(contextKey))?html}<#else>null</#if></td> + </tr> + <#assign index= index + 1> + </#list> +</table> +</div> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/div-close.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/div-close.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/div-close.ftl new file mode 100644 index 0000000..1957b64 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/div-close.ftl @@ -0,0 +1,23 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/div.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/div.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/div.ftl new file mode 100644 index 0000000..5c9365a --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/div.ftl @@ -0,0 +1,32 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<div<#rt/> +<#if parameters.id??> id="${parameters.id?html}"<#rt/></#if> +<#if parameters.name??> name="${parameters.name?html}"<#rt/></#if> +<#if parameters.cssClass??> class="${parameters.cssClass?html}"<#rt/></#if> +<#if parameters.cssStyle??> style="${parameters.cssStyle?html}"<#rt/></#if> +<#if parameters.title??> title="${parameters.title?html}"<#rt/></#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> +> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/doubleselect.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/doubleselect.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/doubleselect.ftl new file mode 100644 index 0000000..8880377 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/doubleselect.ftl @@ -0,0 +1,198 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#include "/${parameters.templateDir}/simple/select.ftl" /> +<#assign startCount = 0/> +<#if parameters.headerKey?? && parameters.headerValue??> + <#assign startCount = startCount + 1/> +</#if> +<#if parameters.emptyOption??> + <#assign startCount = startCount + 1/> +</#if> + +<br/> +<select<#rt/> + name="${parameters.doubleName?default("")?html}"<#rt/> +<#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> +</#if> +<#if parameters.doubleTabindex??> + tabindex="${parameters.doubleTabindex?html}"<#rt/> +</#if> +<#if parameters.doubleId??> + id="${parameters.doubleId?html}"<#rt/> +</#if> +<#if parameters.doubleCss??> + class="${parameters.doubleCss?html}"<#rt/> +</#if> +<#if parameters.doubleStyle??> + style="${parameters.doubleStyle?html}"<#rt/> +</#if> +<#if parameters.title??> + title="${parameters.title?html}"<#rt/> +</#if> +<#if parameters.multiple?default(false)> + multiple="multiple"<#rt/> +</#if> +<#if parameters.get("doubleSize")??> + size="${parameters.get("doubleSize")?html}"<#rt/> +</#if> +<#if parameters.doubleMultiple?default(false)> + multiple="multiple"<#rt/> +</#if> +<#if parameters.doubleDisabled?default(false)> + disabled="disabled"<#rt/> +</#if> + > +</select> +<#if parameters.doubleMultiple?default(false)> +<input type="hidden" id="__multiselect_${parameters.doubleId?html}" + name="__multiselect_${parameters.doubleName?default("")?html}" value=""<#rt/> + <#if parameters.doubleDisabled?default(false)> + disabled="disabled"<#rt/> + </#if> + /> +</#if> +<script type="text/javascript"> + <#assign itemCount = startCount/> + var ${parameters.id}Group = new Array(${parameters.listSize} + ${startCount}); + for (i = 0; i < (${parameters.listSize} + ${startCount}); i++) + ${parameters.id}Group[i] = new Array(); + + <@s.iterator value="parameters.list"> + <#if parameters.listKey??> + <#assign itemKey = stack.findValue(parameters.listKey)/> + <#else> + <#assign itemKey = stack.findValue('top')/> + </#if> + <#if parameters.listValue??> + <#assign itemValue = stack.findString(parameters.listValue)/> + <#else> + <#assign itemValue = stack.findString('top')/> + </#if> + <#assign doubleItemCount = 0/> + <#if parameters.doubleHeaderKey?? && parameters.doubleHeaderValue??> + ${parameters.id}Group[${itemCount}][${doubleItemCount}] = new Option("${doubleHeaderValue?js_string}", "${doubleHeaderKey?js_string}"); + <#assign doubleItemCount = doubleItemCount + 1/> + </#if> + <#if parameters.doubleEmptyOption??> + ${parameters.id}Group[${itemCount}][${doubleItemCount}] = new Option("", ""); + <#assign doubleItemCount = doubleItemCount + 1/> + </#if> + <@s.iterator value="${parameters.doubleList}"> + <#if parameters.doubleListKey??> + <#assign doubleItemKey = stack.findValue(parameters.doubleListKey)/> + <#else> + <#assign doubleItemKey = stack.findValue('top')/> + </#if> + <#assign doubleItemKeyStr = doubleItemKey.toString() /> + <#if parameters.doubleListValue??> + <#assign doubleItemValue = stack.findString(parameters.doubleListValue)/> + <#else> + <#assign doubleItemValue = stack.findString('top')/> + </#if> + <#if parameters.doubleListCssClass??> + <#if stack.findString(parameters.doubleListCssClass)??> + <#assign itemDoubleCssClass= stack.findString(parameters.doubleListCssClass)/> + <#else> + <#assign itemDoubleCssClass = ''/> + </#if> + </#if> + <#if parameters.doubleListCssStyle??> + <#if stack.findString(parameters.doubleListCssStyle)??> + <#assign itemDoubleCssStyle= stack.findString(parameters.doubleListCssStyle)/> + <#else> + <#assign itemDoubleCssStyle = ''/> + </#if> + </#if> + <#if parameters.doubleListTitle??> + <#if stack.findString(parameters.doubleListTitle)??> + <#assign itemDoubleTitle= stack.findString(parameters.doubleListTitle)/> + <#else> + <#assign itemDoubleTitle = ''/> + </#if> + </#if> + ${parameters.id}Group[${itemCount}][${doubleItemCount}] = new Option("${doubleItemValue?js_string}", "${doubleItemKeyStr?js_string}"); + <#if itemDoubleCssClass?if_exists != ""> + ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("class","${itemDoubleCssClass?html}"); + </#if> + <#if itemDoubleCssStyle?if_exists != ""> + ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("style","${itemDoubleCssStyle?html}"); + </#if> + <#if itemDoubleTitle?if_exists != ""> + ${parameters.id}Group[${itemCount}][${doubleItemCount}].setAttribute("title","${itemDoubleTitle?html}"); + </#if> + + <#assign doubleItemCount = doubleItemCount + 1/> + </@s.iterator> + <#assign itemCount = itemCount + 1/> + </@s.iterator> + + var ${parameters.id}Temp = document.${parameters.formName}.${parameters.doubleId}; + <#assign itemCount = startCount/> + <#assign redirectTo = 0/> + <@s.iterator value="parameters.list"> + <#if parameters.listKey??> + <#assign itemKey = stack.findValue(parameters.listKey)/> + <#else> + <#assign itemKey = stack.findValue('top')/> + </#if> + <#if tag.contains(parameters.nameValue, itemKey)> + <#assign redirectTo = itemCount/> + </#if> + <#assign itemCount = itemCount + 1/> + </@s.iterator> + ${parameters.id}Redirect(${redirectTo}); + function ${parameters.id}Redirect(x) { + var selected = false; + for (m = ${parameters.id}Temp.options.length - 1; m >= 0; m--) { + ${parameters.id}Temp.remove(m); + } + + for (i = 0; i < ${parameters.id}Group[x].length; i++) { + ${parameters.id}Temp.options[i] = new Option(${parameters.id}Group[x][i].text, ${parameters.id}Group[x][i].value); + <#if parameters.doubleNameValue?exists> + <#if parameters.doubleMultiple?exists> + for (j = 0; j < ${parameters.doubleNameValue}. + length; + j++ + ) + { + if (${parameters.id}Temp.options[i].value == ${parameters.doubleNameValue?js_string}[j]) { + ${parameters.id}Temp.options[i].selected = true; + selected = true; + } + } + <#else> + if (${parameters.id}Temp.options[i].value == '${parameters.doubleNameValue?js_string}') { + ${parameters.id}Temp.options[i].selected = true; + selected = true; + } + </#if> + </#if> + } + + if ((${parameters.id}Temp.options.length > 0) && (! selected)) { + ${parameters.id}Temp.options[0].selected = true; + } + } +</script> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/dynamic-attributes.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/dynamic-attributes.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/dynamic-attributes.ftl new file mode 100644 index 0000000..485c20c --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/dynamic-attributes.ftl @@ -0,0 +1,34 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#if (parameters.dynamicAttributes?? && parameters.dynamicAttributes?size > 0)><#rt/> +<#assign aKeys = parameters.dynamicAttributes.keySet()><#rt/> +<#list aKeys as aKey><#rt/> + <#assign keyValue = parameters.dynamicAttributes[aKey]/> + <#if keyValue?is_string> + <#assign value = struts.translateVariables(keyValue)!keyValue/> + <#else> + <#assign value = keyValue?string/> + </#if> + ${aKey}="${value?html}"<#rt/> +</#list><#rt/> +</#if><#rt/> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/empty.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/empty.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/empty.ftl new file mode 100644 index 0000000..32bba27 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/empty.ftl @@ -0,0 +1,22 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/fielderror.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/fielderror.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/fielderror.ftl new file mode 100644 index 0000000..a37ff1f --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/fielderror.ftl @@ -0,0 +1,82 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#if fieldErrors??><#t/> + <#assign eKeys = fieldErrors.keySet()><#t/> + <#assign eKeysSize = eKeys.size()><#t/> + <#assign doneStartUlTag=false><#t/> + <#assign doneEndUlTag=false><#t/> + <#assign haveMatchedErrorField=false><#t/> + <#if (fieldErrorFieldNames?size > 0) ><#t/> + <#list fieldErrorFieldNames as fieldErrorFieldName><#t/> + <#list eKeys as eKey><#t/> + <#if (eKey = fieldErrorFieldName)><#t/> + <#assign haveMatchedErrorField=true><#t/> + <#assign eValue = fieldErrors[fieldErrorFieldName]><#t/> + <#if (haveMatchedErrorField && (!doneStartUlTag))><#t/> + <ul<#rt/> + <#if parameters.id?if_exists != ""> + id="${parameters.id?html}"<#rt/> + </#if> + <#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> + <#else> + class="errorMessage"<#rt/> + </#if> + <#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> + </#if> + > + <#assign doneStartUlTag=true><#t/> + </#if><#t/> + <#list eValue as eEachValue><#t/> + <li><span><#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if></span></li> + </#list><#t/> + </#if><#t/> + </#list><#t/> + </#list><#t/> + <#if (haveMatchedErrorField && (!doneEndUlTag))><#t/> + </ul> + <#assign doneEndUlTag=true><#t/> + </#if><#t/> + <#else><#t/> + <#if (eKeysSize > 0)><#t/> + <ul<#rt/> + <#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> + <#else> + class="errorMessage"<#rt/> + </#if> + <#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> + </#if> + > + <#list eKeys as eKey><#t/> + <#assign eValue = fieldErrors[eKey]><#t/> + <#list eValue as eEachValue><#t/> + <li><span><#if parameters.escape>${eEachValue!?html}<#else>${eEachValue!}</#if></span></li> + </#list><#t/> + </#list><#t/> + </ul> + </#if><#t/> + </#if><#t/> +</#if><#t/> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/file.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/file.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/file.ftl new file mode 100644 index 0000000..c7b7a83 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/file.ftl @@ -0,0 +1,48 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<input type="file"<#rt/> + name="${parameters.name?default("")?html}"<#rt/> +<#if parameters.get("size")??> + size="${parameters.get("size")?html}"<#rt/> +</#if> + value=""<#rt/> +<#if parameters.disabled?default(false)> + disabled="disabled"<#rt/> +</#if> +<#if parameters.accept??> + accept="${parameters.accept?html}"<#rt/> +</#if> +<#if parameters.tabindex??> + tabindex="${parameters.tabindex?html}"<#rt/> +</#if> +<#if parameters.id??> + id="${parameters.id?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" /> +<#if parameters.title??> + title="${parameters.title?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" /> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> +/> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/form-close.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/form-close.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/form-close.ftl new file mode 100644 index 0000000..360eef9 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/form-close.ftl @@ -0,0 +1,113 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +</form> + +<#if (parameters.customOnsubmitEnabled?if_exists)> +<script type="text/javascript"> +<#-- + Enable auto-select of optiontransferselect tag's entries upon containing form's + submission. +--> +<#if (parameters.optiontransferselectIds?if_exists?size > 0)> + var containingForm = document.getElementById("${parameters.id}"); + <#assign selectObjIds = parameters.optiontransferselectIds.keySet() /> + <#list selectObjIds as selectObjectId> + StrutsUtils.addEventListener(containingForm, "submit", + function(evt) { + var selectObj = document.getElementById("${selectObjectId}"); + <#if parameters.optiontransferselectIds.get(selectObjectId)??> + <#assign selectTagHeaderKey = parameters.optiontransferselectIds.get(selectObjectId)/> + selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey}"); + <#else> + selectAllOptionsExceptSome(selectObj, "key", ""); + </#if> + }, true); + </#list> +</#if> +<#if (parameters.inputtransferselectIds?if_exists?size > 0)> + var containingForm = document.getElementById("${parameters.id}"); + <#assign selectObjIds = parameters.inputtransferselectIds.keySet() /> + <#list selectObjIds as selectObjectId> + StrutsUtils.addEventListener(containingForm, "submit", + function(evt) { + var selectObj = document.getElementById("${selectObjectId}"); + <#if parameters.inputtransferselectIds.get(selectObjectId)??> + <#assign selectTagHeaderKey = parameters.inputtransferselectIds.get(selectObjectId)/> + selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey}"); + <#else> + selectAllOptionsExceptSome(selectObj, "key", ""); + </#if> + }, true); + </#list> +</#if> +<#if (parameters.optiontransferselectDoubleIds?if_exists?size > 0)> + var containingForm = document.getElementById("${parameters.id}"); + <#assign selectDoubleObjIds = parameters.optiontransferselectDoubleIds.keySet() /> + <#list selectDoubleObjIds as selectObjId> + StrutsUtils.addEventListener(containingForm, "submit", + function(evt) { + var selectObj = document.getElementById("${selectObjId}"); + <#if parameters.optiontransferselectDoubleIds.get(selectObjId)??> + <#assign selectTagHeaderKey = parameters.optiontransferselectDoubleIds.get(selectObjId)/> + selectAllOptionsExceptSome(selectObj, "key", "${selectTagHeaderKey}"); + <#else> + selectAllOptionsExceptSome(selectObj, "key", ""); + </#if> + }, true); + </#list> +</#if> + + +<#-- + Enable auto-select of all elements of updownselect tag upon its containing form + submission +--> +<#if (parameters.updownselectIds?if_exists?size > 0)> + var containingForm = document.getElementById("${parameters.id}"); + <#assign tmpIds = parameters.updownselectIds.keySet() /> + <#list tmpIds as tmpId> + StrutsUtils.addEventListener(containingForm, "submit", + function(evt) { + var updownselectObj = document.getElementById("${tmpId}"); + <#if parameters.updownselectIds.get(tmpId)??> + <#assign tmpHeaderKey = parameters.updownselectIds.get(tmpId) /> + selectAllOptionsExceptSome(updownselectObj, "key", "${tmpHeaderKey}"); + <#else> + selectAllOptionsExceptSome(updownselectObj, "key", ""); + </#if> + }, true); + </#list> +</#if> +</script> +</#if> + + +<#-- + Code that will add javascript needed for tooltips +--><#t/> +<#if (parameters.hasTooltip?default(false))><#t/> + <#lt/><!-- javascript that is needed for tooltips --> + <#lt/><script type="text/javascript" src='<@s.url value="/struts/domTT.js" includeParams="none" encode="false" />'></script> + <#lt/><link rel="stylesheet" type="text/css" href="<@s.url value="/struts/domTT.css" includeParams="none" encode="false" />"/> + +</#if><#t/> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/form-common.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/form-common.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/form-common.ftl new file mode 100644 index 0000000..9b46381 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/form-common.ftl @@ -0,0 +1,67 @@ +<#-- +/* + * $Id: form.ftl 590812 2007-10-31 20:32:54Z apetrelli $ + * + * 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. + */ +--> +<#if (parameters.validate?default(false) == false)><#rt/> + <#if parameters.onsubmit??><#rt/> + ${tag.addParameter('onsubmit', "${parameters.onsubmit}") } + </#if> +</#if> +<form<#rt/> +<#if parameters.id??> + id="${parameters.id?html}"<#rt/> +</#if> +<#if parameters.name??> + name="${parameters.name?html}"<#rt/> +</#if> +<#if parameters.onsubmit??> + onsubmit="${parameters.onsubmit?html}"<#rt/> +</#if> +<#if parameters.onreset??> + onreset="${parameters.onreset?html}"<#rt/> +</#if> +<#if parameters.action??> + action="${parameters.action?html}"<#rt/> +</#if> +<#if parameters.target??> + target="${parameters.target?html}"<#rt/> +</#if> +<#if parameters.method??> + method="${parameters.method?html}"<#rt/> +<#else> + method="post"<#rt/> +</#if> +<#if parameters.enctype??> + enctype="${parameters.enctype?html}"<#rt/> +</#if> +<#if parameters.cssClass??> + class="${parameters.cssClass?html}"<#rt/> +</#if> +<#if parameters.cssStyle??> + style="${parameters.cssStyle?html}"<#rt/> +</#if> +<#if parameters.title??> + title="${parameters.title?html}"<#rt/> +</#if> +<#if parameters.acceptcharset??> + accept-charset="${parameters.acceptcharset?html}"<#rt/> +</#if> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" /> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/form.ftl ---------------------------------------------------------------------- diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/form.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/form.ftl new file mode 100644 index 0000000..f02eea9 --- /dev/null +++ b/themes_override/src/main/webapp/WEB-INF/template/simple/form.ftl @@ -0,0 +1,27 @@ +<#-- +/* + * $Id$ + * + * 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. + */ +--> +<#include "/${parameters.templateDir}/${parameters.expandTheme}/form-common.ftl" /> +<#if parameters.onreset??> + onreset="${parameters.onreset?html}"<#rt/> +</#if> +>