<div dir="ltr">Sounds interesting. I just released Yesod 0.3.0, and had in mind that 0.4.0 will focus on a concept I was calling widgets. It sounds very similar to what you&#39;re talking about here, so I would definitely be interested in collaborating with you.<div>
<br></div><div>I&#39;m not sure if writing DOM manipulation code ourselves is necessarily the right approach. It might make more sense to simply leverage an existing Javascript library (my personal preference being jQuery).</div>
<div><br></div><div>I have to get back to &quot;real work&quot; for the rest of the day, but I&#39;d like to hear any other thoughts you have on the subject.</div><div><br></div><div>Michael<br><br><div class="gmail_quote">
On Tue, Jun 22, 2010 at 2:23 PM, Alberto G. Corona <span dir="ltr">&lt;<a href="mailto:agocorona@gmail.com">agocorona@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi web haskellers.<br>
A few days ago I mention the need to have  server-side page control<br>
available in Haskell. <a href="http://ASP.NET" target="_blank">ASP.NET</a> and JavaServer Faces have it.<br>
I would like to collaborate with anyone of you interested. I have not<br>
much time now but this can change in the coming weeks so I want to<br>
know the interest on the subject in advance. I also want to receive<br>
comments to the development plan.<br>
<br>
The main advantages are:<br>
  -No Javascript, no Ajax needed when developing dynamic HTML pages<br>
(All code becomes pure haskell in the server!!)<br>
<br>
  -No errors in advanced dynamic HTML code: all is statically typed<br>
haskell (someone bets more?)<br>
<br>
  -Clear separation of HTML presentation from page control code<br>
<br>
  -Extensibility: makes possible to create custom controls, like HTML<br>
tables automatically generated from haskell containers etc<br>
<br>
All this will unleash the full power of haskell in the Web!!!<br>
<br>
It is compatible and orthogonal with page templating and all other web<br>
stuff. I think that it is a  two month work.<br>
<br>
basically what we have to do is the following:<br>
<br>
  0 develop a Haskell HTML DOM library. Just 31 objects to manage HTML trees<br>
     See the HTML DOM Objects Reference at<br>
<a href="http://www.w3schools.com/jsref/default.asp" target="_blank">http://www.w3schools.com/jsref/default.asp</a><br>
      I suppose that this is not yet done<br>
      Can make use of the XML structure defined in HXT<br>
<a href="http://hackage.haskell.org/package/hxt-8.5.2" target="_blank">http://hackage.haskell.org/package/hxt-8.5.2</a>. HXT has namespace<br>
      support. This is needed for defining custom attributes and tags (4 and 5).<br>
<br>
     each HTML DOM method will do two basic things:<br>
          a) update a copy of the HTML page tree in the SERVER<br>
<br>
          b) send trough an Ajax channel the equivalent javascript<br>
method, that will be executed in the web browser<br>
<br>
   3 create a minimum javascript module that:<br>
        read Ajax responses and execute them in the web browser, for<br>
the above functionality<br>
        listen for events and forward them to the server trough Ajax.<br>
<br>
   4 define additional XML attributes to be interspersed in the HTML tree for<br>
       specifying url&#39; s in the server where the server events will be<br>
forwarded  (for 3)<br>
           &lt;button server:onclick=&quot;<a href="http://server/path.." target="_blank">http://server/path..</a>.&quot;&gt;<br>
<br>
   5 a mechanism for defining custom XML tags for extensibility: with<br>
the name, the parameters and the library code that handle it<br>
      example of custom tag inserted in the HTML: &lt;t:table<br>
t:source=&quot;#{hasjkelldata} param1=......&gt;<br>
<br>
   6 some templating that read 5 and produces a HTML tree and Haskell code.<br>
<br>
<br>
So, people, feel free to question anything. This is just the starting<br>
point to put ideas in the table and discuss all of this<br>
_______________________________________________<br>
web-devel mailing list<br>
<a href="mailto:web-devel@haskell.org">web-devel@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/web-devel" target="_blank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
</blockquote></div><br></div></div>