You are viewing...

Just threw Excerion System on GitHub

Updated on February 19, 2013 at the 15th hour
Posted under:

DISCLAIMER: Expressed views on this blog are my own. be consistent with my Open Source declaration, I decided to release this thing. It is a library that provides common tasks in a wrapped form. Mainly created from repetitive code.

Beware, it is a beta library written in PHP, so I don't suggest using it for production. The JS lib is also experimental.

Beta meaning things are always subject to change without any notice.

Here's links to sections of the article.

PHP Lib - Mainly back-end tasks.

JS Lib - Primarily for front-end tasks.


Main Features

Atomic Memcache provides a cache wide lock for keys to maintain consistency between reading and writing. Writers will lock and and read requests will have to wait until the writer has unlocked the resource.

Logger provides simple database logging. A log file API is being evaluated for its needs.

Action Log provides a data structure to maintain user actions on the database without creating a new table for each kind of action. User Actions are essentially a log with some data attached to them. Uses Logger to keep track of extra information.

Resource State provides a data structure to keep track of a resource state. A resource can be whatever you map resource name to. It is best for lightweight checks of whether a resource is available/new/hidden.

Lock provides a simple way to 'lock' a resource and to check if the lock is still available or re-locking a resource.

IAAPI provides a way to handle http requests through the four canonical methods (GET, POST, PUT, DELETE).

Notifications provides an easy to use way of adding notifications to the database. Uses Resource State to store it's state.

Task Node provides an easy way to separate multiple tasks without the heavy use of nesting if/else statements.

Session Manager adds database level sessions.

Database provides a layer of easier database querying.

ExternalData abstracts Database entries into an easy to use Object model.

Navigator Menu provides an abstraction of a two-layer menu.

Template provides a simple templating system for PHP pages.


CurlRequest - Curl functions in object form.

NetworkUtils - Encode/Decode IP Addresses and find other information about an ip address. Needs the Geoip extension.

Password - Provides universal hashing function for passwords.

StringUtils - Helps with formatting strings, so they behave!

URLUtils - Wraps up PHP's url parsing/encoding/decoding functions

Third Party

LZW - Compression Library.

PHPAMQPLib - Library that provides the AMQP function to use an AMQP server like RabbitMQ.

Not finished

SDValidator (evaluating the need) - Making form validation much easier.

Achievement - Provides the retrieval of achievements using Resource State. Logic for awarding/checks is handled in a Java server. There are no plans to bring the logic/checks to PHP as the Java library will be open sourced as well.

CSRFToken - Provides simple functions for providing CSRF tokens.

JS Lib

Main Features

Excerion System - Provides the main initalize function to setup the system and do tasks after the page can been loaded. Everything that needs to be done when the system is being setup is done in the initialize function.

Scrollet - Provides infinite scroll to primarily list elements, though it exposes an tagname can be modified for tables. It primarily supports scroll down infinite scroll and there are plans to support reverse direction infinite scroll.

Excerion UI - Provides a default UI Element for you to build your own UI Objects off from. You build your UI object from these available functions (willLoad, loadView, setView, and remove). Excerion UI also provides a set of default objects such as a Modal or Alert Object that can be further extended for your uses.

Animations - The animations provided are experimental and may not work with every device. The ideas is to provide a set of default animations.

Model - Provides a way to data-bind by attaching classes to dom objects. Changes are pushed in sort of a multi-cast way where all objects with the model name and key as the css class receive updates. You may create a prepare_{key} and commit_{key} on the model object for your purposes. Prepare for modifying the value before it is put into the data storage and Commit for formatting the value before it is pushed out to all the receivers (useful for number formatting, though this is done by default). Short coming may be the fact that there is no auto-bootstrapping the dom object that you attach the css class to, but you can contact the model object for the value, so it is not too big of a short coming.

UI Features

Modal Window - Creates an extensible modal window where a 'canvas' is created for you where you can inject html or load a file into this 'canvas'. The main idea here was to provide a simple easy to read modal element that anyone can use and edit. There are multiple events are available from the root modal element for example when the data is loaded after a request to when the content has finished loading in the modal. The biggest gem about this is the fact that you can load in an html file and it will be cached, which makes for parts of your application being cached on the fly without any more complicated code.

Default Modal Window - Wraps the Modal Window and instead exposes a simpler set of options such as a populator function for populating the modal window after the data is retrieved. It is mainly used for building a modal dynamically from data from a request, so the naming here is a bit off and will probably be changed to Dynamic Modal in the future.

Alert - The Alert is another easy to use element where you are given a 'canvas' to do whatever you want with. The point of an alert is to inform the user of an action that has taken or did not take place. What simple way to do that than to expose a way to add a message? It also allows you to change the title of the window or automatically close the alert after a certain amount of time, if you so desire. The last thing it exposes is a 'closing' option which is essentially a function to do primarily cleanup tasks, though it is useful for resetting a form or redirecting the user to another place.

Notification - Notification is the simplest element that appears from the top and the disappears (slide down / slide up). It exposes an option to set an icon and text of the notification. Each notification appears successively (one after another) so it is not suggested to throw a ton of notifications at the user. If needed in the future, the appear/disappear functionality can be modified to do whatever you want.

List View - List view is a gem to me because the assumption is that we push all data storage to the jQuery and the DOM, so the list view object has NO IDEA what elements are in it. If you wanted to find the first element in your list, you get the view object from the list view object and then select the first child from the list. The base functionality provides an extensible list view that exposes an api for building the list items based off of data (templating). It uses the Scrollet object for infinite scroll functionality. Allows for removal of elements by querying based on the jQuery data api. The events that can be listened to here are for when the data is loaded, list contents has loaded, when a list element is removed by query

Table View - Same assumptions as the list view minus the Scrollet (for now) and querying functionality. If the need arises, then these can be implemented.

Experimental UI Features

Menu Strip - This is experimental and may be removed in the future. The idea is to provide a responsive menu that would appear from/collapse to the side of an element along as well as shifting to the top of an element if the element was deemed too small for the menu to fit.

Loading View - This is experimental and may be removed. The idea is to provide a singleton loading view, so place holder views would never have to be created and deleted, but instead attached and detached for later use.

Window - This may be removed in the future. This is currently not in use since the introduction of the Modal Window. The idea is to provide a draggable view, but the idea has been abandoned since.
You just read "Just threw Excerion System on GitHub". Please share if you liked it!
You can read more recent posts here.