browsercms 3.5.7 → 4.0.0.alpha

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 (523) hide show
  1. checksums.yaml +7 -0
  2. data/COPYRIGHT.txt +2 -1
  3. data/README.markdown +3 -3
  4. data/app/assets/fonts/icomoon.dev.svg +61 -0
  5. data/app/assets/fonts/icomoon.eot +0 -0
  6. data/app/assets/fonts/icomoon.svg +61 -0
  7. data/app/assets/fonts/icomoon.ttf +0 -0
  8. data/app/assets/fonts/icomoon.woff +0 -0
  9. data/app/assets/images/ckeditor/plugins/delete_content/icons/deletecontent.png +0 -0
  10. data/app/assets/images/ckeditor/plugins/edit_content/icons/editcontent.png +0 -0
  11. data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentdown.png +0 -0
  12. data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentup.png +0 -0
  13. data/app/assets/images/cms/arrow-down.png +0 -0
  14. data/app/assets/images/cms/arrow-up.png +0 -0
  15. data/app/assets/images/cms/cogs.png +0 -0
  16. data/app/assets/images/cms/dashboard/home.png +0 -0
  17. data/app/assets/images/cms/home.png +0 -0
  18. data/app/assets/images/cms/logo.png +0 -0
  19. data/app/assets/images/cms/pencil.png +0 -0
  20. data/app/assets/images/cms/plus.png +0 -0
  21. data/app/assets/images/cms/user.png +0 -0
  22. data/app/assets/javascripts/bcms/ckeditor_inline.js +23 -0
  23. data/app/assets/javascripts/bcms/ckeditor_standard_config.js +1 -1
  24. data/app/assets/javascripts/ckeditor/plugins/delete_content/plugin.js +36 -0
  25. data/app/assets/javascripts/ckeditor/plugins/edit_content/plugin.js +24 -0
  26. data/app/assets/javascripts/ckeditor/plugins/move_content/plugin.js +25 -0
  27. data/app/assets/javascripts/cms/ajax.js +60 -0
  28. data/app/assets/javascripts/cms/application.js +6 -1
  29. data/app/assets/javascripts/cms/attachment_manager.js.erb +3 -10
  30. data/app/assets/javascripts/cms/content_library.js +31 -12
  31. data/app/assets/javascripts/cms/core_library.js.erb +68 -36
  32. data/app/assets/javascripts/cms/form_builder.js +250 -0
  33. data/app/assets/javascripts/cms/namespace.js +2 -0
  34. data/app/assets/javascripts/cms/new_content_button.js +27 -0
  35. data/app/assets/javascripts/cms/page_editor.js +188 -0
  36. data/app/assets/javascripts/cms/page_toolbar.js +13 -0
  37. data/app/assets/javascripts/cms/site.js +2 -0
  38. data/app/assets/javascripts/cms/sitemap.js +219 -0
  39. data/app/assets/javascripts/cms/toolbar.js +17 -1
  40. data/app/assets/javascripts/cms/user.js +40 -0
  41. data/app/assets/javascripts/jquery.exists.js +5 -0
  42. data/app/assets/javascripts/jquery.taglist.js +37 -23
  43. data/app/assets/stylesheets/cms/_assets.css.scss +55 -0
  44. data/app/assets/stylesheets/cms/_base.css.scss +42 -0
  45. data/app/assets/stylesheets/cms/_cms-buttons.css.scss +73 -0
  46. data/app/assets/stylesheets/cms/_cms-forms.css.scss +70 -0
  47. data/app/assets/stylesheets/cms/_colors.css.scss +20 -0
  48. data/app/assets/stylesheets/cms/_dashboard.css.scss +25 -0
  49. data/app/assets/stylesheets/cms/_glyph.css.scss +60 -0
  50. data/app/assets/stylesheets/cms/_main-area.css.scss +62 -0
  51. data/app/assets/stylesheets/cms/_nav.css.scss +197 -0
  52. data/app/assets/stylesheets/cms/_sidebar.css.scss +64 -0
  53. data/app/assets/stylesheets/cms/_sitemap.css.scss +196 -0
  54. data/app/assets/stylesheets/cms/_submenu.css.scss +48 -0
  55. data/app/assets/stylesheets/cms/application.css.scss +49 -0
  56. data/app/assets/stylesheets/cms/core.css.scss +96 -0
  57. data/app/assets/stylesheets/cms/default-forms.css.scss +3 -0
  58. data/app/assets/stylesheets/cms/includes/_animation.css.scss +2 -0
  59. data/app/assets/stylesheets/cms/includes/_rem.css.scss +120 -0
  60. data/app/assets/stylesheets/cms/includes/animation/_animate.css.scss +31 -0
  61. data/app/assets/stylesheets/cms/includes/animation/_core.css.scss +127 -0
  62. data/app/assets/stylesheets/cms/includes/animation/_shared.css.scss +22 -0
  63. data/app/assets/stylesheets/cms/includes/animation/animate/_attention-seekers.css.scss +152 -0
  64. data/app/assets/stylesheets/cms/includes/animation/animate/_bouncing.css.scss +3 -0
  65. data/app/assets/stylesheets/cms/includes/animation/animate/_classes.css.scss +21 -0
  66. data/app/assets/stylesheets/cms/includes/animation/animate/_fading.css.scss +3 -0
  67. data/app/assets/stylesheets/cms/includes/animation/animate/_flippers.css.scss +87 -0
  68. data/app/assets/stylesheets/cms/includes/animation/animate/_lightspeed.css.scss +24 -0
  69. data/app/assets/stylesheets/cms/includes/animation/animate/_rotating.css.scss +3 -0
  70. data/app/assets/stylesheets/cms/includes/animation/animate/_specials.css.scss +42 -0
  71. data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-entrances.css.scss +68 -0
  72. data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-exits.css.scss +60 -0
  73. data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-entrances.css.scss +86 -0
  74. data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-exits.css.scss +86 -0
  75. data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-entrances.css.scss +58 -0
  76. data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-exits.css.scss +58 -0
  77. data/app/assets/stylesheets/cms/page_content_editing.css.scss +4 -0
  78. data/app/assets/stylesheets/cms/page_editor.css.scss +4 -0
  79. data/app/assets/stylesheets/cms/style.css.scss +138 -0
  80. data/app/assets/stylesheets/cms/styles/_alerts.css.scss +150 -0
  81. data/app/assets/stylesheets/cms/styles/_base-grid.css.scss +299 -0
  82. data/app/assets/stylesheets/cms/styles/_buttons.css.scss +247 -0
  83. data/app/assets/stylesheets/cms/styles/_dropdown.css.scss +155 -0
  84. data/app/assets/stylesheets/cms/styles/_forms.css.scss +728 -0
  85. data/app/assets/stylesheets/cms/styles/_glyph.css.scss +86 -0
  86. data/app/assets/stylesheets/cms/styles/_images.css.scss +75 -0
  87. data/app/assets/stylesheets/cms/styles/_lists.css.scss +115 -0
  88. data/app/assets/stylesheets/cms/styles/_modal.css.scss +174 -0
  89. data/app/assets/stylesheets/cms/styles/_progress.css.scss +43 -0
  90. data/app/assets/stylesheets/cms/styles/_tables.css.scss +141 -0
  91. data/app/assets/stylesheets/cms/styles/_text.css.scss +134 -0
  92. data/app/controllers/cms/application_controller.rb +3 -68
  93. data/app/controllers/cms/attachments_controller.rb +5 -5
  94. data/app/controllers/cms/base_controller.rb +20 -13
  95. data/app/controllers/cms/cache_controller.rb +16 -17
  96. data/app/controllers/cms/category_types_controller.rb +6 -1
  97. data/app/controllers/cms/connectors_controller.rb +12 -7
  98. data/app/controllers/cms/content_block_controller.rb +128 -71
  99. data/app/controllers/cms/content_controller.rb +54 -56
  100. data/app/controllers/cms/dashboard_controller.rb +5 -6
  101. data/app/controllers/cms/dynamic_views_controller.rb +12 -9
  102. data/app/controllers/cms/email_messages_controller.rb +18 -13
  103. data/app/controllers/cms/form_entries_controller.rb +119 -0
  104. data/app/controllers/cms/form_fields_controller.rb +74 -0
  105. data/app/controllers/cms/forms_controller.rb +35 -0
  106. data/app/controllers/cms/groups_controller.rb +13 -16
  107. data/app/controllers/cms/html_blocks_controller.rb +2 -2
  108. data/app/controllers/cms/inline_content_controller.rb +48 -0
  109. data/app/controllers/cms/links_controller.rb +58 -46
  110. data/app/controllers/cms/page_components_controller.rb +20 -0
  111. data/app/controllers/cms/page_routes_controller.rb +44 -40
  112. data/app/controllers/cms/pages_controller.rb +111 -97
  113. data/app/controllers/cms/passwords_controller.rb +17 -0
  114. data/app/controllers/cms/portlet_controller.rb +0 -1
  115. data/app/controllers/cms/portlets_controller.rb +20 -27
  116. data/app/controllers/cms/redirects_controller.rb +13 -9
  117. data/app/controllers/cms/resource_controller.rb +15 -4
  118. data/app/controllers/cms/routes_controller.rb +2 -4
  119. data/app/controllers/cms/section_nodes_controller.rb +6 -37
  120. data/app/controllers/cms/sections_controller.rb +13 -8
  121. data/app/controllers/cms/sessions_controller.rb +8 -66
  122. data/app/controllers/cms/sites/passwords_controller.rb +27 -0
  123. data/app/controllers/cms/sites/sessions_controller.rb +20 -0
  124. data/app/controllers/cms/tags_controller.rb +12 -12
  125. data/app/controllers/cms/tasks_controller.rb +45 -46
  126. data/app/controllers/cms/user_controller.rb +8 -0
  127. data/app/controllers/cms/users_controller.rb +91 -68
  128. data/app/helpers/cms/application_helper.rb +58 -52
  129. data/app/helpers/cms/content_block_helper.rb +8 -7
  130. data/app/helpers/cms/form_tag_helper.rb +21 -25
  131. data/app/helpers/cms/menu_helper.rb +1 -3
  132. data/app/helpers/cms/mobile_helper.rb +12 -2
  133. data/app/helpers/cms/nav_menu_helper.rb +23 -0
  134. data/app/helpers/cms/page_helper.rb +72 -30
  135. data/app/helpers/cms/path_helper.rb +46 -70
  136. data/app/helpers/cms/rendering_helper.rb +68 -12
  137. data/app/helpers/cms/section_nodes_helper.rb +92 -31
  138. data/app/helpers/cms/sites/authentication_helper.rb +25 -0
  139. data/app/helpers/cms/sites/devise_shim_helper.rb +31 -0
  140. data/app/helpers/cms/template_support.rb +1 -7
  141. data/app/helpers/cms/ui_elements_helper.rb +147 -6
  142. data/app/helpers/forgot_password_portlet_helper.rb +9 -0
  143. data/app/helpers/login_portlet_helper.rb +10 -0
  144. data/app/inputs/attachments_input.rb +14 -0
  145. data/app/inputs/cms_text_area_input.rb +10 -0
  146. data/app/inputs/cms_text_field_input.rb +29 -0
  147. data/app/inputs/date_picker_input.rb +8 -0
  148. data/app/inputs/file_picker_input.rb +75 -0
  149. data/app/inputs/path_input.rb +18 -0
  150. data/app/inputs/tag_list_input.rb +3 -0
  151. data/app/inputs/template_editor_input.rb +24 -0
  152. data/app/inputs/text_editor_input.rb +19 -0
  153. data/app/models/cms/abstract_file_block.rb +10 -6
  154. data/app/models/cms/attachment.rb +20 -27
  155. data/app/models/cms/category.rb +17 -7
  156. data/app/models/cms/category_type.rb +8 -4
  157. data/app/models/cms/connector.rb +32 -20
  158. data/app/models/cms/content.rb +31 -0
  159. data/app/models/cms/content_type.rb +114 -62
  160. data/app/models/cms/dynamic_view.rb +19 -45
  161. data/app/models/cms/email_message.rb +32 -2
  162. data/app/models/cms/external_user.rb +60 -0
  163. data/app/models/cms/file_block.rb +1 -0
  164. data/app/models/cms/form.rb +47 -0
  165. data/app/models/cms/form_entry.rb +71 -0
  166. data/app/models/cms/form_field.rb +78 -0
  167. data/app/models/cms/group.rb +19 -9
  168. data/app/models/cms/group_permission.rb +1 -1
  169. data/app/models/cms/group_section.rb +1 -1
  170. data/app/models/cms/group_type.rb +5 -5
  171. data/app/models/cms/group_type_permission.rb +1 -1
  172. data/app/models/cms/html_block.rb +14 -19
  173. data/app/models/cms/image_block.rb +1 -0
  174. data/app/models/cms/link.rb +8 -6
  175. data/app/models/cms/page.rb +156 -59
  176. data/app/models/cms/page_component.rb +43 -0
  177. data/app/models/cms/page_partial.rb +16 -8
  178. data/app/models/cms/page_route.rb +1 -1
  179. data/app/models/cms/page_route_condition.rb +1 -1
  180. data/app/models/cms/page_route_option.rb +1 -1
  181. data/app/models/cms/page_route_requirement.rb +1 -1
  182. data/app/models/cms/page_template.rb +14 -9
  183. data/app/models/cms/permission.rb +4 -2
  184. data/app/models/cms/persistent_user.rb +208 -0
  185. data/app/models/cms/portlet.rb +56 -9
  186. data/app/models/cms/redirect.rb +1 -1
  187. data/app/models/cms/search_filter.rb +18 -0
  188. data/app/models/cms/section.rb +39 -28
  189. data/app/models/cms/section_node.rb +32 -5
  190. data/app/models/cms/site.rb +3 -3
  191. data/app/models/cms/tag.rb +14 -12
  192. data/app/models/cms/tagging.rb +2 -2
  193. data/app/models/cms/task.rb +14 -21
  194. data/app/models/cms/templates.rb +1 -2
  195. data/app/models/cms/user.rb +21 -160
  196. data/app/models/cms/user_group_membership.rb +2 -2
  197. data/app/portlets/deprecated_placeholder.rb +12 -0
  198. data/app/portlets/dynamic_portlet.rb +1 -1
  199. data/app/portlets/email_page_portlet.rb +10 -3
  200. data/app/portlets/forgot_password_portlet.rb +9 -28
  201. data/app/portlets/login_portlet.rb +8 -5
  202. data/app/portlets/tag_cloud_portlet.rb +3 -1
  203. data/app/presenters/cms/user_presenter.rb +24 -0
  204. data/app/views/cms/application/_add_content_modal.html.erb +3 -0
  205. data/app/views/cms/application/_buttons.html.erb +7 -0
  206. data/app/views/cms/{shared → application}/_exception.html.erb +0 -0
  207. data/app/views/cms/application/_form_errors.html.erb +7 -0
  208. data/app/views/cms/application/_form_with_buttons.html.erb +10 -0
  209. data/app/views/cms/application/_main_content.html.erb +3 -0
  210. data/app/views/cms/application/_main_with_sidebar.html.erb +8 -0
  211. data/app/views/cms/application/_mobile_toolbar.html.erb +16 -0
  212. data/app/views/cms/application/_page_title.html.erb +5 -0
  213. data/app/views/cms/application/_pagination.html.erb +26 -0
  214. data/app/views/cms/application/_row.html.erb +1 -0
  215. data/app/views/cms/application/_save_buttons.html.erb +7 -0
  216. data/app/views/cms/application/_sidebar_layout.html.erb +3 -0
  217. data/app/views/cms/application/_version.html.erb +23 -0
  218. data/app/views/cms/{shared → application}/_version_conflict_diff.html.erb +0 -0
  219. data/app/views/cms/{shared → application}/_version_conflict_error.html.erb +0 -0
  220. data/app/views/cms/attachments/_attachment_manager.html.erb +22 -0
  221. data/app/views/cms/attachments/_no_attachments_defined.html.erb +1 -0
  222. data/app/views/cms/cache/show.html.erb +5 -10
  223. data/app/views/cms/categories/_form.html.erb +15 -24
  224. data/app/views/cms/category_types/_form.html.erb +1 -1
  225. data/app/views/cms/connectors/new.html.erb +33 -64
  226. data/app/views/cms/content/editing_frame.html.erb +1 -0
  227. data/app/views/cms/content/no_page.html.erb +9 -27
  228. data/app/views/cms/content/show.html.erb +14 -15
  229. data/app/views/cms/content_block/_block_form.html.erb +15 -0
  230. data/app/views/cms/content_block/_buttonbar.html.erb +29 -0
  231. data/app/views/cms/content_block/_buttons.html.erb +13 -0
  232. data/app/views/cms/content_block/_hidden_fields.html.erb +13 -0
  233. data/app/views/cms/content_block/_sidebar.html.erb +35 -0
  234. data/app/views/cms/content_block/edit.html.erb +3 -0
  235. data/app/views/cms/content_block/index.html.erb +87 -0
  236. data/app/views/cms/content_block/new.html.erb +3 -0
  237. data/app/views/cms/content_block/render_block_in_main_container.html.erb +10 -0
  238. data/app/views/cms/content_block/show.html.erb +1 -0
  239. data/app/views/cms/content_block/show_in_isolation.html.erb +15 -0
  240. data/app/views/cms/content_block/versions.html.erb +24 -0
  241. data/app/views/cms/dashboard/_page_drafts.html.erb +12 -22
  242. data/app/views/cms/dashboard/_tasks.html.erb +32 -45
  243. data/app/views/cms/dashboard/index.html.erb +11 -13
  244. data/app/views/cms/dynamic_views/_form.html.erb +8 -10
  245. data/app/views/cms/dynamic_views/edit.html.erb +2 -3
  246. data/app/views/cms/dynamic_views/index.html.erb +22 -44
  247. data/app/views/cms/dynamic_views/new.html.erb +2 -3
  248. data/app/views/cms/email_messages/index.html.erb +31 -34
  249. data/app/views/cms/email_messages/show.html.erb +45 -52
  250. data/app/views/cms/file_blocks/_form.html.erb +2 -4
  251. data/app/views/cms/form_entries/_buttons.html.erb +2 -0
  252. data/app/views/cms/form_entries/_form.html.erb +7 -0
  253. data/app/views/cms/form_entries/_internal_form.html.erb +9 -0
  254. data/app/views/cms/form_entries/edit.html.erb +5 -0
  255. data/app/views/cms/form_entries/error.html.erb +3 -0
  256. data/app/views/cms/form_entries/index.html.erb +4 -0
  257. data/app/views/cms/form_entries/new.html.erb +5 -0
  258. data/app/views/cms/form_entries/show.html.erb +13 -0
  259. data/app/views/cms/form_entries/submit.html.erb +1 -0
  260. data/app/views/cms/form_fields/_form.html.erb +8 -0
  261. data/app/views/cms/form_fields/_select.html.erb +3 -0
  262. data/app/views/cms/form_fields/_text_area.html.erb +3 -0
  263. data/app/views/cms/form_fields/_text_field.html.erb +3 -0
  264. data/app/views/cms/form_fields/edit.html.erb +0 -0
  265. data/app/views/cms/form_fields/new.html.erb +26 -0
  266. data/app/views/cms/form_fields/preview.html.erb +16 -0
  267. data/app/views/cms/forms/_form.html.erb +66 -0
  268. data/app/views/cms/forms/render.html.erb +15 -0
  269. data/app/views/cms/forms/show.html.erb +6 -0
  270. data/app/views/cms/groups/_form.html.erb +32 -38
  271. data/app/views/cms/groups/_permissions.html.erb +11 -34
  272. data/app/views/cms/groups/_sections.html.erb +11 -17
  273. data/app/views/cms/groups/edit.html.erb +1 -3
  274. data/app/views/cms/groups/index.html.erb +10 -32
  275. data/app/views/cms/groups/new.html.erb +2 -4
  276. data/app/views/cms/html_blocks/_form.html.erb +2 -2
  277. data/app/views/cms/html_blocks/render.html.erb +1 -1
  278. data/app/views/cms/image_blocks/_form.html.erb +3 -3
  279. data/app/views/cms/links/_form.html.erb +6 -11
  280. data/app/views/cms/links/edit.html.erb +3 -12
  281. data/app/views/cms/links/new.html.erb +4 -13
  282. data/app/views/cms/page_components/_content.html.erb +18 -0
  283. data/app/views/cms/page_components/new.html.erb +12 -0
  284. data/app/views/cms/page_routes/_form.html.erb +11 -10
  285. data/app/views/cms/page_routes/edit.html.erb +2 -3
  286. data/app/views/cms/page_routes/index.html.erb +25 -48
  287. data/app/views/cms/page_routes/new.html.erb +2 -3
  288. data/app/views/cms/pages/_edit_content.html.erb +28 -0
  289. data/app/views/cms/pages/_form.html.erb +20 -37
  290. data/app/views/cms/pages/_main_form.html.erb +23 -0
  291. data/app/views/cms/pages/_simple_container.html.erb +8 -0
  292. data/app/views/cms/pages/edit.html.erb +2 -23
  293. data/app/views/cms/pages/new.html.erb +2 -16
  294. data/app/views/cms/pages/versions.html.erb +18 -87
  295. data/app/views/cms/redirects/_form.html.erb +6 -14
  296. data/app/views/cms/redirects/edit.html.erb +2 -3
  297. data/app/views/cms/redirects/index.html.erb +24 -50
  298. data/app/views/cms/redirects/new.html.erb +2 -3
  299. data/app/views/cms/routes/index.html.erb +15 -20
  300. data/app/views/cms/section_nodes/_children.html.erb +3 -0
  301. data/app/views/cms/section_nodes/_row_buttons.html.erb +11 -0
  302. data/app/views/cms/section_nodes/_section_node.html.erb +24 -10
  303. data/app/views/cms/section_nodes/_sitemap_buttons.html.erb +47 -0
  304. data/app/views/cms/section_nodes/_status.html.erb +5 -0
  305. data/app/views/cms/section_nodes/show.html.erb +9 -0
  306. data/app/views/cms/sections/_buttons.html.erb +6 -0
  307. data/app/views/cms/sections/_form.html.erb +22 -49
  308. data/app/views/cms/sections/edit.html.erb +3 -8
  309. data/app/views/cms/sections/new.html.erb +4 -20
  310. data/app/views/cms/sessions/new.html.erb +16 -31
  311. data/app/views/cms/shared/access_denied.html.erb +1 -2
  312. data/app/views/cms/shared/error.html.erb +5 -5
  313. data/app/views/cms/sites/_flash.html.erb +8 -0
  314. data/app/views/cms/sites/passwords/new.html.erb +2 -0
  315. data/app/views/cms/sites/sessions/new.html.erb +2 -0
  316. data/app/views/cms/tags/_form.html.erb +1 -1
  317. data/app/views/cms/tags/render.html.erb +0 -1
  318. data/app/views/cms/tasks/new.html.erb +18 -32
  319. data/app/views/cms/toolbar/_new_pages_menu.html.erb +10 -0
  320. data/app/views/cms/users/_form.html.erb +8 -11
  321. data/app/views/cms/users/_password.html.erb +2 -8
  322. data/app/views/cms/users/_user_fields.html.erb +7 -20
  323. data/app/views/cms/users/change_password.html.erb +12 -21
  324. data/app/views/cms/users/edit.html.erb +1 -15
  325. data/app/views/cms/users/index.html.erb +61 -58
  326. data/app/views/cms/users/new.html.erb +1 -12
  327. data/app/views/devise/confirmations/new.html.erb +16 -0
  328. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  329. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  330. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  331. data/app/views/devise/passwords/edit.html.erb +19 -0
  332. data/app/views/devise/passwords/new.html.erb +15 -0
  333. data/app/views/devise/registrations/edit.html.erb +28 -0
  334. data/app/views/devise/registrations/new.html.erb +18 -0
  335. data/app/views/devise/shared/_links.erb +25 -0
  336. data/app/views/devise/unlocks/new.html.erb +16 -0
  337. data/app/views/layouts/cms/_content_types.html.erb +13 -0
  338. data/app/views/layouts/cms/_footer.erb +2 -2
  339. data/app/views/layouts/cms/_head.html.erb +8 -18
  340. data/app/views/layouts/cms/_main_menu.html.erb +78 -0
  341. data/app/views/layouts/cms/application.html.erb +19 -24
  342. data/app/views/layouts/cms/content_page.html.erb +5 -0
  343. data/app/views/layouts/cms/page_editor.html.erb +90 -0
  344. data/app/views/portlets/deprecated_placeholders/_form.html.erb +1 -0
  345. data/app/views/portlets/deprecated_placeholders/render.html.erb +8 -0
  346. data/app/views/portlets/dynamic/_form.html.erb +3 -3
  347. data/app/views/portlets/email_page/_form.html.erb +5 -6
  348. data/app/views/portlets/forgot_password/_form.html.erb +2 -3
  349. data/app/views/portlets/forgot_password/render.html.erb +2 -14
  350. data/app/views/portlets/login/_form.html.erb +4 -6
  351. data/app/views/portlets/login/render.html.erb +8 -27
  352. data/app/views/portlets/portlets/_form.html.erb +7 -6
  353. data/app/views/portlets/tag_cloud/_form.html.erb +4 -4
  354. data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
  355. data/bin/bcms +13 -16
  356. data/config/routes.rb +58 -29
  357. data/db/browsercms.seeds.rb +0 -6
  358. data/db/migrate/{20080815014337_browsercms_3_0_0.rb → 20080815014337_browsercms300.rb} +94 -73
  359. data/db/migrate/20130327184912_browsercms400.rb +90 -0
  360. data/db/migrate/20131206214021_devise_create_users.rb +47 -0
  361. data/db/migrate/20131211223908_kill_reset_password.rb +5 -0
  362. data/db/migrate/20131218222005_create_cms_external_users.rb +10 -0
  363. data/doc/features/design_integration.md +45 -0
  364. data/doc/features/external_user.md +7 -0
  365. data/doc/features/form_builder.md +40 -0
  366. data/doc/features/simple_form_refactor.md +60 -0
  367. data/doc/release_notes.md +224 -10
  368. data/lib/acts_as_list.rb +72 -71
  369. data/lib/browsercms.rb +41 -1
  370. data/lib/cms/acts/content_block.rb +12 -2
  371. data/lib/cms/acts/content_page.rb +3 -4
  372. data/lib/cms/admin_tab.rb +15 -0
  373. data/lib/cms/attachments/configuration.rb +1 -1
  374. data/lib/cms/authentication/controller.rb +83 -177
  375. data/lib/cms/authentication/test_password_strategy.rb +19 -0
  376. data/lib/cms/behaviors.rb +1 -0
  377. data/lib/cms/behaviors/archiving.rb +2 -2
  378. data/lib/cms/behaviors/attaching.rb +21 -45
  379. data/lib/cms/behaviors/connecting.rb +14 -4
  380. data/lib/cms/behaviors/dynamic_attributes.rb +3 -3
  381. data/lib/cms/behaviors/hiding.rb +2 -2
  382. data/lib/cms/behaviors/namespacing.rb +6 -36
  383. data/lib/cms/behaviors/publishing.rb +92 -45
  384. data/lib/cms/behaviors/rendering.rb +15 -7
  385. data/lib/cms/behaviors/searching.rb +5 -4
  386. data/lib/cms/behaviors/soft_deleting.rb +13 -16
  387. data/lib/cms/behaviors/taggable.rb +17 -10
  388. data/lib/cms/behaviors/versioning.rb +12 -16
  389. data/lib/cms/commands/to_version400.rb +10 -0
  390. data/lib/cms/concerns.rb +7 -0
  391. data/lib/cms/concerns/can_be_addressable.rb +326 -0
  392. data/lib/cms/concerns/has_content_type.rb +46 -0
  393. data/lib/cms/concerns/ignores_publishing.rb +9 -0
  394. data/lib/cms/configuration.rb +14 -4
  395. data/lib/cms/configuration/configurable_template.rb +24 -0
  396. data/lib/cms/configuration/devise.rb +256 -0
  397. data/lib/cms/configure_simple_form.rb +142 -0
  398. data/lib/cms/configure_simple_form_bootstrap.rb +49 -0
  399. data/lib/cms/content_filter.rb +18 -0
  400. data/lib/cms/content_page.rb +77 -0
  401. data/lib/cms/content_rendering_support.rb +25 -16
  402. data/lib/cms/controllers/admin_controller.rb +78 -0
  403. data/lib/cms/data_loader.rb +30 -11
  404. data/lib/cms/default_accessible.rb +6 -6
  405. data/lib/cms/domain_support.rb +0 -4
  406. data/lib/cms/engine.rb +52 -20
  407. data/lib/cms/engine_helper.rb +41 -51
  408. data/{app/controllers → lib}/cms/error_handling.rb +11 -5
  409. data/lib/cms/extensions.rb +2 -1
  410. data/lib/cms/extensions/active_model/name.rb +13 -0
  411. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +49 -89
  412. data/lib/cms/extensions/hash.rb +0 -12
  413. data/lib/cms/form_builder/content_block_form_builder.rb +45 -0
  414. data/lib/cms/form_builder/default_input.rb +13 -0
  415. data/lib/cms/form_builder/deprecated_inputs.rb +40 -0
  416. data/lib/cms/form_builder/workflow_buttons.rb +38 -0
  417. data/lib/cms/module.rb +1 -7
  418. data/lib/cms/polymorphic_single_table_inheritance.rb +19 -0
  419. data/lib/cms/publish_workflow.rb +26 -0
  420. data/lib/cms/responders/content_responder.rb +14 -0
  421. data/lib/cms/route_extensions.rb +112 -20
  422. data/lib/cms/version.rb +1 -1
  423. data/lib/generators/browser_cms/demo_site/templates/demo.seeds.rb +0 -2
  424. data/lib/generators/cms/content_block/content_block_generator.rb +19 -46
  425. data/lib/generators/cms/content_block/templates/_form.html.erb +22 -28
  426. data/lib/generators/cms/project/templates/devise.rb.erb +7 -0
  427. metadata +383 -150
  428. data/app/assets/javascripts/cms/sitemap.js.erb +0 -464
  429. data/app/assets/stylesheets/browsercms/application.css +0 -7
  430. data/app/assets/stylesheets/cms/administration.css.erb +0 -91
  431. data/app/assets/stylesheets/cms/application.css.erb +0 -171
  432. data/app/assets/stylesheets/cms/attachment_manager.css.scss +0 -28
  433. data/app/assets/stylesheets/cms/block.css +0 -26
  434. data/app/assets/stylesheets/cms/buttons.css.erb +0 -120
  435. data/app/assets/stylesheets/cms/content_library.css.erb +0 -139
  436. data/app/assets/stylesheets/cms/content_types.css +0 -4
  437. data/app/assets/stylesheets/cms/dashboard.css.erb +0 -118
  438. data/app/assets/stylesheets/cms/data_table.css.erb.erb +0 -156
  439. data/app/assets/stylesheets/cms/date_picker.css.erb +0 -82
  440. data/app/assets/stylesheets/cms/form_layout.css.erb +0 -282
  441. data/app/assets/stylesheets/cms/login.css.erb +0 -78
  442. data/app/assets/stylesheets/cms/menu.css.erb +0 -116
  443. data/app/assets/stylesheets/cms/nav.css.erb +0 -99
  444. data/app/assets/stylesheets/cms/page_toolbar.css.erb +0 -135
  445. data/app/assets/stylesheets/cms/reset.css +0 -46
  446. data/app/assets/stylesheets/cms/selectbox.css.erb +0 -56
  447. data/app/assets/stylesheets/cms/sitemap.css.erb +0 -390
  448. data/app/assets/stylesheets/cms/taglist.css +0 -18
  449. data/app/controllers/application_controller.rb +0 -14
  450. data/app/controllers/cms/content_types_controller.rb +0 -9
  451. data/app/helpers/application_helper.rb +0 -5
  452. data/app/helpers/cms/form_builder.rb +0 -241
  453. data/app/models/cms/content_type_group.rb +0 -15
  454. data/app/models/cms/forgot_password_mailer.rb +0 -14
  455. data/app/portlets/reset_password_portlet.rb +0 -28
  456. data/app/views/cms/blocks/_hidden_fields.html.erb +0 -10
  457. data/app/views/cms/blocks/_toolbar.html.erb +0 -9
  458. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +0 -23
  459. data/app/views/cms/blocks/_toolbar_for_member.html.erb +0 -36
  460. data/app/views/cms/blocks/edit.html.erb +0 -28
  461. data/app/views/cms/blocks/index.html.erb +0 -86
  462. data/app/views/cms/blocks/new.html.erb +0 -19
  463. data/app/views/cms/blocks/show.html.erb +0 -43
  464. data/app/views/cms/blocks/usages.html.erb +0 -44
  465. data/app/views/cms/blocks/versions.html.erb +0 -90
  466. data/app/views/cms/content_types/index.html.erb +0 -14
  467. data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +0 -27
  468. data/app/views/cms/form_builder/_cms_check_box.html.erb +0 -7
  469. data/app/views/cms/form_builder/_cms_date_picker.html.erb +0 -12
  470. data/app/views/cms/form_builder/_cms_datetime_select.html.erb +0 -12
  471. data/app/views/cms/form_builder/_cms_drop_down.html.erb +0 -12
  472. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +0 -9
  473. data/app/views/cms/form_builder/_cms_file_field.html.erb +0 -28
  474. data/app/views/cms/form_builder/_cms_instructions.html.erb +0 -4
  475. data/app/views/cms/form_builder/_cms_tag_list.html.erb +0 -15
  476. data/app/views/cms/form_builder/_cms_template_editor.html.erb +0 -9
  477. data/app/views/cms/form_builder/_cms_text_area.html.erb +0 -10
  478. data/app/views/cms/form_builder/_cms_text_editor.html.erb +0 -19
  479. data/app/views/cms/form_builder/_cms_text_field.html.erb +0 -12
  480. data/app/views/cms/links/destroy.js.rjs +0 -2
  481. data/app/views/cms/page_routes/show.html.erb +0 -10
  482. data/app/views/cms/pages/_edit_connector.html.erb +0 -19
  483. data/app/views/cms/pages/_edit_container.html.erb +0 -11
  484. data/app/views/cms/section_nodes/_link.html.erb +0 -14
  485. data/app/views/cms/section_nodes/_node.html.erb +0 -44
  486. data/app/views/cms/section_nodes/_page.html.erb +0 -20
  487. data/app/views/cms/section_nodes/_section.html.erb +0 -28
  488. data/app/views/cms/section_nodes/index.html.erb +0 -43
  489. data/app/views/cms/sections/_page.html.erb +0 -4
  490. data/app/views/cms/sections/_section.html.erb +0 -8
  491. data/app/views/cms/sections/destroy.js.rjs +0 -2
  492. data/app/views/cms/sections/index.html.erb +0 -23
  493. data/app/views/cms/shared/_admin_sidebar.html.erb +0 -36
  494. data/app/views/cms/shared/_pagination.html.erb +0 -31
  495. data/app/views/cms/toolbar/_mobile_toggle.html.erb +0 -33
  496. data/app/views/cms/toolbar/index.html.erb +0 -1
  497. data/app/views/cms/users/_groups.html.erb +0 -12
  498. data/app/views/cms/users/_toolbar.html.erb +0 -24
  499. data/app/views/cms/users/show.html.erb +0 -50
  500. data/app/views/layouts/_cms_toolbar.html.erb +0 -54
  501. data/app/views/layouts/_page_toolbar.html.erb +0 -119
  502. data/app/views/layouts/cms/administration.html.erb +0 -51
  503. data/app/views/layouts/cms/content_library.html.erb +0 -96
  504. data/app/views/layouts/cms/dashboard.html.erb +0 -16
  505. data/app/views/layouts/cms/login.html.erb +0 -31
  506. data/app/views/layouts/cms/section_nodes.html.erb +0 -20
  507. data/app/views/layouts/cms/toolbar.html.erb +0 -23
  508. data/app/views/portlets/reset_password/_form.html.erb +0 -3
  509. data/app/views/portlets/reset_password/render.html.erb +0 -22
  510. data/bin/bcms-upgrade +0 -332
  511. data/db/migrate/20091109175123_browsercms_3_0_5.rb +0 -9
  512. data/db/migrate/20100117144038_browsercms314.rb +0 -20
  513. data/db/migrate/20100117144039_browsercms315.rb +0 -95
  514. data/db/migrate/20100705083859_browsercms_3_3_0.rb +0 -56
  515. data/db/migrate/20111130221145_browsercms340.rb +0 -56
  516. data/db/migrate/20120329144406_browsercms350.rb +0 -32
  517. data/db/migrate/20120717182827_browsercms353.rb +0 -19
  518. data/db/migrate/20120813180110_browsercms354.rb +0 -9
  519. data/lib/cms/addressable.rb +0 -93
  520. data/lib/cms/authentication/model.rb +0 -116
  521. data/lib/cms/behaviors/pagination.rb +0 -212
  522. data/lib/cms/upgrades/v3_4_0.rb +0 -31
  523. data/lib/cms/upgrades/v3_5_0.rb +0 -227
@@ -0,0 +1,35 @@
1
+ class Cms::FormsController < Cms::ContentBlockController
2
+
3
+ before_filter :associate_form_fields, only: [:create, :update]
4
+ before_filter :strip_new_entry_params, only: [:create, :update]
5
+
6
+ helper do
7
+ # For new forms, if the user doesn't complete and save them, we need to delete them from the database.
8
+ # The reason :new creates a form object (which is not conventional) is to allow AJAX FormField creation/association.
9
+ def cleanup_before_abandoning
10
+ ["new", "create"].include? action_name
11
+ end
12
+ end
13
+
14
+ def new
15
+ super
16
+ @block.confirmation_text = "Thanks for filling out this form."
17
+ @block.save!
18
+ end
19
+
20
+ protected
21
+
22
+ # Split the space separated list of ids into an actual array of ids.
23
+ # Rails might have a more conventional way to do this, but I couldn't figure it out.'
24
+ def associate_form_fields
25
+ field_ids = params[:field_ids].split(" ")
26
+ params[:form][:field_ids] = field_ids
27
+ end
28
+
29
+
30
+ # params[:form][:new_entry] is just a garbage parameter that exists to make displaying forms work.
31
+ # We want to ignore anything submitted here
32
+ def strip_new_entry_params
33
+ params[:form].delete(:new_entry)
34
+ end
35
+ end
@@ -1,21 +1,18 @@
1
1
  module Cms
2
- class GroupsController < Cms::ResourceController
3
- layout 'cms/administration'
4
-
5
- check_permissions :administrate
6
- before_filter :set_menu_section
7
-
8
- def index
9
- @groups = Group.paginate(
10
- :include => :group_type,
11
- :page => params[:page],
12
- :order => params[:order] || "#{Group.table_name}.name")
13
- end
14
-
15
- protected
2
+ class GroupsController < Cms::ResourceController
3
+ include Cms::AdminTab
4
+
5
+ check_permissions :administrate
6
+
7
+ def index
8
+ @groups = Group.includes(:group_type).paginate(:page => params[:page]).order(params[:order] || :name)
9
+ end
10
+
11
+ protected
16
12
  def after_create_url
17
13
  index_url
18
14
  end
15
+
19
16
  def after_update_url
20
17
  index_url
21
18
  end
@@ -23,6 +20,6 @@ class GroupsController < Cms::ResourceController
23
20
  def set_menu_section
24
21
  @menu_section = 'groups'
25
22
  end
26
-
27
- end
23
+
24
+ end
28
25
  end
@@ -1,4 +1,4 @@
1
1
  module Cms
2
- class HtmlBlocksController < Cms::ContentBlockController
3
- end
2
+ class HtmlBlocksController < Cms::ContentBlockController
3
+ end
4
4
  end
