Author: reinhard Date: Thu Oct 21 10:32:49 2004 New Revision: 55239 Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/content/ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/main.jx cocoon/trunk/src/blocks/forms/samples/dreamteam/content/showTeam.jx cocoon/trunk/src/blocks/forms/samples/dreamteam/content/soccer.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamBind.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamDef.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx cocoon/trunk/src/blocks/forms/samples/dreamteam/flow/ cocoon/trunk/src/blocks/forms/samples/dreamteam/flow/team.js cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/ cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/ cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif (contents, props changed) cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/styles/ cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css Log: add "dreamteam" application by Helma van der Linden (issue 31813)
Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/content/main.jx ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/main.jx Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/content/showTeam.jx ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/showTeam.jx Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/content/soccer.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/soccer.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/content/teamBind.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamBind.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/content/teamDef.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamDef.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/content/teamTemplate.jx Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/flow/team.js ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/flow/team.js Thu Oct 21 10:32:49 2004 @@ -0,0 +1,192 @@ +/* + * 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)}; + } + + 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/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_de.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/DreamTeamMessages_it.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/messages/FormsMessages_nl_NL.xml Thu Oct 21 10:32: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/trunk/src/blocks/forms/samples/dreamteam/resources/flags/BG.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/CH.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/CZ.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/DE.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/DK.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/EN.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/ES.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/FR.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/GR.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/HR.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/IT.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/LV.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/NL.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/PT.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/RU.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/SE.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/flags/SW.gif ============================================================================== Binary file. No diff available. Added: cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css ============================================================================== --- (empty file) +++ cocoon/trunk/src/blocks/forms/samples/dreamteam/resources/styles/dreamteam.css Thu Oct 21 10:32: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; +}
