smart-village-solutions / Goldencobra

CMS based on modules as Rails 4 engines
Other
21 stars 15 forks source link
cms content-management-system golden-cobra javascript rails rails-engine ruby

Golden Cobra

Maintainability Test Coverage

Powered by

Current versions

Requirements

Installation

This installation is meant for using Golden Cobra as a gem inside your Rails application. If you would like to contribute to Golden Cobra development, please read this document => Installation instructions for development.

Guided Installation wit rvm, git, capistrano and server deploy

rails new PROJECTNAME -m https://raw.github.com/ikusei/goldencobra-installer/master/template.rb -d mysql

Manual Installation: Create new project

rails new PROJECTNAME -d mysql

Install Golden Cobra gem

Add the following to file "PROJECTNAME/Gemfile":

gem "goldencobra", git: "https://github.com/ikuseiGmbH/Goldencobra.git"
gem "activeadmin", git: "https://github.com/ikusei/active_admin.git", require: "activeadmin"
bundle install

Create database

rake db:create

Install prerequisites for Golden Cobra

rake goldencobra:install:migrations
rails generate goldencobra:install
rake db:migrate db:test:prepare

If you want to use Golden Cobra in a subdirectory

(http://www.domain.de/subdir/), please modify your config/routes.rb and setup your domains in "Settings > Domains" in the backendinterface

Goldencobra::Domain.pluck(:url_prefix).each do |url_prefix|
    scope url_prefix do
        ActiveAdmin.routes(self)
        devise_for :users, ActiveAdmin::Devise.config
        mount Goldencobra::Engine => "/"
    end
end

Setup Golden Cobra

If you want to use Batch Actions in Golden Cobra (set a batch of articles offline), you need to uncomment the line # config.batch_actions = true in config/initializers/active_admin.rb

This would also be the place where you can override stylesheets and javascripts. Just put them inside the block # == Register Stylesheets & Javascripts.

Create new article types

Nearly every site in Golden Cobra is an article. If the default article isn't enough for your needs you can create new article types. There's a generator for that: rails generate goldencobra:articletype Thing name:string

Where "Thing" would be your associated model and "name:string" are the usual ruby attributes.

This will create:

    generate model Thing # Your associated model
    generate /app/views/articletypes
    generate /app/views/articletypes/thing # View folder
    # Necessary view files
    generate /app/views/articletypes/thing/_index.html.erb
    generate /app/views/articletypes/thing/_show.html.erb
    generate /app/views/articletypes/thing/_edit_show.html.erb
    generate /app/views/articletypes/thing/_edit_index.html.erb

The index and show partials are for fronted display of your article type. The "_edit" partials are for the ActiveAdmin.

"Index" is always the index view of articles of this article_type. The _edit_index enables you to set certain tags to filter your index view. Of course everything is customizable by you.

"Show" is an individual article of this article_type. The "_edit_show" gives you control over the models attributes.

Settings

We have a quite flexible settings system in place. In the admin backend you have many values you can customize for your installation.

Important values are

When creating articles, a default value is set for open graph image url. Please make sure you provide a default open graph image at "/assets/open-graph.png"

Usage

Basic Headers

call in head-section of any view_template to include stylesheets, javascripts (jquery, jqueryui, jquery.tools ...), bugtracker, metatags, airbrake and article_administration element:

basic_goldencobra_headers(option={})

# option: {:exclude => ["stylesheets", "javascripts", "bugtracker", "metatags", "article_administration", "airbrake"]}

example:

<%= basic_goldencobra_headers(:exclude => ["javascripts","stylesheets"]) %>

Only Activate Bugtracker in Application Layout

place this code in your application layout in header section: <%= bugtracker %>

Navigation Menu

call in any view_template:

navigation_menu(menue_id, option={})

# option: { depth: integer }
#
# 0 = unlimited
# 1 = self
# 2 = self and children 1st grade
# 3 = self and up to children 2nd grade
# default = 0

example: renders menue starting with id 1 and only childs of first grade

<%= navigation_menu(1, :depth => 1) %>

renders menue starting with id 2 and all children as a nested list

<%= navigation_menu(2) %>

renders menue starting with first Menuitem including title 'MainNavigation' and all children as a nested list

<%= navigation_menu("MainNavigation") %>

renders menue starting with first Menuitem including title 'MainNavigation' in the submenue 'Sub' and all children as a nested list

<%= navigation_menu("Sub/MainNavigation") %>

renders menue starting with first Menuitem including title 'MainNavigation' in the submenue 'de' or 'en' depending of your current Locale and all children as a nested list

<%= navigation_menu("#{I18n.locale.to_s}/MainNavigation") %>
<%= navigation_menu("Top-Menue", :submenue_of_article => @article, :class => "ul_submain_nav", :depth => 2, :show_image => false, :show_description_title => false, :show_description => false, :show_call_to_action_name => false) %>

Switching Languages

<%= link_to "Deutsch", switch_language("de") %>
<%= link_to "Englisch", switch_language("en") %>

Named routes outside mounted rails engine

You can call any named route defined in your railsapp inside a goldencobra_view by calling:

  <%= link_to "CustomRoute", application_routes.custom_page_path() %>

Breadcrumb Menue

in your view_templates:

    <%= breadcrumb() %>

Rendering content in layouts

<% # Renders contents of different article types %>
<% if @article %>
  <%= render_article_type_content() %>
<% end %>

<%= yield(:article_content) %>
<%= yield(:article_title) %>
<%= yield(:article_subtitle) %>
<%= yield(:article_teaser) %>

Render widgets

Alle DefaultWidgets UND alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

render_article_widgets(default: true, tagged_with: "sidebar")

Alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(default: false, tagged_with: "sidebar") %>

Alle ArtikelWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(tagged_with: "sidebar") %>

Alle DefaultWidgets und alle ArtikelWidgets:

  <%= render_article_widgets(default: true) %>

Alle ArtikelWidgets:

  <%= render_article_widgets() %>

Alle DefaultWidgets:

  <%= render_article_widgets(article: false) %>

Alle DefaultWidgets mit dem Tag "sidebar" sortiert nach SorterID:

  <%= render_article_widgets(article: false, tagged_with: "sidebar") %>

Alle Optionen mit Defaultwerten:

  <%= render_article_widgets(default="false", article="true", tagged_with: "") %>

Render Login and Registration Widgets

in your view_templates:

    <%= render_login_widget(User) %>
    <%= render_login_widget(Visitor) %>
    <%= render_registration_widget(User) %>
    <%= render_registration_widget(Visitor) %>

Include social media sharing buttons where applicable

<div id="social_sharing_buttons" class="bottom_buttons">
  <%= yield(:social_sharing_buttons) %>
</div>

Render an image gallery inside article content

<%= render_article_image_gallery %>

Contributing

See the CONTRIBUTING document. Thank you, contributors!

License

This project uses CC BY-NC-SA 3.0. See License

About

Golden Cobra is maintained by ikusei GmbH in Berlin. We like you.