You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2004/03/18 15:01:44 UTC

cvs commit: cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/flow/javascript woody2.js

joerg       2004/03/18 06:01:44

  Modified:    src/blocks/woody/java/org/apache/cocoon/woody/flow/javascript
                        woody2.js
  Log:
  *** keyword substitution change ***
  
  Revision  Changes    Path
  1.12      +200 -200  cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/flow/javascript/woody2.js
  
  Index: woody2.js
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/flow/javascript/woody2.js,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- woody2.js	9 Mar 2004 13:54:25 -0000	1.11
  +++ woody2.js	18 Mar 2004 14:01:44 -0000	1.12
  @@ -1,200 +1,200 @@
  -/*
  - * 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.
  - */
  -
  -/**
  - * Implementation of the Woody/FlowScript integration.
  - *
  - * @author <a href="http://www.apache.org/~sylvain/">Sylvain Wallez</a>
  - * @version CVS $Id$
  - */
  -
  -// Revisit this class, so it gives access to more than the value.
  -defineClass("org.apache.cocoon.woody.flow.javascript.ScriptableWidget");
  -
  -/**
  - * Create a Woody form, given the URI of its definition file
  - */
  -function Form(uri) {
  -    var formMgr = null;
  -    var resolver = null;
  -    var src = null;
  -    try {
  -        formMgr = cocoon.getComponent(Packages.org.apache.cocoon.woody.FormManager.ROLE);
  -        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
  -        src = resolver.resolveURI(uri);
  -        this.form = formMgr.createForm(src);
  -        this.binding = null;
  -        this.validator = null;
  -        this.eventHandler = null;
  -        // TODO : do we keep this ?
  -        this.formWidget = new Widget(this.form);
  -        
  -    } finally {
  -        cocoon.releaseComponent(formMgr);
  -        if (src != null) resolver.release(src);
  -        cocoon.releaseComponent(resolver);
  -    }
  -}
  -
  -Form.prototype.getModel = function() {
  -    return this.formWidget;
  -}
  -
  -/**
  - * Get a Widget (the java object) from the form.
  - * If <code>name</code> is undefined, the form widget itself is returned.
  - * Otherwise, the form's child widget of name <code>name</code> is returned.
  - */
  -Form.prototype.getWidget = function(name) {
  -    if (name == undefined) {
  -        return this.form;
  -    } else {
  -        return this.form.getWidget(name);
  -    }
  -}
  -
  -/**
  - * Manages the display of a form and its validation.
  - *
  - * This uses some additionnal propertied on the form object :
  - * - "locale" : the form locale (default locale is used if not set)
  - * - "validator" : additional validation function. This function receives
  - *   the form object as parameter and should return a boolean indicating
  - *   if the form handling is finished (true) or if the form should be
  - *   redisplayed again (false)
  - *
  - * On return, the calling code can check some properties to know the form result :
  - * - "isValid" : true if the form was sucessfully validated
  - * - "submitId" : the id of the widget that triggered the form submit (can be null)
  - *
  - * @parameter uri the page uri (like in cocoon.sendPageAndWait())
  - * @parameter bizdata some business data for the view (like in cocoon.sendPageAndWait()).
  - *            The "woody-form" and "locale" properties are added to this object.
  - */
  -Form.prototype.showForm = function(uri, bizData) {
  -
  -    if (bizData == undefined) bizData = new Object();
  -    bizData[Packages.org.apache.cocoon.woody.transformation.WoodyPipelineConfig.WOODY_FORM] = this.form;
  -
  -    if (this.locale == null)
  -        this.locale = java.util.Locale.getDefault();
  -    bizData["locale"] = this.locale;
  -    
  -    // Keep the first continuation that will be created as the result of this function
  -    var result = null;
  -
  -    var finished = false;
  -    this.isValid = false;
  -
  -    do {
  -        var k = cocoon.sendPageAndWait(uri, bizData);
  -        if (result == null) result = k;
  -        
  -        var formContext = 
  -            Packages.org.apache.cocoon.woody.flow.javascript.WoodyFlowHelper.getFormContext(cocoon, this.locale);
  -
  -        // Prematurely add the bizData as a request attribute so that event listeners can use it
  -        // (the same is done by cocoon.sendPage())
  -        cocoon.request.setAttribute(Packages.org.apache.cocoon.components.flow.FlowHelper.CONTEXT_OBJECT, bizData);
  -
  -        finished = this.form.process(formContext);
  -        
  -        // Additional flow-level validation
  -        if (finished && this.form.isValid()) {
  -            if (this.validator == null) {
  -              this.isValid = true;
  -            } else {
  -              this.isValid = this.validator(this.form, bizData);
  -              finished = this.isValid;
  -            }
  -        }
  -        
  -        // FIXME: Theoretically, we should clone the form widget (this.form) to ensure it keeps its
  -        // value with the continuation. We don't do it since there should me not much pratical consequences
  -        // except a sudden change of repeaters whose size changed from a continuation to another.
  -        
  -    } while(!finished);
  -
  -    var widget = this.form.getSubmitWidget();
  -    // Can be null on "normal" submit
  -    this.submitId = widget == null ? null : widget.getId(); 
  -    
  -    return result;
  -}
  -
  -Form.prototype.createBinding = function(bindingURI) {
  -    var bindingManager = null;
  -    var source = null;
  -    var resolver = null;
  -    try {
  -        bindingManager = cocoon.getComponent(Packages.org.apache.cocoon.woody.binding.BindingManager.ROLE);
  -        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
  -        source = resolver.resolveURI(bindingURI);
  -        this.binding = bindingManager.createBinding(source);
  -    } finally {
  -        if (source != null)
  -            resolver.release(source);
  -        cocoon.releaseComponent(bindingManager);
  -        cocoon.releaseComponent(resolver);
  -    }
  -}
  -
  -Form.prototype.load = function(object) {
  -    if (this.binding == null)
  -        throw new Error("Binding not configured for this form.");
  -    this.binding.loadFormFromModel(this.form, object);
  -}
  -
  -Form.prototype.save = function(object) {
  -    if (this.binding == null)
  -        throw new Error("Binding not configured for this form.");
  -    this.binding.saveFormToModel(this.form, object);
  -}
  -
  -Form.prototype.setAttribute = function(name, value) {
  -    this.form.setAttribute(name, value);
  -}
  -
  -Form.prototype.getAttribute = function(name) {
  -    return this.form.getAttribute(name);
  -}
  -
  -Form.prototype.removeAttribute = function(name) {
  -    this.form.removeAttribute(name);
  -}
  -
  -function woody() {
  -    var form = new Form(cocoon.parameters["form-definition"]);
  -
  -    var args = [form];
  -
  -    // set the binding on the form if there's any
  -    var bindingURI = cocoon.parameters["bindingURI"];
  -    if (bindingURI != null) {
  -        form.createBinding(bindingURI);
  -    }
  -
  -    var funcName = cocoon.parameters["function"];
  -    var func = this[funcName];
  -
  -    if (!func) {
  -        throw "Function \"" + funcName + "\" is not defined.";
  -    } else if (!(func instanceof Function)) {
  -        throw "\"" + funcName + "\" is not a function.";
  -    }
  -
  -    func.apply(this, args);
  -}
  +/*
  + * 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.
  + */
  +
  +/**
  + * Implementation of the Woody/FlowScript integration.
  + *
  + * @author <a href="http://www.apache.org/~sylvain/">Sylvain Wallez</a>
  + * @version CVS $Id$
  + */
  +
  +// Revisit this class, so it gives access to more than the value.
  +defineClass("org.apache.cocoon.woody.flow.javascript.ScriptableWidget");
  +
  +/**
  + * Create a Woody form, given the URI of its definition file
  + */
  +function Form(uri) {
  +    var formMgr = null;
  +    var resolver = null;
  +    var src = null;
  +    try {
  +        formMgr = cocoon.getComponent(Packages.org.apache.cocoon.woody.FormManager.ROLE);
  +        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
  +        src = resolver.resolveURI(uri);
  +        this.form = formMgr.createForm(src);
  +        this.binding = null;
  +        this.validator = null;
  +        this.eventHandler = null;
  +        // TODO : do we keep this ?
  +        this.formWidget = new Widget(this.form);
  +        
  +    } finally {
  +        cocoon.releaseComponent(formMgr);
  +        if (src != null) resolver.release(src);
  +        cocoon.releaseComponent(resolver);
  +    }
  +}
  +
  +Form.prototype.getModel = function() {
  +    return this.formWidget;
  +}
  +
  +/**
  + * Get a Widget (the java object) from the form.
  + * If <code>name</code> is undefined, the form widget itself is returned.
  + * Otherwise, the form's child widget of name <code>name</code> is returned.
  + */
  +Form.prototype.getWidget = function(name) {
  +    if (name == undefined) {
  +        return this.form;
  +    } else {
  +        return this.form.getWidget(name);
  +    }
  +}
  +
  +/**
  + * Manages the display of a form and its validation.
  + *
  + * This uses some additionnal propertied on the form object :
  + * - "locale" : the form locale (default locale is used if not set)
  + * - "validator" : additional validation function. This function receives
  + *   the form object as parameter and should return a boolean indicating
  + *   if the form handling is finished (true) or if the form should be
  + *   redisplayed again (false)
  + *
  + * On return, the calling code can check some properties to know the form result :
  + * - "isValid" : true if the form was sucessfully validated
  + * - "submitId" : the id of the widget that triggered the form submit (can be null)
  + *
  + * @parameter uri the page uri (like in cocoon.sendPageAndWait())
  + * @parameter bizdata some business data for the view (like in cocoon.sendPageAndWait()).
  + *            The "woody-form" and "locale" properties are added to this object.
  + */
  +Form.prototype.showForm = function(uri, bizData) {
  +
  +    if (bizData == undefined) bizData = new Object();
  +    bizData[Packages.org.apache.cocoon.woody.transformation.WoodyPipelineConfig.WOODY_FORM] = this.form;
  +
  +    if (this.locale == null)
  +        this.locale = java.util.Locale.getDefault();
  +    bizData["locale"] = this.locale;
  +    
  +    // Keep the first continuation that will be created as the result of this function
  +    var result = null;
  +
  +    var finished = false;
  +    this.isValid = false;
  +
  +    do {
  +        var k = cocoon.sendPageAndWait(uri, bizData);
  +        if (result == null) result = k;
  +        
  +        var formContext = 
  +            Packages.org.apache.cocoon.woody.flow.javascript.WoodyFlowHelper.getFormContext(cocoon, this.locale);
  +
  +        // Prematurely add the bizData as a request attribute so that event listeners can use it
  +        // (the same is done by cocoon.sendPage())
  +        cocoon.request.setAttribute(Packages.org.apache.cocoon.components.flow.FlowHelper.CONTEXT_OBJECT, bizData);
  +
  +        finished = this.form.process(formContext);
  +        
  +        // Additional flow-level validation
  +        if (finished && this.form.isValid()) {
  +            if (this.validator == null) {
  +              this.isValid = true;
  +            } else {
  +              this.isValid = this.validator(this.form, bizData);
  +              finished = this.isValid;
  +            }
  +        }
  +        
  +        // FIXME: Theoretically, we should clone the form widget (this.form) to ensure it keeps its
  +        // value with the continuation. We don't do it since there should me not much pratical consequences
  +        // except a sudden change of repeaters whose size changed from a continuation to another.
  +        
  +    } while(!finished);
  +
  +    var widget = this.form.getSubmitWidget();
  +    // Can be null on "normal" submit
  +    this.submitId = widget == null ? null : widget.getId(); 
  +    
  +    return result;
  +}
  +
  +Form.prototype.createBinding = function(bindingURI) {
  +    var bindingManager = null;
  +    var source = null;
  +    var resolver = null;
  +    try {
  +        bindingManager = cocoon.getComponent(Packages.org.apache.cocoon.woody.binding.BindingManager.ROLE);
  +        resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
  +        source = resolver.resolveURI(bindingURI);
  +        this.binding = bindingManager.createBinding(source);
  +    } finally {
  +        if (source != null)
  +            resolver.release(source);
  +        cocoon.releaseComponent(bindingManager);
  +        cocoon.releaseComponent(resolver);
  +    }
  +}
  +
  +Form.prototype.load = function(object) {
  +    if (this.binding == null)
  +        throw new Error("Binding not configured for this form.");
  +    this.binding.loadFormFromModel(this.form, object);
  +}
  +
  +Form.prototype.save = function(object) {
  +    if (this.binding == null)
  +        throw new Error("Binding not configured for this form.");
  +    this.binding.saveFormToModel(this.form, object);
  +}
  +
  +Form.prototype.setAttribute = function(name, value) {
  +    this.form.setAttribute(name, value);
  +}
  +
  +Form.prototype.getAttribute = function(name) {
  +    return this.form.getAttribute(name);
  +}
  +
  +Form.prototype.removeAttribute = function(name) {
  +    this.form.removeAttribute(name);
  +}
  +
  +function woody() {
  +    var form = new Form(cocoon.parameters["form-definition"]);
  +
  +    var args = [form];
  +
  +    // set the binding on the form if there's any
  +    var bindingURI = cocoon.parameters["bindingURI"];
  +    if (bindingURI != null) {
  +        form.createBinding(bindingURI);
  +    }
  +
  +    var funcName = cocoon.parameters["function"];
  +    var func = this[funcName];
  +
  +    if (!func) {
  +        throw "Function \"" + funcName + "\" is not defined.";
  +    } else if (!(func instanceof Function)) {
  +        throw "\"" + funcName + "\" is not a function.";
  +    }
  +
  +    func.apply(this, args);
  +}