pages_core 3.5.1 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +7 -13
  3. data/app/assets/javascripts/pages/{admin.es6.jsx → admin.jsx} +2 -4
  4. data/app/assets/javascripts/pages/admin/components.jsx +2 -0
  5. data/app/assets/javascripts/pages/admin/components/attachment.jsx +130 -0
  6. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +131 -0
  7. data/app/assets/javascripts/pages/admin/components/attachments.jsx +211 -0
  8. data/app/assets/javascripts/pages/admin/components/date_range_select.jsx +174 -0
  9. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +174 -0
  10. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +57 -0
  11. data/app/assets/javascripts/pages/admin/components/file_upload_button.jsx +44 -0
  12. data/app/assets/javascripts/pages/admin/components/focal_point.jsx +82 -0
  13. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +124 -0
  14. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +496 -0
  15. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +301 -0
  16. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +171 -0
  17. data/app/assets/javascripts/pages/admin/components/modal.jsx +48 -0
  18. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +20 -0
  19. data/app/assets/javascripts/pages/admin/components/page_dates.jsx +58 -0
  20. data/app/assets/javascripts/pages/admin/components/page_files.jsx +14 -0
  21. data/app/assets/javascripts/pages/admin/components/page_images.jsx +16 -0
  22. data/app/assets/javascripts/pages/admin/components/{page_tree.es6.jsx → page_tree.jsx} +7 -37
  23. data/app/assets/javascripts/pages/admin/components/{page_tree_node.es6.jsx → page_tree_node.jsx} +32 -10
  24. data/app/assets/javascripts/pages/admin/components/page_tree_store.jsx +203 -0
  25. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +63 -0
  26. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +58 -0
  27. data/app/assets/javascripts/pages/admin/components/toast.jsx +37 -0
  28. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +52 -0
  29. data/app/assets/javascripts/pages/admin/features/{content_tabs.es6.jsx → content_tabs.jsx} +11 -2
  30. data/app/assets/javascripts/pages/admin/features/{edit_page.es6.jsx → edit_page.jsx} +7 -51
  31. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +14 -0
  32. data/app/assets/javascripts/pages/admin/features/{tag_editor.es6.jsx → tag_editor.jsx} +0 -0
  33. data/app/assets/javascripts/pages/admin/lib/{tree.es6.jsx → tree.jsx} +0 -0
  34. data/app/assets/javascripts/pages/{login_form.es6.jsx → login_form.jsx} +0 -0
  35. data/app/assets/stylesheets/pages/admin.scss +9 -13
  36. data/app/assets/stylesheets/pages/admin/components/archive.scss +6 -0
  37. data/app/assets/stylesheets/pages/admin/components/attachments.scss +130 -0
  38. data/app/assets/stylesheets/pages/admin/components/buttons.scss +18 -0
  39. data/app/assets/stylesheets/pages/admin/components/forms.scss +99 -21
  40. data/app/assets/stylesheets/pages/admin/components/header.scss +16 -28
  41. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +195 -0
  42. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +181 -0
  43. data/app/assets/stylesheets/pages/admin/components/image_uploader.scss +53 -0
  44. data/app/assets/stylesheets/pages/admin/components/links.scss +1 -1
  45. data/app/assets/stylesheets/pages/admin/components/list_table.scss +8 -5
  46. data/app/assets/stylesheets/pages/admin/components/login.scss +2 -8
  47. data/app/assets/stylesheets/pages/admin/components/modal.scss +91 -0
  48. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +12 -6
  49. data/app/assets/stylesheets/pages/admin/components/pagination.scss +34 -16
  50. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +9 -6
  51. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +20 -15
  52. data/app/assets/stylesheets/pages/admin/components/textarea.scss +1 -71
  53. data/app/assets/stylesheets/pages/admin/components/toast.scss +51 -0
  54. data/app/assets/stylesheets/pages/admin/components/toolbar.scss +108 -0
  55. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +9 -21
  56. data/app/assets/stylesheets/pages/admin/controllers/users.scss +2 -2
  57. data/app/assets/stylesheets/pages/admin/vars.scss +26 -4
  58. data/app/controller_dummies/admin/admin_controller.rb +0 -2
  59. data/app/controller_dummies/application_controller.rb +2 -4
  60. data/app/controller_dummies/attachments_controller.rb +2 -0
  61. data/app/controller_dummies/frontend_controller.rb +0 -2
  62. data/app/controller_dummies/images_controller.rb +0 -2
  63. data/app/controller_dummies/page_files_controller.rb +0 -2
  64. data/app/controller_dummies/pages_controller.rb +0 -2
  65. data/app/controller_dummies/sitemaps_controller.rb +0 -2
  66. data/app/controllers/admin/attachments_controller.rb +48 -0
  67. data/app/controllers/admin/categories_controller.rb +2 -5
  68. data/app/controllers/admin/images_controller.rb +25 -19
  69. data/app/controllers/admin/invites_controller.rb +16 -26
  70. data/app/controllers/admin/pages_controller.rb +50 -32
  71. data/app/controllers/admin/password_resets_controller.rb +11 -18
  72. data/app/controllers/admin/users_controller.rb +16 -22
  73. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +21 -14
  74. data/app/controllers/concerns/pages_core/authentication.rb +0 -2
  75. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -2
  76. data/app/controllers/concerns/pages_core/error_renderer.rb +33 -0
  77. data/app/controllers/concerns/pages_core/policies_helper.rb +9 -13
  78. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +3 -5
  79. data/app/controllers/concerns/pages_core/process_titler.rb +1 -3
  80. data/app/controllers/concerns/pages_core/rss_controller.rb +0 -2
  81. data/app/controllers/errors_controller.rb +52 -26
  82. data/app/controllers/pages_core/admin_controller.rb +22 -13
  83. data/app/controllers/pages_core/attachments_controller.rb +36 -0
  84. data/app/controllers/pages_core/{application_controller.rb → base_controller.rb} +16 -5
  85. data/app/controllers/pages_core/frontend/page_files_controller.rb +5 -24
  86. data/app/controllers/pages_core/frontend/pages_controller.rb +4 -8
  87. data/app/controllers/pages_core/frontend_controller.rb +0 -2
  88. data/app/controllers/pages_core/images_controller.rb +0 -2
  89. data/app/controllers/pages_core/sitemaps_controller.rb +3 -5
  90. data/app/controllers/sessions_controller.rb +3 -15
  91. data/app/formatters/pages_core/html_formatter.rb +60 -16
  92. data/app/formatters/pages_core/link_renderer.rb +15 -0
  93. data/app/helpers/admin/admin_helper.rb +0 -2
  94. data/app/helpers/admin/menu_helper.rb +2 -4
  95. data/app/helpers/admin/pages_helper.rb +47 -9
  96. data/app/helpers/application_helper.rb +0 -2
  97. data/app/helpers/frontend_helper.rb +0 -2
  98. data/app/helpers/pages_core/admin/admin_helper.rb +75 -20
  99. data/app/helpers/pages_core/admin/form_builder.rb +36 -0
  100. data/app/helpers/pages_core/admin/labelled_field_helper.rb +6 -8
  101. data/app/helpers/pages_core/admin/tag_editor_helper.rb +0 -2
  102. data/app/helpers/pages_core/application_helper.rb +1 -2
  103. data/app/helpers/pages_core/attachments_helper.rb +36 -0
  104. data/app/helpers/pages_core/form_builder.rb +7 -11
  105. data/app/helpers/pages_core/frontend_helper.rb +0 -6
  106. data/app/helpers/pages_core/head_tags_helper.rb +8 -4
  107. data/app/helpers/pages_core/images_helper.rb +0 -2
  108. data/app/helpers/pages_core/meta_tags_helper.rb +3 -5
  109. data/app/helpers/pages_core/open_graph_tags_helper.rb +1 -3
  110. data/app/helpers/pages_core/page_path_helper.rb +14 -9
  111. data/app/jobs/pages_core/autopublish_job.rb +0 -2
  112. data/app/jobs/pages_core/sweep_cache_job.rb +0 -2
  113. data/app/mailers/admin_mailer.rb +3 -16
  114. data/app/models/attachment.rb +76 -0
  115. data/app/models/autopublisher.rb +3 -3
  116. data/app/models/category.rb +0 -3
  117. data/app/models/concerns/pages_core/has_roles.rb +1 -2
  118. data/app/models/concerns/pages_core/humanizable_param.rb +4 -4
  119. data/app/models/concerns/pages_core/page_model/attachments.rb +39 -0
  120. data/app/models/concerns/pages_core/page_model/autopublishable.rb +0 -2
  121. data/app/models/concerns/pages_core/page_model/dated_page.rb +59 -0
  122. data/app/models/concerns/pages_core/page_model/images.rb +12 -15
  123. data/app/models/concerns/pages_core/page_model/localizable.rb +10 -3
  124. data/app/models/concerns/pages_core/page_model/pathable.rb +8 -10
  125. data/app/models/concerns/pages_core/page_model/redirectable.rb +0 -2
  126. data/app/models/concerns/pages_core/page_model/sortable.rb +1 -3
  127. data/app/models/concerns/pages_core/page_model/status.rb +1 -3
  128. data/app/models/concerns/pages_core/page_model/templateable.rb +2 -4
  129. data/app/models/concerns/pages_core/page_model/tree.rb +24 -5
  130. data/app/models/concerns/pages_core/sweepable.rb +0 -2
  131. data/app/models/concerns/pages_core/taggable.rb +4 -3
  132. data/app/models/image.rb +1 -0
  133. data/app/models/invite.rb +0 -10
  134. data/app/models/page.rb +17 -21
  135. data/app/models/page_builder.rb +0 -2
  136. data/app/models/page_category.rb +0 -2
  137. data/app/models/page_exporter.rb +87 -0
  138. data/app/models/page_file.rb +24 -48
  139. data/app/models/page_image.rb +3 -37
  140. data/app/models/page_path.rb +0 -2
  141. data/app/models/password_reset_token.rb +0 -4
  142. data/app/models/role.rb +15 -2
  143. data/app/models/tag.rb +15 -6
  144. data/app/models/tagging.rb +1 -3
  145. data/app/models/user.rb +29 -25
  146. data/app/policies/page_file_policy.rb +13 -17
  147. data/app/policies/page_image_policy.rb +13 -17
  148. data/app/policies/page_policy.rb +26 -26
  149. data/app/policies/policy.rb +2 -8
  150. data/app/policies/user_policy.rb +32 -32
  151. data/app/serializers/admin/attachment_serializer.rb +29 -0
  152. data/app/serializers/admin/image_serializer.rb +53 -6
  153. data/app/serializers/admin/page_file_serializer.rb +6 -0
  154. data/app/serializers/admin/page_image_serializer.rb +1 -1
  155. data/app/serializers/page_export_serializer.rb +30 -0
  156. data/app/serializers/page_file_export_serializer.rb +4 -0
  157. data/app/serializers/page_image_export_serializer.rb +40 -0
  158. data/app/serializers/page_image_serializer.rb +2 -0
  159. data/app/services/pages_core/create_user_service.rb +36 -0
  160. data/app/services/pages_core/invite_service.rb +41 -0
  161. data/app/views/admin/images/show.json.jbuilder +6 -0
  162. data/app/views/admin/pages/_edit_content.html.erb +7 -0
  163. data/app/views/admin/pages/_edit_files.html.erb +8 -0
  164. data/app/views/admin/pages/_edit_images.html.erb +8 -95
  165. data/app/views/admin/pages/_edit_options.html.erb +7 -15
  166. data/app/views/admin/pages/_list_item.html.erb +50 -0
  167. data/app/views/admin/pages/deleted.html.erb +42 -0
  168. data/app/views/admin/pages/edit.html.erb +9 -94
  169. data/app/views/admin/pages/index.html.erb +9 -12
  170. data/app/views/admin/pages/new.html.erb +2 -1
  171. data/app/views/admin/pages/news.html.erb +59 -45
  172. data/app/views/admin/password_resets/show.html.erb +6 -9
  173. data/app/views/admin/users/_access_control.html.erb +4 -1
  174. data/app/views/admin/users/_list.html.erb +12 -7
  175. data/app/views/admin/users/edit.html.erb +5 -11
  176. data/app/views/admin/users/login.html.erb +58 -15
  177. data/app/views/admin/users/show.html.erb +1 -1
  178. data/app/views/admin_mailer/invite.text.erb +1 -1
  179. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  180. data/app/views/errors/401.html.erb +6 -0
  181. data/app/views/errors/403.html.erb +1 -1
  182. data/app/views/errors/500.html.erb +11 -6
  183. data/app/views/errors/500_critical.html.erb +1 -1
  184. data/app/views/feeds/pages.rss.builder +1 -3
  185. data/app/views/layouts/admin.html.erb +83 -83
  186. data/app/views/layouts/admin/_analytics.html.erb +1 -3
  187. data/app/views/layouts/admin/_header.html.erb +2 -2
  188. data/app/views/layouts/errors.html.erb +3 -7
  189. data/config/locales/en.yml +12 -0
  190. data/config/routes.rb +38 -55
  191. data/db/migrate/20111219033112_create_pages_tables.rb +6 -8
  192. data/db/migrate/20120627033112_rename_textbits.rb +1 -3
  193. data/db/migrate/20121010055412_drop_removed_tables.rb +1 -3
  194. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +1 -3
  195. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +1 -3
  196. data/db/migrate/20130303160632_remove_imagesets.rb +1 -3
  197. data/db/migrate/20130303161732_remove_sms_subscribers.rb +1 -3
  198. data/db/migrate/20130823133208_update_page_redirect_to.rb +1 -3
  199. data/db/migrate/20140203183900_create_roles.rb +1 -1
  200. data/db/migrate/20140414150500_change_locale_names.rb +1 -3
  201. data/db/migrate/20140604142100_remove_openid_url.rb +1 -1
  202. data/db/migrate/20140920231700_convert_images_to_dis.rb +1 -1
  203. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +1 -1
  204. data/db/migrate/20141004003100_create_password_reset_tokens.rb +1 -1
  205. data/db/migrate/20141006181300_remove_user_cruft.rb +1 -1
  206. data/db/migrate/20141007173000_create_invites.rb +1 -1
  207. data/db/migrate/20150204130800_update_delayed_job_table.rb +1 -1
  208. data/db/migrate/20150401131300_localize_images.rb +1 -1
  209. data/db/migrate/20150520174300_add_meta_image_to_page.rb +1 -1
  210. data/db/migrate/20150904164200_add_pinned_to_tags.rb +1 -1
  211. data/db/migrate/20151002174800_create_page_paths.rb +2 -2
  212. data/db/migrate/20151021103400_drop_binaries_table.rb +1 -1
  213. data/db/migrate/20151204151000_remove_page_content_order.rb +1 -1
  214. data/db/migrate/20160330220900_rename_pages_categories.rb +1 -1
  215. data/db/migrate/20160405202700_change_localization_limit.rb +1 -1
  216. data/db/migrate/20170716040500_remove_page_comments.rb +23 -0
  217. data/db/migrate/20170716213400_remove_sessions.rb +15 -0
  218. data/db/migrate/20180207134000_add_dates_to_pages.rb +11 -0
  219. data/db/migrate/20190211154800_create_attachments.rb +73 -0
  220. data/lib/pages_core.rb +6 -9
  221. data/lib/pages_core/admin_menu_item.rb +0 -2
  222. data/lib/pages_core/archive_finder.rb +21 -15
  223. data/lib/pages_core/attachment_embedder.rb +38 -0
  224. data/lib/pages_core/cache_sweeper.rb +14 -23
  225. data/lib/pages_core/configuration.rb +0 -2
  226. data/lib/pages_core/configuration/base.rb +0 -2
  227. data/lib/pages_core/configuration/pages.rb +2 -8
  228. data/lib/pages_core/digest_verifier.rb +70 -0
  229. data/lib/pages_core/engine.rb +6 -13
  230. data/lib/pages_core/extensions.rb +0 -3
  231. data/lib/pages_core/extensions/string_extensions.rb +0 -2
  232. data/lib/pages_core/page_path_constraint.rb +0 -2
  233. data/lib/pages_core/pages_plugin.rb +0 -2
  234. data/lib/pages_core/plugin.rb +0 -2
  235. data/lib/pages_core/pub_sub.rb +36 -0
  236. data/lib/pages_core/templates.rb +0 -2
  237. data/lib/pages_core/templates/block_configuration.rb +1 -3
  238. data/lib/pages_core/templates/configuration.rb +88 -10
  239. data/lib/pages_core/templates/configuration_handler.rb +6 -4
  240. data/lib/pages_core/templates/configuration_proxy.rb +4 -2
  241. data/lib/pages_core/templates/controller_actions.rb +0 -2
  242. data/lib/pages_core/templates/template_configuration.rb +41 -37
  243. data/lib/pages_core/version.rb +1 -3
  244. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +10 -17
  245. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +1 -2
  246. data/lib/rails/generators/pages_core/frontend/templates/{application.css.scss.erb → application.scss.erb} +0 -0
  247. data/lib/rails/generators/pages_core/frontend/templates/{base.css.scss.erb → base.scss.erb} +0 -0
  248. data/lib/rails/generators/pages_core/frontend/templates/{breakpoints.css.scss.erb → breakpoints.scss.erb} +0 -0
  249. data/lib/rails/generators/pages_core/frontend/templates/clearfix.scss.erb +7 -0
  250. data/lib/rails/generators/pages_core/frontend/templates/layout.html.erb +0 -3
  251. data/lib/rails/generators/pages_core/install/install_generator.rb +4 -15
  252. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +1 -3
  253. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +0 -2
  254. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -5
  255. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +0 -2
  256. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +0 -2
  257. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +0 -2
  258. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +7 -15
  259. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +0 -2
  260. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +2 -19
  261. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +2 -4
  262. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +1 -1
  263. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +4 -13
  264. data/lib/tasks/pages.rake +0 -62
  265. data/lib/tasks/pages/cache.rake +6 -2
  266. data/lib/tasks/pages/export.rake +9 -0
  267. data/lib/tasks/pages/page_paths.rake +0 -2
  268. data/lib/tasks/pages/update.rake +0 -2
  269. data/template.rb +3 -3
  270. data/vendor/assets/javascripts/ReactCrop.min.js +1 -0
  271. data/vendor/assets/javascripts/reflux.min.js +1 -1
  272. data/vendor/assets/stylesheets/ReactCrop.css +167 -0
  273. metadata +200 -175
  274. data/app/assets/javascripts/pages/admin/components.es6.jsx +0 -1
  275. data/app/assets/javascripts/pages/admin/components/page_tree_actions.es6.jsx +0 -8
  276. data/app/assets/javascripts/pages/admin/components/page_tree_store.es6.jsx +0 -161
  277. data/app/assets/javascripts/pages/admin/features/editable_image.es6.jsx +0 -145
  278. data/app/assets/javascripts/pages/admin/features/modal.es6.jsx +0 -90
  279. data/app/assets/javascripts/pages/admin/features/page_images.es6.jsx +0 -338
  280. data/app/assets/javascripts/pages/admin/features/rich_text.es6.jsx +0 -124
  281. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.es6.jsx +0 -21
  282. data/app/assets/javascripts/pages/admin/lib/center_on_screen.es6.jsx +0 -22
  283. data/app/assets/stylesheets/pages/admin/components/editable_image.scss +0 -18
  284. data/app/assets/stylesheets/pages/admin/components/images.scss +0 -155
  285. data/app/assets/stylesheets/pages/admin/print.scss +0 -17
  286. data/app/controllers/admin/page_comments_controller.rb +0 -61
  287. data/app/controllers/admin/page_files_controller.rb +0 -79
  288. data/app/controllers/admin/page_images_controller.rb +0 -111
  289. data/app/controllers/concerns/pages_core/add_comments_controller.rb +0 -67
  290. data/app/controllers/concerns/pages_core/exception_handler.rb +0 -137
  291. data/app/controllers/concerns/pages_core/search_pages_controller.rb +0 -40
  292. data/app/helpers/pages_core/login_helper.rb +0 -14
  293. data/app/indices/page_file_index.rb +0 -9
  294. data/app/indices/page_index.rb +0 -29
  295. data/app/indices/user_index.rb +0 -11
  296. data/app/models/concerns/pages_core/page_model/commentable.rb +0 -29
  297. data/app/models/concerns/pages_core/page_model/searchable.rb +0 -41
  298. data/app/models/page_comment.rb +0 -18
  299. data/app/serializers/page_tree_serializer.rb +0 -15
  300. data/app/views/admin/pages/_edit_comments.html.erb +0 -37
  301. data/app/views/admin/pages/_pagelisting.html.erb +0 -63
  302. data/app/views/admin/users/_login_form.html.erb +0 -47
  303. data/app/views/admin_mailer/comment_notification.text.erb +0 -7
  304. data/lib/pages_core/extensions/hash_extensions.rb +0 -23
  305. data/lib/pages_core/file_embedder.rb +0 -40
  306. data/lib/pages_core/paginates.rb +0 -102
  307. data/lib/rails/generators/pages_core/frontend/templates/hidpi.css.scss.erb +0 -8
  308. data/lib/rails/generators/pages_core/install/templates/thinking_sphinx.yml +0 -12
  309. data/lib/tasks/db.rake +0 -96
  310. data/lib/tasks/pages/assets.rake +0 -65
  311. data/vendor/assets/javascripts/jquery.dimscreen.js +0 -77
  312. data/vendor/assets/javascripts/jquery.fieldselection.js +0 -59
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Admin
4
2
  class AdminController < PagesCore::AdminController #:nodoc:
