Agile Toolkit - 150 features

Agile Toolkit is a web framework and collection of web components aimed at giving developers a fully-functional Web User Interface. The web interface is built using a very smart Object-Oriented princeples, similar to those in Desktop Applications but heavily based on individual component templates and abstraction.

Familiar with CodeIgniter?
Familiar with Sencha or GWT?
Familiar with Ruby on Rails, Yii, or Symfony?
Developing raw PHP application or using micro MVC?

Agile Toolkit packs a 3 major features but also has a huge amount of minor features.

  • Small footprint but huge gain
  • No need to know HTML / JavaScript to build your web app
  • Zero configuration and no code generation
  • Lets you focus on "what", not "how"
  • Encouraging good quality code available for free or fairly priced

Business MVC

Query Building - DSQL

  • Extremely easy to learn and use
  • Object-oriented query model. Multiple queries are not conflicting
  • Querying multiple tables through joins
  • Vendor-independent database feature use
  • Argument quoting and escaping
  • Support for advanced expressions
  • Parametrical queries through PDO
  • Sub-query support (with parametric variables)
  • Automated caching of prepared statements
  • Multiple database connections
  • Native integration with Views, Models, and the rest of Agile Toolkit
  • Extremely lightweight
  • Debugging support
  • Extend to build your own queries using templates

Models

  • Easy to learn and use
  • Uses native PHP code to define
  • Follows your business entities and can divert from your database schema
  • Supports joined tables with different types of relation
  • Foreign key support and subqueries
  • Extensive support for calculated columns
  • Model inheritance for more secure data model
  • Conditions on physical, related and calculated fields
  • Dynamic field types, flags and properties
  • Add additional conditions, joins, fields for existing model on the fly
  • Active record implementation, load, change and save data back
  • Hooks and methods for controlling actions before or after operations (behaviours)
  • One class per model. No XML/YAML or any extra files
  • Define actual fields to be used and their order when using with Views
  • Extract dynamic query from model for multi-record SQL operations
  • Support for "master" fields, which much be conditioned and defaulted to certain value
  • Support for system fields, which will not appear on views. Read-only fields.
  • Model-level validation.
  • Related model traversing. Automatically pre-loads data.
  • Default field values
  • Captions for fields. Automatically produce caption from field name if undefined
  • Extend to add your own properties to fields
  • Model controllers can add behaviour, fields (timestamps, audit, soft delete)
  • Separate table audit / logging
  • Determining and updating only fields which value was changed
  • Use conditions in complex calculated sub-query fields as defined in their respective model
  • Load active record data by id or other field
  • Customize display name by supplying your own SQL

Controllers

  • Controllers have different responsiblities in Agile Toolkit
  • Front-controller is implemented as Page object
  • Libraries are Application-Controllers. They extend how application behaves
  • Helpers in other frameworks may be either Controller or View for better structure
  • Apply one or several controllers on a single object.
  • Model controllers adds behvaiour, conditions, fields or encryption to models
  • Controllers are transparent. Strong encryption controller is attached to model where fields continue to work ir a regular way
  • Register system-wide fall-back functions.
  • Inject methods into objects.
  • Advanced object-level "hook" system

Views

  • Views produce HTML markup, such as button, form, image or icon
  • One view can recursively consist of other views
  • All views rely on a simple-for-designers-to-understand HTML templates
  • Template engine contain no business logic, only define regions
  • When adding view to another, position it anywhere in owner's template
  • Views generate and insert unique-name for each object
  • Function js() allows to bind view with jQuery chains through behaviours
  • Reload view through AJAX painlessly
  • Regardless of complexity, multiple views will not conflict on same page
  • AJAX request can render selective view
  • Views are rendered after everything is initialized. Hence you can delete views after they are added.
  • Because Views are classes, they can inherit each-other
  • Agile Toolkit comes with many built-in views
  • CRUD is implemented as view, hence you can have multiple CRUD controls on the page
  • You can use views for layouting or tabs.
  • View can have default template, but you can specify a different template when adding
  • You can convert view into HTML by echoing it, but never do it. Render will echo everything for you
  • Output is echo'ed only once, after render, so the page will not be displayed partially
  • You can re-arrange objects in a view after they are added through controller
  • Grid based on pure HTML with support for Paginator, Sorting, Totals and inline editing

Application

  • Multiple API classes are available. Select the most appropriate for your web app
  • Support for lightweight config file (php syntax)
  • Full-featured implementation of exception handling
  • Application is derived from View, hence it has a global template (shared.html)
  • Through controllers, add more SEO capabilities to your web application
  • Transparent localization support. Develop your app, then localize
  • Upgrade full Agile Toolkit codebase or addons without loosing your customization
  • Inject your own classes (Form, Grid) to be used everywhere
  • Create multiple applicaiton instances
  • Support for skins allowing to white-label software
  • PathFinder helps locate files in multiple locations based on file type
  • Certain template tags are universally changed to set proper page-links or location to HTML assets
  • Add authentication controller to restrict access on white or black-list basis.
  • Authentication can use default login form or your own
  • Multiple encryptions for authentication - md5, sha1, sha256 and your own
  • Presence of Sticky GET arguments
  • Page-based routing. Can be extended through .htaccess into Ruby-style. Use any extension in URL
  • Support for mod_rewrite.
  • Apps can be deployed in webroot or subdirectory
  • Support for sub-pages and page hierarchies.
  • Inherit one page from another
  • Backwards-compatibility controller
  • Database migration scripts (alter table)
  • Development and Production mode
  • File pushing. Place file with the same name in local directory to override file from Agile Toolkit
  • Compatible with your PaaS PHP Platform

Addons

  • CRUD View — bind with your model to create, browse, edit or delete model entities
  • Filestore — powerful models for storing meta information about uploaded files. Multi-volume support
  • Image — extends File implementation of Filestore but adds ability for automatic cropping and thumbnails
  • Strong Encryption — use OpenSSL for one-way encryption of model fields
  • Payments / Paypal — implement support for charing visitors through PayPal
  • Payments / Realex — credit card processing through Realex Payments
  • Credit Card model — instantly create your payment form
  • CampaignMonitor — taps into SOAP interface of CampaignMonitor
  • OAuth — integrates with 3rd party authentication, Linkedin, Twitter, Google
  • FormAndSave — simple addon adding MVC form with database saving on submit

JavaScript and jQuery Integration

JavaScript and jQuery are fundamental technologies in any modern web application. Agile Toolkit brings abstraction of powerful technologies such as AJAX making them more reliable and easier to use. It's very easy to start using: $page->add('Button')->js('click', $grid->js()->reload() );

jQuery Integration

  • Any view in the system can have jQuery chain attached through behaviour, such as "click"
  • Behaviour on one object can trigger chain on another object
  • Multiple PHP calls on chain transparently converted into JavaScript code. Argument types are converted.
  • One behaviour can trigger multiple chains.
  • You can use your own events and trigger them manually.
  • Redefine selector or use "this", "document" or "window".
  • Submitting form executes jQuery chain also.
  • Enclose chain into function.

jQuery UI extension

  • Avoid multiple requests when user clicks AJAX button inpatiently
  • Handle slow page loading to display global spinner
  • Ability to handle session expiration in AJAX requests
  • jQuery UI widget for form. Adds AJAX submit and nice error display
  • jQuery UI widget for grid. Add field reloading, pagination
  • jQuery UI widget for expander. Expands table and loads page inside
  • Plugin for "atk4_loader". Improves for content loading and reloading
  • Extensible univ.js chain allowing to add more custom JS methods accessible from PHP
  • Support for dynamic loading and JS dependencies.
  • Load AJAX page along with 3rd party jQuery plugins and widgets
  • Growl-style JS success notification
  • Native support of jQuery UI dialogs
  • Widget for menu and link AJAX-ification
  • Support for datepicker

User Interface and design

Agile Toolkit comes with awesome and flexible design (skin). It will let you develop without worrying about the look of your application. If you have designer in your team, he can produce a new and unique skin.

CSS features

  • Typography and CSS reset included, so that you don't need to worry
  • GS-10 is used by default, but different Grid Systems can be used
  • Six CSS classes for building form layouts. Since column, multi-column forms
  • Support for hybrid form layouts. If everything fails, use custom form layout
  • Based on jQuery UI CSS framework. Use themeroller for new theme
  • 128 extra icons included in addition to ones provided with jQuery UI
  • Support for fixed width and full-screen layout
  • Comes with two CSS skis: "default" and "elephant". Switch in index.php file

Templates

  • Views for error, info and warning boxes
  • Form hints
  • Menu template
  • Grid template