pages_core 3.6.0 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -3
  3. data/Rakefile +3 -1
  4. data/app/assets/builds/pages_core/admin-dist.js +55 -0
  5. data/app/assets/stylesheets/pages/admin/components/forms.scss +20 -0
  6. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +1 -0
  7. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +33 -5
  8. data/app/assets/stylesheets/pages/admin/components/layout.scss +2 -1
  9. data/app/assets/stylesheets/pages/admin/components/login.scss +6 -0
  10. data/app/assets/stylesheets/pages/admin/components/tabs.scss +5 -0
  11. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +13 -7
  12. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +13 -5
  13. data/app/assets/stylesheets/pages/admin.scss +0 -1
  14. data/app/assets/stylesheets/pages/errors.css +2 -0
  15. data/app/controller_dummies/admin/admin_controller.rb +3 -1
  16. data/app/controller_dummies/application_controller.rb +3 -1
  17. data/app/controller_dummies/attachments_controller.rb +3 -1
  18. data/app/controller_dummies/frontend_controller.rb +3 -1
  19. data/app/controller_dummies/images_controller.rb +3 -1
  20. data/app/controller_dummies/page_files_controller.rb +3 -1
  21. data/app/controller_dummies/pages_controller.rb +3 -1
  22. data/app/controller_dummies/sitemaps_controller.rb +3 -1
  23. data/app/controllers/admin/attachments_controller.rb +5 -3
  24. data/app/controllers/admin/categories_controller.rb +2 -0
  25. data/app/controllers/admin/images_controller.rb +16 -8
  26. data/app/controllers/admin/invites_controller.rb +4 -1
  27. data/app/controllers/admin/pages_controller.rb +9 -26
  28. data/app/controllers/admin/password_resets_controller.rb +9 -5
  29. data/app/controllers/admin/users_controller.rb +10 -4
  30. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +13 -11
  31. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +75 -0
  32. data/app/controllers/concerns/pages_core/authentication.rb +13 -5
  33. data/app/controllers/concerns/pages_core/error_renderer.rb +3 -0
  34. data/app/controllers/concerns/pages_core/error_reporting.rb +36 -0
  35. data/app/controllers/concerns/pages_core/policies_helper.rb +4 -1
  36. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +8 -0
  37. data/app/controllers/concerns/pages_core/process_titler.rb +2 -0
  38. data/app/controllers/concerns/pages_core/rss_controller.rb +2 -0
  39. data/app/controllers/concerns/pages_core/static_cache_controller.rb +48 -0
  40. data/app/controllers/errors_controller.rb +5 -53
  41. data/app/controllers/pages_core/admin_controller.rb +7 -67
  42. data/app/controllers/pages_core/attachments_controller.rb +10 -6
  43. data/app/controllers/pages_core/base_controller.rb +11 -17
  44. data/app/controllers/pages_core/frontend/page_files_controller.rb +6 -2
  45. data/app/controllers/pages_core/frontend/pages_controller.rb +14 -18
  46. data/app/controllers/pages_core/frontend_controller.rb +3 -0
  47. data/app/controllers/pages_core/images_controller.rb +3 -1
  48. data/app/controllers/pages_core/sitemaps_controller.rb +11 -5
  49. data/app/controllers/sessions_controller.rb +3 -1
  50. data/app/formatters/pages_core/html_formatter.rb +13 -63
  51. data/app/formatters/pages_core/image_embedder.rb +79 -0
  52. data/app/formatters/pages_core/link_renderer.rb +4 -2
  53. data/app/helpers/admin/admin_helper.rb +2 -0
  54. data/app/helpers/admin/menu_helper.rb +6 -4
  55. data/app/helpers/admin/pages_helper.rb +4 -57
  56. data/app/helpers/application_helper.rb +3 -1
  57. data/app/helpers/frontend_helper.rb +3 -1
  58. data/app/helpers/pages_core/admin/admin_helper.rb +22 -106
  59. data/app/helpers/pages_core/admin/content_tabs_helper.rb +31 -0
  60. data/app/helpers/pages_core/admin/date_range_helper.rb +55 -0
  61. data/app/helpers/pages_core/admin/form_builder.rb +8 -0
  62. data/app/helpers/pages_core/admin/image_uploads_helper.rb +47 -0
  63. data/app/helpers/pages_core/admin/labelled_field_helper.rb +12 -9
  64. data/app/helpers/pages_core/admin/page_blocks_helper.rb +66 -0
  65. data/app/helpers/pages_core/admin/page_json_helper.rb +23 -0
  66. data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -39
  67. data/app/helpers/pages_core/application_helper.rb +3 -0
  68. data/app/helpers/pages_core/attachments_helper.rb +31 -27
  69. data/app/helpers/pages_core/form_builder.rb +17 -13
  70. data/app/helpers/pages_core/frontend_helper.rb +3 -3
  71. data/app/helpers/pages_core/head_tags_helper.rb +18 -22
  72. data/app/helpers/pages_core/images_helper.rb +3 -0
  73. data/app/helpers/pages_core/meta_tags_helper.rb +3 -1
  74. data/app/helpers/pages_core/open_graph_tags_helper.rb +8 -6
  75. data/app/helpers/pages_core/page_path_helper.rb +24 -3
  76. data/app/javascript/admin-dist.js +2 -0
  77. data/app/javascript/components/Attachments/Attachment.jsx +121 -0
  78. data/app/javascript/components/Attachments/AttachmentEditor.jsx +116 -0
  79. data/app/javascript/components/Attachments/Placeholder.jsx +10 -0
  80. data/app/javascript/components/Attachments.jsx +165 -0
  81. data/app/{assets/javascripts/pages/admin/components/date_range_select.jsx → javascript/components/DateRangeSelect.jsx} +16 -5
  82. data/app/javascript/components/EditableImage.jsx +61 -0
  83. data/app/{assets/javascripts/pages/admin/components/file_upload_button.jsx → javascript/components/FileUploadButton.jsx} +11 -1
  84. data/app/{assets/javascripts/pages/admin/components/focal_point.jsx → javascript/components/ImageCropper/FocalPoint.jsx} +12 -1
  85. data/app/javascript/components/ImageCropper/Image.jsx +65 -0
  86. data/app/javascript/components/ImageCropper/Toolbar.jsx +73 -0
  87. data/app/javascript/components/ImageCropper/useCrop.js +199 -0
  88. data/app/javascript/components/ImageCropper.jsx +90 -0
  89. data/app/javascript/components/ImageEditor/Form.jsx +98 -0
  90. data/app/javascript/components/ImageEditor.jsx +62 -0
  91. data/app/javascript/components/ImageGrid/DragElement.jsx +30 -0
  92. data/app/javascript/components/ImageGrid/FilePlaceholder.jsx +9 -0
  93. data/app/javascript/components/ImageGrid/GridImage.jsx +103 -0
  94. data/app/javascript/components/ImageGrid/Placeholder.jsx +23 -0
  95. data/app/javascript/components/ImageGrid.jsx +257 -0
  96. data/app/javascript/components/ImageUploader.jsx +171 -0
  97. data/app/{assets/javascripts/pages/admin/components/modal.jsx → javascript/components/Modal.jsx} +13 -2
  98. data/app/javascript/components/ModalStore.jsx +12 -0
  99. data/app/{assets/javascripts/pages/admin/components/page_dates.jsx → javascript/components/PageDates.jsx} +11 -1
  100. data/app/{assets/javascripts/pages/admin/components/page_files.jsx → javascript/components/PageFiles.jsx} +11 -2
  101. data/app/{assets/javascripts/pages/admin/components/page_images.jsx → javascript/components/PageImages.jsx} +11 -2
  102. data/app/{assets/javascripts/pages/admin/components/page_tree_store.jsx → javascript/components/PageTree.jsx} +127 -137
  103. data/app/{assets/javascripts/pages/admin/components/page_tree.jsx → javascript/components/PageTreeDraggable.jsx} +44 -38
  104. data/app/{assets/javascripts/pages/admin/components/page_tree_node.jsx → javascript/components/PageTreeNode.jsx} +46 -31
  105. data/app/javascript/components/RichTextArea.jsx +213 -0
  106. data/app/javascript/components/RichTextToolbarButton.jsx +20 -0
  107. data/app/javascript/components/TagEditor/AddTagForm.jsx +42 -0
  108. data/app/javascript/components/TagEditor/Tag.jsx +32 -0
  109. data/app/javascript/components/TagEditor.jsx +61 -0
  110. data/app/javascript/components/Toast.jsx +72 -0
  111. data/app/javascript/components/ToastStore.jsx +14 -0
  112. data/app/javascript/components/drag/draggedOrder.js +51 -0
  113. data/app/javascript/components/drag/useDragCollection.js +84 -0
  114. data/app/javascript/components/drag/useDragUploader.js +112 -0
  115. data/app/javascript/components/drag/useDraggable.js +17 -0
  116. data/app/javascript/components/drag.js +6 -0
  117. data/app/javascript/components.js +14 -0
  118. data/app/javascript/controllers/EditPageController.js +20 -0
  119. data/app/javascript/controllers/LoginController.js +29 -0
  120. data/app/javascript/controllers/MainController.js +65 -0
  121. data/app/javascript/controllers/PageOptionsController.js +62 -0
  122. data/app/javascript/features/RichText.jsx +34 -0
  123. data/app/javascript/hooks.js +2 -0
  124. data/app/javascript/index.js +33 -0
  125. data/app/{assets/javascripts/pages/admin/lib/tree.jsx → javascript/lib/Tree.js} +64 -63
  126. data/app/javascript/lib/copyToClipboard.js +13 -0
  127. data/app/javascript/lib/readyHandler.js +22 -0
  128. data/app/javascript/lib/request.js +36 -0
  129. data/app/jobs/pages_core/autopublish_job.rb +3 -1
  130. data/app/jobs/pages_core/sweep_cache_job.rb +4 -2
  131. data/app/mailers/admin_mailer.rb +4 -14
  132. data/app/models/attachment.rb +10 -8
  133. data/app/models/autopublisher.rb +3 -0
  134. data/app/models/category.rb +3 -1
  135. data/app/models/concerns/pages_core/has_roles.rb +2 -0
  136. data/app/models/concerns/pages_core/humanizable_param.rb +9 -6
  137. data/app/models/concerns/pages_core/page_model/attachments.rb +2 -0
  138. data/app/models/concerns/pages_core/page_model/autopublishable.rb +2 -0
  139. data/app/models/concerns/pages_core/page_model/dated_page.rb +11 -11
  140. data/app/models/concerns/pages_core/page_model/images.rb +8 -2
  141. data/app/models/concerns/pages_core/page_model/localizable.rb +2 -0
  142. data/app/models/concerns/pages_core/page_model/pathable.rb +26 -25
  143. data/app/models/concerns/pages_core/page_model/redirectable.rb +3 -1
  144. data/app/models/concerns/pages_core/page_model/searchable.rb +19 -0
  145. data/app/models/concerns/pages_core/page_model/sortable.rb +6 -5
  146. data/app/models/concerns/pages_core/page_model/status.rb +2 -0
  147. data/app/models/concerns/pages_core/page_model/templateable.rb +7 -2
  148. data/app/models/concerns/pages_core/page_model/tree.rb +27 -20
  149. data/app/models/concerns/pages_core/searchable_document.rb +71 -0
  150. data/app/models/concerns/pages_core/sweepable.rb +4 -2
  151. data/app/models/concerns/pages_core/taggable.rb +33 -12
  152. data/app/models/image.rb +14 -1
  153. data/app/models/invite.rb +3 -1
  154. data/app/models/invite_role.rb +5 -3
  155. data/app/models/page.rb +6 -3
  156. data/app/models/page_builder.rb +2 -0
  157. data/app/models/page_category.rb +3 -1
  158. data/app/models/page_exporter.rb +23 -10
  159. data/app/models/page_file.rb +3 -1
  160. data/app/models/page_image.rb +3 -3
  161. data/app/models/page_path.rb +13 -5
  162. data/app/models/password_reset_token.rb +3 -1
  163. data/app/models/role.rb +9 -6
  164. data/app/models/search_document.rb +72 -0
  165. data/app/models/tag.rb +9 -6
  166. data/app/models/tagging.rb +4 -2
  167. data/app/models/user.rb +8 -5
  168. data/app/policies/invite_policy.rb +2 -0
  169. data/app/policies/page_file_policy.rb +2 -0
  170. data/app/policies/page_image_policy.rb +2 -0
  171. data/app/policies/page_policy.rb +2 -0
  172. data/app/policies/policy.rb +2 -0
  173. data/app/policies/user_policy.rb +2 -0
  174. data/app/{serializers/admin/attachment_serializer.rb → resources/admin/attachment_resource.rb} +10 -7
  175. data/app/{serializers/admin/image_serializer.rb → resources/admin/image_resource.rb} +13 -11
  176. data/app/resources/admin/page_file_resource.rb +10 -0
  177. data/app/resources/admin/page_image_resource.rb +10 -0
  178. data/app/resources/export/attachment_resource.rb +10 -0
  179. data/app/resources/export/page_image_resource.rb +45 -0
  180. data/app/resources/export/page_resource.rb +42 -0
  181. data/app/{serializers/page_image_serializer.rb → resources/page_image_resource.rb} +10 -16
  182. data/app/resources/page_resource.rb +33 -0
  183. data/app/services/pages_core/create_user_service.rb +5 -2
  184. data/app/services/pages_core/destroy_invite_service.rb +25 -0
  185. data/app/services/pages_core/invite_service.rb +4 -2
  186. data/app/views/admin/images/show.json.jbuilder +2 -0
  187. data/app/views/admin/pages/_edit_content.html.erb +1 -1
  188. data/app/views/admin/pages/_edit_files.html.erb +1 -5
  189. data/app/views/admin/pages/_edit_images.html.erb +1 -5
  190. data/app/views/admin/pages/_edit_metadata.html.erb +1 -12
  191. data/app/views/admin/pages/_edit_options.html.erb +74 -55
  192. data/app/views/admin/pages/_form.html.erb +19 -0
  193. data/app/views/admin/pages/edit.html.erb +35 -61
  194. data/app/views/admin/pages/index.html.erb +0 -1
  195. data/app/views/admin/pages/new.html.erb +32 -32
  196. data/app/views/admin/pages/news.html.erb +1 -1
  197. data/app/views/admin/users/_access_control.html.erb +5 -1
  198. data/app/views/admin/users/login.html.erb +12 -4
  199. data/app/views/errors/500.html.erb +2 -20
  200. data/app/views/errors/_generic_help.html.erb +1 -1
  201. data/app/views/feeds/pages.rss.builder +3 -2
  202. data/app/views/layouts/admin/_header.html.erb +1 -1
  203. data/app/views/layouts/admin/_page_header.html.erb +33 -0
  204. data/app/views/layouts/admin.html.erb +23 -42
  205. data/app/views/pages_core/_google_analytics.html.erb +8 -0
  206. data/app/views/sitemaps/show.xml.builder +2 -0
  207. data/config/routes.rb +5 -6
  208. data/db/migrate/20111219033112_create_pages_tables.rb +192 -271
  209. data/db/migrate/20180625154059_enable_search_extensions.rb +10 -0
  210. data/db/migrate/20210209151400_create_search_configurations.rb +35 -0
  211. data/db/migrate/20210210235200_create_search_documents.rb +74 -0
  212. data/lib/pages_core/admin_menu_item.rb +3 -0
  213. data/lib/pages_core/archive_finder.rb +12 -16
  214. data/lib/pages_core/attachment_embedder.rb +4 -6
  215. data/lib/pages_core/cache_sweeper.rb +10 -108
  216. data/lib/pages_core/configuration/base.rb +5 -0
  217. data/lib/pages_core/configuration/pages.rb +4 -2
  218. data/lib/pages_core/configuration.rb +2 -0
  219. data/lib/pages_core/digest_verifier.rb +5 -5
  220. data/lib/pages_core/engine.rb +53 -5
  221. data/lib/pages_core/extensions/string_extensions.rb +3 -1
  222. data/lib/pages_core/extensions.rb +2 -0
  223. data/lib/pages_core/page_path_constraint.rb +2 -0
  224. data/lib/pages_core/pages_plugin.rb +3 -1
  225. data/lib/pages_core/plugin.rb +4 -52
  226. data/lib/pages_core/pub_sub.rb +2 -0
  227. data/lib/pages_core/static_cache/null_handler.rb +17 -0
  228. data/lib/pages_core/static_cache/page_cache_handler.rb +56 -0
  229. data/lib/pages_core/static_cache/varnish_handler.rb +55 -0
  230. data/lib/pages_core/static_cache.rb +26 -0
  231. data/lib/pages_core/templates/block_configuration.rb +4 -1
  232. data/lib/pages_core/templates/configuration.rb +5 -1
  233. data/lib/pages_core/templates/configuration_handler.rb +5 -3
  234. data/lib/pages_core/templates/configuration_proxy.rb +2 -0
  235. data/lib/pages_core/templates/controller_actions.rb +2 -0
  236. data/lib/pages_core/templates/template_configuration.rb +20 -14
  237. data/lib/pages_core/templates.rb +5 -3
  238. data/lib/pages_core/version.rb +3 -1
  239. data/lib/pages_core.rb +13 -5
  240. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +2 -7
  241. data/lib/rails/generators/pages_core/install/install_generator.rb +3 -7
  242. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +2 -0
  243. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +2 -0
  244. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +2 -0
  245. data/lib/rails/generators/pages_core/install/templates/delayed_job +1 -0
  246. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +17 -0
  247. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +2 -0
  248. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +2 -0
  249. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +12 -1
  250. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +4 -2
  251. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +2 -0
  252. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +2 -6
  253. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +18 -14
  254. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +3 -8
  255. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +2 -0
  256. data/lib/rails/generators/pages_core/rspec/templates/page_templates_spec.rb +26 -0
  257. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +91 -0
  258. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +89 -36
  259. data/lib/tasks/pages/cache.rake +8 -5
  260. data/lib/tasks/pages/export.rake +3 -1
  261. data/lib/tasks/pages/page_paths.rake +2 -0
  262. data/lib/tasks/pages.rake +3 -2
  263. data/template.rb +2 -0
  264. metadata +193 -156
  265. data/app/assets/javascripts/pages/admin/components/attachment.jsx +0 -130
  266. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +0 -131
  267. data/app/assets/javascripts/pages/admin/components/attachments.jsx +0 -211
  268. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +0 -174
  269. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +0 -57
  270. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +0 -124
  271. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +0 -496
  272. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +0 -301
  273. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +0 -171
  274. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +0 -20
  275. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +0 -63
  276. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +0 -58
  277. data/app/assets/javascripts/pages/admin/components/toast.jsx +0 -37
  278. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +0 -52
  279. data/app/assets/javascripts/pages/admin/components.jsx +0 -2
  280. data/app/assets/javascripts/pages/admin/features/content_tabs.jsx +0 -72
  281. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +0 -97
  282. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +0 -14
  283. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +0 -160
  284. data/app/assets/javascripts/pages/admin.jsx +0 -17
  285. data/app/assets/javascripts/pages/login_form.jsx +0 -21
  286. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -26
  287. data/app/serializers/admin/page_file_serializer.rb +0 -6
  288. data/app/serializers/admin/page_image_serializer.rb +0 -6
  289. data/app/serializers/page_export_serializer.rb +0 -30
  290. data/app/serializers/page_file_export_serializer.rb +0 -4
  291. data/app/serializers/page_image_export_serializer.rb +0 -40
  292. data/app/serializers/page_serializer.rb +0 -21
  293. data/app/views/admin_mailer/error_report.html.erb +0 -70
  294. data/app/views/errors/500_critical.html.erb +0 -7
  295. data/app/views/errors/report.html.erb +0 -4
  296. data/app/views/layouts/admin/_analytics.html.erb +0 -16
  297. data/config/removed_migrations.yml +0 -60
  298. data/db/migrate/20120627033112_rename_textbits.rb +0 -17
  299. data/db/migrate/20121010055412_drop_removed_tables.rb +0 -81
  300. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +0 -9
  301. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +0 -9
  302. data/db/migrate/20130303160632_remove_imagesets.rb +0 -22
  303. data/db/migrate/20130303161732_remove_sms_subscribers.rb +0 -14
  304. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -10
  305. data/db/migrate/20140203183900_create_roles.rb +0 -66
  306. data/db/migrate/20140414150500_change_locale_names.rb +0 -11
  307. data/db/migrate/20140604142100_remove_openid_url.rb +0 -9
  308. data/db/migrate/20140920231700_convert_images_to_dis.rb +0 -81
  309. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +0 -50
  310. data/db/migrate/20141004003100_create_password_reset_tokens.rb +0 -10
  311. data/db/migrate/20141006181300_remove_user_cruft.rb +0 -11
  312. data/db/migrate/20141007173000_create_invites.rb +0 -16
  313. data/db/migrate/20150204130800_update_delayed_job_table.rb +0 -9
  314. data/db/migrate/20150401131300_localize_images.rb +0 -38
  315. data/db/migrate/20150520174300_add_meta_image_to_page.rb +0 -5
  316. data/db/migrate/20150904164200_add_pinned_to_tags.rb +0 -5
  317. data/db/migrate/20151002174800_create_page_paths.rb +0 -10
  318. data/db/migrate/20151021103400_drop_binaries_table.rb +0 -7
  319. data/db/migrate/20151204151000_remove_page_content_order.rb +0 -5
  320. data/db/migrate/20160330220900_rename_pages_categories.rb +0 -6
  321. data/db/migrate/20160405202700_change_localization_limit.rb +0 -9
  322. data/db/migrate/20170716040500_remove_page_comments.rb +0 -23
  323. data/db/migrate/20170716213400_remove_sessions.rb +0 -15
  324. data/db/migrate/20180207134000_add_dates_to_pages.rb +0 -11
  325. data/db/migrate/20190211154800_create_attachments.rb +0 -73
  326. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +0 -15
  327. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -6
  328. data/lib/tasks/pages/update.rake +0 -17
  329. data/vendor/assets/javascripts/ReactCrop.min.js +0 -1
  330. data/vendor/assets/javascripts/reflux.min.js +0 -1
