cms-fortress 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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