[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=" -&gt;"
-                onclick="javascript:from2to('bar')">&nbsp;-&gt;</button>
+                onclick="javascript:from2to('foo')">&nbsp;-&gt;</button>
         <br />
         <button name="to2fromButton" type="button"
                 value="&lt;- "
-                onclick="javascript:to2from('bar')">&lt;-&nbsp;</button>
+                onclick="javascript:to2from('foo')">&lt;-&nbsp;</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=" -&gt;"
-                onclick="javascript:from2to('bar')">&nbsp;-&gt;</button>
+                onclick="javascript:from2to('foo')">&nbsp;-&gt;</button>
         <br />
         <button name="to2fromButton" type="button"
                 value="&lt;- "
-                onclick="javascript:to2from('bar')">&lt;-&nbsp;</button>
+                onclick="javascript:to2from('foo')">&lt;-&nbsp;</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=" -&gt;"
-                onclick="javascript:from2to('widget.name')">&nbsp;-&gt;</button>
+                onclick="javascript:from2to('widget-id')">&nbsp;-&gt;</button>
         <br />
         <button name="to2fromButton" type="button"
                 value="&lt;- "
-                onclick="javascript:to2from('widget.name')">&lt;-&nbsp;</button>
+                onclick="javascript:to2from('widget-id')">&lt;-&nbsp;</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=" -&gt;"
           onclick="javascript:from2to()"
-          tal:attributes="onClick string:javascript:from2to('${view/name}')"
+          tal:attributes="onClick string:javascript:from2to('${view/id}')"
           >&nbsp;-&gt;</button>
       <br />
       <button name="to2fromButton" type="button" value="&lt;- "
           onclick="javascript:to2from()"
-          tal:attributes="onClick string:javascript:to2from('${view/name}')"
+          tal:attributes="onClick string:javascript:to2from('${view/id}')"
           >&lt;-&nbsp;</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