@@ -1,72 +1,91 @@
1
- <%= labelled_field(f.select(:status, Page.status_labels.invert),
2
- "Status",
3
- errors: @page.errors[:status]) %>
4
- <div class="published-date">
5
- <%= labelled_field (
1
+ <div class="page-options"
2
+ data-controller="page-options">
3
+ <%= labelled_field(f.select(:status,
4
+ Page.status_labels.invert,
5
+ {},
6
+ data: {
7
+ "page-options-target": "published",
8
+ action: "change->page-options#checkPublishedDate"
9
+ }),
10
+ "Status",
11
+ errors: @page.errors[:status]) %>
12
+ <div class="published-date"
13
+ data-page-options-target="publishedDate">
14
+ <%= labelled_field (
6
15
  f.date_select(
7
16
  :published_at,
8
- start_year: (Time.now.year - 20),
9
- end_year: (Time.now.year + 5)
17
+ { start_year: (Time.now.year - 20),
18
+ end_year: (Time.now.year + 5),
19
+ with_css_classes: true },
20
+ data: { action: "change->page-options#checkAutoPublish" }
10
21
  ) +
11
22
  '<br />'.html_safe +
12
- f.time_select(:published_at)
23
+ f.time_select(:published_at,
24
+ { with_css_classes: true,
25
+ ignore_date: true },
26
+ data: { action: "change->page-options#checkAutoPublish" })
13
27
  ),
14
- "Date",
15
- errors: @page.errors[:published_at]
16
- %>
17
- <p class="autopublish-notice">
18
- This page will publish later
19
- </p>
20
- </div>
28
+ "Date",
29
+ errors: @page.errors[:published_at]
30
+ %>
31
+ <p class="autopublish-notice"
32
+ data-page-options-target="autoPublishNotice">
33
+ This page will publish later
34
+ </p>
35
+ </div>
21
36
 
22
- <%= labelled_field (
37
+ <%= labelled_field (
23
38
  f.select(:user_id, page_authors(@page).map{|a| [a.name, a.id]})
24
39
  ),
25
- "Author",
26
- errors: @page.errors[:user_id]
27
- %>
28
-
29
- <div class="field">
30
- <label>
31
- Pin to top
32
- </label>
33
- <%= f.check_box(:pinned) %>
34
- Make post featured<br />
35
- </div>
40
+ "Author",
41
+ errors: @page.errors[:user_id]
42
+ %>
36
43
 
37
- <% if @categories.length > 0 %>
38
44
  <div class="field">
39
- <label>Categories</label>
40
- <% @categories.each do |category| %>
41
- <%= check_box_tag("category[#{category.id}]",
42
- "1",
43
- @page.categories.map { |c| c.id }.include?(category.id)) %>
44
- <%= category.name %><br />
45
- <% end %>
45
+ <label>
46
+ Pin to top
47
+ </label>
48
+ <%= f.check_box(:pinned) %>
49
+ Make post featured<br />
46
50
  </div>
47
- <% end %>
48
51
 
49
- <%= labelled_field(f.select(:template, available_templates_for_select),
50
- "Template",
51
- errors: @page.errors[:template]) %>
52
+ <% if @categories.length > 0 %>
53
+ <div class="field">
54
+ <label>Categories</label>
55
+ <% @categories.each do |category| %>
56
+ <%= check_box_tag("category[#{category.id}]",
57
+ "1",
58
+ @page.categories.map { |c| c.id }.include?(category.id)) %>
59
+ <%= category.name %><br />
60
+ <% end %>
61
+ </div>
62
+ <% end %>
52
63
 
53
- <%= link_to "Advanced options", "#", class: "advanced-toggle" %>
64
+ <%= labelled_field(f.select(:template, available_templates_for_select),
65
+ "Template",
66
+ errors: @page.errors[:template]) %>
54
67
 
55
- <div class="advanced-options">
68
+ <%= link_to("Advanced options",
69
+ "#",
70
+ class: "advanced-toggle",
71
+ data: { action: "click->page-options#toggleAdvancedOptions" }) %>
56
72
 
57
- <div class="field">
58
- <label>Subpages</label>
59
- <%= f.check_box(:feed_enabled) %> RSS feed enabled<br />
60
- <%= f.check_box(:news_page) %> Show in News<br />
73
+ <div class="advanced-options"
74
+ data-page-options-target="advancedOptions">
75
+ <div class="field">
76
+ <label>Subpages</label>
77
+ <%= f.check_box(:feed_enabled) %> RSS feed enabled<br />
78
+ <%= f.check_box(:news_page) %> Show in News<br />
79
+ </div>
80
+ <%= labelled_field f.text_field(:unique_name), "Unique name", errors: @page.errors[:unique_name] %>
81
+ <%= labelled_field f.text_field(:redirect_to), "Redirect", errors: @page.errors[:redirect_to] %>
61
82
  </div>
62
- <%= labelled_field f.text_field(:unique_name), "Unique name", errors: @page.errors[:unique_name] %>
63
- <%= labelled_field f.text_field(:redirect_to), "Redirect", errors: @page.errors[:redirect_to] %>
64
- </div>
65
83
 
66
- <% if @page.id? && @page.name? %>
67
- <div class="field">
68
- <label>Page link</label>
69
- <%= link_to(page_path(@page.locale, @page),
70
- page_path(@page.locale, @page)) %>
71
- </div>
72
- <% end %>
84
+ <% if @page.id? && @page.name? %>
85
+ <div class="field">
86
+ <label>Page link</label>
87
+ <%= link_to(page_path(@page.locale, @page),
88
+ page_path(@page.locale, @page)) %>
89
+ </div>
90
+ <% end %>
91
+ </div>
@@ -0,0 +1,19 @@
1
+ <%= content_tab "Content" do %>
2
+ <%= render partial: "edit_content", locals: { f: f } %>
3
+ <% end %>
4
+
5
+ <% if @page.template_config.value(:images) || @page.template_config.value(:image) %>
6
+ <%= content_tab "Images" do %>
7
+ <%= render partial: "edit_images", locals: { f: f } %>
8
+ <% end %>
9
+ <% end %>
10
+
11
+ <% if @page.template_config.value(:files) %>
12
+ <%= content_tab "Files" do %>
13
+ <%= render partial: "edit_files", locals: { f: f } %>
14
+ <% end %>
15
+ <% end %>
16
+
17
+ <%= content_tab "Metadata" do %>
18
+ <%= render partial: "edit_metadata", locals: { f: f } %>
19
+ <% end %>
@@ -11,71 +11,45 @@
11
11
  end
12
12
  %>
13
13
 
14
-
15
-
16
- <%# #### SIDEBAR ########################################################### %>
17
-
18
- <% content_for :sidebar do %>
14
+ <% content_for :main_wrapper do %>
19
15
  <%= form_for(@page,
20
16
  url: admin_page_url(@locale, @page),
21
- html: {class: "edit-page", id: 'page-form-sidebar'},
22
- builder: PagesCore::Admin::FormBuilder) do |f| %>
23
- <%= render partial: 'edit_options', locals: {f: f} %>
24
- <% end %>
25
- <% end %>
26
-
27
-
28
-
29
- <%# #### EDIT AREA ######################################################### %>
30
-
31
- <%= form_for(@page,
32
- url: admin_page_url(@locale, @page),
33
- html: {
34
- class: "edit-page",
35
- id: 'page-form',
36
- method: :put,
37
- multipart: true
38
- },
39
- builder: PagesCore::Admin::FormBuilder
40
- ) do |f| %>
41
-
42
- <div class="hidden-options">
43
- <%= render partial: 'edit_options', locals: {f: f} %>
44
- </div>
45
-
46
- <%# #### CONTENT #### %>
47
- <%= content_tab "Content" do %>
48
- <%= render partial: 'edit_content', locals: {f: f} %>
49
- <% end %>
50
-
51
- <%# #### IMAGES #### %>
52
- <% if @page.template_config.value(:images) || @page.template_config.value(:image) %>
53
- <%= content_tab "Images" do %>
54
- <%= render partial: 'edit_images', locals: {f: f} %>
55
- <% end %>
56
- <% end %>
57
-
58
-
59
- <%# #### FILES #### %>
60
- <% if @page.template_config.value(:files) %>
61
- <%= content_tab "Files" do %>
62
- <%= render partial: 'edit_files', locals: {f: f} %>
17
+ builder: PagesCore::Admin::FormBuilder,
18
+ html: {
19
+ class: "edit-page main-wrapper",
20
+ method: :put,
21
+ data: {
22
+ controller: "edit-page",
23
+ "edit-page-target": "form",
24
+ "preview-url": preview_page_url(@page.locale, @page)
25
+ }
26
+ }) do |f| %>
27
+
28
+ <% content_for :main do %>
29
+ <div class="content">
30
+ <%= render(partial: "form", locals: { f: f }) %>
31
+
32
+ <div class="buttons">
33
+ <button type="button"
34
+ id="previewButton"
35
+ data-action="click->edit-page#preview"
36
+ data-url="<%= preview_page_url(@page.locale, @page) %>">
37
+ Preview
38
+ </button>
39
+ <button type="submit">
40
+ Save
41
+ </button>
42
+ </div>
43
+ </div>
63
44
  <% end %>
64
- <% end %>
65
45
 
46
+ <main data-controller="main">
47
+ <%= render(partial: "layouts/admin/page_header") %>
48
+ <%= yield :main %>
49
+ </main>
66
50
 
67
- <%# #### METADATA #### %>
68
- <%= content_tab "Metadata" do %>
69
- <%= render partial: 'edit_metadata', locals: {f: f} %>
51
+ <aside class="sidebar" id="page-form-sidebar">
52
+ <%= render partial: 'edit_options', locals: { f: f } %>
53
+ </aside>
70
54
  <% end %>
71
-
72
- <div class="buttons">
73
- <button type="button" id="previewButton" data-url="<%= preview_page_url(@page.locale, @page) %>">
74
- Preview
75
- </button>
76
- <button type="submit">
77
- Save
78
- </button>
79
- </div>
80
-
81
55
  <% end %>
@@ -14,7 +14,6 @@
14
14
  <% cache Page.visible.roots.to_a + [current_user, @locale] do %>
15
15
  <%= react_component(
16
16
  "PageTree", {
17
- csrf_token: form_authenticity_token,
18
17
  pages: @pages.map { |p| page_json(p) },
19
18
  locale: @locale,
20
19
  permissions: [(:create if policy(Page).create?)] }
@@ -11,39 +11,39 @@
11
11
  @url_options[:parent] = @page.parent if @page.parent
12
12
  %>
13
13
 
14
- <% content_for :sidebar do %>
14
+ <% content_for :main_wrapper do %>
15
15
  <%= form_for(@page,
16
16
  url: admin_pages_url(@locale),
17
- html: {class: "edit-page", id: 'page-form-sidebar'}) do |f| %>
18
- <%= render partial: 'edit_options', locals: {f: f} %>
17
+ builder: PagesCore::Admin::FormBuilder,
18
+ html: {
19
+ class: "edit-page main-wrapper",
20
+ data: {
21
+ controller: "edit-page",
22
+ "edit-page-target": "form"
23
+ }
24
+ }) do |f| %>
25
+
26
+ <% content_for :main do %>
27
+ <div class="content">
28
+ <%= f.hidden_field 'parent_page_id' if @page.parent %>
29
+
30
+ <%= render(partial: "form", locals: { f: f }) %>
31
+
32
+ <div class="buttons">
33
+ <button type="submit">
34
+ Save
35
+ </button>
36
+ </div>
37
+ </div>
38
+ <% end %>
39
+
40
+ <main data-controller="main">
41
+ <%= render(partial: "layouts/admin/page_header") %>
42
+ <%= yield :main %>
43
+ </main>
44
+
45
+ <aside class="sidebar" id="page-form-sidebar">
46
+ <%= render partial: 'edit_options', locals: { f: f } %>
47
+ </aside>
19
48
  <% end %>
20
49
  <% end %>
21
-
22
- <%= form_for(@page,
23
- url: admin_pages_url(@locale),
24
- builder: PagesCore::Admin::FormBuilder,
25
- html: {
26
- class: "edit-page",
27
- id: 'page-form',
28
- method: :post,
29
- multipart: true
30
- }
31
- ) do |f| %>
32
-
33
- <div class="hidden-options">
34
- <%= render partial: 'edit_options', locals: {f: f} %>
35
- </div>
36
-
37
- <%= hidden_field_tag 'locale', @locale %>
38
- <%= f.hidden_field 'parent_page_id' if @page.parent %>
39
-
40
- <%# #### CONTENT #### %>
41
- <%= content_tab "Content" do %>
42
- <%= render partial: 'edit_content', locals: {f: f} %>
43
- <% end %>
44
-
45
- <p>
46
- <%= submit_tag "Save" %>
47
- </p>
48
-
49
- <% end %>
@@ -59,7 +59,7 @@
59
59
  </div>
60
60
  <% end %>
61
61
 
62
- <% if @pages.any? %>
62
+ <% if @pages.length > 0 %>
63
63
  <table class="list news-item-list">
64
64
  <tr>
65
65
  <th>Name</th>
@@ -10,8 +10,12 @@
10
10
  <%= check_box_tag("#{model_name_from_record_or_class(f.object).param_key}[role_names][]",
11
11
  role.name,
12
12
  f.object.role?(role.name.to_sym),
13
+ id: "role-#{role.name}",
13
14
  class: "role") %>
14
- <%= role.description %><br>
15
+ <label for="role-<%= role.name %>">
16
+ <%= role.description %>
17
+ </label>
18
+ <br>
15
19
  <% end %>
16
20
  </p>
17
21
  <% end %>
@@ -11,8 +11,11 @@
11
11
  </p>
12
12
  <% end %>
13
13
 
14
- <div class="login-form">
15
- <div class="login-tab password">
14
+ <div class="login-form"
15
+ data-controller="login">
16
+ <div class="login-tab password"
17
+ data-login-target="tab"
18
+ data-tab="password">
16
19
  <%= form_tag session_path do %>
17
20
  <p>
18
21
  <label>Email address</label>
@@ -29,13 +32,18 @@
29
32
  <li>
30
33
  <%= link_to("<b>Help!</b> I forgot my password!".html_safe,
31
34
  login_admin_users_path,
32
- class: 'show-password-reset') %>
35
+ data: {
36
+ action: "click->login#changeTab",
37
+ tab: "password-reset"
38
+ }) %>
33
39
  </li>
