Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
DEPRECATED, do not use it.
Ruby CSS

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
app
db/migrate
doc/template
generators
lib
locales
public
tasks
test
LGPL-LICENSE
README.rdoc
Rakefile
init.rb
install.rb
routes.rb
uninstall.rb

README.rdoc

Content Management System plugin

CMSplugin is to Rails in Content Management like Rails is to Ruby in Web Development.

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

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

CMSplugin follows the SIOC ontology model, sioc-project.org/ontology

Project page: rubyforge.org/projects/cmsplugin

Documentation: cmsplugin.rubyforge.org/

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.

ActiveRecord::Container

a model that have many Contents.

ActiveRecord::Agent

a model with authentication, authorization and potencial to perform actions over Resources.

ActiveRecord::Stage

a model that defines an Authorization framework for Agents.

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

Features

  • Authentication: Login/Password, OpenID, Central Authentication Service (CAS), CookieToken

  • Authorization: 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.2.2

  • RubyGems:

    • ruby-openid

    • atom-tools

    • hpricot

    • mislav-will_paginate

    • atd-calendar_date_select

  • Rails Plugins:

    • engines

    • attachment_fu

Installation

Plugins

You need Rails Engines first:

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

see vendor/plugins/engines/README to finish the instalation (don't forget to modify config/environment.rb)

To install CMSplugin, run:

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

Install exception_notification plugin if you want to receive debug emails

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

Gems

Run rake gems:install to install the required gems

CMS

Generate the CMS infraestructure:

script/generate cms

And generate and run the migration:

script/generate plugin_migration

Now you can generate Agents and Contents.

Generators

Agents

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

script/generate agent Model

Contents

A Content is a piece of information suitable to be posted to some Container by some Agent

script/generate content Model attributes

Example

Blog

Create personal blogs with a pair of commands:

script/generate agent User
script/generate content Article body:text

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

Something went wrong with that request. Please try again.