PAJAJ Information
Methodology
What is the PAJAJ framework, it stands for (PHP Asynchronous Javascript and JSON). It is a object oriented Ajax framework written in PHP5 for development of event driven PHP web applications. The framework follows 5 basic principles:-
Simple:
You do not have to be an expert at PHP, HTML, JavaScript, and CSS to use the framework. You can do most, if not all, your coding in PHP, and the framework will generate HTML, CSS, and JavaScript for you. There are object for most of the HTML element, with method to manage common task, like updating the content of a Div or items in a forms Select pull down. A lot of the other frames include a simple example that is anything but simple. For my simple example I have been asked where the rest of the code is!
-
Develop how you want:
the framework supports 3 different development models: i. the developer develops the whole application and interface in PHP, since the framework knows about HTML elements you want to interact with, i.e. there are objects for Select, Div, Table with instances with unique IDs; it is easy to have the framework generate simple html and CSS for you. ii. A designer generate a pretty but dump page, and you then hook events to it to make it a real application (see Last Binding of Event below) iii. You design an interface as a template (example Smarty), and have the framework make html, CSS, Javascript that you pore into the template.
-
Event Driving:
I would rather have events delivered to the back-end, and decide there what actions to take then to write a lot of JavaScript in the front-end. What happens after an event?:
- The front-end gather information about the state of the page
- The back-end see if there is an event handler registered for this event
- If there is a registered event handler, it is call with the information from step i.
- After processing data is return back, if any, to page for processing:
- Preprocessor Action: example setting a spinning hour glass gif, to tell the use that something is happening.
- Postprocessor Action: do something standard with the data that comes back, like update a div.
- Back-end delivers code to front-end: have the back-end tell the front-end what it want to do, or message the user.
-
Late Binding of Events:
The pages HTML does not need to changed event and there logic (event handlers) are bound at run time. So your wed designer could delivery a pretty, but dump from, and without changes to the HTML you can make it into a AJAX enabled application. This make for simpler markup and an easier separation of design and code.
-
Object Oriented:
There are not only objects for the Ajax plumbing, but for page elements that you are interacting with. The page element objects have method to make this interact easier to program.
This Page's Source
<?php
require_once('../../CO.inc');
$section = CO::getStyledTag('DivDropShadow', null, null);
$section->add(file_get_contents('content.htm'));
$HTML->add($section);
$HTML->add(br());
// This saves a static copy for sourceforge
print $HTML->save('index.htm');
?>
Examples
Page Tempate
This page uses PAJAJ's MiniTemplate. MiniTemplate uses PHP as a templating language. It work's much like Savant 3, but smaller and it takes advantage of PAJAJ's code registry to handle addition of CSS and JavaScript code.
The template file can be set in the defaults.ini (example: DefaultTemplateFile = /templates/ pajaj_examples.tpl) or by calling the setTemplateFile($file) method from either a body or html tag object
Recent Changes
- 2006-01-29: Added AjaxMiniCalendar Widget
- 2006-01-29: Default template can now conditionally add page or server side comments into the page, if they are available
- 2006-01-16: Added OctopusContainer styled element
- 2005-10-26: The page template can now be set in the configuration file (defaults.ini and/or [APP FILLENAME].ini)
- 2005-10-25: Added the ability to set configuration and template variables in defauls.ini in root PAJAJ dircetor, and/or in application directory, and/or in [app file name].ini file
- 2005-10-20: Validate that PAJAJ output with HTML validaters, produces XHTML Transistion code
- 2005-10-18: Added CssVMenu vertcal menu class
- 2005-10-11: MiniTemplate class: small fast templating engine, like Savante but littler and takes advantage of PAJAJ's code registry.
- 2005-10-09: Added stylable element, these are like mini widgets
- 2005-10-09: Addition of a very small but PAJAJ integrated templating engine
- 2005-10-08: Alot of change most notibly the additio of a html class to handle the page
- 2005-10-08: Addition of a Google Maps widget
- 2005-08-12: Added more information to be returned from events on tables and lists
- 2005-08-13: Added change of value,innerHtml and setting selector options to ajaxUtil.processReturn(), so can be handle by default handler
- 2005-08-19: Rewrote server side replies in ReplyRegister class, to more easily handle return of multiple actions and Widget return data to browser
- 2005-08-19: WebServerSide changed to AjaxServerBase and now depends on ReplyRegistery
- 2005-02-20: New widget base class.
- 2005-02-20: Wdgets can now register class event handler, and there is default hanlder support.
- 2005-02-22: Added SubModal widget for modal dialog box, not an Ajax component