5
3
  end
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class ApplicationController < PagesCore::ApplicationController #:nodoc:
1
+ class ApplicationController < PagesCore::BaseController #:nodoc:
4
2
  helper :all
5
- protect_from_forgery
3
+ protect_from_forgery with: :exception
6
4
  end
@@ -0,0 +1,2 @@
1
+ class AttachmentsController < PagesCore::AttachmentsController #:nodoc:
2
+ end
@@ -1,4 +1,2 @@
1
- # encoding: utf-8
2
-
3
1
  class FrontendController < PagesCore::FrontendController #:nodoc:
4
2
  end
@@ -1,4 +1,2 @@
1
- # encoding: utf-8
2
-
3
1
  class ImagesController < PagesCore::ImagesController #:nodoc:
4
2
  end
@@ -1,4 +1,2 @@
1
- # encoding: utf-8
2
-
3
1
  class PageFilesController < PagesCore::Frontend::PageFilesController #:nodoc:
4
2
  end
@@ -1,4 +1,2 @@
1
- # encoding: utf-8
2
-
3
1
  class PagesController < PagesCore::Frontend::PagesController #:nodoc:
4
2
  end
@@ -1,4 +1,2 @@
1
- # encoding: utf-8
2
-
3
1
  class SitemapsController < PagesCore::SitemapsController #:nodoc:
4
2
  end
@@ -0,0 +1,48 @@
1
+ module Admin
2
+ class AttachmentsController < Admin::AdminController
3
+ before_action :find_attachment, only: %i[update]
4
+
5
+ def create
6
+ @attachment = Attachment.create(
7
+ attachment_params.merge(user: current_user)
8
+ )
9
+ return unless @attachment.valid?
10
+
11
+ respond_to do |format|
12
+ format.json do
13
+ render_attachment(@attachment)
14
+ end
15
+ end
16
+ end
17
+
18
+ def update
19
+ @attachment.update(attachment_params)
20
+ respond_to do |format|
21
+ format.json { render_attachment(@attachment) }
22
+ end
23
+ end
24
+
25
+ protected
26
+
27
+ def attachment_params
28
+ params.require(:attachment).permit(
29
+ :file,
30
+ localized_attributes.each_with_object({}) do |a, h|
31
+ h[a] = I18n.available_locales
32
+ end
33
+ )
34
+ end
35
+
36
+ def localized_attributes
37
+ %i[name description]
38
+ end
39
+
40
+ def find_attachment
41
+ @attachment = Attachment.find(params[:id])
42
+ end
43
+
44
+ def render_attachment(attachment)
45
+ render json: attachment, serializer: Admin::AttachmentSerializer
46
+ end
47
+ end
48
+ end
@@ -1,8 +1,6 @@
1
- # encoding: utf-8
2
-
3
1
  module Admin
4
2
  class CategoriesController < Admin::AdminController
5
- before_action :find_category, only: [:show, :edit, :update, :destroy]
3
+ before_action :find_category, only: %i[show edit update destroy]
6
4
 
7
5
  def index
8
6
  @categories = Category.all
@@ -26,8 +24,7 @@ module Admin
26
24
  end
27
25
  end
28
26
 
29
- def edit
30
- end
27
+ def edit; end
31
28
 
32
29
  def update
33
30
  if @category.update(category_params)
@@ -1,43 +1,49 @@
1
- # encoding: utf-8
2
-
3
1
  module Admin
4
2
  class ImagesController < Admin::AdminController
5
- before_action :find_image, only: [:show, :edit, :update, :destroy]
3
+ before_action :find_image, only: %i[show edit update destroy]
6
4
 
7
- def index
8
- end
5
+ def index; end
9
6
 
10
- def show
11
- respond_to do |format|
12
- format.js { render text: @image.to_json, layout: false }
13
- end
14
- end
7
+ def show; end
15
8
 
16
- def new
17
- end
9
+ def new; end
18
10
 
19
- def edit
20
- end
11
+ def edit; end
21
12
 
22
13
  def create
14
+ @image = Image.create(image_params)
15
+ if @image.valid?
16
+ respond_to do |format|
17
+ format.json do
18
+ render json: @image, serializer: Admin::ImageSerializer
19
+ end
20
+ end
21
+ end
23
22
  end
24
23
 
25
24
  def update
26
25
  @image.update(image_params)
27
26
  respond_to do |format|
28
- format.json { render text: @image.to_json, layout: false }
27
+ format.json { render action: :show }
29
28
  end
30
29
  end
31
30
 
32
- def destroy
33
- end
31
+ def destroy; end
34
32
 
35
33
  protected
36
34
 
35
+ def localized_attributes
36
+ %i[caption alternative]
37
+ end
38
+
37
39
  def image_params
38
40
  params.require(:image).permit(
39
- :name, :alternative, :caption, :description, :file,
40
- :crop_start_x, :crop_start_y, :crop_height, :crop_width, :locale
41
+ :name, :description, :file,
42
+ :crop_start_x, :crop_start_y, :crop_height, :crop_width, :locale,
43
+ :crop_gravity_x, :crop_gravity_y,
44
+ localized_attributes.each_with_object({}) do |a, h|
45
+ h[a] = I18n.available_locales
46
+ end
41
47
  )
42
48
  end
43
49
 
@@ -1,22 +1,17 @@
1
1
  module Admin
2
2
  class InvitesController < Admin::AdminController
3
- before_action :require_authentication, except: [:accept, :show]
4
- before_action :find_invite, only: [:show, :edit, :update, :destroy, :accept]
5
- before_action :require_valid_token, only: [:show, :accept]
3
+ before_action :require_authentication, except: %i[accept show]
4
+ before_action :find_invite, only: %i[destroy]
5
+ before_action :find_and_validate_invite, only: %i[show accept]
6
6
 
