deluxe_publisher 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +29 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +127 -0
  6. data/Rakefile +61 -0
  7. data/VERSION +1 -0
  8. data/app/controllers/deluxe_publisher/comments_controller.rb +93 -0
  9. data/app/controllers/deluxe_publisher/page_types_controller.rb +115 -0
  10. data/app/controllers/deluxe_publisher/pages_controller.rb +191 -0
  11. data/app/controllers/deluxe_publisher/presenter_controller.rb +185 -0
  12. data/app/controllers/deluxe_publisher/redirects_controller.rb +90 -0
  13. data/app/controllers/deluxe_publisher/sitemap_controller.rb +10 -0
  14. data/app/helpers/application_helper.rb +2 -0
  15. data/app/helpers/deluxe_publisher/comments_helper.rb +2 -0
  16. data/app/helpers/deluxe_publisher/page_types_helper.rb +13 -0
  17. data/app/helpers/deluxe_publisher/pages_helper.rb +41 -0
  18. data/app/helpers/deluxe_publisher/presenter_helper.rb +111 -0
  19. data/app/helpers/deluxe_publisher/redirects_helper.rb +2 -0
  20. data/app/helpers/deluxe_publisher/sitemap_helper.rb +2 -0
  21. data/app/models/ckeditor/asset.rb +88 -0
  22. data/app/models/ckeditor/attachment_file.rb +40 -0
  23. data/app/models/ckeditor/picture.rb +23 -0
  24. data/app/models/deluxe_publisher/comment.rb +6 -0
  25. data/app/models/deluxe_publisher/content.rb +6 -0
  26. data/app/models/deluxe_publisher/content_descriptor.rb +4 -0
  27. data/app/models/deluxe_publisher/page.rb +206 -0
  28. data/app/models/deluxe_publisher/page_type.rb +55 -0
  29. data/app/models/deluxe_publisher/redirect.rb +6 -0
  30. data/app/models/deluxe_publisher.rb +5 -0
  31. data/app/views/deluxe_publisher/comments/_form.html.erb +31 -0
  32. data/app/views/deluxe_publisher/comments/edit.html.erb +6 -0
  33. data/app/views/deluxe_publisher/comments/index.html.erb +31 -0
  34. data/app/views/deluxe_publisher/comments/new.html.erb +6 -0
  35. data/app/views/deluxe_publisher/comments/show.html.erb +30 -0
  36. data/app/views/deluxe_publisher/page_types/_content_descriptors.html.erb +15 -0
  37. data/app/views/deluxe_publisher/page_types/_form.html.erb +59 -0
  38. data/app/views/deluxe_publisher/page_types/content_areas_change.js.erb +3 -0
  39. data/app/views/deluxe_publisher/page_types/edit.html.erb +8 -0
  40. data/app/views/deluxe_publisher/page_types/index.html.erb +29 -0
  41. data/app/views/deluxe_publisher/page_types/new.html.erb +7 -0
  42. data/app/views/deluxe_publisher/page_types/show.html.erb +45 -0
  43. data/app/views/deluxe_publisher/pages/_form.html.erb +39 -0
  44. data/app/views/deluxe_publisher/pages/_general.html.erb +108 -0
  45. data/app/views/deluxe_publisher/pages/_page.html.erb +23 -0
  46. data/app/views/deluxe_publisher/pages/_page_content.html.erb +16 -0
  47. data/app/views/deluxe_publisher/pages/_page_links.html.erb +9 -0
  48. data/app/views/deluxe_publisher/pages/_seo.html.erb +27 -0
  49. data/app/views/deluxe_publisher/pages/edit.html.erb +5 -0
  50. data/app/views/deluxe_publisher/pages/index.html.erb +11 -0
  51. data/app/views/deluxe_publisher/pages/new.html.erb +6 -0
  52. data/app/views/deluxe_publisher/pages/page_type_change.js.erb +3 -0
  53. data/app/views/deluxe_publisher/pages/show.html.erb +115 -0
  54. data/app/views/deluxe_publisher/presenter/create_comment.js.erb +3 -0
  55. data/app/views/deluxe_publisher/presenter/create_comment_failed.js.erb +1 -0
  56. data/app/views/deluxe_publisher/presenter/new_comment.js.erb +7 -0
  57. data/app/views/deluxe_publisher/presenter/preview.html.erb +2 -0
  58. data/app/views/deluxe_publisher/redirects/_form.html.erb +29 -0
  59. data/app/views/deluxe_publisher/redirects/edit.html.erb +6 -0
  60. data/app/views/deluxe_publisher/redirects/index.html.erb +27 -0
  61. data/app/views/deluxe_publisher/redirects/new.html.erb +5 -0
  62. data/app/views/deluxe_publisher/redirects/show.html.erb +20 -0
  63. data/app/views/deluxe_publisher/sitemap/index.xml.builder +12 -0
  64. data/app/views/deluxe_publisher/templates/simple_blog.html.erb +19 -0
  65. data/app/views/deluxe_publisher/templates/simple_blog.rss.builder +23 -0
  66. data/app/views/deluxe_publisher/templates/simple_blog_story.html.erb +9 -0
  67. data/app/views/deluxe_publisher/templates/simple_page.html.erb +4 -0
  68. data/app/views/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
  69. data/app/views/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
  70. data/app/views/layouts/application.html.erb +14 -0
  71. data/app/views/layouts/deluxe_publisher.html.erb +36 -0
  72. data/app/views/layouts/deluxe_publisher_blog.html.erb +63 -0
  73. data/app/views/layouts/deluxe_publisher_simple.html.erb +30 -0
  74. data/config/routes.rb +49 -0
  75. data/deluxe_publisher.gemspec +466 -0
  76. data/lib/deluxe_publisher/deluxe_publisher_authentication.rb +37 -0
  77. data/lib/deluxe_publisher/engine.rb +5 -0
  78. data/lib/deluxe_publisher.rb +40 -0
  79. data/lib/generators/deluxe_publisher/base/USAGE +8 -0
  80. data/lib/generators/deluxe_publisher/base/base_generator.rb +45 -0
  81. data/lib/generators/deluxe_publisher/base/templates/images/add.png +0 -0
  82. data/lib/generators/deluxe_publisher/base/templates/images/btn_addNewPage.gif +0 -0
  83. data/lib/generators/deluxe_publisher/base/templates/images/btn_cancel.gif +0 -0
  84. data/lib/generators/deluxe_publisher/base/templates/images/btn_preview.gif +0 -0
  85. data/lib/generators/deluxe_publisher/base/templates/images/btn_save.gif +0 -0
  86. data/lib/generators/deluxe_publisher/base/templates/images/bullet.gif +0 -0
  87. data/lib/generators/deluxe_publisher/base/templates/images/content_bg.jpg +0 -0
  88. data/lib/generators/deluxe_publisher/base/templates/images/delete.png +0 -0
  89. data/lib/generators/deluxe_publisher/base/templates/images/edit.png +0 -0
  90. data/lib/generators/deluxe_publisher/base/templates/images/header_background.jpg +0 -0
  91. data/lib/generators/deluxe_publisher/base/templates/images/icon_published.gif +0 -0
  92. data/lib/generators/deluxe_publisher/base/templates/images/icon_unpublished.gif +0 -0
  93. data/lib/generators/deluxe_publisher/base/templates/images/logo.gif +0 -0
  94. data/lib/generators/deluxe_publisher/base/templates/images/minus.gif +0 -0
  95. data/lib/generators/deluxe_publisher/base/templates/images/plus.gif +0 -0
  96. data/lib/generators/deluxe_publisher/base/templates/images/show.png +0 -0
  97. data/lib/generators/deluxe_publisher/base/templates/images/tab_bg.gif +0 -0
  98. data/lib/generators/deluxe_publisher/base/templates/images/tabs_bg.jpg +0 -0
  99. data/lib/generators/deluxe_publisher/base/templates/initializer.rb +23 -0
  100. data/lib/generators/deluxe_publisher/base/templates/javascripts/deluxe_presenter.js +25 -0
  101. data/lib/generators/deluxe_publisher/base/templates/javascripts/deluxe_publisher.js +86 -0
  102. data/lib/generators/deluxe_publisher/base/templates/javascripts/jquery-rails.js +158 -0
  103. data/lib/generators/deluxe_publisher/base/templates/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
  104. data/lib/generators/deluxe_publisher/base/templates/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
  105. data/lib/generators/deluxe_publisher/base/templates/layouts/deluxe_publisher_blog.html.erb +74 -0
  106. data/lib/generators/deluxe_publisher/base/templates/layouts/deluxe_publisher_simple.html.erb +47 -0
  107. data/lib/generators/deluxe_publisher/base/templates/stylesheets/deluxe_presenter.css +458 -0
  108. data/lib/generators/deluxe_publisher/base/templates/stylesheets/deluxe_publisher.css +202 -0
  109. data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog.html.erb +19 -0
  110. data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog.rss.builder +23 -0
  111. data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog_story.html.erb +12 -0
  112. data/lib/generators/deluxe_publisher/base/templates/templates/simple_page.html.erb +4 -0
  113. data/lib/generators/deluxe_publisher/migration/USAGE +0 -0
  114. data/lib/generators/deluxe_publisher/migration/migration_generator.rb +18 -0
  115. data/lib/generators/deluxe_publisher/migration/templates/migration.rb +98 -0
  116. data/lib/generators/deluxe_publisher/sample_site/sample_site_generator.rb +316 -0
  117. data/spec/controllers/deluxe_publisher/comments_controller_spec.rb +129 -0
  118. data/spec/controllers/deluxe_publisher/page_types_controller_spec.rb +125 -0
  119. data/spec/controllers/deluxe_publisher/pages_controller_spec.rb +129 -0
  120. data/spec/controllers/deluxe_publisher/presenter_controller_spec.rb +19 -0
  121. data/spec/controllers/deluxe_publisher/redirects_controller_spec.rb +118 -0
  122. data/spec/deluxe_publisher_spec.rb +7 -0
  123. data/spec/dummy/Rakefile +7 -0
  124. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  125. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  126. data/spec/dummy/app/views/deluxe_publisher/comments/_form.html.erb +31 -0
  127. data/spec/dummy/app/views/deluxe_publisher/comments/edit.html.erb +6 -0
  128. data/spec/dummy/app/views/deluxe_publisher/comments/index.html.erb +31 -0
  129. data/spec/dummy/app/views/deluxe_publisher/comments/new.html.erb +6 -0
  130. data/spec/dummy/app/views/deluxe_publisher/comments/show.html.erb +30 -0
  131. data/spec/dummy/app/views/deluxe_publisher/page_types/_content_descriptors.html.erb +15 -0
  132. data/spec/dummy/app/views/deluxe_publisher/page_types/_form.html.erb +59 -0
  133. data/spec/dummy/app/views/deluxe_publisher/page_types/content_areas_change.js.erb +3 -0
  134. data/spec/dummy/app/views/deluxe_publisher/page_types/edit.html.erb +8 -0
  135. data/spec/dummy/app/views/deluxe_publisher/page_types/index.html.erb +29 -0
  136. data/spec/dummy/app/views/deluxe_publisher/page_types/new.html.erb +7 -0
  137. data/spec/dummy/app/views/deluxe_publisher/page_types/show.html.erb +45 -0
  138. data/spec/dummy/app/views/deluxe_publisher/pages/_form.html.erb +36 -0
  139. data/spec/dummy/app/views/deluxe_publisher/pages/_general.html.erb +108 -0
  140. data/spec/dummy/app/views/deluxe_publisher/pages/_page.html.erb +23 -0
  141. data/spec/dummy/app/views/deluxe_publisher/pages/_page_content.html.erb +16 -0
  142. data/spec/dummy/app/views/deluxe_publisher/pages/_page_links.html.erb +9 -0
  143. data/spec/dummy/app/views/deluxe_publisher/pages/_seo.html.erb +27 -0
  144. data/spec/dummy/app/views/deluxe_publisher/pages/edit.html.erb +7 -0
  145. data/spec/dummy/app/views/deluxe_publisher/pages/index.html.erb +10 -0
  146. data/spec/dummy/app/views/deluxe_publisher/pages/new.html.erb +7 -0
  147. data/spec/dummy/app/views/deluxe_publisher/pages/page_type_change.js.erb +3 -0
  148. data/spec/dummy/app/views/deluxe_publisher/pages/show.html.erb +115 -0
  149. data/spec/dummy/app/views/deluxe_publisher/presenter/create_comment.js.erb +3 -0
  150. data/spec/dummy/app/views/deluxe_publisher/presenter/create_comment_failed.js.erb +1 -0
  151. data/spec/dummy/app/views/deluxe_publisher/presenter/new_comment.js.erb +7 -0
  152. data/spec/dummy/app/views/deluxe_publisher/presenter/preview.html.erb +2 -0
  153. data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog.html.erb +19 -0
  154. data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog.rss.builder +23 -0
  155. data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog_story.html.erb +9 -0
  156. data/spec/dummy/app/views/deluxe_publisher/templates/simple_page.html.erb +4 -0
  157. data/spec/dummy/app/views/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
  158. data/spec/dummy/app/views/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
  159. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  160. data/spec/dummy/app/views/layouts/deluxe_publisher.html.erb +31 -0
  161. data/spec/dummy/app/views/layouts/deluxe_publisher_blog.html.erb +63 -0
  162. data/spec/dummy/app/views/layouts/deluxe_publisher_simple.html.erb +30 -0
  163. data/spec/dummy/config/application.rb +45 -0
  164. data/spec/dummy/config/boot.rb +10 -0
  165. data/spec/dummy/config/database.yml +22 -0
  166. data/spec/dummy/config/environment.rb +5 -0
  167. data/spec/dummy/config/environments/development.rb +26 -0
  168. data/spec/dummy/config/environments/production.rb +49 -0
  169. data/spec/dummy/config/environments/test.rb +35 -0
  170. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  171. data/spec/dummy/config/initializers/deluxe_publisher.rb +23 -0
  172. data/spec/dummy/config/initializers/inflections.rb +10 -0
  173. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  174. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  175. data/spec/dummy/config/initializers/session_store.rb +8 -0
  176. data/spec/dummy/config/locales/en.yml +5 -0
  177. data/spec/dummy/config/routes.rb +104 -0
  178. data/spec/dummy/config.ru +4 -0
  179. data/spec/dummy/db/migrate/20110405190943_create_deluxe_publisher.rb +135 -0
  180. data/spec/dummy/db/schema.rb +130 -0
  181. data/spec/dummy/public/404.html +26 -0
  182. data/spec/dummy/public/422.html +26 -0
  183. data/spec/dummy/public/500.html +26 -0
  184. data/spec/dummy/public/favicon.ico +0 -0
  185. data/spec/dummy/public/javascripts/application.js +2 -0
  186. data/spec/dummy/public/javascripts/controls.js +965 -0
  187. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  188. data/spec/dummy/public/javascripts/effects.js +1123 -0
  189. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  190. data/spec/dummy/public/javascripts/rails.js +191 -0
  191. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  192. data/spec/dummy/script/rails +6 -0
  193. data/spec/factories/comment_factory.rb +4 -0
  194. data/spec/factories/content_descriptor_factory.rb +5 -0
  195. data/spec/factories/content_factory.rb +24 -0
  196. data/spec/factories/page_factory.rb +26 -0
  197. data/spec/factories/page_type_factory.rb +10 -0
  198. data/spec/factories/redirect_factory.rb +4 -0
  199. data/spec/helpers/deluxe_publisher/comments_helper_spec.rb +15 -0
  200. data/spec/helpers/deluxe_publisher/page_types_helper_spec.rb +26 -0
  201. data/spec/helpers/deluxe_publisher/pages_helper_spec.rb +65 -0
  202. data/spec/helpers/deluxe_publisher/presenter_helper_spec.rb +19 -0
  203. data/spec/helpers/deluxe_publisher/redirects_helper_spec.rb +15 -0
  204. data/spec/integration/navigation_spec.rb +9 -0
  205. data/spec/models/deluxe_publisher/comment_spec.rb +5 -0
  206. data/spec/models/deluxe_publisher/content_descriptor_spec.rb +5 -0
  207. data/spec/models/deluxe_publisher/content_spec.rb +5 -0
  208. data/spec/models/deluxe_publisher/page_spec.rb +358 -0
  209. data/spec/models/deluxe_publisher/page_type_spec.rb +62 -0
  210. data/spec/models/deluxe_publisher/redirect_spec.rb +17 -0
  211. data/spec/requests/deluxe_publisher/deluxe_publisher_comments_spec.rb +11 -0
  212. data/spec/requests/deluxe_publisher/deluxe_publisher_page_types_spec.rb +11 -0
  213. data/spec/requests/deluxe_publisher/deluxe_publisher_redirects_spec.rb +11 -0
  214. data/spec/requests/deluxe_publisher/pages_spec.rb +11 -0
  215. data/spec/routing/deluxe_publisher/comments_routing_spec.rb +35 -0
  216. data/spec/routing/deluxe_publisher/page_types_routing_spec.rb +47 -0
  217. data/spec/routing/deluxe_publisher/pages_routing_spec.rb +47 -0
  218. data/spec/routing/deluxe_publisher/presenter_routing_spec.rb +66 -0
  219. data/spec/routing/deluxe_publisher/redirects_routing_spec.rb +35 -0
  220. data/spec/spec_helper.rb +234 -0
  221. data/spec/views/deluxe_publisher/comments/edit.html.erb_spec.rb +24 -0
  222. data/spec/views/deluxe_publisher/comments/index.html.erb_spec.rb +32 -0
  223. data/spec/views/deluxe_publisher/comments/new.html.erb_spec.rb +24 -0
  224. data/spec/views/deluxe_publisher/comments/show.html.erb_spec.rb +24 -0
  225. data/spec/views/deluxe_publisher/page_types/edit.html.erb_spec.rb +32 -0
  226. data/spec/views/deluxe_publisher/page_types/index.html.erb_spec.rb +48 -0
  227. data/spec/views/deluxe_publisher/page_types/new.html.erb_spec.rb +32 -0
  228. data/spec/views/deluxe_publisher/page_types/show.html.erb_spec.rb +36 -0
  229. data/spec/views/deluxe_publisher/pages/edit.html.erb_spec.rb +58 -0
  230. data/spec/views/deluxe_publisher/pages/index.html.erb_spec.rb +100 -0
  231. data/spec/views/deluxe_publisher/pages/new.html.erb_spec.rb +81 -0
  232. data/spec/views/deluxe_publisher/pages/show.html.erb_spec.rb +75 -0
  233. data/spec/views/deluxe_publisher/presenter/present.html.erb_spec.rb +5 -0
  234. data/spec/views/deluxe_publisher/presenter/preview.html.erb_spec.rb +5 -0
  235. data/spec/views/deluxe_publisher/redirects/edit.html.erb_spec.rb +22 -0
  236. data/spec/views/deluxe_publisher/redirects/index.html.erb_spec.rb +28 -0
  237. data/spec/views/deluxe_publisher/redirects/new.html.erb_spec.rb +22 -0
  238. data/spec/views/deluxe_publisher/redirects/show.html.erb_spec.rb +21 -0
  239. metadata +1006 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,29 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "rails", ">= 3.0.5"
