cms-fortress 1.2.2 → 1.3.0.rc1

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 (99) hide show
  1. data/.gitignore +66 -0
  2. data/Gemfile +2 -17
  3. data/Gemfile.lock +80 -90
  4. data/README.rdoc +11 -0
  5. data/Rakefile +9 -39
  6. data/app/controllers/cms/fortress/admin_controller.rb +5 -0
  7. data/app/controllers/cms/fortress/roles_controller.rb +11 -21
  8. data/app/controllers/cms/fortress/users_controller.rb +48 -31
  9. data/app/helpers/cms/fortress/application_helper.rb +37 -5
  10. data/app/helpers/comfy/admin/cms/pages_helper.rb +22 -0
  11. data/app/models/cms/fortress/error.rb +17 -0
  12. data/app/models/cms/fortress/role.rb +2 -1
  13. data/app/models/cms/fortress/settings.rb +17 -0
  14. data/app/models/cms/fortress/user.rb +17 -0
  15. data/app/models/cms_ability.rb +29 -22
  16. data/app/views/cms/fortress/admin/dashboard.html.haml +12 -0
  17. data/app/views/cms/fortress/shared/_dashboard_widget.html.haml +29 -0
  18. data/app/views/cms/fortress/shared/_menu.html.haml +26 -26
  19. data/app/views/cms/fortress/shared/_navbar.html.haml +1 -1
  20. data/app/views/cms/fortress/shared/_page_extend.html.haml +3 -5
  21. data/app/views/cms/fortress/shared/_page_extend_js.html.haml +2 -14
  22. data/app/views/cms/fortress/themes/wide/_body.html.haml +9 -8
  23. data/app/views/cms/fortress/themes/wide/_menu.html.haml +70 -37
  24. data/app/views/cms/fortress/users/_form.html.haml +6 -1
  25. data/app/views/cms/fortress/users/edit.html.haml +1 -2
  26. data/app/views/cms/fortress/users/index.html.haml +14 -5
  27. data/app/views/cms/fortress/users/new.html.haml +1 -2
  28. data/app/views/comfy/admin/cms/pages/_form.html.haml +10 -4
  29. data/app/views/comfy/admin/cms/pages/edit.html.haml +25 -0
  30. data/app/views/layouts/comfy/admin/cms/_head.html.haml +1 -1
  31. data/app/views/layouts/comfy/admin/cms/_left.html.haml +15 -12
  32. data/bin/bundle +3 -0
  33. data/bin/rails +4 -0
  34. data/bin/rake +4 -0
  35. data/cms-fortress.gemspec +32 -171
  36. data/config.ru +4 -0
  37. data/config/application.rb +34 -0
  38. data/config/boot.rb +5 -0
  39. data/config/cms/fortress/global_settings.yml +12 -0
  40. data/config/cms_routes.rb +7 -0
  41. data/config/database.yml +11 -0
  42. data/config/environment.rb +5 -0
  43. data/config/environments/development.rb +29 -0
  44. data/config/environments/test.rb +36 -0
  45. data/config/initializers/devise.rb +256 -0
  46. data/config/initializers/secret_token.rb +14 -0
  47. data/config/locales/de.yml +28 -1
  48. data/config/locales/devise.en.yml +59 -0
  49. data/config/locales/en.yml +37 -1
  50. data/config/roles.yml +1 -0
  51. data/config/secrets.yml +14 -0
  52. data/db/migrate/06_add_type_to_users.rb +11 -0
  53. data/db/migrate/07_integrate_workflow_into_cms_pages.rb +37 -0
  54. data/db/schema.rb +182 -0
  55. data/lib/assets/.keep +0 -0
  56. data/lib/cms-fortress.rb +10 -1
  57. data/lib/cms/fortress/application_controller_methods.rb +5 -2
  58. data/lib/cms/fortress/page_methods.rb +52 -2
  59. data/lib/cms/fortress/pages_controller_methods.rb +17 -0
  60. data/lib/cms/fortress/rails/engine.rb +12 -3
  61. data/lib/cms/fortress/routes/admin.rb +9 -1
  62. data/lib/cms/fortress/site_methods.rb +29 -0
  63. data/lib/cms/fortress/sites_controller_methods.rb +22 -0
  64. data/lib/generators/cms/comfy/comfy_generator.rb +18 -0
  65. data/lib/generators/cms/fortress/fortress_generator.rb +30 -6
  66. data/lib/generators/cms/fortress/upgrade/USAGE +8 -0
  67. data/lib/generators/cms/fortress/upgrade/upgrade_generator.rb +24 -0
  68. data/lib/tasks/.keep +0 -0
  69. data/test/{functional → controllers}/cms/fortress/roles_controller_test.rb +9 -4
  70. data/test/{functional → controllers}/cms/fortress/users_controller_test.rb +10 -11
  71. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +115 -0
  72. data/test/fixtures/cms/fortress/role_details.yml +89 -8
  73. data/test/fixtures/cms/fortress/roles.yml +17 -0
  74. data/test/fixtures/cms/fortress/users.yml +14 -0
  75. data/test/fixtures/comfy/cms/blocks.yml +12 -0
  76. data/test/fixtures/comfy/cms/categories.yml +4 -0
  77. data/test/fixtures/comfy/cms/categorizations.yml +3 -0
  78. data/test/fixtures/comfy/cms/files.yml +9 -0
  79. data/test/fixtures/comfy/cms/layouts.yml +40 -0
  80. data/test/fixtures/comfy/cms/pages.yml +105 -0
  81. data/test/fixtures/comfy/cms/revisions.yml +21 -0
  82. data/test/fixtures/comfy/cms/sites.yml +6 -0
  83. data/test/fixtures/comfy/cms/snippets.yml +6 -0
  84. data/test/integration/cms/fortress/users_controller_test.rb +16 -0
  85. data/test/models/comfy/cms/page_test.rb +84 -0
  86. data/test/models/comfy/cms/settings_test.rb +16 -0
  87. data/test/test_helper.rb +25 -0
  88. metadata +157 -23
  89. data/app/models/cms/page_workflow.rb +0 -44
  90. data/app/models/error/missing_role_configuration_file.rb +0 -12
  91. data/lib/generators/comfy/cms/cms_generator.rb +0 -60
  92. data/test/fixtures/cms/page_workflows.yml +0 -11
  93. data/test/helper.rb +0 -18
  94. data/test/test_cms-fortress.rb +0 -7
  95. data/test/unit/cms/fortress/role_detail_test.rb +0 -7
  96. data/test/unit/cms/fortress/role_test.rb +0 -7
  97. data/test/unit/cms/fortress/role_user_test.rb +0 -7
  98. data/test/unit/helpers/cms/fortress/roles_helper_test.rb +0 -4
  99. data/test/unit/helpers/cms/fortress/users_helper_test.rb +0 -4
