cms-fortress 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.rbenv-gemsets +1 -0
  2. data/.ruby-version +1 -0
  3. data/Gemfile +4 -3
  4. data/Gemfile.lock +146 -105
  5. data/README.rdoc +3 -2
  6. data/VERSION +1 -1
  7. data/app/assets/stylesheets/cms/fortress/admin_overrides.css +5 -0
  8. data/app/controllers/cms/fortress/admin_controller.rb +1 -1
  9. data/app/controllers/cms/fortress/roles_controller.rb +11 -3
  10. data/app/controllers/cms/fortress/users_controller.rb +1 -1
  11. data/app/models/cms/fortress/role.rb +3 -2
  12. data/app/models/cms/fortress/role_detail.rb +3 -2
  13. data/app/models/cms/fortress/user.rb +5 -2
  14. data/app/models/cms/page_workflow.rb +27 -0
  15. data/app/views/.DS_Store +0 -0
  16. data/app/views/admin/cms/pages/_form.html.haml +61 -0
  17. data/app/views/admin/cms/partials/_body_before.html.haml +1 -0
  18. data/app/views/cms/fortress/shared/_admin_topnav.html.haml +4 -4
  19. data/app/views/cms/fortress/users/sessions/.DS_Store +0 -0
  20. data/app/views/cms/fortress/users/sessions/new.html.haml +11 -0
  21. data/app/views/layouts/admin/_body.html.haml +17 -0
  22. data/app/views/layouts/admin/cms/.DS_Store +0 -0
  23. data/app/views/layouts/{cms_admin → admin/cms}/_head.html.haml +2 -2
  24. data/app/views/layouts/admin/cms/_left.html.haml +23 -0
  25. data/cms-fortress.gemspec +33 -18
  26. data/config/roles.yml +2 -0
  27. data/db/migrate/04_create_cms_page_workflows.rb +11 -0
  28. data/lib/cms-fortress.rb +8 -5
  29. data/lib/cms/fortress/application_controller_methods.rb +2 -2
  30. data/lib/cms/fortress/auth.rb +2 -2
  31. data/lib/cms/fortress/comfortable_mexican_sofa.rb +1 -0
  32. data/lib/cms/fortress/content_renderer.rb +30 -0
  33. data/lib/cms/fortress/page_methods.rb +17 -0
  34. data/lib/cms/fortress/rails/engine.rb +4 -0
  35. data/lib/cms/fortress/routes/admin.rb +21 -0
  36. data/lib/cms/fortress/routing.rb +1 -0
  37. data/lib/generators/cms/fortress/fortress_generator.rb +4 -0
  38. data/lib/generators/comfy/cms/cms_generator.rb +17 -12
  39. data/test/fixtures/cms/page_workflows.yml +11 -0
  40. metadata +99 -31
  41. data/app/views/cms_users/sessions/new.html.erb +0 -19
  42. data/app/views/layouts/cms_admin/_body.html.haml +0 -22
  43. data/app/views/layouts/cms_admin/_left.html.haml +0 -18
  44. data/config/initializers/devise.rb +0 -243
  45. data/config/routes.rb +0 -34
