From cvs-return-25152-apmail-cocoon-cvs-archive=cocoon.apache.org@cocoon.apache.org Thu Nov 03 15:04:32 2005 Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 46573 invoked from network); 3 Nov 2005 15:04:32 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 3 Nov 2005 15:04:32 -0000 Received: (qmail 38684 invoked by uid 500); 3 Nov 2005 14:39:42 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 36469 invoked by uid 500); 3 Nov 2005 14:39:23 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 29820 invoked by uid 99); 3 Nov 2005 14:38:22 -0000 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 03 Nov 2005 06:36:00 -0800 Received: (qmail 13264 invoked by uid 65534); 3 Nov 2005 14:35:40 -0000 Message-ID: <20051103143540.13263.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r330548 [104/132] - in /cocoon/whiteboard/maven2/cocoon-flat-layout: ./ cocoon-ajax-block/ cocoon-ajax-block/api/ cocoon-ajax-block/api/src/ cocoon-ajax-block/api/src/main/ cocoon-ajax-block/api/src/main/java/ cocoon-ajax-block/api/src/main... Date: Thu, 03 Nov 2005 14:00:48 -0000 To: cvs@cocoon.apache.org From: jheymans@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml Thu Nov 3 05:41:06 2005 @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + note + warn + fixme + + + + + query + include + query-and-include + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/datatype/convertor/HtmlCleanerConfiguration.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/Form.js URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/Form.js?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/Form.js (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/Form.js Thu Nov 3 05:41:06 2005 @@ -0,0 +1,331 @@ +/* + * 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 Cocoon Forms/FlowScript integration. + * + * @author Sylvain Wallez + * @version $Id: Form.js 326838 2005-10-20 06:26:53Z sylvain $ + */ + +// Revisit this class, so it gives access to more than the value. +defineClass("org.apache.cocoon.forms.flow.javascript.ScriptableWidget"); + +/** + * Create a form, given the URI of its definition file + */ +function Form(formDefinition) { + var formMgr = null; + var resolver = null; + var src = null; + var xmlAdapter = null; + try { + formMgr = cocoon.getComponent(Packages.org.apache.cocoon.forms.FormManager.ROLE); + if ((typeof formDefinition) == "string" || formDefinition instanceof String) { + resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE); + src = resolver.resolveURI(formDefinition); + this.form = formMgr.createForm(src); + } else { + this.form = formMgr.createForm(formDefinition) + } + } finally { + cocoon.releaseComponent(formMgr); + if (src != null) resolver.release(src); + cocoon.releaseComponent(resolver); + } + this.binding = null; + this.eventHandler = null; + // FIXME : hack needed because FOM doesn't provide access to the context + this.avalonContext = formMgr.getAvalonContext(); + // TODO : do we keep this ? + this.formWidget = new Widget(this.form); +} + +Form.prototype.getModel = function() { + return this.formWidget; +} + + +/** + * Get the actual Form-Widget (the Java object) + */ +Form.prototype.getWidget = function(name) { + if (name != undefined) { + throw "getWidget(id) has been deprecated.\n" + + "Consider using getChild(id) or lookupWidget(path) instead." + } + return this.form; +} + +/** + * Get a child Widget (the java object) from the form via its id. + */ +Form.prototype.getChild = function(id) { + return this.form.getChild(id); +} + +/** + * Get a Widget (the java object) from the form via its path. + */ +Form.prototype.lookupWidget = function(path) { + return this.form.lookupWidget(path); +} + +/** + * Manages the display of a form and its validation. + * + * This uses some additionnal properties on the form object : + * - "locale" : the form locale (default locale is used if not set) + * - "cleanupHook": a function called after having sent the page displaying the form. This is equivalent + * to the "fun" argument of sendPageAndWait(), which allows to perform some cleanup when the pipeline + * has been processed. The function is called with a single parameter which is the form it is attached to. + * - "restoreHook": a function called before processing the form when it has been submitted by + * the browser. This allows to restore some environment that is needed by the form processing. + * The function is called with a single parameter which is the form it is attached to. + * + * 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 viewdata some data for the view (like in cocoon.sendPageAndWait()). + * The "{FormsPipelineConfig.CFORMSKEY}" and "locale" properties are added to this object. + * @parameter ttl the time to live of the continuation used to display the form + */ +Form.prototype.showForm = function(uri, viewdata, ttl) { + + if (viewdata == undefined) viewdata = new Object(); + viewdata[Packages.org.apache.cocoon.forms.transformation.FormsPipelineConfig.CFORMSKEY] = this.form; + + if (this.locale == null) + this.locale = java.util.Locale.getDefault(); + viewdata["locale"] = this.locale; + + var finished = false; + + var comingBack = false; + var bookmark = cocoon.createWebContinuation(ttl); + + // Attach the form to the continuation so that we can access by just knowing the continuation id + bookmark.setAttribute("form", this.form); + + if (comingBack) { + // We come back to the bookmark: process the form + + if (finished && cocoon.request.getParameter("cocoon-ajax-continue") != null) { + // A request with this parameter is sent by the client upon receiving the indication + // that Ajax interaction on the form is finished (see below). + // We also check "finished" to ensure we won't exit showForm() because of some + // faulty or hacked request. It's set to false, this will simply redisplay the form. + return bookmark; + } + + if (this.restoreHook) { + this.restoreHook(this); + } + var formContext = new Packages.org.apache.cocoon.forms.FormContext(cocoon.request, this.locale); + + // Prematurely add the viewdata as in the object model so that event listeners can use it + // (the same is done by cocoon.sendPage()) + // FIXME : hack needed because FOM doesn't provide access to the object model + var objectModel = org.apache.cocoon.components.ContextHelper.getObjectModel(this.avalonContext); + org.apache.cocoon.components.flow.FlowHelper.setContextObject(objectModel, viewdata); + + finished = this.form.process(formContext); + if (finished) { + this.isValid = this.form.isValid(); + var widget = this.form.getSubmitWidget(); + // Can be null on "normal" submit + this.submitId = widget == null ? null : widget.getId(); + + if (cocoon.request.getParameter("cocoon-ajax") != null) { + // Ask the client to issue a new request reloading the whole page. + // As we have nothing special to send back, so a header should be just what we need... + // e.g. cocoon.response.setHeader("X-Cocoon-Ajax", "continue"); + // cocoon.sendStatus(200); + // ...but Safari doesn't consider empty responses (with content-length = 0) as + // valid ones. So send a continue response by using directly the HttpResponse's + // output stream. Avoiding this hack would require to put an additional pipeline + // in the sitemap for just sending constant response, which isn't nice. + cocoon.sendStatus(200); + var httpResponse = objectModel.get(org.apache.cocoon.environment.http.HttpEnvironment.HTTP_RESPONSE_OBJECT); + if (httpResponse) { + httpResponse.setContentType("text/xml"); + var text = ""; + httpResponse.setContentLength(text.length); + httpResponse.writer.print(text); + } else { + // Empty response + cocoon.response.setHeader("Content-Length", "0"); + } + + FOM_Cocoon.suicide(); + } + + return bookmark; + } + } + comingBack = true; + cocoon.sendPage(uri, viewdata, bookmark); + + // Clean up after sending the page + if (this.cleanupHook) { + this.cleanupHook(this); + } + + FOM_Cocoon.suicide(); +} + +Form.prototype.setValidationError = function(error) { + this.form.setValidationError(error); +} + +Form.prototype.getValidationError = function() { + return this.form.getValidationError(); +} + +Form.prototype.createBinding = function(bindingURI) { + var bindingManager = null; + var source = null; + var resolver = null; + try { + bindingManager = cocoon.getComponent(Packages.org.apache.cocoon.forms.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); +} + +Form.prototype.getXML = function() { + if (this.xmlAdapter == null) + this.xmlAdapter = new Packages.org.apache.cocoon.forms.util.XMLAdapter(this.form); + return this.xmlAdapter; +} + +Form.prototype.loadXML = function(uri) { + var source = null; + var resolver = null; + try { + resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE); + source = resolver.resolveURI(uri); + Packages.org.apache.cocoon.components.source.SourceUtil.toSAX(source, this.getXML()); + } finally { + if (source != null) + resolver.release(source); + cocoon.releaseComponent(resolver); + } +} + +Form.prototype.saveXML = function(uri) { + var source = null; + var resolver = null; + var outputStream = null; + try { + resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE); + source = resolver.resolveURI(uri); + + var tf = Packages.javax.xml.transform.TransformerFactory.newInstance(); + + if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource + && tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE)) { + + outputStream = source.getOutputStream(); + var transformerHandler = tf.newTransformerHandler(); + var transformer = transformerHandler.getTransformer(); + transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT, "true"); + transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD, "xml"); + transformerHandler.setResult(new Packages.javax.xml.transform.stream.StreamResult(outputStream)); + this.getXML().toSAX(transformerHandler); + } else { + throw new Packages.org.apache.cocoon.ProcessingException("Cannot write to source " + uri); + } + + } finally { + if (source != null) + resolver.release(source); + cocoon.releaseComponent(resolver); + if (outputStream != null) { + try { + outputStream.flush(); + outputStream.close(); + } catch (error) { + cocoon.log.error("Could not flush/close outputstream: " + error); + } + } + } +} + +function handleForm() { + // get the form definition + var def = cocoon.parameters["definitionURI"]; + if (def == null) { + if (cocoon.parameters["form-definition"] != null) { + cocoon.log.warn("the form-definition parameter in handleForm has changed to definitionURI"); + def = cocoon.parameters["form-definition"]; + } else { + throw "Definition not configured for this form."; + } + } + // create the Form + var form = new Form(def); + // set the binding on the form if there is one + var bindingURI = cocoon.parameters["bindingURI"]; + if (bindingURI != null) { + form.createBinding(bindingURI); + } + // get the function to call to handle the form + var funcName = cocoon.parameters["function"]; + var func = this[funcName]; + // check the function exists + if (!func) { + throw "Function \"" + funcName + "\" is not defined."; + } else if (!(func instanceof Function)) { + throw "\"" + funcName + "\" is not a function."; + } + // call the function + func.apply(this, [form]); +} Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/Form.js ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v2/Form.js URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v2/Form.js?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v2/Form.js (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v2/Form.js Thu Nov 3 05:41:06 2005 @@ -0,0 +1,176 @@ +/* + * 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 Forms JavaScript API + */ + +defineClass("org.apache.cocoon.forms.flow.javascript.v2.ScriptableWidget"); + +/** + * Create a form, giving either: + * - the URI of its definition file + * - an fd:form element in the form of a org.w3c.dom.Element + */ +function Form(formDefinition) { + var formMgr = null; + var resolver = null; + var src = null; + try { + var FormManager = + Packages.org.apache.cocoon.forms.FormManager; + var SourceResolver = + Packages.org.apache.cocoon.environment.SourceResolver; + formMgr = cocoon.getComponent(FormManager.ROLE); + var form; + if ((typeof formDefinition) == "string" || formDefinition instanceof String) { + resolver = cocoon.getComponent(SourceResolver.ROLE); + src = resolver.resolveURI(formDefinition); + form = formMgr.createForm(src); + } else { + form = formMgr.createForm(formDefinition) + } + this.binding_ = null; + this.formWidget_ = new Widget(form); + this.local_ = cocoon.createPageLocal(); + this.locale = java.util.Locale.getDefault(); + } finally { + cocoon.releaseComponent(formMgr); + if (src != null) resolver.release(src); + cocoon.releaseComponent(resolver); + } +} + +/** + * Get the actual Form-Widget + * (which for the v2 API means that it is still + * wrapped in a ScriptableWidget) + */ +Form.prototype.getWidget = function(name) { + if (name != undefined) { + throw "getWidget(id) has been deprecated.\n" + + "Consider using getChild(id) or lookupWidget(path) instead." + } + return this.formWidget_; +} + +/** + * Get a Widget from the form. + * If path is undefined, the form widget itself is returned. + * Otherwise, the widget addressed by the specified path is looked up. + */ +Form.prototype.lookupWidget = function(path) { + var result; + if (path == undefined) { + result = this.formWidget_; + } else { + result = this.formWidget_.lookupWidget(path); + } + return result; +} + +/** + * Sets the point in your script that will be returned to when the form is + * redisplayed. If setBookmark() is not called, this is implicitly set to + * the beginning of showForm(). + */ +Form.prototype.setBookmark = function() { + return (this.local_.webContinuation = cocoon.createWebContinuation()); +} + +/** + * Returns the bookmark continuation associated with this form, or undefined + * if setBookmark() has not been called. + */ +Form.prototype.getBookmark = function() { + return this.local_.webContinuation; +} + +/** + * Manages the display of a form and its validation. + * @parameter uri the page uri (like in cocoon.sendPageAndWait()) + * @parameter fun optional function which will be executed after pipeline processing. Useful for releasing resources needed during pipeline processing but which should not become part of the continuation + * @parameter ttl Time to live (in milliseconds) for the continuation created + * @returns The web continuation associated with submitting this form + */ +Form.prototype.showForm = function(uri, fun, ttl) { + if (!this.getBookmark()) { + this.setBookmark(); + } + var FormContext = Packages.org.apache.cocoon.forms.FormContext; + // this is needed by the FormTemplateTransformer: + var javaWidget = this.formWidget_.unwrap(); + this.formWidget_["CocoonFormsInstance"] = javaWidget; + cocoon.request.setAttribute(Packages.org.apache.cocoon.forms.transformation.CFORMSKEY, javaWidget); + var wk = cocoon.sendPageAndWait(uri, this.formWidget_, fun, ttl); + var formContext = + new FormContext(cocoon.request, this.locale); + var userErrors = 0; + this.formWidget_.validationErrorListener = function(widget, error) { + if (error != null) { + userErrors++; + } + } + var finished = javaWidget.process(formContext); + if (this.onValidate) { + this.onValidate(this); + } + if (!finished || userErrors > 0) { + cocoon.continuation = this.local_.webContinuation; + this.local_.webContinuation.continuation(this.local_.webContinuation); + } + return wk; +} + +Form.prototype.createEmptySelectionList = function(message) { + return new Packages.org.apache.cocoon.forms.datatype.EmptySelectionList(message); +} + +Form.prototype.createBinding = function(bindingURI) { + var bindingManager = null; + var source = null; + var resolver = null; + try { + var BindingManager = + Packages.org.apache.cocoon.forms.binding.BindingManager; + var SourceResolver = + Packages.org.apache.cocoon.environment.SourceResolver; + bindingManager = cocoon.getComponent(BindingManager.ROLE); + resolver = cocoon.getComponent(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 "Binding not configured for this form."; + } + this.binding_.loadFormFromModel(this.formWidget_.unwrap(), object); +} + +Form.prototype.save = function(object) { + if (this.binding_ == null) { + throw "Binding not configured for this form."; + } + this.binding_.saveFormToModel(this.formWidget_.unwrap(), object); +} Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v2/Form.js ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v3/Form.js URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v3/Form.js?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v3/Form.js (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v3/Form.js Thu Nov 3 05:41:06 2005 @@ -0,0 +1,177 @@ +/* + * 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 Forms JavaScript API + */ + +defineClass("org.apache.cocoon.forms.flow.javascript.v3.ScriptableWidget"); +importClass(Packages.org.apache.cocoon.forms.FormContext); + +/** + * Create a form, giving either: + * - the URI of its definition file + * - an fd:form element in the form of a org.w3c.dom.Element + */ +function Form(formDefinition) { + var formMgr = null; + var resolver = null; + var src = null; + try { + var FormManager = + Packages.org.apache.cocoon.forms.FormManager; + var SourceResolver = + Packages.org.apache.cocoon.environment.SourceResolver; + formMgr = cocoon.getComponent(FormManager.ROLE); + var form; + if ((typeof formDefinition) == "string" || formDefinition instanceof String) { + resolver = cocoon.getComponent(SourceResolver.ROLE); + src = resolver.resolveURI(formDefinition); + form = formMgr.createForm(src); + } else { + form = formMgr.createForm(formDefinition) + } + this.form = form; + this.model = new Widget(form); + this.bindings_ = new Object(); + this.locale = java.util.Locale.getDefault(); + } finally { + cocoon.releaseComponent(formMgr); + if (src != null) resolver.release(src); + cocoon.releaseComponent(resolver); + } +} + +/** + * Get the actual Form-Widget (the Java object) + */ +Form.prototype.getWidget = function() { + return this.form; +} + +/** + * Get a Widget (the java object) from the form. + * If name is undefined, the form widget itself is returned. + * Otherwise, the form's child widget of name name is returned. + */ +Form.prototype.lookupWidget = function(name) { + if (name == undefined) { + return this.form; + } else { + return this.form.lookupWidget(name); + } +} + +/** + * Displays a form until it is valid. + */ +Form.prototype.showForm = function(uri, viewData, fun, ttl) { + if (viewData == null) + viewData = new Object(); + viewData["CocoonFormsInstance"] = this.form; + + var webCont; + var finished = false; + while (!finished) { + webCont = cocoon.sendPageAndWait(uri, viewData, fun, ttl); + finished = this.processSubmit(); + } + return webCont; +} + +Form.prototype.processSubmit = function() { + var formContext = new FormContext(cocoon.request, this.locale); + return this.form.process(formContext); +} + +Form.prototype.createEmptySelectionList = function(message) { + return new Packages.org.apache.cocoon.forms.datatype.EmptySelectionList(message); +} + +Form.prototype.createBinding = function(arg1, arg2) { + var name; + var bindingURI; + if (arguments.length == 2) { + name = arg1; + bindingURI = arg2; + } else { + name = "default"; + bindingURI = arg1; + } + var bindingManager = null; + var source = null; + var resolver = null; + try { + var BindingManager = + Packages.org.apache.cocoon.forms.binding.BindingManager; + var SourceResolver = + Packages.org.apache.cocoon.environment.SourceResolver; + bindingManager = cocoon.getComponent(BindingManager.ROLE); + resolver = cocoon.getComponent(SourceResolver.ROLE); + source = resolver.resolveURI(bindingURI); + this.bindings_[name] = bindingManager.createBinding(source); + } finally { + if (source != null) { + resolver.release(source); + } + cocoon.releaseComponent(bindingManager); + cocoon.releaseComponent(resolver); + } +} + +Form.prototype.load = function(arg1, arg2) { + var name; + var object; + if (arguments.length == 2) { + name = arg1; + object = arg2; + } else { + name = "default"; + object = arg1; + } + if (this.bindings_[name] == null) { + throw "Binding \"" + name + "\" not configured for this form."; + } + this.bindings_[name].loadFormFromModel(this.getWidget(), object); +} + +Form.prototype.save = function(arg1, arg2) { + var name; + var object; + if (arguments.length == 2) { + name = arg1; + object = arg2; + } else { + name = "default"; + object = arg1; + } + if (this.bindings_[name] == null) { + throw "Binding \"" + name + "\" not configured for this form."; + } + this.bindings_[name].saveFormToModel(this.getWidget(), 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); +} Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/flow/javascript/v3/Form.js ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/forms.roles URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/forms.roles?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/forms.roles (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/forms.roles Thu Nov 3 05:41:06 2005 @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/generation/jx-macros.xml URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/generation/jx-macros.xml?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/generation/jx-macros.xml (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/generation/jx-macros.xml Thu Nov 3 05:41:06 2005 @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${cocoon.continuation.id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/generation/jx-macros.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms-calendar.css URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms-calendar.css?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms-calendar.css (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms-calendar.css Thu Nov 3 05:41:06 2005 @@ -0,0 +1,93 @@ +/* +* 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. +*/ +#forms_calendarDiv { + position: absolute; + visibility: hidden; + background-color: white; + layer-background-color: white; + z-index: 10000; +} + +.forms_cpYearNavigation, .forms_cpMonthNavigation { + background-color:#C0C0C0; + text-align:center; + vertical-align:center; + text-decoration:none; + color:#000000; + font-weight:bold; +} + +.forms_cpDayColumnHeader, .forms_cpYearNavigation, .forms_cpMonthNavigation, .forms_cpCurrentMonthDate, .forms_cpCurrentMonthDateDisabled, .forms_cpOtherMonthDate, .forms_cpOtherMonthDateDisabled, .forms_cpCurrentDate, .forms_cpCurrentDateDisabled, .forms_cpTodayText, .forms_cpTodayTextDisabled, .forms_cpText { + font-family:arial; + font-size:8pt; +} + +TD.forms_cpDayColumnHeader { + text-align:right; + border:solid thin #C0C0C0; + border-width:0 0 19 0; +} + +.forms_cpCurrentMonthDate, .forms_cpOtherMonthDate, .forms_cpCurrentDate { + text-align:right; + text-decoration:none; +} + +.forms_cpCurrentMonthDateDisabled, .forms_cpOtherMonthDateDisabled, .forms_cpCurrentDateDisabled { + color:#D0D0D0; + text-align:right; + text-decoration:line-through; +} + +.forms_cpCurrentMonthDate, .forms_cpCurrentDate { + color:#000000; +} + +.forms_cpOtherMonthDate { + color:#808080; +} + +TD.forms_cpCurrentDate { + color:white; background-color: #C0C0C0; + border-width:1; + border:solid thin #800000; +} + +TD.forms_cpCurrentDateDisabled { + border-width:1; + border:solid thin #FFAAAA; +} + +TD.forms_cpTodayText, TD.forms_cpTodayTextDisabled { + border:solid thin #C0C0C0; + border-width:1 0 0 0; +} + +A.forms_cpTodayText, SPAN.forms_cpTodayTextDisabled { + height:20px; +} + +A.forms_cpTodayText { + color:black; +} + +.forms_cpTodayTextDisabled { + color:#D0D0D0; +} + +.forms_cpBorder { + border:solid thin #808080; +} Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms-calendar.css ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms.css URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms.css?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms.css (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms.css Thu Nov 3 05:41:06 2005 @@ -0,0 +1,75 @@ +/* +* 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. +*/ +.forms-tab { + background-color: white; + border: 1px solid black; + border-bottom-width: 0px; + padding: 2px 1em 2px 1em; + margin-right: 5px; + position: relative; + text-decoration: none; + top: -1px; + z-index: 1; + cursor: pointer; +} + +.forms-tab.forms-activeTab { + font-weight: bold; + padding-top: 5px; + cursor: default; + z-index: 3; +} + +.forms-tabContent { + background-color: white; + border: 1px solid black; + padding: 1em; + position: relative; + z-index: 2; +} + +.forms-validation-message, a.forms-validation-message:link { + color: red; + font-weight: bold; +} + +.forms-validation-errors { +} + +.forms-validation-error { +} + +.forms-field-required { + color:blue; + font-weight: bold; +} + +.forms-help { + border-style: dotted; + border-width: 1px; + padding: 5px; + background-color:#FFFFC0; /* light yellow */ + width: 200px; /* otherwise IE does a weird layout */ + z-index:1000; /* must be higher than forms-tabContent */ +} + +.forms-doubleList select { + width: 150px; +} + +.forms-doubleList input { + width: 40px; +} Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/css/forms.css ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/def2binding.xsl URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/def2binding.xsl?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/def2binding.xsl (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/def2binding.xsl Thu Nov 3 05:41:06 2005 @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/def2binding.xsl ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl Thu Nov 3 05:41:06 2005 @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + helppopup + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + +
+ + + + + +   + + + disabled + + +   +
+   + + + disabled + + +   +
+   + + + disabled + + +   +
+   + + + disabled + + +   +
+ +
+ + +
+ +
+
+ + + + + + + + +
+ + + + + +
+ + + + + +
+ + + +   + +   +
+   + +   +
+   + +   +
+ +
+ +
+
+ +
Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl ------------------------------------------------------------------------------ svn:eol-style = native Added: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-calendar-styling.xsl URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-calendar-styling.xsl?rev=330548&view=auto ============================================================================== --- cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-calendar-styling.xsl (added) +++ cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-calendar-styling.xsl Thu Nov 3 05:41:06 2005 @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + yyyy-MM-dd + + + + + + + + + + + + + + + + + + forms:calendar.alt + + + + forms:calendar.alt + + + + + + + + + + + + Propchange: cocoon/whiteboard/maven2/cocoon-flat-layout/cocoon-forms-block/impl/src/main/resources/org/apache/cocoon/forms/resources/forms-calendar-styling.xsl ------------------------------------------------------------------------------ svn:eol-style = native