34
40
  </ul>
35
41
  <% end %>
36
42
  </div>
37
43
 
38
- <div class="login-tab password-reset">
44
+ <div class="login-tab password-reset"
45
+ data-login-target="tab"
46
+ data-tab="password-reset">
39
47
  <%= form_tag admin_password_resets_path do %>
40
48
  <h2>
41
49
  Forgot your password?
@@ -1,24 +1,6 @@
1
1
  <%
2
- @page_title = "Oh dear..."
2
+ @page_title = "500 Internal Server Error"
3
3
  %>
4
4
  <p>
5
- Something went terribly wrong. Of course, this shouldn't happen, and
6
- we'd really appreciate it if you could click the button below to
7
- notify us about the problem.
5
+ We're experiencing an internal server problem. Please try again later.
8
6
  </p>
9
- <p>
10
- Please include your email address if you'd like to hear back from us.
11
- </p>
12
-
13
- <%= form_tag report_errors_path, method: 'post' do %>
14
- <%= hidden_field_tag :error_report, @report %>
15
- <p>
16
- <input name="email" type="text" class="text" value="<%= @email %>"
17
- placeholder="Your email (optional)" />
18
- </p>
19
- <p>
20
- <button type="submit" class="clean-gray">
21
- Report error
22
- </button>
23
- </p>
24
- <% end %>
@@ -6,7 +6,7 @@
6
6
  <li>Try searching this site using <%= link_to "Google", "http://www.google.com/" %> for the information you want:</li>
