Common Content

Common Content is a Rails Engine Gem that provides a mini-CMS (Content Management System) based upon Mongoid/MongoDB and Bootstrap.

The purpose of Common Content (CC) is to provide a easy, pluggable way for Mongoid-based Rails sites to give users the ability to edit the blocks of content that appear within the site. CC is not a full-fledged CMS system, it’s a simplified way that site admins can create blocks of content using a streamlined DSL and then content producers can maintain and edit the content setup by the admins or ‘editors’.

Installation

CC must be hosted within a Rails 3.x app that also includes Mongoid. CC does not specify a Mongoid connection and relies on the host app for Mongoid config.

In your gemfile

gem ‘mongoid’ gem ‘common-content’

`bundle install`

Using

(CC) is a rails engine and must be installed as a gem within a rails 3.x host app. It then makes available the /contents path for creating,editing, and viewing Content items.

Views

(CC) has a complete set of views under the /app/views space within the gem. As a rails engine the host app can replace and customize those views by overriding and adding .erb files under a /contents folder in the host app.

The gem uses a convention-based method of finding the views for a particular piece of content. So if the host app wants to provide a custom view for a particular content-item or in the case of edit-views for a certain Resource type you can provide the correct named view partials under the /views/contents folder of your app.

ETags and Caching

The JSON interface to the Content and Page items will use the standard Rails JSON facility, and will return ETags based on the hash of the returned JSON. This should allow caching of the results and cache-invalidation based on the ETag.

TODO

A lot…

Figure out how to link to other content via a HATEOS type url and be able to pick items and order them. How to edit sub-content, just link to it’s show page? Restrict definition and creation to the editor role or login. Add more meta-types like FAQ, definition, etc.

See Also

link:https://github.com/deathbob/Contentment link:https://github.com/parndt/seo_meta link:https://github.com/resolve/refinerycms link:https://github.com/jcasimir/draper link:http://blog.steveklabnik.com/posts/2012-01-06-implementing-hateoas-with-presenters