public
Description: Rails Content Management System engine
Homepage:
Clone URL: git://github.com/atd/station.git
atd (author)
Wed Jun 03 08:08:09 -0700 2009
commit  b83d82288e6d3ff731428f5cba9c0c5436a17396
tree    c5d94c0bddc54b8c1b37892ee879577c80c1c521
parent  45f231f9e87d65ddd0a6f9c7ce7f8a9a9d5a5c8e
name age message
file LGPL-LICENSE Mon Jan 28 08:46:44 -0800 2008 Initial import git-svn-id: svn+ssh://rubyfor... [atd]
file README.rdoc Thu May 14 07:40:51 -0700 2009 Update Rakefile and README.rdoc [atd]
file Rakefile Thu May 14 07:40:51 -0700 2009 Update Rakefile and README.rdoc [atd]
directory app/ Loading commit data...
directory config/
directory doc/ Mon Feb 02 03:19:42 -0800 2009 Enhance doc git-svn-id: svn+ssh://rubyforge.or... [atd]
directory generators/
file init.rb Fri May 08 04:43:01 -0700 2009 Avoid collisions of Helper and FormHelper methods [atd]
file install.rb Fri May 08 03:26:24 -0700 2009 Station Refactorization [atd]
directory lib/
directory tasks/ Wed May 13 03:50:17 -0700 2009 Add task to regenerate attachment_fu thumbnails [atd]
directory test/ Mon Jan 28 08:46:44 -0800 2008 Initial import git-svn-id: svn+ssh://rubyfor... [atd]
file uninstall.rb Mon Jan 28 08:46:44 -0800 2008 Initial import git-svn-id: svn+ssh://rubyfor... [atd]
README.rdoc

Station

Station is to Rails in Content Management System like Rails is to Ruby in Web Development.

  Rails   = Ruby  + Web Development
  Station = Rails + Content Management

Station provides your Rails application with a "CMS framework". That means authentication, authorization, roles, permissions, categories, tags, etc… but from a very flexible scope.

Webpage - Code - Documentation

Features

  • Authentication: Login/Password, OpenID, Central Authentication Service (CAS), CookieToken
  • Authorization: Affordances, Roles and Permissions
  • Activation: Email validation, Password reset
  • Atom feeds, RFC 4287
  • AtomPub protocol, RFC 5023
  • Taxonomies: Categories, Categories Domains
  • Folksonomies: Tags, Taggable models
  • Logos for models
  • Sortable lists for models
  • Integration with exception_notification plugin

Requirements

  • Rails 2.3.2
  • RubyGems:
    • ruby-openid
    • atom-tools
    • hpricot
    • mislav-will_paginate
  • Rails Plugins:
    • attachment_fu
    • exception_notification (optional)

Installation

Plugins

You need attachment_fu for Logos and Attachments:

  script/plugin install git://github.com/atd/attachment_fu.git

To install Station, run:

  script/plugin install git://github.com/atd/station.git

Install exception_notification plugin if you want to receive debugging emails from your application

  script/plugin install git://github.com/rails/exception_notification.git

Gems

Run rake gems:install to install the required gems

Architecture

You can add this functionality to any of your ActiveRecord models:

Basic

ActiveRecord::Resource:a model that have, at least, CRUD operations and can be imported/exported in different formats.
ActiveRecord::Content:a Resource that belongs to a Container, e.g. a Post
ActiveRecord::Container:a model that have many Contents, e.g. a Space
ActiveRecord::Agent:a model with authentication, authorization and potencial to perform actions over Resources, e.g. a User
ActiveRecord::Stage:a model that defines an Authorization framework for Agents, e.g. a Group

Complements

ActiveRecord::CategoriesDomain:a model which instances define Ontology domains
ActiveRecord::Categorizable:a model that can be classified in any Category
ActiveRecord::Taggable:a model that can be tagged
ActiveRecord::Logoable:a model with Logo
ActiveRecord::Sortable:a model with a sortable list

Generators

Agents

An Agent has the capability to post Contents to Containers. An User is the example of Agent

  script/generate station_agent Model

Resources

  script/generate station_scaffold Model attributes

Example

Blog

Create personal blogs with a pair of commands:

  script/generate station_agent User
  script/generate station_scaffold Article content:text

  rake db:migrate

Users now can entry their own Articles

You can add AtomPub support for Articles creation. You must implement atom_parser method in Article model:

  def self.atom_parser(data)
    entry = Atom::Entry.new(data)

    { :body => entry.content.xml.to_s }
  end

TODO

  • Agents authentication support: OAuth
  • Microformats
  • RDF: FOAF + SIOC

Copyright © 2008-2009 Antonio Tapiador, released under the LGPL license