PHOTON

Main
About
Trac
Subversion

The Photon framework is made up of individual modules with each at it's base would be little more than a definition stored in the database that would define the following basic attributes for a module:

  • Field Names (in the database and HTML element names)
  • Field Display Names
  • Field Types (e.g. Text, Phone Number, Email, Integer, Currency Value, Date/Time)
  • Field Location in a grid with 0,0 being the top left and r,c being the bottom right where r is the max row number and c is the max column number
  • Relations to other modules and relational table to use and/or fields to join on. The framework would create tables and generate dynamic HTML forms for listing records in the system, viewing those records, editing/creating records, and associating a record with other record(s) in the same module or other modules. Any forms generated for editing or creating would also have validation scripts (both client side via javascript and server side) to make sure the data being entered is valid for its type as specified in the module definition.

In addition to the above basic functionality the core framework would also contain the following features:

  • All display text is stored in the database associated with a specific language. This allowed for multi-lingual use by translating all the US English strings into the needed language and storing it in the same table associated with a different language. The end user could then select the language they wish to use from a list of the installed languages so that people from different countries could use the same system at once.
  • Complete user login system that would allow the administrator to control what modules a user has access to a what they can do with it via ACL (view, edit, delete, create)
  • User roles for creating a single set of access rules and assigning that set to many users
  • User groups for associating data records with a group of people.

In addition it would also be possible for a developer to almost completely bypass the framework and output HTML directly to the browser via their own PHP code themselves using only the parts of the framework that they wish. This will allow for the development of corner-case modules that other frameworks either don't support at all or are difficult to develop for.