7
- require_authorization(
8
- Invite,
9
- proc { @invite },
10
- member: [:show, :edit, :update, :destroy],
11
- collection: [:index, :new, :create]
12
- )
7
+ require_authorization
13
8
 
14
9
  def index
15
10
  redirect_to admin_users_url
16
11
  end
17
12
 
18
13
  def accept
19
- @user = @invite.create_user(user_params)
14
+ @user = PagesCore::CreateUserService.call(user_params, invite: @invite)
20
15
  if @user.valid?
21
16
  authenticate!(@user)
22
17
  redirect_to admin_default_url
@@ -37,10 +32,11 @@ module Admin
37
32
  end
38
33
 
39
34
  def create
40
- @invite = current_user.invites.create(invite_params)
35
+ @invite = PagesCore::InviteService.call(invite_params,
36
+ user: current_user,
37
+ host: request.host,
38
+ protocol: request.protocol)
41
39
  if @invite.valid?
42
- deliver_invite(@invite)
43
- @invite.update(sent_at: Time.now.utc)
44
40
  redirect_to admin_invites_url
45
41
  else
46
42
  render action: :new
@@ -55,17 +51,17 @@ module Admin
55
51
 
56
52
  private
57
53
 
58
- def deliver_invite(invite)
59
- AdminMailer.invite(
60
- invite,
61
- admin_invite_with_token_url(invite, invite.token)
62
- ).deliver_now
63
- end
64
-
65
54
  def find_invite
