You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ug...@apache.org on 2003/11/04 00:17:42 UTC

cvs commit: cocoon-2.1/src/blocks/woody/samples sitemap.xmap

ugo         2003/11/03 15:17:41

  Modified:    src/blocks/woody/samples/flow woody_flow_example.js
               src/blocks/woody/samples sitemap.xmap
  Added:       src/blocks/woody/samples/forms countryselector_template.xml
                        countryselector_success.xsp
                        countryselector_form.xml
  Log:
  Added a sample showing how to change a selection list inside an event handler using an in-memory collection.
  
  Revision  Changes    Path
  1.1                  cocoon-2.1/src/blocks/woody/samples/forms/countryselector_template.xml
  
  Index: countryselector_template.xml
  ===================================================================
  <?xml version="1.0"?>
  <page xmlns:wt="http://apache.org/cocoon/woody/template/1.0" xmlns:wi="http://apache.org/cocoon/woody/instance/1.0">
    <title>Country selector</title>
    <para>This example illustrates how you can programmatically update the
      content of a selection list using a collection built in the flow.</para>
    <para>
      This sample illustrates event-handling in Woody and how selection lists can be changed
      programmatically.
    </para>
    <para>
      Event-handlers are defined in the form definition to update the selection lists and set
      the comment text below the table. This requires only a few lines of server-side JavaScript.
      Selection widgets also have a "submit-on-change" attribute set in the form template so that
      changes are considered immediately by the server.
    </para>
    <para>
      See "countryselector_form.xml" and "countryselector_template.xml" to see how this is done.
    </para>
    <content>
      <wt:form-template action="countryselector" method="POST">
        <wt:continuation-id/>
        <table border="1">
          <tr>
            <td valign="top"><wt:widget-label id="us-nonus"/></td>
            <td valign="top">
              <wt:widget id="us-nonus">
                <wi:styling submit-on-change="true"/>
              </wt:widget>
            </td>
          </tr>
          <tr>
            <td valign="top"><wt:widget-label id="country"/></td>
            <td valign="top">
              <wt:widget id="country">
                <wi:styling submit-on-change="true"/>
              </wt:widget>
            </td>
          </tr>
        </table>
  
        <br/>
        <wt:widget id="message"/>
        <br/>
        <br/>
        
        <input type="submit"/>
      </wt:form-template>
    </content>
  </page>
  
  
  
  1.1                  cocoon-2.1/src/blocks/woody/samples/forms/countryselector_success.xsp
  
  Index: countryselector_success.xsp
  ===================================================================
  <?xml version="1.0"?>
  <xsp:page language="java"
    xmlns:xsp="http://apache.org/xsp">
  
    <xsp:structure>
      <xsp:include>org.apache.cocoon.woody.formmodel.*</xsp:include>
    </xsp:structure>
  
    <page>
      <title>Country selector result</title>
      <content>
        <xsp:logic>
          // get reference to form and some of the widgets on it
          Form form = (Form)request.getAttribute("countryselectorform");
          Field usnonus = (Field)form.getWidget("us-nonus");
          Field country = (Field)form.getWidget("country");
        </xsp:logic>
  
        You selected: <xsp:expr>usnonus.getValue()</xsp:expr>,
        country/state <xsp:expr>country.getValue()</xsp:expr>
      </content>
    </page>
  </xsp:page>
  
  
  
  1.1                  cocoon-2.1/src/blocks/woody/samples/forms/countryselector_form.xml
  
  Index: countryselector_form.xml
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!-- form used to illustrate programmatic changing of listbox content via the flow model -->
  <wd:form
    xmlns:wd="http://apache.org/cocoon/woody/definition/1.0"
    xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
  
  	<wd:widgets>
  	
  	  <wd:field id="us-nonus" required="true">
  	    <wd:label>Residence:</wd:label>
  	    <wd:datatype base="string"/>
  	    <wd:selection-list>
  	      <wd:item value="">
  	        <wd:label>Select where you live</wd:label>
  	      </wd:item>
  	      <wd:item value="us">
  	        <wd:label>In the U.S. of America</wd:label>
  	      </wd:item>
  	      <wd:item value="non-us">
  	        <wd:label>Outside the U.S. of America</wd:label>
  	      </wd:item>
  	    </wd:selection-list>
  	    <wd:on-value-changed>
  	      <javascript>
  	        java.lang.System.err.println("Residence changed from " + event.oldValue + " to " + event.newValue);
  	        var value = event.source.value;
  	        var typewidget = event.source.parent.getWidget("country");
  	        if (value == "us") {
  	          typewidget.setSelectionList(states, "key", "value");
  	        }
  	        else if (value == "non-us") {
                typewidget.setSelectionList(countries, "key", "value");
              }
              else {
  		      // Reset the value (will clear validation error)
  		      event.source.setValue(null);
  		      // Set an empty selection list
  		      typewidget.setSelectionList(new Packages.org.apache.cocoon.woody.datatype.EmptySelectionList("Select a maker first"));
  	        }
  	        // Always set the type value to null. Note that it will also fire an event on the "type"
  	        // widget if it already had a value.
  	        typewidget.setValue(null);
  	      </javascript>
  	    </wd:on-value-changed>
  	  </wd:field>
  	
  	  <wd:field id="country" required="true">
  	    <wd:label>State/Country:</wd:label>
  	    <wd:datatype base="string"/>
  	    <wd:selection-list>
  	      <wd:item value="">
  	        <wd:label>Select U.S./non-U.S. first</wd:label>
  	      </wd:item>
  	    </wd:selection-list>
  	    <wd:on-value-changed>
  	      <javascript>
  	        var value = event.source.value;
  	        if (value != null) {
  	          event.source.parent.getWidget("message").setValue("So you live in  " + value + " ?");
  	        } else {
  	          // Reset value
  	          event.source.value = null;
  	        }
  	      </javascript>
  	    </wd:on-value-changed>
  	  </wd:field>
  	
  	  <wd:output id="message">
  	    <wd:datatype base="string"/>
  	  </wd:output>
  
  	</wd:widgets>
  </wd:form>
  
  
  
  1.7       +18 -0     cocoon-2.1/src/blocks/woody/samples/flow/woody_flow_example.js
  
  Index: woody_flow_example.js
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/flow/woody_flow_example.js,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- woody_flow_example.js	25 Sep 2003 17:37:30 -0000	1.6
  +++ woody_flow_example.js	3 Nov 2003 23:17:41 -0000	1.7
  @@ -37,6 +37,24 @@
       cocoon.sendPage("carselector-success");
   }
   
  +var states = [
  +    { key: "AL", value: "Alabama" },
  +    { key: "AK", value: "Alaska" },
  +    { key: "WY", value: "Wyoming" }
  +];
  +
  +var countries = [
  +    { key: "ad", value: "Andorra, Principality of" },
  +    { key: "zw", value: "Zimbabwe" }
  +];
  +
  +function selectCountry() {
  +    var form = new Form("forms/countryselector_form.xml");
  +    form.showForm("countryselector-view");
  +    cocoon.request.setAttribute("countryselectorform", form.getWidget());
  +    cocoon.sendPage("countryselector-success");
  +}
  +
   function determineLocale() {
       var localeParam = cocoon.request.get("locale");
       if (localeParam != null && localeParam.length > 0) {
  
  
  
  1.22      +47 -0     cocoon-2.1/src/blocks/woody/samples/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/samples/sitemap.xmap,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- sitemap.xmap	1 Nov 2003 11:25:54 -0000	1.21
  +++ sitemap.xmap	3 Nov 2003 23:17:41 -0000	1.22
  @@ -343,6 +343,53 @@
          </map:transform>
          <map:serialize/>
        </map:match>
  +
  +     <!--
  +         | Country selector sample.
  +         -->
  +
  +     <map:match pattern="countryselector">
  +       <map:select type="request-method">
  +         <map:when test="GET">
  +           <map:call function="selectCountry"/>
  +         </map:when>
  +         <map:when test="POST">
  +           <map:call continuation="{request-param:continuation-id}"/>
  +         </map:when>
  +         <map:otherwise>
  +           <!-- todo: do something here -->
  +         </map:otherwise>
  +       </map:select>
  +     </map:match>
  +     
  +     <map:match pattern="countryselector-view">
  +       <map:generate src="forms/countryselector_template.xml"/>
  +       <map:transform type="woody"/>
  +       <map:transform type="i18n">
  +         <map:parameter name="locale" value="en-US"/>
  +       </map:transform>
  +       <map:transform src="context://samples/common/style/xsl/html/simple-page2html.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="forms/registration_success.xsp"/>
  +         <map:parameter name="remove" value="{0}"/>
  +       </map:transform>
  +       <map:transform src="resources/woody-samples-styling.xsl"/>
  +       <map:serialize/>
  +     </map:match>
  +     
  +     <map:match pattern="countryselector-success">
  +       <map:generate type="serverpages" src="forms/countryselector_success.xsp"/>
  +       <map:transform src="context://samples/common/style/xsl/html/simple-page2html.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="forms/registration_success.xsp"/>
  +         <map:parameter name="remove" value="{0}"/>
  +       </map:transform>
  +       <map:serialize/>
  +     </map:match>
        
        <map:match pattern="resources/**">
          <map:read src="{0}"/>