7
7
  </ul>
8
8
 
9
- <form action="http://www.google.com/search" method="get" onSubmit="googleSearch( this );">
9
+ <form action="https://www.google.com/search" method="get" onSubmit="googleSearch( this );">
10
10
  <input name="q" type="hidden" />
11
11
  <input name="qinput" type="text" class="text with_button" />
12
12
  <button type="submit" class="clean-gray">Search</button>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  xml << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
2
4
  xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
3
5
  xml.channel do
@@ -24,10 +26,9 @@ xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
24
26
  xml.pubDate item.published_at.to_formatted_s(:rfc822)
25
27
  xml.tag!("dc:creator", item.author.name)
26
28
  if item.image
27
- image_size = item.image.data.try(&:length)
28
29
  xml.enclosure(
29
30
  url: dynamic_image_url(item.image, size: "2000x2000"),
30
- length: image_size,
31
+ length: item.image.content_length,
31
32
  type: item.image.content_type
32
33
  )
33
34
  end
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  </header>
26
26
 
27
- <% if flash[:error] %>
27
+ <% if flash[:error] && false %>
28
28
  <div id="flash-error">
29
29
  <%= flash[:error] %>
30
30
  </div>
@@ -0,0 +1,33 @@
1
+ <% if @page_description || @content_tabs %>
2
+ <div id="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
3
+ <% if @page_description_links -%>
4
+ <div class="links">
5
+ <%= @page_description_links.html_safe %>
6
+ </div>
7
+ <% end %>
8
+ <h3>
9
+ <%= (@page_description || @page_title).html_safe %>
10
+ </h3>
11
+ <% if @content_tabs %>
12
+ <ul id="content-tabs">
13
+ <% @content_tabs.map do |t| %>
14
+ <li id="content-tab-link-<%= t[:key] %>"
15
+ data-tab="<%= t[:key] %>"
16
+ data-main-target="link">
17
+ <% if t[:options][:disabled] == true %>
18
+ <%= t[:name] %>
19
+ <% else %>
20
+ <%= link_to(
21
+ t[:name],
22
+ { anchor: "#{t[:key]}" },
23
+ data: {
24
+ action: "click->main#changeTab",
25
+ tab: t[:key]
26
+ }) %>
27
+ <% end %>
28
+ </li>
29
+ <% end %>
30
+ </ul>
31
+ <% end %>
32
+ </div>
33
+ <% end %>
@@ -19,14 +19,19 @@
19
19
  <%= stylesheet_link_tag "admin" %>