66
55
  @invite = Invite.find(params[:id])
67
56
  end
68
57
 
58
+ def find_and_validate_invite
59
+ @invite = Invite.find_by(id: params[:id])
60
+ return if @invite && secure_compare(@invite.token, params[:token])
61
+ flash[:notice] = "This invite is no longer valid."
62
+ redirect_to(login_admin_users_url) && return
63
+ end
64
+
69
65
  def user_params
70
66
  params.require(:user).permit(:name, :email, :password, :confirm_password)
71
67
  end
@@ -73,11 +69,5 @@ module Admin
73
69
  def invite_params
74
70
  params.require(:invite).permit(:email, role_names: [])
75
71
  end
76
-
77
- def require_valid_token
78
- return if @invite && secure_compare(@invite.token, params[:token])
79
- flash[:notice] = "Invalid invite token"
80
- redirect_to(login_admin_users_url) && return
81
- end
82
72
  end
83
73
  end
@@ -1,20 +1,21 @@
1
- # encoding: utf-8
2
-
3
1
  module Admin
4
2
  class PagesController < Admin::AdminController
5
3
  include PagesCore::Admin::NewsPageController
6
4
 
7
- before_action :find_page, only: [:show, :edit, :preview, :update, :destroy,
8
- :delete_meta_image, :move]
9
5
  before_action :find_categories
6
+ before_action :find_page, only: %i[show edit update destroy
7
+ delete_meta_image move]
8
+
9
+ require_authorization
10
10
 
11
- require_authorization(Page, proc { @page },
12
- collection: [:index, :news, :new, :new_news, :create],
13
- member: [:show, :edit, :preview, :update, :destroy,
14
- :delete_meta_image, :move])
11
+ helper_method :page_json
15
12
 
16
13
  def index
17
- @root_pages = Page.roots.in_locale(@locale).visible
14
+ @pages = Page.admin_list(@locale)
15
+ end
16
+
17
+ def deleted
18
+ @pages = Page.deleted.by_updated_at.in_locale(@locale)
18
19
  end
19
20
 
20
21
  def show
@@ -22,12 +23,13 @@ module Admin
22
23
  end
23
24
 
24
25
  def new
25
- @page = build_page(@locale)
26
- if params[:parent]
27
- @page.parent = Page.find(params[:parent])
28
- elsif @news_pages
29
- @page.parent = @news_pages.first
30
- end
26
+ build_params = params[:page] ? page_params : nil
27
+ @page = build_page(@locale, build_params)
28
+ @page.parent = if params[:parent]
29
+ Page.find(params[:parent])
30
+ elsif @news_pages
31
+ @news_pages.first
32
+ end
31
33
  end
32
34
 
33
35
  def create
@@ -42,9 +44,7 @@ module Admin
42
44
  end
43
45
  end
44
46
 
45
- def edit
46
- render action: :edit
47
- end
47
+ def edit; end
48
48
 
49
49
  def update
50
50
  if @page.update(page_params)
@@ -54,7 +54,7 @@ module Admin
54
54
  redirect_to edit_admin_page_url(@locale, @page)
55
55
  end
56
56
  else
57
- edit
57
+ render action: :edit
58
58
  end
59
59
  end
60
60
 
@@ -80,32 +80,50 @@ module Admin
80
80
  def build_page(locale, attributes = nil, categories = nil)
81
81
  Page.new.localize(locale).tap do |page|
82
82
  page.author = default_author || current_user
83
- if attributes
84
- page.attributes = attributes
85
- page.comments_allowed = page.template_config.value(:comments_allowed)
86
- end
83
+ page.attributes = attributes if attributes
87
84
  page.categories = categories if categories
88
85
  end
89
86
  end
90
87
 
91
88
  def default_author
92
- return unless PagesCore.config.default_author
93
- User.where(email: PagesCore.config.default_author).first
89
+ User.find_by_email(PagesCore.config.default_author)
94
90
  end
95
91
 
96
92
  def page_attributes
