cms-fortress 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rvmrc +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +161 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +38 -0
- data/Rakefile +56 -0
- data/VERSION +1 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-affix.js +117 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-alert.js +99 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-button.js +105 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-carousel.js +207 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-collapse.js +167 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-dropdown.js +165 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-modal.js +247 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-popover.js +114 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-scrollspy.js +162 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-tab.js +144 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-tooltip.js +361 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-transition.js +60 -0
- data/app/assets/javascripts/cms/fortress/bootstrap-typeahead.js +335 -0
- data/app/assets/javascripts/cms/fortress/bootstrap.js +2276 -0
- data/app/assets/javascripts/cms/fortress/cms_fortress.js +14 -0
- data/app/assets/javascripts/html5shiv.js +8 -0
- data/app/assets/stylesheets/cms/fortress/admin_overrides.css +11 -0
- data/app/assets/stylesheets/cms/fortress/bootstrap-responsive.css +1109 -0
- data/app/assets/stylesheets/cms/fortress/bootstrap.css +6158 -0
- data/app/assets/stylesheets/cms/fortress/session.css +39 -0
- data/app/controllers/cms/fortress/admin_controller.rb +17 -0
- data/app/controllers/cms/fortress/roles_controller.rb +84 -0
- data/app/controllers/cms/fortress/users_controller.rb +89 -0
- data/app/helpers/cms/fortress/application_helper.rb +27 -0
- data/app/helpers/cms/fortress/roles_helper.rb +2 -0
- data/app/models/cms/fortress.rb +5 -0
- data/app/models/cms/fortress/role.rb +17 -0
- data/app/models/cms/fortress/role_detail.rb +6 -0
- data/app/models/cms/fortress/user.rb +14 -0
- data/app/models/cms_ability.rb +32 -0
- data/app/views/cms/fortress/admin/design.html.haml +1 -0
- data/app/views/cms/fortress/admin/roles.html.haml +1 -0
- data/app/views/cms/fortress/admin/settings.html.haml +1 -0
- data/app/views/cms/fortress/admin/users.html.haml +1 -0
- data/app/views/cms/fortress/roles/_form.html.haml +19 -0
- data/app/views/cms/fortress/roles/edit.html.haml +5 -0
- data/app/views/cms/fortress/roles/index.html.haml +20 -0
- data/app/views/cms/fortress/roles/new.html.haml +5 -0
- data/app/views/cms/fortress/roles/show.html.haml +12 -0
- data/app/views/cms/fortress/shared/_admin_topnav.html.haml +19 -0
- data/app/views/cms/fortress/shared/_navbar.html.erb +14 -0
- data/app/views/cms/fortress/users/_form.html.haml +27 -0
- data/app/views/cms/fortress/users/edit.html.haml +5 -0
- data/app/views/cms/fortress/users/index.html.haml +20 -0
- data/app/views/cms/fortress/users/new.html.haml +5 -0
- data/app/views/cms_users/sessions/new.html.erb +19 -0
- data/app/views/layouts/cms/fortress/default.html.erb +96 -0
- data/app/views/layouts/cms/fortress/session.html.erb +31 -0
- data/app/views/layouts/cms_admin/_body.html.haml +22 -0
- data/app/views/layouts/cms_admin/_head.html.haml +14 -0
- data/app/views/layouts/cms_admin/_left.html.haml +18 -0
- data/cms-fortress.gemspec +148 -0
- data/config/initializers/devise.rb +243 -0
- data/config/locales/en.yml +25 -0
- data/config/roles.yml +10 -0
- data/config/routes.rb +34 -0
- data/db/migrate/01_devise_create_cms_fortress_users.rb +56 -0
- data/db/migrate/02_create_cms_fortress_role_details.rb +15 -0
- data/db/migrate/03_create_cms_fortress_roles.rb +33 -0
- data/lib/cms-fortress.rb +9 -0
- data/lib/cms/fortress/application_controller_methods.rb +14 -0
- data/lib/cms/fortress/auth.rb +11 -0
- data/lib/cms/fortress/comfortable_mexican_sofa.rb +8 -0
- data/lib/cms/fortress/devise.rb +3 -0
- data/lib/cms/fortress/rails/engine.rb +19 -0
- data/lib/generators/cms/fortress/USAGE +8 -0
- data/lib/generators/cms/fortress/fortress_generator.rb +17 -0
- data/lib/generators/cms/fortress/templates/README +23 -0
- data/lib/generators/comfy/cms/cms_generator.rb +55 -0
- data/test/fixtures/cms/fortress/role_details.yml +17 -0
- data/test/fixtures/cms/fortress/roles.yml +9 -0
- data/test/functional/cms/fortress/roles_controller_test.rb +49 -0
- data/test/functional/cms/fortress/users_controller_test.rb +49 -0
- data/test/helper.rb +18 -0
- data/test/test_cms-fortress.rb +7 -0
- data/test/unit/cms/fortress/role_detail_test.rb +7 -0
- data/test/unit/cms/fortress/role_test.rb +7 -0
- data/test/unit/cms/fortress/role_user_test.rb +7 -0
- data/test/unit/helpers/cms/fortress/roles_helper_test.rb +4 -0
- data/test/unit/helpers/cms/fortress/users_helper_test.rb +4 -0
- metadata +226 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
en:
|
2
|
+
cms:
|
3
|
+
fortress:
|
4
|
+
page_title: CMS Fortress Admin
|
5
|
+
title: CMS Fortress
|
6
|
+
contents: Contents
|
7
|
+
design: Design
|
8
|
+
admin: Admin
|
9
|
+
login: Logout
|
10
|
+
logout: Logout
|
11
|
+
|
12
|
+
roles:
|
13
|
+
title: Roles
|
14
|
+
new_link: New Role
|
15
|
+
edit_title: Edit Role
|
16
|
+
new_title: Create New Role
|
17
|
+
back: Back
|
18
|
+
|
19
|
+
users:
|
20
|
+
title: Users
|
21
|
+
new_link: New User
|
22
|
+
edit_title: Edit User
|
23
|
+
new_title: Create New User
|
24
|
+
|
25
|
+
|
data/config/roles.yml
ADDED
data/config/routes.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
devise_for :cms_users, :class_name => "Cms::Fortress::User", :skip => [:sessions]
|
3
|
+
devise_scope :cms_user do
|
4
|
+
get 'cms-admin/login' => 'devise/sessions#new', :as => 'new_cms_user_session'
|
5
|
+
post 'cms-admin/login' => 'devise/sessions#create', :as => 'cms_user_session'
|
6
|
+
delete 'cms-admin/logout' => 'devise/sessions#destroy', :as => 'destroy_cms_user_session'
|
7
|
+
end
|
8
|
+
|
9
|
+
namespace :cms do
|
10
|
+
namespace :fortress do
|
11
|
+
resources :roles
|
12
|
+
resources :users
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
get 'cms-admin/settings' => 'cms/fortress/admin#settings', :as => 'settings_cms_admin'
|
17
|
+
get 'cms-admin/design' => 'cms/fortress/admin#design', :as => 'design_cms_admin'
|
18
|
+
# get 'cms-admin/settings/roles' => 'cms/fortress/admin#roles', :as => 'roles_cms_admin'
|
19
|
+
get 'cms-admin/settings/users' => 'cms/fortress/admin#users', :as => 'users_cms_admin'
|
20
|
+
|
21
|
+
ComfortableMexicanSofa::Routing.admin(:path => '/cms-admin')
|
22
|
+
|
23
|
+
ComfortableMexicanSofa::Routing.content(:path => '/', :sitemap => false)
|
24
|
+
|
25
|
+
|
26
|
+
=begin
|
27
|
+
namespace :cms_admin, :path => ComfortableMexicanSofa.config.admin_route_prefix, :except => :show do
|
28
|
+
# resources :roles, :module => 'cms/fortress'
|
29
|
+
resources :sites do
|
30
|
+
end
|
31
|
+
end
|
32
|
+
=end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class DeviseCreateCmsFortressUsers < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def migrate(direction)
|
4
|
+
super
|
5
|
+
|
6
|
+
# Create default cms-admin user
|
7
|
+
Cms::Fortress::User.create!(:email => 'admin@cmsfortress.com', :password => '1234qwer', :password_confirmation => '1234qwer', :role_id => 1) if direction == :up
|
8
|
+
end
|
9
|
+
|
10
|
+
def change
|
11
|
+
create_table(:cms_fortress_users) do |t|
|
12
|
+
## Database authenticatable
|
13
|
+
t.string :email, :null => false, :default => ""
|
14
|
+
t.string :encrypted_password, :null => false, :default => ""
|
15
|
+
|
16
|
+
t.integer :role_id
|
17
|
+
|
18
|
+
## Recoverable
|
19
|
+
t.string :reset_password_token
|
20
|
+
t.datetime :reset_password_sent_at
|
21
|
+
|
22
|
+
## Rememberable
|
23
|
+
t.datetime :remember_created_at
|
24
|
+
|
25
|
+
## Trackable
|
26
|
+
t.integer :sign_in_count, :default => 0
|
27
|
+
t.datetime :current_sign_in_at
|
28
|
+
t.datetime :last_sign_in_at
|
29
|
+
t.string :current_sign_in_ip
|
30
|
+
t.string :last_sign_in_ip
|
31
|
+
|
32
|
+
## Confirmable
|
33
|
+
# t.string :confirmation_token
|
34
|
+
# t.datetime :confirmed_at
|
35
|
+
# t.datetime :confirmation_sent_at
|
36
|
+
# t.string :unconfirmed_email # Only if using reconfirmable
|
37
|
+
|
38
|
+
## Lockable
|
39
|
+
# t.integer :failed_attempts, :default => 0 # Only if lock strategy is :failed_attempts
|
40
|
+
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
41
|
+
# t.datetime :locked_at
|
42
|
+
|
43
|
+
## Token authenticatable
|
44
|
+
# t.string :authentication_token
|
45
|
+
|
46
|
+
|
47
|
+
t.timestamps
|
48
|
+
end
|
49
|
+
|
50
|
+
add_index :cms_fortress_users, :email, :unique => true
|
51
|
+
add_index :cms_fortress_users, :reset_password_token, :unique => true
|
52
|
+
# add_index :cms_fortress_users, :confirmation_token, :unique => true
|
53
|
+
# add_index :cms_fortress_users, :unlock_token, :unique => true
|
54
|
+
# add_index :cms_fortress_users, :authentication_token, :unique => true
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateCmsFortressRoleDetails < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :cms_fortress_role_details do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :command
|
6
|
+
t.boolean :can_create
|
7
|
+
t.boolean :can_update
|
8
|
+
t.boolean :can_delete
|
9
|
+
t.boolean :can_view
|
10
|
+
t.integer :role_id
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class CreateCmsFortressRoles < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def migrate(direction)
|
4
|
+
super
|
5
|
+
|
6
|
+
# Create default users
|
7
|
+
{
|
8
|
+
:administrator => {
|
9
|
+
|
10
|
+
},
|
11
|
+
:author => {
|
12
|
+
|
13
|
+
},
|
14
|
+
:contributor => {
|
15
|
+
|
16
|
+
}
|
17
|
+
}.each do |k, roles|
|
18
|
+
role = Cms::Fortress::Role.create!(:name => k.to_s.humanize, :description => k.to_s.humanize)
|
19
|
+
role.load_defaults
|
20
|
+
role.save
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def change
|
26
|
+
create_table :cms_fortress_roles do |t|
|
27
|
+
t.string :name
|
28
|
+
t.text :description
|
29
|
+
|
30
|
+
t.timestamps
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/cms-fortress.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'comfortable_mexican_sofa'
|
2
|
+
require 'devise'
|
3
|
+
require 'cancan'
|
4
|
+
|
5
|
+
require 'cms/fortress/application_controller_methods'
|
6
|
+
require 'cms/fortress/rails/engine'
|
7
|
+
require 'cms/fortress/auth'
|
8
|
+
require 'cms/fortress/comfortable_mexican_sofa'
|
9
|
+
require 'cms/fortress/devise'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
ComfortableMexicanSofa.configure do |config|
|
2
|
+
config.admin_auth = 'Cms::Fortress::Auth'
|
3
|
+
end
|
4
|
+
|
5
|
+
ComfortableMexicanSofa::ViewHooks.add(:header, 'cms/fortress/shared/admin_topnav')
|
6
|
+
# ComfortableMexicanSofa::ViewHooks.add(:navigation, '/layouts/admin/navigation')
|
7
|
+
# ComfortableMexicanSofa::ViewHooks.add(:html_head, '/layouts/admin/html_head')
|
8
|
+
# ComfortableMexicanSofa::ViewHooks.add(:page_form, '/layouts/admin/page_form')
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Cms
|
2
|
+
module Fortress
|
3
|
+
class Engine < ::Rails::Engine
|
4
|
+
|
5
|
+
initializer 'cms-fortress.setup' do |app|
|
6
|
+
app.config.to_prepare do
|
7
|
+
Devise::SessionsController.layout "cms/fortress/session"
|
8
|
+
ApplicationController.helper(Cms::Fortress::ApplicationHelper)
|
9
|
+
end
|
10
|
+
app.config.railties_order = [ :all, ComfortableMexicanSofa::Engine, Cms::Fortress::Engine ]
|
11
|
+
|
12
|
+
ActiveSupport.on_load(:action_controller) do
|
13
|
+
include Cms::Fortress::ApplicationControllerMethods
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
class Cms::FortressGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
|
5
|
+
def install_comfortable_mexican_sofa
|
6
|
+
generate("comfy:cms")
|
7
|
+
end
|
8
|
+
|
9
|
+
def generate_migrations
|
10
|
+
rake("cms_fortress_engine:install:migrations")
|
11
|
+
end
|
12
|
+
|
13
|
+
def show_readme
|
14
|
+
readme 'README'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
FORTIFIED:
|
4
|
+
|
5
|
+
____ __ _ _ _
|
6
|
+
/ ___|___ _ __ ___ / _| ___ _ __| |_ __ _| |__ | | ___
|
7
|
+
| | / _ \| '_ ` _ \| |_ / _ \| '__| __/ _` | '_ \| |/ _ \
|
8
|
+
| |__| (_) | | | | | | _| (_) | | | || (_| | |_) | | __/
|
9
|
+
\____\___/|_| |_| |_|_| \___/|_| \__\__,_|_.__/|_|\___|
|
10
|
+
__ __ _ ____ __
|
11
|
+
| \/ | _____ _(_) ___ __ _ _ __ / ___| ___ / _| __ _
|
12
|
+
| |\/| |/ _ \ \/ / |/ __/ _` | '_ \ \___ \ / _ \| |_ / _` |
|
13
|
+
| | | | __/> <| | (_| (_| | | | | ___) | (_) | _| (_| |
|
14
|
+
|_| |_|\___/_/\_\_|\___\__,_|_| |_| |____/ \___/|_| \__,_|
|
15
|
+
|
16
|
+
|
17
|
+
Hey! Everything is almost done. Please don't forget to
|
18
|
+
|
19
|
+
* run migrations -> `rake db:migrate`
|
20
|
+
|
21
|
+
After that go to http://your-awesome-app/cms-admin to start populating content.
|
22
|
+
Default username and password are: admin@cmsfortress.com // 1234qwer
|
23
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Comfy
|
2
|
+
module Generators
|
3
|
+
class CmsGenerator < Rails::Generators::Base
|
4
|
+
|
5
|
+
require 'rails/generators/active_record'
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
spec = Gem::Specification.find_by_name("comfortable_mexican_sofa")
|
10
|
+
source_root spec.gem_dir # File.expand_path('../../../../..', __FILE__)
|
11
|
+
|
12
|
+
def generate_migration
|
13
|
+
destination = File.expand_path('db/migrate/01_create_cms.rb', self.destination_root)
|
14
|
+
migration_dir = File.dirname(destination)
|
15
|
+
destination = self.class.migration_exists?(migration_dir, 'create_cms')
|
16
|
+
|
17
|
+
if destination
|
18
|
+
puts "\e[0m\e[31mFound existing cms_create.rb migration. Remove it if you want to regenerate.\e[0m"
|
19
|
+
else
|
20
|
+
migration_template 'db/migrate/01_create_cms.rb', 'db/migrate/create_cms.rb'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def generate_initialization
|
25
|
+
copy_file 'config/initializers/comfortable_mexican_sofa.rb',
|
26
|
+
'config/initializers/comfortable_mexican_sofa.rb'
|
27
|
+
end
|
28
|
+
|
29
|
+
=begin
|
30
|
+
def generate_routing
|
31
|
+
route "
|
32
|
+
ComfortableMexicanSofa::Routing.admin(:path => '/cms-admin')
|
33
|
+
|
34
|
+
# Make sure this routeset is defined last
|
35
|
+
ComfortableMexicanSofa::Routing.content(:path => '/', :sitemap => false)"
|
36
|
+
end
|
37
|
+
=end
|
38
|
+
|
39
|
+
def generate_cms_seeds
|
40
|
+
directory 'db/cms_fixtures', 'db/cms_fixtures'
|
41
|
+
end
|
42
|
+
|
43
|
+
=begin
|
44
|
+
def show_readme
|
45
|
+
readme 'lib/generators/comfy/cms/README'
|
46
|
+
end
|
47
|
+
=end
|
48
|
+
def self.next_migration_number(dirname)
|
49
|
+
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
2
|
+
|
3
|
+
one:
|
4
|
+
name: MyString
|
5
|
+
command: MyString
|
6
|
+
create: false
|
7
|
+
update: false
|
8
|
+
delete: false
|
9
|
+
view: false
|
10
|
+
|
11
|
+
two:
|
12
|
+
name: MyString
|
13
|
+
command: MyString
|
14
|
+
create: false
|
15
|
+
update: false
|
16
|
+
delete: false
|
17
|
+
view: false
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Cms::Fortress::RolesControllerTest < ActionController::TestCase
|
4
|
+
setup do
|
5
|
+
@cms_fortress_role = cms_fortress_roles(:one)
|
6
|
+
end
|
7
|
+
|
8
|
+
test "should get index" do
|
9
|
+
get :index
|
10
|
+
assert_response :success
|
11
|
+
assert_not_nil assigns(:cms_fortress_roles)
|
12
|
+
end
|
13
|
+
|
14
|
+
test "should get new" do
|
15
|
+
get :new
|
16
|
+
assert_response :success
|
17
|
+
end
|
18
|
+
|
19
|
+
test "should create cms_fortress_role" do
|
20
|
+
assert_difference('Cms::Fortress::Role.count') do
|
21
|
+
post :create, cms_fortress_role: { description: @cms_fortress_role.description, title: @cms_fortress_role.title }
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_redirected_to cms_fortress_role_path(assigns(:cms_fortress_role))
|
25
|
+
end
|
26
|
+
|
27
|
+
test "should show cms_fortress_role" do
|
28
|
+
get :show, id: @cms_fortress_role
|
29
|
+
assert_response :success
|
30
|
+
end
|
31
|
+
|
32
|
+
test "should get edit" do
|
33
|
+
get :edit, id: @cms_fortress_role
|
34
|
+
assert_response :success
|
35
|
+
end
|
36
|
+
|
37
|
+
test "should update cms_fortress_role" do
|
38
|
+
put :update, id: @cms_fortress_role, cms_fortress_role: { description: @cms_fortress_role.description, title: @cms_fortress_role.title }
|
39
|
+
assert_redirected_to cms_fortress_role_path(assigns(:cms_fortress_role))
|
40
|
+
end
|
41
|
+
|
42
|
+
test "should destroy cms_fortress_role" do
|
43
|
+
assert_difference('Cms::Fortress::Role.count', -1) do
|
44
|
+
delete :destroy, id: @cms_fortress_role
|
45
|
+
end
|
46
|
+
|
47
|
+
assert_redirected_to cms_fortress_roles_path
|
48
|
+
end
|
49
|
+
end
|