You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs@cocoon.apache.org by st...@outerthought.org on 2004/05/15 03:00:04 UTC
[WIKI-UPDATE] Limpy Sat May 15 03:00:03 2004
Page: http://wiki.cocoondev.org/Wiki.jsp?page=Limpy , version: 5 on Fri May 15 00:11:08 2004 by JonasEkstedt
- There is a lot of cool stuff one can do with DOM. After having read a bit about it I started building a widget framework based on DOM. The advantages are several. Using a DOM to model all widgets one gets the benefits of DOM Event handling, DOM Traversal and XML schema all for free with hardly any effort on the programmer.
? ----
+ There is a lot of cool stuff one can do with DOM. After having read a bit about it I started building a widget framework based on DOM. The advantages are several. Using a DOM to model widgets one gets the benefits of DOM Event handling, DOM Traversal and XML schema all for free with hardly any effort on the programmer.
- I put this up here in case anyone would be interested in it. It is only proof-of-concept stuff and definitely not suitable for anything else than playing around with.
+ I put this up here in case anyone would be interested in it. It's not thouroughly tested yet so it is only usable for playing around with.
- Using Limpy is very similar to using woody/cforms. You write a definition file containing the widget structure. A template file places those widgets on a page and a transformer does all the magic. As a last step you XSL transform the widgets to HTML elements. I'll try and outline a simple usage scenario below.
? - ^^ --
+ Using Limpy is very similar to using woody/cforms. You write a definition file containing the widget structure. A template file lays out the widgets on a page and a transformer does all the magic. As a last step you XSL transform the widgets to HTML elements. I'll try and outline a simple usage scenario below.
? ^ ++++
- * li:template is reserved
+ * Elements outside the "li:" namespace (and all their descendants) will be ignored
- As you can see the id of a widget is the parent id + its name. In the DOM the @id is also made to be a proper ID. That means that retrieving a specific widget in the DOM is dead easy. Simply do {{Element formWidget = document.getElementById("app/form")}}, no need for traversing the entire tree when searching for widgets.
+ As you can see the id of a widget is the parent id + "/" + its name. In the DOM the @id is also made to be a proper ID. That means that retrieving a specific widget in the DOM is dead easy. Simply do:
+
+ {{Element formWidget = document.getElementById("app/form")}}
- The transformer does very little. If we take a template
? ^
+ The transformer does very little. If we use the definition above and the template:
? ++++ ++++++++++++++ ^^^ ++++++ +
- The transformer simply replace all <li:widget name="..."/> with the corresponding element from the widget definition. Note that you can adress widgets both by its id as in {{<li:widget id="app/form"/>}} or by its name {{<li:widget name="new"/>}}. In the latter case the transformer will look for the widget in the parent widgets context.
+ The transformer simply replace all <li:widget name="..."/> with the corresponding element from the widget definition. Note that you can adress widgets both by its id as in {{<li:widget id="app/form"/>}} or by its name {{<li:widget name="new"/>}}. In the latter case the transformer will look for the widget in the parent widgets context. Limpy supports adressing of parent widgets, as in <li:widget name="../some-name"/>
? ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- The transformer also supports hiding widgets that have @active=false. Suppose before transformation we did this in flow {{tree.setAttribute("app/form", "active", "false")}} then the transformed template would be:
+ The transformer also supports hiding widgets that has @active=false. Suppose before transformation we did this in flow:
+
+ {{tree.setAttribute("app/form", "active", "false")}}
+
+ then the transformed template would be:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http-link-to-www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ * Build cocoon and make sure you include the forms block