Skip to content

Orion98MC/Boxes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Boxes for Rails
===============
“You box them, then you shape them !”


This plugin helps you transform an existing Ruby on Rails application with existing models etc... into an easy to customize CMS with Apotomo widgets.
This is a Pre-alpha release in heavy development. Be sure to checkout the latest version.

Principles
----------
Boxes uses Apotomo's widgets framework.
With Boxes you concentrate on making greate re-usable widgets and let boxes manage the widgets layout/hierarchy/configuration.

Boxes manages a hierarchy of Box widgets per ActionController action, it also manages there layout and there event responses.
Each Box can contain one Widget (an Apotomo widget)
Each Box can also contain other nested boxes.

a Box itself is an Apotomo stateless widget.
It has two states:
  * in the default state (:display), it displays a widget (the attached Apotomo widget) and the nested Boxes (if any)
  * in the :configure state, it displays a form with all the box-meta parameters to configure the box behavior.

Roadmap:
	* Dynamic widget tree creation based on controller#action (ALREADY DONE)
	* Visual widget tree creation (ALREADY DONE)
	* Visual configuration of widgets and layout (PARTIALY DONE)
	* Visual event response routing (TODO)
	
	
How do I use Boxes, gimme code !
--------------------------------

After installation (see below), it's that easy:

class DashboardController < ApplicationController
  include Apotomo::Rails::ControllerMethods
  
  has_boxes :except => :foo
  
  def home
  end

  def admin
  end

  def contact
  end

  def foo
  end

end

In the app/views/dashboard/home.html.haml view:

%h1 Dashboard#home
%div.boxes
  = render_boxes
  = link_to_add_sibling_box "Add a box"

In the application layout view (or the dashboard layout view), we must add a javascript to trigger unobstrusive ajax calls:
Boxes add a css class 'ajax' to every ajax links and forms, you may add this in a javascript file or inline on the layout.

Example using jQuery:
jQuery(function(){
  jQuery('a.ajax').live("click", function() { jQuery.get(this.href, null, null, "script");return false; });
  jQuery("form.ajax").live("submit", function() {
    form = jQuery(this);
    jQuery.ajax({url: form.attr("data-event-url"), data: form.serialize()});
    return false;
  });
});


Install:
--------

Pre-requisits: "apotomo" gem, "acts_as_list" gem, "haml" gem and jQuery
then,
$ rails plugin install <Boxes-on-GitHub-repository>


Meta model:
-----------

Let's create the meta model migration:
$ rails g boxes:migration

Then run the migration:
$ rake db:migrate

You can change the meta-model table name, add attributes of your own but don't mess with the generated attributes.
(TODO example of custom meta-model)


Screen cast demo:
-----------------

http://www.youtube.com/watch?v=pXEz5DJx_ho

About

A Ruby on Rails plugin to add CMS ability with Apotomo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages