Welcome to my collection of tools for creating web applications.

I have always been interested in good Human Computer Interface.

Along with Will Cook, in the late 80's we worked a screen generator written in Eco-C that we fondly called Scream-it. It was a set of data structures to describe the life cycle of a screen and its fields that were passed to functions to render the screen, and edit or validate the user's input. In may cases it was a time saver to describe what I wanted on the screen and have the functions render it, and retrieve valid user input. One thing that was built into this was the idea that the ESC key would always take you back, if in a field it reverted the field to its original value, and if at the screen level, returned a flag indicating that the user had aborted the edit.

So it was natural that when I started to code applications on the web I started to think of ways to quickly generate screens that would store valid data in a database. I created a set of tools in PHP 4 called sswebit that could be told what table to allow the user to browse, add, change and delete records to, by just giving it the name of the table. Using the Object model of PHP 4 I was able to extend the base behavior and correct some the the assumption that sswebit made, for example that if a field was a SSN, the field would need to be extended so it would know it was numeric only, and was required to have 9 digits. The base logic was a Model, View, Controller. This was a good solution for applications that had screens with data from a single table on it.

sswebit included an authentication and access module that would allow users to levels of access, to particular areas of the application, if they could read, write and delete in the application areas, and if there was a hierarchy in the data, where this access started in the hierarchy. This was designed with accounting systems in mind where you would have application areas such as AP, AR, PR, and GL, and the company would have a hierarchy (for example organizatinal units, such as, regions, locations, divisions, department). Employees could be given access to particular applications, for a particular organizational unit.

While looking for articles on OO development for PHP I found an article about strategy patterns http://www.phppatterns.com/docs/design/strategy_pattern that had very usable code for validating fields. I modified this code a bit to meet my requirements (to pass back what fields had failed the validation).

sslib was created to split out the authentication and access module, and to move from a table based system, to a render base system. With sslib you can create a object, that can render it self, get the data from the screen, validate the data, and store it. By combining the objects you can have a screen that shows data from several database tables, or other data stores. An iterator and data dictionary are also a part. The system can learn about the fields from, the database they come from, an XML file, the data dictionary, and at run time. A base web application was created that did not use the MVC framework. Another small bit of code that was added was an object to allow you to mock up a screen. A generic object to list the rows from a table was added also, this module can also use a render object to add, change, and delete records from a table.

In sswebit, and sslib, all the screens are created at run time. sslib has been designed with the idea that it could generate code, that then would be executed at run time.

Both sswebit, and sslib are licensed under the GNU Lesser General Public License.

Download swdtk.tar.gz contains sslib and sswebit