@@ -1,17 +1,98 @@
1
1
  # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
2
 
3
+ admin_pages:
4
+ name: Pages
5
+ command: contents.pages
6
+ can_create: 1
7
+ can_update: 1
8
+ can_delete: 1
9
+ can_view: 1
10
+ role: Administrator
11
+
12
+ admin_files:
13
+ name: Files
14
+ command: contents.files
15
+ can_create: 1
16
+ can_update: 1
17
+ can_delete: 1
18
+ can_view: 1
19
+ role: Administrator
20
+
21
+ admin_page_review:
22
+ name: Page - Review
23
+ command: contents.page.review
24
+ can_create: 1
25
+ can_update: 1
26
+ can_delete: 1
27
+ can_view: 1
28
+ role: Administrator
29
+
30
+ admin_page_publish:
31
+ name: Page - Publish
32
+ command: contents.page.publish
33
+ can_create: 1
34
+ can_update: 1
35
+ can_delete: 1
36
+ can_view: 1
37
+ role: Administrator
38
+
39
+ admin_layouts:
40
+ name: Layouts
41
+ command: designs.layouts
42
+ can_create: 1
43
+ can_update: 1
44
+ can_delete: 1
45
+ can_view: 1
46
+ role: Administrator
47
+
48
+ admin_snippets:
49
+ name: Snippets
50
+ command: designs.snippets
51
+ can_create: 1
52
+ can_update: 1
53
+ can_delete: 1
54
+ can_view: 1
55
+ role: Administrator
56
+
57
+ admin_sites:
58
+ name: Sites
59
+ command: settings.sites
60
+ can_create: 1
61
+ can_update: 1
62
+ can_delete: 1
63
+ can_view: 1
64
+ role: Administrator
65
+
66
+ admin_roles:
67
+ name: Roles
68
+ command: settings.roles
69
+ can_create: 1
70
+ can_update: 1
71
+ can_delete: 1
72
+ can_view: 1
73
+ role: Administrator
74
+
75
+ admin_users:
76
+ name: Users
77
+ command: settings.users
78
+ can_create: 1
79
+ can_update: 1
80
+ can_delete: 1
81
+ can_view: 1
82
+ role: Administrator
83
+
3
84
  one:
