GuiderCms

GuiderCms is a plugin which provides CMS functionality for multiple root origins
Is Rack Based
Based on MVC using rails engines
Allows you to have a CMS for multiple purposes
Supports for categories and subcategories for all root origin

Prerequisite

Please Ensure you have active_storage, action_text and closure_tree gem set up in your application

Installation

Add this line to your application's Gemfile:

gem 'guider_cms'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install guider_cms

to generate the initializer file run

$ rails g guider_cms:install

In config/initializers/guider.rb set the name of your primary user model

  GuiderCms.author_class = "YOUR_USER_MODEL_CLASS"

then to generate all the migration files

$ rails guider_cms:install:migrations

then finally create the tables

$ rails db:migrate

Once all that is done mount the engine in your main application in config/routes.rb

  mount GuiderCms::Engine => "/"

Be sure to mount the engine at "/" and not any other path

in app/models/your_user_model.rb, add This is done to create the association between the user and articles table

has_many :guider_cms_articles , class_name: 'GuiderCms::Article', foreign_key: :author_id  

in your main application app/controllers/application_controller.rb add these two functions

def current_user
  if user is logged_in
    @current_user = the user object
  else
    @current_user = nil  
  end  
end


def is_guider_admin
  if some condition to access guider functionality
    @is_guider_admin = true
  else
    @is_guider_admin = false  
  end  
end  

If you are using a engine or library that already provides a current_user method, then you can avoid declaring it seperately

in app/views/layout/application.html.erb include

  <%= stylesheet_link_tag  "guider_cms/application", media: "all" %>

this includes all the css for the engine

You need atleast one root category to start working in guiderCMS
Root categories can be things used to represent top of the any cms system
eg: Blogs, Articles, etc.
To start, navigate to guider_home_page

  guider_home_path

This part will ask you to create a new root category if none exists, Then you will have to create categories that come under this root visiting home path again will take you right there

Routing

Consider you have a root category called "Blogs"
And in Blogs you have categories such as Computer science and Artificial Intelligence
Here Computer Science and Artificial Intelligence are main categories in Root Blogs
Main categories can have subcategories, such as Artificial Intelligence can have subcategories such as machine learning

So your root blogs is arranged in this way

  • Blogs
    • Computer Science
    • Artificial Intelligence
    • Machine Learning

To visit the home/index page:

guider_home_path

To view index for specific root category:

content_new_back_path(root: "Blogs")

To view index for specific root and selected category:

contents_path(root: "Blogs", selected_category: "Artificial Intelligence")

the same for subcategory among the main categories

contents_path(root: "Blogs", selected_category: "Machine Learning")

Contributing

Contribution directions go here.

License

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