4
+ gem "capybara", ">= 0.4.0"
5
+ gem "webrat"
6
+ gem "sqlite3"
7
+
8
+ #gem 'ckeditor', :git => 'git://github.com/galetahub/rails-ckeditor.git', :branch => 'rails3'
9
+ gem 'ckeditor', '3.5.2'
10
+ gem 'paperclip', "~> 2.3.8"
11
+ gem "haml", "~> 3.0.24"
12
+ gem 'nested_set', '~> 1.6.4'
13
+ gem 'acts-as-taggable-on', "~> 2.0.6"
14
+
15
+
16
+
17
+
18
+ group :development do
19
+ gem "rspec-rails", "~> 2.6.0"
20
+ gem "autotest", "~> 4.4.6"
21
+ gem 'factory_girl_rails', "~> 1.0.1"
22
+ gem 'jquery-rails', "~> 0.2.7"
23
+ gem 'jeweler', '~> 1.5.2'
24
+ end
25
+ # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
26
+ # gem 'ruby-debug'
27
+ # gem 'ruby-debug19'
28
+
29
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Paul Raupach
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,127 @@
1
+ = DeluxePublisher
2
+
3
+ Deluxe Publisher Content Managament Sytem (CMS) Gem was created to easily allow the addition of a CMS to a Rails website
4
+ so that clients can update their own content pages inlcluding simple blog pages. While an entire website could be
5
+ created with only the Deluxe Publisher its designed to add CMS pages/features to sites that have other more complicated
6
+ features.
7
+
8
+ Deluxe Publisher is a Rails 3 Engine and therefore requires Rails 3.
9
+
10
+ <b>Alpha Alpha Alpha</b>, this CMS is under heavy development and not ready for prime time. Use at your own risk.
11
+
12
+ == Instilation
13
+
14
+ === Gemfile
15
+
16
+ Crate a new rails project, change directory to that project, and don't forget to delete your index.html file.
17
+
18
+ rails new MyDeluxeWebsite
19
+ cd MyDeluxeWebsite
20
+ rm public/index.html
21
+
22
+ Or change directory to your rails project.
23
+
24
+ Add these to your Gem file
25
+
26
+ gem "deluxe_publisher", :git => "git://github.com/PaulRaye/Deluxe-Publisher.git"
27
+ gem "acts-as-taggable-on", "~> 2.0.6"
28
+ gem "nested_set", "~> 1.6.4"
29
+ gem "ckeditor", "3.5.2"
30
+ gem "paperclip", "~> 2.3.8"
31
+ gem "aws-s3"
32
+
33
+ and
34
+ bundle install
35
+
36
+ === CKEditor
37
+
38
+ Deluxe Publisher uses CKEditor as it WYSIWYG edtor for content areas.
39
+
40
+ rails g ckeditor:base
41
+ rails g ckeditor:migration
42
+ rake db:migrate
43
+
44
+ See https://github.com/galetahub/rails-ckeditor for details
45
+
46
+ === Set up S3
47
+ If you are using S3 for your uploaded images and files set up your S3.yml file and update your Picture and
48
+ AttachmentFile Models
49
+ See https://github.com/galetahub/rails-ckeditor for details
50
+
51
+ === Acts as Taggable On
52
+ Deluxe Publisher uses Acts as Taggable On for tags in the blog pages, must be installed even if you are not useing blog
53
+ pages.
54
+
55
+ rails g acts_as_taggable_on:migration
56
+ rake db:migrate
57
+
58
+ See https://github.com/mbleigh/acts-as-taggable-on for details.
59
+
60
+ === Deluxe Publisher
61
+ Now to Deluxe Publisher, we need to generate some javascript, CSS and images for the Content Management System as well
62
+ as example files you can use as a starting point for designing your site.
63
+
64
+ rails g deluxe_publisher:base
65
+
66
+ Generate the migration for the Deluxe Publisher Tables and migrate.
67
+
68
+ rails g deluxe_publisher:migration
69
+ rake db:migrate
70
+
71
+ === Load Sample Site
72
+ Now lets load in a sample site so we're not starting with a black page.
73
+ rails g deluxe_publisher:sample_site
74
+
75
+ === Routes
76
+ If you are not using any other engines with your rails application then Deluxe Publisher will use its default routes
77
+ including the wild card route that captures all routes not specified otherwise. You can add routes to your
78
+ routes.rb file that will take presidence over the Deluxe Publisher Routes. However if you are using other Rails
79
+ Engines that also have dedault routes you may need to move those engines routes into your /config/routes.rb file to
80
+ ensure they are called before Deluxe Publishers wildcard route.
81
+
82
+
83
+ === Authentication
84
+
85
+ Deluxe Publisher designed to use your sites authentication, not force one on you.
86
+
87
+ Authentication is set up by selecting the authentication method for both the public facing pages and
88
+ the Administration tools. There are three authentication options:
89
+
90
+ * :none indicating no authentication
91
+ * :basic uses Rails authenticate_or_request_with_http_basic along with login and password you provide
92
+ * :method calls back to an authentication method you provide
93
+
94
+ The Authentication setting are set in the config/initializers/deluxe_publisher.rb file
95
+
96
+ # authentication procedure for public facing pages
97
+ #use :none, :basic, :method
98
+ config.publisher_authorization_procedure = :none
99
+ #for :basic authorization procedure
100
+ config.publisher_username = "Bob"
101
+ config.publisher_password = "isyouruncle"
102
+ #for :method authorization procedure
103
+ config.publisher_authorization_method = :your_authorization_method
104
+
105
+ #Authentication procedure for deluxe publisher admin pages
106
+ #use :none, :basic, :method
107
+ config.admin_authorization_procedure = :basic
108
+ #for :basic authorization procedure
109
+ config.admin_username = "admin" ########## Please Please Please ##########
110
+ config.admin_password = "nimda" ########## Change username and password ##########
111
+ #for :method authorization procedure ########## Or better yet use ##########
112
+ config.admin_authorization_method = :authenticate_admin! ########## an Authorization method ##########
113
+
114
+ Note that the default authentication for public is :none and the default authentication for publisher is :basic with
115
+ username and password of admin/nimda. These are intended to be bad so you're forced to change them.
116
+
117
+ == Its Installed!, now what?
118
+
119
+ Profit!
120
+
121
+ Detailed Instructions to come but you can create page types here:
122
+
123
+ http://yourapp.com/deluxe_publisher/page_types
124
+
125
+ And you can create pages here:
126
+
127
+ http://yourapp.com/deluxe_publisher/pages
data/Rakefile ADDED
@@ -0,0 +1,61 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "deluxe_publisher"
16
+ gem.homepage = "http://github.com/PaulRaye/deluxe_publisher"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{CMS for Rails 3#}
19
+ gem.description = %Q{Content Management System for Rails 3 Created by Paul @ Deluxe Digital Media}
20
+ gem.email = "paul@raupach.com"
21
+ gem.authors = ["Paul Raupach"]
22
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
23
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
+ #gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
+ gem.add_runtime_dependency 'ckeditor', '3.5.2'
26
+ gem.add_runtime_dependency 'paperclip', "~> 2.3.8"
27
+ gem.add_runtime_dependency "haml", "~> 3.0.24"
28
+ gem.add_runtime_dependency 'nested_set', '~> 1.6.4'
29
+ gem.add_runtime_dependency 'acts-as-taggable-on', "~> 2.0.6"
30
+
31
+ #gem.add_development_dependency 'rspec', '> 1.2.3'
32
+ gem.add_development_dependency "rspec-rails", "~> 2.6.0"
33
+ gem.add_development_dependency "autotest", "~> 4.4.6"
34
+ gem.add_development_dependency 'factory_girl_rails', "~> 1.0.1"
35
+ gem.add_development_dependency 'jquery-rails', "~> 0.2.7"
36
+ gem.add_development_dependency 'jeweler', '~> 1.5.2'
37
+ end
38
+ Jeweler::RubygemsDotOrgTasks.new
39
+
40
+ require 'rspec/core'
41
+ require 'rspec/core/rake_task'
42
+ RSpec::Core::RakeTask.new(:spec) do |spec|
43
+ spec.pattern = FileList['spec/**/*_spec.rb']
44
+ end
45
+
46
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
47
+ spec.pattern = 'spec/**/*_spec.rb'
48
+ spec.rcov = true
49
+ end
50
+
51
+ task :default => :spec
52
+
53
+ require 'rake/rdoctask'
54
+ Rake::RDocTask.new do |rdoc|
55
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
56
+
57
+ rdoc.rdoc_dir = 'rdoc'
58
+ rdoc.title = "deluxe_publisher #{version}"
59
+ rdoc.rdoc_files.include('README*')
60
+ rdoc.rdoc_files.include('lib/**/*.rb')
61
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.3
@@ -0,0 +1,93 @@
1
+ class DeluxePublisher::CommentsController < ApplicationController
2
+
3
+ before_filter :load_page
4
+ layout "deluxe_publisher"
5
+
6
+ # GET /deluxe_publisher/comments
7
+ # GET /deluxe_publisher/comments.xml
8
+ def index
9
+ @deluxe_publisher_comments = @page.comments.all
10
+
11
+ respond_to do |format|
12
+ format.html # index.html.erb
13
+ format.xml { render :xml => @deluxe_publisher_comments }
14
+ end
15
+ end
16
+
17
+ # GET /deluxe_publisher/comments/1
18
+ # GET /deluxe_publisher/comments/1.xml
19
+ def show
20
+ @deluxe_publisher_comment = @page.comments.find(params[:id])
21
+
22
+ respond_to do |format|
23
+ format.html # show.html.erb
24
+ format.xml { render :xml => @deluxe_publisher_comment }
25
+ end
26
+ end
27
+
28
+ # GET /deluxe_publisher/comments/new
29
+ # GET /deluxe_publisher/comments/new.xml
30
+ def new
31
+ @deluxe_publisher_comment = @page.comments.build
32
+
33
+ respond_to do |format|
34
+ format.html # new.html.erb
35
+ format.xml { render :xml => @deluxe_publisher_comment }
36
+ end
37
+ end
38
+
39
+ # GET /deluxe_publisher/comments/1/edit
40
+ def edit
41
+ @deluxe_publisher_comment = DeluxePublisher::Comment.find(params[:id])
42
+ end
43
+
44
+ # POST /deluxe_publisher/comments
45
+ # POST /deluxe_publisher/comments.xml
46
+ def create
47
+ @deluxe_publisher_comment = @page.comments.build(params[:deluxe_publisher_comment])
48
+
49
+ respond_to do |format|
50
+ if @deluxe_publisher_comment.save
51
+ format.html { redirect_to(deluxe_publisher_page_comments_path(@page), :notice => 'Comment was successfully created.') }
52
+ format.xml { render :xml => @deluxe_publisher_comment, :status => :created, :location => @deluxe_publisher_comment }
53
+ else
54
+ format.html { render :action => "new" }
55
+ format.xml { render :xml => @deluxe_publisher_comment.errors, :status => :unprocessable_entity }
56
+ end
57
+ end
58
+ end
59
+
60
+ # PUT /deluxe_publisher/comments/1
61
+ # PUT /deluxe_publisher/comments/1.xml
62
+ def update
63
+ @deluxe_publisher_comment = @page.comments.find(params[:id])
64
+
65
+ respond_to do |format|
66
+ if @deluxe_publisher_comment.update_attributes(params[:deluxe_publisher_comment])
67
+ format.html { redirect_to( deluxe_publisher_page_comments_path(@page), :notice => 'Comment was successfully updated.') }
68
+ format.xml { head :ok }
69
+ else
70
+ format.html { render :action => "edit" }
71
+ format.xml { render :xml => @deluxe_publisher_comment.errors, :status => :unprocessable_entity }
72
+ end
73
+ end
74
+ end
75
+
76
+ # DELETE /deluxe_publisher/comments/1
77
+ # DELETE /deluxe_publisher/comments/1.xml
78
+ def destroy
79
+ @deluxe_publisher_comment = @page.comments.find(params[:id])
80
+ @deluxe_publisher_comment.destroy
81
+
82
+ respond_to do |format|
83
+ format.html { redirect_to(deluxe_publisher_page_comments_url(@page)) }
84
+ format.xml { head :ok }
85
+ end
86
+ end
87
+
88
+ private
89
+
90
+ def load_page
91
+ @page = DeluxePublisher::Page.find(params[:page_id])
92
+ end
93
+ end
@@ -0,0 +1,115 @@
1
+ class DeluxePublisher::PageTypesController < ApplicationController
2
+
3
+ include DeluxePublisherAuthentication
4
+
5
+ before_filter :admin_authorize
6
+
7
+ layout "deluxe_publisher"
8
+
9
+ # GET /deluxe_publisher/page_types
10
+ # GET /deluxe_publisher/page_types.xml
11
+ def index
12
+ @deluxe_publisher_page_types = DeluxePublisher::PageType.all
13
+
14
+ respond_to do |format|
15
+ format.html # index.html.erb
16
+ format.xml { render :xml => @deluxe_publisher_page_types }
17
+ end
18
+ end
19
+
20
+ # GET /deluxe_publisher/page_types/1
21
+ # GET /deluxe_publisher/page_types/1.xml
22
+ def show
23
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.find(params[:id])
24
+
25
+ respond_to do |format|
26
+ format.html # show.html.erb
27
+ format.xml { render :xml => @deluxe_publisher_page_type }
28
+ end
29
+ end
30
+
31
+ # GET /deluxe_publisher/page_types/new
32
+ # GET /deluxe_publisher/page_types/new.xml
33
+ def new
34
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.new
35
+
36
+ respond_to do |format|
37
+ format.html # new.html.erb
38
+ format.xml { render :xml => @deluxe_publisher_page_type }
39
+ end
40
+ end
41
+
42
+ # GET /deluxe_publisher/page_types/1/edit
43
+ def edit
44
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.find(params[:id])
45
+ end
46
+
47
+
48
+ def content_areas_change
49
+ if params.has_key?(:id)
50
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.find(params[:id])
51
+ else
52
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.new
53
+ end
54
+
55
+ @deluxe_publisher_page_type.number_of_content_areas = params[:deluxe_publisher_page_type][:number_of_content_areas]
56
+ stash_descriptor_attributes
57
+ respond_to do |format|
58
+ format.js {render :layout => false}
59
+ end
60
+ end
61
+
62
+ # POST /deluxe_publisher/page_types
63
+ # POST /deluxe_publisher/page_types.xml
64
+ def create
65
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.new(params[:deluxe_publisher_page_type])
66
+
67
+ respond_to do |format|
68
+ if @deluxe_publisher_page_type.save
69
+ format.html { redirect_to(@deluxe_publisher_page_type, :notice => 'Page type was successfully created.') }
70
+ format.xml { render :xml => @deluxe_publisher_page_type, :status => :created, :location => @deluxe_publisher_page_type }
71
+ else
72
+ stash_descriptor_attributes
73
+ format.html { render :action => "new" }
74
+ format.xml { render :xml => @deluxe_publisher_page_type.errors, :status => :unprocessable_entity }
75
+ end
76
+ end
77
+ end
78
+
79
+ # PUT /deluxe_publisher/page_types/1
80
+ # PUT /deluxe_publisher/page_types/1.xml
81
+ def update
82
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.find(params[:id])
83
+
84
+ respond_to do |format|
85
+ if @deluxe_publisher_page_type.update_attributes(params[:deluxe_publisher_page_type])
86
+ format.html { redirect_to(@deluxe_publisher_page_type, :notice => 'Page type was successfully updated.') }
87
+ format.xml { head :ok }
88
+ else
89
+ stash_descriptor_attributes
90
+ format.html { render :action => "edit" }
91
+ format.xml { render :xml => @deluxe_publisher_page_type.errors, :status => :unprocessable_entity }
92
+ end
93
+ end
94
+ end
95
+
96
+ # DELETE /deluxe_publisher/page_types/1
97
+ # DELETE /deluxe_publisher/page_types/1.xml
98
+ def destroy
99
+ @deluxe_publisher_page_type = DeluxePublisher::PageType.find(params[:id])
100
+ @deluxe_publisher_page_type.destroy
101
+
102
+ respond_to do |format|
103
+ format.html { redirect_to(deluxe_publisher_page_types_url) }
104
+ format.xml { head :ok }
105
+ end
106
+ end
107
+
108
+ private
109
+
110
+ def stash_descriptor_attributes
111
+ unless params[:deluxe_publisher_page_type].nil? || params[:deluxe_publisher_page_type][:content_descriptors_attributes].nil?
112
+ @deluxe_publisher_page_type.stash_descriptor_attributes(params[:deluxe_publisher_page_type][:content_descriptors_attributes])
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,191 @@
1
+ class DeluxePublisher::PagesController < ApplicationController
2
+
3
+ include DeluxePublisherAuthentication
4
+
5
+ layout "deluxe_publisher"
6
+ before_filter :load_root_page
7
+
8
+ before_filter :admin_authorize
9
+
10
+ # GET /pages
11
+ # GET /pages.xml
12
+ def index
13
+
14
+ @pages = @root_page.descendants.find(:all, :include => :page_type)
15
+
16
+ respond_to do |format|
17
+ format.html # index.html.erb
18
+ format.xml { render :xml => @pages }
19
+ end
20
+ end
21
+
22
+ # GET /pages/1
23
+ # GET /pages/1.xml
24
+ def show
25
+ @page = DeluxePublisher::Page.find(params[:id])
26
+
27
+ @root_page = @page.root
28
+
29
+ if @page.is_a_blog?
30
+ @blog = @page
31
+ @tags = DeluxePublisher::Page.tag_counts_on(:tags)
32
+ end
33
+
34
+ if @page.is_a_blog_story?
35
+ @blog = @page.parent
36
+ @tags = DeluxePublisher::Page.tag_counts_on(:tags)
37
+ end
38
+
39
+ respond_to do |format|
40
+ format.html do
41
+ if @page.page_type.layout.blank?
42
+ render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => false
43
+ else
44
+ render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => @page.page_type.layout
45
+ end
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ # GET /pages/new
52
+ # GET /pages/new.xml
53
+ def new
54
+
55
+
56
+ if params.has_key?(:copy_id)
57
+ subject = DeluxePublisher::Page.find(params[:copy_id])
58
+ @page = subject.clone
59
+ @page.is_published = false
60
+ (0..(subject.number_of_contents-1)).each do |position|
61
+ c = subject.contents[position].clone
62
+ c.page_id = nil
63
+ @page.stash_content(position, c)
64
+ end
65
+ else
66
+ @page = DeluxePublisher::Page.new
67
+ end
68
+
69
+ if params.has_key?(:parent_id)
70
+ @page.parent_id = params[:parent_id]
71
+ else
72
+ @page.parent_id = DeluxePublisher::Page.get_site_root(1).id
73
+ end
74
+
75
+
76
+ respond_to do |format|
77
+ format.html # new.html.erb
78
+ format.xml { render :xml => @page }
79
+ end
80
+ end
81
+
82
+ # GET /pages/1/edit
83
+ def edit
84
+ @page = DeluxePublisher::Page.find_with_content(params[:id])
85
+ end
86
+
87
+ def page_type_change
88
+ if params.has_key?(:id)
89
+ @page = DeluxePublisher::Page.find_with_content(params[:id])
90
+ else
91
+ @page = DeluxePublisher::Page.new
92
+ end
93
+ page_type = DeluxePublisher::PageType.find(params[:deluxe_publisher_page][:page_type_id])
94
+ @page.page_type = page_type
95
+ stash_content
96
+
97
+ respond_to do |format|
98
+ format.js {render :layout => false}
99
+ end
100
+
101
+ end
102
+
103
+ # POST /pages
104
+ # POST /pages.xml
105
+ def create
106
+ @page = DeluxePublisher::Page.new(params[:deluxe_publisher_page])
107
+ @page.site_id = 1
108
+ respond_to do |format|
109
+ if @page.save
110
+ format.html { redirect_to(deluxe_publisher_pages_path, :notice => 'Page was successfully created.') }
111
+ format.xml { render :xml => @page, :status => :created, :location => @page }
112
+ else
113
+ format.html { render :action => "new" }
114
+ format.xml { render :xml => @page.errors, :status => :unprocessable_entity }
115
+ end
116
+ end
117
+ end
118
+
119
+ # PUT /pages/1
120
+ # PUT /pages/1.xml
121
+ def update
122
+ @page = DeluxePublisher::Page.find(params[:id])
123
+
124
+ respond_to do |format|
125
+ if @page.update_attributes(params[:deluxe_publisher_page])
126
+ format.html { redirect_to(deluxe_publisher_pages_path, :notice => 'Page was successfully updated.') }
127
+ format.xml { head :ok }
128
+ else
129
+ format.html { render :action => "edit" }
130
+ format.xml { render :xml => @page.errors, :status => :unprocessable_entity }
131
+ end
132
+ end
133
+ end
134
+
135
+
136
+ def preview
137
+
138
+
139
+ params[:deluxe_publisher_page][:contents_attributes].each do |content|
140
+ content[1]["id"] = nil
141
+ end
142
+
143
+
144
+ @page = DeluxePublisher::Page.new(params[:deluxe_publisher_page])
145
+
146
+ @root_page = @page.root
147
+
148
+ if @page.is_a_blog?
149
+ @blog = @page
150
+ @tags = DeluxePublisher::Page.tag_counts_on(:tags)
151
+ end
152
+
153
+ if @page.is_a_blog_story?
154
+ @blog = @page.parent
155
+ @tags = DeluxePublisher::Page.tag_counts_on(:tags)
156
+ end
157
+
158
+
159
+ if @page.page_type.layout.blank?
160
+ render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => false
161
+ else
162
+ render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => @page.page_type.layout
163
+ end
164
+ end
165
+
166
+ # DELETE /pages/1
167
+ # DELETE /pages/1.xml
168
+ def destroy
169
+ @page = DeluxePublisher::Page.find(params[:id])
170
+ @page.destroy
171
+
172
+ respond_to do |format|
173
+ format.html { redirect_to(deluxe_publisher_pages_url) }
174
+ format.xml { head :ok }
175
+ end
176
+ end
177
+
178
+ def load_root_page
179
+ site_id = 1
180
+ @root_page = DeluxePublisher::Page.get_site_root(site_id)
181
+ end
182
+
183
+ private
184
+ def stash_content
185
+ @page.stash_content_attributes(params[:deluxe_publisher_page][:contents_attributes])
186
+
187
+ end
188
+
189
+
190
+ end
191
+