@@ -0,0 +1,27 @@
1
+ class Cms::PageWorkflow < ActiveRecord::Base
2
+ self.table_name = 'cms_page_workflows'
3
+
4
+ belongs_to :page, :foreign_key => 'cms_page_id'
5
+
6
+ after_save do |record|
7
+ record.page.update_attribute(:is_published, record.page_published?)
8
+ end
9
+
10
+ def self.statuses
11
+ {
12
+ 0 => :draft,
13
+ 1 => :reviewed,
14
+ # 2 => :scheduled,
15
+ 3 => :published
16
+ }
17
+ end
18
+
19
+ def self.statuses_for_select
20
+ self.statuses.map {|k,v| [v.to_s.titleize, k]}
21
+ end
22
+
23
+ def page_published?
24
+ status_id.eql?(3) || status_id.eql?(2) && published_date < Time.now
25
+ end
26
+
27
+ end
Binary file
@@ -0,0 +1,61 @@
1
+ - content_for :right_column do
2
+ #form-save.box
3
+ %label.checkbox.inline
4
+ %input{:type => 'checkbox'}
5
+ = ::Cms::Page.human_attribute_name(:is_published)
6
+ %button.btn.btn-small.btn-primary.pull-right
7
+ = render :partial => 'admin/cms/files/index'
8
+
9
+ = render 'admin/cms/partials/page_form_before', :object => form
10
+
11
+ = form.text_field :label, :data => {:slugify => @page.new_record?}
12
+
13
+ - unless @site.pages.count == 0 || @site.pages.root == @page
14
+ = form.text_field :slug, :data => {:slug => true}
15
+ - unless @page.new_record?
16
+ = form.text_field :full_path, :id => 'full-path', :disabled => true
17
+
18
+ - if (options = ::Cms::Layout.options_for_select(@site)).present?
19
+ = form.select :layout_id, options, {}, 'data-url' => form_blocks_admin_cms_site_page_path(@site, @page.id.to_i)
20
+
21
+ - if (options = ::Cms::Page.options_for_select(@site, @page)).present?
22
+ = form.select :parent_id, options
23
+
24
+ - if (options = ::Cms::Page.options_for_select(@site, @page, nil, 0, false)).present?
25
+ = form.select :target_page_id, [["---- #{t('.select_target_page')} ----", nil]] + options
26
+
27
+ = render 'admin/cms/partials/page_form_inner', :object => form
28
+
29
+ = render :partial => 'admin/cms/categories/form', :object => form
30
+
31
+ = render :partial => 'form_blocks'
32
+
33
+ =# form.check_box :is_published, :label => t('.is_published')
34
+
35
+ = form.fields_for :page_workflow do |wf|
36
+ = wf.select :status_id, Cms::PageWorkflow.statuses_for_select, {}, {class: "status-control"}
37
+ = wf.text_field :published_date, class: "status-control", :data => {:utc_date => @page.page_workflow.published_date.utc.strftime("%d %B, %Y")}
38
+
39
+ = render 'admin/cms/partials/page_form_after', :object => form
40
+
41
+ .form-actions
42
+ = form.submit t('.preview'), :name => 'preview', :id => nil, :class => 'btn'
43
+ = form.submit t(@page.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
44
+
45
+
46
+ :coffeescript
47
+ dateControl = $("#page_page_workflow_attributes_published_date")
48
+ wkControl = $("#page_page_workflow_attributes_status_id")
49
+ parentControl = $("#page_page_workflow_attributes_published_date").parents(".control-group:first")
50
+
51
+ dateControl.val(dateControl.data("utcDate")).datepicker(dateFormat: "d MM, yy")
52
+
53
+ if wkControl.val() in ["0","1"]
54
+ parentControl.hide()
55
+
56
+ wkControl.change ->
57
+ if $(this).val() in ["0","1"]
58
+ parentControl.hide()
59
+ else
60
+ parentControl.show()
61
+
@@ -0,0 +1 @@
1
+ = render :partial => 'cms/fortress/shared/admin_topnav'
@@ -10,10 +10,10 @@
10
10
  %ul.nav
11
11
  - if @site && !@site.new_record?
12
12
  %li{:class => content_page? ? 'active' : ''}
13
- = link_to t("cms.fortress.contents"), cms_admin_site_pages_path(@site)
13
+ = link_to t("cms.fortress.contents"), admin_cms_site_pages_path(@site)
14
14
  %li{:class => design_page? ? 'active' : ''}
15
- = link_to t("cms.fortress.design"), cms_admin_site_layouts_path(@site)
15
+ = link_to t("cms.fortress.design"), admin_cms_site_layouts_path(@site)
16
16
  %li{:class => admin_page? ? 'active' : ''}
17
- = link_to t("cms.fortress.settings"), cms_admin_sites_path
17
+ = link_to t("cms.fortress.settings"), admin_cms_sites_path
18
18
  %li
19
- = link_to "Logout", destroy_cms_user_session_path, :method => 'delete'
19
+ = link_to "Logout", destroy_cms_fortress_user_session_path, :method => 'delete'
@@ -0,0 +1,11 @@
1
+ = render :partial => 'cms/fortress/shared/navbar'
2
+ = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => "form-signin" }) do |f|
3
+ %h3.form-signin-heading Sign in
4
+ = f.email_field :email, :autofocus => true, :placeholder => "Email address", :class => "input-block-level"
5
+ = f.password_field :password, :placeholder => "Password", :class => "input-block-level"
6
+ - if devise_mapping.rememberable?
7
+ %label.checkbox
8
+ = f.check_box :remember_me
9
+ Remember me
10
+ = f.submit "Sign in", :class => "btn btn-primary"
11
+ = render "devise/shared/links"
@@ -0,0 +1,17 @@
1
+ %body#comfy{:class => "c-#{params[:controller].slugify} a-#{params[:action].slugify}"}
2
+
3
+ = render 'admin/cms/partials/body_before'
4
+
5
+ .body-wrapper
6
+ .left-column
7
+ .left-column-content
8
+ = render :partial => 'layouts/admin/cms/left'
9
+ .right-column
10
+ .right-column-content
11
+ = render :partial => 'layouts/admin/cms/right'
12
+ .center-column
13
+ = render :partial => 'layouts/admin/cms/center'
14
+
15
+ = render :partial => 'layouts/admin/cms/footer'
16
+
17
+ = render :partial => 'layouts/admin/cms/footer_js'
@@ -10,5 +10,5 @@
10
10
  = javascript_include_tag 'comfortable_mexican_sofa/admin/application'
