pages_core 3.6.2 → 3.7.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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/Rakefile +3 -1
  4. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +1 -1
  5. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +5 -5
  6. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +10 -5
  7. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +10 -5
  8. data/app/assets/javascripts/pages/admin/components/page_tree.jsx +9 -9
  9. data/app/assets/javascripts/pages/admin/components/page_tree_node.jsx +11 -11
  10. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +5 -4
  11. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +54 -21
  12. data/app/assets/javascripts/pages/admin/components/toast.jsx +0 -3
  13. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +1 -1
  14. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +3 -3
  15. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +1 -1
  16. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +28 -28
  17. data/app/assets/javascripts/pages/admin/lib/tree.jsx +9 -9
  18. data/app/assets/javascripts/pages/login_form.jsx +8 -8
  19. data/app/assets/stylesheets/pages/admin/components/forms.scss +20 -0
  20. data/app/assets/stylesheets/pages/errors.css +2 -0
  21. data/app/controller_dummies/admin/admin_controller.rb +2 -0
  22. data/app/controller_dummies/application_controller.rb +2 -0
  23. data/app/controller_dummies/attachments_controller.rb +2 -0
  24. data/app/controller_dummies/frontend_controller.rb +2 -0
  25. data/app/controller_dummies/images_controller.rb +2 -0
  26. data/app/controller_dummies/page_files_controller.rb +2 -0
  27. data/app/controller_dummies/pages_controller.rb +2 -0
  28. data/app/controller_dummies/sitemaps_controller.rb +2 -0
  29. data/app/controllers/admin/attachments_controller.rb +4 -2
  30. data/app/controllers/admin/categories_controller.rb +2 -0
  31. data/app/controllers/admin/images_controller.rb +10 -5
  32. data/app/controllers/admin/invites_controller.rb +4 -1
  33. data/app/controllers/admin/pages_controller.rb +7 -19
  34. data/app/controllers/admin/password_resets_controller.rb +9 -5
  35. data/app/controllers/admin/users_controller.rb +10 -4
  36. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +13 -11
  37. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +75 -0
  38. data/app/controllers/concerns/pages_core/authentication.rb +4 -1
  39. data/app/controllers/concerns/pages_core/error_renderer.rb +3 -0
  40. data/app/controllers/concerns/pages_core/error_reporting.rb +36 -0
  41. data/app/controllers/concerns/pages_core/policies_helper.rb +4 -1
  42. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +3 -0
  43. data/app/controllers/concerns/pages_core/process_titler.rb +2 -0
  44. data/app/controllers/concerns/pages_core/rss_controller.rb +2 -0
  45. data/app/controllers/concerns/pages_core/static_cache_controller.rb +48 -0
  46. data/app/controllers/errors_controller.rb +5 -53
  47. data/app/controllers/pages_core/admin_controller.rb +7 -67
  48. data/app/controllers/pages_core/attachments_controller.rb +10 -6
  49. data/app/controllers/pages_core/base_controller.rb +11 -17
  50. data/app/controllers/pages_core/frontend/page_files_controller.rb +6 -2
  51. data/app/controllers/pages_core/frontend/pages_controller.rb +9 -15
  52. data/app/controllers/pages_core/frontend_controller.rb +3 -0
  53. data/app/controllers/pages_core/images_controller.rb +3 -1
  54. data/app/controllers/pages_core/sitemaps_controller.rb +11 -5
  55. data/app/controllers/sessions_controller.rb +2 -0
  56. data/app/formatters/pages_core/html_formatter.rb +13 -63
  57. data/app/formatters/pages_core/image_embedder.rb +79 -0
  58. data/app/formatters/pages_core/link_renderer.rb +2 -0
  59. data/app/helpers/admin/admin_helper.rb +2 -0
  60. data/app/helpers/admin/menu_helper.rb +6 -4
  61. data/app/helpers/admin/pages_helper.rb +4 -57
  62. data/app/helpers/application_helper.rb +2 -0
  63. data/app/helpers/frontend_helper.rb +2 -0
  64. data/app/helpers/pages_core/admin/admin_helper.rb +22 -106
  65. data/app/helpers/pages_core/admin/content_tabs_helper.rb +28 -0
  66. data/app/helpers/pages_core/admin/date_range_helper.rb +55 -0
  67. data/app/helpers/pages_core/admin/form_builder.rb +8 -0
  68. data/app/helpers/pages_core/admin/image_uploads_helper.rb +48 -0
  69. data/app/helpers/pages_core/admin/labelled_field_helper.rb +12 -9
  70. data/app/helpers/pages_core/admin/page_blocks_helper.rb +66 -0
  71. data/app/helpers/pages_core/admin/page_json_helper.rb +23 -0
  72. data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -9
  73. data/app/helpers/pages_core/application_helper.rb +3 -0
  74. data/app/helpers/pages_core/attachments_helper.rb +31 -27
  75. data/app/helpers/pages_core/form_builder.rb +17 -13
  76. data/app/helpers/pages_core/frontend_helper.rb +3 -3
  77. data/app/helpers/pages_core/head_tags_helper.rb +7 -2
  78. data/app/helpers/pages_core/images_helper.rb +3 -0
  79. data/app/helpers/pages_core/meta_tags_helper.rb +3 -1
  80. data/app/helpers/pages_core/open_graph_tags_helper.rb +7 -5
  81. data/app/helpers/pages_core/page_path_helper.rb +24 -3
  82. data/app/jobs/pages_core/autopublish_job.rb +3 -1
  83. data/app/jobs/pages_core/sweep_cache_job.rb +4 -2
  84. data/app/mailers/admin_mailer.rb +4 -14
  85. data/app/models/attachment.rb +10 -8
  86. data/app/models/autopublisher.rb +3 -0
  87. data/app/models/category.rb +3 -1
  88. data/app/models/concerns/pages_core/has_roles.rb +2 -0
  89. data/app/models/concerns/pages_core/humanizable_param.rb +9 -6
  90. data/app/models/concerns/pages_core/page_model/attachments.rb +2 -0
  91. data/app/models/concerns/pages_core/page_model/autopublishable.rb +2 -0
  92. data/app/models/concerns/pages_core/page_model/dated_page.rb +11 -11
  93. data/app/models/concerns/pages_core/page_model/images.rb +5 -1
  94. data/app/models/concerns/pages_core/page_model/localizable.rb +2 -0
  95. data/app/models/concerns/pages_core/page_model/pathable.rb +26 -25
  96. data/app/models/concerns/pages_core/page_model/redirectable.rb +3 -1
  97. data/app/models/concerns/pages_core/page_model/sortable.rb +6 -5
  98. data/app/models/concerns/pages_core/page_model/status.rb +2 -0
  99. data/app/models/concerns/pages_core/page_model/templateable.rb +7 -2
  100. data/app/models/concerns/pages_core/page_model/tree.rb +27 -20
  101. data/app/models/concerns/pages_core/sweepable.rb +4 -2
  102. data/app/models/concerns/pages_core/taggable.rb +8 -2
  103. data/app/models/image.rb +14 -1
  104. data/app/models/invite.rb +3 -1
  105. data/app/models/invite_role.rb +5 -3
  106. data/app/models/page.rb +4 -3
  107. data/app/models/page_builder.rb +2 -0
  108. data/app/models/page_category.rb +3 -1
  109. data/app/models/page_exporter.rb +22 -9
  110. data/app/models/page_file.rb +3 -1
  111. data/app/models/page_image.rb +3 -1
  112. data/app/models/page_path.rb +13 -5
  113. data/app/models/password_reset_token.rb +3 -1
  114. data/app/models/role.rb +8 -5
  115. data/app/models/tag.rb +8 -6
  116. data/app/models/tagging.rb +4 -2
  117. data/app/models/user.rb +7 -4
  118. data/app/policies/invite_policy.rb +2 -0
  119. data/app/policies/page_file_policy.rb +2 -0
  120. data/app/policies/page_image_policy.rb +2 -0
  121. data/app/policies/page_policy.rb +2 -0
  122. data/app/policies/policy.rb +2 -0
  123. data/app/policies/user_policy.rb +2 -0
  124. data/app/serializers/admin/attachment_serializer.rb +4 -2
  125. data/app/serializers/admin/image_serializer.rb +4 -2
  126. data/app/serializers/admin/page_file_serializer.rb +2 -0
  127. data/app/serializers/admin/page_image_serializer.rb +2 -0
  128. data/app/serializers/page_export_serializer.rb +2 -0
  129. data/app/serializers/page_file_export_serializer.rb +2 -0
  130. data/app/serializers/page_image_export_serializer.rb +2 -0
  131. data/app/serializers/page_image_serializer.rb +2 -0
  132. data/app/serializers/page_serializer.rb +2 -0
  133. data/app/services/pages_core/create_user_service.rb +5 -2
  134. data/app/services/pages_core/destroy_invite_service.rb +25 -0
  135. data/app/services/pages_core/invite_service.rb +2 -0
  136. data/app/views/admin/images/show.json.jbuilder +2 -0
  137. data/app/views/admin/pages/news.html.erb +1 -1
  138. data/app/views/errors/500.html.erb +2 -20
  139. data/app/views/errors/_generic_help.html.erb +1 -1
  140. data/app/views/feeds/pages.rss.builder +2 -0
  141. data/app/views/sitemaps/show.xml.builder +2 -0
  142. data/config/routes.rb +5 -5
  143. data/db/migrate/20111219033112_create_pages_tables.rb +192 -271
  144. data/lib/pages_core.rb +10 -0
  145. data/lib/pages_core/admin_menu_item.rb +3 -0
  146. data/lib/pages_core/archive_finder.rb +12 -16
  147. data/lib/pages_core/attachment_embedder.rb +4 -6
  148. data/lib/pages_core/cache_sweeper.rb +10 -108
  149. data/lib/pages_core/configuration.rb +2 -0
  150. data/lib/pages_core/configuration/base.rb +5 -0
  151. data/lib/pages_core/configuration/pages.rb +4 -2
  152. data/lib/pages_core/digest_verifier.rb +5 -5
  153. data/lib/pages_core/engine.rb +52 -0
  154. data/lib/pages_core/extensions.rb +2 -0
  155. data/lib/pages_core/extensions/string_extensions.rb +3 -1
  156. data/lib/pages_core/page_path_constraint.rb +2 -0
  157. data/lib/pages_core/pages_plugin.rb +3 -1
  158. data/lib/pages_core/plugin.rb +4 -52
  159. data/lib/pages_core/pub_sub.rb +2 -0
  160. data/lib/pages_core/static_cache.rb +26 -0
  161. data/lib/pages_core/static_cache/null_handler.rb +17 -0
  162. data/lib/pages_core/static_cache/page_cache_handler.rb +56 -0
  163. data/lib/pages_core/static_cache/varnish_handler.rb +55 -0
  164. data/lib/pages_core/templates.rb +5 -3
  165. data/lib/pages_core/templates/block_configuration.rb +3 -0
  166. data/lib/pages_core/templates/configuration.rb +5 -1
  167. data/lib/pages_core/templates/configuration_handler.rb +4 -2
  168. data/lib/pages_core/templates/configuration_proxy.rb +2 -0
  169. data/lib/pages_core/templates/controller_actions.rb +2 -0
  170. data/lib/pages_core/templates/template_configuration.rb +18 -13
  171. data/lib/pages_core/version.rb +3 -1
  172. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +2 -0
  173. data/lib/rails/generators/pages_core/install/install_generator.rb +3 -7
  174. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +2 -0
  175. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +2 -0
  176. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +2 -0
  177. data/lib/rails/generators/pages_core/install/templates/delayed_job +1 -0
  178. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +17 -0
  179. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +2 -0
  180. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +2 -0
  181. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +12 -1
  182. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +2 -0
  183. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +2 -0
  184. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +2 -6
  185. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +18 -14
  186. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +3 -8
  187. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +2 -0
  188. data/lib/rails/generators/pages_core/rspec/templates/page_templates_spec.rb +26 -0
  189. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +91 -0
  190. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +89 -36
  191. data/lib/tasks/pages.rake +3 -2
  192. data/lib/tasks/pages/cache.rake +8 -5
  193. data/lib/tasks/pages/export.rake +3 -1
  194. data/lib/tasks/pages/page_paths.rake +2 -0
  195. data/template.rb +2 -0
  196. metadata +127 -77
  197. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -26
  198. data/app/views/admin_mailer/error_report.html.erb +0 -70
  199. data/app/views/errors/500_critical.html.erb +0 -7
  200. data/app/views/errors/report.html.erb +0 -4
  201. data/config/removed_migrations.yml +0 -60
  202. data/db/migrate/20120627033112_rename_textbits.rb +0 -17
  203. data/db/migrate/20121010055412_drop_removed_tables.rb +0 -81
  204. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +0 -9
  205. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +0 -9
  206. data/db/migrate/20130303160632_remove_imagesets.rb +0 -22
  207. data/db/migrate/20130303161732_remove_sms_subscribers.rb +0 -14
  208. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -10
  209. data/db/migrate/20140203183900_create_roles.rb +0 -66
  210. data/db/migrate/20140414150500_change_locale_names.rb +0 -11
  211. data/db/migrate/20140604142100_remove_openid_url.rb +0 -9
  212. data/db/migrate/20140920231700_convert_images_to_dis.rb +0 -81
  213. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +0 -50
  214. data/db/migrate/20141004003100_create_password_reset_tokens.rb +0 -10
  215. data/db/migrate/20141006181300_remove_user_cruft.rb +0 -11
  216. data/db/migrate/20141007173000_create_invites.rb +0 -16
  217. data/db/migrate/20150204130800_update_delayed_job_table.rb +0 -9
  218. data/db/migrate/20150401131300_localize_images.rb +0 -38
  219. data/db/migrate/20150520174300_add_meta_image_to_page.rb +0 -5
  220. data/db/migrate/20150904164200_add_pinned_to_tags.rb +0 -5
  221. data/db/migrate/20151002174800_create_page_paths.rb +0 -10
  222. data/db/migrate/20151021103400_drop_binaries_table.rb +0 -7
  223. data/db/migrate/20151204151000_remove_page_content_order.rb +0 -5
  224. data/db/migrate/20160330220900_rename_pages_categories.rb +0 -6
  225. data/db/migrate/20160405202700_change_localization_limit.rb +0 -9
  226. data/db/migrate/20170716040500_remove_page_comments.rb +0 -23
  227. data/db/migrate/20170716213400_remove_sessions.rb +0 -15
  228. data/db/migrate/20180207134000_add_dates_to_pages.rb +0 -11
  229. data/db/migrate/20190211154800_create_attachments.rb +0 -73
  230. data/db/migrate/20190318115000_fix_page_file_ids.rb +0 -34
  231. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -6
  232. data/lib/tasks/pages/update.rake +0 -17
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  class PagesPlugin < Plugin
3
5
  class << self
