1
= Station
2
3
Station is a Rails Engine focused on Content Management and Distributed Social Software.
4
5
  Rails   = Ruby  + Web Development
6
  Station = Rails + Content Management
7
8
Station provides your Rails application with a <em>CMS framework</em>. This means authentication, authorization, roles, permissions, tags, etc... but from a very flexible scope.
9
10
{Web page}[http://rstation.wordpress.com/]
11
12
== Features
13
14
* Agents
15
  * Authentication: Login/Password, {OpenID}[http://openid.net/], {Central Authentication Service (CAS)}[http://www.ja-sig.org/products/cas/], CookieToken
16
  * Authorization: Access Control, Roles and Permissions (RBAC)
17
  * Activation: Email validation, Password reset
18
* Resources
19
  * Atom feeds, {RFC 4287}[http://tools.ietf.org/html/rfc4287]
20
  * AtomPub protocol, {RFC 5023}[http://tools.ietf.org/html/rfc5023]
21
  * Contents and Containers relations
22
* Folksonomies: Tags, Taggable models
23
* Logos for models
24
* Sortable lists for models
25
* Integration with exception_notification plugin
26
27
== Architecture
28
29
You can add any of the following functionality to any of your ActiveRecord models:
30
31
=== Basic
32
ActiveRecord::Agent:: a model with authentication, authorization and potencial to perform actions over Resources, e.g. a User
33
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.
34
ActiveRecord::Content:: a Resource that belongs to a Container, e.g. a Post
35
ActiveRecord::Container:: a model that have many Contents, e.g. a Project
36
ActiveRecord::Stage:: a model that defines an RBAC Authorization framework for Agents, e.g. a Group
37
38
=== Complements
39
ActiveRecord::Taggable:: a model that can be tagged
40
ActiveRecord::Logoable:: a model with Logo
41
ActiveRecord::Sortable:: a model with a sortable list
42
43
== Generators
44
45
=== Agents
46
An Agent has the capability to post Contents to Containers. An User is the example of Agent
47
48
  script/generate station_agent Model
49
50
=== Resources
51
52
  script/generate station_scaffold Model attributes
53
54
== Example
55
56
=== Blog
57
Create personal blogs with a pair of commands:
58
59
  script/generate station_agent User
60
  script/generate station_scaffold Article content:text
61
62
  rake db:migrate
63
64
Users now can entry their own Articles
65
66
You can add AtomPub support for Articles creation. You must implement params_from_atom method in Article model:
67
68
  def self.params_from_atom(entry)
69
    { :body => entry.content.xml.to_s }
70
  end
71
72
== Requirements
73
74
* Rails 2.3.4
75
* RubyGems: 
76
  * mislav-will_paginate
77
  * ruby-openid (optional)
78
  * atom-tools (optional)
79
  * nokogiri, prism (optional)
80
* Rails Plugins:
81
  * attachment_fu
82
  * exception_notification (optional)
83
84
== Installation
85
86
=== Plugins
87
88
You need attachment_fu for Logos and Attachments support:
89
  script/plugin install git://github.com/technoweenie/attachment_fu.git
90
91
To install Station, run:
92
  script/plugin install -r stable git://github.com/atd/station.git
93
94
Install exception_notification plugin if you want to receive debugging emails from your application
95
  script/plugin install git://github.com/rails/exception_notification.git
96
97
=== Gems
98
99
Run rake gems:install to install the required gem, mislav-will_paginate
100
101
You can install this aditional gems:
102
103
* ruby-openid, for OpenID authentication support
104
* atom-tools, for AtomPub support
105
* nokogiri, prism, for HTML management, Microformats discovery
106
107
108
== TODO
109
110
* Agents authentication support: OAuth
111
* Microformats
112
* RDF: FOAF + SIOC 
113
114
115
Copyright (c) 2008-2010 Antonio Tapiador, released under the LGPL license