>> onTap does a few >> things that no other framework does (not that I've seen >> anyway) that I >> find very useful.
> Out of curiosity, what are those? Heh... well I really hadn't intended this to become a plug for the onTap Framework, since Dave had already indicated he wasn't considering it as an option for his projects. But just briefly: 1. Branding: Probably the biggest advantage in my mind is the ability to easily provide discrete application branding -- not just of certain images and predesignated text but also custom features/interfaces with very little effort and without editing any of an application's core code. Basically if you look at an HTML page generated with the onTap framework, you can point at any given graphic or bit of text and you can say "I want to add to/move/remove/replace this with" and there's almost no request you can make in that regard that I can't accomodate in a few minutes without making any changes to my core code. 2. Plugin Manager (closely related to item 1) -- extensions to the framework can be installed and removed without modifying any of the application's existing templates or config files. The Plugin Manager itself provides an API and an interface for the extensions that's similar to the Windows Add/Remove Programs wizard. I know some other developers provide similar installers for their software but generally don't have the kind of flexibility that the onTap framework provides (re: item 1) -- I'm not aware of any other open-source frameworks that provide this functionality for free. 3. DSN/Database/SQL Syntax management. The framework provides a collection of features which allow me to write code for MS SQL, Oracle 8i+, MySQL 4+ and MS Access with a single codebase. Variations between the databases are handled by the API, so my application code never changes, and when I write a new app, there's no need to write multiple versions of my data management code. The latest iterations of this are largely supported by JDBC and also have additional features beyond simply managing syntacitcal variations in both DDL and DML, like fetching primary and foreign key constraints from a table, which is how the form tools can automate select boxes and radio buttons for simple lookup tables. This might be available with some other frameworks -- I have yet to see it, but I'm willing to admit it may not be unique. 4. Form tools (closely related to the other 3 items). To speed development for smaller projects I can write out a form as a small block of standard xhtml, replace the <form> tag with a <tap:form> tag, add a tap:dbtable attribute and in addition to having the formatting of the form generated with an XSL style sheet (like CF7's XForms) also immediately have the form pre-populated with values from the specified database table. There's no need to specify value attributes in the form input elements or to bother with htmleditformat() around the values (although I can choose to). It also matches server-side validation to javascript validation without using the insecure standard CF server-side validation. A larger project is likely to be little different - I would simply use my model objects to prepopulate the form by appending their values to the attributes structure. (I think PLUM provides some of this functionality also, although I don't know enough about PLUM to provide a thorough comparison.) One feature I'm reasonably certain PLUM doesn't have is that even after the form is created, you can update the values of the form fields server-side, similar to the way you can populate forms with JavaScript for example "htlib.formSetFields(myform,mystructure)". Actually any element of the form can be edited individually, down to the level of individual attributes and/or in-line CSS properties (so if you wanted you could set an inline css property on an input element to make its text right-aligned, without any string manipulation and without changing anything else about the form). This goes back to item 1 and the ability to provide seemless, discrete branding and customization -- because html elements are handled by this API they can be created, modified, passed back and forth between tags or CFC's -- it gives you a kind of versatility in the development of the interface that's just not available with anything else. s. isaac dealey 954.522.6080 new epoch : isn't it time for a change? add features without fixtures with the onTap open source framework http://www.fusiontap.com http://coldfusion.sys-con.com/author/4806Dealey.htm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Discover CFTicket - The leading ColdFusion Help Desk and Trouble Ticket application http://www.houseoffusion.com/banners/view.cfm?bannerid=48 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:209698 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54