coliver     2003/04/21 09:16:10

  Modified:    src/java/org/apache/cocoon/components/flow/javascript
                        xmlForm.js
  Log:
  Added getSubmitId() function to return the id of the button that was pressed 
to submit the form
  
  Revision  Changes    Path
  1.10      +31 -10    
cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/xmlForm.js
  
  Index: xmlForm.js
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/flow/javascript/xmlForm.js,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- xmlForm.js        1 Apr 2003 20:02:43 -0000       1.9
  +++ xmlForm.js        21 Apr 2003 16:16:10 -0000      1.10
  @@ -23,6 +23,7 @@
       this.lastContinuation = null;
       this.validatorNS = validatorNS;
       this.validatorDoc = validatorDoc;
  +    this.submitId = undefined;
       this.dead = false;
   }
   
  @@ -36,6 +37,14 @@
   }
   
   /**
  + * Return the id of the xf:submit element of the current form submission
  + * @return [String] id attribute of the button that caused this from to be 
submitted
  + */
  +XForm.prototype.getSubmitId = function() {
  +    return this.submitId;
  +}
  +
  +/**
    * Set the model object of this form
    * @param model [Object] Any Java bean, JavaScript, DOM, or JDOM object 
    */
  @@ -157,9 +166,8 @@
    * @param uri [String] presentation pipeline resource identifier of view
    * @param validator [Function] optional function invoked to perform 
validation
    */
  -XForm.prototype.sendView = function(phase, uri, validator) {
  +XForm.prototype.sendView = function(view, uri, validator) {
       var lastCont = this.lastContinuation;
  -    var view = this.form.getFormView(this.cocoon.environment.objectModel);
       while (true) {
           // create a continuation, the invocation of which will resend
           // the page: this is used to implement <xf:submit 
continuation="back">
  @@ -184,10 +192,12 @@
               suicide();
           }
           this.form.populate(this.cocoon.environment.objectModel);
  +        this.submitId = 
  +       this.cocoon.request.getAttribute("xml-form-submit-id");
           if (validator != undefined) {
  -            validator(this);
  +         validator(this);
           }
  -        this.form.validate(phase);
  +        this.form.validate(view);
           if (!this.hasViolations()) {
               break;
           }
  @@ -218,10 +228,10 @@
   XForm.prototype.finish = function(uri) {
       this.form.remove( this.cocoon.environment.objectModel, this.id);
       this.form.save( this.cocoon.environment.objectModel, "request");
  -     this.cocoon.forwardTo("cocoon://" + 
  -                      this.cocoon.environment.getURIPrefix() + uri,
  -                      this.form.getModel(), 
  -                      null);
  +    this.cocoon.forwardTo("cocoon://" + 
  +                       this.cocoon.environment.getURIPrefix() + uri,
  +                       this.form.getModel(), 
  +                       null);
       this.dead = true;
       if (this.lastContinuation != null) {
           this.lastContinuation.invalidate();
  @@ -263,7 +273,18 @@
       var command = getCommand();
       if (command != undefined) {
           // invoke a continuation 
  -        cocoon.interpreter.handleContinuation(command, 
  +        // command looks like kontId:id
  +     var id = "";
  +     var kontId = command;
  +     var index = command.indexOf(java.lang.String(":").charAt(0));
  +     if (index > 0) {
  +         var kontId = command.substring(0, index);
  +         if (index + 1 < command.length()) {
  +             id = command.substring(index + 1);
  +         }
  +     }
  +     cocoon.request.setAttribute("xml-form-submit-id", id);
  +        cocoon.interpreter.handleContinuation(kontId, 
                                                 null,
                                                 cocoon.environment);
           return;
  
  
  

Reply via email to