On Fri, Jul 23, 2004 at 04:41:36PM +0400, Timur Izhbulatov wrote:

Sorry, some attachments have been deleted. Here they are:
//---------
//client.js:
//----------
cocoon.load("flow/common/document.js");
cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/Form.js");


// var pipelineUtil = cocoon.createObject(
//               Packages.org.apache.cocoon.components.flow.util.PipelineUtil);
function editClient() {
    var form       = new Form(cocoon.parameters["form-definition"]);
    var clientID   = cocoon.parameters["client-id"];
    var bindingURI = cocoon.parameters["data-base"] + clientID;

    // show the selection form
    form.showForm("select-docs-display-pipeline");

    // show a form for each document in the selection list
    model = form.getModel();
    // var list = new Array(model.list.length);
    for(i = 0; i < model.list.length; i++) { 
        // list[i]     = model.list[i];
        var docName = model.list[i]; 

        var form       = new Form("forms/" + docName + "_form.xml");
        form.createBinding("forms/" + docName + "_bind.xml");

        var doc = loadDocument(bindingURI);
        form.load(doc);
        form.showForm(docName + "-display-pipeline");
        form.save(doc);
        saveDocument(doc, bindingURI)
    }
    
    // list.push(clientID, dataBase, dataURI);
    // cocoon.sendPage("test-pipeline", {"list":list});
    cocoon.redirectTo("../browse/");
}

function createClient() {
    var dataBase = cocoon.parameters["data-base"];
    var ID       = getNewClientID(dataBase);
    var dataURI  = dataBase + ID;

    if(!isLoadable(dataURI)) {
        // Initialize DB with an empty resource
        var document = loadDocument("data/clients/empty.xml");
        saveDocument(document, dataURI);
    }

    cocoon.sendPage("edit/" + ID);
}

function getNewClientID(uri) {

    var document = loadDocument(uri);
    
    if (document != null) {
        try {
            var ID = document.getDocumentElement().getAttribute("resources");
            ID = ID - 0 + 1; // Substract zero in order to convert string to int
            return ID;
        } catch (error) {
            cocoon.log.error("Invalid document data: " + error);
        }
    } else {
        cocoon.log.error("Error loading document from: " + uri);
    }
}
//-------------
//client_new.js
//-------------
cocoon.load("flow/common/document.js");
cocoon.load("resource://org/apache/cocoon/forms/flow/javascript/Form.js");


// var pipelineUtil = cocoon.createObject(
//               Packages.org.apache.cocoon.components.flow.util.PipelineUtil);
function editClientNew() {
    var form       = new Form(cocoon.parameters["form-definition"]);
    var clientID   = cocoon.parameters["client-id"];
    var bindingURI = cocoon.parameters["data-base"] + clientID;

    // show the selection form
    form.showForm("select-docs-display-pipeline");

    // show a form for each document in the selection list
    model = form.getModel();

    var formList = new Array(model.list.length);
    // var list = new Array(model.list.length);
    
    for(i = 0; i < model.list.length; i++) { 
    // list[i]     = model.list[i];
        formList[i] = new Form("forms/" + model.list[i] + "_form.xml");
        formList[i].createBinding("forms/" + model.list[i] + "_bind.xml");
    }

    var i = 0;
    var done = null;
    
    while( (i >= 0) && (i < formList.length) ) {
       var doc = loadDocument(bindingURI);
       formList[i].load(doc);
       form.showForm(model.list[i] + "-display-pipeline");
       form.save(doc);
       saveDocument(doc, bindingURI);

       i++;
    }    

    // list.push(clientID, dataBase, dataURI);
    // cocoon.sendPage("test-pipeline", {"list":list});
    cocoon.redirectTo("../browse/");
}

> Hi all! 
> 
> I have two functions that handle two corresponding pipelines. They use the 
> same form model, template and binding definitions and the same pipeline to 
> show the form (please, see attached files for details). The frist function 
> works almost as expected but the second one fails when it whants to display 
> the form. The falure appears when cocoon executes the form displaying 
> pipeline at forms transformation. 
> 
> Here is the error message: 
> 
>   Failed to execute pipeline. 
> 
>   org.apache.cocoon.ProcessingException: Failed to execute pipeline.: 
> org.xml.sax.SAXException: EffectFormTemplateTransformer: Widget with id  
> "number" does not exist in the form container. 
> 
> What's wrong? Please, help! 
> 
> Timur 

