typus 0.9.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. data/.gitignore +8 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +86 -0
  4. data/Rakefile +61 -0
  5. data/VERSION +1 -0
  6. data/app/controllers/admin/master_controller.rb +354 -0
  7. data/app/controllers/typus_controller.rb +128 -0
  8. data/app/helpers/admin/form_helper.rb +386 -0
  9. data/app/helpers/admin/master_helper.rb +104 -0
  10. data/app/helpers/admin/public_helper.rb +27 -0
  11. data/app/helpers/admin/sidebar_helper.rb +236 -0
  12. data/app/helpers/admin/table_helper.rb +227 -0
  13. data/app/helpers/typus_helper.rb +194 -0
  14. data/app/models/typus_mailer.rb +14 -0
  15. data/app/models/typus_user.rb +5 -0
  16. data/app/views/admin/dashboard/_sidebar.html.erb +9 -0
  17. data/app/views/admin/resources/edit.html.erb +24 -0
  18. data/app/views/admin/resources/index.html.erb +23 -0
  19. data/app/views/admin/resources/new.html.erb +22 -0
  20. data/app/views/admin/resources/show.html.erb +18 -0
  21. data/app/views/admin/shared/_footer.html.erb +1 -0
  22. data/app/views/admin/shared/_pagination.html.erb +28 -0
  23. data/app/views/layouts/admin.html.erb +73 -0
  24. data/app/views/layouts/typus.html.erb +29 -0
  25. data/app/views/typus/dashboard.html.erb +9 -0
  26. data/app/views/typus/recover_password.html.erb +7 -0
  27. data/app/views/typus/reset_password.html.erb +15 -0
  28. data/app/views/typus/sign_in.html.erb +9 -0
  29. data/app/views/typus/sign_up.html.erb +7 -0
  30. data/app/views/typus_mailer/reset_password_link.erb +11 -0
  31. data/config/locales/typus/de.yml +109 -0
  32. data/config/locales/typus/es.yml +109 -0
  33. data/config/locales/typus/language.yml.template +113 -0
  34. data/config/locales/typus/pt-BR.yml +111 -0
  35. data/config/locales/typus/ru.yml +111 -0
  36. data/generators/typus/templates/config/initializers/typus.rb +33 -0
  37. data/generators/typus/templates/config/typus/README +51 -0
  38. data/generators/typus/templates/config/typus/application.yml +6 -0
  39. data/generators/typus/templates/config/typus/application_roles.yml +23 -0
  40. data/generators/typus/templates/config/typus/typus.yml +14 -0
  41. data/generators/typus/templates/config/typus/typus_roles.yml +2 -0
  42. data/generators/typus/templates/db/create_typus_users.rb +21 -0
  43. data/generators/typus/templates/public/images/admin/arrow_down.gif +0 -0
  44. data/generators/typus/templates/public/images/admin/arrow_up.gif +0 -0
  45. data/generators/typus/templates/public/images/admin/spinner.gif +0 -0
  46. data/generators/typus/templates/public/images/admin/status_false.gif +0 -0
  47. data/generators/typus/templates/public/images/admin/status_true.gif +0 -0
  48. data/generators/typus/templates/public/images/admin/trash.gif +0 -0
  49. data/generators/typus/templates/public/javascripts/admin/application.js +14 -0
  50. data/generators/typus/templates/public/stylesheets/admin/reset.css +68 -0
  51. data/generators/typus/templates/public/stylesheets/admin/screen.css +729 -0
  52. data/generators/typus/typus_generator.rb +122 -0
  53. data/generators/typus_update_schema_to_01/templates/config/typus.yml +14 -0
  54. data/generators/typus_update_schema_to_01/templates/migration.rb +11 -0
  55. data/generators/typus_update_schema_to_01/typus_update_schema_to_01_generator.rb +19 -0
  56. data/lib/typus.rb +122 -0
  57. data/lib/typus/active_record.rb +307 -0
  58. data/lib/typus/authentication.rb +142 -0
  59. data/lib/typus/configuration.rb +85 -0
  60. data/lib/typus/extensions/routes.rb +15 -0
  61. data/lib/typus/format.rb +55 -0
  62. data/lib/typus/generator.rb +81 -0
  63. data/lib/typus/hash.rb +8 -0
  64. data/lib/typus/locale.rb +17 -0
  65. data/lib/typus/object.rb +21 -0
  66. data/lib/typus/quick_edit.rb +40 -0
  67. data/lib/typus/reloader.rb +15 -0
  68. data/lib/typus/string.rb +11 -0
  69. data/lib/typus/templates/index.html.erb +11 -0
  70. data/lib/typus/templates/resource_controller.rb.erb +15 -0
  71. data/lib/typus/templates/resource_controller_test.rb.erb +10 -0
  72. data/lib/typus/templates/resources_controller.rb.erb +37 -0
  73. data/lib/typus/user.rb +134 -0
  74. data/lib/vendor/active_record.rb +15 -0
  75. data/lib/vendor/paginator.rb +143 -0
  76. data/rails/init.rb +3 -0
  77. data/tasks/typus_tasks.rake +32 -0
  78. data/test/config/broken/application.yml +68 -0
  79. data/test/config/broken/application_roles.yml +20 -0
  80. data/test/config/broken/empty.yml +0 -0
  81. data/test/config/broken/empty_roles.yml +0 -0
  82. data/test/config/broken/undefined.yml +3 -0
  83. data/test/config/broken/undefined_roles.yml +6 -0
  84. data/test/config/default/typus.yml +14 -0
  85. data/test/config/default/typus_roles.yml +2 -0
  86. data/test/config/empty/empty_01.yml +0 -0
  87. data/test/config/empty/empty_01_roles.yml +0 -0
  88. data/test/config/empty/empty_02.yml +0 -0
  89. data/test/config/empty/empty_02_roles.yml +0 -0
  90. data/test/config/locales/es.yml +10 -0
  91. data/test/config/ordered/001_roles.yml +2 -0
  92. data/test/config/ordered/002_roles.yml +2 -0
  93. data/test/config/unordered/app_one_roles.yml +2 -0
  94. data/test/config/unordered/app_two_roles.yml +2 -0
  95. data/test/config/working/application.yml +68 -0
  96. data/test/config/working/application_roles.yml +22 -0
  97. data/test/config/working/typus.yml +14 -0
  98. data/test/config/working/typus_roles.yml +2 -0
  99. data/test/fixtures/app/controllers/admin/assets_controller.rb +2 -0
  100. data/test/fixtures/app/controllers/admin/categories_controller.rb +2 -0
  101. data/test/fixtures/app/controllers/admin/comments_controller.rb +2 -0
  102. data/test/fixtures/app/controllers/admin/pages_controller.rb +2 -0
  103. data/test/fixtures/app/controllers/admin/posts_controller.rb +2 -0
  104. data/test/fixtures/app/controllers/admin/status_controller.rb +6 -0
  105. data/test/fixtures/app/controllers/admin/typus_users_controller.rb +2 -0
  106. data/test/fixtures/app/controllers/admin/watch_dog_controller.rb +6 -0
  107. data/test/fixtures/app/views/admin/comments/_edit.html.erb +1 -0
  108. data/test/fixtures/app/views/admin/comments/_index.html.erb +1 -0
  109. data/test/fixtures/app/views/admin/comments/_new.html.erb +1 -0
  110. data/test/fixtures/app/views/admin/comments/_show.html.erb +1 -0
  111. data/test/fixtures/app/views/admin/comments/_sidebar.html.erb +1 -0
  112. data/test/fixtures/app/views/admin/dashboard/_content.html.erb +1 -0
  113. data/test/fixtures/app/views/admin/dashboard/_sidebar.html.erb +1 -0
  114. data/test/fixtures/app/views/admin/resources/_sidebar.html.erb +1 -0
  115. data/test/fixtures/app/views/admin/shared/_footer.html.erb +1 -0
  116. data/test/fixtures/app/views/admin/status/index.html.erb +1 -0
  117. data/test/fixtures/app/views/admin/templates/_datepicker.html.erb +1 -0
  118. data/test/fixtures/assets.yml +11 -0
  119. data/test/fixtures/categories.yml +14 -0
  120. data/test/fixtures/comments.yml +27 -0
  121. data/test/fixtures/pages.yml +41 -0
  122. data/test/fixtures/posts.yml +37 -0
  123. data/test/fixtures/typus_users.yml +54 -0
  124. data/test/functional/admin/assets_controller_test.rb +57 -0
  125. data/test/functional/admin/categories_controller_test.rb +106 -0
  126. data/test/functional/admin/comments_controller_test.rb +120 -0
  127. data/test/functional/admin/master_controller_test.rb +5 -0
  128. data/test/functional/admin/posts_controller_test.rb +261 -0
  129. data/test/functional/admin/status_controller_test.rb +43 -0
  130. data/test/functional/admin/typus_users_controller_test.rb +239 -0
  131. data/test/functional/typus_controller_test.rb +321 -0
  132. data/test/helper.rb +51 -0
  133. data/test/helpers/admin/form_helper_test.rb +337 -0
  134. data/test/helpers/admin/master_helper_test.rb +69 -0
  135. data/test/helpers/admin/public_helper_test.rb +26 -0
  136. data/test/helpers/admin/sidebar_helper_test.rb +335 -0
  137. data/test/helpers/admin/table_helper_test.rb +239 -0
  138. data/test/helpers/typus_helper_test.rb +117 -0
  139. data/test/lib/active_record_test.rb +382 -0
  140. data/test/lib/configuration_test.rb +94 -0
  141. data/test/lib/hash_test.rb +11 -0
  142. data/test/lib/routes_test.rb +71 -0
  143. data/test/lib/string_test.rb +25 -0
  144. data/test/lib/typus_test.rb +85 -0
  145. data/test/models.rb +51 -0
  146. data/test/schema.rb +64 -0
  147. data/test/unit/typus_mailer_test.rb +33 -0
  148. data/test/unit/typus_test.rb +17 -0
  149. data/test/unit/typus_user_roles_test.rb +90 -0
  150. data/test/unit/typus_user_test.rb +177 -0
  151. data/test/vendor/active_record_test.rb +18 -0
  152. data/test/vendor/paginator_test.rb +136 -0
  153. data/typus.gemspec +228 -0
  154. metadata +241 -0