@@ -0,0 +1,48 @@
1
+ module Cms
2
+ class InlineContentController < Cms::BaseController
3
+ respond_to :js
4
+
5
+ def update
6
+ content_block = Content.find_draft(params[:content_name], params[:id])
7
+ content_block.update_attributes(filtered_content(content_block))
8
+ @page = Page.find_draft(params[:page_id].to_i)
9
+ if (!@page.live?)
10
+ page_status = "draft"
11
+ status_label = "This page is in draft status"
12
+ else
13
+ page_status = "published"
14
+ status_label = "Published"
15
+ end
16
+
17
+ # After a page update, all the connector ids change. So we need to send
18
+ # the new move up/down/remove paths to client so they will work after an inline update.
19
+ connectors = @page.current_connectors(params[:container].to_sym)
20
+ routes = []
21
+ connectors.each do |c|
22
+ routes << {
23
+ move_up: cms.move_up_connector_path(c, format: :json),
24
+ move_down: cms.move_down_connector_path(c, format: :json),
25
+ remove: cms.connector_path(c, format: :json)
26
+ }
27
+ end
28
+ results = {
29
+ page_status: page_status,
30
+ status_label: status_label,
31
+ page_title: @page.title,
32
+ container: params[:container].to_s,
33
+ routes: routes
34
+ }
35
+ render json: results, layout: false
36
+ end
37
+
38
+ private
39
+
40
+ def filtered_content(content_block)
41
+ ContentFilter.new.filter(content_params(content_block))
42
+ end
43
+
44
+ def content_params(content)
45
+ params.require(:content).permit(content.class.permitted_params)
46
+ end
47
+ end
48
+ end
@@ -1,50 +1,66 @@
1
1
  module Cms