> <?xml version="1.0"?>
> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
>   <!-- This should be reorganized in more optimal way. E.g. there should be a
>   resource for applying frequently used parametric transformation -->
>   <map:components>
>     <!--
>     <map:generators default="file">
>       <map:generator logger="forms" name="forms"
>       src="org.apache.cocoon.forms.generation.FormsGenerator" />
>       <map:generator name="jx"
>       src="org.apache.cocoon.generation.JXTemplateGenerator" label="content"
>       logger="sitemap.generator.jx" />
>     </map:generators>
>     -->
> 
>     <map:serializers default="html">
>       <map:serializer logger="sitemap.serializer.xml" mime-type="text/xml"
>         name="xml" pool-grow="4" pool-max="32" pool-min="4"
>         src="org.apache.cocoon.serialization.XMLSerializer">
>         <encoding>UTF-8</encoding>
>       </map:serializer>
>       
>       <map:serializer logger="sitemap.serializer.html" mime-type="text/html"
>         name="html" pool-grow="4" pool-max="32" pool-min="4"
>         src="org.apache.cocoon.serialization.HTMLSerializer">
>         <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
>         <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
>         <encoding>UTF-8</encoding>
>       </map:serializer>
> 
>     </map:serializers>
> 
>     <map:transformers default="xalan">
>       <map:transformer logger="forms" name="forms"
>         src="org.apache.cocoon.forms.transformation.FormsTemplateTransformer" />
>       <!--
>       <map:transformer name="i18n"
>         src="org.apache.cocoon.transformation.I18nTransformer">
>         <catalogues default="other">
>           <catalogue id="other" name="OtherMessages" location="messages" />
>           <catalogue id="forms" name="FormsMessages" location="messages" />
>         </catalogues>
>         <cache-at-startup>true</cache-at-startup>
>       </map:transformer>
>       -->
> 
>     </map:transformers>
>   </map:components>
> 
>   <map:resources>
>     <!-- this will later become a virtual transformer -->
>     <map:resource name="simple-page2html">
>       <map:transform src="style/xsl/simple-page2html.xsl">
>         <map:parameter name="contextPath" value="{request:contextPath}" />
>         <map:parameter name="servletPath" value="{request:servletPath}" />
>       </map:transform>
>     </map:resource>
>     
>     <map:resource name="page2html">
>       <map:transform src="style/xsl/page2html.xsl">
>         <map:parameter name="contextPath" value="{request:contextPath}" />
>         <map:parameter name="servletPath" value="{request:servletPath}" />
>       </map:transform>
>     </map:resource>
>     
>     <map:resource name="show-client">
>         <map:transform src="style/xsl/client.xsl">
>           <map:parameter name="contextPath"
>                          value="{request:contextPath}" />
>         </map:transform>
>         <map:call resource="page2html" />
>         <map:serialize />
>     </map:resource>
> 
>   </map:resources>
>   
>   <map:flow language="javascript">
>     <map:script src="flow/client.js" />
>     <map:script src="flow/client_new.js" />
>   </map:flow>
>   
>   <map:pipelines>
>     <!-- Direct data access -->
>     <!-- FIXME: this pipeline should be internal in production version.
>         -->
>     <map:pipeline>
>       <map:match pattern="data/**">
>         <map:generate src="xmldb:xindice-embed:///db/caclient/{1}" />
>         <map:serialize type="xml" />
>       </map:match>
>     </map:pipeline>
>   
>     <map:pipeline>
>       <map:match pattern="">
>         <map:redirect-to uri="home.html" />
>       </map:match>
>       
>       <map:match pattern="*.html">
>         <map:generate src="data/{1}.xml" />
>         <map:call resource="page2html" />
>         <map:serialize />
>       </map:match>
>   
>       <map:match pattern="browse/">
>         <map:redirect-to uri="../browse(1)" />
>       </map:match>
>         
>       <map:match pattern="browse(*)">
>         <map:generate src="cocoon:/data/" />
>         <map:transform src="style/xsl/xmldb-clients2page.xsl">
>           <map:parameter name="contextPath" value="{request:contextPath}" />
>         </map:transform>
>         <!--
>         <map:transform src="pagesheets/clients.xml" type="paginate">
>           <map:parameter name="page" value="{1}" />
>         </map:transform>
>         -->
>         <map:call resource="page2html" />
>         <map:serialize />
>       </map:match>
>         
>       <map:match pattern="new/">
>         <map:call function="createClient">
>           <map:parameter name="data-base"
>             value="xmldb:xindice-embed:///db/caclient/" />
>         </map:call>
>       </map:match>
>   
>       <map:match pattern="**/*.continue">
>         <map:call continuation="{2}" />
>       </map:match>
> 
>       <map:match pattern="edit/*">
>         <map:call function="editClient">
>           <map:parameter name="form-definition"
>             value="forms/select-docs_form.xml" />
>           <map:parameter name="data-base"
>             value="xmldb:xindice-embed:///db/caclient/" />
>           <map:parameter name="client-id"
>             value="{1}" />
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="edit-new/*">
>         <map:call function="editClientNew">
>           <map:parameter name="form-definition"
>             value="forms/select-docs_form.xml" />
>           <map:parameter name="data-base"
>             value="xmldb:xindice-embed:///db/caclient/" />
>           <map:parameter name="client-id"
>             value="{1}" />
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="*-client-success-pipeline">
>         <map:generate src="cocoon:/data/{1}" />
>         <map:serialize type="xml" />
>       </map:match>
> 
>       <!-- overriding common pipeline -->
>       <map:match pattern="contract-display-pipeline">
>         <map:generate src="forms/contract_tmpl.xml" />
>         <map:transform type="forms" /> <!-- FAILS -->
>         <!--
>         <map:transform src="style/xsl/forms-samples-styling.xsl" />
>         <map:call resource="simple-page2html" />
>         -->
>         <map:serialize />
>       </map:match>
> 
>       <map:match pattern="*-display-pipeline">
>         <!-- pipeline to show the form -->
>         <map:generate src="forms/{1}_tmpl.xml" />
>         <map:transform type="forms" />
>         <map:transform src="style/xsl/forms-samples-styling.xsl" />
>         <map:call resource="simple-page2html" />
>         <map:serialize />
>       </map:match>
>       
>       <!--
>       FIXME: DEVELOPEMENT STUFF should be removed from production version
>       --> 
>       <map:match pattern="populate.html">
>         <map:generate src="data/populate.xml" />
>         <map:transform type="cinclude" />
>         <map:transform type="xmldb" />
>         <map:serialize />
>       </map:match>
>       
>       <map:match pattern="test-pipeline">
>         <map:generate type="jx" src="forms/select-docs-success_jx.xml">
>           <map:parameter name="lenient-xpath" value="true"/>
>         </map:generate>
>         <map:serialize />
>       </map:match>
>     
>     </map:pipeline>
>     
>   </map:pipelines>
> </map:sitemap>