11
11
 
12
12
  = yield :head
13
- = cms_hook :html_head
14
-
13
+
14
+ = render 'admin/cms/partials/html_head'
@@ -0,0 +1,23 @@
1
+
2
+ = render '/admin/cms/partials/navigation_before'
3
+
4
+ %ul.navigation
5
+ - if admin_page?
6
+ %li= active_link_to t('admin.cms.base.sites'), admin_cms_sites_path, :active => ['admin/cms/sites']
7
+ %li= active_link_to t('cms.fortress.roles.title'), cms_fortress_roles_path
8
+ %li= active_link_to t('cms.fortress.users.title'), cms_fortress_users_path
9
+
10
+ - elsif design_page?
11
+ - if @site && !@site.new_record?
12
+ %li= active_link_to t('admin.cms.base.layouts'), admin_cms_site_layouts_path(@site)
13
+ %li= active_link_to t('admin.cms.base.snippets'), admin_cms_site_snippets_path(@site)
14
+ - else
15
+ - if @site && !@site.new_record?
16
+ %li= active_link_to t('admin.cms.base.pages'), admin_cms_site_pages_path(@site)
17
+ %li= active_link_to t('admin.cms.base.files'), admin_cms_site_files_path(@site)
18
+
19
+ = cms_hook :navigation
20
+
21
+ = render '/admin/cms/partials/navigation_inner'
22
+
23
+ = render '/admin/cms/partials/navigation_after'
data/cms-fortress.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cms-fortress"
8
- s.version = "0.2.0"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Melvin Sembrano"]
12
- s.date = "2013-05-01"
12
+ s.date = "2013-12-10"
13
13
  s.description = "Comfortable Mexican Sofa (CMS) - User and role management extension"
14
14
  s.email = "melvinsembrano@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
+ ".rbenv-gemsets",
22
+ ".ruby-version",
21
23
  ".rvmrc",
22
24
  "Gemfile",