20
20
  <% end %>
21
21
 
22
- <%= javascript_include_tag "pages/admin" %>
23
- <% if Dir.glob(Rails.root.join("app/assets/javascripts/admin.*")).any? %>
24
- <%= javascript_include_tag "admin" %>
22
+ <% if File.exist?(Rails.root.join("app/assets/builds/admin.js")) %>
23
+ <%= javascript_include_tag("admin", defer: true) %>
24
+ <% else %>
25
+ <%= javascript_include_tag("pages_core/admin-dist", defer: true) %>
26
+ <% if Dir.glob(Rails.root.join("app/assets/javascripts/admin.*")).any? %>
27
+ <%= javascript_include_tag("admin", defer: true) %>
28
+ <% end %>
25
29
  <% end %>
26
30
 
27
31
  <%= csrf_meta_tag %>
28
32
  <meta name="viewport"
29
33
  content="width=device-width, initial-scale=1, user-scalable=no">
34
+ <%= google_analytics_tags "UA-5468672-21" %>
30
35
  </head>
31
36
 
32
37
  <body class="<%= body_classes.join(" ") %>"
@@ -35,49 +40,25 @@
35
40
  data-locale="<%= @locale %>">
36
41
 
37
42
  <div class="wrapper">
38
-
39
43
  <%= render partial: "layouts/admin/header" %>
