[Checkins] SVN: z3c.form/trunk/src/z3c/form/ HTML element ids
containing dots are not very good, because then the
Stephan Richter
srichter at cosmos.phy.tufts.edu
Sun Jun 3 12:58:19 EDT 2007
Log message for revision 76258:
HTML element ids containing dots are not very good, because then the
"element#id" CSS selector does not work and at least in firefox the
attribute selector ("element[attr=value]") does not work for the id
either.
Thus I converted the entire codebase to use dashes in ids instead. I am
sorry if this causes some test-fixing issues for some of you, but making
this change sooner rather than later is better in the long run.
I am going to test this some more now.
Changed:
U z3c.form/trunk/src/z3c/form/browser/README.txt
U z3c.form/trunk/src/z3c/form/browser/checkbox.py
U z3c.form/trunk/src/z3c/form/browser/checkbox.txt
U z3c.form/trunk/src/z3c/form/browser/orderedselect.py
U z3c.form/trunk/src/z3c/form/browser/orderedselect.txt
U z3c.form/trunk/src/z3c/form/browser/orderedselect_input.pt
U z3c.form/trunk/src/z3c/form/browser/radio.py
U z3c.form/trunk/src/z3c/form/browser/radio.txt
U z3c.form/trunk/src/z3c/form/browser/radio_input.pt
U z3c.form/trunk/src/z3c/form/browser/select.py
U z3c.form/trunk/src/z3c/form/browser/select.txt
U z3c.form/trunk/src/z3c/form/button.py
U z3c.form/trunk/src/z3c/form/button.txt
U z3c.form/trunk/src/z3c/form/field.py
U z3c.form/trunk/src/z3c/form/form.txt
U z3c.form/trunk/src/z3c/form/subform.txt
U z3c.form/trunk/src/z3c/form/tests/simple_caredit.pt
U z3c.form/trunk/src/z3c/form/tests/simple_edit.pt
U z3c.form/trunk/src/z3c/form/tests/simple_owneredit.pt
U z3c.form/trunk/src/z3c/form/tests/simple_subedit.pt
U z3c.form/trunk/src/z3c/form/widget.py
-=-
Modified: z3c.form/trunk/src/z3c/form/browser/README.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/README.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/README.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -72,11 +72,11 @@
>>> widget.update()
>>> print widget.render()
<span class="option">
- <input type="radio" id="bar.0" name="bar:list"
+ <input type="radio" id="foo-0" name="bar:list"
class="radioWidget" value="yes" checked="checked" />
<span class="label">yes</span>
</span><span class="option">
- <input type="radio" id="bar.1" name="bar:list"
+ <input type="radio" id="foo-1" name="bar:list"
class="radioWidget" value="no" />
<span class="label">no</span>
</span>
@@ -96,12 +96,12 @@
>>> print widget.render()
<span class="option">
- <input type="checkbox" id="bar.0" name="bar:list"
+ <input type="checkbox" id="foo-0" name="bar:list"
class="checkBoxWidget" value="yes"
checked="checked" />
<span class="label">yes</span>
</span><span class="option">
- <input type="checkbox" id="bar.1" name="bar:list"
+ <input type="checkbox" id="foo-1" name="bar:list"
class="checkBoxWidget" value="no" />
<span class="label">no</span>
</span>
@@ -170,8 +170,8 @@
>>> print widget.render()
<select id="foo" name="bar:list" class="selectWidget"
size="1">
- <option id="foo.0" value="yes" selected="selected">Yes</option>
- <option id="foo.1" value="no">No</option>
+ <option id="foo-0" value="yes" selected="selected">Yes</option>
+ <option id="foo-1" value="no">No</option>
</select>
<input name="bar-empty-marker" type="hidden" value="1" />
@@ -275,10 +275,10 @@
>>> print widget.render()
<select id="foo" name="bar:list" class="selectWidget"
multiple="multiple" size="5">
- <option id="foo.0" value="1" selected="selected">1</option>
- <option id="foo.1" value="2">2</option>
- <option id="foo.2" value="3" selected="selected">3</option>
- <option id="foo.3" value="4">4</option>
+ <option id="foo-0" value="1" selected="selected">1</option>
+ <option id="foo-1" value="2">2</option>
+ <option id="foo-2" value="3" selected="selected">3</option>
+ <option id="foo-3" value="4">4</option>
</select>
<input name="bar-empty-marker" type="hidden" value="1" />
@@ -333,7 +333,7 @@
<table border="0" class="ordered-selection-field">
<tr>
<td>
- <select id="bar.from" name="bar.from" size="5"
+ <select id="foo-from" name="bar.from" size="5"
multiple="">
<option value="1">1</option>
<option value="2">2</option>
@@ -344,29 +344,29 @@
<td>
<button name="from2toButton" type="button"
value=" ->"
- onclick="javascript:from2to('bar')"> -></button>
+ onclick="javascript:from2to('foo')"> -></button>
<br />
<button name="to2fromButton" type="button"
value="<- "
- onclick="javascript:to2from('bar')"><- </button>
+ onclick="javascript:to2from('foo')"><- </button>
</td>
<td>
- <select id="bar.to" name="bar.to" size="5" multiple="">
+ <select id="foo-to" name="bar.to" size="5" multiple="">
<option value="1">1</option>
<option value="3">3</option>
</select>
<input name="bar-empty-marker" type="hidden" />
- <span id="bar.toDataContainer">
+ <span id="foo-toDataContainer">
<script type="text/javascript">
- copyDataForSubmit('bar');</script>
+ copyDataForSubmit('foo');</script>
</span>
</td>
<td>
<button name="upButton" type="button" value="^"
- onclick="javascript:moveUp('bar')">^</button>
+ onclick="javascript:moveUp('foo')">^</button>
<br />
<button name="downButton" type="button" value="v"
- onclick="javascript:moveDown('bar')">v</button>
+ onclick="javascript:moveDown('foo')">v</button>
</td>
</tr>
</table>
@@ -409,10 +409,10 @@
>>> print widget.render()
<select id="foo" name="bar:list" class="selectWidget"
multiple="multiple" size="5">
- <option id="foo.0" value="1" selected="selected">1</option>
- <option id="foo.1" value="2">2</option>
- <option id="foo.2" value="3" selected="selected">3</option>
- <option id="foo.3" value="4">4</option>
+ <option id="foo-0" value="1" selected="selected">1</option>
+ <option id="foo-1" value="2">2</option>
+ <option id="foo-2" value="3" selected="selected">3</option>
+ <option id="foo-3" value="4">4</option>
</select>
<input name="bar-empty-marker" type="hidden" value="1" />
@@ -512,7 +512,7 @@
<table border="0" class="ordered-selection-field">
<tr>
<td>
- <select id="bar.from" name="bar.from" size="5"
+ <select id="foo-from" name="bar.from" size="5"
multiple="">
<option value="1">1</option>
<option value="2">2</option>
@@ -523,29 +523,29 @@
<td>
<button name="from2toButton" type="button"
value=" ->"
- onclick="javascript:from2to('bar')"> -></button>
+ onclick="javascript:from2to('foo')"> -></button>
<br />
<button name="to2fromButton" type="button"
value="<- "
- onclick="javascript:to2from('bar')"><- </button>
+ onclick="javascript:to2from('foo')"><- </button>
</td>
<td>
- <select id="bar.to" name="bar.to" size="5" multiple="">
+ <select id="foo-to" name="bar.to" size="5" multiple="">
<option value="1">1</option>
<option value="3">3</option>
</select>
<input name="bar-empty-marker" type="hidden" />
- <span id="bar.toDataContainer">
+ <span id="foo-toDataContainer">
<script type="text/javascript">
- copyDataForSubmit('bar');</script>
+ copyDataForSubmit('foo');</script>
</span>
</td>
<td>
<button name="upButton" type="button" value="^"
- onclick="javascript:moveUp('bar')">^</button>
+ onclick="javascript:moveUp('foo')">^</button>
<br />
<button name="downButton" type="button" value="v"
- onclick="javascript:moveDown('bar')">v</button>
+ onclick="javascript:moveDown('foo')">v</button>
</td>
</tr>
</table>
Modified: z3c.form/trunk/src/z3c/form/browser/checkbox.py
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/checkbox.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/checkbox.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -47,7 +47,7 @@
self.items = []
for count, term in enumerate(self.terms):
checked = self.isChecked(term)
- id = '%s.%i' % (self.name, count)
+ id = '%s-%i' % (self.id, count)
label = term.token
if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
label = translate(term.title, context=self.request,
Modified: z3c.form/trunk/src/z3c/form/browser/checkbox.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/checkbox.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/checkbox.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -25,9 +25,10 @@
>>> request = TestRequest()
>>> widget = checkbox.CheckBoxWidget(request)
-Set a name for the widget:
+Set a name and id for the widget:
- >>> widget.name = u'foo'
+ >>> widget.id = u'widget-id'
+ >>> widget.name = u'widget.name'
Such a field provides IWidget:
@@ -52,7 +53,7 @@
If we render the widget we only get the empty marker:
>>> print widget.render()
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
Let's provide some values for this widget. We can do this by defining a source
providing ITerms. This source uses descriminators wich will fit for our setup.
@@ -73,15 +74,15 @@
>>> widget.update()
>>> print widget.render()
<span class="option">
- <input type="checkbox" id="foo.0" name="foo:list"
+ <input type="checkbox" id="widget-id-0" name="widget.name:list"
class="checkBoxWidget" value="yes" />
<span class="label">yes</span>
</span><span class="option">
- <input type="checkbox" id="foo.1" name="foo:list"
+ <input type="checkbox" id="widget-id-1" name="widget.name:list"
class="checkBoxWidget" value="no" />
<span class="label">no</span>
</span>
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
If we set the value for the widget to ``yes``, we can se that the checkbox
field get rendered with a checked flag:
@@ -90,13 +91,13 @@
>>> widget.update()
>>> print widget.render()
<span class="option">
- <input type="checkbox" id="foo.0" name="foo:list"
+ <input type="checkbox" id="widget-id-0" name="widget.name:list"
class="checkBoxWidget" value="yes"
checked="checked" />
<span class="label">yes</span>
</span><span class="option">
- <input type="checkbox" id="foo.1" name="foo:list"
+ <input type="checkbox" id="widget-id-1" name="widget.name:list"
class="checkBoxWidget" value="no" />
<span class="label">no</span>
</span>
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
Modified: z3c.form/trunk/src/z3c/form/browser/orderedselect.py
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/orderedselect.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/orderedselect.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -35,7 +35,7 @@
selectedItems = ()
def getItem(self, term, count=0):
- id = '%s.%i' % (self.id, count)
+ id = '%s-%i' % (self.id, count)
content = term.token
if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
content = translate(
Modified: z3c.form/trunk/src/z3c/form/browser/orderedselect.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/orderedselect.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/orderedselect.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -26,7 +26,7 @@
Before rendering the widget, one has to set the name and id of the widget:
- >>> widget.id = u'widget.id'
+ >>> widget.id = u'widget-id'
>>> widget.name = u'widget.name'
We also need to register the template for at least the widget and request:
@@ -50,35 +50,35 @@
<table border="0" class="ordered-selection-field">
<tr>
<td>
- <select id="widget.name.from" name="widget.name.from"
+ <select id="widget-id-from" name="widget.name.from"
size="5" multiple="">
</select>
</td>
<td>
<button name="from2toButton" type="button"
value=" ->"
- onclick="javascript:from2to('widget.name')"> -></button>
+ onclick="javascript:from2to('widget-id')"> -></button>
<br />
<button name="to2fromButton" type="button"
value="<- "
- onclick="javascript:to2from('widget.name')"><- </button>
+ onclick="javascript:to2from('widget-id')"><- </button>
</td>
<td>
- <select id="widget.name.to" name="widget.name.to"
+ <select id="widget-id-to" name="widget.name.to"
size="5" multiple="">
</select>
<input name="widget.name-empty-marker" type="hidden" />
- <span id="widget.name.toDataContainer">
+ <span id="widget-id-toDataContainer">
<script type="text/javascript">
- copyDataForSubmit('widget.name');</script>
+ copyDataForSubmit('widget-id');</script>
</span>
</td>
<td>
<button name="upButton" type="button" value="^"
- onclick="javascript:moveUp('widget.name')">^</button>
+ onclick="javascript:moveUp('widget-id')">^</button>
<br />
<button name="downButton" type="button" value="v"
- onclick="javascript:moveDown('widget.name')">v</button>
+ onclick="javascript:moveDown('widget-id')">v</button>
</td>
</tr>
</table>
@@ -112,7 +112,7 @@
<table border="0" class="ordered-selection-field">
<tr>
<td>
- <select id="widget.name.from" name="widget.name.from"
+ <select id="widget-id-from" name="widget.name.from"
size="5" multiple="">
<option value="a">A</option>
<option value="b">B</option>
@@ -134,7 +134,7 @@
<table border="0" class="ordered-selection-field">
<tr>
<td>
- <select id="widget.name.from" name="widget.name.from"
+ <select id="widget-id-from" name="widget.name.from"
size="5" multiple="">
<option value="a">A</option>
<option value="b">B</option>
@@ -143,14 +143,14 @@
</td>
...
<td>
- <select id="widget.name.to" name="widget.name.to"
+ <select id="widget-id-to" name="widget.name.to"
size="5" multiple="">
<option value="b">B</option>
</select>
<input name="widget.name-empty-marker" type="hidden" />
- <span id="widget.name.toDataContainer">
+ <span id="widget-id-toDataContainer">
<script type="text/javascript">
- copyDataForSubmit('widget.name');</script>
+ copyDataForSubmit('widget-id');</script>
</span>
</td>
...
Modified: z3c.form/trunk/src/z3c/form/browser/orderedselect_input.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/orderedselect_input.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/orderedselect_input.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -32,14 +32,14 @@
// move item from "from" selection to "to" selection
function from2to(name)
{
- moveItems(name+".from", name+".to");
+ moveItems(name+"-from", name+"-to");
copyDataForSubmit(name);
}
// move item from "to" selection back to "from" selection
function to2from(name)
{
- moveItems(name+".to", name+".from");
+ moveItems(name+"-to", name+"-from");
copyDataForSubmit(name);
}
@@ -63,7 +63,7 @@
function moveUp(name)
{
// shortcuts for selection field
- var toSel = document.getElementById(name+".to");
+ var toSel = document.getElementById(name+"-to");
if (toSel.selectedIndex == -1)
selectionError();
@@ -81,7 +81,7 @@
function moveDown(name)
{
// shortcuts for selection field
- var toSel = document.getElementById(name+".to");
+ var toSel = document.getElementById(name+"-to");
if (toSel.selectedIndex == -1) {
selectionError();
@@ -101,8 +101,8 @@
function copyDataForSubmit(name)
{
// shortcuts for selection field and hidden data field
- var toSel = document.getElementById(name+".to");
- var toDataContainer = document.getElementById(name+".toDataContainer");
+ var toSel = document.getElementById(name+"-to");
+ var toDataContainer = document.getElementById(name+"-toDataContainer");
// delete all child nodes (--> complete content) of "toDataContainer" span
while (toDataContainer.hasChildNodes())
@@ -142,7 +142,7 @@
<td>
<select id="from" name="from" size="5" multiple=""
tal:attributes="name string:${view/name}.from;
- id string:${view/name}.from">
+ id string:${view/id}-from">
<option tal:repeat="entry view/items"
tal:attributes="value entry/value"
tal:content="entry/content" i18n:translate=""/>
@@ -151,18 +151,18 @@
<td>
<button name="from2toButton" type="button" value=" ->"
onclick="javascript:from2to()"
- tal:attributes="onClick string:javascript:from2to('${view/name}')"
+ tal:attributes="onClick string:javascript:from2to('${view/id}')"
> -></button>
<br />
<button name="to2fromButton" type="button" value="<- "
onclick="javascript:to2from()"
- tal:attributes="onClick string:javascript:to2from('${view/name}')"
+ tal:attributes="onClick string:javascript:to2from('${view/id}')"
><- </button>
</td>
<td>
<select id="to" name="to" size="5" multiple=""
tal:attributes="name string:${view/name}.to;
- id string:${view/name}.to">
+ id string:${view/id}-to">
<option tal:repeat="entry view/selectedItems"
tal:attributes="value entry/value"
tal:content="entry/content" i18n:translate=""/>
@@ -170,11 +170,11 @@
<input name="foo-empty-marker" type="hidden"
tal:attributes="name string:${view/name}-empty-marker"/>
<span id="toDataContainer"
- tal:attributes="id string:${view/name}.toDataContainer">
+ tal:attributes="id string:${view/id}-toDataContainer">
<script type="text/javascript" tal:content="string:
- copyDataForSubmit('${view/name}');">
+ copyDataForSubmit('${view/id}');">
// initial copying of field "field.to" --> "field"
- copyDataForSubmit("<i tal:replace="${view/name}"/>");
+ copyDataForSubmit("<i tal:replace="${view/id}"/>");
</script>
</span>
</td>
@@ -182,13 +182,13 @@
<button
name="upButton" type="button" value="^"
onclick="javascript:moveUp()"
- tal:attributes="onClick string:javascript:moveUp('${view/name}')"
+ tal:attributes="onClick string:javascript:moveUp('${view/id}')"
>^</button>
<br />
<button
name="downButton" type="button" value="v"
onclick="javascript:moveDown()"
- tal:attributes="onClick string:javascript:moveDown('${view/name}')"
+ tal:attributes="onClick string:javascript:moveDown('${view/id}')"
>v</button>
</td>
</tr>
Modified: z3c.form/trunk/src/z3c/form/browser/radio.py
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/radio.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/radio.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -47,7 +47,7 @@
self.items = []
for count, term in enumerate(self.terms):
checked = self.isChecked(term)
- id = '%s.%i' % (self.name, count)
+ id = '%s-%i' % (self.id, count)
label = term.token
if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
label = translate(term.title, context=self.request,
Modified: z3c.form/trunk/src/z3c/form/browser/radio.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/radio.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/radio.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -20,9 +20,10 @@
>>> request = TestRequest()
>>> widget = radio.RadioWidget(request)
-Set a name for the widget:
+Set a name and id for the widget:
- >>> widget.name = u'foo'
+ >>> widget.id = u'widget-id'
+ >>> widget.name = u'widget.name'
Such a field provides IWidget:
@@ -47,7 +48,7 @@
If we render the widget we only get the empty marker:
>>> print widget.render()
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
Let's provide some values for this widget. We can do this by defining a source
providing ITerms. This source uses descriminators wich will fit for our setup.
@@ -68,15 +69,15 @@
>>> widget.update()
>>> print widget.render()
<span class="option">
- <input type="radio" id="foo.0" name="foo:list"
+ <input type="radio" id="widget-id-0" name="widget.name:list"
class="radioWidget" value="yes" />
<span class="label">yes</span>
</span><span class="option">
- <input type="radio" id="foo.1" name="foo:list"
+ <input type="radio" id="widget-id-1" name="widget.name:list"
class="radioWidget" value="no" />
<span class="label">no</span>
</span>
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
If we set the value for the widget to ``yes``, we can se that the radio field
get rendered with a checked flag:
@@ -85,12 +86,12 @@
>>> widget.update()
>>> print widget.render()
<span class="option">
- <input type="radio" id="foo.0" name="foo:list"
+ <input type="radio" id="widget-id-0" name="widget.name:list"
class="radioWidget" value="yes" checked="checked" />
<span class="label">yes</span>
</span><span class="option">
- <input type="radio" id="foo.1" name="foo:list"
+ <input type="radio" id="widget-id-1" name="widget.name:list"
class="radioWidget" value="no" />
<span class="label">no</span>
</span>
- <input name="foo-empty-marker" type="hidden" value="1" />
+ <input name="widget.name-empty-marker" type="hidden" value="1" />
Modified: z3c.form/trunk/src/z3c/form/browser/radio_input.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/radio_input.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/radio_input.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -1,7 +1,7 @@
<span class="option"
tal:repeat="item view/items">
- <input type="radio" id="" name="" class=""
- alt="" title="" tabindex="" disabled="" readonly="" accesskey="" value="" checked="checked"
+ <input type="radio" id="" name="" class="" alt="" title="" tabindex=""
+ disabled="" readonly="" accesskey="" value="" checked="checked"
tal:condition="item/checked"
tal:attributes="id item/id;
name item/name;
@@ -12,9 +12,9 @@
disabled view/disabled;
readonly view/readonly;
accesskey view/accesskey;
- value item/value"
- /><input type="radio" id="" name="" class=""
- alt="" title="" tabindex="" disabled="" readonly="" accesskey="" value=""
+ value item/value"
+ /><input type="radio" id="" name="" class="" alt="" title="" tabindex=""
+ disabled="" readonly="" accesskey="" value=""
tal:condition="not:item/checked"
tal:attributes="id item/id;
name item/name;
Modified: z3c.form/trunk/src/z3c/form/browser/select.py
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/select.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/select.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -47,14 +47,14 @@
self.items = []
if not self.required and self.multiple is None:
self.items.append({
- 'id': self.id + '.novalue',
+ 'id': self.id + '-novalue',
'value': self.noValueToken,
'content': self.noValueMessage,
'selected': self.value == []
})
for count, term in enumerate(self.terms):
selected = self.isSelected(term)
- id = '%s.%i' % (self.id, count)
+ id = '%s-%i' % (self.id, count)
content = term.token
if zope.schema.interfaces.ITitledTokenizedTerm.providedBy(term):
content = translate(
Modified: z3c.form/trunk/src/z3c/form/browser/select.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/browser/select.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/browser/select.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -26,7 +26,7 @@
Before rendering the widget, one has to set the name and id of the widget:
- >>> widget.id = u'widget.id'
+ >>> widget.id = u'widget-id'
>>> widget.name = u'widget.name'
We also need to register the template for at least the widget and request:
@@ -44,7 +44,7 @@
If we render the widget we get an emtpy widget:
>>> print widget.render()
- <select id="widget.id" name="widget.name:list"
+ <select id="widget-id" name="widget.name:list"
class="selectWidget" size="1">
</select>
<input name="widget.name-empty-marker" type="hidden"
@@ -68,12 +68,12 @@
>>> widget.update()
>>> print widget.render()
- <select id="widget.id" name="widget.name:list"
+ <select id="widget-id" name="widget.name:list"
class="selectWidget" size="1">
- <option id="widget.id.novalue" value="--NOVALUE--">no value</option>
- <option id="widget.id.0" value="a">a</option>
- <option id="widget.id.1" value="b">b</option>
- <option id="widget.id.2" value="c">c</option>
+ <option id="widget-id-novalue" value="--NOVALUE--">no value</option>
+ <option id="widget-id-0" value="a">a</option>
+ <option id="widget-id-1" value="b">b</option>
+ <option id="widget-id-2" value="c">c</option>
</select>
<input name="widget.name-empty-marker" type="hidden" value="1" />
@@ -82,12 +82,12 @@
>>> widget.value = ['b']
>>> widget.update()
>>> print widget.render()
- <select id="widget.id" name="widget.name:list"
+ <select id="widget-id" name="widget.name:list"
class="selectWidget" size="1">
- <option id="widget.id.novalue" value="--NOVALUE--">no value</option>
- <option id="widget.id.0" value="a">a</option>
- <option id="widget.id.1" value="b" selected="selected">b</option>
- <option id="widget.id.2" value="c">c</option>
+ <option id="widget-id-novalue" value="--NOVALUE--">no value</option>
+ <option id="widget-id-0" value="a">a</option>
+ <option id="widget-id-1" value="b" selected="selected">b</option>
+ <option id="widget-id-2" value="c">c</option>
</select>
<input name="widget.name-empty-marker" type="hidden" value="1" />
Modified: z3c.form/trunk/src/z3c/form/button.py
===================================================================
--- z3c.form/trunk/src/z3c/form/button.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/button.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -201,7 +201,7 @@
@property
def id(self):
- return self.name
+ return self.name.replace('.', '-')
class ButtonActions(action.Actions):
Modified: z3c.form/trunk/src/z3c/form/button.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/button.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/button.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -78,7 +78,7 @@
>>> apply.value == apply.title
True
- >>> apply.id == apply.name
+ >>> apply.id == apply.name.replace('.', '-')
True
Next we want to display our button actions. To be able to do this, we have to
@@ -98,7 +98,7 @@
widget. We can now render each action:
>>> print actions['apply'].render()
- <input type="submit" id="form.buttons.apply"
+ <input type="submit" id="form-buttons-apply"
name="form.buttons.apply" class="submitWidget"
value="Apply" />
Modified: z3c.form/trunk/src/z3c/form/field.py
===================================================================
--- z3c.form/trunk/src/z3c/form/field.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/field.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -225,7 +225,7 @@
# Step 2: Set the prefix for the widget
shortName = field.__name__
widget.name = prefix + shortName
- widget.id = prefix + shortName
+ widget.id = (prefix + shortName).replace('.', '-')
# Step 3: Set the context
widget.context = self.content
zope.interface.alsoProvides(widget, interfaces.IContextAware)
Modified: z3c.form/trunk/src/z3c/form/form.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/form.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/form.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -285,29 +285,29 @@
<body>
<form action=".">
<div class="row">
- <label for="form.widgets.name">Name</label>
- <input type="text" id="form.widgets.name" name="form.widgets.name"
+ <label for="form-widgets-name">Name</label>
+ <input type="text" id="form-widgets-name" name="form.widgets.name"
class="textWidget" value="" />
</div>
<div class="row">
- <label for="form.widgets.gender">Gender</label>
- <select id="form.widgets.gender" name="form.widgets.gender:list"
+ <label for="form-widgets-gender">Gender</label>
+ <select id="form-widgets-gender" name="form.widgets.gender:list"
class="selectWidget" size="1">
- <option id="form.widgets.gender.novalue"
+ <option id="form-widgets-gender-novalue"
value="--NOVALUE--">no value</option>
- <option id="form.widgets.gender.0" value="male">male</option>
- <option id="form.widgets.gender.1" value="female">female</option>
+ <option id="form-widgets-gender-0" value="male">male</option>
+ <option id="form-widgets-gender-1" value="female">female</option>
</select>
<input name="form.widgets.gender-empty-marker" type="hidden"
value="1" />
</div>
<div class="row">
- <label for="form.widgets.age">Age</label>
- <input type="text" id="form.widgets.age" name="form.widgets.age"
+ <label for="form-widgets-age">Age</label>
+ <input type="text" id="form-widgets-age" name="form.widgets.age"
class="textWidget" value="20" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.add" name="form.buttons.add"
+ <input type="submit" id="form-buttons-add" name="form.buttons.add"
class="submitWidget" value="Add" />
</div>
</form>
@@ -382,30 +382,30 @@
<form action=".">
<div class="row">
<b><div class="error">Required input is missing.</div>
- </b><label for="form.widgets.name">Name</label>
- <input type="text" id="form.widgets.name" name="form.widgets.name"
+ </b><label for="form-widgets-name">Name</label>
+ <input type="text" id="form-widgets-name" name="form.widgets.name"
class="textWidget" value="" />
</div>
<div class="row">
- <label for="form.widgets.gender">Gender</label>
- <select id="form.widgets.gender" name="form.widgets.gender:list"
+ <label for="form-widgets-gender">Gender</label>
+ <select id="form-widgets-gender" name="form.widgets.gender:list"
class="selectWidget" size="1">
- <option id="form.widgets.gender.novalue"
+ <option id="form-widgets-gender-novalue"
value="--NOVALUE--">no value</option>
- <option id="form.widgets.gender.0" value="male"
+ <option id="form-widgets-gender-0" value="male"
selected="selected">male</option>
- <option id="form.widgets.gender.1" value="female">female</option>
+ <option id="form-widgets-gender-1" value="female">female</option>
</select>
<input name="form.widgets.gender-empty-marker" type="hidden"
value="1" />
</div>
<div class="row">
- <label for="form.widgets.age">Age</label>
- <input type="text" id="form.widgets.age" name="form.widgets.age"
+ <label for="form-widgets-age">Age</label>
+ <input type="text" id="form-widgets-age" name="form.widgets.age"
class="textWidget" value="23" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.add" name="form.buttons.add"
+ <input type="submit" id="form-buttons-add" name="form.buttons.add"
class="submitWidget" value="Add" />
</div>
</form>
@@ -538,8 +538,8 @@
<html>
...
<div class="row">
- <label for="form.widgets.name">Full Name</label>
- <input type="text" id="form.widgets.name" name="form.widgets.name"
+ <label for="form-widgets-name">Full Name</label>
+ <input type="text" id="form-widgets-name" name="form.widgets.name"
class="textWidget" value="" />
</div>
...
@@ -585,11 +585,11 @@
<html>
...
<div class="action">
- <input type="submit" id="form.buttons.add" name="form.buttons.add"
+ <input type="submit" id="form-buttons-add" name="form.buttons.add"
class="submitWidget" value="Add" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.cancel" name="form.buttons.cancel"
+ <input type="submit" id="form-buttons-cancel" name="form.buttons.cancel"
class="submitWidget" value="Cancel" />
</div>
...
@@ -658,30 +658,30 @@
<body>
<form action=".">
<div class="row">
- <label for="form.widgets.name">Full Name</label>
- <input type="text" id="form.widgets.name" name="form.widgets.name"
+ <label for="form-widgets-name">Full Name</label>
+ <input type="text" id="form-widgets-name" name="form.widgets.name"
class="textWidget" value="Stephan Richter" />
</div>
<div class="row">
- <label for="form.widgets.gender">Gender</label>
- <select id="form.widgets.gender" name="form.widgets.gender:list"
+ <label for="form-widgets-gender">Gender</label>
+ <select id="form-widgets-gender" name="form.widgets.gender:list"
class="selectWidget" size="1">
- <option id="form.widgets.gender.novalue"
+ <option id="form-widgets-gender-novalue"
value="--NOVALUE--">no value</option>
- <option id="form.widgets.gender.0" value="male"
+ <option id="form-widgets-gender-0" value="male"
selected="selected">male</option>
- <option id="form.widgets.gender.1" value="female">female</option>
+ <option id="form-widgets-gender-1" value="female">female</option>
</select>
<input name="form.widgets.gender-empty-marker" type="hidden"
value="1" />
</div>
<div class="row">
- <label for="form.widgets.age">Age</label>
- <input type="text" id="form.widgets.age" name="form.widgets.age"
+ <label for="form-widgets-age">Age</label>
+ <input type="text" id="form-widgets-age" name="form.widgets.age"
class="textWidget" value="20" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.apply" name="form.buttons.apply"
+ <input type="submit" id="form-buttons-apply" name="form.buttons.apply"
class="submitWidget" value="Apply" />
</div>
</form>
@@ -718,18 +718,18 @@
</ul>
<form action=".">
<div class="row">
- <label for="form.widgets.name">Full Name</label>
- <input type="text" id="form.widgets.name" name="form.widgets.name"
+ <label for="form-widgets-name">Full Name</label>
+ <input type="text" id="form-widgets-name" name="form.widgets.name"
class="textWidget" value="Claudia Richter" />
</div>
<div class="row">
- <label for="form.widgets.gender">Gender</label>
- <select id="form.widgets.gender" name="form.widgets.gender:list"
+ <label for="form-widgets-gender">Gender</label>
+ <select id="form-widgets-gender" name="form.widgets.gender:list"
class="selectWidget" size="1">
- <option id="form.widgets.gender.novalue"
+ <option id="form-widgets-gender-novalue"
value="--NOVALUE--">no value</option>
- <option id="form.widgets.gender.0" value="male">male</option>
- <option id="form.widgets.gender.1" value="female"
+ <option id="form-widgets-gender-0" value="male">male</option>
+ <option id="form-widgets-gender-1" value="female"
selected="selected">female</option>
</select>
<input name="form.widgets.gender-empty-marker" type="hidden"
@@ -737,12 +737,12 @@
</div>
<div class="row">
<b><div class="error">The value cannot be a negative number.</div>
- </b><label for="form.widgets.age">Age</label>
- <input type="text" id="form.widgets.age" name="form.widgets.age"
+ </b><label for="form-widgets-age">Age</label>
+ <input type="text" id="form-widgets-age" name="form.widgets.age"
class="textWidget" value="-1" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.apply" name="form.buttons.apply"
+ <input type="submit" id="form-buttons-apply" name="form.buttons.apply"
class="submitWidget" value="Apply" />
</div>
</form>
@@ -863,30 +863,30 @@
<body>
<form action=".">
<div class="row">
- <label for="form.widgets.name">Full Name</label>
- <input type="text" id="form.widgets.name"
+ <label for="form-widgets-name">Full Name</label>
+ <input type="text" id="form-widgets-name"
name="form.widgets.name" class="textWidget"
value="Roger Ineichen" />
</div>
<div class="row">
- <label for="form.widgets.gender">Gender</label>
- <select id="form.widgets.gender" name="form.widgets.gender:list"
+ <label for="form-widgets-gender">Gender</label>
+ <select id="form-widgets-gender" name="form.widgets.gender:list"
class="selectWidget" size="1">
- <option id="form.widgets.gender.novalue"
+ <option id="form-widgets-gender-novalue"
value="--NOVALUE--">no value</option>
- <option id="form.widgets.gender.0" value="male">male</option>
- <option id="form.widgets.gender.1" value="female">female</option>
+ <option id="form-widgets-gender-0" value="male">male</option>
+ <option id="form-widgets-gender-1" value="female">female</option>
</select>
<input name="form.widgets.gender-empty-marker" type="hidden"
value="1" />
</div>
<div class="row">
- <label for="form.widgets.age">Age</label>
- <input type="text" id="form.widgets.age"
+ <label for="form-widgets-age">Age</label>
+ <input type="text" id="form-widgets-age"
name="form.widgets.age" class="textWidget" value="20" />
</div>
<div class="action">
- <input type="submit" id="form.buttons.apply"
+ <input type="submit" id="form-buttons-apply"
name="form.buttons.apply" class="submitWidget"
value="Apply" />
</div>
@@ -1080,7 +1080,7 @@
>>> print myEdit.render()
...
<html...
- <input type="text" id="form.widgets.name"
+ <input type="text" id="form-widgets-name"
name="form.widgets.name" class="MyCSS"
value="Claudia Richter" />
...
Modified: z3c.form/trunk/src/z3c/form/subform.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/subform.txt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/subform.txt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -107,37 +107,37 @@
<body>
<form action=".">
<div class="row">
- <label for="car.widgets.model">Model</label>
- <input type="text" id="car.widgets.model"
+ <label for="car-widgets-model">Model</label>
+ <input type="text" id="car-widgets-model"
name="car.widgets.model" class="textWidget" value="Nissan" />
</div>
<div class="row">
- <label for="car.widgets.make">Make</label>
- <input type="text" id="car.widgets.make"
+ <label for="car-widgets-make">Make</label>
+ <input type="text" id="car-widgets-make"
name="car.widgets.make" class="textWidget" value="Sentra" />
</div>
<fieldset>
<legend>Owner</legend>
<div class="row">
- <label for="owner.widgets.name">Name</label>
- <input type="text" id="owner.widgets.name"
+ <label for="owner-widgets-name">Name</label>
+ <input type="text" id="owner-widgets-name"
name="owner.widgets.name" class="textWidget"
value="Stephan Richter" />
</div>
<div class="row">
- <label for="owner.widgets.license">License</label>
- <input type="text" id="owner.widgets.license"
+ <label for="owner-widgets-license">License</label>
+ <input type="text" id="owner-widgets-license"
name="owner.widgets.license" class="textWidget"
value="MA-1231FW97" />
</div>
<div class="action">
- <input type="submit" id="owner.buttons.apply"
+ <input type="submit" id="owner-buttons-apply"
name="owner.buttons.apply" class="submitWidget"
value="Apply" />
</div>
</fieldset>
<div class="action">
- <input type="submit" id="car.buttons.apply"
+ <input type="submit" id="car-buttons-apply"
name="car.buttons.apply" class="submitWidget"
value="Apply" />
</div>
@@ -176,14 +176,14 @@
<body>
<form action=".">
<div class="row">
- <label for="car.widgets.model">Model</label>
- <input type="text" id="car.widgets.model"
+ <label for="car-widgets-model">Model</label>
+ <input type="text" id="car-widgets-model"
name="car.widgets.model" class="textWidget"
value="BMW" />
</div>
<div class="row">
- <label for="car.widgets.make">Make</label>
- <input type="text" id="car.widgets.make"
+ <label for="car-widgets-make">Make</label>
+ <input type="text" id="car-widgets-make"
name="car.widgets.make" class="textWidget"
value="325" />
</div>
@@ -191,25 +191,25 @@
<legend>Owner</legend>
<i>Data successfully updated.</i>
<div class="row">
- <label for="owner.widgets.name">Name</label>
- <input type="text" id="owner.widgets.name"
+ <label for="owner-widgets-name">Name</label>
+ <input type="text" id="owner-widgets-name"
name="owner.widgets.name" class="textWidget"
value="Stephan Richter" />
</div>
<div class="row">
- <label for="owner.widgets.license">License</label>
- <input type="text" id="owner.widgets.license"
+ <label for="owner-widgets-license">License</label>
+ <input type="text" id="owner-widgets-license"
name="owner.widgets.license" class="textWidget"
value="MA-97097A87" />
</div>
<div class="action">
- <input type="submit" id="owner.buttons.apply"
+ <input type="submit" id="owner-buttons-apply"
name="owner.buttons.apply" class="submitWidget"
value="Apply" />
</div>
</fieldset>
<div class="action">
- <input type="submit" id="car.buttons.apply"
+ <input type="submit" id="car-buttons-apply"
name="car.buttons.apply" class="submitWidget"
value="Apply" />
</div>
@@ -287,31 +287,31 @@
<body>
<form action=".">
<div class="row">
- <label for="car.widgets.model">Model</label>
- <input type="text" id="car.widgets.model" name="car.widgets.model"
+ <label for="car-widgets-model">Model</label>
+ <input type="text" id="car-widgets-model" name="car.widgets.model"
class="textWidget" value="BMW" />
</div>
<div class="row">
- <label for="car.widgets.make">Make</label>
- <input type="text" id="car.widgets.make" name="car.widgets.make"
+ <label for="car-widgets-make">Make</label>
+ <input type="text" id="car-widgets-make" name="car.widgets.make"
class="textWidget" value="325" />
</div>
<fieldset>
<legend>Owner</legend>
<div class="row">
- <label for="owner.widgets.name">Name</label>
- <input type="text" id="owner.widgets.name" name="owner.widgets.name"
+ <label for="owner-widgets-name">Name</label>
+ <input type="text" id="owner-widgets-name" name="owner.widgets.name"
class="textWidget" value="Stephan Richter" />
</div>
<div class="row">
- <label for="owner.widgets.license">License</label>
- <input type="text" id="owner.widgets.license"
+ <label for="owner-widgets-license">License</label>
+ <input type="text" id="owner-widgets-license"
name="owner.widgets.license" class="textWidget"
value="MA-97097A87" />
</div>
</fieldset>
<div class="action">
- <input type="submit" id="car.buttons.apply"
+ <input type="submit" id="car-buttons-apply"
name="car.buttons.apply" class="submitWidget"
value="Apply" />
</div>
@@ -379,33 +379,33 @@
<form action=".">
<div class="row">
<b><div class="error">Constraint not satisfied</div>
- </b><label for="car.widgets.model">Model</label>
- <input type="text" id="car.widgets.model"
+ </b><label for="car-widgets-model">Model</label>
+ <input type="text" id="car-widgets-model"
name="car.widgets.model" class="textWidget" value="Volvo " />
</div>
<div class="row">
- <label for="car.widgets.make">Make</label>
- <input type="text" id="car.widgets.make"
+ <label for="car-widgets-make">Make</label>
+ <input type="text" id="car-widgets-make"
name="car.widgets.make" class="textWidget" value="450" />
</div>
<fieldset>
<legend>Owner</legend>
<i>Data successfully updated.</i>
<div class="row">
- <label for="owner.widgets.name">Name</label>
- <input type="text" id="owner.widgets.name"
+ <label for="owner-widgets-name">Name</label>
+ <input type="text" id="owner-widgets-name"
name="owner.widgets.name" class="textWidget"
value="Stephan Richter" />
</div>
<div class="row">
- <label for="owner.widgets.license">License</label>
- <input type="text" id="owner.widgets.license"
+ <label for="owner-widgets-license">License</label>
+ <input type="text" id="owner-widgets-license"
name="owner.widgets.license" class="textWidget"
value="MA-991723FDG" />
</div>
</fieldset>
<div class="action">
- <input type="submit" id="car.buttons.apply"
+ <input type="submit" id="car-buttons-apply"
name="car.buttons.apply" class="submitWidget"
value="Apply" />
</div>
Modified: z3c.form/trunk/src/z3c/form/tests/simple_caredit.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/tests/simple_caredit.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/tests/simple_caredit.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -12,7 +12,7 @@
<b tal:condition="widget/error"
tal:content="structure widget/error/render"
/><label for=""
- tal:attributes="for widget/name"
+ tal:attributes="for widget/id"
tal:content="widget/label" />
<input type="text" tal:replace="structure widget/render"
/></div>
Modified: z3c.form/trunk/src/z3c/form/tests/simple_edit.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/tests/simple_edit.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/tests/simple_edit.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -12,7 +12,7 @@
<b tal:condition="widget/error"
tal:content="structure widget/error/render"
/><label for=""
- tal:attributes="for widget/name"
+ tal:attributes="for widget/id"
tal:content="widget/label" />
<input type="text" tal:replace="structure widget/render"
/></div>
Modified: z3c.form/trunk/src/z3c/form/tests/simple_owneredit.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/tests/simple_owneredit.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/tests/simple_owneredit.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -9,7 +9,7 @@
<b tal:condition="widget/error"
tal:content="structure widget/error/render"
/><label for=""
- tal:attributes="for widget/name"
+ tal:attributes="for widget/id"
tal:content="widget/label" />
<input type="text" tal:replace="structure widget/render"
/></div>
Modified: z3c.form/trunk/src/z3c/form/tests/simple_subedit.pt
===================================================================
--- z3c.form/trunk/src/z3c/form/tests/simple_subedit.pt 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/tests/simple_subedit.pt 2007-06-03 16:58:18 UTC (rev 76258)
@@ -9,7 +9,7 @@
<b tal:condition="widget/error"
tal:content="structure widget/error/render"
/><label for=""
- tal:attributes="for widget/name"
+ tal:attributes="for widget/id"
tal:content="widget/label" />
<input type="text" tal:replace="structure widget/render"
/></div>
Modified: z3c.form/trunk/src/z3c/form/widget.py
===================================================================
--- z3c.form/trunk/src/z3c/form/widget.py 2007-06-03 16:24:26 UTC (rev 76257)
+++ z3c.form/trunk/src/z3c/form/widget.py 2007-06-03 16:58:18 UTC (rev 76258)
@@ -196,7 +196,8 @@
zope.interface.alsoProvides(widget, interfaces.IFieldWidget)
# Initial values are set. They can be overridden while updating the widget
# itself later on.
- widget.name = widget.id = field.__name__
+ widget.name = field.__name__
+ widget.id = field.__name__.replace('.', '-')
widget.label = field.title
widget.required = field.required
return widget
More information about the Checkins
mailing list