97
- [:template, :user_id, :status, :feed_enabled, :published_at,
98
- :redirect_to, :comments_allowed, :image_link, :news_page,
99
- :unique_name, :pinned, :parent_page_id, :serialized_tags, :meta_image]
93
+ %i[template user_id status feed_enabled published_at redirect_to
94
+ image_link news_page unique_name pinned parent_page_id serialized_tags
95
+ meta_image starts_at ends_at all_day image_id]
100
96
  end
101
97
 
102
98
  def page_params
103
- params.require(:page).permit(Page.localized_attributes + page_attributes)
99
+ params.require(:page).permit(
100
+ PagesCore::Templates::TemplateConfiguration.all_blocks +
101
+ page_attributes,
102
+ page_images_attributes: %i[id position image_id primary _destroy],
103
+ page_files_attributes: %i[id position attachment_id _destroy]
104
+ )
105
+ end
106
+
107
+ def page_json(page)
108
+ { id: page.id,
109
+ param: page.to_param,
110
+ parent_page_id: page.parent_page_id,
111
+ locale: page.locale,
112
+ status: page.status,
113
+ news_page: page.news_page,
114
+ name: page.name,
115
+ published_at: page.published_at,
116
+ pinned: page.pinned?,
117
+ starts_at: page.starts_at,
118
+ permissions: [(:edit if policy(page).edit?),
119
+ (:create if policy(page).edit?)].compact }
104
120
  end
105
121
 
106
122
  def param_categories
107
- return [] unless params[:category] && params[:category].any?
108
- params[:category].map { |k, _| Category.find(k.to_i) }
123
+ return [] unless params[:category]
124
+ params.permit(category: {})[:category]
125
+ .to_hash
126
+ .map { |id, _| Category.find(id) }
109
127
  end
110
128
 
111
129
  def find_page
@@ -119,7 +137,7 @@ module Admin
119
137
  def respond_with_page(page)
120
138
  respond_to do |format|
121
139
  format.html { yield }
122
- format.json { render json: page, serializer: PageTreeSerializer }
140
+ format.json { render json: page_json(page) }
123
141
  end
124
142
  end
125
143
  end
@@ -1,10 +1,8 @@
1
- # encoding: utf-8
2
-
3
1
  module Admin
4
2
  class PasswordResetsController < Admin::AdminController
5
- before_action :find_password_reset_token, only: [:show, :update]
6
- before_action :check_for_expired_token, only: [:show, :update]
7
- before_action :require_authentication, except: [:create, :show, :update]
3
+ before_action :find_password_reset_token, only: %i[show update]
4
+ before_action :check_for_expired_token, only: %i[show update]
5
+ before_action :require_authentication, except: %i[create show update]
8
6
 
9
7
  layout "admin"
10
8
 
@@ -17,7 +15,7 @@ module Admin
17
15
  else
18
16
  flash[:notice] = "Couldn't find a user with that email address"
19
17
  end
20
- redirect_to login_url
18
+ redirect_to login_admin_users_url
21
19
  end
22
20
 
23
21
  def show
@@ -26,11 +24,11 @@ module Admin
26
24
 
27
25
  def update
28
26
  @user = @password_reset_token.user
29
- if !user_params[:password].blank? && @user.update(user_params)
27
+ if user_params[:password].present? && @user.update(user_params)
30
28
  @password_reset_token.destroy
31
29
  authenticate!(@user)
32
30
  flash[:notice] = "Your password has been changed"
33
- redirect_to login_url
31
+ redirect_to login_admin_users_url
34
32
  else
35
33
  render action: :show
36
34
  end
@@ -49,20 +47,15 @@ module Admin
49
47
 
50
48
  def find_user_by_email(email)
51
49
  return unless email
52
- User.find_by_username_or_email(params[:username])
53
- end
54
-
55
- def login_url
56
- # TODO: Validate URL
57
- params[:login_url] || login_admin_users_url
50
+ User.login_name(params[:username])
58
51
  end
59
52
 
60
53
  def user_params
61
54
  params.require(:user).permit(:password, :confirm_password)
62
55
  end
63
56
 
64
- def valid_token?(pr)
65
- pr && secure_compare(pr.token, params[:token])
57
+ def valid_token?(reset)
58
+ reset && secure_compare(reset.token, params[:token])
66
59
  end
67
60
 
68
61
  def find_password_reset_token
@@ -75,14 +68,14 @@ module Admin
75
68
  return if valid_token?(@password_reset_token)
76
69
 
77
70
  flash[:notice] = "Invalid password reset request"
78
- redirect_to(login_url) && return
71
+ redirect_to(login_admin_users_url) && return
79
72
  end
80
73
 
81
74
  def check_for_expired_token
82
75
  return unless @password_reset_token.expired?
83
76
  @password_reset_token.destroy
84
77
  flash[:notice] = "Your password reset link has expired"
85
- redirect_to(login_url)
78
+ redirect_to(login_admin_users_url)
86
79
  end
87
80
  end
88
81
  end