IBM are working on an impressive looking product called QED Wiki, developed with the Zend Framework. Fundamentally it’s a wiki like any other. But there is a cool layer on top of it that could be revolutionary (although like many Web 2.0 concepts will probably fall short and just be “cool” - we can hope). The interface allows you to create “situational applications” that can link different components together with the ease of a wiki. It doesn’t really make much sense just reading about it so go watch the video about it. On a related note, you can now get snapshots of PHP 6.
The final irony is that it’s pretty much free. Since it’s .NET, to really use it you need Visual Studio, but the Atlas part itself is free and should be perfectly usable with the Express version of the Visual Studio projects.
I previously ranted that being unable to have two ASP controlled forms in a single ASP.NET page is a serious flaw. They may be a way round it though. I would assume that ASP.NET can’t output two “smart” forms (the ones with
runat="server") on the same page but I’m pretty sure that there is nothing stopping a HTMLpage itself actually holding two of them. Of course that could be wrong. Essentially all you have to do is load the extra forms using AJAX and I think everything will work. (I’m working a on a page (not in ASP.NET) that has a table of data with a status column. Each column needed to have a drop down box letting you change the status. Since the number of statuses is large I decided to have a link that AJAXly changed into the dropdown box and a button when you clicked it. Of course you could click all the links and not submit any of the forms leaving you with a page that actually has a bout 30 forms on it.) ASP.NET, ASP, AJAX
replace_id function that accepts three arguments. An element id, a URL to GET to replace its contents with and finally a function to be called when it’s all completed. And then things got silly.
function chain_replace(urls, ids)
id = 0;
next_id = function()
if (id < = ids.length)
replace_id(urls[id], ids[id++], next_id());
} Now the
next_id()(); bit towards the end should be a clue that something a little odd is going on. But I must confirm that this code does actually work. With enough arguments it might make the browser explode with some sort of call stack problem though… closures