23
25
  "Gemfile.lock",
@@ -54,7 +56,11 @@ Gem::Specification.new do |s|
54
56
  "app/models/cms/fortress/role.rb",
55
57
  "app/models/cms/fortress/role_detail.rb",
56
58
  "app/models/cms/fortress/user.rb",
59
+ "app/models/cms/page_workflow.rb",
57
60
  "app/models/cms_ability.rb",
61
+ "app/views/.DS_Store",
62
+ "app/views/admin/cms/pages/_form.html.haml",
63
+ "app/views/admin/cms/partials/_body_before.html.haml",
58
64
  "app/views/cms/fortress/admin/design.html.haml",
59
65
  "app/views/cms/fortress/admin/roles.html.haml",
60
66
  "app/views/cms/fortress/admin/settings.html.haml",
@@ -70,32 +76,38 @@ Gem::Specification.new do |s|
70
76
  "app/views/cms/fortress/users/edit.html.haml",
71
77
  "app/views/cms/fortress/users/index.html.haml",
72
78
  "app/views/cms/fortress/users/new.html.haml",
73
- "app/views/cms_users/sessions/new.html.erb",
79
+ "app/views/cms/fortress/users/sessions/.DS_Store",
80
+ "app/views/cms/fortress/users/sessions/new.html.haml",
81
+ "app/views/layouts/admin/_body.html.haml",
82
+ "app/views/layouts/admin/cms/.DS_Store",
83
+ "app/views/layouts/admin/cms/_head.html.haml",
84
+ "app/views/layouts/admin/cms/_left.html.haml",
74
85
  "app/views/layouts/cms/fortress/default.html.erb",
75
86
  "app/views/layouts/cms/fortress/session.html.erb",
76
- "app/views/layouts/cms_admin/_body.html.haml",
77
- "app/views/layouts/cms_admin/_head.html.haml",
78
- "app/views/layouts/cms_admin/_left.html.haml",
79
87
  "cms-fortress.gemspec",
80
- "config/initializers/devise.rb",
81
88
  "config/locales/en.yml",
82
89
  "config/roles.yml",
83
- "config/routes.rb",
84
90
  "db/migrate/01_devise_create_cms_fortress_users.rb",
85
91
  "db/migrate/02_create_cms_fortress_role_details.rb",
86
92
  "db/migrate/03_create_cms_fortress_roles.rb",
93
+ "db/migrate/04_create_cms_page_workflows.rb",
87
94
  "lib/cms-fortress.rb",
88
95
  "lib/cms/fortress/application_controller_methods.rb",
89
96
  "lib/cms/fortress/auth.rb",
90
97
  "lib/cms/fortress/comfortable_mexican_sofa.rb",
98
+ "lib/cms/fortress/content_renderer.rb",
91
99
  "lib/cms/fortress/devise.rb",
100
+ "lib/cms/fortress/page_methods.rb",
92
101
  "lib/cms/fortress/rails/engine.rb",
102
+ "lib/cms/fortress/routes/admin.rb",
103
+ "lib/cms/fortress/routing.rb",
93
104
  "lib/generators/cms/fortress/USAGE",
94
105
  "lib/generators/cms/fortress/fortress_generator.rb",
95
106
  "lib/generators/cms/fortress/templates/README",
96
107
  "lib/generators/comfy/cms/cms_generator.rb",
97
108
  "test/fixtures/cms/fortress/role_details.yml",
98
109
  "test/fixtures/cms/fortress/roles.yml",
110
+ "test/fixtures/cms/page_workflows.yml",
99
111
  "test/functional/cms/fortress/roles_controller_test.rb",
100
112
  "test/functional/cms/fortress/users_controller_test.rb",
101
113
  "test/helper.rb",
@@ -109,36 +121,39 @@ Gem::Specification.new do |s|
109
121
  s.homepage = "http://github.com/melvinsembrano/cms-fortress"
