Mercury Engine
A basic content editing system based on Mercury Editor.
Whats that?
mercury-engine is a lightweight content editing system that makes it easy to add live in-place editing to your site's static pages.
It is designed to fit a workflow where static pages are hand crafted using regular Rails templates/asset pipeline.
It does not impose any structure on the host application and has minimal requirements.
How it works
Say you have a HAML template like this:
-# in app/views/pages/index.html.haml
%section#main
%h1 My Cyber Web Page
#details.highlight
:markdown
All your web belong to us
To make it editable, simply annotate it with the helper:
%section#main
= editable(:title, :h1) do
My Editable Cyber Web Page
= editable(:details, class: 'highlight') do
:markdown
All your web belong to us
editable
helper
#editable(id, tag_or_options, options)
- The
id
is required and should be unique per page - The tag is optional and defaults to
:div
- The last parameter is an optional hash of html attributes
How we decide which content to use
If the user has edited a given section, content will be served from the database. When there are no edits, then the content defined in the template will used.
Content Types
The helper also supports Mercury's other content types:
= editable(:title, :h1, type: :simple) # only allow text in h1
= editable(:details, :div, type: :full) # allow any markup inside div
Most of the time you wont need to explicitly declare the :type
because the helper can determine :type
for common tags.
The following tags are considered simple: h1, h2, h3, h4, h5, h6, a, span, label
Installation
Add mercury_engine
to your Gemfile:
gem 'mercury_engine'
Alternatively you can use the git repo directly:
gem 'mercury_engine', github: 'DynamoMTL/mercury-engine'
Now, update your bundle:
bundle
Then, run the mercury_engine:install
generator.
It will copy over database migrations and will mount the engine in your config/routes.rb
file.
rails generate mercury_engine:install
Also, add the "Edit" link somewhere in your layout. The engine provides a partial that will only show the link when an admin is logged in.
= render partial: 'mercury_engine/shared/edit_link'
And - you're done.
coffee break?
Testing
Clone the repo:
$ hub clone DynamoMTL/mercury-engine && cd mercury-engine
To run tests:
$ bundle exec rake spec
To run tests with guard (preferred):
$ bundle exec guard