Author: reinhard
Date: Thu Oct 28 08:41:49 2004
New Revision: 55870
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif
(contents, props changed)
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap
Log:
sync dreamteam froms appl with trunk
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/main.jx
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/>
+ <link href="local-resources/dreamteam.css" type="text/css"
rel="stylesheet"/>
+ <title>The Dream Team Home Page</title>
+ </head>
+ <body>
+ <h1>The Dream Team</h1>
+ <p>Welcome to the Dream Team Chooser.</p>
+ <p>Did you watch the European Soccer Championship in the summer of
2004? Where you jumping up
+ and down for joy over the successes or biting your nails out of
frustration? Here is your
+ chance to select the ultimate team of champions.
+ <br/>
+ Start this application and choose your dream team of soccer players.
+ </p>
+ <p>Have fun!</p>
+
+ <p><a href="buildteam.html">Select team</a></p>
+ <p class="developer-header">
+ Developer Notes
+ </p>
+ <h2>Introduction</h2>
+ <p class="developer-note">
+ This sample shows how to build a Cocoon Form with a repeater widget
+ that is bound to JavaBeans. The fields in a repeater row
+ are dependent. More specific: the choice in the first selection list
+ updates the selection list in the second field. Finally, a choice
+ in the second selection list, changes the third field.
+ <br/>
+ Flowscripts are used to build the forms and handle the result.
+ </p>
+ <p class="developer-note">
+ This sample assumes you have a basic knowledge of Cocoon Forms and
Javascript.
+ If your knowledge of Cocoon Forms is limited, please have a look
at the <a
+
href="http://cocoon.apache.org/2.1/userdocs/forms/index.html">Cocoon Forms
documentation</a> and
+ the <a href="http://wiki.apache.org/cocoon/Forms">Wiki</a> pages.
+ </p>
+ <p class="developer-note">
+ Flowscript or flow, is considered to be the glue between pipelines
and forms. It is a special
+ kind of Javascript that runs on the server.
+ <br/>
+ More information on the Flowscript can be found through the links
in the Flowscript section
+ of Chapter 7 of the <a
href="http://wiki.apache.org/cocoon/Cocoon215TOC">Cocoon215TOC</a>
+ Wiki page.
+ </p>
+
+ <p class="developer-note">
+ Also have a look at the Supersonic Tour Sample which is a live
tutorial with a
+ quick overview of Cocoon. Cocoon Forms and flow are explained
there and you can see some
+ samples in action.
+ </p>
+ <h2>The start</h2>
+ <p class="developer-note">
+ This page is started from a flowscript that reads in
<b>soccer.xml</b> and
+ passes it onto a Manager. This Java class represents a simple
Java-based
+ connection to a datasource.
+ <br/>
+ Normally you would handle all interaction with the data through
Java classes, not in
+ flow, but for the sake of simplicity and to demonstrate the
communication between flow and
+ your business layer, we used a function <i>loadDocument</i> to
read in the XML file and pass
+ it on to the Manager class.
+ </p>
+ </body>
+</html>
+</jx:template>
\ No newline at end of file
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/showTeam.jx
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <link href="local-resources/dreamteam.css" type="text/css"
rel="stylesheet"/>
+ <!--
+ The Sortable Table script from WebFX (http://webfx.eae.net/) has
+ no Apache compatible license and can therefore not be added to
+ the repository.
+ If you want to use the adjusted version of the Sortable Table
+ email Helma van der Linden ([EMAIL PROTECTED]) and
+ uncomment the line below
+ -->
+ <!-- <script type="text/javascript"
src="resources/sortabletable.js"></script> -->
+ <title>Your Dream Team</title>
+ </head>
+ <body>
+ <h1>Your Dream Team</h1>
+ <p>And here is your dream team. May the best team win!</p>
+ <!--
+ uncomment the lines below if you want to use the
+ adjusted version of the SortableTable script
+ -->
+ <!--
+ <p>If you click on a table header, the table will be sorted for
+ that column. Click again and the sort will be reversed.</p>
+ -->
+ <table id="sortTable1">
+ <thead>
+ <tr>
+ <td class="tableheader">Name</td>
+ <td class="tableheader">Position</td>
+ <td class="tableheader">Country</td>
+ <td class="tableheader"> </td>
+ </tr>
+ </thead>
+ <tbody>
+ <jx:choose>
+ <jx:when test="size < 1">
+ <tr>
+ <td colspan="4" align="center">
+ <strong>No team selected</strong>
+ </td>
+ </tr>
+ </jx:when>
+ <jx:otherwise>
+ <jx:forEach var="person" items="${list.getTeam()}">
+ <jx:set var="name" value="${person.getName()}"/>
+ <jx:set var="lastname" value="${person.getLastName()}"/>
+ <jx:set var="position" value="${person.getPosition()}"/>
+ <jx:set var="country" value="${person.getCountry()}"/>
+ <tr>
+ <td>${name}</td>
+ <td>
+ <i18n:text>${position}</i18n:text>
+ </td>
+ <td>
+ <img src="flags/${country}.gif"/>
+ </td>
+ <td>
+ <i18n:text>${country}</i18n:text>
+ </td>
+ <!--
+ replace the lines above with the lines below if you
+ want to use the adjusted Sortable Table script.
+ -->
+ <!--
+ <td sort="${lastname}">${name}</td>
+ <td
sort="${position}"><i18n:text>${position}</i18n:text></td>
+ <td sort="${country}"><img
src="flags/${country}.gif"/></td>
+ <td><i18n:text>${country}</i18n:text></td>
+ -->
+ </tr>
+ </jx:forEach>
+ </jx:otherwise>
+ </jx:choose>
+ </tbody>
+ </table>
+ <!--
+ uncomment the lines below if you want to use the
+ adjusted version of the SortableTable script
+ -->
+ <!--
+ <script type="text/javascript">
+ var st1 = new SortableTable(document.getElementById("sortTable1"),
+ [ "CaseInsensitiveString",
+ "String",
+ "String",
+ "None" ]);
+ var initSortCol = 0;
+ st1.updateHeaderArrows();
+ st1.sort(initSortCol);
+ st1.updateHeaderArrows();
+ </script>
+ -->
+ <p class="developer-header"> Developer Notes </p>
+ <p class="developer-note"> This is the last page of the sample. It is
built by the <i>prot_showTeam</i> function
+ in <b>team.js</b>. It takes the dream team list, stored in the Manager
class and adds it to the JXTemplate for
+ display. </p>
+ <p class="developer-note"> This page also uses some i18n tags to show
words rather than codes (for positions and
+ countries). </p>
+ <h2>Do study the code</h2>
+ </body>
+ </html>
+</jx:template>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/soccer.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,1859 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<players>
+ <!-- Information copied from the www.euro2004.com website -->
+ <player>
+ <name>David JAMES</name>
+ <position>GK</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Gary NEVILLE</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Ashley COLE</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Steven GERRARD</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>John TERRY</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Sol CAMPBELL</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>David BECKHAM</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Paul SCHOLES</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Wayne ROONEY</name>
+ <position>FW</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Michael OWEN</name>
+ <position>FW</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Frank LAMPARD</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Wayne BRIDGE</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Paul ROBINSON</name>
+ <position>GK</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Phil NEVILLE</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Ledley KING</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Jamie CARRAGHER</name>
+ <position>DF</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Nicky BUTT</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Owen HARGREAVES</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Joe COLE</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Kieron DYER</name>
+ <position>MD</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Emile HESKEY</name>
+ <position>FW</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Ian WALKER</name>
+ <position>GK</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Darius VASSELL</name>
+ <position>FW</position>
+ <country>EN</country>
+ </player>
+ <player>
+ <name>Edwin VAN DER SAR</name>
+ <position>GK</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Michael REIZIGER</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Jaap STAM</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Wilfred BOUMA</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Giovanni VAN BRONCKHORST</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Phillip COCU</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Andy VAN DER MEYDE</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Edgar DAVIDS</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Patrick KLUIVERT</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Ruud VAN NISTELROOIJ</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Rafael VAN DER VAART</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Roy MAKAAY</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Sander WESTERVELD</name>
+ <position>GK</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Wesley SNEIJDER</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Frank DE BOER</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Marc OVERMARS</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Pierre VAN HOOIJDONK</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>John HEITINGA</name>
+ <position>DF</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Arjen ROBBEN</name>
+ <position>FW</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Clarence SEEDORF</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Paul BOSVELT</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Boudewijn ZENDEN</name>
+ <position>MD</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Ronald WATERREUS</name>
+ <position>GK</position>
+ <country>NL</country>
+ </player>
+ <player>
+ <name>Thomas SØRENSEN</name>
+ <position>GK</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Kasper BØGELUND</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>René HENRIKSEN</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Martin LAURSEN</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Niclas JENSEN</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Thomas HELVEG</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Thomas GRAVESEN</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Jesper GRØNKJÆR</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Jon Dahl TOMASSON</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Martin JØRGENSEN</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Ebbe SAND</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Thomas KAHLENBERG</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Per KRØLDRUP</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Claus JENSEN</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Daniel JENSEN</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Peter SKOV-JENSEN</name>
+ <position>GK</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Christian POULSEN</name>
+ <position>MD</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Brian PRISKE</name>
+ <position>DF</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Dennis ROMMEDAHL</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Kenneth PEREZ</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Peter MADSEN</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Stephan ANDERSEN</name>
+ <position>GK</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Peter LOVENKRANDS</name>
+ <position>FW</position>
+ <country>DK</country>
+ </player>
+ <player>
+ <name>Oliver KAHN</name>
+ <position>GK</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Andreas HINKEL</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Arne FRIEDRICH</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Christian WÖRNS</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Jens NOWOTNY</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Frank BAUMANN</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Bastian SCHWEINSTEIGER</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Dietmar HAMANN</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Fredi BOBIC</name>
+ <position>FW</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Kevin KURANYI</name>
+ <position>FW</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Miroslav KLOSE</name>
+ <position>FW</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Jens LEHMANN</name>
+ <position>GK</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Michael BALLACK</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Thomas BRDARIC</name>
+ <position>FW</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Sebastian KEHL</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Jens JEREMIES</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Christian ZIEGE</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Fabian ERNST</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Bernd SCHNEIDER</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Lukas PODOLSKI</name>
+ <position>FW</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Philipp LAHM</name>
+ <position>DF</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Torsten FRINGS</name>
+ <position>MD</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Timo HILDEBRAND</name>
+ <position>GK</position>
+ <country>DE</country>
+ </player>
+ <player>
+ <name>Andreas ISAKSSON</name>
+ <position>GK</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Teddy LUCIC</name>
+ <position>DF</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Olof MELLBERG</name>
+ <position>DF</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Johan MJÄLLBY</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Erik EDMAN</name>
+ <position>DF</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Tobias LINDEROTH</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Mikael NILSSON</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Anders SVENSSON</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Fredrik LJUNGBERG</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Zlatan IBRAHIMOVIC</name>
+ <position>FW</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Henrik LARSSON</name>
+ <position>FW</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Magnus HEDMAN</name>
+ <position>GK</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Petter HANSSON</name>
+ <position>DF</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Alexander ÖSTLUND</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Andreas JAKOBSSON</name>
+ <position>DF</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Kim KÄLLSTRÖM</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Anders ANDERSSON</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Mattias JONSON</name>
+ <position>FW</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Pontus FARNERUD</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Marcus ALLBÄCK</name>
+ <position>FW</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Christian WILHELMSSON</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Erik WAHLSTEDT</name>
+ <position>MD</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Magnus KIHLSTEDT</name>
+ <position>GK</position>
+ <country>SE</country>
+ </player>
+ <player>
+ <name>Aleksandrs KOLINKO</name>
+ <position>GK</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Igors STEPANOVS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Vitalis ASTAFJEVS</name>
+ <position>MD</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Mihails ZEMLINSKIS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Jurijs LAIZANS</name>
+ <position>MD</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Olegs BLAGONADEZDINS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Aleksandrs ISAKOVS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Imants BLEIDELIS</name>
+ <position>MD</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Maris VERPAKOVSKIS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Andrejs RUBINS</name>
+ <position>MD</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Andrejs PROHORENKOVS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Andrejs PIEDELS</name>
+ <position>GK</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Jurgis PUCINSKIS</name>
+ <position>MD</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Valentins LOBANOVS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Maris SMIRNOVS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Dzintars ZIRNIS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Marians PAHARS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Igors KORABLOVS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Andrejs ŠTOLCERS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Andrejs PAVLOVS</name>
+ <position>GK</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Mihails MIHOLAPS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Arturs ZAKRESEVSKIS</name>
+ <position>DF</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Vits RIMKUS</name>
+ <position>FW</position>
+ <country>LV</country>
+ </player>
+ <player>
+ <name>Petr CECH</name>
+ <position>GK</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Zdenek GRYGERA</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Pavel MAREŠ</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Tomáš GALÁSEK</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>René BOLF</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Marek JANKULOVSKI</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Vladimír ŠMICER</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Karel POBORSKÝ</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Jan KOLLER</name>
+ <position>FW</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Tomáš ROSICKÝ</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Pavel NEDVED</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Vratislav LOKVENC</name>
+ <position>FW</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Martin JIRÁNEK</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Štepán VACHOUŠEK</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Milan BAROŠ</name>
+ <position>FW</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Jaromír BLAZEK</name>
+ <position>GK</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Tomáš HÜBSCHMAN</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Marek HEINZ</name>
+ <position>FW</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Roman TÝCE</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Jaroslav PLAŠIL</name>
+ <position>MD</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Tomáš UJFALUŠI</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>David ROZEHNAL</name>
+ <position>DF</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Antonín KINSKÝ</name>
+ <position>GK</position>
+ <country>CZ</country>
+ </player>
+ <player>
+ <name>Sergei OVCHINNIKOV</name>
+ <position>GK</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Vladislav RADIMOV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri SYCHEV</name>
+ <position>FW</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Aleksei SMERTIN</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Andrei KARIAKA</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Igor SEMSHOV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Marat IZMAILOV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Rolan GUSEV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri BULYKIN</name>
+ <position>FW</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Aleksandr MOSTOVOI</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Aleksandr KERZHAKOV</name>
+ <position>FW</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Viacheslav MALAFEEV</name>
+ <position>GK</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Roman SHARONOV</name>
+ <position>DF</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Aleksandr ANYUKOV</name>
+ <position>DF</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri ALENICHEV</name>
+ <position>FW</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Vadim EVSEEV</name>
+ <position>DF</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri SENNIKOV</name>
+ <position>DF</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri KIRICHENKO</name>
+ <position>FW</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Vladimir BYSTROV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Dmitri LOSKOV</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Aleksei BUGAYEV</name>
+ <position>DF</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Evgeni ALDONIN</name>
+ <position>MD</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Igor AKINFEEV</name>
+ <position>GK</position>
+ <country>RU</country>
+ </player>
+ <player>
+ <name>Zdravko ZDRAVKOV</name>
+ <position>GK</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Vladimir IVANOV</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Rosen KIRILOV</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Ivailo PETKOV</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Zlatomir ZAGORCIC</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Kiril KOTEV</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Daniel BORIMIROV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Milen PETKOV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Dimitar BERBATOV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Velizar DIMITROV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Zdravko LAZAROV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Stoian KOLEV</name>
+ <position>GK</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Georgi PEEV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Georgi CHILIKOV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Marian HRISTOV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Vladimir MANCHEV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Martin PETROV</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Predrag PAZIN</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Stilian PETROV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Valeri BOJINOV</name>
+ <position>MD</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Zoran JANKOVIC</name>
+ <position>FW</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Ilian STOIANOV</name>
+ <position>DF</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Dimitar IVANKOV</name>
+ <position>GK</position>
+ <country>BG</country>
+ </player>
+ <player>
+ <name>Antonios NIKOPOLIDIS</name>
+ <position>GK</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Giourkas SEITARIDIS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Stylianos VENETIDIS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Nikolaos DABIZAS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Traianos DELLAS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Angelos BASINAS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Theodoros ZAGORAKIS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Stylianos GIANNAKOPOULOS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Angelos CHARISTEAS</name>
+ <position>FW</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Vassilios TSIARTAS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Themistoklis NIKOLAIDIS</name>
+ <position>FW</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Konstantinos CHALKIAS</name>
+ <position>GK</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Theofanis KATERGIANNAKIS</name>
+ <position>GK</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Panagiotis FYSSAS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Zisis VRYZAS</name>
+ <position>FW</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Pantelis KAFES</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Georgios GEORGIADIS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Ioannis GOUMAS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Mihalis KAPSIS</name>
+ <position>DF</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Georgios KARAGOUNIS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Konstantinos KATSOURANIS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Dimitrios PAPADOPOULOS</name>
+ <position>FW</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Vassilios LAKIS</name>
+ <position>MD</position>
+ <country>GR</country>
+ </player>
+ <player>
+ <name>Vladimir VASILJ</name>
+ <position>GK</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Mario TOKIC</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Josip ŠIMUNIC</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Stjepan TOMAS</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Igor TUDOR</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Boris ŽIVKOVIC</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Milan RAPAIC</name>
+ <position>FW</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Darijo SRNA</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Dado PRŠO</name>
+ <position>FW</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Niko KOVAC</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Tomislav ŠOKOTA</name>
+ <position>FW</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Tomislav BUTINA</name>
+ <position>GK</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Dario ŠIMIC</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Mato NERETLJAK</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Jerko LEKO</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Marko BABIC</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Ivan KLASNIC</name>
+ <position>FW</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Ivica OLIC</name>
+ <position>FW</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Ivica MORNAR</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Giovani ROSSO</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Robert KOVAC</name>
+ <position>DF</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Nenad BJELICA</name>
+ <position>MD</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Joseph DIDULICA</name>
+ <position>GK</position>
+ <country>HR</country>
+ </player>
+ <player>
+ <name>Jörg STIEL</name>
+ <position>GK</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Bernt HAAS</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Bruno BERNER</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Stéphane HENCHOZ</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Murat YAKIN</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Johann VOGEL</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Ricardo CABANAS</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Raphael WICKY</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Alexander FREI</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Hakan YAKIN</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Stéphane CHAPUISAT</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Pascal ZUBERBÜHLER</name>
+ <position>GK</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Marco ZWYSSIG</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Ludovic MAGNIN</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Daniel GYGAX</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Fabio CELESTINI</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Christoph SPYCHER</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Benjamin HUGGEL</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Tranquillo BARNETTA</name>
+ <position>MD</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Patrick MÜLLER</name>
+ <position>DF</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Milaim RAMA</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Johan VONLANTHEN</name>
+ <position>FW</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Sébastien ROTH</name>
+ <position>GK</position>
+ <country>CH</country>
+ </player>
+ <player>
+ <name>Gianluigi BUFFON</name>
+ <position>GK</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Christian PANUCCI</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Massimo ODDO</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Cristiano ZANETTI</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Fabio CANNAVARO</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Matteo FERRARI</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Alessandro DEL PIERO</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Gennaro GATTUSO</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Christian VIERI</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Francesco TOTTI</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Bernardo CORRADI</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Francesco TOLDO</name>
+ <position>GK</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Alessandro NESTA</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Stefano FIORE</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Giuseppe FAVALLI</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Mauro CAMORANESI</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Marco DI VAIO</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Antonio CASSANO</name>
+ <position>FW</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Gianluca ZAMBROTTA</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Simone PERROTTA</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Andrea PIRLO</name>
+ <position>MD</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Angelo PERUZZI</name>
+ <position>GK</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Marco MATERAZZI</name>
+ <position>DF</position>
+ <country>IT</country>
+ </player>
+ <player>
+ <name>Santiago CAÑIZARES</name>
+ <position>GK</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Joan CAPDEVILA</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Carlos MARCHENA</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>David ALBELDA</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Carles PUYOL</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Iván HELGUERA</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>RAÚL González</name>
+ <position>FW</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Rubén BARAJA</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Fernando TORRES</name>
+ <position>FW</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Fernando MORIENTES</name>
+ <position>FW</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Albert LUQUE</name>
+ <position>FW</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>García GABRI</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Daniel ARANZUBIA</name>
+ <position>GK</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>VICENTE Rodríguez</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>RAÚL BRAVO</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>XABI ALONSO</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Joseba ETXEBERRIA</name>
+ <position>FW</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>CÉSAR Martín</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>SÁNCHEZ Joaquín</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Hernández XAVI</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Juan Carlos VALERÓN</name>
+ <position>MD</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Gutiérrez JUANITO</name>
+ <position>DF</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Iker CASILLAS</name>
+ <position>GK</position>
+ <country>ES</country>
+ </player>
+ <player>
+ <name>Mickaël LANDREAU</name>
+ <position>GK</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Jean-Alain BOUMSONG</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Bixente LIZARAZU</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Patrick VIEIRA</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>William GALLAS</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Claude MAKELELE</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Robert PIRES</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Marcel DESAILLY</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Louis SAHA</name>
+ <position>FW</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Zinédine ZIDANE</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Sylvain WILTORD</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Thierry HENRY</name>
+ <position>FW</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Mikaël SILVESTRE</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Jérôme ROTHEN</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Lilian THURAM</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Fabien BARTHEZ</name>
+ <position>GK</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Olivier DACOURT</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Benoît PEDRETTI</name>
+ <position>MD</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Willy SAGNOL</name>
+ <position>DF</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>David TREZEGUET</name>
+ <position>FW</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Steve MARLET</name>
+ <position>FW</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Sidney GOVOU</name>
+ <position>FW</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name>Grégory COUPET</name>
+ <position>GK</position>
+ <country>FR</country>
+ </player>
+ <player>
+ <name> RICARDO </name>
+ <position>GK</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>PAULO FERREIRA</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>RUI JORGE</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>JORGE ANDRADE</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>Fernando COUTO</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>COSTINHA </name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>LUÍS FIGO</name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>PETIT</name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>PAULETA </name>
+ <position>FW</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>RUI COSTA</name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>Sabrosa SIMÃO</name>
+ <position>FW</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>QUIM </name>
+ <position>GK</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>MIGUEL </name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>NUNO VALENTE</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>BETO</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>RICARDO CARVALHO</name>
+ <position>DF</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>Cristiano RONALDO</name>
+ <position>FW</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>MANICHE</name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>TIAGO </name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>DECO </name>
+ <position>MD</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>NUNO GOMES</name>
+ <position>FW</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>MOREIRA</name>
+ <position>GK</position>
+ <country>PT</country>
+ </player>
+ <player>
+ <name>Hélder POSTIGA</name>
+ <position>FW</position>
+ <country>PT</country>
+ </player>
+</players>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamBind.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<fb:context xmlns:fb="http://apache.org/cocoon/forms/1.0#binding" path="/">
+ <fb:repeater id="teammembers" parent-path="." row-path="team">
+ <!--fb:identity>
+ <fb:value id="ID" path="@id"/>
+ </fb:identity -->
+ <fb:on-bind>
+ <!-- executed on updates AND right after the insert -->
+ <fb:value id="position" path="position"/>
+ <fb:value id="memberId" path="memberId"/>
+ <fb:value id="country" path="country"/>
+ </fb:on-bind>
+ <fb:on-delete-row>
+ <fb:delete-node/>
+ </fb:on-delete-row>
+ <fb:on-insert-row>
+ <fb:insert-bean
+ classname="org.apache.cocoon.forms.samples.dreamteam.TeamMember"
+ addmethod="addMember"/>
+ </fb:on-insert-row>
+ </fb:repeater>
+</fb:context>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamDef.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<fd:form xmlns:fd="http://apache.org/cocoon/forms/1.0#definition">
+ <fd:widgets>
+ <fd:repeater id="teammembers">
+ <fd:widgets>
+ <!-- The ID is here to keep track of row creation order,
+ which can have no relation with row index when the users
+ used move up/down -->
+ <fd:field id="ID">
+ <fd:label>ID</fd:label>
+ <fd:datatype base="long"/>
+ </fd:field>
+ <fd:field id="position">
+ <fd:label>Position</fd:label>
+ <fd:datatype base="string"/>
+ <fd:selection-list dynamic="true" type="flow-jxpath"
+ list-path="positionList" value-path="value"
+ label-path="label"/>
+ <fd:on-value-changed>
+ <fd:javascript>
+ // this script can be found in team.js
+ updateNameWidget(event);
+ </fd:javascript>
+ </fd:on-value-changed>
+ </fd:field>
+ <fd:field id="memberId">
+ <fd:label>Name</fd:label>
+ <fd:datatype base="string"/>
+ <fd:selection-list dynamic="true" type="flow-jxpath"
+ list-path="nameList" value-path="memberId"
+ label-path="name"/>
+ <fd:on-value-changed>
+ <fd:javascript>
+ // this script can be found in team.js
+ updateCountryWidget(event);
+ </fd:javascript>
+ </fd:on-value-changed>
+
+ </fd:field>
+ <fd:output id="country">
+ <fd:label>Country</fd:label>
+ <fd:datatype base="string"/>
+ </fd:output>
+ <fd:booleanfield id="select">
+ <fd:label>Select</fd:label>
+ </fd:booleanfield>
+
+ <fd:row-action id="add" action-command="add-after">
+ <fd:label>+</fd:label>
+ </fd:row-action>
+ <fd:row-action id="up" action-command="move-up">
+ <fd:label>^</fd:label>
+ </fd:row-action>
+ <fd:row-action id="down" action-command="move-down">
+ <fd:label>v</fd:label>
+ </fd:row-action>
+ <fd:row-action id="delete" action-command="delete">
+ <fd:label>X</fd:label>
+ </fd:row-action>
+ </fd:widgets>
+ <fd:validation>
+ <!-- This demonstrates validating a repeater: we check here if all
+ teammembers are distinct.
+ A repeater cannot itself display a validation error, and
+ therefore sets a validation error on a field in the
+ offending row. -->
+ <fd:javascript>
+ return validateRepeater(widget);
+ </fd:javascript>
+ </fd:validation>
+ </fd:repeater>
+
+ <fd:repeater-action id="addmember"
+ action-command="add-row" repeater="teammembers">
+ <fd:label>Add player</fd:label>
+ <fd:on-action>
+ <fd:javascript>
+ // this script can be found in team.js
+ updateRowIDcounter(event);
+ </fd:javascript>
+ </fd:on-action>
+ </fd:repeater-action>
+ <fd:repeater-action id="removemember" action-command="delete-rows"
+ repeater="teammembers" select="select">
+ <fd:label>Remove selected players</fd:label>
+ </fd:repeater-action>
+ </fd:widgets>
+</fd:form>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,243 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
xmlns:cinclude="http://apache.org/cocoon/include/1.0"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
xmlns:ft="http://apache.org/cocoon/forms/1.0#template"
xmlns:fi="http://apache.org/cocoon/forms/1.0#instance">
+ <!-- Import the macros that define CForms template elements -->
+ <jx:import
uri="resource://org/apache/cocoon/forms/generation/jx-macros.xml"/>
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <link href="local-resources/dreamteam.css" type="text/css"
rel="stylesheet"/>
+ <title>The Dream Team</title>
+ </head>
+ <body>
+ <h1>The Dream Team</h1>
+ <p>Now is the time to choose your dream team.</p>
+ <div class="legend">
+ <table>
+ <tr>
+ <td>
+ <img src="resources/move_up.gif"/>
+ </td>
+ <td>Move this row 1 up</td>
+ </tr>
+ <tr>
+ <td>
+ <img src="resources/move_down.gif"/>
+ </td>
+ <td>Move this row 1 down</td>
+ </tr>
+ <tr>
+ <td>
+ <img src="resources/delete.gif"/>
+ </td>
+ <td>Delete this row</td>
+ </tr>
+ <tr>
+ <td>
+ <img src="resources/new.gif"/>
+ </td>
+ <td>Add a new row below this row</td>
+ </tr>
+ </table>
+ </div>
+ <ft:form-template action="#{$continuation/id}.continue" method="POST">
+ <jx:choose>
+ <jx:when test="${form.getChild('teammembers').getSize() == 0}">
+ <p>
+ <strong> There is no team yet. </strong>
+ </p>
+ </jx:when>
+ <jx:otherwise>
+ <table>
+ <thead>
+ <tr>
+ <td class="tableheader">
+ <ft:repeater-widget-label id="teammembers"
widget-id="position"/>
+ </td>
+ <td class="tableheader">
+ <ft:repeater-widget-label id="teammembers"
widget-id="memberId"/>
+ </td>
+ <td class="tableheader">
+ <ft:repeater-widget-label id="teammembers"
widget-id="country"/>
+ </td>
+ <td class="tableheader">
+ <ft:repeater-widget-label id="teammembers"
widget-id="select"/>
+ </td>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- The contents of the repeater-widget element
+ is a template that will be applied to each
+ row in the repeater.
+ -->
+ <ft:repeater-widget id="teammembers">
+ <tr>
+ <td>
+ <ft:widget id="position">
+ <fi:styling submit-on-change="true"/>
+ </ft:widget>
+ </td>
+ <td>
+ <ft:widget id="memberId">
+ <fi:styling submit-on-change="true"/>
+ </ft:widget>
+ </td>
+ <td>
+ <i18n:text>
+ <ft:widget id="country"/>
+ </i18n:text>
+ </td>
+ <td>
+ <!-- Don't display the "move up" button
+ on the first row
+ -->
+ <jx:choose>
+ <jx:when test="${repeaterLoop.first}">
+ <img src="resources/blank_btn.gif"/>
+ </jx:when>
+ <jx:otherwise>
+ <ft:widget id="up">
+ <fi:styling type="image"
src="resources/move_up.gif"/>
+ </ft:widget>
+ </jx:otherwise>
+ </jx:choose>
+ <!-- Don't display the "move down" button
+ on the last row
+ -->
+ <jx:choose>
+ <jx:when test="${repeaterLoop.last}">
+ <img src="resources/blank_btn.gif"/>
+ </jx:when>
+ <jx:otherwise>
+ <ft:widget id="down">
+ <fi:styling type="image"
src="resources/move_down.gif"/>
+ </ft:widget>
+ </jx:otherwise>
+ </jx:choose>
+ <ft:widget id="delete">
+ <fi:styling type="image" src="resources/delete.gif"/>
+ </ft:widget>
+ <ft:widget id="add">
+ <fi:styling type="image" src="resources/new.gif"/>
+ </ft:widget>
+ <ft:widget id="select"/>
+ </td>
+ </tr>
+ </ft:repeater-widget>
+ </tbody>
+ </table>
+ </jx:otherwise>
+ </jx:choose>
+ <table>
+ <tr>
+ <td style="border: 0px solid;">
+ <ft:widget id="addmember"/>
+ </td>
+ <td style="border: 0px solid;">
+ <jx:if test="${widget.getChild('teammembers').getSize() > 0}">
+ <ft:widget id="removemember"/>
+ </jx:if>
+ </td>
+ </tr>
+ <tr>
+ <td style="border: 0px solid;">
+ <input type="submit" value="Submit"/>
+ </td>
+ <td style="border: 0px solid;"/>
+ </tr>
+ </table>
+ </ft:form-template>
+ <p class="developer-header"> Developer Notes </p>
+ <h2>Page definition</h2>
+ <p class="developer-note"> This page is defined in <ul
class="developer-note">
+ <li>
+ <b>teamTemplate.jx</b>, the form template, </li>
+ <li>
+ <b>teamDef.xml</b>, the widget definitions and</li>
+ <li>
+ <b>teamBind.xml</b>, the widget binding to Java Beans.</li>
+ </ul>
+ <p class="developer-note"> The pipeline calls the function
<i>prot_buildTeam</i> in <b>team.js</b>. There is no
+ naming rule for flow functions, but adding a prefix ('prot_') as a
simple kind of security measure to prevent
+ outsiders from directly calling the function. Security by obscurity
you might call it. </p>
+ <h2>What happens?</h2>
+ <p class="developer-note"> In <i>prot_buildTeam</i> a list of
'positions' is generated from the information in
+ the Manager class and passed onto the form. </p>
+ <p class="developer-note"> Below is the definition of the
<i>position</i> widget. </p>
+ <div class="code">
+ <div class="codeIndent"> <fd:field id="position"> <div
class="codeIndent">
+ <fd:label>Position</fd:label> </div>
+ <div class="codeIndent"> <fd:datatype base="string"/> </div>
+ <div class="codeIndent"> <fd:selection-list dynamic="true"
type="flow-jxpath"
+ list-path="positionList" value-path="value"
label-path="label"/> </div>
+ <div class="codeIndent"> <fd:on-value-changed> <div
class="codeIndent">
+ <fd:javascript> <div class="codeIndent"> // this script
can be found in team.js<br/>
+ updateNameWidget(event); </div> </fd:javascript> </div>
+ </fd:on-value-changed> </div> </fd:field> </div>
+ </div>
+ <p class="developer-note"> The widget <i>position</i> has a
selection-list of type <i>flow-jxpath</i>. The other
+ attributes define the list to use: </p>
+ <ul class="developer-note">
+ <li>
+ <i>list-path</i> holds the name of the list that is passed in the
"viewData" attribute </li>
+ <li>
+ <i>value-path</i> holds the name of the variable or method that
returns the value to use </li>
+ <li>
+ <i>label-path</i> holds the name of the variable or method that
returns the label for the value </li>
+ </ul>
+ </p>
+ <h2>Internationalization</h2>
+ <p class="developer-note"> The function also shows how to build this
list with localized (i.e. i18n) labels. </p>
+ <div class="code">
+ <div class="codeIndent"> ...<br/> // key = key code for position<br/>
// set the label to the localized message
+ using i18n<br/> positionList[i + 1] = {value: key, label: new
I18nMessage(key)};<br/> ... </div>
+ </div>
+ <p class="developer-note"> Adding the appropriate code to switch locale
is left as an exercise. :-) </p>
+ <h2>Dependency between widgets</h2>
+ <p class="developer-note"> The section <i>on-value-changed</i> holds the
javascript that handles the dependency.
+ When the value of the <i>positionlist</i> changes, the <i>memberId</i>
widget should get a new list of
+ names.<br/> The script that handles this update can be entered
directly between the <i>javascript</i> tags, but
+ adding a descriptive function name there and moving the function to a
separate javascript file keeps the widget
+ definition file clearer. Note the <i>event</i> parameter.<br/>
Remember to add the
+ <i>submit-on-change="true"</i> attribute to the styling tag! </p>
+ <h2>Repeater validation</h2>
+ <p class="developer-note"> This repeater also has a repeater validation
section, which prevents using duplicate
+ names. Again, the script can be entered directly in the widget
definition file, but it can also be added to a
+ function that is placed in a separate javascript file. <b>Note:</b>
this function takes <i>widget</i> (the
+ current repeater) as parameter and <b>MUST</b> return a boolean value
(true = success).<br/> The repeater
+ validation function is called when the <i>Submit</i> button is
pressed. If a validation error occurs, the first
+ invalid row will be marked with a blue <font style="color:
blue">!</font>. </p>
+ <h2>Some observations</h2>
+ <p class="developer-note"> The samples provide a great set of XSL files
to convert the template and styling tags
+ of the widgets into HTML. They start with
<b>forms-samples-styling.xsl</b> and can be found in the
+ <i>samples/blocks/forms/resources</i> folders. </p>
+ <p class="developer-note">
+ <b>Note:</b> when you use these XSL files, remember to use them as the
last transformation in your pipeline, or
+ make sure they find the appropriate tags to add some scripts to the
html <i><head></i> and
+ <i><body></i> tags. Especially without a reference to the
<b>forms-lib.js</b> file, the
+ on-value-changed event will not be sent to the server and therefore no
script is executed. </p>
+ <p class="developer-note">
+ <b>Note:</b> At this moment (2004/10/20) a bug exists that throws a
NullPointerException when the javascript in
+ the validation section is executed with the Rhino debugger enabled!
</p>
+ <h2>When everything is valid</h2>
+ <p class="developer-note"> When <i>Submit</i> is pressed, and all rows
validate, the <i>prot_buildTeam</i>
+ function takes over and hands the selected team to the Manager class
for further processing. Finally the
+ function passes flow onto the <i>showteam</i> pipeline. </p>
+ </body>
+ </html>
+</jx:template>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/flow/team.js
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,202 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/v3/Form.js");
+importClass (Packages.org.apache.cocoon.forms.util.I18nMessage);
+
+var manager =
Packages.org.apache.cocoon.forms.samples.dreamteam.Manager.getManager();
+
+function initDreamTeamChooser() {
+ var documentURI = cocoon.parameters["documentURI"];
+ // parse the document to a DOM-tree
+ var document = loadDocument(documentURI);
+ // initialise the Manager
+ manager.readPlayers(document);
+ cocoon.sendPage("home.form");
+}
+
+function prot_showTeam() {
+ var persons = manager.getDreamTeam();
+ if(persons == null || persons == undefined) {
+ var size = 0;
+ persons = new Packages.java.util.ArrayList(0);
+ }
+ else {
+ var size = persons.getTeam().size();
+ }
+ var viewData = {
+ list : persons,
+ size : size
+ };
+ cocoon.sendPage("showTeam.form", viewData);
+} // showTeam
+
+function prot_buildTeam() {
+ var formDisplay = "team.form";
+ var formDef = "content/teamDef.xml";
+ var formBind = "content/teamBind.xml"
+
+ var allPersons = manager.getAllPersonsByPosition();
+ var list = new Packages.org.apache.cocoon.forms.samples.dreamteam.Team();
+
+ var keys = allPersons.keySet().toArray();
+ var key;
+ var positionList = new Array();
+ positionList[0] = {value:"", label: " "};
+ for (var i = 0; i < keys.length; i++) {
+ key = keys[i];
+ // set the label to the localized message using i18n
+ positionList[i + 1] = {value: key, label: new I18nMessage(key)};
+ }
+ /*
+ // add the first player to the team
+ var firstPlayer = allPersons.get(keys[0]).getTeam().get(0);
+ var member = new Packages.org.apache.cocoon.samples.dreamteam.TeamMember();
+ member.position = firstPlayer.position;
+ member.memberId = firstPlayer.memberId;
+ member.name = firstPlayer.name;
+ member.country = firstPlayer.country;
+ list.addMember(member);
+ */
+
+ var form = new Form(formDef);
+ form.setAttribute("counter", new java.lang.Long(0));
+ form.setAttribute("everyone", allPersons);
+
+ form.createBinding(formBind);
+ form.load(list);
+
+ var viewData = {
+ list : list,
+ positionList: positionList
+ };
+ form.showForm(formDisplay, viewData);
+ form.save(list);
+ manager.buildDreamTeam(list);
+ // next page presenting the team
+ cocoon.sendPage("showteam.html");
+}
+
+
+// function used in the 'position' widget to change the selection-list of the
'memberId' widget
+// that displays the names
+
+function updateNameWidget(event) {
+ var value = event.source.value;
+ var memberIdwidget = event.source.lookupWidget("../memberId");
+ if (value != null) {
+ // Get the corresponding names list
+ var form = event.source.form;
+ var everyone = form.getAttribute("everyone");
+ if (everyone != null) {
+ nameList = everyone.get(value).team;
+ memberIdwidget.setSelectionList(nameList, "memberId", "name");
+ // Always set the name value to the first in the list.
+ // Note that it will also fire an event on the
+ // "name" widget if it already had a value.
+ memberIdwidget.setValue(nameList.get(0).memberId);
+ }
+ } else {
+ // Set an empty selection list
+ memberIdwidget.setSelectionList(new
Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("Choose position
first"));
+ // Always set the name value to null.
+ // Note that it will also fire an event on the
+ // "name" widget if it already had a value.
+ memberIdwidget.setValue(null);
+ }
+}
+
+function updateCountryWidget(event) {
+ print("memberId changed from " + event.oldValue + " to " + event.newValue);
+ var value = event.source.value;
+ var form = event.source.form;
+ var everyone = form.getAttribute("everyone");
+ var position = event.source.lookupWidget("../position").value;
+ var team = everyone.get(position);
+ var member = team.getMember(value);
+ if (member != null) {
+ var country = member.getCountry();
+ var countrywidget = event.source.lookupWidget("../country");
+ countrywidget.setValue(country);
+ }
+}
+
+function updateRowIDcounter(event) {
+ // Increment the row creation ID counter
+ // (it has been initialized in the flowscript when the
+ // form was created).
+ // This shows how attributes can be used as a communication
+ // means between application logic and widget event handlers.
+
+ var form = event.source.form;
+ var count = new java.lang.Long(form.getAttribute("counter").longValue() + 1);
+ form.setAttribute("counter", count);
+ repeater = form.getChild("teammembers");
+ repeater.getRow(repeater.getSize() - 1).getChild("ID").setValue(count);
+}
+
+function validateRepeater(widget) {
+ // This demonstrates validating a repeater: we check here if all
+ // teammembers are distinct.
+ // A repeater cannot itself display a validation error, and therefore
+ // sets a validation error on a field in the offending row.
+ var list = new java.util.ArrayList();
+ var success = true;
+ // Iterate on all rows
+
+ for (var i = 0; i < widget.size; i++) {
+ // Get the row
+ var row = widget.getRow(i);
+ // Compute a key combining the first and last name
+ var key = row.lookupWidget("memberId").value;
+ if (list.contains(key)) {
+ // already in the list
+ row.lookupWidget("memberId").setValidationError(
+ new Packages.org.apache.cocoon.forms.
+ validation.ValidationError("Duplicate player", false));
+ success = false;
+ break; // no need to continue
+ }
+ // Add the current row's key to the list
+ list.add(key);
+ }
+
+ // Must return true/false
+ return success;
+}
+
+
+/*
+ This function is only used to read in an XML file and pass it on as DOM
Document for further processing.
+*/
+function loadDocument(uri) {
+ var parser = null;
+ var source = null;
+ var resolver = null;
+ try {
+ parser =
cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
+ resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
+ source = resolver.resolveURI(uri);
+ var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
+ is.setSystemId(source.getURI());
+ return parser.parseDocument(is);
+ } finally {
+ if (source != null)
+ resolver.release(source);
+ cocoon.releaseComponent(parser);
+ cocoon.releaseComponent(resolver);
+ }
+}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<catalogue>
+ <message key="GK">Goalkeeper</message>
+ <message key="MD">Midfielder</message>
+ <message key="FW">Forward</message>
+ <message key="DF">Defense</message>
+ <message key="EN">England</message>
+ <message key="NL">Netherlands</message>
+ <message key="DK">Denmark</message>
+ <message key="DE">Germany</message>
+ <message key="SE">Sweden</message>
+ <message key="LV">Latvia</message>
+ <message key="CZ">Czech Republic</message>
+ <message key="RU">Russia</message>
+ <message key="BG">Bulgaria</message>
+ <message key="GR">Greece</message>
+ <message key="HR">Croatia</message>
+ <message key="CH">Switzerland</message>
+ <message key="IT">Italy</message>
+ <message key="ES">Spain</message>
+ <message key="FR">France</message>
+ <message key="PT">Portugal</message>
+</catalogue>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<catalogue>
+ <message key="GK">Torwart</message>
+ <message key="MD">Mittelfeld Spieler</message>
+ <message key="FW">St�rmer</message>
+ <message key="DF">Verteidiger</message>
+ <message key="EN">England</message>
+ <message key="NL">Niederlande</message>
+ <message key="DK">D�nemark</message>
+ <message key="DE">Deutschland</message>
+ <message key="SE">Schweden</message>
+ <message key="LV">Lettland</message>
+ <message key="CZ">Tschechische Republik</message>
+ <message key="RU">Russland</message>
+ <message key="BG">Bulgarien</message>
+ <message key="GR">Griechenland</message>
+ <message key="HR">Kroation</message>
+ <message key="CH">Schweiz</message>
+ <message key="IT">Italien</message>
+ <message key="ES">Spanien</message>
+ <message key="FR">Frankreich</message>
+ <message key="PT">Portugal</message>
+</catalogue>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- This catalogue file contains translations for DreamTeam messages. -->
+<catalogue>
+ <message key="GK">Portiere</message>
+ <message key="MD">Centrocampista</message>
+ <message key="FW">Attaccante</message>
+ <message key="DF">Difensore</message>
+ <message key="EN">Inghilterra</message>
+ <message key="NL">Paesi Bassi</message>
+ <message key="DK">Danimarca</message>
+ <message key="DE">Germania</message>
+ <message key="SE">Svezia</message>
+ <message key="LV">Lettonia</message>
+ <message key="CZ">Repubblica Ceca</message>
+ <message key="RU">Russia</message>
+ <message key="BG">Bulgaria</message>
+ <message key="GR">Grecia</message>
+ <message key="HR">Croazia</message>
+ <message key="CH">Svizzera</message>
+ <message key="IT">Italia</message>
+ <message key="ES">Spagna</message>
+ <message key="FR">Francia</message>
+ <message key="PT">Portogallo</message>
+</catalogue>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- This catalogue file contains translations for built-in CForms messages.
-->
+<catalogue>
+ <message key="general.field-required">This field is required.</message>
+
+ <message key="datatype.conversion-failed">Not a valid {0}.</message>
+ <message key="datatype.long">integer number</message>
+ <message key="datatype.date">date</message>
+
+ <message key="validation.string.exact-length">Should be exactly {0}
characters.</message>
+ <message key="validation.string.range-length">Should contain from {0} to {1}
characters.</message>
+ <message key="validation.string.min-length">Should be at least {0}
characters.</message>
+ <message key="validation.string.max-length">Should be at most {0}
characters.</message>
+ <message key="validation.string.regexp">Does not match the following regular
expression: {0}</message>
+
+ <message key="validation.string.invalidemail">This field does not contain a
valid email address</message>
+
+ <message key="validation.array.exact-valuecount">Exactly {0} item(s) should
be selected.</message>
+ <message key="validation.array.range-valuecount">At least {0} item(s) and at
most {1} items should be selected.</message>
+ <message key="validation.array.min-valuecount">At least {0} item(s) should
be selected.</message>
+ <message key="validation.array.max-valuecount">At most {0} items should be
selected.</message>
+
+ <message key="multivaluefield.conversionfailed">One of the selected values
is of an incorrect type.</message>
+
+ <message key="validation.numeric.range">Number should be in the range from
{0} to {1}.</message>
+ <message key="validation.numeric.min">Number should be greater than or equal
to {0}.</message>
+ <message key="validation.numeric.max">Number should be less than or equal to
{0}.</message>
+
+ <message key="validation.mod10">Mod 10 check failed.</message>
+
+
+ <message key="aggregatedfield.split-failed">Content of this field does not
match the following regular expression: {0}</message>
+
+</catalogue>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- This catalogue file contains translations for built-in CForms messages.
-->
+<catalogue xml:lang="nl_NL">
+ <message key="general.field-required">Dit veld moet ingevuld zijn.</message>
+
+ <message key="datatype.conversion-failed">Ongeldig {0}.</message>
+ <message key="datatype.long">integer getal</message>
+ <message key="datatype.date">datum</message>
+
+ <message key="validation.string.exact-length">Dit veld moet precies {0}
tekens lang
+ zijn.</message>
+ <message key="validation.string.range-length">Het aantal tekens moet
tussen de {0} en
+ {1} liggen.</message>
+ <message key="validation.string.min-length">Dit veld moet minimaal {0}
tekens lang
+ zijn.</message>
+ <message key="validation.string.max-length">Dit veld mag maximaal {0} tekens
lang
+ zijn.</message>
+ <message key="validation.string.regexp">De waarde komt niet overeen met
deze reg.
+ exp.: {0}</message>
+
+ <message key="validation.string.invalidemail">Dit is geen geldig email
adres</message>
+
+ <message key="validation.array.exact-valuecount">Kies precies {0}
elementen.</message>
+ <message key="validation.array.range-valuecount">Kies tussen de {0} en {1}
+ elementen.</message>
+ <message key="validation.array.min-valuecount">Kies minimaal {0}
elementen.</message>
+ <message key="validation.array.max-valuecount">Kies maximaal {0}
+ elementen.</message>
+
+ <message key="multivaluefield.conversionfailed">Een van de gekozen waarden
is
+ ongeldig.</message>
+
+ <message key="validation.numeric.range">De waarde moet liggen tussen {0}
en
+ {1}.</message>
+ <message key="validation.numeric.min">De waarde is minimaal {0}.</message>
+ <message key="validation.numeric.max">De waarde is maximaal {0}.</message>
+
+ <message key="validation.mod10">De Mod 10 verificatie is mislukt.</message>
+
+
+ <message key="aggregatedfield.split-failed">De waarde komt niet overeen met
deze reg.
+ exp.: {0}</message>
+
+</catalogue>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif
==============================================================================
Binary file. No diff available.
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,99 @@
+/** CSS stylesheet for the dreamteam sample, adjusted to match the supersonic
tour example app */
+
+body {
+ font-family: Georgia, Verdana, Arial;
+ font-style:normal;
+ font-variant:normal;
+ background-color: white;
+ background-image: none;
+ color: black;
+ padding-top:10px;
+ padding-bottom:10px;
+ padding-left:10px;
+ padding-right:10px;
+ }
+h1 {
+ font-size: 120%
+ font-weight: bold;
+ padding-left: 20px;
+ border-bottom: solid red 1px;
+}
+h2 {
+ border-bottom: solid #CCCCCC 1px;
+}
+
+img {
+ border: 0px solid;
+}
+table {
+ border: 0px solid;
+ margin:0px;
+ padding-top:10px;
+ padding-bottom:10px;
+ padding-left:10px;
+ padding-right:10px;
+ border-top: solid 0px #ccc;
+}
+
+.tableheader {
+ font-size:100%;
+ font-style:normal;
+ font-variant:normal;
+ font-weight:bold;
+ color:#000000;
+ padding: 5px;
+ border-bottom: 1px solid #ccc;
+}
+td {
+ font-size:100%;
+ font-style:normal;
+ font-variant:normal;
+ font-weight:normal;
+ color:#00000;
+ padding: 3px;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+.legend {
+ border: 1px solid #ccc;
+ font-size: 70%;
+ width: 50%;
+}
+
+.developer-header {
+ border-bottom: solid #CCCCCC 1px;
+ background-color: #FFFFCC;
+ font-weight:bold;
+}
+
+.developer-note {
+ font-height: 80%;
+}
+
+.code {
+ font-family: courier, monospaced;
+ font-size: 70%;
+ background: #FFFFCC;
+ margin-top: 1em;
+ padding: 2px;
+}
+
+.codeIndent {
+ margin-left: 1em;
+}
+
+
+.sort-arrow.descending {
+ background-image: url("images/sort_down.gif");
+}
+
+.sort-arrow.ascending {
+ background-image: url("images/sort_up.gif");
+}
+
+.sort-arrow {
+ width: 11px;
+ height: 11px;
+ margin: 0 2px;
+ cursor: hand;
+}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap
==============================================================================
--- (empty file)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/samples/dreamteam/sitemap.xmap
Thu Oct 28 08:41:49 2004
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+ <map:components>
+ <map:transformers default="xalan">
+ <map:transformer name="i18n"
src="org.apache.cocoon.transformation.I18nTransformer">
+ <catalogues default="dreamteam">
+ <catalogue id="forms" name="FormsMessages" location="messages"/>
+ <catalogue id="dreamteam" name="DreamTeamMessages"
location="messages"/>
+ </catalogues>
+ <cache-at-startup>true</cache-at-startup>
+ </map:transformer>
+ </map:transformers>
+ <!-- map:selectors default="browser">
+ <map:selector name="request-method"
+ src="org.apache.cocoon.selection.RequestMethodSelector"/>
+ </map:selectors -->
+ <map:pipes default="caching"/>
+ </map:components>
+ <map:views>
+ <map:view name="content" from-label="content">
+ <map:serialize type="xml"/>
+ </map:view>
+ <map:view from-label="content" name="pretty-content">
+ <map:transform src="context://stylesheets/system/xml2html.xslt"/>
+ <map:serialize type="html"/>
+ </map:view>
+ <map:view name="links" from-position="last">
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+ <!-- ========================================= -->
+ <!-- flow scripts -->
+ <!-- ========================================= -->
+ <map:flow language="javascript">
+ <map:script src="flow/team.js"/>
+ </map:flow>
+ <map:pipelines>
+ <map:pipeline>
+ <!-- ========================================= -->
+ <!-- flow script continuations -->
+ <!-- ========================================= -->
+ <map:match pattern="**/*.continue">
+ <map:call continuation="{2}"/>
+ </map:match>
+ <map:match pattern="*.continue">
+ <map:call continuation="{1}"/>
+ </map:match>
+ <!-- ========================================= -->
+ <!-- Redirections for page requests on homepage -->
+ <!-- ========================================= -->
+ <map:match pattern="">
+ <map:redirect-to session="true" uri="home.html"/>
+ </map:match>
+ <map:match pattern="/">
+ <map:redirect-to session="true" uri="home.html"/>
+ </map:match>
+ <map:match pattern="home.html">
+ <map:call function="initDreamTeamChooser">
+ <map:parameter name="documentURI" value="content/soccer.xml"/>
+ </map:call>
+ </map:match>
+ <!-- ========================================= -->
+ <!-- Actual pages -->
+ <!-- ========================================= -->
+ <map:match pattern="showteam.html">
+ <map:call function="prot_showTeam"/>
+ </map:match>
+ <map:match pattern="buildteam.html">
+ <map:call function="prot_buildTeam"/>
+ </map:match>
+ <!-- ========================================= -->
+ <!-- Pipelines to display the actual pages -->
+ <!-- ========================================= -->
+ <map:match pattern="team.form">
+ <map:generate type="jx" src="content/teamTemplate.jx"/>
+ <map:transform type="forms"/>
+ <map:transform src="../resources/forms-samples-styling.xsl">
+ <map:parameter name="resources-uri" value="resources"/>
+ </map:transform>
+ <map:transform
src="context://samples/common/style/xsl/html/adding-header.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="file" value="content/teamTemplate.jx"/>
+ </map:transform>
+ <map:transform type="i18n"/>
+ <map:serialize type="html"/>
+ </map:match>
+ <map:match pattern="showTeam.form">
+ <map:generate type="jx" src="content/showTeam.jx"/>
+ <map:transform
src="context://samples/common/style/xsl/html/adding-header.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="file" value="content/teamTemplate.jx"/>
+ </map:transform>
+ <map:transform type="i18n"/>
+ <map:serialize type="html"/>
+ </map:match>
+ <map:match pattern="home.form">
+ <map:generate type="jx" src="content/main.jx"/>
+ <map:transform
src="context://samples/common/style/xsl/html/adding-header.xsl">
+ <map:parameter name="contextPath" value="{request:contextPath}"/>
+ <map:parameter name="servletPath" value="{request:servletPath}"/>
+ <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
+ <map:parameter name="file" value="content/teamTemplate.jx"/>
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+ <!-- ========================================= -->
+ <!-- images -->
+ <!-- ========================================= -->
+ <map:match pattern="resources/*.gif">
+ <map:read mime-type="images/gif" src="../resources/{1}.gif"/>
+ </map:match>
+ <map:match pattern="flags/*.gif">
+ <map:read mime-type="images/gif" src="resources/flags/{1}.gif"/>
+ </map:match>
+ <!-- ========================================= -->
+ <!-- CSS stylesheets and JavaScript files -->
+ <!-- ========================================= -->
+ <map:match pattern="local-resources/*.css">
+ <map:read mime-type="text/css" src="resources/styles/{1}.css"/>
+ </map:match>
+ <map:match pattern="resources/*.css">
+ <map:read mime-type="text/css" src="../resources/styles/{1}.css"/>
+ </map:match>
+ <map:match pattern="resources/*.js">
+ <map:read src="../resources/{1}.js"/>
+ </map:match>
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
+<!-- end of file -->