[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