cms-fortress 0.2.0 → 1.0.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 (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