[Kss-devel] Problems with kssSubmitForm , changing value of all "input"-tags after select:change?

Nylan at gmx.net Nylan at gmx.net
Mon Jun 4 21:41:29 CEST 2007


Hello, 

I'm having some problems with kssSubmitForm, but the demo works without problems.

Use-case:
There is one "select"-tag in forms.pt with a vocabulary based choice (data fetched from database)
On "select:change" I would like to change the attribute "value" of all "input"-tags as well.(value fetched again from sql database)
My aim is to initialise input tags with data from templates("select"-Tag)


So my first idea was kssSubmitForm (dictionary of all input fields)  --> doesn't work at all (see below)
and to use setAttribute somehow.  :-)

It was my first idea, so if there is a shorter way please don't mind telling me.

Thanks.

Best regards!

Harald



error with kssSubmitForm:
---------------------------------------------------------------------------------------------------------------
2007-06-04T20:52:52 ERROR SiteError http://192.168.0.64:8080/dsdsd/submitFullForm
Traceback (most recent call last):
  File "/usr/lib64/zope-3.3.1/lib/python/zope/publisher/publish.py", line 133, in publish
    result = publication.callObject(request, obj)
  File "/usr/lib64/zope-3.3.1/lib/python/zope/app/publication/zopepublication.py", line 161, in callObject
    return mapply(ob, request.getPositionalArguments(), request)
  File "/usr/lib64/zope-3.3.1/lib/python/zope/publisher/publish.py", line 99, in mapply
    raise TypeError('Missing argument to %s(): %s' % (
   - __traceback_info__: <bound method DemoView.wrapper of <zope.app.publisher.browser.viewmeta.DemoView object at 0x2c78b10>>
---------------------------------------------------------------------------------------------------------------


form.kss
---------------------------------------------------------------------------------------------------------------
select:change {
        action-server: submitFullForm;
        submitFullForm-kssSubmitForm: 'source';
}
---------------------------------------------------------------------------------------------------------------


demoview.py
---------------------------------------------------------------------------------------------------------------
from kss.core import KSSView ,kssaction
from datetime import datetime

class DemoView(KSSView):

    @kssaction
    def submitFullForm(self, form):
        assert hasattr(form, 'keys'), 'Form data is expected to be a dict-like object.'
        # marshall back the repr of this dict.
        ksscore = self.getCommandSet('core')
        ksscore.replaceInnerHTML('#target', repr(form))
---------------------------------------------------------------------------------------------------------------


forms.pt
---------------------------------------------------------------------------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:metal="http://xml.zope.org/namespaces/metal" 
      >
<head>
        <link rel="kinetic-stylesheet" type="text/css"
                  tal:attributes="href string:${context/@@absolute_url}/++resource++form.kss"/>
        <metal:header use-macro="context/@@header_macros/header_resources" />                     

</head>
<body>
<div metal:use-macro="context/@@standard_macros/view">
        <div metal:fill-slot="body">
                <p><a href="javascript:void(createLoggingPane(true))">Start logging pane</a></p>
                <form name="source" class="edit-form" enctype="multipart/form-data" method="post"
                      action="." tal:attributes="action request/URL">

                        <h1 tal:content="view/label" i18n:translate="" >Edit something</h1>
                        <div class="summary" tal:condition="view/status"
                               tal:content="view/status">Status</div>

                        <div class="row" tal:repeat="widget view/widgets">
                                <span tal:condition="repeat/widget/odd">
                                <div class="label">
                                        <label for="field.name" title="The widget's hint"
                                                tal:attributes="for widget/name; title widget/hint"
                                                tal:content="widget/label"  i18n:translate=""
                                                i18n:attributes="title">Label</label>
                                </div>
                                </span>

                                <div tal:condition="widget/error"
                                        tal:content="structure widget/error">Error</div>
                                <div class="field">
                                        <input tal:replace="structure widget"/>
                                </div>
                        </div>

                        <span class="actionButtons" tal:condition="view/availableActions">
                        <input tal:repeat="action view/actions"
                                tal:replace="structure action/render"
                        />
                        </span>

                </form>
        </div>
</div>
<div id="target"> Target</div>
</body>
</html
---------------------------------------------------------------------------------------------------------------





More information about the Kss-devel mailing list