You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Kamal Bhatt <kb...@tt.com.au> on 2007/10/15 23:55:03 UTC

Tabs and CForms

Hi,

I would like to create a tab based interface where the user can freely 
navigate between tabs, without the screen validating and without every 
field being on the form (only the fields on the tab). Additionally, I 
would like to validate the form completely validates at the end. Now, I 
could change visibility of a group, but I suspect that would stop 
validation. I could also put a validation on the form to set the state 
of the groups (for the tabs) to all visible and probably validate a 
group, but there has to be a nicer way.

Thanks.

-- 
Kamal Bhatt


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Tabs and CForms

Posted by Kamal Bhatt <kb...@tt.com.au>.
> Kamal Bhatt wrote:
>> I would like to create a tab based interface where the user can freely
>> navigate between tabs, without the screen validating and without every
>> field being on the form (only the fields on the tab). Additionally, I
>> would like to validate the form completely validates at the end.
>
> Did you figure out what should happen when there is a validation error
> on a group that's in the background?
>

Sorry, I don't think I follow the question. I assume you are asking what
should happen when there is an error on a non-displayed tab. IF that is
the case, then I think there should be some indication that the tab is in
error (probably colouring the tab name in red). That is how other web
applications I have seen seem to handle the issue.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Tabs and CForms

Posted by Tobia Conforto <to...@linux.it>.
Kamal Bhatt wrote:
> I would like to create a tab based interface where the user can freely
> navigate between tabs, without the screen validating and without every
> field being on the form (only the fields on the tab). Additionally, I
> would like to validate the form completely validates at the end.

Did you figure out what should happen when there is a validation error
on a group that's in the background?

Just a thought...


Tobia

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Tabs and CForms

Posted by Kamal Bhatt <kb...@tt.com.au>.
Kamal Bhatt wrote:
> Hi again,
> I had a play with Ajax and tabs. I am not happy that all elements are 
> on the screen at the time, but I can leave with it for now (thanks to 
> Ajax).
>
> However, I have discovered that problem with tabs and validation [1]. 
> I disagree with the assertion that the fix for this is to create a 
> ft:validation-error, that just hides the underlying problem. I think 
> the proper solution is to turn off ajax when doing a full submit. I 
> was wondering if anyone had any ideas how to do this? I tried to 
> change the DOM structure and set the ajax attribute on the form to 
> false on the click of the submit. This had less than optimal results.
>
> So I guess my question is how do you to tell CForms to resubmit the 
> whole form?
>
> Thanks.
>
> [1] http://marc.info/?l=xml-cocoon-dev&m=117269621604981&w=2
>
I think I have my solution. Can someone tell me what is wrong with my 
solution (it seems completely dodgy)?

I setup my forms-sample-styling to do the following:

<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
-->
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fi="http://apache.org/cocoon/forms/1.0#instance"
                exclude-result-prefixes="fi">

  <!--+ Include styling stylesheets, one for the widgets, the other one 
for the
      | page. As 'forms-advanced-field-styling.xsl' is a specialization of
      | 'forms-field-styling.xsl' the latter one is imported there. If 
you don't
      | want advanced styling of widgets, change it here!
      | See xsl:include as composition and xsl:import as 
extension/inheritance.
      +-->
  <xsl:include 
href="resource://org/apache/cocoon/forms/resources/forms-page-styling.xsl"/>
  <xsl:include 
href="resource://org/apache/cocoon/forms/resources/forms-advanced-field-styling.xsl"/>

  <!-- Location of the resources directory, where JS libs and icons are 
stored -->
  <xsl:param name="resources-uri">resources</xsl:param>
 
  <xsl:template match="head">
    <head>
      <xsl:apply-templates select="." mode="forms-page"/>
      <xsl:apply-templates select="." mode="forms-field"/>
      <xsl:apply-templates/>
      <script type="text/javascript">
        function turnOffAjax()
        {
            var frm = document.getElementById("kamal");
            frm.setAttribute("onsubmit", "forms_onsubmit();");
            frm.setAttribute("ajax", "false");
            cocoon.forms.ajax = false;
        }
      </script>
    </head>
  </xsl:template>

  <xsl:template match="body">
    <body>
      <!--+ !!! If template with mode 'forms-page' adds text or elements
          |        template with mode 'forms-field' can no longer add 
attributes!!!
          +-->
      <xsl:apply-templates select="." mode="forms-page"/>
      <xsl:apply-templates select="." mode="forms-field"/>
      <xsl:apply-templates/>
    </body>
  </xsl:template>

  <xsl:template match="fi:action[fi:styling/@force-full-submit = 
'true']" priority="100">
    <input id="{@id}" type="submit" name="{@id}" title="{fi:hint}" 
onclick="turnOffAjax()">
      <xsl:attribute name="value"><xsl:value-of 
select="fi:label/node()"/></xsl:attribute>
      <xsl:apply-templates select="." mode="styling"/>
    </input>
  </xsl:template>
</xsl:stylesheet>



-- 
Kamal Bhatt


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Tabs and CForms

Posted by Kamal Bhatt <kb...@tt.com.au>.
Hi again,
 I had a play with Ajax and tabs. I am not happy that all elements are 
on the screen at the time, but I can leave with it for now (thanks to Ajax).

However, I have discovered that problem with tabs and validation [1]. I 
disagree with the assertion that the fix for this is to create a 
ft:validation-error, that just hides the underlying problem. I think the 
proper solution is to turn off ajax when doing a full submit. I was 
wondering if anyone had any ideas how to do this? I tried to change the 
DOM structure and set the ajax attribute on the form to false on the 
click of the submit. This had less than optimal results.

So I guess my question is how do you to tell CForms to resubmit the 
whole form?

Thanks.

[1] http://marc.info/?l=xml-cocoon-dev&m=117269621604981&w=2




-- 
Kamal Bhatt


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org