44
+ <% if content_for?(:main_wrapper) %>
45
+ <%= yield :main_wrapper %>
46
+ <% else %>
47
+ <div class="main-wrapper">
48
+ <main data-controller="main">
49
+ <%= render(partial: "layouts/admin/page_header") %>
50
+ <%= yield %>
51
+ </main>
40
52
 
41
- <div class="main-wrapper">
42
- <main>
43
- <% if @page_description || @content_tabs %>
44
- <div id="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
45
- <% if @page_description_links -%>
46
- <div class="links">
47
- <%= @page_description_links.html_safe %>
48
- </div>
49
- <% end %>
50
- <h3>
51
- <%= (@page_description || @page_title).html_safe %>
52
- </h3>
53
- <% if @content_tabs %>
54
- <ul id="content-tabs">
55
- <% @content_tabs.map do |t| %>
56
- <li id="content-tab-link-<%= t[:key] %>" data-tab-name="<%= t[:key] %>">
57
- <% if t[:options][:disabled] == true %>
58
- <%= t[:name] %>
59
- <% else %>
60
- <%= link_to(t[:name], anchor: "#{t[:key]}") %>
61
- <% end %>
62
- </li>
63
- <% end %>
64
- </ul>
65
- <% end %>
66
- </div>
53
+ <% if content_for?(:sidebar) %>
54
+ <aside class="sidebar">
55
+ <%= content_for(:sidebar) %>
56
+ </aside>
67
57
  <% end %>