@@ -14,7 +16,7 @@ module PagesCore
14
16
  paths["db/migrate"] = "db/migrate"
15
17
 
16
18
  admin_menu_item "News", proc { news_admin_pages_path(@locale) }, :pages,
17
- if: proc { Page.news_pages.any? },
19
+ if: proc { Page.news_pages.any? },
18
20
  current: proc { @page && @page.parent.try(&:news_page?) }
19
21
 
20
22
  admin_menu_item "Pages", proc { admin_pages_path(@locale) }, :pages
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # module PagesGallery
2
4
  # class Plugin < PagesCore::Plugin
3
5
  # paths['db/migrate'] = 'template/db/migrate'
@@ -21,6 +23,7 @@ module PagesCore
21
23
  end
22
24
  )
23
25
  end
26
+ super
24
27
  end
25
28
 
26
29
  def admin_menu_item(label, path, group = :custom, options = {})
@@ -35,38 +38,10 @@ module PagesCore
35
38
  end
36
39
  end
37
40
 
38
- def migrations
39
- plugins.map { |p| p.new.migrations }.flatten.compact
40
- end
41
-
42
- def removed_migrations
43
- plugins.map { |p| p.new.removed_migrations }.flatten.compact
44
- end
45
-
46
- def existing_removed_migrations
47
- removed_migrations
48
- .select { |m| File.exist?(Rails.root.join("db", "migrate", m)) }
49
- end
50
-
51
- def existing_migrations
52
- migrations
53
- .map { |m| Rails.root.join("db", "migrate", m.basename) }
54
- .select { |m| File.exist?(m) }
55
- end
56
-
57
- def remove_old_migrations!
58
- (existing_removed_migrations + existing_migrations).each do |migration|
59
- File.unlink Rails.root.join("db", "migrate", migration)
60
- end
61
- end
62
-
63
41
  private