@@ -0,0 +1,20 @@
1
+ admin:
2
+ Asset: create, read, update, delete
3
+ Category: create, read, update, delete
4
+ Comment: create, read, update, delete
5
+ TypusUser: create, read, update, delete
6
+ Page: create, read, update, delete
7
+ Post: create, read, update, delete
8
+ Status: index
9
+ Order:
10
+
11
+ editor:
12
+ Category: create, read, update
13
+ Comment: read, update, delete
14
+ Post: create, read, update
15
+ TypusUser: read, update
16
+
17
+ designer:
18
+ Category: read, update
19
+ Comment: read
20
+ Post: read
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ Page:
2
+
3
+ User:
@@ -0,0 +1,6 @@
1
+ admin:
2
+
3
+ designer:
4
+ Category: read, update
5
+ Comment: read
6
+ Post: read
@@ -0,0 +1,14 @@
1
+ TypusUser:
2
+ fields:
3
+ list: email, role, status
4
+ form: first_name, last_name, role, email, password, password_confirmation
5
+ options:
6
+ selectors: role
7
+ booleans:
8
+ status: Active, Inactive
9
+ filters: status, role
10
+ search: first_name, last_name, email, role
11
+ application: Typus
12
+ description: System Users Administration
13
+ options:
14
+ icon_on_boolean: false
@@ -0,0 +1,2 @@
1
+ admin:
2
+ TypusUser: create, read, update, delete
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ # Spanish translations for Rails
2
+ # by Francisco Fernando García Nieto (ffgarcianieto@gmail.com)
3
+
4
+ es:
5
+ activerecord:
6
+ models:
7
+ # Overrides default messages
8
+ comment: "Comentario"
9
+ attributes:
10
+ # Overrides model and default messages.
@@ -0,0 +1,2 @@
1
+ admin:
2
+ categories: read, update
@@ -0,0 +1,2 @@
1
+ admin:
2
+ categories: read
@@ -0,0 +1,2 @@
1
+ admin:
2
+ categories: read
@@ -0,0 +1,2 @@
1
+ admin:
2
+ categories: read, update
@@ -0,0 +1,68 @@
1
+ Asset:
2
+ fields:
3
+ list: caption
4
+ form: caption
5
+ application: Site
6
+ options:
7
+
8
+ Category:
9
+ fields:
10
+ list: name, position
11
+ form: name, permalink, position
12
+ order_by: position
13
+ module: Post
14
+
15
+ Comment:
16
+ fields:
17
+ list: email, post, post_id
18
+ form: email, post
19
+ csv: email, post_id
20
+ export: csv
21
+ filters: post
22
+ search: email, body
23
+ application: Blog
24
+
25
+ Page:
26
+ fields:
27
+ # Body field is overwrited from a Page class method.
28
+ list: title, is_published?
29
+ form: title, body, is_published?
30
+ options:
31
+ booleans:
32
+ is_published: ["Yes, it is", "No, it isn't"]
33
+ actions:
34
+ index: rebuild_all
35
+ edit: rebuild
36
+ application: Site
37
+ filters: is_published?
38
+ options:
39
+ form_rows: 25
40
+ on_header: true
41
+
42
+ Post:
43
+ fields:
44
+ list: title, created_at, status
45
+ form: title, body, created_at, status, published_at
46
+ relationship: title, created_at
47
+ options:
48
+ selectors: status
49
+ read_only: permalink
50
+ auto_generated: created_at
51
+ date_formats:
52
+ created_at: post_short
53
+ templates:
54
+ published_at: datepicker
55
+ relationships: assets, categories
56
+ actions:
57
+ index: cleanup
58
+ edit: send_as_newsletter, preview
59
+ filters: status, created_at, user, user_id
60
+ search: title
61
+ order_by: title, -created_at
62
+ application: Blog
63
+
64
+ CustomUser:
65
+ fields:
66
+ list: first_name, last_name, email
67
+ csv: first_name, last_name, email
68
+ export: csv
@@ -0,0 +1,22 @@
1
+ admin:
2
+ Asset: create, read, update, delete
3
+ Category: create, read, update, delete
4
+ Comment: create, read, update, delete
5
+ Git: index, commit
6
+ Order:
7
+ Page: create, read, update, delete, rebuild, rebuild_all
8
+ Post: create, read, update, delete
9
+ Status: index
10
+ WatchDog: index, cleanup
11
+
12
+ editor:
13
+ Category: create, read, update
14
+ Comment: read, update, delete
15
+ Git: index
16
+ Post: create, read, update
17
+ TypusUser: read, update
18
+
19
+ designer:
20
+ Category: read, update
21
+ Comment: read
22
+ Post: read
@@ -0,0 +1,14 @@
1
+ TypusUser:
2
+ fields:
3
+ list: email, role, status
4
+ form: first_name, last_name, role, email, password, password_confirmation
5
+ options:
6
+ selectors: role
7
+ booleans:
8
+ status: Active, Inactive
9
+ filters: status, role
10
+ search: first_name, last_name, email, role
11
+ application: Typus
12
+ description: System Users Administration
13
+ options:
14
+ icon_on_boolean: false
@@ -0,0 +1,2 @@
1
+ admin:
2
+ TypusUser: create, read, update, delete
@@ -0,0 +1,2 @@
1
+ class Admin::AssetsController < Admin::MasterController
2
+ end
@@ -0,0 +1,2 @@
1
+ class Admin::CategoriesController < Admin::MasterController
2
+ end
@@ -0,0 +1,2 @@
1
+ class Admin::CommentsController < Admin::MasterController
2
+ end
@@ -0,0 +1,2 @@
1
+ class Admin::PagesController < Admin::MasterController
2
+ end
@@ -0,0 +1,2 @@
1
+ class Admin::PostsController < Admin::MasterController
2
+ end
@@ -0,0 +1,6 @@
1
+ class Admin::StatusController < TypusController
2
+
3
+ def index
4
+ end
5
+
6
+ end
@@ -0,0 +1,2 @@
1
+ class Admin::TypusUsersController < Admin::MasterController
2
+ end
@@ -0,0 +1,6 @@
1
+ class Admin::WatchDogController < TypusController
2
+
3
+ def index
4
+ end
5
+
6
+ end
@@ -0,0 +1 @@
1
+ _edit.html.erb
@@ -0,0 +1 @@
1
+ _index.html.erb
@@ -0,0 +1 @@
1
+ _new.html.erb
@@ -0,0 +1 @@
1
+ _show.html.erb
@@ -0,0 +1 @@
1
+ _sidebar.html.erb
@@ -0,0 +1 @@
1
+ _content.html.erb
@@ -0,0 +1 @@
1
+ _sidebar.html.erb
@@ -0,0 +1 @@
1
+ _sidebar.html.erb
@@ -0,0 +1 @@
1
+ _footer.html.erb
@@ -0,0 +1 @@
1
+ index.html.erb
@@ -0,0 +1 @@
1
+ datepicker_template_<%= attribute %>
@@ -0,0 +1,11 @@
1
+ first:
2
+ id: 1
3
+ caption: This is the caption.
4
+ resource_type: Post
5
+ resource_id: 1
6
+
7
+ second:
8
+ id: 2
9
+ caption: This is the second caption.
10
+ resource_type: Post
11
+ resource_id: 1
@@ -0,0 +1,14 @@
1
+ first:
2
+ id: 3
3
+ name: First Category
4
+ position: 1
5
+
6
+ second:
7
+ id: 1
8
+ name: Second Category
9
+ position: 2
10
+
11
+ third:
12
+ id: 2
13
+ name: Third Category
14
+ position: 3
@@ -0,0 +1,27 @@
1
+ first:
2
+ id: 1
3
+ name: John
4
+ email: john@example.com
5
+ body: Body of the comment
6
+ post_id: 1
7
+
8
+ second:
9
+ id: 2
10
+ name: Me
11
+ email: me@example.com
12
+ body: Body of the comment
13
+ post_id: 1
14
+
15
+ without_post_id:
16
+ id: 3
17
+ name: John
18
+ email: john@example.com
19
+ body: Body of the comment
20
+ post_id:
21
+
22
+ with_post_id:
23
+ id: 4
24
+ name: Me
25
+ email: me@example.com
26
+ body: Body of the comment
27
+ post_id: 1
@@ -0,0 +1,41 @@
1
+ published:
2
+ id: 1
3
+ title: Published Page
4
+ body: Content of the published page.
5
+ is_published: true
6
+ parent_id:
7
+
8
+ unpublished:
9
+ id: 2
10
+ title: Unpublished Page
11
+ body: Content of the unpublished page.
12
+ is_published: false
13
+ parent_id: 1
14
+
15
+ section:
16
+ id: 3
17
+ title: Section
18
+ body: This is a section.
19
+ is_published: true
20
+ parent_id:
21
+
22
+ subsection_1:
23
+ id: 4
24
+ title: Subsection 1
25
+ body: This is a subsection.
26
+ is_published: true
27
+ parent_id: 3
28
+
29
+ subsection_2:
30
+ id: 5
31
+ title: Subsection 2
32
+ body: This is a subsection.
33
+ is_published: true
34
+ parent_id: 3
35
+
36
+ subsubsection:
37
+ id: 6
38
+ title: Subsubsection
39
+ body: This is a subsubsection.
40
+ is_published: true
41
+ parent_id: 5
@@ -0,0 +1,37 @@
1
+ # Belongs to admin.
2
+ published:
3
+ id: 1
4
+ title: Title One
5
+ body: This is the body.
6
+ created_at: <%= 7.days.ago.to_s(:db) %>
7
+ updated_at: <%= 7.days.ago.to_s(:db) %>
8
+ status: true
9
+ typus_user_id: 1
10
+
11
+ # Belongs to editor.
12
+ unpublished:
13
+ id: 2
14
+ title: Title Two
15
+ body: This is the body.
16
+ created_at: <%= 6.days.ago.to_s(:db) %>
17
+ updated_at: <%= 6.days.ago.to_s(:db) %>
18
+ status: false
19
+ typus_user_id: 1
20
+
21
+ owned_by_admin:
22
+ id: 3
23
+ title: Owned by admin
24
+ body: This is the body.
25
+ created_at: <%= 5.days.ago.to_s(:db) %>
26
+ updated_at: <%= 5.days.ago.to_s(:db) %>
27
+ status: false
28
+ typus_user_id: 1
29
+
30
+ owned_by_editor:
31
+ id: 4
32
+ title: Owned by editor
33
+ body: This is the body.
34
+ created_at: <%= 4.days.ago.to_s(:db) %>
35
+ updated_at: <%= 4.days.ago.to_s(:db) %>
36
+ status: false
37
+ typus_user_id: 2
@@ -0,0 +1,54 @@
1
+ admin:
2
+ id: 1
3
+ first_name: Admin
4
+ last_name: Example
5
+ role: admin
6
+ email: admin@example.com
7
+ status: true
8
+ token: 1A2B3C4D5E6F
9
+ salt: admin
10
+ crypted_password: <%= Digest::SHA1.hexdigest("--admin--#{12345678}") %>
11
+
12
+ editor:
13
+ id: 2
14
+ first_name: Editor
15
+ last_name: Example
16
+ role: editor
17
+ email: editor@example.com
18
+ status: true
19
+ token: A2B3C4D5E6F1
20
+ salt: editor
21
+ crypted_password: <%= Digest::SHA1.hexdigest("--editor--#{12345678}") %>
22
+
23
+ disabled_user:
24
+ id: 3
25
+ first_name: Typus
26
+ last_name: User
27
+ role: editor
28
+ email: disabled_user@example.com
29
+ status: false
30
+ token: 2B3C4D5E6F1A
31
+ salt: disabled_user
32
+ crypted_password: <%= Digest::SHA1.hexdigest("--disabled_user--#{12345678}") %>
33
+
34
+ designer:
35
+ id: 4
36
+ first_name: Designer
37
+ last_name: Example
38
+ role: designer
39
+ email: designer@example.com
40
+ status: true
41
+ token: B3C4D5E6F1A2
42
+ salt: designer
43
+ crypted_password: <%= Digest::SHA1.hexdigest("--designer--#{12345678}") %>
44
+
45
+ removed_role:
46
+ id: 5
47
+ first_name: Removed
48
+ last_name: Example
49
+ role: removed
50
+ email: removed@example.com
51
+ status: true
52
+ token: 3C4D5E6F1A2B
53
+ salt: removed_role
54
+ crypted_password: <%= Digest::SHA1.hexdigest("--removed_role--#{12345678}") %>