> <?xml version="1.0" encoding="UTF-8"?>
> <fb:context 
>   xmlns:fb="http://apache.org/cocoon/forms/1.0#binding"; 
>   xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"; 
>   path="/Client">
> 
>     <fb:value id="number" path="number"></fb:value>
> 
>     <fb:value id="date" path="date"></fb:value>
> 
>     <fb:value id="organization-name" path="organization-name"></fb:value>
> 
>     <fb:value id="title" path="title"></fb:value>
> 
>     <fb:value id="person-name" path="person-name"></fb:value>
> 
>     <fb:value id="address" path="address"></fb:value>
> 
>     <fb:value id="phone" path="phone"></fb:value>
> 
>     <fb:value id="fax" path="fax"></fb:value>
> 
>     <fb:value id="INN" path="INN"></fb:value>
> 
>     <fb:value id="KPP" path="KPP"></fb:value>
> 
>     <fb:value id="settlement-account" path="settlement-account"></fb:value>
> 
>     <fb:value id="bank-name" path="bank-name"></fb:value>
> 
>     <fb:value id="correspondent-account" path="correspondent-account"></fb:value>
> 
>     <fb:value id="BIK" path="BIK"></fb:value>
> 
>     <fb:value id="OKPO" path="OKPO"></fb:value>
> 
>     <fb:value id="OKONH" path="OKONH"></fb:value>
> 
> </fb:context>

