cms-fortress 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. data/.document +5 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +15 -0
  4. data/Gemfile.lock +161 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +38 -0
  7. data/Rakefile +56 -0
  8. data/VERSION +1 -0
  9. data/app/assets/javascripts/cms/fortress/bootstrap-affix.js +117 -0
  10. data/app/assets/javascripts/cms/fortress/bootstrap-alert.js +99 -0
  11. data/app/assets/javascripts/cms/fortress/bootstrap-button.js +105 -0
  12. data/app/assets/javascripts/cms/fortress/bootstrap-carousel.js +207 -0
  13. data/app/assets/javascripts/cms/fortress/bootstrap-collapse.js +167 -0
  14. data/app/assets/javascripts/cms/fortress/bootstrap-dropdown.js +165 -0
  15. data/app/assets/javascripts/cms/fortress/bootstrap-modal.js +247 -0
  16. data/app/assets/javascripts/cms/fortress/bootstrap-popover.js +114 -0
  17. data/app/assets/javascripts/cms/fortress/bootstrap-scrollspy.js +162 -0
  18. data/app/assets/javascripts/cms/fortress/bootstrap-tab.js +144 -0
  19. data/app/assets/javascripts/cms/fortress/bootstrap-tooltip.js +361 -0
  20. data/app/assets/javascripts/cms/fortress/bootstrap-transition.js +60 -0
  21. data/app/assets/javascripts/cms/fortress/bootstrap-typeahead.js +335 -0
  22. data/app/assets/javascripts/cms/fortress/bootstrap.js +2276 -0
  23. data/app/assets/javascripts/cms/fortress/cms_fortress.js +14 -0
  24. data/app/assets/javascripts/html5shiv.js +8 -0
  25. data/app/assets/stylesheets/cms/fortress/admin_overrides.css +11 -0
  26. data/app/assets/stylesheets/cms/fortress/bootstrap-responsive.css +1109 -0
  27. data/app/assets/stylesheets/cms/fortress/bootstrap.css +6158 -0
  28. data/app/assets/stylesheets/cms/fortress/session.css +39 -0
  29. data/app/controllers/cms/fortress/admin_controller.rb +17 -0
  30. data/app/controllers/cms/fortress/roles_controller.rb +84 -0
  31. data/app/controllers/cms/fortress/users_controller.rb +89 -0
  32. data/app/helpers/cms/fortress/application_helper.rb +27 -0
  33. data/app/helpers/cms/fortress/roles_helper.rb +2 -0
  34. data/app/models/cms/fortress.rb +5 -0
  35. data/app/models/cms/fortress/role.rb +17 -0
  36. data/app/models/cms/fortress/role_detail.rb +6 -0
  37. data/app/models/cms/fortress/user.rb +14 -0
  38. data/app/models/cms_ability.rb +32 -0
  39. data/app/views/cms/fortress/admin/design.html.haml +1 -0
  40. data/app/views/cms/fortress/admin/roles.html.haml +1 -0
  41. data/app/views/cms/fortress/admin/settings.html.haml +1 -0
  42. data/app/views/cms/fortress/admin/users.html.haml +1 -0
  43. data/app/views/cms/fortress/roles/_form.html.haml +19 -0
  44. data/app/views/cms/fortress/roles/edit.html.haml +5 -0
  45. data/app/views/cms/fortress/roles/index.html.haml +20 -0
  46. data/app/views/cms/fortress/roles/new.html.haml +5 -0
  47. data/app/views/cms/fortress/roles/show.html.haml +12 -0
  48. data/app/views/cms/fortress/shared/_admin_topnav.html.haml +19 -0
  49. data/app/views/cms/fortress/shared/_navbar.html.erb +14 -0
  50. data/app/views/cms/fortress/users/_form.html.haml +27 -0
  51. data/app/views/cms/fortress/users/edit.html.haml +5 -0
  52. data/app/views/cms/fortress/users/index.html.haml +20 -0
  53. data/app/views/cms/fortress/users/new.html.haml +5 -0
  54. data/app/views/cms_users/sessions/new.html.erb +19 -0
  55. data/app/views/layouts/cms/fortress/default.html.erb +96 -0
  56. data/app/views/layouts/cms/fortress/session.html.erb +31 -0
  57. data/app/views/layouts/cms_admin/_body.html.haml +22 -0
  58. data/app/views/layouts/cms_admin/_head.html.haml +14 -0
  59. data/app/views/layouts/cms_admin/_left.html.haml +18 -0
  60. data/cms-fortress.gemspec +148 -0
  61. data/config/initializers/devise.rb +243 -0
  62. data/config/locales/en.yml +25 -0
  63. data/config/roles.yml +10 -0
  64. data/config/routes.rb +34 -0
  65. data/db/migrate/01_devise_create_cms_fortress_users.rb +56 -0
  66. data/db/migrate/02_create_cms_fortress_role_details.rb +15 -0
  67. data/db/migrate/03_create_cms_fortress_roles.rb +33 -0
  68. data/lib/cms-fortress.rb +9 -0
  69. data/lib/cms/fortress/application_controller_methods.rb +14 -0
  70. data/lib/cms/fortress/auth.rb +11 -0
  71. data/lib/cms/fortress/comfortable_mexican_sofa.rb +8 -0
  72. data/lib/cms/fortress/devise.rb +3 -0
  73. data/lib/cms/fortress/rails/engine.rb +19 -0
  74. data/lib/generators/cms/fortress/USAGE +8 -0
  75. data/lib/generators/cms/fortress/fortress_generator.rb +17 -0
  76. data/lib/generators/cms/fortress/templates/README +23 -0
  77. data/lib/generators/comfy/cms/cms_generator.rb +55 -0
  78. data/test/fixtures/cms/fortress/role_details.yml +17 -0
  79. data/test/fixtures/cms/fortress/roles.yml +9 -0
  80. data/test/functional/cms/fortress/roles_controller_test.rb +49 -0
  81. data/test/functional/cms/fortress/users_controller_test.rb +49 -0
  82. data/test/helper.rb +18 -0
  83. data/test/test_cms-fortress.rb +7 -0
  84. data/test/unit/cms/fortress/role_detail_test.rb +7 -0
  85. data/test/unit/cms/fortress/role_test.rb +7 -0
  86. data/test/unit/cms/fortress/role_user_test.rb +7 -0
  87. data/test/unit/helpers/cms/fortress/roles_helper_test.rb +4 -0
  88. data/test/unit/helpers/cms/fortress/users_helper_test.rb +4 -0
  89. 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
+
@@ -0,0 +1,10 @@
1
+ contents:
2
+ - pages
3
+ - files
4
+ designs:
5
+ - layouts
6
+ - snippets
7
+ settings:
8
+ - sites
9
+ - roles
10
+ - users
@@ -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
@@ -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,14 @@
1
+ module Cms
2
+ module Fortress
3
+ module ApplicationControllerMethods
4
+ def after_sign_in_path_for(resource)
5
+ cms_admin_path
6
+ end
7
+
8
+ def after_sign_out_path_for(resource_or_scope)
9
+ # request.referrer
10
+ cms_admin_path
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Cms
2
+ module Fortress
3
+ module Auth
4
+ def authenticate
5
+ unless current_cms_user
6
+ redirect_to new_cms_user_session_path
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -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,3 @@
1
+ Devise.setup do |config|
2
+ config.scoped_views = true
3
+ end
@@ -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,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate fortress Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -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,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
+
3
+ one:
4
+ name: MyString
5
+ description: MyText
6
+
7
+ two:
8
+ name: MyString
9
+ description: MyText
@@ -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