While working at DMS, I built and refined a custom framework over the duration of a few different projects. It was designed to speed up software development time, as well as increase consistency of file structure and visual appearance.
ColdFusion components (CFCs) were built to handle common interface objects. Early versions used simple HTML components, a revised version used the jQuery style, and the most recent version uses the Twitter BootStrap style. This included:
- Customizing styling,
- Adding a new button type,
- Custom link styling to match the button styles,
- Button sets (grouped buttons with spacing between), and
- Button groups (“button bars”).
Much of the content of the systems is tabular, so styling and usage were added to the developer reference pages.
Since many pages contain a large amount of data that can be grouped according to specific criteria, expanding and collapsing functionality was also added.
Including developer documentation for quick reference.
Global form validation and styling are also part of the core framework.
Flags and icons are also handled by the framework. The original version used GIF images, the revised version used jQuery icons, and the current version uses the FontAwesome icon library.
For consistency of icons across common tasks like adding, editing, saving, and approving, the framework supplies some normalized icon names (which are basically pointers to other specific icons). By using the normalized name, it is easy to globally change the icon for a specific function.
Users frequently filter reports for specific subsets of data. This was also encompassed by the framework both in saving of changed filters, as well as interface components to activate filters.
Common messages are also handled by the framework.
Global custom error handling was added to provide friendly feedback messages to the users if there is a problem with the database transactions.
Global helpers for common tasks such as updating a select box based on an AJAX response are also a key feature.
The framework also utilizes automatic file includes for Javascript, CSS, and custom functions on a per-page basis to remove the need to do this repetitive task manually. By abstracting this into it’s own separate files, it helps promote small, focused code that is easier to maintain as well as less potential for file conflicts during version control and migration.