MicroCms

Provides editable inline content blocks to modify your content on the fly.

Dependencies

Usage

To provide an editable content block, use the cms_block helper method in your view, e.g.:

= cms_block 'my.unique.block.identifier'
  h1 Default
  p This is my default content

To print the content in readonly mode, use the cms_content helper method in your view, e.g:

= cms_content 'my.unique.block.identifier'
  p My content if there's no content block yet

It's best to write an own helper method which also does authentication like

def cms(path, &block)
  if current_user&.write_cms?
    cms_block(path, &block)
  else
    cms_content(path, &block)
  end
end

Installation

Add this line to your application's Gemfile:

gem 'micro_cms'

And then execute:

$ bundle

Or install it yourself as:

$ gem install micro_cms

In your app, run

bin/bundle exec rake micro_cms:install:migrations
bin/rails db:migrate

to copy the migrations.

Mount the engine routes in you config/routes.rb file:

mount MicroCms::Engine => '/micro_cms'

Usage with Sprockets

Require the JavaScript (e.g. //= require micro_cms) and all styles (e.g. @import 'micro_cms';').

Usage with Webpacker

Make sure that you import rails/ujs like that in your application.js:

import Rails from '@rails/ujs';
Rails.start();
...
window.Rails = Rails;

The last line makes the Rails scope global (since we inline the script, this is needed).

Now you have to include the helper to your ApplicationHelper:

module ApplicationHelper
  include MicroCms::ApplicationHelper
  ...
end

Now you can use the helper to inline the needed scripts via app/views/layouts/application.html.slim. It's strongly recommended to check first, if the user is allowed to edit (but this is not part of this gem):

- if user_signed_in? # not part of this gem!
  = micro_cms_asset_tags

Configuration

app/config/initializers/micro_cms.rb:

MicroCms.configure do |config|
  config.ckeditor_configuration_file = 'ckeditor/config.js' # Custom ckeditor config. Optional
end

License

The gem is available as open source under the terms of the MIT License.