2
- class LinksController < Cms::BaseController
2
+ class LinksController < Cms::BaseController
3
3
 
4
- before_filter :set_toolbar_tab
5
- before_filter :load_section, :only => [:new, :create, :move_to]
6
- before_filter :load_link, :only => [:destroy, :update]
7
- before_filter :load_draft_link, :only => [:edit]
8
-
9
- def new
10
- @link = Link.new(:section => @section)
11
- end
4
+ before_filter :load_section, :only => [:new, :create, :move_to]
5
+ before_filter :load_link, :only => [:destroy, :update]
6
+ before_filter :load_draft_link, :only => [:edit]
7
+
8
+ include Cms::PublishWorkflow
12
9
 
13
- def create
14
- @link = Link.new(params[:link])
15
- @link.section = @section
16
- if @link.save
17
- flash[:notice] = "Link was '#{@link.name}' created."
18
- redirect_to @section
19
- else
20
- render :action => "new"
10
+ def resource
11
+ @link
21
12
  end
22
- end
23
-
24
- def update
25
- if @link.update_attributes(params[:link])
26
- flash[:notice] = "Link '#{@link.name}' was updated"
27
- redirect_to @link.section
28
- else
29
- render :action => 'edit'
30
- end
31
- end
32
-
33
- def destroy
34
- respond_to do |format|
35
- if @link.destroy
36
- message = "Link '#{@link.name}' was deleted."
37
- format.html { flash[:notice] = message; redirect_to(sitemap_url) }
38
- format.json { render :json => {:success => true, :message => message } }
13
+
14
+ def resource_param
15
+ :link
16
+ end
17
+
18
+ def show
19
+ redirect_to sitemap_path
20
+ end
21
+
22
+ def new
23
+ @link = Link.new(:section => @section)
24
+ end
25
+
26
+ def create
27
+ @link = Link.new(link_params)
28
+ @link.section = @section
29
+ if @link.save
30
+ flash[:notice] = "Link was '#{@link.name}' created."
31
+ redirect_to @section
39
32
  else