64
42
 
65
43
  def default_paths
66
- {
67
- "db/migrate" => "db/migrate",
68
- "config/removed_migrations.yml" => "config/removed_migrations.yml"
69
- }
44
+ { "db/migrate" => "db/migrate" }
70
45
  end
71
46
  end
72
47
 
@@ -78,29 +53,6 @@ module PagesCore
78
53
  self.class.paths
79
54
  end
80
55
 
81
- def migrations_path
82
- root.join(paths["db/migrate"])
83
- end
84
-
85
- def removed_migrations_path
86
- root.join(paths["config/removed_migrations.yml"])
87
- end
88
-
89
- def migrations?
90
- File.exist?(migrations_path) && File.directory?(migrations_path)
91
- end
92
-
93
- def migrations
94
- Dir.entries(migrations_path)
95
- .select { |f| f =~ /\.rb$/ }
96
- .map { |f| migrations_path.join(f) }
97
- end
98
-
99
- def removed_migrations
100
- return unless File.exist?(removed_migrations_path)
101
- YAML.load_file(removed_migrations_path)
102
- end
103
-
104
56
  protected
105
57
 
106
58
  def find_root_with_subfolder(subfolder)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module PubSub
3
5
  class << self
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pages_core/static_cache/null_handler"
4
+ require "pages_core/static_cache/page_cache_handler"
5
+ require "pages_core/static_cache/varnish_handler"
6
+
7
+ module PagesCore
8
+ module StaticCache
9
+ class << self
10
+ def handler
11
+ PagesCore.config.static_cache_handler || default_handler
12
+ end
13
+
14
+ private
15
+
16
+ def default_handler
17
+ if ENV["VARNISH_URL"]
18
+ return PagesCore::StaticCache::VarnishHandler.new(ENV["VARNISH_URL"])
19
+ end
20
+
21
+ # PagesCore::StaticCache::NullHandler.new
22
+ PagesCore::StaticCache::PageCacheHandler.new
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module StaticCache
5
+ class NullHandler
6
+ def cache_page(_controller, _request, _response); end
7
+
8
+ def cache_page_permanently(_controller, _request, _response); end
9
+
10
+ def purge!; end
11
+
12
+ def sweep!; end
13
+
14
+ def sweep_now!; end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module StaticCache
5
+ class PageCacheHandler
6
+ def cache_page(controller, _request, _response)
7
+ controller.class.page_cache_directory = page_cache_directory
8
+ controller.cache_page
9
+ end
10
+
11
+ def cache_page_permanently(controller, _request, _response)
12
+ controller.class.page_cache_directory = permanent_page_cache_directory
13
+ controller.cache_page
14
+ end
15
+
16
+ def purge!
17
+ return unless PagesCore::CacheSweeper.enabled
18
+
19
+ clear_directory(page_cache_directory)
20
+ clear_directory(permanent_page_cache_directory)
21
+ end
22
+
23
+ def sweep!
24
+ return unless PagesCore::CacheSweeper.enabled
25
+
26
+ PagesCore::SweepCacheJob.perform_later
27
+ end
28
+
29
+ def sweep_now!
30
+ return unless PagesCore::CacheSweeper.enabled
31
+
32
+ clear_directory(page_cache_directory)
33
+ end
34
+
35
+ private
36
+
37
+ def cache_root
38
+ Rails.root.join("public")
39
+ end
40
+
41
+ def clear_directory(path)
42
+ return unless File.exist?(path)
43
+
44
+ FileUtils.rm_rf(Dir.glob("#{path}/*"))
45
+ end
46
+
47
+ def page_cache_directory
48
+ cache_root.join("static_cache")
49
+ end
50
+
51
+ def permanent_page_cache_directory
52
+ cache_root.join("cache")
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module StaticCache
5
+ class VarnishHandler
6
+ attr_reader :varnish_url
7
+
8
+ def initialize(varnish_url)
9
+ @varnish_url = varnish_url
10
+ end
11
+
12
+ def cache_page(_controller, request, response)
13
+ response.set_header("X-Cache-Tags", "static")
14
+ request.session_options[:skip] = true
15
+ # controller.expires_in 1.hour, public: true
16
+ end
17
+
18
+ def cache_page_permanently(controller, request, response)
19
+ response.set_header("X-Cache-Tags", "permanent")
20
+ request.session_options[:skip] = true
21
+ controller.expires_in 1.year, public: true
22
+ end
23
+
24
+ def purge!
25
+ return unless PagesCore::CacheSweeper.enabled
26
+
27
+ hydra = Typhoeus::Hydra.hydra
28
+ hydra.queue(ban_request("static"))
29
+ hydra.queue(ban_request("permanent"))
30
+ hydra.run
31
+ end
32
+
33
+ def sweep!
34
+ return unless PagesCore::CacheSweeper.enabled
35
+
36
+ # PagesCore::SweepCacheJob.perform_later
37
+ sweep_now!
38
+ end
39
+
40
+ def sweep_now!
41
+ return unless PagesCore::CacheSweeper.enabled
42
+
43
+ ban_request("static").run
44
+ end
45
+
46
+ private
47
+
48
+ def ban_request(cache_tag)
49
+ Typhoeus::Request.new(varnish_url,
50
+ method: :ban,
51
+ headers: { "X-Cache-Tags": cache_tag })
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "pages_core/templates/block_configuration"
2
4
  require "pages_core/templates/configuration_proxy"
