From dc062521ea142447749616cc9babb2c75b9b162c Mon Sep 17 00:00:00 2001 From: Fernando Pietchaki Domingues <fpd09@inf.ufpr.br> Date: Thu, 24 Jan 2013 11:21:05 -0200 Subject: [PATCH] arquivos --- .classpath | 12 + .gitignore | 1 + .project | 50 ++ pom.xml | 472 ++++++++++++++++++ .../ufpr/c3sl/participatorio/Ministerio.java | 12 + .../Ministerio_Roo_Configurable.aj | 13 + .../participatorio/Ministerio_Roo_JavaBean.aj | 18 + .../Ministerio_Roo_Jpa_ActiveRecord.aj | 77 +++ .../Ministerio_Roo_Jpa_Entity.aj | 43 ++ .../participatorio/Ministerio_Roo_ToString.aj | 16 + .../br/ufpr/c3sl/participatorio/Projeto.java | 121 +++++ .../Projeto_Roo_Configurable.aj | 13 + .../participatorio/Projeto_Roo_JavaBean.aj | 337 +++++++++++++ .../Projeto_Roo_Jpa_ActiveRecord.aj | 77 +++ .../participatorio/Projeto_Roo_Jpa_Entity.aj | 43 ++ .../participatorio/Projeto_Roo_ToString.aj | 16 + .../c3sl/participatorio/enums/TipoAcao.java | 6 + .../participatorio/enums/TipoDemanda.java | 7 + .../participatorio/enums/TipoDiasSemana.java | 6 + .../participatorio/enums/TipoProjeto.java | 6 + .../c3sl/participatorio/enums/TipoStatus.java | 6 + .../enums/TipoTemporalidade.java | 6 + ...plicationConversionServiceFactoryBean.java | 18 + ...erviceFactoryBean_Roo_ConversionService.aj | 79 +++ .../web/MinisterioController.java | 12 + .../MinisterioController_Roo_Controller.aj | 102 ++++ .../participatorio/web/ProjetoController.java | 12 + .../web/ProjetoController_Roo_Controller.aj | 125 +++++ src/main/resources/META-INF/persistence.xml | 16 + .../spring/applicationContext-security.xml | 28 ++ .../META-INF/spring/applicationContext.xml | 70 +++ src/main/resources/log4j.properties | 17 + .../webapp/WEB-INF/classes/alt.properties | 1 + .../WEB-INF/classes/standard.properties | 1 + .../WEB-INF/i18n/application.properties | 58 +++ .../webapp/WEB-INF/i18n/messages.properties | 99 ++++ src/main/webapp/WEB-INF/layouts/default.jspx | 28 ++ src/main/webapp/WEB-INF/layouts/layouts.xml | 19 + .../webapp/WEB-INF/spring/webmvc-config.xml | 77 +++ src/main/webapp/WEB-INF/tags/form/create.tagx | 61 +++ .../webapp/WEB-INF/tags/form/dependency.tagx | 25 + .../WEB-INF/tags/form/fields/checkbox.tagx | 38 ++ .../WEB-INF/tags/form/fields/column.tagx | 63 +++ .../WEB-INF/tags/form/fields/datetime.tagx | 75 +++ .../WEB-INF/tags/form/fields/display.tagx | 48 ++ .../WEB-INF/tags/form/fields/editor.tagx | 60 +++ .../WEB-INF/tags/form/fields/input.tagx | 108 ++++ .../WEB-INF/tags/form/fields/reference.tagx | 41 ++ .../WEB-INF/tags/form/fields/select.tagx | 199 ++++++++ .../WEB-INF/tags/form/fields/simple.tagx | 35 ++ .../WEB-INF/tags/form/fields/table.tagx | 162 ++++++ .../WEB-INF/tags/form/fields/textarea.tagx | 47 ++ src/main/webapp/WEB-INF/tags/form/find.tagx | 31 ++ src/main/webapp/WEB-INF/tags/form/list.tagx | 31 ++ src/main/webapp/WEB-INF/tags/form/show.tagx | 103 ++++ src/main/webapp/WEB-INF/tags/form/update.tagx | 47 ++ .../webapp/WEB-INF/tags/menu/category.tagx | 25 + src/main/webapp/WEB-INF/tags/menu/item.tagx | 29 ++ src/main/webapp/WEB-INF/tags/menu/menu.tagx | 13 + .../webapp/WEB-INF/tags/util/language.tagx | 31 ++ .../WEB-INF/tags/util/load-scripts.tagx | 29 ++ .../webapp/WEB-INF/tags/util/pagination.tagx | 87 ++++ src/main/webapp/WEB-INF/tags/util/panel.tagx | 33 ++ .../webapp/WEB-INF/tags/util/placeholder.tagx | 5 + src/main/webapp/WEB-INF/tags/util/theme.tagx | 36 ++ .../WEB-INF/views/dataAccessFailure.jspx | 30 ++ src/main/webapp/WEB-INF/views/footer.jspx | 37 ++ src/main/webapp/WEB-INF/views/header.jspx | 11 + .../webapp/WEB-INF/views/index-template.jspx | 11 + src/main/webapp/WEB-INF/views/index.jspx | 14 + src/main/webapp/WEB-INF/views/login.jspx | 60 +++ src/main/webapp/WEB-INF/views/menu.jspx | 15 + .../WEB-INF/views/ministerios/create.jspx | 9 + .../WEB-INF/views/ministerios/list.jspx | 10 + .../WEB-INF/views/ministerios/show.jspx | 8 + .../WEB-INF/views/ministerios/update.jspx | 8 + .../WEB-INF/views/ministerios/views.xml | 16 + .../WEB-INF/views/projetoes/create.jspx | 48 ++ .../webapp/WEB-INF/views/projetoes/list.jspx | 15 + .../webapp/WEB-INF/views/projetoes/show.jspx | 47 ++ .../WEB-INF/views/projetoes/update.jspx | 47 ++ .../webapp/WEB-INF/views/projetoes/views.xml | 16 + .../WEB-INF/views/resourceNotFound.jspx | 29 ++ .../WEB-INF/views/uncaughtException.jspx | 29 ++ src/main/webapp/WEB-INF/views/views.xml | 24 + src/main/webapp/WEB-INF/web.xml | 106 ++++ src/main/webapp/images/add.png | Bin 0 -> 739 bytes src/main/webapp/images/banner-graphic.png | Bin 0 -> 13194 bytes src/main/webapp/images/create.png | Bin 0 -> 739 bytes src/main/webapp/images/delete.png | Bin 0 -> 740 bytes src/main/webapp/images/en.png | Bin 0 -> 599 bytes src/main/webapp/images/favicon.ico | Bin 0 -> 1406 bytes src/main/webapp/images/list.png | Bin 0 -> 473 bytes src/main/webapp/images/resultset_first.png | Bin 0 -> 522 bytes src/main/webapp/images/resultset_last.png | Bin 0 -> 524 bytes src/main/webapp/images/resultset_next.png | Bin 0 -> 395 bytes src/main/webapp/images/resultset_previous.png | Bin 0 -> 389 bytes src/main/webapp/images/show.png | Bin 0 -> 879 bytes src/main/webapp/images/springsource-logo.png | Bin 0 -> 4974 bytes src/main/webapp/images/update.png | Bin 0 -> 807 bytes src/main/webapp/styles/alt.css | 369 ++++++++++++++ src/main/webapp/styles/standard.css | 373 ++++++++++++++ 102 files changed, 4914 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 pom.xml create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Configurable.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_JavaBean.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_ActiveRecord.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_Entity.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_ToString.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Configurable.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_JavaBean.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_ActiveRecord.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_Entity.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_ToString.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoAcao.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDemanda.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDiasSemana.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoProjeto.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoStatus.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/enums/TipoTemporalidade.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController_Roo_Controller.aj create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController.java create mode 100644 src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController_Roo_Controller.aj create mode 100644 src/main/resources/META-INF/persistence.xml create mode 100644 src/main/resources/META-INF/spring/applicationContext-security.xml create mode 100644 src/main/resources/META-INF/spring/applicationContext.xml create mode 100644 src/main/resources/log4j.properties create mode 100644 src/main/webapp/WEB-INF/classes/alt.properties create mode 100644 src/main/webapp/WEB-INF/classes/standard.properties create mode 100644 src/main/webapp/WEB-INF/i18n/application.properties create mode 100644 src/main/webapp/WEB-INF/i18n/messages.properties create mode 100644 src/main/webapp/WEB-INF/layouts/default.jspx create mode 100644 src/main/webapp/WEB-INF/layouts/layouts.xml create mode 100644 src/main/webapp/WEB-INF/spring/webmvc-config.xml create mode 100644 src/main/webapp/WEB-INF/tags/form/create.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/dependency.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/checkbox.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/column.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/display.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/editor.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/input.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/reference.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/select.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/simple.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/table.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/find.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/list.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/show.tagx create mode 100644 src/main/webapp/WEB-INF/tags/form/update.tagx create mode 100644 src/main/webapp/WEB-INF/tags/menu/category.tagx create mode 100644 src/main/webapp/WEB-INF/tags/menu/item.tagx create mode 100644 src/main/webapp/WEB-INF/tags/menu/menu.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/language.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/load-scripts.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/pagination.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/panel.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/placeholder.tagx create mode 100644 src/main/webapp/WEB-INF/tags/util/theme.tagx create mode 100644 src/main/webapp/WEB-INF/views/dataAccessFailure.jspx create mode 100644 src/main/webapp/WEB-INF/views/footer.jspx create mode 100644 src/main/webapp/WEB-INF/views/header.jspx create mode 100644 src/main/webapp/WEB-INF/views/index-template.jspx create mode 100644 src/main/webapp/WEB-INF/views/index.jspx create mode 100644 src/main/webapp/WEB-INF/views/login.jspx create mode 100644 src/main/webapp/WEB-INF/views/menu.jspx create mode 100644 src/main/webapp/WEB-INF/views/ministerios/create.jspx create mode 100644 src/main/webapp/WEB-INF/views/ministerios/list.jspx create mode 100644 src/main/webapp/WEB-INF/views/ministerios/show.jspx create mode 100644 src/main/webapp/WEB-INF/views/ministerios/update.jspx create mode 100644 src/main/webapp/WEB-INF/views/ministerios/views.xml create mode 100644 src/main/webapp/WEB-INF/views/projetoes/create.jspx create mode 100644 src/main/webapp/WEB-INF/views/projetoes/list.jspx create mode 100644 src/main/webapp/WEB-INF/views/projetoes/show.jspx create mode 100644 src/main/webapp/WEB-INF/views/projetoes/update.jspx create mode 100644 src/main/webapp/WEB-INF/views/projetoes/views.xml create mode 100644 src/main/webapp/WEB-INF/views/resourceNotFound.jspx create mode 100644 src/main/webapp/WEB-INF/views/uncaughtException.jspx create mode 100644 src/main/webapp/WEB-INF/views/views.xml create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/images/add.png create mode 100644 src/main/webapp/images/banner-graphic.png create mode 100644 src/main/webapp/images/create.png create mode 100644 src/main/webapp/images/delete.png create mode 100644 src/main/webapp/images/en.png create mode 100644 src/main/webapp/images/favicon.ico create mode 100644 src/main/webapp/images/list.png create mode 100644 src/main/webapp/images/resultset_first.png create mode 100644 src/main/webapp/images/resultset_last.png create mode 100644 src/main/webapp/images/resultset_next.png create mode 100644 src/main/webapp/images/resultset_previous.png create mode 100644 src/main/webapp/images/show.png create mode 100644 src/main/webapp/images/springsource-logo.png create mode 100644 src/main/webapp/images/update.png create mode 100644 src/main/webapp/styles/alt.css create mode 100644 src/main/webapp/styles/standard.css diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..245ce4b --- /dev/null +++ b/.classpath @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java"/> + <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> + </attributes> + </classpathentry> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/.gitignore b/.gitignore index 22f68d3..9fd17ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target/ /src/main/resources/META-INF/spring/database.properties +/log.roo diff --git a/.project b/.project new file mode 100644 index 0000000..c6c7127 --- /dev/null +++ b/.project @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>participatorio</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.common.project.facet.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.ajdt.core.ajbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.springframework.ide.eclipse.core.springbuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.wst.validation.validationbuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> + <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> + <nature>org.eclipse.m2e.core.maven2Nature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.ajdt.ui.ajnature</nature> + <nature>com.springsource.sts.roo.core.nature</nature> + <nature>org.springframework.ide.eclipse.core.springnature</nature> + <nature>org.eclipse.wst.common.project.facet.core.nature</nature> + <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + </natures> +</projectDescription> diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..fec0c0b --- /dev/null +++ b/pom.xml @@ -0,0 +1,472 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>br.ufpr.c3sl.participatorio</groupId> + <artifactId>participatorio</artifactId> + <packaging>war</packaging> + <version>0.1.0.BUILD-SNAPSHOT</version> + <name>participatorio</name> + <properties> + <aspectj.version>1.7.0</aspectj.version> + <java.version>6</java.version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <roo.version>1.2.3.RELEASE</roo.version> + <slf4j.version>1.7.2</slf4j.version> + <spring.version>3.2.0.RELEASE</spring.version> + <spring-security.version>3.1.0.RELEASE</spring-security.version> + </properties> + <repositories> + <repository> + <id>spring-maven-release</id> + <name>Spring Maven Release Repository</name> + <url>http://maven.springframework.org/release</url> + </repository> + <repository> + <id>spring-maven-milestone</id> + <name>Spring Maven Milestone Repository</name> + <url>http://maven.springframework.org/milestone</url> + </repository> + <repository> + <id>spring-roo-repository</id> + <name>Spring Roo Repository</name> + <url>http://spring-roo-repository.springsource.org/release</url> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>spring-maven-release</id> + <name>Spring Maven Release Repository</name> + <url>http://maven.springframework.org/release</url> + </pluginRepository> + <pluginRepository> + <id>spring-maven-milestone</id> + <name>Spring Maven Milestone Repository</name> + <url>http://maven.springframework.org/milestone</url> + </pluginRepository> + <pluginRepository> + <id>spring-roo-repository</id> + <name>Spring Roo Repository</name> + <url>http://spring-roo-repository.springsource.org/release</url> + </pluginRepository> + </pluginRepositories> + <dependencies> + <!-- General dependencies for standard applications --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.10</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.16</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjrt</artifactId> + <version>${aspectj.version}</version> + </dependency> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjweaver</artifactId> + <version>${aspectj.version}</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.5</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>net.sf.flexjson</groupId> + <artifactId>flexjson</artifactId> + <version>2.1</version> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.1</version> + </dependency> + <!-- ROO dependencies --> + <dependency> + <groupId>org.springframework.roo</groupId> + <artifactId>org.springframework.roo.annotations</artifactId> + <version>${roo.version}</version> + <scope>provided</scope> + </dependency> + <!-- Spring dependencies --> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-core</artifactId> + <version>${spring.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>${spring.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-aop</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-aspects</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>2.2.9</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + <version>4.1.8.Final</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + <version>4.1.8.Final</version> + <exclusions> + <exclusion> + <groupId>cglib</groupId> + <artifactId>cglib</artifactId> + </exclusion> + <exclusion> + <groupId>dom4j</groupId> + <artifactId>dom4j</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.0-api</artifactId> + <version>1.0.1.Final</version> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>3.2.1</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-validator</artifactId> + <version>4.3.1.Final</version> + </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + <version>1.0.0.GA</version> + </dependency> + <dependency> + <groupId>cglib</groupId> + <artifactId>cglib-nodep</artifactId> + <version>2.2.2</version> + </dependency> + <dependency> + <groupId>javax.transaction</groupId> + <artifactId>jta</artifactId> + <version>1.1</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-orm</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>commons-pool</groupId> + <artifactId>commons-pool</artifactId> + <version>1.5.6</version> + </dependency> + <dependency> + <groupId>commons-dbcp</groupId> + <artifactId>commons-dbcp</artifactId> + <version>1.3</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + <exclusion> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-webmvc</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework.webflow</groupId> + <artifactId>spring-js-resources</artifactId> + <version>2.2.1.RELEASE</version> + </dependency> + <dependency> + <groupId>commons-digester</groupId> + <artifactId>commons-digester</artifactId> + <version>2.1</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-fileupload</groupId> + <artifactId>commons-fileupload</artifactId> + <version>1.2.2</version> + </dependency> + <dependency> + <groupId>javax.servlet.jsp.jstl</groupId> + <artifactId>jstl-api</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.glassfish.web</groupId> + <artifactId>jstl-impl</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>javax.el</groupId> + <artifactId>el-api</artifactId> + <version>2.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + <version>1.6</version> + </dependency> + <dependency> + <groupId>javax.servlet.jsp</groupId> + <artifactId>jsp-api</artifactId> + <version>2.1</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.5</version> + </dependency> + <dependency> + <groupId>org.apache.tiles</groupId> + <artifactId>tiles-jsp</artifactId> + <version>2.2.2</version> + </dependency> + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-core</artifactId> + <version>${spring-security.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-config</artifactId> + <version>${spring-security.version}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-web</artifactId> + <version>${spring-security.version}</version> + </dependency> + <dependency> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-taglibs</artifactId> + <version>${spring-security.version}</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>2.2</version> + <!-- <configuration> <webXml>target/web.xml</webXml> </configuration> --> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>2.5.1</version> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + <encoding>${project.build.sourceEncoding}</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>aspectj-maven-plugin</artifactId> + <version>1.2</version> + <!-- NB: do not use 1.3 or 1.3.x due to MASPECTJ-90 and do not use 1.4 due to declare parents issue --> + <dependencies> + <!-- NB: You must use Maven 2.0.9 or above or these are ignored (see MNG-2972) --> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjrt</artifactId> + <version>${aspectj.version}</version> + </dependency> + <dependency> + <groupId>org.aspectj</groupId> + <artifactId>aspectjtools</artifactId> + <version>${aspectj.version}</version> + </dependency> + </dependencies> + <executions> + <execution> + <goals> + <goal>compile</goal> + <goal>test-compile</goal> + </goals> + </execution> + </executions> + <configuration> + <outxml>true</outxml> + <aspectLibraries> + <aspectLibrary> + <groupId>org.springframework</groupId> + <artifactId>spring-aspects</artifactId> + </aspectLibrary> + </aspectLibraries> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>2.6</version> + <configuration> + <encoding>${project.build.sourceEncoding}</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.12</version> + <configuration> + <printSummary>false</printSummary> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + <excludes> + <exclude>**/*_Roo_*</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.3</version> + <configuration> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.7</version> + </plugin> + <!-- IDE --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-eclipse-plugin</artifactId> + <version>2.7</version> + <!-- Note 2.8 does not work with AspectJ aspect path --> + <configuration> + <downloadSources>true</downloadSources> + <downloadJavadocs>false</downloadJavadocs> + <wtpversion>2.0</wtpversion> + <additionalBuildcommands> + <buildCommand> + <name>org.eclipse.ajdt.core.ajbuilder</name> + <arguments> + <aspectPath>org.springframework.aspects</aspectPath> + </arguments> + </buildCommand> + <buildCommand> + <name>org.springframework.ide.eclipse.core.springbuilder</name> + </buildCommand> + </additionalBuildcommands> + <additionalProjectnatures> + <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature> + <projectnature>com.springsource.sts.roo.core.nature</projectnature> + <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> + </additionalProjectnatures> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-idea-plugin</artifactId> + <version>2.2</version> + <configuration> + <downloadSources>true</downloadSources> + <dependenciesAsLibraries>true</dependenciesAsLibraries> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>tomcat-maven-plugin</artifactId> + <version>1.1</version> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-maven-plugin</artifactId> + <version>8.1.4.v20120524</version> + <configuration> + <webAppConfig> + <contextPath>/${project.name}</contextPath> + </webAppConfig> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio.java b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio.java new file mode 100644 index 0000000..13b67b2 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio.java @@ -0,0 +1,12 @@ +package br.ufpr.c3sl.participatorio; + +import org.springframework.roo.addon.javabean.RooJavaBean; +import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord; +import org.springframework.roo.addon.tostring.RooToString; + +@RooJavaBean +@RooToString +@RooJpaActiveRecord +public class Ministerio { + private String nome; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Configurable.aj b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Configurable.aj new file mode 100644 index 0000000..5f22e84 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Configurable.aj @@ -0,0 +1,13 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; +import org.springframework.beans.factory.annotation.Configurable; + +privileged aspect Ministerio_Roo_Configurable { + + declare @type: Ministerio: @Configurable; + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_JavaBean.aj b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_JavaBean.aj new file mode 100644 index 0000000..3495809 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_JavaBean.aj @@ -0,0 +1,18 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; + +privileged aspect Ministerio_Roo_JavaBean { + + public String Ministerio.getNome() { + return this.nome; + } + + public void Ministerio.setNome(String nome) { + this.nome = nome; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_ActiveRecord.aj b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_ActiveRecord.aj new file mode 100644 index 0000000..4bb2068 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_ActiveRecord.aj @@ -0,0 +1,77 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import org.springframework.transaction.annotation.Transactional; + +privileged aspect Ministerio_Roo_Jpa_ActiveRecord { + + @PersistenceContext + transient EntityManager Ministerio.entityManager; + + public static final EntityManager Ministerio.entityManager() { + EntityManager em = new Ministerio().entityManager; + if (em == null) throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)"); + return em; + } + + public static long Ministerio.countMinisterios() { + return entityManager().createQuery("SELECT COUNT(o) FROM Ministerio o", Long.class).getSingleResult(); + } + + public static List<Ministerio> Ministerio.findAllMinisterios() { + return entityManager().createQuery("SELECT o FROM Ministerio o", Ministerio.class).getResultList(); + } + + public static Ministerio Ministerio.findMinisterio(Long id) { + if (id == null) return null; + return entityManager().find(Ministerio.class, id); + } + + public static List<Ministerio> Ministerio.findMinisterioEntries(int firstResult, int maxResults) { + return entityManager().createQuery("SELECT o FROM Ministerio o", Ministerio.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList(); + } + + @Transactional + public void Ministerio.persist() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.persist(this); + } + + @Transactional + public void Ministerio.remove() { + if (this.entityManager == null) this.entityManager = entityManager(); + if (this.entityManager.contains(this)) { + this.entityManager.remove(this); + } else { + Ministerio attached = Ministerio.findMinisterio(this.id); + this.entityManager.remove(attached); + } + } + + @Transactional + public void Ministerio.flush() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.flush(); + } + + @Transactional + public void Ministerio.clear() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.clear(); + } + + @Transactional + public Ministerio Ministerio.merge() { + if (this.entityManager == null) this.entityManager = entityManager(); + Ministerio merged = this.entityManager.merge(this); + this.entityManager.flush(); + return merged; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_Entity.aj b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_Entity.aj new file mode 100644 index 0000000..35a82f4 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_Jpa_Entity.aj @@ -0,0 +1,43 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Version; + +privileged aspect Ministerio_Roo_Jpa_Entity { + + declare @type: Ministerio: @Entity; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private Long Ministerio.id; + + @Version + @Column(name = "version") + private Integer Ministerio.version; + + public Long Ministerio.getId() { + return this.id; + } + + public void Ministerio.setId(Long id) { + this.id = id; + } + + public Integer Ministerio.getVersion() { + return this.version; + } + + public void Ministerio.setVersion(Integer version) { + this.version = version; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_ToString.aj b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_ToString.aj new file mode 100644 index 0000000..4b44708 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Ministerio_Roo_ToString.aj @@ -0,0 +1,16 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +privileged aspect Ministerio_Roo_ToString { + + public String Ministerio.toString() { + return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto.java b/src/main/java/br/ufpr/c3sl/participatorio/Projeto.java new file mode 100644 index 0000000..22a488f --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto.java @@ -0,0 +1,121 @@ +package br.ufpr.c3sl.participatorio; + +import java.util.Date; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.OneToOne; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.roo.addon.javabean.RooJavaBean; +import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord; +import org.springframework.roo.addon.tostring.RooToString; + +import br.ufpr.c3sl.participatorio.Ministerio; +import br.ufpr.c3sl.participatorio.enums.TipoAcao; +import br.ufpr.c3sl.participatorio.enums.TipoDemanda; +import br.ufpr.c3sl.participatorio.enums.TipoDiasSemana; +import br.ufpr.c3sl.participatorio.enums.TipoStatus; +import br.ufpr.c3sl.participatorio.enums.TipoTemporalidade; + +@RooJavaBean +@RooToString +@RooJpaActiveRecord +public class Projeto { + + @OneToOne + private Projeto pai; + + private String nome; + + @Enumerated(EnumType.STRING) + private TipoDemanda demanda; + + @Enumerated(EnumType.STRING) + private TipoAcao acao; + private String outroAcao; + + @OneToOne + private Ministerio ministerio; + + private String objetivo; + + // Endereço + private String rua; + private String numero; + private String complemento; + private String bairro; + private String municipio; + private String cep; + + private String responsavel; + private String telefones; + private String email; + + // + private String publicoAlvo; + private String formaAcesso; + + private String site; + +/* itens 12 e 13 + private String horarioFuncionamento; + private String duracao; +*/ + + private String comoFunciona; + private String noticias; + +/* horario + dias de funcionamento ?? + private String metodoFuncionamento; +*/ + private String horarioFuncionamento; + @Enumerated(EnumType.STRING) + private TipoDiasSemana diasFuncionamento; + + + // campos internos + private String estrutura; + + private String responsaveis; + + private String telefoneMinisterio; + + private String orcamento; + + private String justificativa; + + private String meta; + + @Enumerated(EnumType.STRING) + private TipoTemporalidade temporalidade; + + private boolean possuiMonitoramento; + + // + private String estadosMunicipioComPrograma; + + // + private String publicPrioritario; + + @Temporal(TemporalType.DATE) + @DateTimeFormat(style="S-") + private Date dataInicio; + + // + private String mecanismos; + + // + private String parcerias; + + private boolean legislacaoPropria; + private String descLegislacao; + + private String obs; + + @Enumerated(EnumType.STRING) + private TipoStatus estado; + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Configurable.aj b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Configurable.aj new file mode 100644 index 0000000..e6f38be --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Configurable.aj @@ -0,0 +1,13 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Projeto; +import org.springframework.beans.factory.annotation.Configurable; + +privileged aspect Projeto_Roo_Configurable { + + declare @type: Projeto: @Configurable; + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_JavaBean.aj b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_JavaBean.aj new file mode 100644 index 0000000..a1472a0 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_JavaBean.aj @@ -0,0 +1,337 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Ministerio; +import br.ufpr.c3sl.participatorio.Projeto; +import br.ufpr.c3sl.participatorio.enums.TipoAcao; +import br.ufpr.c3sl.participatorio.enums.TipoDemanda; +import br.ufpr.c3sl.participatorio.enums.TipoDiasSemana; +import br.ufpr.c3sl.participatorio.enums.TipoStatus; +import br.ufpr.c3sl.participatorio.enums.TipoTemporalidade; +import java.util.Date; + +privileged aspect Projeto_Roo_JavaBean { + + public Projeto Projeto.getPai() { + return this.pai; + } + + public void Projeto.setPai(Projeto pai) { + this.pai = pai; + } + + public String Projeto.getNome() { + return this.nome; + } + + public void Projeto.setNome(String nome) { + this.nome = nome; + } + + public TipoDemanda Projeto.getDemanda() { + return this.demanda; + } + + public void Projeto.setDemanda(TipoDemanda demanda) { + this.demanda = demanda; + } + + public TipoAcao Projeto.getAcao() { + return this.acao; + } + + public void Projeto.setAcao(TipoAcao acao) { + this.acao = acao; + } + + public String Projeto.getOutroAcao() { + return this.outroAcao; + } + + public void Projeto.setOutroAcao(String outroAcao) { + this.outroAcao = outroAcao; + } + + public Ministerio Projeto.getMinisterio() { + return this.ministerio; + } + + public void Projeto.setMinisterio(Ministerio ministerio) { + this.ministerio = ministerio; + } + + public String Projeto.getObjetivo() { + return this.objetivo; + } + + public void Projeto.setObjetivo(String objetivo) { + this.objetivo = objetivo; + } + + public String Projeto.getRua() { + return this.rua; + } + + public void Projeto.setRua(String rua) { + this.rua = rua; + } + + public String Projeto.getNumero() { + return this.numero; + } + + public void Projeto.setNumero(String numero) { + this.numero = numero; + } + + public String Projeto.getComplemento() { + return this.complemento; + } + + public void Projeto.setComplemento(String complemento) { + this.complemento = complemento; + } + + public String Projeto.getBairro() { + return this.bairro; + } + + public void Projeto.setBairro(String bairro) { + this.bairro = bairro; + } + + public String Projeto.getMunicipio() { + return this.municipio; + } + + public void Projeto.setMunicipio(String municipio) { + this.municipio = municipio; + } + + public String Projeto.getCep() { + return this.cep; + } + + public void Projeto.setCep(String cep) { + this.cep = cep; + } + + public String Projeto.getResponsavel() { + return this.responsavel; + } + + public void Projeto.setResponsavel(String responsavel) { + this.responsavel = responsavel; + } + + public String Projeto.getTelefones() { + return this.telefones; + } + + public void Projeto.setTelefones(String telefones) { + this.telefones = telefones; + } + + public String Projeto.getEmail() { + return this.email; + } + + public void Projeto.setEmail(String email) { + this.email = email; + } + + public String Projeto.getPublicoAlvo() { + return this.publicoAlvo; + } + + public void Projeto.setPublicoAlvo(String publicoAlvo) { + this.publicoAlvo = publicoAlvo; + } + + public String Projeto.getFormaAcesso() { + return this.formaAcesso; + } + + public void Projeto.setFormaAcesso(String formaAcesso) { + this.formaAcesso = formaAcesso; + } + + public String Projeto.getSite() { + return this.site; + } + + public void Projeto.setSite(String site) { + this.site = site; + } + + public String Projeto.getComoFunciona() { + return this.comoFunciona; + } + + public void Projeto.setComoFunciona(String comoFunciona) { + this.comoFunciona = comoFunciona; + } + + public String Projeto.getNoticias() { + return this.noticias; + } + + public void Projeto.setNoticias(String noticias) { + this.noticias = noticias; + } + + public String Projeto.getHorarioFuncionamento() { + return this.horarioFuncionamento; + } + + public void Projeto.setHorarioFuncionamento(String horarioFuncionamento) { + this.horarioFuncionamento = horarioFuncionamento; + } + + public TipoDiasSemana Projeto.getDiasFuncionamento() { + return this.diasFuncionamento; + } + + public void Projeto.setDiasFuncionamento(TipoDiasSemana diasFuncionamento) { + this.diasFuncionamento = diasFuncionamento; + } + + public String Projeto.getEstrutura() { + return this.estrutura; + } + + public void Projeto.setEstrutura(String estrutura) { + this.estrutura = estrutura; + } + + public String Projeto.getResponsaveis() { + return this.responsaveis; + } + + public void Projeto.setResponsaveis(String responsaveis) { + this.responsaveis = responsaveis; + } + + public String Projeto.getTelefoneMinisterio() { + return this.telefoneMinisterio; + } + + public void Projeto.setTelefoneMinisterio(String telefoneMinisterio) { + this.telefoneMinisterio = telefoneMinisterio; + } + + public String Projeto.getOrcamento() { + return this.orcamento; + } + + public void Projeto.setOrcamento(String orcamento) { + this.orcamento = orcamento; + } + + public String Projeto.getJustificativa() { + return this.justificativa; + } + + public void Projeto.setJustificativa(String justificativa) { + this.justificativa = justificativa; + } + + public String Projeto.getMeta() { + return this.meta; + } + + public void Projeto.setMeta(String meta) { + this.meta = meta; + } + + public TipoTemporalidade Projeto.getTemporalidade() { + return this.temporalidade; + } + + public void Projeto.setTemporalidade(TipoTemporalidade temporalidade) { + this.temporalidade = temporalidade; + } + + public boolean Projeto.isPossuiMonitoramento() { + return this.possuiMonitoramento; + } + + public void Projeto.setPossuiMonitoramento(boolean possuiMonitoramento) { + this.possuiMonitoramento = possuiMonitoramento; + } + + public String Projeto.getEstadosMunicipioComPrograma() { + return this.estadosMunicipioComPrograma; + } + + public void Projeto.setEstadosMunicipioComPrograma(String estadosMunicipioComPrograma) { + this.estadosMunicipioComPrograma = estadosMunicipioComPrograma; + } + + public String Projeto.getPublicPrioritario() { + return this.publicPrioritario; + } + + public void Projeto.setPublicPrioritario(String publicPrioritario) { + this.publicPrioritario = publicPrioritario; + } + + public Date Projeto.getDataInicio() { + return this.dataInicio; + } + + public void Projeto.setDataInicio(Date dataInicio) { + this.dataInicio = dataInicio; + } + + public String Projeto.getMecanismos() { + return this.mecanismos; + } + + public void Projeto.setMecanismos(String mecanismos) { + this.mecanismos = mecanismos; + } + + public String Projeto.getParcerias() { + return this.parcerias; + } + + public void Projeto.setParcerias(String parcerias) { + this.parcerias = parcerias; + } + + public boolean Projeto.isLegislacaoPropria() { + return this.legislacaoPropria; + } + + public void Projeto.setLegislacaoPropria(boolean legislacaoPropria) { + this.legislacaoPropria = legislacaoPropria; + } + + public String Projeto.getDescLegislacao() { + return this.descLegislacao; + } + + public void Projeto.setDescLegislacao(String descLegislacao) { + this.descLegislacao = descLegislacao; + } + + public String Projeto.getObs() { + return this.obs; + } + + public void Projeto.setObs(String obs) { + this.obs = obs; + } + + public TipoStatus Projeto.getEstado() { + return this.estado; + } + + public void Projeto.setEstado(TipoStatus estado) { + this.estado = estado; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_ActiveRecord.aj b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_ActiveRecord.aj new file mode 100644 index 0000000..237c4bb --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_ActiveRecord.aj @@ -0,0 +1,77 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Projeto; +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import org.springframework.transaction.annotation.Transactional; + +privileged aspect Projeto_Roo_Jpa_ActiveRecord { + + @PersistenceContext + transient EntityManager Projeto.entityManager; + + public static final EntityManager Projeto.entityManager() { + EntityManager em = new Projeto().entityManager; + if (em == null) throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)"); + return em; + } + + public static long Projeto.countProjetoes() { + return entityManager().createQuery("SELECT COUNT(o) FROM Projeto o", Long.class).getSingleResult(); + } + + public static List<Projeto> Projeto.findAllProjetoes() { + return entityManager().createQuery("SELECT o FROM Projeto o", Projeto.class).getResultList(); + } + + public static Projeto Projeto.findProjeto(Long id) { + if (id == null) return null; + return entityManager().find(Projeto.class, id); + } + + public static List<Projeto> Projeto.findProjetoEntries(int firstResult, int maxResults) { + return entityManager().createQuery("SELECT o FROM Projeto o", Projeto.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList(); + } + + @Transactional + public void Projeto.persist() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.persist(this); + } + + @Transactional + public void Projeto.remove() { + if (this.entityManager == null) this.entityManager = entityManager(); + if (this.entityManager.contains(this)) { + this.entityManager.remove(this); + } else { + Projeto attached = Projeto.findProjeto(this.id); + this.entityManager.remove(attached); + } + } + + @Transactional + public void Projeto.flush() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.flush(); + } + + @Transactional + public void Projeto.clear() { + if (this.entityManager == null) this.entityManager = entityManager(); + this.entityManager.clear(); + } + + @Transactional + public Projeto Projeto.merge() { + if (this.entityManager == null) this.entityManager = entityManager(); + Projeto merged = this.entityManager.merge(this); + this.entityManager.flush(); + return merged; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_Entity.aj b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_Entity.aj new file mode 100644 index 0000000..c716873 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_Jpa_Entity.aj @@ -0,0 +1,43 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Projeto; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Version; + +privileged aspect Projeto_Roo_Jpa_Entity { + + declare @type: Projeto: @Entity; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private Long Projeto.id; + + @Version + @Column(name = "version") + private Integer Projeto.version; + + public Long Projeto.getId() { + return this.id; + } + + public void Projeto.setId(Long id) { + this.id = id; + } + + public Integer Projeto.getVersion() { + return this.version; + } + + public void Projeto.setVersion(Integer version) { + this.version = version; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_ToString.aj b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_ToString.aj new file mode 100644 index 0000000..e287b0d --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/Projeto_Roo_ToString.aj @@ -0,0 +1,16 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio; + +import br.ufpr.c3sl.participatorio.Projeto; +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +privileged aspect Projeto_Roo_ToString { + + public String Projeto.toString() { + return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE); + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoAcao.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoAcao.java new file mode 100644 index 0000000..fb747cc --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoAcao.java @@ -0,0 +1,6 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoAcao { + Serviço,Programa,Projeto,Ação,Agenda,Plano,Outro; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDemanda.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDemanda.java new file mode 100644 index 0000000..a2e820c --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDemanda.java @@ -0,0 +1,7 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoDemanda { + Educação,Trabalho,Lazer,Esporte,Turismo,Ecologia_e_Meio_Ambiente, + Cultura,Saúde,Participação_e_Voluntariado,Justiça,Onde_Ir,Seus_Direitos; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDiasSemana.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDiasSemana.java new file mode 100644 index 0000000..5d93449 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoDiasSemana.java @@ -0,0 +1,6 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoDiasSemana { + Domingo,Segunda,Terça,Quarta,Quinta,Sexta,Sábado; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoProjeto.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoProjeto.java new file mode 100644 index 0000000..be5ec7a --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoProjeto.java @@ -0,0 +1,6 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoProjeto { + Nacional,Estadual,Municipal,Outro; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoStatus.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoStatus.java new file mode 100644 index 0000000..f671788 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoStatus.java @@ -0,0 +1,6 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoStatus { + Efetivo,Candidato,Rejeitado; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoTemporalidade.java b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoTemporalidade.java new file mode 100644 index 0000000..b596df9 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/enums/TipoTemporalidade.java @@ -0,0 +1,6 @@ +package br.ufpr.c3sl.participatorio.enums; + + +public enum TipoTemporalidade { + Temporario,Permanente; +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean.java b/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean.java new file mode 100644 index 0000000..1c72fc5 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean.java @@ -0,0 +1,18 @@ +package br.ufpr.c3sl.participatorio.web; + +import org.springframework.format.FormatterRegistry; +import org.springframework.format.support.FormattingConversionServiceFactoryBean; +import org.springframework.roo.addon.web.mvc.controller.converter.RooConversionService; + +/** + * A central place to register application converters and formatters. + */ +@RooConversionService +public class ApplicationConversionServiceFactoryBean extends FormattingConversionServiceFactoryBean { + + @Override + protected void installFormatters(FormatterRegistry registry) { + super.installFormatters(registry); + // Register application converters and formatters + } +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj b/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj new file mode 100644 index 0000000..dc540a9 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj @@ -0,0 +1,79 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio.web; + +import br.ufpr.c3sl.participatorio.Ministerio; +import br.ufpr.c3sl.participatorio.Projeto; +import br.ufpr.c3sl.participatorio.web.ApplicationConversionServiceFactoryBean; +import org.springframework.beans.factory.annotation.Configurable; +import org.springframework.core.convert.converter.Converter; +import org.springframework.format.FormatterRegistry; + +privileged aspect ApplicationConversionServiceFactoryBean_Roo_ConversionService { + + declare @type: ApplicationConversionServiceFactoryBean: @Configurable; + + public Converter<Ministerio, String> ApplicationConversionServiceFactoryBean.getMinisterioToStringConverter() { + return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.participatorio.Ministerio, java.lang.String>() { + public String convert(Ministerio ministerio) { + return new StringBuilder().append(ministerio.getNome()).toString(); + } + }; + } + + public Converter<Long, Ministerio> ApplicationConversionServiceFactoryBean.getIdToMinisterioConverter() { + return new org.springframework.core.convert.converter.Converter<java.lang.Long, br.ufpr.c3sl.participatorio.Ministerio>() { + public br.ufpr.c3sl.participatorio.Ministerio convert(java.lang.Long id) { + return Ministerio.findMinisterio(id); + } + }; + } + + public Converter<String, Ministerio> ApplicationConversionServiceFactoryBean.getStringToMinisterioConverter() { + return new org.springframework.core.convert.converter.Converter<java.lang.String, br.ufpr.c3sl.participatorio.Ministerio>() { + public br.ufpr.c3sl.participatorio.Ministerio convert(String id) { + return getObject().convert(getObject().convert(id, Long.class), Ministerio.class); + } + }; + } + + public Converter<Projeto, String> ApplicationConversionServiceFactoryBean.getProjetoToStringConverter() { + return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.participatorio.Projeto, java.lang.String>() { + public String convert(Projeto projeto) { + return new StringBuilder().append(projeto.getNome()).append(' ').append(projeto.getOutroAcao()).append(' ').append(projeto.getObjetivo()).append(' ').append(projeto.getRua()).toString(); + } + }; + } + + public Converter<Long, Projeto> ApplicationConversionServiceFactoryBean.getIdToProjetoConverter() { + return new org.springframework.core.convert.converter.Converter<java.lang.Long, br.ufpr.c3sl.participatorio.Projeto>() { + public br.ufpr.c3sl.participatorio.Projeto convert(java.lang.Long id) { + return Projeto.findProjeto(id); + } + }; + } + + public Converter<String, Projeto> ApplicationConversionServiceFactoryBean.getStringToProjetoConverter() { + return new org.springframework.core.convert.converter.Converter<java.lang.String, br.ufpr.c3sl.participatorio.Projeto>() { + public br.ufpr.c3sl.participatorio.Projeto convert(String id) { + return getObject().convert(getObject().convert(id, Long.class), Projeto.class); + } + }; + } + + public void ApplicationConversionServiceFactoryBean.installLabelConverters(FormatterRegistry registry) { + registry.addConverter(getMinisterioToStringConverter()); + registry.addConverter(getIdToMinisterioConverter()); + registry.addConverter(getStringToMinisterioConverter()); + registry.addConverter(getProjetoToStringConverter()); + registry.addConverter(getIdToProjetoConverter()); + registry.addConverter(getStringToProjetoConverter()); + } + + public void ApplicationConversionServiceFactoryBean.afterPropertiesSet() { + super.afterPropertiesSet(); + installLabelConverters(getObject()); + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController.java b/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController.java new file mode 100644 index 0000000..1807954 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController.java @@ -0,0 +1,12 @@ +package br.ufpr.c3sl.participatorio.web; + +import br.ufpr.c3sl.participatorio.Ministerio; +import org.springframework.roo.addon.web.mvc.controller.scaffold.RooWebScaffold; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@RequestMapping("/ministerios") +@Controller +@RooWebScaffold(path = "ministerios", formBackingObject = Ministerio.class) +public class MinisterioController { +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController_Roo_Controller.aj b/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController_Roo_Controller.aj new file mode 100644 index 0000000..f191088 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/MinisterioController_Roo_Controller.aj @@ -0,0 +1,102 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio.web; + +import br.ufpr.c3sl.participatorio.Ministerio; +import br.ufpr.c3sl.participatorio.web.MinisterioController; +import java.io.UnsupportedEncodingException; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.util.UriUtils; +import org.springframework.web.util.WebUtils; + +privileged aspect MinisterioController_Roo_Controller { + + @RequestMapping(method = RequestMethod.POST, produces = "text/html") + public String MinisterioController.create(@Valid Ministerio ministerio, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { + if (bindingResult.hasErrors()) { + populateEditForm(uiModel, ministerio); + return "ministerios/create"; + } + uiModel.asMap().clear(); + ministerio.persist(); + return "redirect:/ministerios/" + encodeUrlPathSegment(ministerio.getId().toString(), httpServletRequest); + } + + @RequestMapping(params = "form", produces = "text/html") + public String MinisterioController.createForm(Model uiModel) { + populateEditForm(uiModel, new Ministerio()); + return "ministerios/create"; + } + + @RequestMapping(value = "/{id}", produces = "text/html") + public String MinisterioController.show(@PathVariable("id") Long id, Model uiModel) { + uiModel.addAttribute("ministerio", Ministerio.findMinisterio(id)); + uiModel.addAttribute("itemId", id); + return "ministerios/show"; + } + + @RequestMapping(produces = "text/html") + public String MinisterioController.list(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) { + if (page != null || size != null) { + int sizeNo = size == null ? 10 : size.intValue(); + final int firstResult = page == null ? 0 : (page.intValue() - 1) * sizeNo; + uiModel.addAttribute("ministerios", Ministerio.findMinisterioEntries(firstResult, sizeNo)); + float nrOfPages = (float) Ministerio.countMinisterios() / sizeNo; + uiModel.addAttribute("maxPages", (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages)); + } else { + uiModel.addAttribute("ministerios", Ministerio.findAllMinisterios()); + } + return "ministerios/list"; + } + + @RequestMapping(method = RequestMethod.PUT, produces = "text/html") + public String MinisterioController.update(@Valid Ministerio ministerio, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { + if (bindingResult.hasErrors()) { + populateEditForm(uiModel, ministerio); + return "ministerios/update"; + } + uiModel.asMap().clear(); + ministerio.merge(); + return "redirect:/ministerios/" + encodeUrlPathSegment(ministerio.getId().toString(), httpServletRequest); + } + + @RequestMapping(value = "/{id}", params = "form", produces = "text/html") + public String MinisterioController.updateForm(@PathVariable("id") Long id, Model uiModel) { + populateEditForm(uiModel, Ministerio.findMinisterio(id)); + return "ministerios/update"; + } + + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE, produces = "text/html") + public String MinisterioController.delete(@PathVariable("id") Long id, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) { + Ministerio ministerio = Ministerio.findMinisterio(id); + ministerio.remove(); + uiModel.asMap().clear(); + uiModel.addAttribute("page", (page == null) ? "1" : page.toString()); + uiModel.addAttribute("size", (size == null) ? "10" : size.toString()); + return "redirect:/ministerios"; + } + + void MinisterioController.populateEditForm(Model uiModel, Ministerio ministerio) { + uiModel.addAttribute("ministerio", ministerio); + } + + String MinisterioController.encodeUrlPathSegment(String pathSegment, HttpServletRequest httpServletRequest) { + String enc = httpServletRequest.getCharacterEncoding(); + if (enc == null) { + enc = WebUtils.DEFAULT_CHARACTER_ENCODING; + } + try { + pathSegment = UriUtils.encodePathSegment(pathSegment, enc); + } catch (UnsupportedEncodingException uee) {} + return pathSegment; + } + +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController.java b/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController.java new file mode 100644 index 0000000..507ec06 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController.java @@ -0,0 +1,12 @@ +package br.ufpr.c3sl.participatorio.web; + +import br.ufpr.c3sl.participatorio.Projeto; +import org.springframework.roo.addon.web.mvc.controller.scaffold.RooWebScaffold; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@RequestMapping("/projetoes") +@Controller +@RooWebScaffold(path = "projetoes", formBackingObject = Projeto.class) +public class ProjetoController { +} diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController_Roo_Controller.aj b/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController_Roo_Controller.aj new file mode 100644 index 0000000..65e9a60 --- /dev/null +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/ProjetoController_Roo_Controller.aj @@ -0,0 +1,125 @@ +// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO. +// You may push code into the target .java compilation unit if you wish to edit any member(s). + +package br.ufpr.c3sl.participatorio.web; + +import br.ufpr.c3sl.participatorio.Ministerio; +import br.ufpr.c3sl.participatorio.Projeto; +import br.ufpr.c3sl.participatorio.enums.TipoAcao; +import br.ufpr.c3sl.participatorio.enums.TipoDemanda; +import br.ufpr.c3sl.participatorio.enums.TipoDiasSemana; +import br.ufpr.c3sl.participatorio.enums.TipoStatus; +import br.ufpr.c3sl.participatorio.enums.TipoTemporalidade; +import br.ufpr.c3sl.participatorio.web.ProjetoController; +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import org.joda.time.format.DateTimeFormat; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.util.UriUtils; +import org.springframework.web.util.WebUtils; + +privileged aspect ProjetoController_Roo_Controller { + + @RequestMapping(method = RequestMethod.POST, produces = "text/html") + public String ProjetoController.create(@Valid Projeto projeto, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { + if (bindingResult.hasErrors()) { + populateEditForm(uiModel, projeto); + return "projetoes/create"; + } + uiModel.asMap().clear(); + projeto.persist(); + return "redirect:/projetoes/" + encodeUrlPathSegment(projeto.getId().toString(), httpServletRequest); + } + + @RequestMapping(params = "form", produces = "text/html") + public String ProjetoController.createForm(Model uiModel) { + populateEditForm(uiModel, new Projeto()); + return "projetoes/create"; + } + + @RequestMapping(value = "/{id}", produces = "text/html") + public String ProjetoController.show(@PathVariable("id") Long id, Model uiModel) { + addDateTimeFormatPatterns(uiModel); + uiModel.addAttribute("projeto", Projeto.findProjeto(id)); + uiModel.addAttribute("itemId", id); + return "projetoes/show"; + } + + @RequestMapping(produces = "text/html") + public String ProjetoController.list(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) { + if (page != null || size != null) { + int sizeNo = size == null ? 10 : size.intValue(); + final int firstResult = page == null ? 0 : (page.intValue() - 1) * sizeNo; + uiModel.addAttribute("projetoes", Projeto.findProjetoEntries(firstResult, sizeNo)); + float nrOfPages = (float) Projeto.countProjetoes() / sizeNo; + uiModel.addAttribute("maxPages", (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages)); + } else { + uiModel.addAttribute("projetoes", Projeto.findAllProjetoes()); + } + addDateTimeFormatPatterns(uiModel); + return "projetoes/list"; + } + + @RequestMapping(method = RequestMethod.PUT, produces = "text/html") + public String ProjetoController.update(@Valid Projeto projeto, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { + if (bindingResult.hasErrors()) { + populateEditForm(uiModel, projeto); + return "projetoes/update"; + } + uiModel.asMap().clear(); + projeto.merge(); + return "redirect:/projetoes/" + encodeUrlPathSegment(projeto.getId().toString(), httpServletRequest); + } + + @RequestMapping(value = "/{id}", params = "form", produces = "text/html") + public String ProjetoController.updateForm(@PathVariable("id") Long id, Model uiModel) { + populateEditForm(uiModel, Projeto.findProjeto(id)); + return "projetoes/update"; + } + + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE, produces = "text/html") + public String ProjetoController.delete(@PathVariable("id") Long id, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) { + Projeto projeto = Projeto.findProjeto(id); + projeto.remove(); + uiModel.asMap().clear(); + uiModel.addAttribute("page", (page == null) ? "1" : page.toString()); + uiModel.addAttribute("size", (size == null) ? "10" : size.toString()); + return "redirect:/projetoes"; + } + + void ProjetoController.addDateTimeFormatPatterns(Model uiModel) { + uiModel.addAttribute("projeto_datainicio_date_format", DateTimeFormat.patternForStyle("S-", LocaleContextHolder.getLocale())); + } + + void ProjetoController.populateEditForm(Model uiModel, Projeto projeto) { + uiModel.addAttribute("projeto", projeto); + addDateTimeFormatPatterns(uiModel); + uiModel.addAttribute("ministerios", Ministerio.findAllMinisterios()); + uiModel.addAttribute("projetoes", Projeto.findAllProjetoes()); + uiModel.addAttribute("tipoacaos", Arrays.asList(TipoAcao.values())); + uiModel.addAttribute("tipodemandas", Arrays.asList(TipoDemanda.values())); + uiModel.addAttribute("tipodiassemanas", Arrays.asList(TipoDiasSemana.values())); + uiModel.addAttribute("tipostatuses", Arrays.asList(TipoStatus.values())); + uiModel.addAttribute("tipotemporalidades", Arrays.asList(TipoTemporalidade.values())); + } + + String ProjetoController.encodeUrlPathSegment(String pathSegment, HttpServletRequest httpServletRequest) { + String enc = httpServletRequest.getCharacterEncoding(); + if (enc == null) { + enc = WebUtils.DEFAULT_CHARACTER_ENCODING; + } + try { + pathSegment = UriUtils.encodePathSegment(pathSegment, enc); + } catch (UnsupportedEncodingException uee) {} + return pathSegment; + } + +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..60313cd --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> +<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"> + <provider>org.hibernate.ejb.HibernatePersistence</provider> + <properties> + <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> + <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database --> + <property name="hibernate.hbm2ddl.auto" value="create"/> + <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/> + <property name="hibernate.connection.charSet" value="UTF-8"/> + <!-- Uncomment the following two properties for JBoss only --> + <!-- property name="hibernate.validator.apply_to_ddl" value="false" /--> + <!-- property name="hibernate.validator.autoregister_listeners" value="false" /--> + </properties> + </persistence-unit> +</persistence> diff --git a/src/main/resources/META-INF/spring/applicationContext-security.xml b/src/main/resources/META-INF/spring/applicationContext-security.xml new file mode 100644 index 0000000..b16657c --- /dev/null +++ b/src/main/resources/META-INF/spring/applicationContext-security.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans:beans xmlns="http://www.springframework.org/schema/security" + xmlns:beans="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> + <!-- HTTP security configurations --> + <http auto-config="true" use-expressions="true"> + <form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t" /> + <logout logout-url="/resources/j_spring_security_logout" /> + <!-- Configure these elements to secure URIs in your application --> + <intercept-url pattern="/choices/**" access="hasRole('ROLE_ADMIN')" /> + <intercept-url pattern="/member/**" access="isAuthenticated()" /> + <intercept-url pattern="/resources/**" access="permitAll" /> + <intercept-url pattern="/**" access="permitAll" /> + </http> + <!-- Configure Authentication mechanism --> + <authentication-manager alias="authenticationManager"> + <!-- SHA-256 values can be produced using 'echo -n your_desired_password | sha256sum' (using normal *nix environments) --> + <authentication-provider> + <password-encoder hash="sha-256" /> + <user-service> + <user name="admin" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" authorities="ROLE_ADMIN" /> + <user name="user" password="04f8996da763b7a969b1028ee3007569eaf3a635486ddab211d512c85b9df8fb" authorities="ROLE_USER" /> + </user-service> + </authentication-provider> + </authentication-manager> +</beans:beans> \ No newline at end of file diff --git a/src/main/resources/META-INF/spring/applicationContext.xml b/src/main/resources/META-INF/spring/applicationContext.xml new file mode 100644 index 0000000..30098a8 --- /dev/null +++ b/src/main/resources/META-INF/spring/applicationContext.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> + <!-- + This will automatically locate any and all property files you have + within your classpath, provided they fall under the META-INF/spring + directory. The located property files are parsed and their values can + then be used within application context files in the form of + ${propertyKey}. + --> + <context:property-placeholder location="classpath*:META-INF/spring/*.properties"/> + <!-- + Turn on AspectJ @Configurable support. As a result, any time you + instantiate an object, Spring will attempt to perform dependency + injection on that object. This occurs for instantiation via the "new" + keyword, as well as via reflection. This is possible because AspectJ + is used to "weave" Roo-based applications at compile time. In effect + this feature allows dependency injection of any object at all in your + system, which is a very useful feature (without @Configurable you'd + only be able to dependency inject objects acquired from Spring or + subsequently presented to a specific Spring dependency injection + method). Roo applications use this useful feature in a number of + areas, such as @PersistenceContext injection into entities. + --> + <context:spring-configured/> + <!-- + This declaration will cause Spring to locate every @Component, + @Repository and @Service in your application. In practical terms this + allows you to write a POJO and then simply annotate the new POJO as an + @Service and Spring will automatically detect, instantiate and + dependency inject your service at startup time. Importantly, you can + then also have your new service injected into any other class that + requires it simply by declaring a field for your service inside the + relying class and Spring will inject it. Note that two exclude filters + are declared. The first ensures that Spring doesn't spend time + introspecting Roo-specific ITD aspects. The second ensures Roo doesn't + instantiate your @Controller classes, as these should be instantiated + by a web tier application context. Refer to web.xml for more details + about the web tier application context setup services. + + Furthermore, this turns on @Autowired, @PostConstruct etc support. These + annotations allow you to use common Spring and Java Enterprise Edition + annotations in your classes without needing to do any special configuration. + The most commonly used annotation is @Autowired, which instructs Spring to + dependency inject an object into your class. + --> + <context:component-scan base-package="br.ufpr.c3sl.participatorio"> + <context:exclude-filter expression=".*_Roo_.*" type="regex"/> + <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/> + </context:component-scan> + <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> + <property name="driverClassName" value="${database.driverClassName}"/> + <property name="url" value="${database.url}"/> + <property name="username" value="${database.username}"/> + <property name="password" value="${database.password}"/> + <property name="testOnBorrow" value="true"/> + <property name="testOnReturn" value="true"/> + <property name="testWhileIdle" value="true"/> + <property name="timeBetweenEvictionRunsMillis" value="1800000"/> + <property name="numTestsPerEvictionRun" value="3"/> + <property name="minEvictableIdleTimeMillis" value="1800000"/> + </bean> + <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> + <property name="entityManagerFactory" ref="entityManagerFactory"/> + </bean> + <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/> + <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> + <property name="persistenceUnitName" value="persistenceUnit"/> + <property name="dataSource" ref="dataSource"/> + </bean> +</beans> diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties new file mode 100644 index 0000000..5014b35 --- /dev/null +++ b/src/main/resources/log4j.properties @@ -0,0 +1,17 @@ +log4j.rootLogger=error, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +log4j.appender.R=org.apache.log4j.RollingFileAppender +log4j.appender.R.File=application.log + +log4j.appender.R.MaxFileSize=100KB +# Keep one backup file +log4j.appender.R.MaxBackupIndex=1 + +log4j.appender.R.layout=org.apache.log4j.PatternLayout +log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n diff --git a/src/main/webapp/WEB-INF/classes/alt.properties b/src/main/webapp/WEB-INF/classes/alt.properties new file mode 100644 index 0000000..48df87f --- /dev/null +++ b/src/main/webapp/WEB-INF/classes/alt.properties @@ -0,0 +1 @@ +styleSheet=resources/styles/alt.css diff --git a/src/main/webapp/WEB-INF/classes/standard.properties b/src/main/webapp/WEB-INF/classes/standard.properties new file mode 100644 index 0000000..d8dc016 --- /dev/null +++ b/src/main/webapp/WEB-INF/classes/standard.properties @@ -0,0 +1 @@ +styleSheet=resources/styles/standard.css diff --git a/src/main/webapp/WEB-INF/i18n/application.properties b/src/main/webapp/WEB-INF/i18n/application.properties new file mode 100644 index 0000000..e721719 --- /dev/null +++ b/src/main/webapp/WEB-INF/i18n/application.properties @@ -0,0 +1,58 @@ +#Updated at Thu Jan 24 10:53:39 BRST 2013 +#Thu Jan 24 10:53:39 BRST 2013 +application_name=Participatorio +label_br_ufpr_c3sl_participatorio_ministerio=Ministerio +label_br_ufpr_c3sl_participatorio_ministerio_id=Id +label_br_ufpr_c3sl_participatorio_ministerio_nome=Nome +label_br_ufpr_c3sl_participatorio_ministerio_plural=Ministerios +label_br_ufpr_c3sl_participatorio_ministerio_version=Version +label_br_ufpr_c3sl_participatorio_projeto=Projeto +label_br_ufpr_c3sl_participatorio_projeto_acao=Acao +label_br_ufpr_c3sl_participatorio_projeto_bairro=Bairro +label_br_ufpr_c3sl_participatorio_projeto_cep=Cep +label_br_ufpr_c3sl_participatorio_projeto_comofunciona=Como Funciona +label_br_ufpr_c3sl_participatorio_projeto_complemento=Complemento +label_br_ufpr_c3sl_participatorio_projeto_datainicio=Data Inicio +label_br_ufpr_c3sl_participatorio_projeto_demanda=Demanda +label_br_ufpr_c3sl_participatorio_projeto_desclegislacao=Desc Legislacao +label_br_ufpr_c3sl_participatorio_projeto_diasfuncionamento=Dias Funcionamento +label_br_ufpr_c3sl_participatorio_projeto_email=Email +label_br_ufpr_c3sl_participatorio_projeto_estado=Estado +label_br_ufpr_c3sl_participatorio_projeto_estadosmunicipiocomprograma=Estados Municipio Com Programa +label_br_ufpr_c3sl_participatorio_projeto_estrutura=Estrutura +label_br_ufpr_c3sl_participatorio_projeto_formaacesso=Forma Acesso +label_br_ufpr_c3sl_participatorio_projeto_horariofuncionamento=Horario Funcionamento +label_br_ufpr_c3sl_participatorio_projeto_id=Id +label_br_ufpr_c3sl_participatorio_projeto_justificativa=Justificativa +label_br_ufpr_c3sl_participatorio_projeto_legislacaopropria=Legislacao Propria +label_br_ufpr_c3sl_participatorio_projeto_mecanismos=Mecanismos +label_br_ufpr_c3sl_participatorio_projeto_meta=Meta +label_br_ufpr_c3sl_participatorio_projeto_ministerio=Ministerio +label_br_ufpr_c3sl_participatorio_projeto_municipio=Municipio +label_br_ufpr_c3sl_participatorio_projeto_nome=Nome +label_br_ufpr_c3sl_participatorio_projeto_noticias=Noticias +label_br_ufpr_c3sl_participatorio_projeto_numero=Numero +label_br_ufpr_c3sl_participatorio_projeto_objetivo=Objetivo +label_br_ufpr_c3sl_participatorio_projeto_obs=Obs +label_br_ufpr_c3sl_participatorio_projeto_orcamento=Orcamento +label_br_ufpr_c3sl_participatorio_projeto_outroacao=Outro Acao +label_br_ufpr_c3sl_participatorio_projeto_pai=Pai +label_br_ufpr_c3sl_participatorio_projeto_parcerias=Parcerias +label_br_ufpr_c3sl_participatorio_projeto_plural=Projetoes +label_br_ufpr_c3sl_participatorio_projeto_possuimonitoramento=Possui Monitoramento +label_br_ufpr_c3sl_participatorio_projeto_publicoalvo=Publico Alvo +label_br_ufpr_c3sl_participatorio_projeto_publicprioritario=Public Prioritario +label_br_ufpr_c3sl_participatorio_projeto_responsaveis=Responsaveis +label_br_ufpr_c3sl_participatorio_projeto_responsavel=Responsavel +label_br_ufpr_c3sl_participatorio_projeto_rua=Rua +label_br_ufpr_c3sl_participatorio_projeto_site=Site +label_br_ufpr_c3sl_participatorio_projeto_telefoneministerio=Telefone Ministerio +label_br_ufpr_c3sl_participatorio_projeto_telefones=Telefones +label_br_ufpr_c3sl_participatorio_projeto_temporalidade=Temporalidade +label_br_ufpr_c3sl_participatorio_projeto_version=Version +menu_category_ministerio_label=Ministerio +menu_category_projeto_label=Projeto +menu_item_ministerio_list_label=Ministerios +menu_item_ministerio_new_label=Ministerio +menu_item_projeto_list_label=Projetoes +menu_item_projeto_new_label=Projeto diff --git a/src/main/webapp/WEB-INF/i18n/messages.properties b/src/main/webapp/WEB-INF/i18n/messages.properties new file mode 100644 index 0000000..be4a761 --- /dev/null +++ b/src/main/webapp/WEB-INF/i18n/messages.properties @@ -0,0 +1,99 @@ +#menu +global_menu_new=Create new {0} +global_menu_list=List all {0} +global_menu_find=Find by {0} +global_language_switch=Switch language to {0} +global_language=Language +global_sponsored=Sponsored by SpringSource +global_theme=Theme +global_theme_alt=alt +global_theme_standard=standard +global_generic={0} + +#welcome page +welcome_titlepane=Welcome to {0} +welcome_h3=Welcome to {0} +welcome_text=Spring Roo provides interactive, lightweight and user customizable tooling that enables rapid delivery of high performance enterprise Java applications. + +#entity labels +entity_list_all=List all {0} +entity_show=Show {0} +entity_create=Create new {0} +entity_update=Update {0} +entity_delete=Delete {0} +entity_delete_confirm=Are you sure want to delete this item? +entity_find=Find {0} +entity_not_found=No {0} found. +entity_not_found_single=No {0} found with this id. +entity_dependency_required=The following dependencies need to be created first: +entity_reference_not_managed=This relationship is managed from the {0} side. + +#button labels +button_home=Home +button_save=Save +button_update=Update +button_find=Find +button_cancel=Cancel +button_proceed=Proceed +button_submit=Submit +button_reset=Reset +button_end=End +button_showmessage=Show Message +button_showstacktrace=Show Stack Trace +button_showcookie=Show Cookie + +#field labels +field_simple_validation=Enter {0} {1} +field_invalid_email=Please enter a valid email +field_invalid_number=Number with \\'-\\' or \\'.\\' allowed +field_invalid_integer=Integer numbers only +field_invalid=Please enter valid {0} +field_required=required + +#list labels +list_first=First Page +list_next=Next Page +list_previous=Previous Page +list_last=Last Page +list_page=Page {0} of {1} +list_size=List results per page: + +#selenium +selenium_menu_test_suite=Test Suite + +#exception +exception_message=Exception Message +exception_stacktrace=Exception Stack Trace +exception_cookie=Cookies +exception_details=Details + +#dataAccessFailure_jspx +error_dataaccessfailure_title=Data access failure +error_dataaccessfailure_problemdescription=Sorry, a problem occurred while accessing the database. + +#resourceNotFound_jspx +error_resourcenotfound_title=Requested Resource Not Found +error_resourcenotfound_problemdescription=Sorry, we did not find the resource you were looking for. + +#uncaughtException_jspx +error_uncaughtexception_title=Internal Error +error_uncaughtexception_problemdescription=Sorry, we encountered an internal error. + +#webflow +webflow_menu_enter=Enter {0} flow +webflow_state1_title=Spring Web Flow - View State One +webflow_state1_message=This is a simple example to get started with Spring Web Flow. The buttons below lead you to another view state (Proceed) or to an end state. +webflow_state2_title=Spring Web Flow - View State Two +webflow_state2_message=This is a simple example to get started with Spring Web Flow. The buttons below lead you to another view state (Proceed) or to an end state. +webflow_endstate_title=Spring Web Flow - End State +webflow_endstate_message=You have now reached the end of this flow. + +#security +security_login_title=Spring Security Login +security_login_message=You have tried to access a protected area of this application. By default you can login as "admin", with a password of "admin". +security_login_form_name=Name +security_login_form_name_message=Enter your name +security_login_form_password=Password +security_login_form_password_message=Enter your password +security_login_unsuccessful=Your login attempt was not successful, try again. Reason: +security_logout=Logout \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/layouts/default.jspx b/src/main/webapp/WEB-INF/layouts/default.jspx new file mode 100644 index 0000000..b045bc0 --- /dev/null +++ b/src/main/webapp/WEB-INF/layouts/default.jspx @@ -0,0 +1,28 @@ +<html xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tiles="http://tiles.apache.org/tags-tiles" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" > + + <jsp:output doctype-root-element="HTML" doctype-system="about:legacy-compat" /> + + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:directive.page pageEncoding="UTF-8" /> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=8" /> + + <util:load-scripts /> + + <spring:message code="application_name" var="app_name" htmlEscape="false"/> + <title><spring:message code="welcome_h3" arguments="${app_name}" /></title> + </head> + + <body class="tundra spring"> + <div id="wrapper"> + <tiles:insertAttribute name="header" ignore="true" /> + <tiles:insertAttribute name="menu" ignore="true" /> + <div id="main"> + <tiles:insertAttribute name="body"/> + <tiles:insertAttribute name="footer" ignore="true"/> + </div> + </div> + </body> +</html> diff --git a/src/main/webapp/WEB-INF/layouts/layouts.xml b/src/main/webapp/WEB-INF/layouts/layouts.xml new file mode 100644 index 0000000..3c9d6d4 --- /dev/null +++ b/src/main/webapp/WEB-INF/layouts/layouts.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE tiles-definitions PUBLIC + "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" + "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> + +<tiles-definitions> + + <definition name="default" template="/WEB-INF/layouts/default.jspx"> + <put-attribute name="header" value="/WEB-INF/views/header.jspx" /> + <put-attribute name="menu" value="/WEB-INF/views/menu.jspx" /> + <put-attribute name="footer" value="/WEB-INF/views/footer.jspx" /> + </definition> + + <definition name="public" template="/WEB-INF/layouts/default.jspx"> + <put-attribute name="header" value="/WEB-INF/views/header.jspx" /> + <put-attribute name="footer" value="/WEB-INF/views/footer.jspx" /> + </definition> + +</tiles-definitions> diff --git a/src/main/webapp/WEB-INF/spring/webmvc-config.xml b/src/main/webapp/WEB-INF/spring/webmvc-config.xml new file mode 100644 index 0000000..c15a558 --- /dev/null +++ b/src/main/webapp/WEB-INF/spring/webmvc-config.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> + + <!-- The controllers are autodetected POJOs labeled with the @Controller annotation. --> + <context:component-scan base-package="br.ufpr.c3sl.participatorio" use-default-filters="false"> + <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/> + </context:component-scan> + + <!-- Turns on support for mapping requests to Spring MVC @Controller methods + Also registers default Formatters and Validators for use across all @Controllers --> + <mvc:annotation-driven conversion-service="applicationConversionService"/> + + + <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources --> + <mvc:resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**"/> + + <!-- Allows for mapping the DispatcherServlet to "/" by forwarding static resource + requests to the container's default Servlet --> + <mvc:default-servlet-handler/> + + <!-- Register "global" interceptor beans to apply to all registered HandlerMappings --> + <mvc:interceptors> + <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"/> + <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="lang"/> + </mvc:interceptors> + + <!-- Selects a static view for rendering without the need for an explicit controller --> + <mvc:view-controller path="/login"/> + <mvc:view-controller path="/" view-name="index"/> + <mvc:view-controller path="/uncaughtException"/> + <mvc:view-controller path="/resourceNotFound"/> + <mvc:view-controller path="/dataAccessFailure"/> + + <!-- Resolves localized messages*.properties and application.properties files in the application to allow for internationalization. + The messages*.properties files translate Roo generated messages which are part of the admin interface, the + application.properties resource bundle localizes all application specific messages such as entity names and menu items. --> + <bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource" p:basenames="WEB-INF/i18n/messages,WEB-INF/i18n/application" p:fallbackToSystemLocale="false"/> + + <!-- Store preferred language configuration in a cookie --> + <bean class="org.springframework.web.servlet.i18n.CookieLocaleResolver" id="localeResolver" p:cookieName="locale"/> + + <!-- Resolves localized <theme_name>.properties files in the classpath to allow for theme support --> + <bean class="org.springframework.ui.context.support.ResourceBundleThemeSource" id="themeSource"/> + + <!-- Store preferred theme configuration in a cookie --> + <bean class="org.springframework.web.servlet.theme.CookieThemeResolver" id="themeResolver" p:cookieName="theme" p:defaultThemeName="standard"/> + + <!-- This bean resolves specific types of exceptions to corresponding logical - view names for error views. + The default behaviour of DispatcherServlet - is to propagate all exceptions to the servlet + container: this will happen - here with all other types of exceptions. --> + <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException"> + <property name="exceptionMappings"> + <props> + <prop key=".DataAccessException">dataAccessFailure</prop> + <prop key=".NoSuchRequestHandlingMethodException">resourceNotFound</prop> + <prop key=".TypeMismatchException">resourceNotFound</prop> + <prop key=".MissingServletRequestParameterException">resourceNotFound</prop> + </props> + </property> + </bean> + + <!-- Enable this for integration of file upload functionality --> + <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"/> +<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver"> + <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> + </bean> + <bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer"> + <property name="definitions"> + <list> + <value>/WEB-INF/layouts/layouts.xml</value> + <!-- Scan views directory for Tiles configurations --> + <value>/WEB-INF/views/**/views.xml</value> + </list> + </property> + </bean> +<bean class="br.ufpr.c3sl.participatorio.web.ApplicationConversionServiceFactoryBean" id="applicationConversionService"/> +</beans> diff --git a/src/main/webapp/WEB-INF/tags/form/create.tagx b/src/main/webapp/WEB-INF/tags/form/create.tagx new file mode 100644 index 0000000..f8d78e7 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/create.tagx @@ -0,0 +1,61 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes"/> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)"/> + <jsp:directive.attribute name="modelAttribute" type="java.lang.String" required="true" rtexprvalue="true" description="The name of the model attribute for form binding"/> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="Specify the relative URL path (wit leading /)" /> + <jsp:directive.attribute name="compositePkField" type="java.lang.String" required="false" rtexprvalue="true" description="The field name of the composite primary key (only used if a composite PK is present in the form backing object)" /> + <jsp:directive.attribute name="multipart" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if this is a multipart form (default: false)" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied"/> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)"/> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)"/> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + <c:set var="enctype" value="application/x-www-form-urlencoded"/> + <c:if test="${multipart}"> + <c:set var="enctype" value="multipart/form-data"/> + </c:if> + <spring:message arguments="${label}" code="entity_create" var="title_msg" htmlEscape="false" /> + <util:panel id="${id}" title="${title_msg}" openPane="${openPane}"> + <spring:url value="${path}" var="form_url"/> + <c:set var="jsCall" value=""/> + <c:if test="${not empty compositePkField}"> + <c:set var="jsCall" value="encodePk()" /> + </c:if> + <form:form action="${form_url}" method="POST" modelAttribute="${modelAttribute}" enctype="${enctype}" onsubmit="${jsCall}"> + <form:errors cssClass="errors" delimiter="<p/>"/> + <c:if test="${not empty compositePkField}"> + <form:hidden id="_${fn:escapeXml(compositePkField)}_id" path="${fn:escapeXml(compositePkField)}" /> + <script type="text/javascript"> + <![CDATA[ + dojo.require("dojox.encoding.base64"); + function encodePk() { + var obj = new Object(); + dojo.query("input[name^=\"${compositePkField}.\"]").forEach(function(node, index, nodelist){ + obj[node.name.substring('${compositePkField}'.length + 1)] = node.value; + }); + var json = dojo.toJson(obj); + var tokArr = []; + for (var i = 0; i < json.length; i++) { + tokArr.push(json.charCodeAt(i)); + } + var encoded = dojox.encoding.base64.encode(tokArr); + dojo.byId('_${fn:escapeXml(compositePkField)}_id').value = encoded; + } + ]]> + </script> + </c:if> + <jsp:doBody /> + <div class="submit" id="${fn:escapeXml(id)}_submit"> + <spring:message code="button_save" var="save_button" htmlEscape="false" /> + <script type="text/javascript">Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));</script> + <input id="proceed" type="submit" value="${fn:escapeXml(save_button)}"/> + </div> + </form:form> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/dependency.tagx b/src/main/webapp/WEB-INF/tags/form/dependency.tagx new file mode 100644 index 0000000..4888a12 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/dependency.tagx @@ -0,0 +1,25 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes"/> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)"/> + <jsp:directive.attribute name="dependencies" type="java.util.Collection" required="true" rtexprvalue="true" description="The collection of dependencies which need to be listed"/> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied"/> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)"/> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)"/> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false"/> + </c:if> + <spring:message arguments="${label}" code="entity_create" var="title_msg" htmlEscape="false" /> + <util:panel id="${fn:escapeXml(id)}" title="${fn:escapeXml(title_msg)}" openPane="${openPane}"> + <spring:message code="entity_dependency_required"/> + <c:forEach items="${dependencies}" var="dependency" > + <p> + <field:reference field="${dependency[0]}" id="${fn:escapeXml(id)}_${dependency[0]}" path="/${dependency[1]}"/> + </p> + </c:forEach> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/checkbox.tagx b/src/main/webapp/WEB-INF/tags/form/fields/checkbox.tagx new file mode 100644 index 0000000..1804424 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/checkbox.tagx @@ -0,0 +1,38 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="disableFormBinding" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Set to true to disable Spring form binding" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true">${field}</spring:escapeBody> + </c:set> + + <script type="text/javascript">dojo.require("dijit.form.CheckBox");</script> + <div id="_${sec_id}_id"> + <label for="_${sec_field}_id"> + <c:out value="${fn:escapeXml(label)}" />: + </label> + <c:choose> + <c:when test="${disableFormBinding}"> + <input id="_${sec_field}_id" name="${sec_field}" type="checkbox"/> + </c:when> + <c:otherwise> + <form:checkbox id="_${sec_field}_id" path="${sec_field}"/> + </c:otherwise> + </c:choose> + <script type="text/javascript"> + Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.CheckBox', widgetAttrs : {}})); + </script> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/column.tagx b/src/main/webapp/WEB-INF/tags/form/fields/column.tagx new file mode 100644 index 0000000..cfaddab --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/column.tagx @@ -0,0 +1,63 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="property" type="java.lang.String" required="true" rtexprvalue="true" description="The property (field name) of the dataset to be displayed in a column (required)." /> + <jsp:directive.attribute name="maxLength" type="java.lang.Integer" required="false" rtexprvalue="true" description="Max displayed text length (default '10'). Unlimited if negative" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The column label to be used in the table (optional)." /> + <jsp:directive.attribute name="date" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate that this field is of type java.util.Date" /> + <jsp:directive.attribute name="calendar" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate that this field is of type java.util.Calendar" /> + <jsp:directive.attribute name="dateTimePattern" type="java.lang.String" required="false" rtexprvalue="true" description="The date / time pattern to use if the field is a date or calendar type" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty dateTimePattern}"> + <c:set value="MM/dd/yyyy" var="dateTimePattern" /> + </c:if> + + <c:choose> + <c:when test="${date and empty columnTypes}"> + <c:set var="columnTypes" value="date" scope="request" /> + <c:set var="columnDatePatterns" value="${dateTimePattern}" scope="request" /> + </c:when> + <c:when test="${date and not empty columnTypes}"> + <c:set var="columnTypes" value="${columnTypes}✏date" scope="request" /> + <c:set var="columnDatePatterns" value="${columnDatePatterns}✏${dateTimePattern}" scope="request" /> + </c:when> + <c:when test="${calendar and empty columnTypes}"> + <c:set var="columnTypes" value="calendar" scope="request" /> + <c:set var="columnDatePatterns" value="${dateTimePattern}" scope="request" /> + </c:when> + <c:when test="${calendar and not empty columnTypes}"> + <c:set var="columnTypes" value="${columnTypes}✏calendar" scope="request" /> + <c:set var="columnDatePatterns" value="${columnDatePatterns}✏${dateTimePattern}" scope="request" /> + </c:when> + <c:when test="${empty columnTypes}"> + <c:set var="columnTypes" value="default" scope="request" /> + <c:set var="columnDatePatterns" value="none" scope="request" /> + </c:when> + <c:otherwise> + <c:set var="columnTypes" value="${columnTypes}✏default" scope="request" /> + <c:set var="columnDatePatterns" value="${columnDatePatterns}✏none" scope="request" /> + </c:otherwise> + </c:choose> + + <c:choose> + <c:when test="${empty columnProperties and empty columnLabels}"> + <c:set var="columnProperties" value="${property}" scope="request" /> + <c:set var="columnLabels" value="${label}" scope="request" /> + <c:set var="columnMaxLengths" value="${empty maxLength ? 128 : maxLength}" scope="request" /> + </c:when> + <c:otherwise> + <c:set var="columnProperties" value="${columnProperties}✏${property}" scope="request" /> + <c:set var="columnLabels" value="${columnLabels}✏${label}" scope="request" /> + <c:set var="columnMaxLengths" value="${columnMaxLengths}✏${empty maxLength ? 128 : maxLength}" scope="request" /> + </c:otherwise> + </c:choose> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx b/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx new file mode 100644 index 0000000..9346612 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx @@ -0,0 +1,75 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="dateTimePattern" type="java.lang.String" required="true" rtexprvalue="true" description="The format accepted in this field" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="disabled" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if this field should be enabled" /> + <jsp:directive.attribute name="validationRegex" type="java.lang.String" required="false" rtexprvalue="true" description="Specify regular expression to be used for the validation of the input contents" /> + <jsp:directive.attribute name="validationMessageCode" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message (message property code) to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="validationMessage" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="future" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if the date / time should be in the future" /> + <jsp:directive.attribute name="past" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if the date / time should be in the past" /> + <jsp:directive.attribute name="disableFormBinding" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Set to true to disable Spring form binding" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty disabled}"> + <c:set value="false" var="disabled" /> + </c:if> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody> + </c:set> + + <c:if test="${empty required}"> + <c:set value="false" var="required" /> + </c:if> + + <script type="text/javascript">dojo.require('dijit.form.DateTextBox')</script> + <div id="_${sec_id}_id"> + <label for="_${sec_field}_id"> + <c:out value="${label}" /> + : + </label> + <c:choose> + <c:when test="${disableFormBinding}"> + <input id="_${sec_field}_id" name="${sec_field}" /> + </c:when> + <c:otherwise> + <form:input id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" /> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + </c:otherwise> + </c:choose> + <spring:message arguments="${fn:escapeXml(label)}" code="field_invalid" var="field_invalid" htmlEscape="false" /> + <c:choose> + <c:when test="${required}"> + <spring:message code="field_required" var="field_required" htmlEscape="false" /> + <spring:message argumentSeparator="," arguments="${label},(${field_required})" code="field_simple_validation" var="field_validation" htmlEscape="false" /> + </c:when> + <c:otherwise> + <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" /> + </c:otherwise> + </c:choose> + <script type="text/javascript"> + <c:set var="sec_field_validation"> + <spring:escapeBody javaScriptEscape="true">${field_validation}</spring:escapeBody> + </c:set> + <c:set var="sec_field_invalid"> + <spring:escapeBody javaScriptEscape="true">${field_invalid}</spring:escapeBody> + </c:set> + <c:set var="sec_dateTimePattern"> + <spring:escapeBody javaScriptEscape="true">${dateTimePattern}</spring:escapeBody> + </c:set> + Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.DateTextBox', widgetAttrs : {promptMessage: '${sec_field_validation}', invalidMessage: '${sec_field_invalid}', required: ${required}, constraints: {datePattern : '${sec_dateTimePattern}', required : ${required}}, datePattern : '${sec_dateTimePattern}'}})); </script> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/display.tagx b/src/main/webapp/WEB-INF/tags/form/fields/display.tagx new file mode 100644 index 0000000..a6e8f43 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/display.tagx @@ -0,0 +1,48 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:fmt="http://java.sun.com/jsp/jstl/fmt" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="object" type="java.lang.Object" required="true" rtexprvalue="true" description="The form backing object" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field name" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="date" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate that this field is of type java.util.Date" /> + <jsp:directive.attribute name="calendar" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate that this field is of type java.util.Calendar" /> + <jsp:directive.attribute name="dateTimePattern" type="java.lang.String" required="false" rtexprvalue="true" description="The date / time pattern to use if the field is a date or calendar type" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${not empty object and empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty dateTimePattern}"> + <c:set value="MM/dd/yyyy" var="dateTimePattern" /> + </c:if> + + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${fn:escapeXml(field)}_id"> + <c:out value="${label}" /> + : + </label> + <div class="box" id="_${fn:escapeXml(id)}_${fn:escapeXml(field)}_id"> + <c:choose> + <c:when test="${date}"> + <spring:escapeBody> + <fmt:formatDate value="${object[field]}" pattern="${fn:escapeXml(dateTimePattern)}" /> + </spring:escapeBody> + </c:when> + <c:when test="${calendar}"> + <spring:escapeBody> + <fmt:formatDate value="${object[field].time}" pattern="${fn:escapeXml(dateTimePattern)}" /> + </spring:escapeBody> + </c:when> + <c:otherwise> + <spring:eval expression="object[field]" /> + </c:otherwise> + </c:choose> + </div> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx b/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx new file mode 100644 index 0000000..c4c6192 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx @@ -0,0 +1,60 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="disabled" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if this field should be enabled" /> + <jsp:directive.attribute name="validationRegex" type="java.lang.String" required="false" rtexprvalue="true" description="Specify regular expression to be used for the validation of the input contents" /> + <jsp:directive.attribute name="validationMessageCode" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message (message property code) to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="validationMessage" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty disabled}"> + <c:set value="false" var="disabled" /> + </c:if> + + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty required}"> + <c:set value="false" var="required" /> + </c:if> + + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody> + </c:set> + + <script type="text/javascript">dojo.require("dijit.Editor");</script> + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${sec_field}_id"> + <c:out value="${fn:escapeXml(label)}" /> + : + </label> + <form:hidden id="_${sec_field}_id" path="${sec_field}" /> + <div> + <div id="_${sec_field}_id_"></div> + <script type="text/javascript"> + Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id_', widgetType : 'dijit.Editor', widgetAttrs : {disabled: ${disabled}}})); + dojo.addOnLoad(function () { + var src = dojo.byId('_${sec_field}_id'); + var rte = dijit.byId('_${sec_field}_id_'); + rte.disabled = ${disabled}; + rte.onLoadDeferred.addCallback(function(){ + rte.setValue(src.value); + dojo.connect(rte, 'onBlur', function(){src.value = rte.getValue();}); + }); + }); + </script> + </div> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/input.tagx b/src/main/webapp/WEB-INF/tags/form/fields/input.tagx new file mode 100644 index 0000000..aff5ea1 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/input.tagx @@ -0,0 +1,108 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="labelCode" type="java.lang.String" required="false" rtexprvalue="true" description="Key for label message bundle if label is not supplied" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="disabled" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if this field should be enabled" /> + <jsp:directive.attribute name="validationRegex" type="java.lang.String" required="false" rtexprvalue="true" description="Specify regular expression to be used for the validation of the input contents" /> + <jsp:directive.attribute name="validationMessageCode" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message (message property code) to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="validationMessage" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="min" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the minimum length of the input contents" /> + <jsp:directive.attribute name="max" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the maximum length of the input contents" /> + <jsp:directive.attribute name="decimalMin" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the minimum size of the input contents" /> + <jsp:directive.attribute name="decimalMax" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the maximum size of the input contents" /> + <jsp:directive.attribute name="disableFormBinding" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Set to true to disable Spring form binding" /> + <jsp:directive.attribute name="type" type="java.lang.String" required="false" rtexprvalue="true" description="Set field type (default 'text', or 'password')" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty type}"> + <c:set value="text" var="type" /> + </c:if> + + <c:if test="${empty disabled}"> + <c:set value="false" var="disabled" /> + </c:if> + + <c:if test="${empty label}"> + <c:if test="${empty labelCode}"> + <c:set var="labelCode" value="${fn:substringAfter(id,'_')}" /> + </c:if> + <spring:message code="label_${fn:toLowerCase(labelCode)}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty validationMessage}"> + <c:choose> + <c:when test="${empty validationMessageCode}"> + <spring:message arguments="${fn:escapeXml(label)}" code="field_invalid" var="field_invalid" htmlEscape="false" /> + </c:when> + <c:otherwise> + <spring:message arguments="${fn:escapeXml(label)}" code="${validationMessageCode}" var="field_invalid" htmlEscape="false" /> + </c:otherwise> + </c:choose> + </c:if> + + <c:if test="${empty required}"> + <c:set value="false" var="required" /> + </c:if> + + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody> + </c:set> + + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${sec_field}_id"> + <c:out value="${fn:escapeXml(label)}" /> + : + </label> + <c:choose> + <c:when test="${disableFormBinding}"> + <input id="_${sec_field}_id" name="${sec_field}" type="${fn:escapeXml(type)}" /> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${type eq 'password'}"> + <form:password id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" /> + </c:when> + <c:otherwise> + <form:input id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" /> + </c:otherwise> + </c:choose> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + </c:otherwise> + </c:choose> + <c:choose> + <c:when test="${required}"> + <spring:message code="field_required" var="field_required" htmlEscape="false" /> + <spring:message argumentSeparator="," arguments="${label},(${field_required})" code="field_simple_validation" var="field_validation" htmlEscape="false" /> + </c:when> + <c:otherwise> + <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" /> + </c:otherwise> + </c:choose> + <c:set var="sec_field_validation"> + <spring:escapeBody javaScriptEscape="true">${field_validation}</spring:escapeBody> + </c:set> + <c:set var="sec_field_invalid"> + <spring:escapeBody javaScriptEscape="true" htmlEscape="true">${field_invalid}</spring:escapeBody> + </c:set> + <c:set var="sec_field_required"> + <spring:escapeBody javaScriptEscape="true">${field_required}</spring:escapeBody> + </c:set> + <c:set var="sec_validation_regex" value="" /> + <c:if test="${!empty validationRegex}"> + <c:set var="sec_validation_regex" value="regExp : '${validationRegex}', " /> + </c:if> + <script type="text/javascript"> + Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.ValidationTextBox', widgetAttrs : {promptMessage: '${sec_field_validation}', invalidMessage: '${sec_field_invalid}', required : ${required}, ${sec_validation_regex} missingMessage : '${sec_field_required}' }})); + </script> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx b/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx new file mode 100644 index 0000000..a99eb1c --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx @@ -0,0 +1,41 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="The relative path to the respource" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${fn:escapeXml(field)}_id"> + <c:out value="${fn:escapeXml(label)}" /> + : + </label> + <spring:url value="${path}" var="create_url"> + <spring:param name="form" /> + </spring:url> + <a href="${create_url}"> + <spring:url value="/resources/images/add.png" var="create_img_url" /> + <spring:message arguments="${field}" code="global_menu_new" var="add_message" htmlEscape="false" /> + <img alt="${fn:escapeXml(add_message)}" src="${create_img_url}" title="${fn:escapeXml(add_message)}" /> + </a> + <c:out value=" " /> + <spring:message arguments="${label}" code="entity_not_found" /> + <c:if test="${not empty required and required eq 'true'}"> + ( + <spring:message code="field_required" /> + ) + </c:if> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/select.tagx b/src/main/webapp/WEB-INF/tags/form/fields/select.tagx new file mode 100644 index 0000000..e454985 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/select.tagx @@ -0,0 +1,199 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="The relative path to the referenced resource" /> + <jsp:directive.attribute name="items" type="java.util.Collection" required="true" rtexprvalue="true" description="The name of the collection displayed in the select box" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="itemLabel" type="java.lang.String" required="false" rtexprvalue="true" description="Name of the property mapped to the inner text of the 'option' tag (will override the configured converter)" /> + <jsp:directive.attribute name="itemValue" type="java.lang.String" required="false" rtexprvalue="true" description="The identifier used as value in the select box (defaults to 'id' for non enum types)" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="disabled" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if this field should be enabled" /> + <jsp:directive.attribute name="multiple" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if the select box should allow multiple selections" /> + <jsp:directive.attribute name="disableFormBinding" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Set to true to disable Spring form binding" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty disabled}"> + <c:set value="false" var="disabled" /> + </c:if> + + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty required}"> + <c:set value="false" var="required" /> + </c:if> + + <c:if test="${empty multiple}"> + <c:set value="false" var="multiple" /> + </c:if> + + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody> + </c:set> + + <c:set var="sec_itemLabel"> + <spring:escapeBody htmlEscape="true" >${itemLabel}</spring:escapeBody> + </c:set> + + <div id="_${fn:escapeXml(id)}_id"> + <c:choose> + <c:when test="${not empty items}"> + <label for="_${sec_field}_id"> + <c:out value="${fn:escapeXml(label)}" /> + : + </label> + <c:choose> + <c:when test="${empty itemValue}"> + <c:choose> + <c:when test="${disableFormBinding}"> + <c:choose> + <c:when test="${multiple}"> + <select id="_${sec_field}_id" name="${sec_field}" multiple="${multiple}"> + <c:forEach items="${items}" var="item"> + <option value="${item}"> + <c:choose> + <c:when test="${empty itemLabel}"> + <spring:eval expression="item" /> + </c:when> + <c:otherwise> + <spring:eval expression="item[sec_itemLabel]"/> + </c:otherwise> + </c:choose> + </option> + </c:forEach> + </select> + </c:when> + <c:otherwise> + <select id="_${sec_field}_id" name="${sec_field}"> + <c:forEach items="${items}" var="item"> + <option value="${item}"> + <c:choose> + <c:when test="${empty itemLabel}"> + <spring:eval expression="item" /> + </c:when> + <c:otherwise> + <spring:eval expression="item[sec_itemLabel]"/> + </c:otherwise> + </c:choose> + </option> + </c:forEach> + </select> + </c:otherwise> + </c:choose> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${empty itemLabel}"> + <c:choose> + <c:when test="${multiple}"> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" multiple="${multiple}" /> + </c:when> + <c:otherwise> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" /> + </c:otherwise> + </c:choose> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${multiple}"> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" multiple="${multiple}" itemLabel="${sec_itemLabel}"/> + </c:when> + <c:otherwise> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" itemLabel="${sec_itemLabel}"/> + </c:otherwise> + </c:choose> + </c:otherwise> + </c:choose> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + </c:otherwise> + </c:choose> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${disableFormBinding}"> + <c:choose> + <c:when test="${multiple}"> + <select id="_${sec_field}_id" name="${sec_field}" multiple="${multiple}"> + <c:forEach items="${items}" var="item"> + <option value="${item[fn:escapeXml(itemValue)]}"> + <c:choose> + <c:when test="${empty itemLabel}"> + <spring:eval expression="item" /> + </c:when> + <c:otherwise> + <spring:eval expression="item[sec_itemLabel]"/> + </c:otherwise> + </c:choose> + </option> + </c:forEach> + </select> + </c:when> + <c:otherwise> + <select id="_${sec_field}_id" name="${sec_field}" multiple="${multiple}"> + <c:forEach items="${items}" var="item"> + <option value="${item[fn:escapeXml(itemValue)]}"> + <c:choose> + <c:when test="${empty itemLabel}"> + <spring:eval expression="item" /> + </c:when> + <c:otherwise> + <spring:eval expression="item[sec_itemLabel]"/> + </c:otherwise> + </c:choose> + </option> + </c:forEach> + </select> + </c:otherwise> + </c:choose> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${empty itemLabel}"> + <c:choose> + <c:when test="${multiple}"> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" multiple="${multiple}" itemValue="${fn:escapeXml(itemValue)}" /> + </c:when> + <c:otherwise> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" itemValue="${fn:escapeXml(itemValue)}" /> + </c:otherwise> + </c:choose> + </c:when> + <c:otherwise> + <c:choose> + <c:when test="${multiple}"> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" multiple="${multiple}" itemValue="${fn:escapeXml(itemValue)}" itemLabel="${sec_itemLabel}"/> + </c:when> + <c:otherwise> + <form:select id="_${sec_field}_id" items="${items}" path="${sec_field}" disabled="${disabled}" itemValue="${fn:escapeXml(itemValue)}" itemLabel="${sec_itemLabel}"/> + </c:otherwise> + </c:choose> + </c:otherwise> + </c:choose> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + </c:otherwise> + </c:choose> + </c:otherwise> + </c:choose> + <c:choose> + <c:when test="${multiple == false}"> + <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType: 'dijit.form.FilteringSelect', widgetAttrs : {hasDownArrow : true}})); </script> + </c:when> + <!-- disabled due to http://jira.springframework.org/browse/ROO-909 <c:otherwise> <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${field}_id', widgetType: 'dijit.form.MultiSelect', widgetAttrs : {}})); </script> </c:otherwise> --> + </c:choose> + </c:when> + <c:otherwise> + <field:reference field="${label}" id="${id}" path="${path}" required="${required}" /> + </c:otherwise> + </c:choose> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/simple.tagx b/src/main/webapp/WEB-INF/tags/form/fields/simple.tagx new file mode 100644 index 0000000..f8a86f3 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/simple.tagx @@ -0,0 +1,35 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="text" type="java.lang.String" required="false" rtexprvalue="true" description="The text to be presented" /> + <jsp:directive.attribute name="messageCode" type="java.lang.String" required="false" rtexprvalue="true" description="The code for the message to be presented" /> + <jsp:directive.attribute name="messageCodeAttribute" type="java.lang.String" required="false" rtexprvalue="true" description="The attribute for the message code sto be presented" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${fn:escapeXml(field)}_id"> + <c:out value="${label}" /> + : + </label> + <c:choose> + <c:when test="${not empty messageCode}"> + <spring:message code="${messageCode}" arguments="${messageCodeAttribute}" /> + </c:when> + <c:otherwise> + <spring:eval expression="text" /> + </c:otherwise> + </c:choose> + </div> + <br /> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/table.tagx b/src/main/webapp/WEB-INF/tags/form/fields/table.tagx new file mode 100644 index 0000000..80962b3 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/table.tagx @@ -0,0 +1,162 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:fmt="http://java.sun.com/jsp/jstl/fmt" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.tag import="java.util.ArrayList" /> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="data" type="java.util.Collection" required="true" rtexprvalue="true" description="The collection to be displayed in the table" /> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="Specify the URL path" /> + <jsp:directive.attribute name="typeIdFieldName" type="java.lang.String" required="false" rtexprvalue="true" description="The identifier field name for the type (defaults to 'id')" /> + <jsp:directive.attribute name="create" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'create' link into table (default true)" /> + <jsp:directive.attribute name="update" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'update' link into table (default true)" /> + <jsp:directive.attribute name="delete" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'delete' link into table (default true)" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:set var="columnProperties" scope="request" /> + <c:set var="columnLabels" scope="request" /> + <c:set var="columnMaxLengths" scope="request" /> + <c:set var="columnTypes" scope="request" /> + <c:set var="columnDatePatterns" scope="request" /> + + <jsp:doBody /> + + <c:if test="${empty typeIdFieldName}"> + <c:set var="typeIdFieldName" value="id" /> + </c:if> + + <c:if test="${empty update}"> + <c:set var="update" value="true" /> + </c:if> + + <c:if test="${empty delete}"> + <c:set var="delete" value="true" /> + </c:if> + + <spring:message var="typeName" code="menu_item_${fn:toLowerCase(fn:split(id,'_')[fn:length(fn:split(id,'_')) - 1])}_new_label" htmlEscape="false" /> + <c:set var="lengths" value="${fn:split(columnMaxLengths, '✏')}" scope="request" /> + <c:set var="types" value="${fn:split(columnTypes, '✏')}" scope="request" /> + <c:set var="patterns" value="${fn:split(columnDatePatterns, '✏')}" scope="request" /> + + <spring:eval var="colCounter" expression="1" /> + + <table> + <thead> + <tr> + <c:forTokens items="${columnLabels}" delims="${'✏'}" var="columnHeading"> + <th> + <c:out value="${columnHeading}" /> + <spring:eval var="colCounter" expression="colCounter + 1" /> + </th> + </c:forTokens> + <th></th> + <c:if test="${update}"> + <th></th> + <spring:eval var="colCounter" expression="colCounter + 1" /> + </c:if> + <c:if test="${delete}"> + <th></th> + <spring:eval var="colCounter" expression="colCounter + 1" /> + </c:if> + </tr> + </thead> + <c:forEach items="${data}" var="item"> + <tr> + <c:forTokens items="${columnProperties}" delims="${'✏'}" var="column" varStatus="num"> + <c:set var="columnMaxLength" value="${lengths[num.count-1]}" /> + <c:set var="columnType" value="${types[num.count-1]}" /> + <c:set var="columnDatePattern" value="${patterns[num.count-1]}" /> + <td> + <c:choose> + <c:when test="${columnType eq 'date'}"> + <spring:escapeBody> + <fmt:formatDate value="${item[column]}" pattern="${fn:escapeXml(columnDatePattern)}" var="colTxt" /> + </spring:escapeBody> + </c:when> + <c:when test="${columnType eq 'calendar'}"> + <spring:escapeBody> + <fmt:formatDate value="${item[column].time}" pattern="${fn:escapeXml(columnDatePattern)}" var="colTxt"/> + </spring:escapeBody> + </c:when> + <c:otherwise> + <c:set var="colTxt"> + <spring:eval expression="item[column]" htmlEscape="false" /> + </c:set> + </c:otherwise> + </c:choose> + <c:if test="${columnMaxLength ge 0}"> + <c:set value="${fn:substring(colTxt, 0, columnMaxLength)}" var="colTxt" /> + </c:if> + <c:out value="${colTxt}" /> + </td> + </c:forTokens> + <c:set var="itemId"><spring:eval expression="item[typeIdFieldName]"/></c:set> + <td class="utilbox"> + <spring:url value="${path}/${itemId}" var="show_form_url" /> + <spring:url value="/resources/images/show.png" var="show_image_url" /> + <spring:message arguments="${typeName}" code="entity_show" var="show_label" htmlEscape="false" /> + <a href="${show_form_url}" alt="${fn:escapeXml(show_label)}" title="${fn:escapeXml(show_label)}"> + <img alt="${fn:escapeXml(show_label)}" class="image" src="${show_image_url}" title="${fn:escapeXml(show_label)}" /> + </a> + </td> + <c:if test="${update}"> + <td class="utilbox"> + <spring:url value="${path}/${itemId}" var="update_form_url"> + <spring:param name="form" /> + </spring:url> + <spring:url value="/resources/images/update.png" var="update_image_url" /> + <spring:message arguments="${typeName}" code="entity_update" var="update_label" htmlEscape="false" /> + <a href="${update_form_url}" alt="${fn:escapeXml(update_label)}" title="${fn:escapeXml(update_label)}"> + <img alt="${fn:escapeXml(update_label)}" class="image" src="${update_image_url}" title="${fn:escapeXml(update_label)}" /> + </a> + </td> + </c:if> + <c:if test="${delete}"> + <td class="utilbox"> + <spring:url value="${path}/${itemId}" var="delete_form_url" /> + <spring:url value="/resources/images/delete.png" var="delete_image_url" /> + <form:form action="${delete_form_url}" method="DELETE"> + <spring:message arguments="${typeName}" code="entity_delete" var="delete_label" htmlEscape="false" /> + <c:set var="delete_confirm_msg"> + <spring:escapeBody javaScriptEscape="true"> + <spring:message code="entity_delete_confirm" /> + </spring:escapeBody> + </c:set> + <input alt="${fn:escapeXml(delete_label)}" class="image" src="${delete_image_url}" title="${fn:escapeXml(delete_label)}" type="image" value="${fn:escapeXml(delete_label)}" onclick="return confirm('${delete_confirm_msg}');" /> + <c:if test="${not empty param.page}"> + <input name="page" type="hidden" value="1" /> + </c:if> + <c:if test="${not empty param.size}"> + <input name="size" type="hidden" value="${fn:escapeXml(param.size)}" /> + </c:if> + </form:form> + </td> + </c:if> + </tr> + </c:forEach> + <tr class="footer"> + <td colspan="${colCounter}"> + <c:if test="${empty create or create}"> + <span class="new"> + <spring:url value="${path}" var="create_url"> + <spring:param name="form" /> + </spring:url> + <a href="${create_url}"> + <spring:url value="/resources/images/add.png" var="create_img_url" /> + <spring:message arguments="${typeName}" code="global_menu_new" var="add_message" htmlEscape="false" /> + <img alt="${fn:escapeXml(add_message)}" src="${create_img_url}" title="${fn:escapeXml(add_message)}" /> + </a> + </span> + <c:out value=" " /> + </c:if> + <c:if test="${not empty maxPages}"> + <util:pagination maxPages="${maxPages}" page="${param.page}" size="${param.size}" /> + </c:if> + </td> + </tr> + </table> + + </c:if> + +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx b/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx new file mode 100644 index 0000000..1b5ba23 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx @@ -0,0 +1,47 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="field" type="java.lang.String" required="true" rtexprvalue="true" description="The field exposed from the form backing object" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="required" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if this field is required (default false)" /> + <jsp:directive.attribute name="disabled" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Specify if this field should be enabled" /> + <jsp:directive.attribute name="validationRegex" type="java.lang.String" required="false" rtexprvalue="true" description="Specify regular expression to be used for the validation of the input contents" /> + <jsp:directive.attribute name="validationMessageCode" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message (message property code) to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="validationMessage" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the message to be displayed if the regular expression validation fails" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty disabled}"> + <c:set value="false" var="disabled" /> + </c:if> + + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty required}"> + <c:set value="false" var="required" /> + </c:if> + + <c:set var="sec_field"> + <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody> + </c:set> + + <script type="text/javascript">dojo.require("dijit.form.SimpleTextarea");</script> + <div id="_${fn:escapeXml(id)}_id"> + <label for="_${sec_field}_id"> + <c:out value="${fn:escapeXml(label)}" /> + : + </label> + <form:textarea id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" /> + <br /> + <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" /> + <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.SimpleTextarea', widgetAttrs : {disabled : ${disabled}}})); </script> + </div> + <br /> + + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/find.tagx b/src/main/webapp/WEB-INF/tags/form/find.tagx new file mode 100644 index 0000000..095f20f --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/find.tagx @@ -0,0 +1,31 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes"/> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)"/> + <jsp:directive.attribute name="finderName" type="java.lang.String" required="true" rtexprvalue="true" description="The finder name"/> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="Specify the relative URL path (with leading /)" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this field, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)"/> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)"/> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <c:set var="entityClass" value="${fn:substringAfter(id,'ff_')}" /> + <spring:message code="label_${fn:toLowerCase(entityClass)}_plural" var="label" htmlEscape="false" /> + </c:if> + <spring:message arguments="${fn:escapeXml(label)}" code="entity_find" var="title_msg" htmlEscape="false" /> + <util:panel id="${id}" title="${title_msg}" openPane="${openPane}"> + <spring:url value="${path}" var="form_url" /> + <form:form action="${form_url}" method="GET"> + <input type="hidden" name="find" value="${fn:escapeXml(finderName)}" /> + <jsp:doBody /> + <div class="submit" id="${fn:escapeXml(id)}_${fn:escapeXml(finderName)}_submit"> + <spring:message code="button_find" var="find_button" htmlEscape="false" /> + <script type="text/javascript">Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));</script> + <input id="proceed" type="submit" value="${fn:escapeXml(find_button)}"/> + </div> + </form:form> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/list.tagx b/src/main/webapp/WEB-INF/tags/form/list.tagx new file mode 100644 index 0000000..b81d256 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/list.tagx @@ -0,0 +1,31 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="items" type="java.util.Collection" required="true" rtexprvalue="true" description="The form backing object name" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="labelPlural" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + <c:if test="${empty labelPlural}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}_plural" var="labelPlural" htmlEscape="false" /> + </c:if> + <spring:message arguments="${labelPlural}" code="entity_list_all" var="title_msg" htmlEscape="false" /> + <util:panel id="${id}" title="${title_msg}" openPane="${openPane}"> + <c:choose> + <c:when test="${not empty items}"> + <jsp:doBody /> + </c:when> + <c:otherwise> + <spring:message arguments="${label}" code="entity_not_found" /> + </c:otherwise> + </c:choose> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/show.tagx b/src/main/webapp/WEB-INF/tags/form/show.tagx new file mode 100644 index 0000000..47cc06a --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/show.tagx @@ -0,0 +1,103 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="object" type="java.lang.Object" required="true" rtexprvalue="true" description="The form backing object" /> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="Specify the URL path" /> + <jsp:directive.attribute name="list" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'list' link into table (default true)" /> + <jsp:directive.attribute name="create" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'create' link into table (default true)" /> + <jsp:directive.attribute name="update" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'update' link into table (default true)" /> + <jsp:directive.attribute name="delete" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Include 'delete' link into table (default true)" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${empty list}"> + <c:set var="list" value="true" /> + </c:if> + + <c:if test="${empty create}"> + <c:set var="create" value="true" /> + </c:if> + + <c:if test="${empty update}"> + <c:set var="update" value="true" /> + </c:if> + + <c:if test="${empty delete}"> + <c:set var="delete" value="true" /> + </c:if> + + <spring:message var="typeName" code="menu_item_${fn:toLowerCase(fn:split(id,'_')[fn:length(fn:split(id,'_')) - 1])}_new_label" htmlEscape="false" /> + <spring:message var="typeNamePlural" code="menu_item_${fn:toLowerCase(fn:split(id,'_')[fn:length(fn:split(id,'_')) - 1])}_list_label" htmlEscape="false" /> + + <spring:message arguments="${label}" code="entity_show" var="title_msg" htmlEscape="false" /> + <util:panel id="${id}" title="${title_msg}" openPane="${openPane}"> + <c:choose> + <c:when test="${not empty object}"> + <jsp:doBody /> + <div class="quicklinks"> + <span> + <c:if test="${delete}"> + <spring:url value="${path}/${itemId}" var="delete_form_url" /> + <spring:url value="/resources/images/delete.png" var="delete_image_url" /> + <form:form action="${delete_form_url}" method="DELETE"> + <spring:message arguments="${typeName}" code="entity_delete" var="delete_label" htmlEscape="false" /> + <c:set var="delete_confirm_msg"> + <spring:escapeBody javaScriptEscape="true"> + <spring:message code="entity_delete_confirm" /> + </spring:escapeBody> + </c:set> + <input alt="${fn:escapeXml(delete_label)}" class="image" src="${delete_image_url}" title="${fn:escapeXml(delete_label)}" type="image" value="${fn:escapeXml(delete_label)}" onclick="return confirm('${fn:escapeXml(delete_confirm_msg)}');" /> + </form:form> + </c:if> + </span> + <span> + <c:if test="${update}"> + <spring:url value="${path}/${itemId}" var="update_form_url"> + <spring:param name="form" /> + </spring:url> + <spring:url value="/resources/images/update.png" var="update_image_url" /> + <spring:message arguments="${typeName}" code="entity_update" var="update_label" htmlEscape="false" /> + <a href="${update_form_url}" alt="${fn:escapeXml(update_label)}" title="${fn:escapeXml(update_label)}"> + <img alt="${fn:escapeXml(update_label)}" class="image" src="${update_image_url}" title="${fn:escapeXml(update_label)}" /> + </a> + </c:if> + </span> + <span> + <c:if test="${create}"> + <spring:url value="${path}" var="create_form_url"> + <spring:param name="form" /> + </spring:url> + <spring:url value="/resources/images/create.png" var="create_image_url" /> + <spring:message arguments="${typeName}" code="entity_create" var="create_label" htmlEscape="false" /> + <a href="${create_form_url}" alt="${fn:escapeXml(create_label)}" title="${fn:escapeXml(create_label)}"> + <img alt="${fn:escapeXml(create_label)}" class="image" src="${create_image_url}" title="${fn:escapeXml(create_label)}" /> + </a> + </c:if> + </span> + <span> + <c:if test="${list}"> + <spring:url value="${path}" var="list_form_url" /> + <spring:url value="/resources/images/list.png" var="list_image_url" /> + <spring:message arguments="${typeNamePlural}" code="entity_list_all" var="list_label" htmlEscape="false" /> + <a href="${list_form_url}" alt="${fn:escapeXml(list_label)}" title="${fn:escapeXml(list_label)}"> + <img alt="${fn:escapeXml(list_label)}" class="image" src="${list_image_url}" title="${fn:escapeXml(list_label)}" /> + </a> + </c:if> + </span> + </div> + </c:when> + <c:otherwise> + <spring:message arguments="${label}" code="entity_not_found_single" /> + </c:otherwise> + </c:choose> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/form/update.tagx b/src/main/webapp/WEB-INF/tags/form/update.tagx new file mode 100644 index 0000000..01217c5 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/form/update.tagx @@ -0,0 +1,47 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="modelAttribute" type="java.lang.String" required="true" rtexprvalue="true" description="The name of the model attribute for form binding" /> + <jsp:directive.attribute name="path" type="java.lang.String" required="true" rtexprvalue="true" description="Specify the relative URL path (with leading /)" /> + <jsp:directive.attribute name="multipart" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if this is a multipart form (default: false)" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this object, will default to a message bundle if not supplied" /> + <jsp:directive.attribute name="idField" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the field name of the id field (default 'id')" /> + <jsp:directive.attribute name="versionField" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the field name of the version field (default 'version'). If specified 'none' the version field will not be inlcuded (versionField='none')." /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty label}"> + <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" htmlEscape="false" /> + </c:if> + <c:if test="${empty idField}"> + <c:set value="id" var="idField" /> + </c:if> + <c:if test="${empty versionField}"> + <c:set value="version" var="versionField" /> + </c:if> + <c:set var="enctype" value="application/x-www-form-urlencoded"/> + <c:if test="${multipart}"> + <c:set var="enctype" value="multipart/form-data"/> + </c:if> + <spring:message arguments="${label}" code="entity_update" var="title_msg" htmlEscape="false" /> + <util:panel id="${id}" title="${title_msg}" openPane="${openPane}"> + <spring:url value="${path}" var="form_url" /> + <form:form action="${form_url}" method="PUT" modelAttribute="${modelAttribute}" enctype="${enctype}"> + <form:errors cssClass="errors" delimiter="<p/>" /> + <jsp:doBody /> + <div class="submit" id="${fn:escapeXml(id)}_submit"> + <spring:message code="button_save" var="save_button" htmlEscape="false" /> + <script type="text/javascript">Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));</script> + <input id="proceed" type="submit" value="${fn:escapeXml(save_button)}" /> + </div> + <form:hidden id="_${fn:escapeXml(idField)}_id" path="${fn:escapeXml(idField)}" /> + <c:if test="${versionField ne 'none'}"> + <form:hidden id="_${fn:escapeXml(versionField)}_id" path="${fn:escapeXml(versionField)}" /> + </c:if> + </form:form> + </util:panel> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/menu/category.tagx b/src/main/webapp/WEB-INF/tags/menu/category.tagx new file mode 100644 index 0000000..f78f81f --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/menu/category.tagx @@ -0,0 +1,25 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes"/> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)"/> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label for this category (if not set the resource bundle is used)"/> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)"/> + + <c:if test="${empty render or render}"> + + <c:if test="${empty label}"> + <spring:message code="menu_category_${fn:toLowerCase(fn:substringAfter(id,'_'))}_label" var="label" htmlEscape="false"/> + </c:if> + + <li id="${fn:escapeXml(id)}"> + <h2> + <c:out value="${label}" /> + </h2> + <ul> + <jsp:doBody /> + </ul> + </li> + + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/menu/item.tagx b/src/main/webapp/WEB-INF/tags/menu/item.tagx new file mode 100644 index 0000000..b1768a1 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/menu/item.tagx @@ -0,0 +1,29 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="url" type="java.lang.String" required="true" rtexprvalue="true" description="The link URL" /> + <jsp:directive.attribute name="label" type="java.lang.String" required="false" rtexprvalue="true" description="The label used for this menu item" /> + <jsp:directive.attribute name="messageCode" type="java.lang.String" required="false" rtexprvalue="true" description="The global message code to be used (works in conjunction with label)" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty label}"> + <spring:message code="menu_item_${fn:toLowerCase(fn:substringAfter(id,'_'))}_label" var="label" htmlEscape="false" /> + </c:if> + + <c:if test="${not empty messageCode}"> + <spring:message code="${messageCode}" var="label" arguments="${label}" htmlEscape="false" /> + </c:if> + + <li id="${fn:escapeXml(id)}"> + <spring:url value="${url}" var="menu_item_url"/> + <a href="${menu_item_url}" title="${fn:escapeXml(label)}"> + <c:out value="${label}"/> + </a> + </li> + + </c:if> +</jsp:root> diff --git a/src/main/webapp/WEB-INF/tags/menu/menu.tagx b/src/main/webapp/WEB-INF/tags/menu/menu.tagx new file mode 100644 index 0000000..f16269a --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/menu/menu.tagx @@ -0,0 +1,13 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes"/> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)"/> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)"/> + + <c:if test="${empty render or render}"> + <ul id="${fn:escapeXml(id)}"> + <jsp:doBody /> + </ul> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/util/language.tagx b/src/main/webapp/WEB-INF/tags/util/language.tagx new file mode 100644 index 0000000..c894b75 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/language.tagx @@ -0,0 +1,31 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="locale" type="java.lang.String" required="true" rtexprvalue="true" description="The locale for the language to be added." /> + <jsp:directive.attribute name="label" type="java.lang.String" required="true" rtexprvalue="true" description="The country label for the language to be added." /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + + <c:if test="${empty render or render}"> + <spring:url var="img" value="/resources/images/${locale}.png" /> + <spring:url var="url" value=""> + <c:if test="${null ne param.form}"> + <spring:param name="form" /> + </c:if> + <c:if test="${not empty param.find}"> + <spring:param name="find" value="${param.find}" /> + </c:if> + <spring:param name="lang" value="${locale}" /> + <c:if test="${not empty param.page}"> + <spring:param name="page" value="${param.page}" /> + </c:if> + <c:if test="${not empty param.size}"> + <spring:param name="size" value="${param.size}" /> + </c:if> + </spring:url> + <spring:message code="global_language_switch" arguments="${label}" var="lang_label" htmlEscape="false" /> + <a href="${url}" title="${fn:escapeXml(lang_label)}"> + <img class="flag" src="${img}" alt="${fn:escapeXml(lang_label)}" /> + </a> + <c:out value=" " /> + </c:if> +</jsp:root> diff --git a/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx b/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx new file mode 100644 index 0000000..3aa5ace --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx @@ -0,0 +1,29 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + + <jsp:output omit-xml-declaration="yes" /> + + <spring:theme code="styleSheet" var="roo_css" /> + <spring:url value="/${roo_css}" var="roo_css_url" /> + <spring:url value="/resources/dojo/dojo.js" var="dojo_url" /> + <spring:url value="/resources/dijit/themes/tundra/tundra.css" var="tundra_url" /> + <spring:url value="/resources/spring/Spring.js" var="spring_url" /> + <spring:url value="/resources/spring/Spring-Dojo.js" var="spring_dojo_url" /> + <spring:url value="/resources/images/favicon.ico" var="favicon" /> + <link rel="stylesheet" type="text/css" href="${tundra_url}" /> + <link rel="stylesheet" type="text/css" media="screen" href="${roo_css_url}" /> + <link rel="SHORTCUT ICON" href="${favicon}" /> + + <!-- Get the user local from the page context (it was set by Spring MVC's locale resolver) --> + <c:set var="userLocale"> + <c:set var="plocale">${pageContext.response.locale}</c:set> + <c:out value="${fn:replace(plocale, '_', '-')}" default="en" /> + </c:set> + + <script type="text/javascript">var djConfig = {parseOnLoad: false, isDebug: false, locale: '${fn:toLowerCase(userLocale)}'};</script> + + <script src="${dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script> + <script src="${spring_url}" type="text/javascript"><!-- /required for FF3 and Opera --></script> + <script src="${spring_dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script> + <script language="JavaScript" type="text/javascript">dojo.require("dojo.parser");</script> + +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/util/pagination.tagx b/src/main/webapp/WEB-INF/tags/util/pagination.tagx new file mode 100644 index 0000000..5c6a3dd --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/pagination.tagx @@ -0,0 +1,87 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="maxPages" type="java.lang.Integer" required="true" rtexprvalue="true" description="The maximum number of pages available (ie tableRecordCount / size)" /> + <jsp:directive.attribute name="page" type="java.lang.Integer" required="false" rtexprvalue="true" description="The current page (not required, defaults to 1)" /> + <jsp:directive.attribute name="size" type="java.lang.Integer" required="false" rtexprvalue="true" description="The number of records per page (not required, defaults to 10)" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + + <c:if test="${empty render or render}"> + + <c:if test="${empty page || page lt 1}"> + <c:set var="page" value="1" /> + </c:if> + + <c:if test="${empty size || size lt 1}"> + <c:set var="size" value="10" /> + </c:if> + + <spring:message code="list_size" var="list_size" htmlEscape="false" /> + <c:out value="${list_size} " /> + + <c:forEach var="i" begin="5" end="25" step="5"> + <c:choose> + <c:when test="${size == i}"> + <c:out value="${i}" /> + </c:when> + <c:otherwise> + <spring:url value="" var="sizeUrl"> + <spring:param name="page" value="1" /> + <spring:param name="size" value="${i}" /> + </spring:url> + <a href="${sizeUrl}">${i}</a> + </c:otherwise> + </c:choose> + <c:out value=" " /> + </c:forEach> + <c:out value="| " /> + + <c:if test="${page ne 1}"> + <spring:url value="" var="first"> + <spring:param name="page" value="1" /> + <spring:param name="size" value="${size}" /> + </spring:url> + <spring:url value="/resources/images/resultset_first.png" var="first_image_url" /> + <spring:message code="list_first" var="first_label" htmlEscape="false" /> + <a class="image" href="${first}" title="${fn:escapeXml(first_label)}"> + <img alt="${fn:escapeXml(first_label)}" src="${first_image_url}" /> + </a> + </c:if> + <c:if test="${page gt 1}"> + <spring:url value="" var="previous"> + <spring:param name="page" value="${page - 1}" /> + <spring:param name="size" value="${size}" /> + </spring:url> + <spring:url value="/resources/images/resultset_previous.png" var="previous_image_url" /> + <spring:message code="list_previous" var="previous_label" htmlEscape="false" /> + <a class="image" href="${previous}" title="${fn:escapeXml(previous_label)}"> + <img alt="${fn:escapeXml(previous_label)}" src="${previous_image_url}" /> + </a> + </c:if> + <c:out value=" " /> + <spring:message code="list_page" arguments="${page},${maxPages}" argumentSeparator="," /> + <c:out value=" " /> + <c:if test="${page lt maxPages}"> + <spring:url value="" var="next"> + <spring:param name="page" value="${page + 1}" /> + <spring:param name="size" value="${size}" /> + </spring:url> + <spring:url value="/resources/images/resultset_next.png" var="next_image_url" /> + <spring:message code="list_next" var="next_label" htmlEscape="false" /> + <a class="image" href="${next}" title="${fn:escapeXml(next_label)}"> + <img alt="${fn:escapeXml(next_label)}" src="${next_image_url}" /> + </a> + </c:if> + <c:if test="${page ne maxPages}"> + <spring:url value="" var="last"> + <spring:param name="page" value="${maxPages}" /> + <spring:param name="size" value="${size}" /> + </spring:url> + <spring:url value="/resources/images/resultset_last.png" var="last_image_url" /> + <spring:message code="list_last" var="last_label" htmlEscape="false" /> + <a class="image" href="${last}" title="${fn:escapeXml(last_label)}"> + <img alt="${fn:escapeXml(last_label)}" src="${last_image_url}" /> + </a> + </c:if> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/util/panel.tagx b/src/main/webapp/WEB-INF/tags/util/panel.tagx new file mode 100644 index 0000000..a1d5825 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/panel.tagx @@ -0,0 +1,33 @@ +<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:c="http://java.sun.com/jsp/jstl/core" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="id" type="java.lang.String" required="true" rtexprvalue="true" description="The identifier for this tag (do not change!)" /> + <jsp:directive.attribute name="title" type="java.lang.String" required="true" rtexprvalue="true" description="The page title (required)" /> + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + <jsp:directive.attribute name="openPane" type="java.lang.String" required="false" rtexprvalue="true" description="Control if the title pane is opened or closed by default (default: true)" /> + <jsp:directive.attribute name="z" type="java.lang.String" required="false" description="Used for checking if element has been modified (to recalculate simply provide empty string value)" /> + + <c:if test="${empty render or render}"> + <c:if test="${empty openPane}"> + <c:set value="true" var="openPane" /> + </c:if> + + <c:set var="sec_id"> + <spring:escapeBody javaScriptEscape="true" >${id}</spring:escapeBody> + </c:set> + + <c:set var="sec_openPane"> + <spring:escapeBody javaScriptEscape="true" >${openPane}</spring:escapeBody> + </c:set> + + <c:set var="sec_title"> + <spring:escapeBody javaScriptEscape="true" >${title}</spring:escapeBody> + </c:set> + + <script type="text/javascript">dojo.require('dijit.TitlePane');</script> + <div id="_title_${sec_id}_id"> + <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_title_${sec_id}_id', widgetType : 'dijit.TitlePane', widgetAttrs : {title: '${sec_title}', open: ${sec_openPane}}})); </script> + <jsp:doBody /> + </div> + </c:if> +</jsp:root> diff --git a/src/main/webapp/WEB-INF/tags/util/placeholder.tagx b/src/main/webapp/WEB-INF/tags/util/placeholder.tagx new file mode 100644 index 0000000..0ff9617 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/placeholder.tagx @@ -0,0 +1,5 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" xmlns:form="http://www.springframework.org/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="description" type="java.lang.String" required="false" rtexprvalue="true" description="Can be used to describe the purpose of this element" /> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/util/theme.tagx b/src/main/webapp/WEB-INF/tags/util/theme.tagx new file mode 100644 index 0000000..6fe7723 --- /dev/null +++ b/src/main/webapp/WEB-INF/tags/util/theme.tagx @@ -0,0 +1,36 @@ +<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:output omit-xml-declaration="yes" /> + + <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> + + <c:if test="${empty render or render}"> + <span> + <c:out value=" | " /> + <spring:message code="global_theme" /> + <c:out value=": " /> + <spring:url var="url_theme1" value=""> + <spring:param name="theme" value="standard" /> + <c:if test="${not empty param.page}"> + <spring:param name="page" value="${param.page}" /> + </c:if> + <c:if test="${not empty param.size}"> + <spring:param name="size" value="${param.size}" /> + </c:if> + </spring:url> + <spring:message code="global_theme_standard" var="theme_standard" htmlEscape="false" /> + <a href="${url_theme1}" title="${fn:escapeXml(theme_standard)}">${fn:escapeXml(theme_standard)}</a> + <c:out value=" | " /> + <spring:url var="url_theme2" value=""> + <spring:param name="theme" value="alt" /> + <c:if test="${not empty param.page}"> + <spring:param name="page" value="${param.page}" /> + </c:if> + <c:if test="${not empty param.size}"> + <spring:param name="size" value="${param.size}" /> + </c:if> + </spring:url> + <spring:message code="global_theme_alt" var="theme_alt" htmlEscape="false" /> + <a href="${url_theme2}" title="${fn:escapeXml(theme_alt)}">${fn:escapeXml(theme_alt)}</a> + </span> + </c:if> +</jsp:root> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/dataAccessFailure.jspx b/src/main/webapp/WEB-INF/views/dataAccessFailure.jspx new file mode 100644 index 0000000..15d9b23 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/dataAccessFailure.jspx @@ -0,0 +1,30 @@ +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="title" code="error_dataaccessfailure_title" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <h2>${fn:escapeXml(title)}</h2> + <p> + <spring:message code="error_dataaccessfailure_problemdescription" /> + </p> + <c:if test="${not empty exception}"> + <p> + <h4> + <spring:message code="exception_details" /> + </h4> + <spring:message var="message" code="exception_message" /> + <util:panel id="_message" title="${message}" openPane="false"> + <c:out value="${exception.localizedMessage}" /> + </util:panel> + <spring:message var="stacktrace" code="exception_stacktrace" /> + <util:panel id="_exception" title="${stacktrace}" openPane="false"> + <c:forEach items="${exception.stackTrace}" var="trace"> + <c:out value="${trace}" /> + <br /> + </c:forEach> + </util:panel> + </p> + </c:if> + </util:panel> +</div> + diff --git a/src/main/webapp/WEB-INF/views/footer.jspx b/src/main/webapp/WEB-INF/views/footer.jspx new file mode 100644 index 0000000..ed77f7f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/footer.jspx @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" id="footer" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + + <spring:url value="/" var="home"/> + <span> + <a href="${home}"> + <spring:message code="button_home"/> + </a> + </span> + <c:if test="${pageContext['request'].userPrincipal != null}"> + <c:out value=" | "/> + <span> + <spring:url value="/resources/j_spring_security_logout" var="logout"/> + <a href="${logout}"> + <spring:message code="security_logout"/> + </a> + </span> + </c:if> + + <span id="language"> + <c:out value=" | "/> + <spring:message code="global_language"/> + <c:out value=": "/> + <util:language label="English" locale="en"/> + </span> + <util:theme/> + + <spring:url value="/resources/images/springsource-logo.png" var="logo"/> + <spring:message code="global_sponsored" htmlEscape="false" var="sponsored"/> + <span> + <a href="http://springsource.com" title="${fn:escapeXml(sponsored)}"> + <img align="right" alt="${fn:escapeXml(sponsored)}" src="${logo}"/> + </a> + </span> +</div> diff --git a/src/main/webapp/WEB-INF/views/header.jspx b/src/main/webapp/WEB-INF/views/header.jspx new file mode 100644 index 0000000..dbcf950 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/header.jspx @@ -0,0 +1,11 @@ +<div id="header" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + + <spring:url var="banner" value="/resources/images/banner-graphic.png" /> + <spring:url var="home" value="/" /> + <spring:message code="button_home" var="home_label" htmlEscape="false" /> + <a href="${home}" name="${fn:escapeXml(home_label)}" title="${fn:escapeXml(home_label)}"> + <img src="${banner}" /> + </a> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/index-template.jspx b/src/main/webapp/WEB-INF/views/index-template.jspx new file mode 100644 index 0000000..0700064 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/index-template.jspx @@ -0,0 +1,11 @@ +<div xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="title" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <spring:message code="application_name" var="app_name" htmlEscape="false" /> + <h3> + <spring:message code="welcome_titlepane" arguments="${app_name}" /> + </h3> + </util:panel> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/index.jspx b/src/main/webapp/WEB-INF/views/index.jspx new file mode 100644 index 0000000..12b5014 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/index.jspx @@ -0,0 +1,14 @@ +<div xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="app_name" code="application_name" htmlEscape="false" /> + <spring:message var="title" code="welcome_titlepane" arguments="${app_name}" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <h3> + <spring:message code="welcome_h3" arguments="${app_name}" /> + </h3> + <p> + <spring:message code="welcome_text" /> + </p> + </util:panel> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/login.jspx b/src/main/webapp/WEB-INF/views/login.jspx new file mode 100644 index 0000000..a4a04fb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jspx @@ -0,0 +1,60 @@ +<div xmlns:spring="http://www.springframework.org/tags" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message code="security_login_title" var="title" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <c:if test="${not empty param.login_error}"> + <div class="errors"> + <p> + <spring:message code="security_login_unsuccessful" /> + <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" /> + . + </p> + </div> + </c:if> + <c:if test="${empty param.login_error}"> + <p> + <spring:message code="security_login_message" /> + </p> + </c:if> + <spring:url value="/resources/j_spring_security_check" var="form_url" /> + <form name="f" action="${fn:escapeXml(form_url)}" method="POST"> + <div> + <label for="j_username"> + <spring:message code="security_login_form_name" /> + </label> + <input id="j_username" type='text' name='j_username' style="width:150px" /> + <spring:message code="security_login_form_name_message" var="name_msg" htmlEscape="false" /> + <script type="text/javascript"> + <c:set var="sec_name_msg"> + <spring:escapeBody javaScriptEscape="true">${name_msg}</spring:escapeBody> + </c:set> + Spring.addDecoration(new Spring.ElementDecoration({elementId : "j_username", widgetType : "dijit.form.ValidationTextBox", widgetAttrs : {promptMessage: "${sec_name_msg}", required : true}})); + </script> + </div> + <br /> + <div> + <label for="j_password"> + <spring:message code="security_login_form_password" /> + </label> + <input id="j_password" type='password' name='j_password' style="width:150px" /> + <spring:message code="security_login_form_password_message" var="pwd_msg" htmlEscape="false" /> + <script type="text/javascript"> + <c:set var="sec_pwd_msg"> + <spring:escapeBody javaScriptEscape="true">${pwd_msg}</spring:escapeBody> + </c:set> + Spring.addDecoration(new Spring.ElementDecoration({elementId : "j_password", widgetType : "dijit.form.ValidationTextBox", widgetAttrs : {promptMessage: "${sec_pwd_msg}", required : true}})); + </script> + </div> + <br /> + <div class="submit"> + <script type="text/javascript">Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));</script> + <spring:message code="button_submit" var="submit_label" htmlEscape="false" /> + <input id="proceed" type="submit" value="${fn:escapeXml(submit_label)}" /> + <spring:message code="button_reset" var="reset_label" htmlEscape="false" /> + <input id="reset" type="reset" value="${fn:escapeXml(reset_label)}" /> + </div> + </form> + </util:panel> +</div> + diff --git a/src/main/webapp/WEB-INF/views/menu.jspx b/src/main/webapp/WEB-INF/views/menu.jspx new file mode 100644 index 0000000..6faf6fa --- /dev/null +++ b/src/main/webapp/WEB-INF/views/menu.jspx @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:menu="urn:jsptagdir:/WEB-INF/tags/menu" id="menu" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <menu:menu id="_menu" z="nZaf43BjUg1iM0v70HJVEsXDopc="> + <menu:category id="c_projeto" z="l9PWsmyhBz6vdxQqJihZDnWRr4o="> + <menu:item id="i_projeto_new" messageCode="global_menu_new" url="/projetoes?form" z="OY49hJ+taMk1k3ASiEFt4sGXCSU="/> + <menu:item id="i_projeto_list" messageCode="global_menu_list" url="/projetoes?page=1&size=${empty param.size ? 10 : param.size}" z="x1vvsZFRYLoITzX2jIKG93Z4DWM="/> + </menu:category> + <menu:category id="c_ministerio" z="bdCebF8Z2eynkkyAMp/B5OZGV9A="> + <menu:item id="i_ministerio_new" messageCode="global_menu_new" url="/ministerios?form" z="6OpG3M2+Gvw8amn9aYg7/7zwAds="/> + <menu:item id="i_ministerio_list" messageCode="global_menu_list" url="/ministerios?page=1&size=${empty param.size ? 10 : param.size}" z="3dj4WmtVHkR+jV7Vbj/veXWsVQ8="/> + </menu:category> + </menu:menu> +</div> diff --git a/src/main/webapp/WEB-INF/views/ministerios/create.jspx b/src/main/webapp/WEB-INF/views/ministerios/create.jspx new file mode 100644 index 0000000..7ef9b0e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ministerios/create.jspx @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <form:create id="fc_br_ufpr_c3sl_participatorio_Ministerio" modelAttribute="ministerio" path="/ministerios" render="${empty dependencies}" z="zFAfmO+ojFRFW8rhlxTLRFVLj6s="> + <field:input field="nome" id="c_br_ufpr_c3sl_participatorio_Ministerio_nome" z="yG0O6P0xDGYX41VMy1AV+XEGemo="/> + </form:create> + <form:dependency dependencies="${dependencies}" id="d_br_ufpr_c3sl_participatorio_Ministerio" render="${not empty dependencies}" z="B69MecuQMoIzCowcRx8qS4z7Yd4="/> +</div> diff --git a/src/main/webapp/WEB-INF/views/ministerios/list.jspx b/src/main/webapp/WEB-INF/views/ministerios/list.jspx new file mode 100644 index 0000000..fca28ee --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ministerios/list.jspx @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" xmlns:table="urn:jsptagdir:/WEB-INF/tags/form/fields" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <page:list id="pl_br_ufpr_c3sl_participatorio_Ministerio" items="${ministerios}" z="OZNBGYIzHd1qC9OQ+i13VQ8s3/M="> + <table:table data="${ministerios}" id="l_br_ufpr_c3sl_participatorio_Ministerio" path="/ministerios" z="P1bAiKQ+BGFvNP1KqqMoRxIHoIY="> + <table:column id="c_br_ufpr_c3sl_participatorio_Ministerio_nome" property="nome" z="xiFf6v1g/16N6c5s6GGRN8140NI="/> + </table:table> + </page:list> +</div> diff --git a/src/main/webapp/WEB-INF/views/ministerios/show.jspx b/src/main/webapp/WEB-INF/views/ministerios/show.jspx new file mode 100644 index 0000000..49fec2b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ministerios/show.jspx @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <page:show id="ps_br_ufpr_c3sl_participatorio_Ministerio" object="${ministerio}" path="/ministerios" z="/7b1hWstg5lLMuf7PmBH1LAFVxk="> + <field:display field="nome" id="s_br_ufpr_c3sl_participatorio_Ministerio_nome" object="${ministerio}" z="QI1Poo7nRY0v4kuC7+Wsd/GG+Vw="/> + </page:show> +</div> diff --git a/src/main/webapp/WEB-INF/views/ministerios/update.jspx b/src/main/webapp/WEB-INF/views/ministerios/update.jspx new file mode 100644 index 0000000..0982cce --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ministerios/update.jspx @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <form:update id="fu_br_ufpr_c3sl_participatorio_Ministerio" modelAttribute="ministerio" path="/ministerios" versionField="Version" z="BuiK3CNmnibJH2SIOLeWBF1y0HY="> + <field:input field="nome" id="c_br_ufpr_c3sl_participatorio_Ministerio_nome" z="yG0O6P0xDGYX41VMy1AV+XEGemo="/> + </form:update> +</div> diff --git a/src/main/webapp/WEB-INF/views/ministerios/views.xml b/src/main/webapp/WEB-INF/views/ministerios/views.xml new file mode 100644 index 0000000..1c4f3f4 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/ministerios/views.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> +<tiles-definitions> + <definition extends="default" name="ministerios/list"> + <put-attribute name="body" value="/WEB-INF/views/ministerios/list.jspx"/> + </definition> +<definition extends="default" name="ministerios/show"> + <put-attribute name="body" value="/WEB-INF/views/ministerios/show.jspx"/> + </definition> +<definition extends="default" name="ministerios/create"> + <put-attribute name="body" value="/WEB-INF/views/ministerios/create.jspx"/> + </definition> +<definition extends="default" name="ministerios/update"> + <put-attribute name="body" value="/WEB-INF/views/ministerios/update.jspx"/> + </definition> +</tiles-definitions> diff --git a/src/main/webapp/WEB-INF/views/projetoes/create.jspx b/src/main/webapp/WEB-INF/views/projetoes/create.jspx new file mode 100644 index 0000000..4dc2ce0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/projetoes/create.jspx @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <form:create id="fc_br_ufpr_c3sl_participatorio_Projeto" modelAttribute="projeto" path="/projetoes" render="${empty dependencies}" z="uklzONF0yIPjbEJFSlLMffVUn7g="> + <field:select field="pai" id="c_br_ufpr_c3sl_participatorio_Projeto_pai" itemValue="id" items="${projetoes}" path="/projetoes" z="JkbtdV8KzNjMFgvmaNi11XbZ+Ss="/> + <field:input field="nome" id="c_br_ufpr_c3sl_participatorio_Projeto_nome" z="5egNGMKHSYOQCuslpB7cYfsCJns="/> + <field:select field="demanda" id="c_br_ufpr_c3sl_participatorio_Projeto_demanda" items="${tipodemandas}" path="tipodemandas" z="LZLJJHDisgTZb2HVM3SXZRFRKZo="/> + <field:select field="acao" id="c_br_ufpr_c3sl_participatorio_Projeto_acao" items="${tipoacaos}" path="tipoacaos" z="TknEprFT06hffWHIizWjHzzhBB8="/> + <field:input field="outroAcao" id="c_br_ufpr_c3sl_participatorio_Projeto_outroAcao" z="gKzGjxAdyPnPD7zoeTc+ZPLtejY="/> + <field:select field="ministerio" id="c_br_ufpr_c3sl_participatorio_Projeto_ministerio" itemValue="id" items="${ministerios}" path="/ministerios" z="64Y1pviPhH0YUpX4/TLAcEiNf8A="/> + <field:input field="objetivo" id="c_br_ufpr_c3sl_participatorio_Projeto_objetivo" z="7NQc7nBdNKGMsVO2gcJ58+nFc0E="/> + <field:input field="rua" id="c_br_ufpr_c3sl_participatorio_Projeto_rua" z="NZ6M3HEDzpkKDIvxyk8iZYFchQA="/> + <field:input field="numero" id="c_br_ufpr_c3sl_participatorio_Projeto_numero" z="xaLTEtm6Pc1D6VgioTdMcQXkq8s="/> + <field:input field="complemento" id="c_br_ufpr_c3sl_participatorio_Projeto_complemento" z="N2Lya9vot39QnzhJ8pqU5d+vzB0="/> + <field:input field="bairro" id="c_br_ufpr_c3sl_participatorio_Projeto_bairro" z="4IENKq7T4UaF0f/0uwCBcT3xtlI="/> + <field:input field="municipio" id="c_br_ufpr_c3sl_participatorio_Projeto_municipio" z="IRx9hrCWxHAzvD0dA+1xxmH/V90="/> + <field:input field="cep" id="c_br_ufpr_c3sl_participatorio_Projeto_cep" z="gVIPRkUIL6GZ45ZU0ehzfXTt4CU="/> + <field:input field="responsavel" id="c_br_ufpr_c3sl_participatorio_Projeto_responsavel" z="qHPooL9WJIOr9aiVpu272tRcYlg="/> + <field:input field="telefones" id="c_br_ufpr_c3sl_participatorio_Projeto_telefones" z="XN9R1Y3TkGJDhJjNR7Ac+uUA10g="/> + <field:input field="email" id="c_br_ufpr_c3sl_participatorio_Projeto_email" validationMessageCode="field_invalid_email" z="wec+yBsxP/CfoGtMjMYu8XOiz8E="/> + <field:input field="publicoAlvo" id="c_br_ufpr_c3sl_participatorio_Projeto_publicoAlvo" z="rfW62fR8G11PyQwsAU15sdK6804="/> + <field:input field="formaAcesso" id="c_br_ufpr_c3sl_participatorio_Projeto_formaAcesso" z="HY3pNe95ZaxAxVS55E5bDnn84FE="/> + <field:input field="site" id="c_br_ufpr_c3sl_participatorio_Projeto_site" z="UtAhbsHkmV/py/BCglNJT4jnKNk="/> + <field:input field="comoFunciona" id="c_br_ufpr_c3sl_participatorio_Projeto_comoFunciona" z="WQT9VOPh8Yng7sdWkKBfWrWJvzY="/> + <field:input field="noticias" id="c_br_ufpr_c3sl_participatorio_Projeto_noticias" z="QvhayaNYZLWbn4Kdz/1ukvJWaQw="/> + <field:input field="horarioFuncionamento" id="c_br_ufpr_c3sl_participatorio_Projeto_horarioFuncionamento" z="/wgLwa6KbhG4wv0vWFn869KF4hg="/> + <field:select field="diasFuncionamento" id="c_br_ufpr_c3sl_participatorio_Projeto_diasFuncionamento" items="${tipodiassemanas}" path="tipodiassemanas" z="+BjTvC5bM2N7YGK48eWFIePY8Ks="/> + <field:input field="estrutura" id="c_br_ufpr_c3sl_participatorio_Projeto_estrutura" z="BMTcTzuUYCoKhXapXah2VN/qPuE="/> + <field:input field="responsaveis" id="c_br_ufpr_c3sl_participatorio_Projeto_responsaveis" z="gmi09GGEpF9pDXN7/aviynR3tBs="/> + <field:input field="telefoneMinisterio" id="c_br_ufpr_c3sl_participatorio_Projeto_telefoneMinisterio" z="UGH0aw3XZuQmgwr0sIS1O9KhHbQ="/> + <field:input field="orcamento" id="c_br_ufpr_c3sl_participatorio_Projeto_orcamento" z="sJO2DC6kqSRPUz5DC5eA/bddxvc="/> + <field:input field="justificativa" id="c_br_ufpr_c3sl_participatorio_Projeto_justificativa" z="bxuZxUlVF/K6r0D/vZ2gLJOYqus="/> + <field:input field="meta" id="c_br_ufpr_c3sl_participatorio_Projeto_meta" z="X67itR3Kt3CcPmnMLE3pk8gJnTQ="/> + <field:select field="temporalidade" id="c_br_ufpr_c3sl_participatorio_Projeto_temporalidade" items="${tipotemporalidades}" path="tipotemporalidades" z="DxeDx4ck5sWIKaomza63nyKiAeQ="/> + <field:checkbox field="possuiMonitoramento" id="c_br_ufpr_c3sl_participatorio_Projeto_possuiMonitoramento" z="/JVVLQICEG8G6erZgd6P7rhoNqM="/> + <field:input field="estadosMunicipioComPrograma" id="c_br_ufpr_c3sl_participatorio_Projeto_estadosMunicipioComPrograma" z="XOH+gInejGvAnV1UOGHZHSlh0kw="/> + <field:input field="publicPrioritario" id="c_br_ufpr_c3sl_participatorio_Projeto_publicPrioritario" z="ZiO1CZu1gNdDb59SvP41Qnpj/io="/> + <field:datetime dateTimePattern="${projeto_datainicio_date_format}" field="dataInicio" id="c_br_ufpr_c3sl_participatorio_Projeto_dataInicio" z="B4b6arF1P2Q4KSgME04mPIWp7Zs="/> + <field:input field="mecanismos" id="c_br_ufpr_c3sl_participatorio_Projeto_mecanismos" z="YCRKTWq1a3Fd0ZHbAwcxKS+vACY="/> + <field:input field="parcerias" id="c_br_ufpr_c3sl_participatorio_Projeto_parcerias" z="x374RYBQGz62YCy6JRm7HDk6kFs="/> + <field:checkbox field="legislacaoPropria" id="c_br_ufpr_c3sl_participatorio_Projeto_legislacaoPropria" z="0FyUiOC8dXYS2KQh9us8ZFSrfU0="/> + <field:input field="descLegislacao" id="c_br_ufpr_c3sl_participatorio_Projeto_descLegislacao" z="Y9X3/A7OHfh+T5M4c7uRjtx2Uak="/> + <field:input field="obs" id="c_br_ufpr_c3sl_participatorio_Projeto_obs" z="5b+Wjz0npE5n2wk2R6g1fJZD0VA="/> + <field:select field="estado" id="c_br_ufpr_c3sl_participatorio_Projeto_estado" items="${tipostatuses}" path="tipostatuses" z="K+kNv0Ov3Ulu6LiKPBQ71hczlOA="/> + </form:create> + <form:dependency dependencies="${dependencies}" id="d_br_ufpr_c3sl_participatorio_Projeto" render="${not empty dependencies}" z="nyMkb0MYQtlthVlj4JcyqCQYyRg="/> +</div> diff --git a/src/main/webapp/WEB-INF/views/projetoes/list.jspx b/src/main/webapp/WEB-INF/views/projetoes/list.jspx new file mode 100644 index 0000000..01c8f20 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/projetoes/list.jspx @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" xmlns:table="urn:jsptagdir:/WEB-INF/tags/form/fields" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <page:list id="pl_br_ufpr_c3sl_participatorio_Projeto" items="${projetoes}" z="xI7fvnW1b0tKUMMJrSKIiv3ycH0="> + <table:table data="${projetoes}" id="l_br_ufpr_c3sl_participatorio_Projeto" path="/projetoes" z="kamtALNOBI9qFO/YY+1GYa1OhVw="> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_pai" property="pai" z="JnX374OPNV+3oLlfOcMYu3wG024="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_nome" property="nome" z="djZOsc2/qBPTa0C3ffNAlDEgP0U="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_demanda" property="demanda" z="K99mnRN9vX7sE9XtHufPcJBkBdg="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_acao" property="acao" z="2hGM9LKsHjh5/zpeavaa+slBUkA="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_outroAcao" property="outroAcao" z="KDK14ptwJLWXh4xCooeqI+wBnJk="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_ministerio" property="ministerio" z="qYUkNm475DOx0s81JEz3ff7BQho="/> + </table:table> + </page:list> +</div> diff --git a/src/main/webapp/WEB-INF/views/projetoes/show.jspx b/src/main/webapp/WEB-INF/views/projetoes/show.jspx new file mode 100644 index 0000000..ac51cec --- /dev/null +++ b/src/main/webapp/WEB-INF/views/projetoes/show.jspx @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <page:show id="ps_br_ufpr_c3sl_participatorio_Projeto" object="${projeto}" path="/projetoes" z="D0oL5mYFetkn/bZXW31CJL2EDUE="> + <field:display field="pai" id="s_br_ufpr_c3sl_participatorio_Projeto_pai" object="${projeto}" z="4n4Iw3sGl6fL8jHSE2fUat8qLN4="/> + <field:display field="nome" id="s_br_ufpr_c3sl_participatorio_Projeto_nome" object="${projeto}" z="rsXBQmVxhOA6fpmBsaOOxZCOB5w="/> + <field:display field="demanda" id="s_br_ufpr_c3sl_participatorio_Projeto_demanda" object="${projeto}" z="4hH5xcrgPv71j3pdYFSKwrXUrwY="/> + <field:display field="acao" id="s_br_ufpr_c3sl_participatorio_Projeto_acao" object="${projeto}" z="8jgJ6LdiyoFYt6MyFWDV/UGMm2o="/> + <field:display field="outroAcao" id="s_br_ufpr_c3sl_participatorio_Projeto_outroAcao" object="${projeto}" z="zVcl2n2r3xxTceF3vPcaYnWIYiY="/> + <field:display field="ministerio" id="s_br_ufpr_c3sl_participatorio_Projeto_ministerio" object="${projeto}" z="Xf3IQ962bkf9Ezm92UBXGE2bWwc="/> + <field:display field="objetivo" id="s_br_ufpr_c3sl_participatorio_Projeto_objetivo" object="${projeto}" z="OvVo10fuXWdSkQG0eG9B8g4HFRE="/> + <field:display field="rua" id="s_br_ufpr_c3sl_participatorio_Projeto_rua" object="${projeto}" z="bblSx22OBZWuIl+gLXduDRjpIIo="/> + <field:display field="numero" id="s_br_ufpr_c3sl_participatorio_Projeto_numero" object="${projeto}" z="M95uXy/hfhB5n7Y2KlB2nrIpTTo="/> + <field:display field="complemento" id="s_br_ufpr_c3sl_participatorio_Projeto_complemento" object="${projeto}" z="u/OhcL1R2KO8bc3ZT6wk+WIlcJQ="/> + <field:display field="bairro" id="s_br_ufpr_c3sl_participatorio_Projeto_bairro" object="${projeto}" z="3ZCePyHKnaz5YWxSPoF9ruIUGgM="/> + <field:display field="municipio" id="s_br_ufpr_c3sl_participatorio_Projeto_municipio" object="${projeto}" z="DcdSDhxOxkqkd5V7r+QIjFPISPY="/> + <field:display field="cep" id="s_br_ufpr_c3sl_participatorio_Projeto_cep" object="${projeto}" z="h2INizgFtGHENL1zTlGj8RzYASs="/> + <field:display field="responsavel" id="s_br_ufpr_c3sl_participatorio_Projeto_responsavel" object="${projeto}" z="69bymzXlQBFLm1MLDdyBWxNnT1Q="/> + <field:display field="telefones" id="s_br_ufpr_c3sl_participatorio_Projeto_telefones" object="${projeto}" z="EHi6lsxuyNDv167TejS+qseIGbY="/> + <field:display field="email" id="s_br_ufpr_c3sl_participatorio_Projeto_email" object="${projeto}" z="aGC3uOYrEG/v868j6HanVCKAG0I="/> + <field:display field="publicoAlvo" id="s_br_ufpr_c3sl_participatorio_Projeto_publicoAlvo" object="${projeto}" z="f4D8z3yit2O9z1UgRnFWWHDyZ8I="/> + <field:display field="formaAcesso" id="s_br_ufpr_c3sl_participatorio_Projeto_formaAcesso" object="${projeto}" z="ndyJFMwcaQLW7Uri/SNNoszuWmI="/> + <field:display field="site" id="s_br_ufpr_c3sl_participatorio_Projeto_site" object="${projeto}" z="7w9AuurEp/01nbMH7hzlHbNWaqw="/> + <field:display field="comoFunciona" id="s_br_ufpr_c3sl_participatorio_Projeto_comoFunciona" object="${projeto}" z="cS8QtgfO1QUSq5l/QWQ1U2bKQQo="/> + <field:display field="noticias" id="s_br_ufpr_c3sl_participatorio_Projeto_noticias" object="${projeto}" z="nEHfcQlWOOOgyvriBFeCQAQxpNw="/> + <field:display field="horarioFuncionamento" id="s_br_ufpr_c3sl_participatorio_Projeto_horarioFuncionamento" object="${projeto}" z="I41X3LZzuQydAhMwexe+wnM5SzQ="/> + <field:display field="diasFuncionamento" id="s_br_ufpr_c3sl_participatorio_Projeto_diasFuncionamento" object="${projeto}" z="IPVS6qq+YWGueSJwyVFOIxU30uM="/> + <field:display field="estrutura" id="s_br_ufpr_c3sl_participatorio_Projeto_estrutura" object="${projeto}" z="rkpe20h3HUIEJAX8Z/egSw2kqhU="/> + <field:display field="responsaveis" id="s_br_ufpr_c3sl_participatorio_Projeto_responsaveis" object="${projeto}" z="Aala68TzEKIlGRJal9+v1icoBVc="/> + <field:display field="telefoneMinisterio" id="s_br_ufpr_c3sl_participatorio_Projeto_telefoneMinisterio" object="${projeto}" z="kZ48wV4jcUxHdOkClF5ust9xrKY="/> + <field:display field="orcamento" id="s_br_ufpr_c3sl_participatorio_Projeto_orcamento" object="${projeto}" z="T39I2SFBXuSFtuoGWD4YLIvNXEw="/> + <field:display field="justificativa" id="s_br_ufpr_c3sl_participatorio_Projeto_justificativa" object="${projeto}" z="SQH4nA7skZjQ6CC8qt0m1pqMUtg="/> + <field:display field="meta" id="s_br_ufpr_c3sl_participatorio_Projeto_meta" object="${projeto}" z="VzMChl+L7hz13lKe5aQBe6PVYug="/> + <field:display field="temporalidade" id="s_br_ufpr_c3sl_participatorio_Projeto_temporalidade" object="${projeto}" z="c0vwiEWkdMXFYh46/H2SB9CvNp4="/> + <field:display field="possuiMonitoramento" id="s_br_ufpr_c3sl_participatorio_Projeto_possuiMonitoramento" object="${projeto}" z="68BwSuL6hKNgh0DkIhlPGjfOy24="/> + <field:display field="estadosMunicipioComPrograma" id="s_br_ufpr_c3sl_participatorio_Projeto_estadosMunicipioComPrograma" object="${projeto}" z="j+RNU5XRo7dJ7mYkopzGJDjRrAs="/> + <field:display field="publicPrioritario" id="s_br_ufpr_c3sl_participatorio_Projeto_publicPrioritario" object="${projeto}" z="NTzu874oLhM1rqol0BmiwlEjrOo="/> + <field:display date="true" dateTimePattern="${projeto_datainicio_date_format}" field="dataInicio" id="s_br_ufpr_c3sl_participatorio_Projeto_dataInicio" object="${projeto}" z="Hdta14bxSk6t2J59rKyH70bW9gk="/> + <field:display field="mecanismos" id="s_br_ufpr_c3sl_participatorio_Projeto_mecanismos" object="${projeto}" z="rIkBzBq2mNO/WNbKWgjXCX6pa2Y="/> + <field:display field="parcerias" id="s_br_ufpr_c3sl_participatorio_Projeto_parcerias" object="${projeto}" z="3+nq+7n1btRPfaFxvQx3XwMBwFY="/> + <field:display field="legislacaoPropria" id="s_br_ufpr_c3sl_participatorio_Projeto_legislacaoPropria" object="${projeto}" z="wChuy6QkKZdbT7+Uv3xVw5syDtA="/> + <field:display field="descLegislacao" id="s_br_ufpr_c3sl_participatorio_Projeto_descLegislacao" object="${projeto}" z="JL3fGOirqjzo/jfvrpOEsWfdtuE="/> + <field:display field="obs" id="s_br_ufpr_c3sl_participatorio_Projeto_obs" object="${projeto}" z="+RB342ExVwf7Jpb2LEAVsNVT3tY="/> + <field:display field="estado" id="s_br_ufpr_c3sl_participatorio_Projeto_estado" object="${projeto}" z="QQqAirebJjfsfFvZ2yTuji9gMYY="/> + </page:show> +</div> diff --git a/src/main/webapp/WEB-INF/views/projetoes/update.jspx b/src/main/webapp/WEB-INF/views/projetoes/update.jspx new file mode 100644 index 0000000..4f11eae --- /dev/null +++ b/src/main/webapp/WEB-INF/views/projetoes/update.jspx @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + <form:update id="fu_br_ufpr_c3sl_participatorio_Projeto" modelAttribute="projeto" path="/projetoes" versionField="Version" z="5Ih+lV0KpGE1fSZecQ2VR8b5JFQ="> + <field:select field="pai" id="c_br_ufpr_c3sl_participatorio_Projeto_pai" itemValue="id" items="${projetoes}" path="/projetoes" z="JkbtdV8KzNjMFgvmaNi11XbZ+Ss="/> + <field:input field="nome" id="c_br_ufpr_c3sl_participatorio_Projeto_nome" z="5egNGMKHSYOQCuslpB7cYfsCJns="/> + <field:select field="demanda" id="c_br_ufpr_c3sl_participatorio_Projeto_demanda" items="${tipodemandas}" path="tipodemandas" z="LZLJJHDisgTZb2HVM3SXZRFRKZo="/> + <field:select field="acao" id="c_br_ufpr_c3sl_participatorio_Projeto_acao" items="${tipoacaos}" path="tipoacaos" z="TknEprFT06hffWHIizWjHzzhBB8="/> + <field:input field="outroAcao" id="c_br_ufpr_c3sl_participatorio_Projeto_outroAcao" z="gKzGjxAdyPnPD7zoeTc+ZPLtejY="/> + <field:select field="ministerio" id="c_br_ufpr_c3sl_participatorio_Projeto_ministerio" itemValue="id" items="${ministerios}" path="/ministerios" z="64Y1pviPhH0YUpX4/TLAcEiNf8A="/> + <field:input field="objetivo" id="c_br_ufpr_c3sl_participatorio_Projeto_objetivo" z="7NQc7nBdNKGMsVO2gcJ58+nFc0E="/> + <field:input field="rua" id="c_br_ufpr_c3sl_participatorio_Projeto_rua" z="NZ6M3HEDzpkKDIvxyk8iZYFchQA="/> + <field:input field="numero" id="c_br_ufpr_c3sl_participatorio_Projeto_numero" z="xaLTEtm6Pc1D6VgioTdMcQXkq8s="/> + <field:input field="complemento" id="c_br_ufpr_c3sl_participatorio_Projeto_complemento" z="N2Lya9vot39QnzhJ8pqU5d+vzB0="/> + <field:input field="bairro" id="c_br_ufpr_c3sl_participatorio_Projeto_bairro" z="4IENKq7T4UaF0f/0uwCBcT3xtlI="/> + <field:input field="municipio" id="c_br_ufpr_c3sl_participatorio_Projeto_municipio" z="IRx9hrCWxHAzvD0dA+1xxmH/V90="/> + <field:input field="cep" id="c_br_ufpr_c3sl_participatorio_Projeto_cep" z="gVIPRkUIL6GZ45ZU0ehzfXTt4CU="/> + <field:input field="responsavel" id="c_br_ufpr_c3sl_participatorio_Projeto_responsavel" z="qHPooL9WJIOr9aiVpu272tRcYlg="/> + <field:input field="telefones" id="c_br_ufpr_c3sl_participatorio_Projeto_telefones" z="XN9R1Y3TkGJDhJjNR7Ac+uUA10g="/> + <field:input field="email" id="c_br_ufpr_c3sl_participatorio_Projeto_email" validationMessageCode="field_invalid_email" z="wec+yBsxP/CfoGtMjMYu8XOiz8E="/> + <field:input field="publicoAlvo" id="c_br_ufpr_c3sl_participatorio_Projeto_publicoAlvo" z="rfW62fR8G11PyQwsAU15sdK6804="/> + <field:input field="formaAcesso" id="c_br_ufpr_c3sl_participatorio_Projeto_formaAcesso" z="HY3pNe95ZaxAxVS55E5bDnn84FE="/> + <field:input field="site" id="c_br_ufpr_c3sl_participatorio_Projeto_site" z="UtAhbsHkmV/py/BCglNJT4jnKNk="/> + <field:input field="comoFunciona" id="c_br_ufpr_c3sl_participatorio_Projeto_comoFunciona" z="WQT9VOPh8Yng7sdWkKBfWrWJvzY="/> + <field:input field="noticias" id="c_br_ufpr_c3sl_participatorio_Projeto_noticias" z="QvhayaNYZLWbn4Kdz/1ukvJWaQw="/> + <field:input field="horarioFuncionamento" id="c_br_ufpr_c3sl_participatorio_Projeto_horarioFuncionamento" z="/wgLwa6KbhG4wv0vWFn869KF4hg="/> + <field:select field="diasFuncionamento" id="c_br_ufpr_c3sl_participatorio_Projeto_diasFuncionamento" items="${tipodiassemanas}" path="tipodiassemanas" z="+BjTvC5bM2N7YGK48eWFIePY8Ks="/> + <field:input field="estrutura" id="c_br_ufpr_c3sl_participatorio_Projeto_estrutura" z="BMTcTzuUYCoKhXapXah2VN/qPuE="/> + <field:input field="responsaveis" id="c_br_ufpr_c3sl_participatorio_Projeto_responsaveis" z="gmi09GGEpF9pDXN7/aviynR3tBs="/> + <field:input field="telefoneMinisterio" id="c_br_ufpr_c3sl_participatorio_Projeto_telefoneMinisterio" z="UGH0aw3XZuQmgwr0sIS1O9KhHbQ="/> + <field:input field="orcamento" id="c_br_ufpr_c3sl_participatorio_Projeto_orcamento" z="sJO2DC6kqSRPUz5DC5eA/bddxvc="/> + <field:input field="justificativa" id="c_br_ufpr_c3sl_participatorio_Projeto_justificativa" z="bxuZxUlVF/K6r0D/vZ2gLJOYqus="/> + <field:input field="meta" id="c_br_ufpr_c3sl_participatorio_Projeto_meta" z="X67itR3Kt3CcPmnMLE3pk8gJnTQ="/> + <field:select field="temporalidade" id="c_br_ufpr_c3sl_participatorio_Projeto_temporalidade" items="${tipotemporalidades}" path="tipotemporalidades" z="DxeDx4ck5sWIKaomza63nyKiAeQ="/> + <field:checkbox field="possuiMonitoramento" id="c_br_ufpr_c3sl_participatorio_Projeto_possuiMonitoramento" z="/JVVLQICEG8G6erZgd6P7rhoNqM="/> + <field:input field="estadosMunicipioComPrograma" id="c_br_ufpr_c3sl_participatorio_Projeto_estadosMunicipioComPrograma" z="XOH+gInejGvAnV1UOGHZHSlh0kw="/> + <field:input field="publicPrioritario" id="c_br_ufpr_c3sl_participatorio_Projeto_publicPrioritario" z="ZiO1CZu1gNdDb59SvP41Qnpj/io="/> + <field:datetime dateTimePattern="${projeto_datainicio_date_format}" field="dataInicio" id="c_br_ufpr_c3sl_participatorio_Projeto_dataInicio" z="B4b6arF1P2Q4KSgME04mPIWp7Zs="/> + <field:input field="mecanismos" id="c_br_ufpr_c3sl_participatorio_Projeto_mecanismos" z="YCRKTWq1a3Fd0ZHbAwcxKS+vACY="/> + <field:input field="parcerias" id="c_br_ufpr_c3sl_participatorio_Projeto_parcerias" z="x374RYBQGz62YCy6JRm7HDk6kFs="/> + <field:checkbox field="legislacaoPropria" id="c_br_ufpr_c3sl_participatorio_Projeto_legislacaoPropria" z="0FyUiOC8dXYS2KQh9us8ZFSrfU0="/> + <field:input field="descLegislacao" id="c_br_ufpr_c3sl_participatorio_Projeto_descLegislacao" z="Y9X3/A7OHfh+T5M4c7uRjtx2Uak="/> + <field:input field="obs" id="c_br_ufpr_c3sl_participatorio_Projeto_obs" z="5b+Wjz0npE5n2wk2R6g1fJZD0VA="/> + <field:select field="estado" id="c_br_ufpr_c3sl_participatorio_Projeto_estado" items="${tipostatuses}" path="tipostatuses" z="K+kNv0Ov3Ulu6LiKPBQ71hczlOA="/> + </form:update> +</div> diff --git a/src/main/webapp/WEB-INF/views/projetoes/views.xml b/src/main/webapp/WEB-INF/views/projetoes/views.xml new file mode 100644 index 0000000..9e9373c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/projetoes/views.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> +<tiles-definitions> + <definition extends="default" name="projetoes/list"> + <put-attribute name="body" value="/WEB-INF/views/projetoes/list.jspx"/> + </definition> +<definition extends="default" name="projetoes/show"> + <put-attribute name="body" value="/WEB-INF/views/projetoes/show.jspx"/> + </definition> +<definition extends="default" name="projetoes/create"> + <put-attribute name="body" value="/WEB-INF/views/projetoes/create.jspx"/> + </definition> +<definition extends="default" name="projetoes/update"> + <put-attribute name="body" value="/WEB-INF/views/projetoes/update.jspx"/> + </definition> +</tiles-definitions> diff --git a/src/main/webapp/WEB-INF/views/resourceNotFound.jspx b/src/main/webapp/WEB-INF/views/resourceNotFound.jspx new file mode 100644 index 0000000..b3d27c7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/resourceNotFound.jspx @@ -0,0 +1,29 @@ +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="title" code="error_resourcenotfound_title" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <h2>${fn:escapeXml(title)}</h2> + <p> + <spring:message code="error_resourcenotfound_problemdescription" /> + </p> + <c:if test="${not empty exception}"> + <p> + <h4> + <spring:message code="exception_details" /> + </h4> + <spring:message var="message" code="exception_message" htmlEscape="false" /> + <util:panel id="_message" title="${message}" openPane="false"> + <c:out value="${exception.localizedMessage}" /> + </util:panel> + <spring:message var="stacktrace" code="exception_stacktrace" htmlEscape="false" /> + <util:panel id="_exception" title="${stacktrace}" openPane="false"> + <c:forEach items="${exception.stackTrace}" var="trace"> + <c:out value="${trace}" /> + <br /> + </c:forEach> + </util:panel> + </p> + </c:if> + </util:panel> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/uncaughtException.jspx b/src/main/webapp/WEB-INF/views/uncaughtException.jspx new file mode 100644 index 0000000..9180b0d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/uncaughtException.jspx @@ -0,0 +1,29 @@ +<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="title" code="error_uncaughtexception_title" htmlEscape="false" /> + <util:panel id="title" title="${title}"> + <h2>${fn:escapeXml(title)}</h2> + <p> + <spring:message code="error_uncaughtexception_problemdescription" /> + </p> + <c:if test="${not empty exception}"> + <p> + <h4> + <spring:message code="exception_details" /> + </h4> + <spring:message var="message" code="exception_message" htmlEscape="false" /> + <util:panel id="_message" title="${message}" openPane="false"> + <c:out value="${exception.localizedMessage}" /> + </util:panel> + <spring:message var="stacktrace" code="exception_stacktrace" htmlEscape="false" /> + <util:panel id="_exception" title="${stacktrace}" openPane="false"> + <c:forEach items="${exception.stackTrace}" var="trace"> + <c:out value="${trace}" /> + <br /> + </c:forEach> + </util:panel> + </p> + </c:if> + </util:panel> +</div> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/views.xml b/src/main/webapp/WEB-INF/views/views.xml new file mode 100644 index 0000000..e92932a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/views.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> +<tiles-definitions> + + <definition extends="default" name="index"> + <put-attribute name="body" value="/WEB-INF/views/index.jspx"/> + </definition> + + <definition extends="public" name="dataAccessFailure"> + <put-attribute name="body" value="/WEB-INF/views/dataAccessFailure.jspx"/> + </definition> + + <definition extends="public" name="resourceNotFound"> + <put-attribute name="body" value="/WEB-INF/views/resourceNotFound.jspx"/> + </definition> + + <definition extends="public" name="uncaughtException"> + <put-attribute name="body" value="/WEB-INF/views/uncaughtException.jspx"/> + </definition> + +<definition extends="public" name="login"> + <put-attribute name="body" value="/WEB-INF/views/login.jspx"/> + </definition> +</tiles-definitions> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..fdde65a --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> +<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> + + + <display-name>participatorio</display-name> + + <description>Roo generated participatorio application</description> + + + <!-- Enable escaping of form submission contents --> + <context-param> + <param-name>defaultHtmlEscape</param-name> + <param-value>true</param-value> + </context-param> + + <context-param> + <param-name>contextConfigLocation</param-name> + <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value> + </context-param> + + <filter> + <filter-name>CharacterEncodingFilter</filter-name> + <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> + <init-param> + <param-name>encoding</param-name> + <param-value>UTF-8</param-value> + </init-param> + <init-param> + <param-name>forceEncoding</param-name> + <param-value>true</param-value> + </init-param> + </filter> + + + + <filter> + <filter-name>HttpMethodFilter</filter-name> + <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> + </filter> + + + + <filter> + <filter-name>springSecurityFilterChain</filter-name> + <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> + </filter> + <filter> + <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> + <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> + </filter> + <filter-mapping> + <filter-name>CharacterEncodingFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <filter-mapping> + <filter-name>HttpMethodFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + + + <filter-mapping> + <filter-name>springSecurityFilterChain</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + <filter-mapping> + <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <!-- Creates the Spring Container shared by all Servlets and Filters --> + <listener> + <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> + </listener> + + <!-- Handles Spring requests --> + <servlet> + <servlet-name>participatorio</servlet-name> + <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> + <init-param> + <param-name>contextConfigLocation</param-name> + <param-value>WEB-INF/spring/webmvc-config.xml</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>participatorio</servlet-name> + <url-pattern>/</url-pattern> + </servlet-mapping> + + <session-config> + <session-timeout>10</session-timeout> + </session-config> + + <error-page> + <exception-type>java.lang.Exception</exception-type> + <location>/uncaughtException</location> + </error-page> + + <error-page> + <error-code>404</error-code> + <location>/resourceNotFound</location> + </error-page> +</web-app> diff --git a/src/main/webapp/images/add.png b/src/main/webapp/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bfa0719bc3a2ce4fc529403f0acd6b6057c956 GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfvMEf#W6%elJ%f($J9^> zh6m4W@6WVeoIE*_h1pRtQu4-p4=p!Wi6wbWQCl@vP2JYDB6Lfan6CH2-U)&svx`== zMkZz13w?RqBO>84A#9PK=Bqo^`#*oPnK*OXzF$`_pH5Soua#)KOh93RquJwYb<sA{ z<B!yf$60MkKQ5qPba~tLe%YJf5B=J@^vJ0tlNnN+tg17g{CzL}_v`UXPbYugzs71; z`f;HUjo3SOEAF0ZtuIk+Qjo4SdtA87=#}l3XHwtqht*y`r+2>Wcq@B(ZPnd}+qdb9 zc65l&yve&OX;DD)x(lp=B8_QfX$i;MBDdeM+PUVO&-+#;PX|X%uNI+&E*gSf;^*e< zfAmaLxqKbh`TSjR<`-=_MHMFB5_EFQs10&@E0I$8Dn@GC#%pbI5w@CHlFqF@LZ)3) zgaVxuq;HC{O%aQFy~If*K=Go0BS)u;nVOY@$i;S@m5RbEE*wj_ByhqffGcW6>?FrY zPWN9(2Q1t=Wu}TIqlZF^@cz1_e^=&oPuG{|bwBlC-YGTFUvBeL7BhNWnDqFwyjAVT zV*dP_50-^y%S8RS@$~1;U4_^0nQLz;%$gbZJ5ghaSPENjkICK-^VGN5uhQSUJAJ!V z#V2Ly>$%^4ul#GR-E(~JzVx!RL$&5&x-Tc&Wt>dEKhIE5+h*Ih$PbT{-_Nk#DE)i6 zR?qY(>Fv`F$JKmJU+?P07*+J|(ta_&`nSt3yYJmpy55}6CVAEDmerze;lKAUXTQs< zzh2reJ#C`Nfvu-k)pnn^{Puab+5N3Y?{wZ}3zYr)(O{44%*?~*nyrs7uCY;i=etwJ yVUkDYqTdUyy$g7%#a5fWnqTJr->2LDGpZ{Zrv3f+`XmDb1B0ilpUXO@geCxLb53*s literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/banner-graphic.png b/src/main/webapp/images/banner-graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2b78c6e370c97f342921e8158c324b73c8bda6 GIT binary patch literal 13194 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 JtaD0e0swm_L9ze< literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/create.png b/src/main/webapp/images/create.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bfa0719bc3a2ce4fc529403f0acd6b6057c956 GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfvMEf#W6%elJ%f($J9^> zh6m4W@6WVeoIE*_h1pRtQu4-p4=p!Wi6wbWQCl@vP2JYDB6Lfan6CH2-U)&svx`== zMkZz13w?RqBO>84A#9PK=Bqo^`#*oPnK*OXzF$`_pH5Soua#)KOh93RquJwYb<sA{ z<B!yf$60MkKQ5qPba~tLe%YJf5B=J@^vJ0tlNnN+tg17g{CzL}_v`UXPbYugzs71; z`f;HUjo3SOEAF0ZtuIk+Qjo4SdtA87=#}l3XHwtqht*y`r+2>Wcq@B(ZPnd}+qdb9 zc65l&yve&OX;DD)x(lp=B8_QfX$i;MBDdeM+PUVO&-+#;PX|X%uNI+&E*gSf;^*e< zfAmaLxqKbh`TSjR<`-=_MHMFB5_EFQs10&@E0I$8Dn@GC#%pbI5w@CHlFqF@LZ)3) zgaVxuq;HC{O%aQFy~If*K=Go0BS)u;nVOY@$i;S@m5RbEE*wj_ByhqffGcW6>?FrY zPWN9(2Q1t=Wu}TIqlZF^@cz1_e^=&oPuG{|bwBlC-YGTFUvBeL7BhNWnDqFwyjAVT zV*dP_50-^y%S8RS@$~1;U4_^0nQLz;%$gbZJ5ghaSPENjkICK-^VGN5uhQSUJAJ!V z#V2Ly>$%^4ul#GR-E(~JzVx!RL$&5&x-Tc&Wt>dEKhIE5+h*Ih$PbT{-_Nk#DE)i6 zR?qY(>Fv`F$JKmJU+?P07*+J|(ta_&`nSt3yYJmpy55}6CVAEDmerze;lKAUXTQs< zzh2reJ#C`Nfvu-k)pnn^{Puab+5N3Y?{wZ}3zYr)(O{44%*?~*nyrs7uCY;i=etwJ yVUkDYqTdUyy$g7%#a5fWnqTJr->2LDGpZ{Zrv3f+`XmDb1B0ilpUXO@geCxLb53*s literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/delete.png b/src/main/webapp/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3141467c678d2b53f79deb22086a9cb3a576a08d GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfvL>X#W6%elJ%f>$JA5_ zh6m68{>wjiCudKqiBQGDH*Sty9o;Kj9aqk7>c|jw>keAjlp(ISsI)sEd@Dy&#?*xF zETyg7jv+2yfoz=9%w{cmSaEL7|LW>_Cw%(%)IGZSa_7l(uN!TeEF38l&hFT19Ip4& zDQ54VS0@iwyD?0hS+@7*)sx@(a(1tt5;3(zsKLjh`@e4W|J~Z>=F7&}|NX3=z0YP( zI)|v2csWnj_E%TzcL_O8=(U^u(Lz`EyWFn7YS!CA?r%FfGp9VRuHgU1tH<x(v(*t0 z)Hd2IU2@cAAzSQ1ZY2$-vw!X!nD_Rx**!DM*ym~YTbVo^967yOgciDJ2zrVC`&WLl zP4x7;IN^EscZQi?wB;04n0!mn$t|Nc$my*_%E#YJO|p{L_S$Ty47y^}#x+wVOGHz3 zQHz7wCT$)K-7VKVTQwFqEmCX}5bDhFDQVDH#2*>ttQN4a_v8}A2{RXnYzf${(yY?D z@1pqvr)*7Q&mg7=4jg}<yZ4CkMcRFz9sK&*ZNtA2smr-)7yECz$e@yOvbR-vnP2UL zeaq(=?|doeZC{)8?1|IgFAqDJMQ>Sb^<l4<;9SW%(@|O3w)Tte?(h2&UY!x2Q*rpr zsZg{08xMZRe}2mKxN!aZne%6FD2=^1$?j$Iv^D!aEngXJw(+$n!`BCU)*U^@^*Ay6 z@wK8W-TCLfMlBIpp!z!e-0pvm4L7^To5WbXw^|qb_RHM;S~~Y%=%3-+H9LNHxykIA zu9q0Jm#^-A{@uFvkL>n!^TKv>UKcz5Z^s4CzY9<J-2Ps>Eq~9Pe)l7PHPabXI;Y6V z%B_wTw|{euPyg7}gLgi>NjQC6zxK;l;s4CH6m(Vd0s|5l7#J8lUHx3vIVCg!0F5Y9 A$N&HU literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/en.png b/src/main/webapp/images/en.png new file mode 100644 index 0000000000000000000000000000000000000000..ff701e19f6d2c0658fb23b1d94124cba4ce60851 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznVBqFpVqjqS*)S`Qfq_A?#5JNMI6tkVJh3R1 z!7(L2DOJHUH!(dmC^a#qvhZZ84Fdz?Pfr)ekcwMLb4-fo&+5JR(0O~@zQlxtAHTof zzuzTsS35WO-~Yd>qi4roDF5_7f7$x`bthI8S;gKcyRY8k+A;t5-*a}`zg*bezhBP& z|DX5uZlSJ<rp|e7@%I0<xhiL!{P*wkb+_mnUoQBxnZ{1u7MFgj{Q2)VPVr+;wL|3Q z^n4Ak{P#y)S(*9p(cL`L-!Vw`-}~pEzISnX1#5EV=ccXZ*0cQ#81H`k^7HpE^Q!)T zT7Pr%R-C!Q)MZff|ICNK))U_Cv!8qW?6b6lNt3U4X`9>q{qb}1!)JH5|Nr;boqgfL z|9}5nIMQ(HTuk-JqMfNtvjoi#AGPM$UvK>97prRHB>Vb*g#|zUzrMcz{{H`ruK)g} zUYu~R@)<XubWZO78IcZWSRd`L|Nrmj@8{p=+pDkNm*ACcbIbg_Q^~J$tFPM`?5X~( zt;+b~%m4WO%()DeZ4dt&r!RLdE<17JY`4$NoV@F2zC1oIUzoUUsqx*X*T2-yvDS|? zkX`ZW{`vV1#|{4c&wsliCgr_d@G)`m82*<tPZ|IDeON?zwba}79~UqFG^sY{v3arL zy#4?G8yjSK8E1Jh$SSYa6A|A3Y{Rm(FXmXzT>g5qaBk$h{dLx7b#wQw`nz)}d;R~P z|DM0Uf5hNw?s5A+|34r9`)l@8>F-8=e($b&tte=D@YK6?(NixoGVw6*9&zM)>Rs2! Qz`(%Z>FVdQ&MBb@043@=%>V!Z literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/favicon.ico b/src/main/webapp/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c2f2b6ccdaa425cbd4acdff6e32860723ca35c87 GIT binary patch literal 1406 zcmZQzU}Ruq5D;JhgA7&%1~CQ(1`P%V29S^f14y0&Ea$)orZ9;A|Nk>EOnu4FH+MM$ zPhd5Jkh(R4Z~a^bj<Ssm%sc-x<n%6M;J1uq`1<-O18@6T2CmeZ4B{Yj7yV+8kkw|W zo4ka9q4Op~bjMN#J_9cXp6E`7#yJ}qxSdiN{(t|(z?HXxfo1J~2KEIX7)qzFVh~N} zW#E|dh(UmbjUl;jB?H6k&kXG|7c-RfEn*03na{v5;Ss~{Pj4Am+s-iX#!q1Q|MxpX z(~Q*&Lb|RDtjoVMaA(YCU}(F{z&_(SLsHig28J2$7%C?(XJFX)kD+qLItG?SUl?kq ztz_V-*uoIfvV<YJc^(79(tiwWbKfv9^xtI=Vqjp%>0QXsIBgljuMaO7e*gW?z`F7u zL+PXy4E3|tGB9>tWngbT$?*T@R|bZj+YHPT?lEvyZe<YC^I#BQWMXKYzJ%fL-@gpZ ztNt@EE&0vB(0+}fe##<-uWz0+Ft7j5z}<0{p>onvhKi}n8UFwN&cM9=KLf*rCkzZd zcNqkkSsC~eKz{lGjwgmWpBY#eeZh#6QGwAAphpNWf`DV3i%Kw~BZvvYj*QH%ik1!_ zCI~ymDd~ksF<GjCIE;*ralWo0R#wJ_1`;40j&b&ZAy!rap8A1y5sr+GaY2D0R{SBn zx}nlG%9@OE_8uJm{8k|>ZXs479`<qJp4O7;#>QSEyzIvOAs#L=LZNQrETXnP0=DKM zP6=$9f;N#-T(<HtwyXlOiWc0AnqfjAI^OYo+HyS6!VVzo!)!uKV>J>(3>CmGa*QyF x4ly<kiQ<%S^aDB3F~Z0u#NWo*9ppTa0Aqxis;X85m<c8vBTU31AhMK(F#r;gzV844 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/list.png b/src/main/webapp/images/list.png new file mode 100644 index 0000000000000000000000000000000000000000..acc30b853b3740bad231e4daa8e9f5a81f3f757b GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfic_D#WBR<^wP=uy^;e3 zj@9psaplO_t^YuI35SNF>yFkLhd9ifa#R$;!t5FsoYmt<%H6r?hKGQU^2$$a(~=Ui zmu|F3f3|tY_g#U3W+@2?=Ndo%ooN|7@rX`f<n7;^ci&kfYugt(m7)Ae-%dqwJ@>R7 zEoThM>&~=4zkR#?Z+E=3dS>p*GMnuIzIA#&t}(T8w+#y>^)*lW`1tabOYu!Y4IyfL zX5!1)ZrJTnXP>~lp_qBOuSBn#$DuO?-~Bl!q)I-U#vI`DaLY{P>#x6-`%Dg=wZ>MA zLG{u#(>bXIGJJ-{Nj>>mYF9lLU4HrCSu5-L!1J4Ac3#Y=IcZh-?UGaEn)pNaLk%T( zIt=%n?&sQd_g%F8B?+bp_S0NeU;Q<0XOBcu;=&J`iUJqzSNrwXPLail<A?;OV$Ce4 z_1B%3Hhub(C9AOTZr=av_8*)Ae-)J1@B3_>vqLiPzg3><=9W7XM5`bA9jxRFm{}?< coYoU=#ilh?K}J`cfq{X+)78&qol`;+0KT}!-T(jq literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resultset_first.png b/src/main/webapp/images/resultset_first.png new file mode 100644 index 0000000000000000000000000000000000000000..b03eaf8b5416fa6878165d95116e73003f8445f5 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfpLzfi(`nz>7&8c9!`N0 z|MF*szhq2o6%-1wxFV)^QNYqgFxP3zmxgQCvPv};AKZ9xY1E>Q6&c-&)=D*TZCtz1 z!R1u=_j%>dWt>cQ>G8>06rB72zh?bm!xn*n^H~j6(^r2IvOSYwIj7j6CqDOVX@B@P z<&V=P7H=rpBb8Gaa6s|O`$oq7(gMpu=gxc^a%RznFr`H|FE+Va1RQHTq04^y>&vq# zHWw1t`SWa*bmg{=4p`H|=^%7s(~fn%c`CwtWA80paG%-d8&`*A`-%v|r&15N6FJ=H ze`m5Q&fIXkrC*6L`r2pv1NB+~Ydn}Le3^?ndU?KYon`yhcfvX06Vo+*M8!DhK3e0j zG3jWY@sCXzg2BrobI+98y*g8`xq?YU;c2{smHU+I%O~%CbMfh8_KLe~5)0mN3UF96 zuV@jR_{K=%W$2!FElTHC-Z^;ou)0aLRH@yew5=irvI}}6Z@&Kh??uil!`;=@^RNE= z5T&@PCHE_r(1Id^TDf`eWp+Pcxyb6c!nh&Hcg|kV`9WH%<<7+T>;7_D&T?nn(^I=X dzTf{*`pYHO-Uc0w<qQlA44$rjF6*2UngE#o<iG#` literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resultset_last.png b/src/main/webapp/images/resultset_last.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec89478477aada6c95cac22920094dd12f399a7 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfpMOvi(`nz>7$ePXNv@i zwC*?GWz9K>LrY4BsflCJ)ZP`YU-UN!N;`^Nj1vjj;HesM<3@x|lg<*3XZ9XFX4@D~ zu5jcI^tqrmdv4+VJKrDMbqhqa+*E5_zB|6q;`;$ZP1Ul+J+WEuKN$Z06~6S;=bNkD z<#<0^&wYRT-b>eyT|W*S`YXIl^WeS}Hao8W{g@&VwR+AhxyP4Ya(a25)sI*|$8y^2 z!;{~(Z;z{~-gcP%k$`+*+{!iCW&+{?3BM9%ul)OV_w@Pe_OfWGCdNAL3G&K$_n_Z@ z$AT}pPkw}S`_8^^^Z$plG|yJ)#d(sy!e;ZX302Y9>!@H{@actx?v8B{Us8%}oNH7f z?&lZ?w14(`t5nUCq87-$RA}uft7no677I<8BrspWah~)&vFJ55Z}lfwe5t;CR%S-V z#1xm#sdw|N^ChQ+{a&-?>$Cc@b8&&IJyjkxO?qXa<><2K)4CUdHJZC$-z~n*ILV^v z_Pg{a+_kH9#BJ?r?^SKJD}Q*5&%g9Y^-*`#pBHij);xclb@S$o`8#dTT-ADiKW9SI hr}sb3)W<)LpH%i!<%69}4g&)NgQu&X%Q~loCII{p?r8u3 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resultset_next.png b/src/main/webapp/images/resultset_next.png new file mode 100644 index 0000000000000000000000000000000000000000..e252606d3e68c6da135a9b165996d9da968ef7fc GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl=1e#WBR<bn=h?|LvJo zXEeTIGg(vjacSPu?lLZ(im&_Ao_5!(cFS#@oa*rOQ~Lkw^D6%DuRYxTpELOVw~09p z_nO@Qhs)G|um8Ak`+x80Hvit=E6SDgWK;32|55+&p!t9G-1?98&)!Y{FTDKz-}S*I zWt<n;Siaw7%c}XhKk@40|Glf_|G&TW<H`Q=<6Hj+c^;P&Ol>GWz4gEFHoO1vn|>Vp z|4Eg<q0Q#k`<VKl`%|85JnJHv5LNfG{`W8S|J`Eu*pD4M{Qq01_&;wJ`3U7#yXLlP zFi-h>?%(?8k00uvZestRds_dGIRA~^la@G4@v{24zvScJ|7NPs|94lujddw9@p6&- znIBv6Z2yYa=U7uzRSfqt|96$yeqL_J85b=!hBq%>?{8Qjype%{fx*+&&t;ucLK6T{ CExsWD literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resultset_previous.png b/src/main/webapp/images/resultset_previous.png new file mode 100644 index 0000000000000000000000000000000000000000..18f9cc10948f025fde708328fa704b520161e5f6 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfl=Jk#WBR<bn=h?|LvJo zXEf@urJS$3G0*DrL-9>K9&;=A+h+bcTt89x-9Po44J|9nf3KQm``14E{p$a5Z_Pc8 z6|xS!tz7CY_kaG*-%tOqw2uF?ebr8<J&XtUnok$et6;cxXWPG*|L^&p|CcQ~SN&W= z!@1f0o1WYKurEE{{l9m${D1wZivRVWZyo=?G}vD#y&?JV*0Udj-~V}k@6VU|pOe`C zUrxXKGk)uvhxI3CBp;Dn5Lz(H)%N`xss3x(|FgsF{>(Rf{O$jt*6;ti*<}@U1yqy! z)@;$;|G_^0-`)Q+H^2WQUV7iV%A~9EZEVWC+E4YDu0;QLl_~qDuC2%!ofnxPQU7HB whNs{Dr>LhoHuG+7?b-fEe#e;>erARXUC;kbxadEhfq{X+)78&qol`;+04{dCb^rhX literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/show.png b/src/main/webapp/images/show.png new file mode 100644 index 0000000000000000000000000000000000000000..2f193889f7ea091c292acdd684c595dcb206b5c4 GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGftk_M#W6%elJ%f>#+*=z zhKJv+pZ`x+o0)P+%{Swy_tqn78QoFqyH_YQP4Otb+uN<z6)Lc>Lm|#gX@|y(Mbd&@ z6K*suS)}N+=gKi9-bqPWPRny|sTfZ_lQK!o*J}EiImLGK-9tnh!tM9{2=i8}yu#7m zAfmv)v4BacK=DlOnwR;TcGeX=`jWux5F*-ecz*n>AMfru|2=kskF}eLp+T!5Xy5ge z7xQ_$x^G{-`F~yMztXA#YbFMRuy5*0yOYycvt1k<m@9ZKmS34QZ+i9Z%6At#PA|N( zYGMB0rR8qrU8_D_6pt_0(-*y_(`eo&_x#QF_=_d;zT4Zj@;9~xzv4aLy;n2sRM+JL zKlZ!U&7UE??dR64<LB1B^S9c)YyN&KQ_ug6%XfY`F7cOreuAF$;eCJmn<H$z*7#Ok zIyKMi^g&zCbN*t#&(`w4IeW&>Up88I>W=W0#a~aU+`e~#r_KJj`^ubk!jX!Jyyn+i zPIvclo3Bzy?shpgbK~dq{_CrzZfpN7xA^(Lc8&Wxz11$CTlennmTk*^zPux;B$$-# zp{BF4MRjUNAWz3Zn@hL9m+i7Wtgq}G685=do2tgsXFq=4F`qK6xTlv#I9k!nNk&rW z+N2&H#(>rpwwEs&{rDxAr~4#g)_J23rxLk#R>n!&94cCQ=En<u2|=aR3z)dN9x(r4 zm{_d$a*w*T_1R-tosWX#HnJJE-8Nqz7%_w0LBK`PNT4Bv=bq-WO<PYU)pb^_b+enk zc+=LScfVT4oKK64)!Y=OClvCLQG|nw>&UeSQhgfxD}Mhv@jZQo#qHk-{?q^LxO8Z( zH20Zv;wwT||5&%Trfex^gBA-zLPohyv9-b~t^)_!#j_8q&-bmhocv&=oO8ejt~dn^ zjRjn*4E8><_{zkyr+lFtBg2lj0x=x7KAgDE>M!6b$k5cZfQ8kxiPK5Mv%qc#2g8EM z?@LP#z5DgRL3!;ewpIp)k}WO_E1bM_Is}rmqwlpgt<YjPKj+8Smh4xvl|C(5w3dNE oLt}vkg9gJ_fkRUo7yf7bF`?aL#gxfD3=9kmp00i_>zopr06y@Gi2wiq literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/springsource-logo.png b/src/main/webapp/images/springsource-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e170f8abf778b24ed1de11dad6f1444e849269ba GIT binary patch literal 4974 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/update.png b/src/main/webapp/images/update.png new file mode 100644 index 0000000000000000000000000000000000000000..046811ed7a6ef16be1a54bb860e1f22c6dacdacf GIT binary patch literal 807 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfoZ3wi(`m{B<n%{jA^AZ z3?I(Fubf}LYp3N!f%Mc~p|uifO0q^DC$y?LK5w!r{Tx=pu}II+G1kWCl$AtBd&eTH z6xRitZH~;kmE~dld-I(+voHI8-}ipr^Y3pzdkQB0mtG$KDsK0ypGr4duX-pb3QY{P z^w&Fc^!v+ez2WD1<X<r?=_vT{c5}L&<(}6I7kRvHYGY7fI`rmJm$1G5jDNdppKp&> zzt+zqpXJQys+{{;OZxS(^_e1?6FYolBSTxCPQA5nZS6Pyo*O$V_AD<<SW)`#v2sxM ztD{0eUV8;EzQ{6BQJlb?^2$Xq)4x9N^&`u>&iXIp?_@qapR494TfMzS!Le})2d9fy zm&^Z8nx!!t>Rvy7re1%2s@1P+d6#x4de?IbINnt7R8rl^*R`a)^2oH%#lP6+U)xs| z6z>1&`i+*^<v}8EcgnK52xtT^^zdwSo46*<CfB=W_5a4^sQ<MZruiA)zP&v6xi8Ls z!=~RK(x-EAq%3inI7vx$t#*7={qHIN*ymrJB^728UXph=|Jj+!yVduNLitlP6vAC5 z2=1u;nQhx`f9uByW2?)@O?El`zE+#&=63e2<TSIK@bm=@bDUiSeER2I+52Jg)IB$^ zcDtwOZh!vXtT^w`qkD^k-Zxx5yJQ`cNI?241*6U4_Mbk?o4)o}`jMsj=cIn8-TP6V zJWa0J{p#k(1vfQ9=5kG$uzG^>o}b>wFFaXu?ngLVxy{38Z|0ob=xP7v_m!{O-%n{3 zBn4mgvThbywJPj7&zfAR|Bq*Vx0l#f{d>XFv(`Gcm3J1`e(z9d;=Zmm@vzrwCe@I) zb5_q;9PIr%?*H|tB5JA=rh9l#m2sIUVySt0%4)0dfJ0uZ=S5z=y5sfMh395<Xs}3L zxF6fZv1_)cSJCE)Vz0IQ9XU0RR{QTQ`n7Y)rE>zd3{4Ik3J%)OZKA~d4*Z`a5^?28 Tcx62U0|SGntDnm{r-UW|C)Rvh literal 0 HcmV?d00001 diff --git a/src/main/webapp/styles/alt.css b/src/main/webapp/styles/alt.css new file mode 100644 index 0000000..dc99e4e --- /dev/null +++ b/src/main/webapp/styles/alt.css @@ -0,0 +1,369 @@ +/* main elements */ + +body,div,td { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + color: #666; +} + +body { + background-color: #fff; + text-align: center; +} + +#header { + margin-bottom: 1em; +} + +#wrapper { + width:800px; + min-width: 800px; + max-width: 800px; + margin-right: auto; + margin-left: auto; + + /* fix max-width incompatibility in IE6 */ + width:expression(document.body.clientWidth > 800? "800px": "auto" ); + + overflow:hidden; + display:block; +} + +/* header and footer elements */ + +#main { + overflow:hidden; + display:box; +} + +#menu { + background: #eee; + position:relative; + float:right; + left:0px; + width:220px; + margin-left:15px; +} + +#menu ul{ + list-style: none; + margin: 0; + padding: 0; +} + +#menu ul li{ + padding: 0px; +} + + +#menu a, #menu h2 { + display: block; + margin: 0; + padding: 2px 6px; + color:#FFFFFF; +} + +#menu h2 { + color: #fff; + background: #648C1D; + text-transform: uppercase; + font-weight:bold; + font-size: 12px; +} + +#menu a { + color: #666666; + background: #efefef; + text-decoration: none; + padding: 2px 12px; +} + +#menu a:hover { + color: #648C1D; + background: #fff; +} + +#footer { + background:#fff; + border:none; + margin-top:15px; + border-top:1px solid #999999; +} + +#footer .new { + float:left; +} + +#footer a:link {color: #7db223;} + +.quicklinks { + clear:both; + padding-bottom: 15px +} +.quicklinks span { + float: right; +} + +label { + width:100px; + float:left; + margin-left: 5px; + margin-top: 0px; +} + +input { + height:20px; +} + +input, textarea, select { + border:1px solid #B3B3B3; +} + +input.image { + border: none; + height: auto; + vertical-align: middle; +} + +submit { + height:25px; +} + +div { + text-align: left; +} + +div .box { + display:block; + margin-left:105px; +} + +/* menu elements*/ + +a.menu, a.menu:link, a.menu:visited {display:block; width:150px; height:25px;} + +/* text styles */ + +h1,h2,h3 { + font-family: Helvetica, sans-serif; + color: #7db223; +} + +h1 { + font-size: 20px; + line-height: 26px; +} + +h2 { + font-size: 18px; + line-height: 20px; +} + +h3 { + font-size: 15px; + line-height: 21px; + color:#555; +} + +h4 { + font-size: 14px; + line-height: 20px; +} + +.errors { + color: red; + font-weight: bold; + display: block; + margin-left: 105px; +} + +a { + text-decoration: underline; + font-size: 12px; +} + +a img { + border: 0 none; + vertical-align: middle; +} + +tr:nth-child(odd) { + background-color: #FFFFFF; +} + +tr:nth-child(even) { + background-color: #EFEFEF; +} + +a:link { + color: #7db223; +} + +a:hover { + color: #456314; +} + +a:active { + color: #7db223; +} + +a:visited { + color: #7db223; +} + +li { + padding-top: 5px; + text-align: left; +} + +ul li { + margin:0 0 0.25em 0; + padding:0; +} +/* table elements */ + +table { + background: #EEEEEE; + margin: 2px 0 0 0; + border: 1px solid #BBBBBB; + border-collapse: collapse; + width: 100% +} + +table table { + margin: -5px 0; + border: 0px solid #e0e7d3; + width: 100%; +} + +table td,table th { + padding: 2px; + border: 1px solid #CCCCCC; +} + +table td form { + text-align:center; + vertical-align: middle; + margin: 0px; +} + +table th { + font-size: 0.9em; + text-align: left; + font-weight: bold; + color: #FFF; + background: #999; +} + +table thead { + font-weight: bold; + font-style: italic; + background-color: #BBBBBB; +} + +table a:link {color: #303030;} + +.utilbox {width: 18px;} + +caption { + caption-side: top; + width: auto; + text-align: left; + font-size: 12px; + color: #848f73; + padding-bottom: 4px; +} + +fieldset { + background: #e0e7d3; + padding: 8px; + padding-bottom: 22px; + border: none; + width: 560px; +} + +fieldset label { + width: 70px; + float: left; + margin-top: 1.7em; + margin-left: 20px; +} + +fieldset textfield { + margin: 3px; + height: 20px; + background: #e0e7d3; +} + +fieldset textarea { + margin: 3px; + height: 165px; + background: #e0e7d3; +} + +fieldset input { + margin: 3px; + height: 20px; + background: #e0e7d3; +} + +fieldset table { + width: 100%; +} + +fieldset th { + padding-left: 25px; +} + +.table-buttons { + background-color:#fff; + border:none; +} + +.table-buttons td { + border:none; +} + +.submit input { + border: 1px solid #BBBBBB; + color:#777777; + padding:2px 7px; + font-size:11px; + text-transform:uppercase; + font-weight:bold; + height:24px; +} + +.updated { + background:#ecf1e5; + font-size:11px; + margin-left:2px; + border:4px solid #ecf1e5; +} + +.updated td { + padding:2px 8px; + font-size:11px; + color:#888888; +} + +.dijitArrowButton { + height: 20px; +} + +.dijitTextArea{ + min-height:5.5em !important; + max-height:22em !important; + overflow-y: auto !important; + max-width: 175px; +} + +.RichTextEditable{ + min-height:18em !important; + max-height:18em !important; +} + +.flag { + height: 11px; + width: 16px; +} \ No newline at end of file diff --git a/src/main/webapp/styles/standard.css b/src/main/webapp/styles/standard.css new file mode 100644 index 0000000..9f79bb0 --- /dev/null +++ b/src/main/webapp/styles/standard.css @@ -0,0 +1,373 @@ +/* main elements */ + +body,div,td { + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + color: #666; +} + +body { + background-color: #fff; + text-align: center; +} + +#header { + margin-bottom: 1em; +} + +#wrapper { + width:800px; + min-width: 800px; + max-width: 800px; + margin-right: auto; + margin-left: auto; + + /* fix max-width incompatibility in IE6 */ + width:expression(document.body.clientWidth > 800? "800px": "auto" ); + + overflow:hidden; + display:block; +} + +/* header and footer elements */ + +#main { + overflow:hidden; + display:box; +} + +#menu { + background: #eee; + position:relative; + float:left; + left:0px; + width:220px; + margin-right:15px; +} + +#menu ul{ + list-style: none; + margin: 0; + padding: 0; +} + +#menu ul li{ + padding: 0px; +} + + +#menu a, #menu h2 { + display: block; + margin: 0; + padding: 2px 6px; + color:#FFFFFF; +} + +#menu h2 { + color: #fff; + background: #648C1D; + text-transform: uppercase; + font-weight:bold; + font-size: 12px; +} + +#menu a { + color: #666666; + background: #efefef; + text-decoration: none; + padding: 2px 12px; +} + +#menu a:hover { + color: #648C1D; + background: #fff; +} + +#footer { + background:#fff; + border:none; + margin-top:15px; + border-top:1px solid #999999; +} + +#footer .new { + float:left; +} + +#footer a:link {color: #7db223;} + +.quicklinks { + clear:both; + padding-bottom: 15px +} +.quicklinks span { + float: right; +} + +table.navigation { + border: 0px; +} + +label { + width:100px; + float:left; + margin-left: 5px; + margin-top: 0px; +} + +input { + height:20px; +} + +input, textarea, select { + border:1px solid #B3B3B3; +} + +input.image { + border: none; + height: auto; + vertical-align: middle; +} + +submit { + height:25px; +} + +div { + text-align: left; +} + +div .box { + display:block; + margin-left:105px; +} + +/* menu elements*/ + +a.menu, a.menu:link, a.menu:visited {display:block; width:150px; height:25px;} + +/* text styles */ + +h1,h2,h3 { + font-family: Helvetica, sans-serif; + color: #7db223; +} + +h1 { + font-size: 20px; + line-height: 26px; +} + +h2 { + font-size: 18px; + line-height: 20px; +} + +h3 { + font-size: 15px; + line-height: 21px; + color:#555; +} + +h4 { + font-size: 14px; + line-height: 20px; +} + +.errors { + color: red; + font-weight: bold; + display: block; + margin-left: 105px; +} + +a { + text-decoration: underline; + font-size: 12px; +} + +a img { + border: 0 none; + vertical-align: middle; +} + +tr:nth-child(odd) { + background-color: #FFFFFF; +} + +tr:nth-child(even) { + background-color: #EFEFEF; +} + +a:link { + color: #7db223; +} + +a:hover { + color: #456314; +} + +a:active { + color: #7db223; +} + +a:visited { + color: #7db223; +} + +li { + padding-top: 5px; + text-align: left; +} + +ul li { + margin:0 0 0.25em 0; + padding:0; +} +/* table elements */ + +table { + background: #EEEEEE; + margin: 2px 0 0 0; + border: 1px solid #BBBBBB; + border-collapse: collapse; + width: 100% +} + +table table { + margin: -5px 0; + border: 0px solid #e0e7d3; + width: 100%; +} + +table td,table th { + padding: 2px; + border: 1px solid #CCCCCC; +} + +table td form { + text-align:center; + vertical-align: middle; + margin: 0px; +} + +table th { + font-size: 0.9em; + text-align: left; + font-weight: bold; + color: #FFF; + background: #999; +} + +table thead { + font-weight: bold; + font-style: italic; + background-color: #BBBBBB; +} + +table a:link {color: #303030;} + +.utilbox {width: 18px;} + +caption { + caption-side: top; + width: auto; + text-align: left; + font-size: 12px; + color: #848f73; + padding-bottom: 4px; +} + +fieldset { + background: #e0e7d3; + padding: 8px; + padding-bottom: 22px; + border: none; + width: 560px; +} + +fieldset label { + width: 70px; + float: left; + margin-top: 1.7em; + margin-left: 20px; +} + +fieldset textfield { + margin: 3px; + height: 20px; + background: #e0e7d3; +} + +fieldset textarea { + margin: 3px; + height: 165px; + background: #e0e7d3; +} + +fieldset input { + margin: 3px; + height: 20px; + background: #e0e7d3; +} + +fieldset table { + width: 100%; +} + +fieldset th { + padding-left: 25px; +} + +.table-buttons { + background-color:#fff; + border:none; +} + +.table-buttons td { + border:none; +} + +.submit input { + border: 1px solid #BBBBBB; + color:#777777; + padding:2px 7px; + font-size:11px; + text-transform:uppercase; + font-weight:bold; + height:24px; +} + +.updated { + background:#ecf1e5; + font-size:11px; + margin-left:2px; + border:4px solid #ecf1e5; +} + +.updated td { + padding:2px 8px; + font-size:11px; + color:#888888; +} + +.dijitArrowButton { + height: 20px; +} + +.dijitTextArea{ + min-height:5.5em !important; + max-height:22em !important; + overflow-y: auto !important; + max-width: 175px; +} + +.RichTextEditable{ + min-height:18em !important; + max-height:18em !important; +} + +.flag { + height: 11px; + width: 16px; +} \ No newline at end of file -- GitLab