40
- message = "Link '#{@link.name}' could not be deleted"
41
- format.html { flash[:error] = message; redirect_to(sitemap_url) }
42
- format.json { render :json => {:success => false, :message => message } }
33
+ render :action => "new"
43
34
  end
44
- end
45
- end
35
+ end
46
36
 
47
- protected
37
+ def update
38
+ if @link.update_attributes(link_params)
39
+ flash[:notice] = "Link '#{@link.name}' was updated"
40
+ redirect_to @link.section
41
+ else
42
+ render :action => 'edit'
43
+ end
44
+ end
45
+
46
+ def destroy
47
+ respond_to do |format|
48
+ if @link.destroy
49
+ message = "Link '#{@link.name}' was deleted."
50
+ format.html { flash[:notice] = message; redirect_to(sitemap_url) }
51
+ format.json { render :json => {:success => true, :message => message} }
52
+ else
53
+ message = "Link '#{@link.name}' could not be deleted"
54
+ format.html { flash[:error] = message; redirect_to(sitemap_url) }
55
+ format.json { render :json => {:success => false, :message => message} }
56
+ end
57
+ end
58
+ end
59
+
60
+ protected
61
+ def link_params
62
+ params.require(:link).permit(Cms::Link.permitted_params)
63
+ end
48
64
 