> <?xml version="1.0" encoding="UTF-8"?>
> <fd:form
>     xmlns:fd="http://apache.org/cocoon/forms/1.0#definition";>
>   <fd:widgets>
> 
>     <fd:field id="number">
>       <fd:label>Ð?Ð?Ð?Ð?Ð? Ð?Ð?Ð?Ð?Ð?Ð?Ð?ÐÂ</fd:label>
>       <fd:help></fd:help>
>       <fd:hint>Ð?Ð?Ð?Ð?Ð?Ð?Ð?ÐÑÐ?Ð? Ð?Ð?Ð?Ð?Ð?ÐÑ Ð?Ð?Ð?Ð?Ð? 
> Ð?Ð?Ð?Ð?Ð?Ð?Ð?ÐÂ</fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="date">
>       <fd:label>Ð?ÐÂÐ?ÐÂ</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="organization-name">
>       <fd:label>Ð?ÐÂÐÂÐ?ÐÂÐ?ÐÑÐ? 
> Ð?Ð?Ð?ÐÂÐ?ÐÑÐÂÐÂÐ?ÐÑÐÑ</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="title">
>       <fd:label>Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="person-name">
>       <fd:label>Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="address">
>       <fd:label>Ð?Ð?ÐÑÐ?ÐÑÐ?Ð?Ð?Ð?ÐÑÐ? ÐÂÐ?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="phone">
>       <fd:label>Ð?Ð?Ð?Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="fax">
>       <fd:label>Ð?Ð?Ð?Ð?Ð? Ð?ÐÂÐ?Ð?ÐÂ</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="INN">
>       <fd:label>Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="KPP">
>       <fd:label>Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="settlement-account">
>       <fd:label>ÐÂÐÂÐ?Ð?Ð?Ð?Ð?Ð?Ð? Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="bank-name">
>       <fd:label>Ð?ÐÂÐ?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="correspondent-account">
>       <fd:label>Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ÐÑÐ? 
> Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="BIK">
>       <fd:label>Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="OKPO">
>       <fd:label>Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>     <fd:field id="OKONH">
>       <fd:label>Ð?Ð?Ð?Ð?Ð?</fd:label>
>       <fd:help></fd:help>
>       <fd:hint></fd:hint>
>       <fd:datatype base="string"></fd:datatype>
>       <fd:validation><!-- <fd:value-count exact="2"/> --></fd:validation>
>     </fd:field>
> 
>   </fd:widgets>
> </fd:form>

> <?xml version="1.0" encoding="UTF-8"?>
> <page
>   xmlns:ft="http://apache.org/cocoon/forms/1.0#template";
>   xmlns:fi="http://apache.org/cocoon/forms/1.0#instance";>
> 
>   <title>contract</title>
> 
>   <content>
>     <ft:form-template action="#{$continuation/id}.continue"
>       method="POST">
> 
>       <ft:widget-label id="number" />
>       <ft:widget id="number"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="date" />
>       <ft:widget id="date"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="organization-name" />
>       <ft:widget id="organization-name"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="title" />
>       <ft:widget id="title"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="person-name" />
>       <ft:widget id="person-name"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="address" />
>       <ft:widget id="address"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="phone" />
>       <ft:widget id="phone"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="fax" />
>       <ft:widget id="fax"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="INN" />
>       <ft:widget id="INN"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="KPP" />
>       <ft:widget id="KPP"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="settlement-account" />
>       <ft:widget id="settlement-account"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="bank-name" />
>       <ft:widget id="bank-name"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="correspondent-account" />
>       <ft:widget id="correspondent-account"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="BIK" />
>       <ft:widget id="BIK"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="OKPO" />
>       <ft:widget id="OKPO"></ft:widget>
>       <br />
> 
>       <ft:widget-label id="OKONH" />
>       <ft:widget id="OKONH"></ft:widget>
>       <br />
> 
>       <input value="Ð?ÐÂÐ?Ð?Ð? &gt;&gt;" type="submit" />
> 
>     </ft:form-template>
>   </content>
> 
> </page>
> 

> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to