110
122
  s.licenses = ["MIT"]
111
123
  s.require_paths = ["lib"]
112
- s.rubygems_version = "1.8.10"
124
+ s.rubygems_version = "1.8.23"
113
125
  s.summary = "Comfortable Mexican Sofa (CMS) - User and role management extension"
114
126
 
115
127
  if s.respond_to? :specification_version then
116
128
  s.specification_version = 3
117
129
 
118
130
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
119
- s.add_runtime_dependency(%q<rails>, [">= 0"])
120
- s.add_runtime_dependency(%q<comfortable_mexican_sofa>, ["= 1.8.1"])
121
- s.add_runtime_dependency(%q<devise>, [">= 1.5.4"])
131
+ s.add_runtime_dependency(%q<rails>, [">= 4.0.0"])
132
+ s.add_runtime_dependency(%q<comfortable_mexican_sofa>, ["~> 1.11"])
133
+ s.add_runtime_dependency(%q<devise>, ["~> 3.2"])
122
134
  s.add_runtime_dependency(%q<cancan>, [">= 1.6.9"])
135
+ s.add_runtime_dependency(%q<delayed_job>, ["~> 4"])
123
136
  s.add_development_dependency(%q<rdoc>, [">= 0"])
124
137
  s.add_development_dependency(%q<bundler>, [">= 0"])
125
138
  s.add_development_dependency(%q<jeweler>, [">= 0"])
126
139
  s.add_development_dependency(%q<simplecov>, [">= 0"])
127
140
  else
128
- s.add_dependency(%q<rails>, [">= 0"])
129
- s.add_dependency(%q<comfortable_mexican_sofa>, ["= 1.8.1"])
130
- s.add_dependency(%q<devise>, [">= 1.5.4"])
141
+ s.add_dependency(%q<rails>, [">= 4.0.0"])
142
+ s.add_dependency(%q<comfortable_mexican_sofa>, ["~> 1.11"])
143
+ s.add_dependency(%q<devise>, ["~> 3.2"])
131
144
  s.add_dependency(%q<cancan>, [">= 1.6.9"])
145
+ s.add_dependency(%q<delayed_job>, ["~> 4"])
132
146
  s.add_dependency(%q<rdoc>, [">= 0"])
133
147
  s.add_dependency(%q<bundler>, [">= 0"])
134
148
  s.add_dependency(%q<jeweler>, [">= 0"])
135
149
  s.add_dependency(%q<simplecov>, [">= 0"])
136
150
  end
137
151
  else
138
- s.add_dependency(%q<rails>, [">= 0"])
139
- s.add_dependency(%q<comfortable_mexican_sofa>, ["= 1.8.1"])
140
- s.add_dependency(%q<devise>, [">= 1.5.4"])
152
+ s.add_dependency(%q<rails>, [">= 4.0.0"])
153
+ s.add_dependency(%q<comfortable_mexican_sofa>, ["~> 1.11"])
154
+ s.add_dependency(%q<devise>, ["~> 3.2"])
141
155
  s.add_dependency(%q<cancan>, [">= 1.6.9"])
156
+ s.add_dependency(%q<delayed_job>, ["~> 4"])
142
157
  s.add_dependency(%q<rdoc>, [">= 0"])
143
158
  s.add_dependency(%q<bundler>, [">= 0"])
144
159
  s.add_dependency(%q<jeweler>, [">= 0"])
data/config/roles.yml CHANGED
@@ -1,6 +1,8 @@
1
1
  contents:
2
2
  - pages
3
3
  - files
4
+ - page.review
5
+ - page.publish
4
6
  designs:
5
7
  - layouts
6
8
  - snippets
@@ -0,0 +1,11 @@
1
+ class CreateCmsPageWorkflows < ActiveRecord::Migration
2
+ def change
3
+ create_table :cms_page_workflows do |t|
4
+ t.integer :cms_page_id
5
+ t.integer :status_id
6
+ t.date :published_date
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
data/lib/cms-fortress.rb CHANGED
@@ -2,8 +2,11 @@ require 'comfortable_mexican_sofa'
2
2
  require 'devise'