3
5
  require "pages_core/templates/configuration_handler"
@@ -16,8 +18,8 @@ module PagesCore
16
18
 
17
19
  def template_paths
18
20
  [
19
- PagesCore.plugin_root.join("app", "views", "pages", "templates"),
20
- Rails.root.join("app", "views", "pages", "templates")
21
+ PagesCore.plugin_root.join("app/views/pages/templates"),
22
+ Rails.root.join("app/views/pages/templates")
21
23
  ]
22
24
  end
23
25
 
@@ -28,7 +30,7 @@ module PagesCore
28
30
  .uniq
29
31
  .compact
30
32
  .sort
31
- .map { |f| f.gsub(/\.[\w\.]+$/, "") }
33
+ .map { |f| f.gsub(/\.[\w.]+$/, "") }
32
34
  end
33
35
 
34
36
  def template_files_in_dir(dir)
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  # Configuration for the blocks on an individual template
4
6
  class BlockConfiguration
5
7
  attr_reader :name, :title, :description, :optional, :enforced
8
+
6
9
  def small?
7
10
  @size == :small
8
11
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  # = Template configuration
@@ -96,7 +98,7 @@ module PagesCore
96
98
  enabled_blocks sub_template tags dates]
97
99
  end
98
100
 
99
- def configure_block(tpl_name, block_name, title = false, options = {})
101
+ def configure_block(tpl_name, block_name, title = nil, options = {})
100
102
  block_name = block_name.to_sym