4
85
  name: MyString
5
86
  command: MyString
6
- create: false
7
- update: false
8
- delete: false
9
- view: false
87
+ can_create: false
88
+ can_update: false
89
+ can_delete: false
90
+ can_view: false
10
91
 
11
92
  two:
12
93
  name: MyString
13
94
  command: MyString
14
- create: false
15
- update: false
16
- delete: false
17
- view: false
95
+ can_create: false
96
+ can_update: false
97
+ can_delete: false
98
+ can_view: false
@@ -1,9 +1,26 @@
1
1
  # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
2
2
 
3
+ Administrator:
4
+ name: Administrator
5
+ description: Administrator
6
+ site: default
7
+
8
+ Author:
9
+ name: Author
10
+ description: Author
11
+ site: default
12
+
13
+ Contributor:
14
+ name: Contributor
15
+ description: Contributor
16
+ site: default
17
+
3
18
  one:
4
19
  name: MyString
5
20
  description: MyText
21
+ site: default
6
22
 
7
23
  two:
8
24
  name: MyString
9
25
  description: MyText
26
+ site: default
@@ -0,0 +1,14 @@
1
+ one:
2
+ email: 'bla@blub.de'
3
+ encrypted_password: asdf<sdf
4
+ role: Administrator
5
+ reset_password_token: adsfgasd
6
+ reset_password_sent_at:
7
+ remember_created_at:
8
+ sign_in_count:
9
+ current_sign_in_at:
10
+ last_sign_in_at:
11
+ current_sign_in_ip:
12
+ last_sign_in_ip:
13
+ first_name: Harry
14
+ last_name: Belafonte
@@ -0,0 +1,12 @@
1
+ default_field_text:
2
+ blockable: default (Comfy::Cms::Page)
3
+ identifier: default_field_text
4
+ content: default_field_text_content
5
+
6
+ default_page_text:
7
+ blockable: default (Comfy::Cms::Page)
8
+ identifier: default_page_text
9
+ content: |-
10
+ default_page_text_content_a
11
+ {{cms:snippet:default}}
12
+ default_page_text_content_b
@@ -0,0 +1,4 @@
1
+ default:
2
+ site: default
3
+ label: Default
4
+ categorized_type: Comfy::Cms::File
@@ -0,0 +1,3 @@
1
+ default:
2
+ category: default
3
+ categorized: default (Comfy::Cms::File)
@@ -0,0 +1,9 @@
1
+ default:
2
+ site: default
3
+ block:
4
+ label: Default File
5
+ file_file_name: sample.jpg
6
+ file_content_type: image/jpeg
7
+ file_file_size: 20099
8
+ description: Default Description
9
+ position: 0
@@ -0,0 +1,40 @@
1
+ default:
2
+ site: default
3
+ label: Default Layout
4
+ identifier: default
5
+ parent:
6
+ content: |-
7
+ {{cms:field:default_field_text:text}}
8
+ layout_content_a
9
+ {{cms:page:default_page_text:text}}
10
+ layout_content_b
11
+ {{cms:snippet:default}}
12
+ layout_content_c
13
+ css: default_css
14
+ js: default_js
15
+ position: 0
16
+
17
+ nested:
18
+ site: default
19
+ label: Nested Layout
20
+ identifier: nested
21
+ parent:
22
+ content: |-
23
+ {{cms:page:header}}
24
+ {{cms:page:content}}
25
+ css: nested_css
26
+ js: nested_js
27
+ position: 0
28
+
29
+ child:
30
+ site: default
31
+ label: Child Layout
32
+ identifier: child
33
+ parent: nested
34
+ content: |-
35
+ {{cms:page:left_column}}
36
+ {{cms:page:right_column}}
37
+ css: child_css
38
+ js: child_js
39
+ position: 0
40
+
@@ -0,0 +1,105 @@
1
+ default:
2
+ site: default
3
+ parent:
4
+ target_page:
5
+ layout: default
6
+ label: Default Page
7
+ slug:
8
+ full_path: '/'
9
+ children_count: 1
10
+ position: 0
11
+ is_published: true
12
+ content_cache: |-
13
+
14
+ layout_content_a
15
+ default_page_text_content_a
16
+ default_snippet_content
17
+ default_page_text_content_b
18
+ layout_content_b
19
+ default_snippet_content
20
+ layout_content_c
21
+
22
+ child:
23
+ site: default
24
+ parent: default
25
+ target_page:
26
+ layout: default
27
+ label: Child Page
28
+ slug: 'child-page'
29
+ full_path: '/child-page'
30
+ children_count: 0
31
+ position: 0
32
+ is_published: true
33
+ content_cache: |-
34
+
35
+ layout_content_a
36
+
37
+ layout_content_b
38
+ default_snippet_content
39
+ layout_content_c
40
+
41
+ drafted:
42
+ site: default
43
+ parent:
44
+ target_page:
45
+ layout: default
46
+ label: Drafted Page
47
+ slug: 'drafted'
48
+ full_path: '/'
49
+ children_count: 1
50
+ position: 0
51
+ is_published: false
52
+ content_cache: |-
53
+
54
+ layout_content_a
55
+ default_page_text_content_a
56
+ default_snippet_content
57
+ default_page_text_content_b
58
+ layout_content_b
59
+ default_snippet_content
60
+ layout_content_c
61
+ aasm_state: drafted
62
+
63
+ reviewed:
64
+ site: default
65
+ parent:
66
+ target_page:
67
+ layout: default
68
+ label: Reviewed Page
69
+ slug: 'reviewed'
70
+ full_path: '/'
71
+ children_count: 0
72
+ position: 0
73
+ is_published: false
74
+ content_cache: |-
75
+
76
+ layout_content_a
77
+ default_page_text_content_a
78
+ default_snippet_content
79
+ default_page_text_content_b
80
+ layout_content_b
81
+ default_snippet_content
82
+ layout_content_c
83
+ aasm_state: reviewed
84
+
85
+ published:
86
+ site: default
87
+ parent:
88
+ target_page:
89
+ layout: default
90
+ label: Published Page
91
+ slug: 'published'
92
+ full_path: '/'
93
+ children_count: 0
94
+ position: 0
95
+ is_published: true
96
+ content_cache: |-
97
+
98
+ layout_content_a
99
+ default_page_text_content_a
100
+ default_snippet_content
101
+ default_page_text_content_b
102
+ layout_content_b
103
+ default_snippet_content
104
+ layout_content_c
105
+ aasm_state: published
@@ -0,0 +1,21 @@
1
+ layout:
2
+ record: default (Comfy::Cms::Layout)
3
+ data: <%= {
4
+ 'content' => 'revision {{cms:page:default_page_text}}',
5
+ 'css' => 'revision css',
6
+ 'js' => 'revision js' }.to_yaml.inspect %>
7
+
8
+ page:
9
+ record: default (Comfy::Cms::Page)
10
+ data: <%= {
11
+ 'blocks_attributes' => [
12
+ { 'identifier' => 'default_page_text',
13
+ 'content' => 'revision page content' },
14
+ { 'identifier' => 'default_field_text',
15
+ 'content' => 'revision field content'}
16
+ ]}.to_yaml.inspect %>
17
+
18
+ snippet:
19
+ record: default (Comfy::Cms::Snippet)
20
+ data: <%= {
21
+ 'content' => 'revision content' }.to_yaml.inspect %>
@@ -0,0 +1,6 @@
1
+ default:
2
+ label: Default Site
3
+ identifier: default-site
4
+ hostname: test.host
5
+ path:
6
+ is_mirrored: false
@@ -0,0 +1,6 @@
1
+ default:
2
+ site: default
3
+ label: Default Snippet
4
+ identifier: default
5
+ content: default_snippet_content
6
+ position: 0
@@ -0,0 +1,16 @@
1
+ # http://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.html
2
+ require 'test_helper'
3
+
4
+ class Cms::Fortress::UsersControllerIntegrationTest < ActionDispatch::IntegrationTest
5
+ setup do
6
+ @comfy_cms_site = comfy_cms_sites(:default)
7
+ end
8
+
9
+ test "it should redirect to login if unauthenticated" do
10
+ get "/cms-admin/"
11
+ follow_redirect!
12
+ follow_redirect!
13
+ assert_equal 200, status
14
+ assert_equal "/cms-admin/login", path
15
+ end
16
+ end
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+
3
+ class Comfy::Cms::PageTest < ActiveSupport::TestCase
4
+
5
+ test "new page can be drafted" do
6
+ @new = comfy_cms_pages(:default)
7
+ @new.draft
8
+ assert(@new.drafted?)
9
+ assert(!@new.is_published)
10
+ end
11
+
12
+ test "new page can be reviewed" do
13
+ @new = comfy_cms_pages(:default)
14
+ @new.review
15
+ assert(@new.reviewed?)
16
+ assert(!@new.is_published)
17
+ end
18
+
19
+ test "new page can be published" do
20
+ @new = comfy_cms_pages(:default)
21
+ @new.publish
22
+ assert(@new.published?)
23
+ assert(@new.is_published)
24
+ end
25
+
26
+ test "drafted page can be reviewed" do
27
+ @drafted = comfy_cms_pages(:drafted)
28
+ @drafted.review
29
+ assert(@drafted.reviewed?)
30
+ assert(!@drafted.is_published)
31
+ end
32
+
33
+ test "drafted page can be published" do
34
+ @drafted = comfy_cms_pages(:drafted)
35
+ @drafted.publish
36
+ assert(@drafted.published?)
37
+ assert(@drafted.is_published)
38
+ end
39
+
40
+ test "reviewed page can be published" do
41
+ @reviewed = comfy_cms_pages(:reviewed)
42
+ assert(!@reviewed.is_published)
43
+ @reviewed.publish
44
+ assert(@reviewed.published?)
45
+ assert(@reviewed.is_published)
46
+ end
47
+
48
+ test "reviewed page can be resetted" do
49
+ @reviewed = comfy_cms_pages(:reviewed)
50
+ @reviewed.reset
51
+ assert(@reviewed.drafted?)
52
+ end
53
+
54
+ test "reviewed page can be drafted" do
55
+ @reviewed = comfy_cms_pages(:reviewed)
56
+ assert_raises (AASM::InvalidTransition) {
57
+ @reviewed.draft
58
+ }
59
+ assert(!@reviewed.is_published)
60
+ end
61
+
62
+ test "published page can be resetted" do
63
+ @published = comfy_cms_pages(:published)
64
+ @published.reset
65
+ assert(@published.drafted?)
66
+ assert(!@published.is_published)
67
+ end
68
+
69
+ test "published page can be drafted" do
70
+ @published = comfy_cms_pages(:published)
71
+ assert_raises (AASM::InvalidTransition) {
72
+ @published.draft
73
+ }
74
+ assert(@published.is_published)
75
+ end
76
+
77
+ test "published page cannot be reviewed" do
78
+ @published = comfy_cms_pages(:published)
79
+ assert_raises (AASM::InvalidTransition) {
80
+ @published.review
81
+ }
82
+ assert(@published.is_published)
83
+ end
84
+ end