3
3
  require 'cancan'
4
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'
5
+ require_relative 'cms/fortress/application_controller_methods'
6
+ require_relative 'cms/fortress/page_methods'
7
+ require_relative 'cms/fortress/rails/engine'
8
+ require_relative 'cms/fortress/auth'
9
+ require_relative 'cms/fortress/content_renderer'
10
+ require_relative 'cms/fortress/comfortable_mexican_sofa'
11
+ require_relative 'cms/fortress/devise'
12
+ require_relative 'cms/fortress/routing'
@@ -2,12 +2,12 @@ module Cms
2
2
  module Fortress
3
3
  module ApplicationControllerMethods
4
4
  def after_sign_in_path_for(resource)
5
- cms_admin_path
5
+ admin_cms_path
6
6
  end
7
7
 
8
8
  def after_sign_out_path_for(resource_or_scope)
9
9
  # request.referrer
10
- cms_admin_path
10
+ admin_cms_path
11
11
  end
12
12
  end
13
13
  end
@@ -2,8 +2,8 @@ module Cms
2
2
  module Fortress
3
3
  module Auth
4
4
  def authenticate
5
- unless current_cms_user
6
- redirect_to new_cms_user_session_path
5
+ unless current_cms_fortress_user
6
+ redirect_to new_cms_fortress_user_session_path
7
7
  end
8
8
  end
9
9
  end
@@ -1,5 +1,6 @@
1
1
  ComfortableMexicanSofa.configure do |config|
2
2
  config.admin_auth = 'Cms::Fortress::Auth'
3
+ config.cms_title = 'CMS Fortress (Powered by ComfortableMexicanSofa)'
3
4
  end
4
5
 
5
6
  ComfortableMexicanSofa::ViewHooks.add(:header, 'cms/fortress/shared/admin_topnav')
@@ -0,0 +1,30 @@
1
+ module Cms
2
+ module Fortress
3
+ module ContentRenderer
4
+
5
+ def self.included(base)
6
+
7
+ base.class_eval do
8
+
9
+ def render_html(status = 200)
10
+
11
+ fresh_when etag: @cms_page, last_modified: @cms_page.updated_at.utc, public: true
12
+
13
+ if @cms_layout = @cms_page.layout
14
+
15
+ #TODO: put the caching config in the page
16
+ response.cache_control[:max_age] = 5.minutes
17
+
18
+ app_layout = (@cms_layout.app_layout.blank? || request.xhr?) ? false : @cms_layout.app_layout
19
+ render(:inline => @cms_page.content, :layout => app_layout, :status => status, :content_type => 'text/html') unless performed?
20
+ else
21
+ render :text => I18n.t('cms.content.layout_not_found'), :status => 404
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ module Cms
2
+ module Fortress
3
+ module PageMethods
4
+
5
+ def self.included(base)
6
+
7
+ base.class_eval do
8
+ has_one :page_workflow, :class_name => "Cms::PageWorkflow", :foreign_key => 'cms_page_id'
9
+ accepts_nested_attributes_for :page_workflow
10
+
11
+ end
12
+
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -6,6 +6,10 @@ module Cms
6
6
  app.config.to_prepare do
7
7
  Devise::SessionsController.layout "cms/fortress/session"
8
8
  ApplicationController.helper(Cms::Fortress::ApplicationHelper)
9
+
10
+ Cms::ContentController.send(:include, Cms::Fortress::ContentRenderer)
11
+ Cms::Page.send(:include, Cms::Fortress::PageMethods)
12
+
9
13
  end
10
14
  app.config.railties_order = [ :all, ComfortableMexicanSofa::Engine, Cms::Fortress::Engine ]
11
15