Home > station

station

Station is a project mainly written in Ruby, based on the LGPL-3.0 license.

Rails Content Management System engine

= Station

Station is a Rails Engine focused on Content Management and Distributed Social Software.

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

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

{Web page}[http://rstation.wordpress.com/]

== Features

  • Agents
    • Authentication: Login/Password, {OpenID}[http://openid.net/], {Central Authentication Service (CAS)}[http://www.ja-sig.org/products/cas/], CookieToken
    • Authorization: Access Control, Roles and Permissions (RBAC)
    • Activation: Email validation, Password reset
  • Resources
    • Atom feeds, {RFC 4287}[http://tools.ietf.org/html/rfc4287]
    • AtomPub protocol, {RFC 5023}[http://tools.ietf.org/html/rfc5023]
    • Contents and Containers relations
  • Folksonomies: Tags, Taggable models
  • Logos for models
  • Sortable lists for models
  • Integration with exception_notification plugin

== Architecture

You can add any of the following functionality to any of your ActiveRecord models:

=== Basic ActiveRecord::Agent:: a model with authentication, authorization and potencial to perform actions over Resources, e.g. a User ActiveRecord::Resource:: a model that have, at least, {CRUD}[http://en.wikipedia.org/wiki/Create,_read,_update_and_delete] operations and can be imported/exported in different formats, like Atom/RSS. ActiveRecord::Content:: a Resource that belongs to a Container, e.g. a Post ActiveRecord::Container:: a model that have many Contents, e.g. a Project ActiveRecord::Stage:: a model that defines an RBAC Authorization framework for Agents, e.g. a Group

=== Complements 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 params_from_atom method in Article model:

def self.params_from_atom(entry) { :body => entry.content.xml.to_s } end

== Requirements

  • Rails 2.3.4
  • RubyGems:
    • mislav-will_paginate
    • ruby-openid (optional)
    • atom-tools (optional)
    • nokogiri, prism (optional)
  • Rails Plugins:
    • attachment_fu
    • exception_notification (optional)

== Installation

=== Plugins

You need attachment_fu for Logos and Attachments support: script/plugin install git://github.com/technoweenie/attachment_fu.git

To install Station, run: script/plugin install -r stable 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 gem, mislav-will_paginate

You can install this aditional gems:

  • ruby-openid, for OpenID authentication support
  • atom-tools, for AtomPub support
  • nokogiri, prism, for HTML management, Microformats discovery

== TODO

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

Copyright (c) 2008-2010 Antonio Tapiador, released under the LGPL license