Alexander Klimetschek wrote:
Hi Jeremy, hi all,

I have another feature request for Cforms: change the widget hierarchy separator from "." to something else ("_"), eg. having a form called "myform" containing a widget named "somefield" would result in the fully qualified widget id "myform_somefield".

The problem is that having a dot in the ids makes it very hard to do CSS styling for the final HTML version of the form. This is because CSS id selectors cannot contain a ".", that is reserved for class selectors.

Can't you just escape the "."?

#myform\.somefield {...}

I remember CSS selectability was discussed back when the id naming rules were being proposed, and I thought I remembered this working correctly in the major browsers.

Here's some thread linkage: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&w=2&r=1&s=css+escape+cforms+widget+id&q=b


For example:

#myform.somefield {
  // styling...
}

is incorrect CSS or at least is interpreted as

#myform .somefield {
  // styling..
}

aka "element with id myform and below any element with the class somefield".

A way to work around is either to define your special classes via fi:styling or to write complicated selectors that take the structure of the HTML document into account (div.someclass div.foobar input.forms ...). Both are very limited: fi:styling is difficult if you are using custom styled elements (=custom XSL) where you cannot easily set a class and it does not work if you want to use it together with the standard classes like "active" or "output". And it requires the CSS designer to change the form templates probably on each modification, which IMHO violates separation of concerns. The other solution I don't wanna talk about... ;-)

Jeremy you said that the dot separator is basic assumption for all the cforms java code, so that it would be a massive change. Nevertheless I find it quite a major flaw in the cforms design (the only one I know of ;-).

WDYT?

Alex

Reply via email to