49
65
  def load_section
50
66
  @section = Section.find(params[:section_id])
@@ -55,15 +71,11 @@ class LinksController < Cms::BaseController
55
71
  @link = Link.find(params[:id])
56
72
  raise Cms::Errors::AccessDenied unless current_user.able_to_edit?(@link)
57
73
  end
58
-
74
+
59
75
  def load_draft_link
60
76
  load_link
61
77
  @link = @link.as_of_draft_version
62
78
  end
63
79
 
64
- def set_toolbar_tab
65
- @toolbar_tab = :sitemap
66
- end
67
-
68
- end
80
+ end
69
81
  end
@@ -0,0 +1,20 @@
1
+ module Cms
2
+ class PageComponentsController < Cms::ApplicationController
3
+ layout false
4
+ respond_to :json
5
+
6
+ def new
7
+ @default_type = Cms::ContentType.default
8
+ @content_types = Cms::ContentType.other_connectables
9
+ end
10
+
11
+ def update
12
+ @page_component = PageComponent.new(params[:id], params[:content])
13
+ if @page_component.save
14
+ respond_with(@page_component)
15
+ else
16
+ respond_with(@page_component.errors, :status => :unprocessable_entity)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,47 +1,51 @@
1
1
  module Cms
2
- class PageRoutesController < Cms::BaseController
3
-
4
- before_filter :load_page_route, :only => [:show, :edit, :update, :destroy]
5
- layout 'cms/administration'
6
-
7
- def index
8
- @page_routes = PageRoute.paginate(:order => "name", :page => params[:page])
9
- end
10
-
11
- def new
12
- @page_route = PageRoute.new
13
- end
14
-
15
- def create
16
- @page_route = PageRoute.new(params[:page_route])
17
- if @page_route.save
18
- flash[:notice] = "Page Route Created"
19
- redirect_to page_route_url(@page_route)
20
- else
21
- render :action => "new"
2
+ class PageRoutesController < Cms::BaseController
3
+
4
+ before_filter :load_page_route, :only => [:edit, :update, :destroy]
5
+
6
+ def index
7
+ @page_routes = PageRoute.paginate(:page => params[:page]).order("name")
22
8
  end
23
- end
24
-
25
- def update
26
- if @page_route.update_attributes(params[:page_route])
27
- flash[:notice] = "Page Route Updated"
28
- redirect_to page_route_url(@page_route)
29
- else
30
- render :action => "new"
9
+
10
+ def new
11
+ @page_route = PageRoute.new
31
12
  end
32
-
33
- end
34
-
35
- def destroy
36
- @page_route.destroy
37
- flash[:notice] = "Page Route Deleted"
38
- redirect_to page_routes_url
39
- end
40
-
41
- protected
13
+
14
+ def create
15
+ @page_route = PageRoute.new(page_route_params)
16
+ if @page_route.save
17
+ flash[:notice] = "Page Route Created"
18
+ redirect_to page_routes_path
19
+ else
20
+ render :action => "new"
21
+ end
22
+ end
23
+
24
+ def update
25
+ if @page_route.update(page_route_params)
26
+ flash[:notice] = "Page Route Updated"
27
+ redirect_to page_routes_path
28
+ else
29
+ render :action => "new"
30
+ end
31
+
32
+ end
33
+
34
+ def destroy
35
+ @page_route.destroy
36
+ flash[:notice] = "Page Route Deleted"
37
+ redirect_to page_routes_url
38
+ end
39
+
40
+ protected
42
41
  def load_page_route
43
42
  @page_route = PageRoute.find(params[:id])
44
43
  end
45
-
46
- end
44
+
45
+ private
46
+ def page_route_params
47
+ params.require(:page_route).permit(Cms::PageRoute.permitted_params)
48
+ end
49
+
50
+ end
47
51
  end
@@ -1,108 +1,126 @@
1
1
  module Cms
2
- class PagesController < Cms::BaseController
3
-
4
- before_filter :set_toolbar_tab
5
- before_filter :load_section, :only => [:new, :create]
6
- before_filter :load_page, :only => [:versions, :version, :revert_to, :destroy]
7
- before_filter :load_draft_page, :only => [:edit, :update]
8
- before_filter :hide_toolbar, :only => [:new, :create]
9
- before_filter :strip_publish_params, :only => [:create, :update]
10
-
11
- helper Cms::RenderingHelper
12
-
13
- def new
14
- @page = Page.new(:section => @section, :cacheable => true)
15
- if @section.child_nodes.count < 1
16
- @page.name = "Overview"
17
- @page.path = @section.path
2
+ class PagesController < Cms::BaseController
3
+
4
+ helper Cms::RenderingHelper
5
+
6
+ before_filter :load_section, :only => [:new, :create]
7
+ before_filter :load_page, :only => [:versions, :version, :revert_to, :destroy]
8
+ before_filter :load_draft_page, :only => [:edit, :update]
9
+ before_filter :hide_toolbar, :only => [:new, :create]
10
+ before_action :strip_visibility_params, :only => [:create, :update]
11
+
12
+ include Cms::PublishWorkflow
13
+
14
+ def resource
15
+ @page
18
16
  end
19
- end
20
17
 