101
103
  opts = {
102
104
  title: title || block_name.to_s.humanize,
@@ -115,6 +117,7 @@ module PagesCore
115
117
  unless valid_template_options.include?(setting)
116
118
  raise "Invalid template configuration value: #{setting.inspect}"
117
119
  end
120
+
118
121
  set(
119
122
  template_path(template_name),
120
123
  template_config(setting, value, options)
@@ -151,6 +154,7 @@ module PagesCore
151
154
 
152
155
  def template_path(name)
153
156
  return [:default] if name == :_defaults
157
+
154
158
  [:templates, name]
155
159
  end
156
160
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  class ConfigurationHandler
@@ -33,7 +35,7 @@ module PagesCore
33
35
 
34
36
  def proxy(proxy_block = nil, &callback)
35
37
  proxy_object = PagesCore::Templates::ConfigurationProxy.new(callback)
36
- proxy_block.call(proxy_object) if proxy_block
38
+ proxy_block&.call(proxy_object)
37
39
  proxy_object
38
40
  end
39
41
 
@@ -56,7 +58,7 @@ module PagesCore
56
58
  def get(*path)
57
59
  @configuration ||= {}
58
60
  path.inject(@configuration) do |value, key|
59
- value && value.is_a?(Hash) && value.key?(key) ? value[key] : nil
61
+ value.is_a?(Hash) && value&.key?(key) ? value[key] : nil
60
62
  end
61
63
  end
62
64
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  class ConfigurationProxy
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  module ControllerActions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  module Templates
3
5
  class TemplateConfiguration
@@ -7,7 +9,9 @@ module PagesCore
7
9
  def all_blocks
8
10
  (config.get(:default, :blocks).keys +
9
11
  all_templates.map { |t| configured_block_names(t) } +
10
- all_templates.map { |t| enabled_block_names(t) }).flatten.compact.uniq
12
+ all_templates.map do |t|
13
+ enabled_block_names(t)
14
+ end).flatten.compact.uniq
11
15
  end
12
16
 
13
17
  def all_templates
@@ -94,18 +98,19 @@ module PagesCore
94
98
 
95
99
  def default_block_options(block_name)
96
100
  {
97
- title: block_name.to_s.humanize,
101
+ title: block_name.to_s.humanize,
98
102
  optional: true,
99
- size: :small
103
+ size: :small
100
104
  }
101
105
  end
102
106
  end
103
107
 
104
108
  class << self
105
109
  def configure(options = {}, &_block)
106
- if options[:reset] == :defaults
110
+ case options[:reset]
111
+ when :defaults
107
112
  load_default_configuration
108
- elsif options[:reset] == true
113
+ when true
109
114
  @configuration = PagesCore::Templates::Configuration.new
110
115
  end
111
116
  yield configuration if block_given?
@@ -149,26 +154,26 @@ module PagesCore
149
154
 
150
155
  def default_blocks
151
156
  {
152
- name: { size: :field, class: "page_title" },
153
- body: { size: :large },
157
+ name: { size: :field, class: "page_title" },
158
+ body: { size: :large },
154
159
  headline: { size: :field },
155
- excerpt: {},
156
- boxout: {}
160
+ excerpt: {},
161
+ boxout: {}
157
162
  }.merge(default_meta_blocks)
158
163
  end
159
164
 
160
165
  def default_meta_blocks
161
166
  {
162
- meta_title: { size: :field },
163
- meta_description: { size: :small },
164
- open_graph_title: { size: :field },
167
+ meta_title: { size: :field },
168
+ meta_description: { size: :small },
169
+ open_graph_title: { size: :field },
165
170
  open_graph_description: { size: :small }
166
171
  }
167
172
  end
168
173
 
169
174
  def default_block_configuration(default)
170
175
  default.blocks do |block|
171
- default_blocks.keys.each do |name|
176
+ default_blocks.each_key do |name|
172
177
  block.send(
173
178
  name,
174
179
  template_block_localization("#{name}.name"),