68
-
69
- <%= yield %>
70
- </main>
71
-
72
- <% if content_for?(:sidebar) %>
73
- <aside class="sidebar">
74
- <%= content_for(:sidebar) %>
75
- </aside>
76
- <% end %>
77
- </div>
58
+ </div>
59
+ <% end %>
78
60
  </div>
79
61
  <%= react_component "Modal", {} %>
80
- <%= react_component "Toast", { notice: flash[:notice] } %>
81
- <%= render partial: "layouts/admin/analytics" %>
62
+ <%= react_component "Toast", { notice: flash[:notice], error: flash[:error] } %>
82
63
  </body>
83
64
  </html>
@@ -0,0 +1,8 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id=<%= account_id %>"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+ gtag('config', '<%= account_id %>', { 'anonymize_ip': true });
8
+ </script>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  xml.instruct!
2
4
  xml.urlset xmlns: "http://www.sitemaps.org/schemas/sitemap/0.9" do |urlset|
3
5
  @entries.each do |entry|
data/config/routes.rb CHANGED
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
4
+ Healthcheck.routes(self)
5
+
2
6
  image_resources :images, path: "dynamic_images/:digest(/:size)"
3
7
 
4
8
  # Attachment
@@ -83,7 +87,6 @@ Rails.application.routes.draw do
83
87
 
84
88
  member do
85
89
  put "move"
86
- delete "delete_meta_image"
87
90
  end
88
91
 
89
92
  get "new/:parent", action: "new"
@@ -98,11 +101,7 @@ Rails.application.routes.draw do
98
101
  as: "admin_default")
99
102
 
100
103
  # Errors
101
- resources :errors do
102
- collection do
103
- post "report"
104
- end
105
- end
104
+ resources :errors
106
105
 
107
106
  # Page path routing
108
107
  get ":locale/*path/page/:page" => "pages#show",