21
- def show
22
- redirect_to Page.find(params[:id]).path
23
- end
24
-
25
- def create
26
- @page = Page.new(params[:page])
27
- @page.section = @section
28
- if @page.save
29
- flash[:notice] = "Page was '#{@page.name}' created."
30
- redirect_to @page
31
- else
32
- render :action => "new"
18
+ def resource_param
19
+ :page
33
20
  end
34
- end
35
21
 
36
- def update
37
- if @page.update_attributes(params[:page])
38
- flash[:notice] = "Page was '#{@page.name}' updated."
39
- redirect_to @page
40
- else
41
- render :action => "edit"
22
+ def new
23
+ @page = Page.new(:section => @section, :cacheable => true)
24
+ if @section.child_nodes.count < 1
25
+ @page.name = "Overview"
26
+ @page.path = @section.path
27
+ end
28
+ end
29
+
30
+ def show
31
+ redirect_to Page.find(params[:id]).path
42
32
  end
43
- rescue ActiveRecord::StaleObjectError => e
44
- @other_version = @page.class.find(@page.id)
45
- render :action => "edit"
46
- end
47
33
 
48
- def destroy
49
- respond_to do |format|
50
- if @page.destroy
51
- message = "Page '#{@page.name}' was deleted."
52
- format.html { flash[:notice] = message; redirect_to(sitemap_url) }
53
- format.json { render :json => {:success => true, :message => message } }
34
+ def create
35
+ @page = Page.new(page_params)
36
+ @page.section = @section
37
+ if @page.save
38
+ flash[:notice] = "Page was '#{@page.name}' created."
39
+ redirect_to @page
54
40
  else
55
- message = "Page '#{@page.name}' could not be deleted"
56
- format.html { flash[:error] = message; redirect_to(sitemap_url) }
57
- format.json { render :json => {:success => false, :message => message } }
41
+ render :action => "new"
58
42
  end
59
43
  end
60
- end
61
-
62
- #status actions
63
- {:publish => "published", :hide => "hidden", :archive => "archived"}.each do |status, verb|
64
- define_method status do
65
- if params[:page_ids]
66
- @pages = params[:page_ids].map { |id| Page.find(id) }
67
- raise Cms::Errors::AccessDenied unless @pages.all? { |page| current_user.able_to_edit?(page) }
68
- @pages.each { |page| page.send(status) }
69
- flash[:notice] = "#{params[:page_ids].size} pages #{verb}"
70
- redirect_to dashboard_url
44
+
45
+ def update
46
+ if @page.update(page_params)
47
+ flash[:notice] = "Page was '#{@page.name}' updated."
48
+ redirect_to @page
71
49
  else
72
- load_page
73
- if @page.send(status)
74
- flash[:notice] = "Page '#{@page.name}' was #{verb}"
50
+ render :action => "edit"
51
+ end
52
+ rescue ActiveRecord::StaleObjectError => e
53
+ @other_version = @page.class.find(@page.id)
54
+ render :action => "edit"
55
+ end
56
+
57
+ def destroy
58
+ respond_to do |format|
59
+ if @page.destroy
60
+ message = "Page '#{@page.name}' was deleted."
61
+ format.html { flash[:notice] = message; redirect_to(sitemap_url) }
62
+ format.json { render :json => {:success => true, :message => message} }
63
+ else
64
+ message = "Page '#{@page.name}' could not be deleted"
65
+ format.html { flash[:error] = message; redirect_to(sitemap_url) }
66
+ format.json { render :json => {:success => false, :message => message} }
75
67
  end
76
- redirect_to @page.path
77
68
  end
78
69
  end
79
- end
80
-
81
- def version
82
- @page = @page.as_of_version(params[:version])
83
- @show_toolbar = true
84
- @show_page_toolbar = true
85
- @_connectors = @page.connectors.for_page_version(@page.version)
86
- @_connectables = @_connectors.map(&:connectable_with_deleted)
87
- render :layout => @page.layout, :template => 'cms/content/show'
88
- end
89
-
90
- def revert_to
91
- if @page.revert_to(params[:version])
92
- flash[:notice] = "Page '#{@page.name}' was reverted to version #{params[:version]}"
93
- end
94
-
95
- respond_to do |format|
96
- format.html { redirect_to @page.path }
97
- format.js { render :template => 'cms/shared/show_notice' }
98
- end
99
- end
100
-
101
- private
102
- def strip_publish_params
70
+
71
+ #status actions
72
+ {:publish => "published", :hide => "hidden", :archive => "archived"}.each do |status, verb|
73
+ define_method status do
74
+ if params[:page_ids]
75
+ @pages = params[:page_ids].map { |id| Page.find(id) }
76
+ raise Cms::Errors::AccessDenied unless @pages.all? { |page| current_user.able_to_edit?(page) }
77
+ @pages.each { |page| page.send(status) }
78
+ flash[:notice] = "#{params[:page_ids].size} pages #{verb}"
79
+ redirect_to dashboard_url
80
+ else
81
+ load_page
82
+ if @page.send(status)
83
+ flash[:notice] = "Page '#{@page.name}' was #{verb}"
84
+ end
85
+ redirect_to @page.path
86
+ end
87
+ end
88
+ end
89
+
90
+ def version
91
+ @page = @page.as_of_version(params[:version])
92
+ @show_toolbar = true
93
+ @show_page_toolbar = true
94
+ @_connectors = @page.current_connectors
95
+ @_connectables = @page.contents
96
+ render :layout => @page.layout, :template => 'cms/content/show'
97
+ end
98
+
99
+ def revert_to
100
+ if @page.revert_to(params[:version])
101
+ flash[:notice] = "Page '#{@page.name}' was reverted to version #{params[:version]}"
102
+ end
103
+
104
+ respond_to do |format|
105
+ format.html { redirect_to @page.path }
106
+ format.js { render :template => 'cms/shared/show_notice' }
107
+ end
108
+ end
109
+
110
+ protected
111
+
112
+
113
+ private
114
+
115
+ def page_params
116
+ params.require(:page).permit(Cms::Page.permitted_params)
117
+ end
118
+
119
+ def strip_visibility_params
103
120
  unless current_user.able_to?(:publish_content)
104
121
  params[:page].delete :hidden
105
122
  params[:page].delete :archived
123
+ params[:page].delete :visibility
106
124
  end
107
125
  end
108
126
 
@@ -110,28 +128,24 @@ class PagesController < Cms::BaseController
110
128
  @page = Page.find(params[:id])
111
129
  raise Cms::Errors::AccessDenied unless current_user.able_to_edit?(@page)
112
130
  end
113
-
131
+
114
132
  def load_draft_page
115
133
  load_page
116
134
  @page = @page.as_of_draft_version
117
135
  end
118
-
136
+
119
137
  def load_section
120
138
  @section = Section.find(params[:section_id])
121
139
  raise Cms::Errors::AccessDenied unless current_user.able_to_edit?(@section)
122
140
  end
123
-
141
+
124
142
  def hide_toolbar
125
143
  @hide_page_toolbar = true
126
144
  end
127
145
 
128
- def set_toolbar_tab
129
- @toolbar_tab = :sitemap
130
- end
131
-
132
146
  def load_templates
133
147
  @templates = PageTemplate.options
134
148
  end
135
-
136
- end
149
+
150
+ end
137
151
  end