pages_core 3.6.2 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
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
data/app/models/tag.rb CHANGED
@@ -1,4 +1,6 @@
1
- class Tag < ActiveRecord::Base
1
+ # frozen_string_literal: true
2
+
3
+ class Tag < ApplicationRecord
2
4
  include PagesCore::HumanizableParam
3
5
  has_many :taggings, dependent: :destroy
4
6
 
@@ -11,6 +13,7 @@ class Tag < ActiveRecord::Base
11
13
  tags = (taggable.tags.sorted + pinned.sorted).uniq
12
14
 
13
15
  return tags unless tags.count < limit
16
+
14
17
  tags + suggestions(taggable, tags, limit)[0...(limit - tags.length)]
15
18
  end
16
19
 
@@ -26,14 +29,13 @@ class Tag < ActiveRecord::Base
26
29
 
27
30
  def suggestions(taggable, tags, limit)
28
31
  suggestions = taggable_suggestions(taggable, limit).to_a
29
- if suggestions.length < limit
30
- suggestions += all_suggestions(limit)
31
- end
32
- suggestions.reject { |t| tags.include?(t) }.uniq[0...(limit)]
32
+ suggestions += all_suggestions(limit) if suggestions.length < limit
33
+ suggestions.reject { |t| tags.include?(t) }.uniq[0...limit]
33
34
  end
34
35
 
35
36
  def taggable_suggestions(taggable, limit)
36
- all_suggestions(limit).where("taggings.taggable_type = ?", taggable.class)
37
+ all_suggestions(limit)
38
+ .where(taggings: { taggable_type: taggable.class.to_s })
37
39
  end
38
40
 
39
41
  def all_suggestions(limit)
@@ -1,6 +1,8 @@
1
- class Tagging < ActiveRecord::Base
1
+ # frozen_string_literal: true
2
+
3
+ class Tagging < ApplicationRecord
2
4
  belongs_to :tag
3
- belongs_to :taggable, polymorphic: true
5
+ belongs_to :taggable, polymorphic: true, touch: true
4
6
 
5
7
  validates :taggable_id, presence: true
6
8
  validates :taggable_type, presence: true
data/app/models/user.rb CHANGED
@@ -1,4 +1,6 @@
1
- class User < ActiveRecord::Base
1
+ # frozen_string_literal: true
2
+
3
+ class User < ApplicationRecord
2
4
  include PagesCore::HasRoles
3
5
 
4
6
  attr_accessor :password, :confirm_password
@@ -21,9 +23,7 @@ class User < ActiveRecord::Base
21
23
 
22
24
  serialize :persistent_data
23
25
 
24
- validates :username,
25
- presence: true,
26
- uniqueness: { case_sensitive: false }
26
+ validates :username, presence: true, uniqueness: { case_sensitive: false }
27
27
 
28
28
  validates :name, presence: true
29
29
 
@@ -63,6 +63,7 @@ class User < ActiveRecord::Base
63
63
 
64
64
  def authenticate!(password)
65
65
  return false unless can_login? && valid_password?(password)
66
+
66
67
  rehash_password!(password) if password_needs_rehash?
67
68
  true
68
69
  end
@@ -73,6 +74,7 @@ class User < ActiveRecord::Base
73
74
 
74
75
  def mark_active!
75
76
  return if last_login_at && last_login_at > 10.minutes.ago
77
+
76
78
  update(last_login_at: Time.now.utc)
77
79
  end
78
80
 
@@ -92,6 +94,7 @@ class User < ActiveRecord::Base
92
94
 
93
95
  def confirm_password_must_match
94
96
  return if password.blank? || password == confirm_password
97
+
95
98
  errors.add(:confirm_password, "does not match")
96
99
  end
97
100
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class InvitePolicy < Policy
2
4
  def index?
3
5
  true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageFilePolicy < Policy
2
4
  def index?
3
5
  true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageImagePolicy < Policy
2
4
  def index?
3
5
  true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PagePolicy < Policy
2
4
  def index?
3
5
  true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Policy
2
4
  module DefaultPolicy
3
5
  def index
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UserPolicy < Policy
2
4
  def index?
3
5
  true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class AttachmentSerializer < ActiveModel::Serializer
3
5
  include Rails.application.routes.url_helpers
@@ -21,8 +23,8 @@ module Admin
21
23
  private
22
24
 
23
25
  def localized_attribute(attr)
24
- object.locales.each_with_object({}) do |locale, hash|
25
- hash[locale] = object.localize(locale).send(attr)
26
+ object.locales.index_with do |locale|
27
+ object.localize(locale).send(attr)
26
28
  end
27
29
  end
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class ImageSerializer < ActiveModel::Serializer
3
5
  include Rails.application.routes.url_helpers
@@ -49,8 +51,8 @@ module Admin
49
51
  private
50
52
 
51
53
  def localized_attribute(attr)
52
- object.locales.each_with_object({}) do |locale, hash|
53
- hash[locale] = object.localize(locale).send(attr)
54
+ object.locales.index_with do |locale|
55
+ object.localize(locale).send(attr)
54
56
  end
55
57
  end
56
58
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class PageFileSerializer < ActiveModel::Serializer
3
5
  attributes :id, :page_id, :attachment_id, :position
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Admin
2
4
  class PageImageSerializer < ActiveModel::Serializer
3
5
  attributes :id, :page_id, :image_id, :position, :primary
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageExportSerializer < ActiveModel::Serializer
2
4
  attributes :id, :path, :locale, :author_name, :status
3
5
  attributes(*PagesCore::Templates::TemplateConfiguration.all_blocks)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageFileExportSerializer < ActiveModel::Serializer
2
4
  attributes :id, :filename, :name, :description, :content_hash, :content_type,
3
5
  :position, :created_at
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageImageExportSerializer < ActiveModel::Serializer
2
4
  attributes :id, :primary, :content_hash, :content_type, :filename,
3
5
  :alternative, :caption, :created_at
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageImageSerializer < ActiveModel::Serializer
2
4
  include Rails.application.routes.url_helpers
3
5
  include DynamicImage::Helper
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PageSerializer < ActiveModel::Serializer
2
4
  attributes :id, :param, :parent_page_id, :locale
3
5
  attributes(*PagesCore::Templates::TemplateConfiguration.all_blocks)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  class CreateUserService
3
5
  attr_reader :attributes, :invite
@@ -8,8 +10,8 @@ module PagesCore
8
10
  end
9
11
 
10
12
  class << self
11
- def call(*attrs)
12
- new(*attrs).call
13
+ def call(attrs, invite: nil)
14
+ new(attrs, invite: invite).call
13
15
  end
14
16
  end
15
17
 
@@ -28,6 +30,7 @@ module PagesCore
28
30
 
29
31
  def invite_attributes
30
32
  return {} unless invite
33
+
31
34
  { role_names: invite.role_names,
32
35
  creator: invite.user,
33
36
  activated: true }
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ class DestroyInviteService
5
+ attr_reader :invite
6
+
7
+ def initialize(invite:)
8
+ @invite = invite
9
+ end
10
+
11
+ class << self
12
+ def call(*attrs)
13
+ new(*attrs).call
14
+ end
15
+ end
16
+
17
+ def call
18
+ Invite.transaction do
19
+ invite.destroy
20
+ PagesCore::PubSub.publish(:destroy_invite, invite: invite)
21
+ invite
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PagesCore
2
4
  class InviteService
3
5
  include Rails.application.routes.url_helpers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  json.extract!(
2
4
  @image, :id, :filename, :content_type, :content_hash,
3
5
  :content_length, :colorspace, :real_width, :real_height, :crop_width,
@@ -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>
@@ -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
@@ -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
@@ -97,11 +101,7 @@ Rails.application.routes.draw do
97
101
  as: "admin_default")
98
102
 
99
103
  # Errors
100
- resources :errors do
101
- collection do
102
- post "report"
103
- end
104
- end
104
+ resources :errors
105
105
 
106
106
  # Page path routing
107
107
  get ":locale/*path/page/:page" => "pages#show",
@@ -1,275 +1,196 @@
1
- class CreatePagesTables < ActiveRecord::Migration[4.2]
2
- def change
3
- create_table "accounts" do |t|
4
- t.string "name"
5
- t.string "plan"
6
- t.string "key"
7
- t.text "billing_address"
8
- t.integer "account_holder_id"
9
- t.datetime "created_at"
10
- t.datetime "updated_at"
11
- t.datetime "last_billed_at"
12
- t.boolean "is_activated", default: true, null: false
13
- t.string "domain"
14
- end
15
-
16
- create_table "binaries" do |t|
17
- t.string "sha1_hash"
18
- end
19
-
20
- create_table "categories" do |t|
21
- t.string "name"
22
- t.string "slug"
23
- t.integer "position"
24
- t.datetime "created_at", null: false
25
- t.datetime "updated_at", null: false
26
- end
27
-
28
- add_index "categories", ["slug"]
29
-
30
- create_table "delayed_jobs" do |t|
31
- t.integer "priority", default: 0
32
- t.integer "attempts", default: 0
33
- t.text "handler"
34
- t.string "last_error"
35
- t.datetime "run_at"
36
- t.datetime "locked_at"
37
- t.datetime "failed_at"
38
- t.string "locked_by"
39
- t.datetime "created_at", null: false
40
- t.datetime "updated_at", null: false
41
- end
42
-
43
- create_table "feed_items" do |t|
44
- t.integer "feed_id"
45
- t.string "guid"
46
- t.string "title"
47
- t.string "link"
48
- t.text "description"
49
- t.datetime "pubdate"
50
- t.string "author"
51
- end
52
-
53
- add_index "feed_items", ["feed_id"]
54
-
55
- create_table "feeds" do |t|
56
- t.string "url"
57
- t.string "link"
58
- t.string "title"
59
- t.text "description"
60
- t.datetime "refreshed_at"
61
- end
62
-
63
- add_index "feeds", ["url"]
64
-
65
- create_table "images" do |t|
66
- t.string "name"
67
- t.string "byline"
68
- t.text "description"
69
- t.string "filename"
70
- t.string "content_type"
71
- t.integer "folder"
72
- t.integer "user_id"
73
- t.datetime "created_at"
74
- t.text "filters"
75
- t.string "original_size"
76
- t.string "hotspot"
77
- t.integer "binary_id"
78
- t.string "url"
79
- t.boolean "cropped", default: false, null: false
80
- t.string "crop_start"
81
- t.string "crop_size"
82
- t.integer "original_binary_id"
83
- t.datetime "updated_at"
84
- end
85
-
86
- create_table "images_imagesets" do |t|
87
- t.integer "relation_id"
88
- t.integer "imageset_id"
89
- t.integer "image_id"
90
- t.integer "position"
91
- end
92
-
93
- create_table "imagesets" do |t|
94
- t.string "name"
95
- t.text "description"
96
- t.datetime "created_at"
97
- t.integer "user_id"
98
- end
99
-
100
- create_table "mail_subscribers" do |t|
101
- t.string "email"
102
- t.datetime "created_at"
103
- t.string "group", default: "Default"
104
- end
105
-
106
- create_table "mailings" do |t|
107
- t.string "recipients"
108
- t.string "sender"
109
- t.string "subject"
110
- t.text "body"
111
- t.datetime "created_at"
112
- t.boolean "failed", default: false
113
- t.string "content_type"
114
- t.boolean "in_progress", default: false, null: false
115
- end
116
-
117
- create_table "mailouts" do |t|
118
- t.string "subject"
119
- t.string "sender"
120
- t.string "template"
121
- t.text "body"
122
- t.datetime "created_at"
123
- t.datetime "updated_at"
124
- t.integer "image_id"
125
- t.text "groups"
126
- t.string "host"
127
- end
128
-
129
- create_table "page_comments" do |t|
130
- t.integer "page_id"
131
- t.string "remote_ip"
132
- t.string "name"
133
- t.string "email"
134
- t.string "url"
135
- t.text "body"
136
- t.datetime "created_at"
137
- t.datetime "updated_at"
138
- end
139
-
140
- create_table "page_files" do |t|
141
- t.integer "page_id"
142
- t.integer "position"
143
- t.string "name"
144
- t.string "filename"
145
- t.string "content_type"
146
- t.integer "filesize"
147
- t.integer "binary_id"
148
- t.datetime "created_at"
149
- t.datetime "updated_at"
150
- end
151
-
152
- create_table "page_images" do |t|
153
- t.integer "page_id"
154
- t.integer "image_id"
155
- t.integer "position"
156
- t.boolean "primary", default: false, null: false
157
- end
158
-
159
- add_index "page_images", %w[page_id primary]
160
- add_index "page_images", ["page_id"]
161
-
162
- create_table "pages" do |t|
163
- t.integer "parent_page_id"
164
- t.integer "position"
165
- t.string "byline"
166
- t.string "template"
167
- t.datetime "created_at"
168
- t.datetime "updated_at"
169
- t.integer "user_id"
170
- t.integer "status", default: 0, null: false
171
- t.string "content_order"
172
- t.boolean "feed_enabled", default: false, null: false
173
- t.datetime "published_at"
174
- t.text "redirect_to"
175
- t.integer "image_id"
176
- t.boolean "comments_allowed", default: true, null: false
177
- t.string "image_link"
178
- t.boolean "news_page", default: false, null: false
179
- t.boolean "autopublish", default: false, null: false
180
- t.string "unique_name"
181
- t.integer "comments_count", default: 0, null: false
182
- t.datetime "last_comment_at"
183
- t.boolean "pinned", default: false, null: false
184
- end
185
-
186
- add_index "pages", ["parent_page_id"]
187
- add_index "pages", ["position"]
188
- add_index "pages", %w[status parent_page_id position]
189
- add_index "pages", ["status"]
190
- add_index "pages", ["user_id"]
191
-
192
- create_table "pages_categories", id: false do |t|
193
- t.integer "page_id"
194
- t.integer "category_id"
195
- end
196
-
197
- add_index "pages_categories", ["category_id"]
198
- add_index "pages_categories", ["page_id"]
199
-
200
- create_table "partials" do |t|
201
- t.string "name"
202
- t.datetime "created_at"
203
- t.datetime "updated_at"
204
- end
1
+ # frozen_string_literal: true
205
2
 
206
- create_table "sessions" do |t|
207
- t.string "session_id"
208
- t.text "data"
209
- t.datetime "updated_at"
210
- end
211
-
212
- add_index "sessions", ["session_id"]
213
- add_index "sessions", ["updated_at"]
214
-
215
- create_table "sms_subscribers" do |t|
216
- t.string "msisdn"
217
- t.string "group", default: "Default"
218
- t.datetime "created_at"
219
- t.datetime "updated_at"
220
- end
221
-
222
- create_table "taggings" do |t|
223
- t.integer "tag_id"
224
- t.integer "taggable_id"
225
- t.string "taggable_type"
226
- end
227
-
228
- add_index "taggings", ["tag_id"]
229
- add_index "taggings", %w[taggable_type taggable_id]
230
-
231
- create_table "tags" do |t|
232
- t.string "name"
233
- end
234
-
235
- add_index "tags", ["name"]
236
-
237
- create_table "textbits" do |t|
238
- t.integer "textable_id"
239
- t.string "textable_type"
240
- t.string "name"
241
- t.string "language"
242
- t.string "filter"
243
- t.text "body"
244
- t.datetime "created_at"
245
- t.datetime "updated_at"
246
- t.index(%w[textable_id textable_type name language],
247
- unique: true,
248
- name: "index_textbits_on_locale")
249
- t.index %w[textable_id textable_type]
250
- end
251
-
252
- create_table "users" do |t|
253
- t.string "username"
254
- t.string "hashed_password"
255
- t.string "realname"
256
- t.string "email"
257
- t.datetime "last_login_at"
258
- t.integer "created_by"
259
- t.datetime "created_at"
260
- t.boolean "is_admin"
261
- t.text "persistent_data"
262
- t.boolean "sms_sender"
263
- t.boolean "is_activated", default: false, null: false
264
- t.boolean "is_deleted", default: false, null: false
265
- t.string "token"
266
- t.date "born_on"
267
- t.string "mobile"
268
- t.string "web_link"
269
- t.integer "image_id"
270
- t.boolean "is_reviewer", default: false, null: false
271
- t.boolean "is_super_admin", default: false, null: false
272
- t.string "openid_url"
3
+ class CreatePagesTables < ActiveRecord::Migration[5.0]
4
+ def change
5
+ create_table :attachments do |t|
6
+ t.string :filename, null: false
7
+ t.string :content_type, null: false
8
+ t.integer :content_length, null: false
9
+ t.datetime :created_at
10
+ t.datetime :updated_at
11
+ t.string :content_hash, null: false
12
+ t.integer :user_id
13
+ end
14
+
15
+ create_table :categories do |t|
16
+ t.string :name
17
+ t.string :slug
18
+ t.integer :position
19
+ t.datetime :created_at, null: false
20
+ t.datetime :updated_at, null: false
21
+ t.index :slug
22
+ end
23
+
24
+ create_table :delayed_jobs do |t|
25
+ t.integer :priority, default: 0
26
+ t.integer :attempts, default: 0
27
+ t.text :handler
28
+ t.text :last_error
29
+ t.datetime :run_at
30
+ t.datetime :locked_at
31
+ t.datetime :failed_at
32
+ t.string :locked_by
33
+ t.datetime :created_at, null: false
34
+ t.datetime :updated_at, null: false
35
+ t.string :queue
36
+ end
37
+
38
+ create_table :images do |t|
39
+ t.string :filename, null: false
40
+ t.string :content_type, null: false
41
+ t.datetime :created_at
42
+ t.datetime :updated_at
43
+ t.string :content_hash, null: false
44
+ t.integer :content_length, null: false
45
+ t.string :colorspace, null: false
46
+ t.integer :real_width, null: false
47
+ t.integer :real_height, null: false
48
+ t.integer :crop_width
49
+ t.integer :crop_height
50
+ t.integer :crop_start_x
51
+ t.integer :crop_start_y
52
+ t.integer :crop_gravity_x
53
+ t.integer :crop_gravity_y
54
+ end
55
+
56
+ create_table :invite_roles do |t|
57
+ t.integer :invite_id
58
+ t.string :name
59
+ t.datetime :created_at
60
+ t.datetime :updated_at
61
+ end
62
+
63
+ create_table :invites do |t|
64
+ t.integer :user_id
65
+ t.string :email
66
+ t.string :token
67
+ t.datetime :sent_at
68
+ t.datetime :created_at
69
+ t.datetime :updated_at
70
+ end
71
+
72
+ create_table :localizations do |t|
73
+ t.integer :localizable_id
74
+ t.string :localizable_type
75
+ t.string :name
76
+ t.string :locale
77
+ t.text :value
78
+ t.datetime :created_at
79
+ t.datetime :updated_at
80
+ t.index %i[localizable_id localizable_type name locale],
81
+ name: :index_textbits_on_locale,
82
+ unique: true
83
+ t.index %i[localizable_id localizable_type]
84
+ end
85
+
86
+ create_table :page_categories do |t|
87
+ t.integer :page_id
88
+ t.integer :category_id
89
+ t.index :category_id
90
+ t.index :page_id
91
+ end
92
+
93
+ create_table :page_files, force: :cascade do |t|
94
+ t.bigint :page_id
95
+ t.bigint :attachment_id
96
+ t.integer :position
97
+ t.datetime :created_at, null: false
98
+ t.datetime :updated_at, null: false
99
+ t.index :attachment_id
100
+ t.index :page_id
101
+ end
102
+
103
+ create_table :page_images do |t|
104
+ t.integer :page_id
105
+ t.integer :image_id
106
+ t.integer :position
107
+ t.boolean :primary, default: false, null: false
108
+ t.index %i[page_id primary]
109
+ t.index :page_id
110
+ end
111
+
112
+ create_table :page_paths do |t|
113
+ t.integer :page_id
114
+ t.string :locale
115
+ t.string :path
116
+ t.datetime :created_at, null: false
117
+ t.datetime :updated_at, null: false
118
+ t.index %i[locale path], unique: true
119
+ end
120
+
121
+ create_table :pages do |t|
122
+ t.integer :parent_page_id
123
+ t.integer :position
124
+ t.string :byline
125
+ t.string :template
126
+ t.datetime :created_at
127
+ t.datetime :updated_at
128
+ t.integer :user_id
129
+ t.integer :status, default: 0, null: false
130
+ t.boolean :feed_enabled, default: false, null: false
131
+ t.datetime :published_at
132
+ t.string :redirect_to
133
+ t.integer :image_id
134
+ t.string :image_link
135
+ t.boolean :news_page, default: false, null: false
136
+ t.boolean :autopublish, default: false, null: false
137
+ t.string :unique_name
138
+ t.datetime :last_comment_at
139
+ t.boolean :pinned, default: false, null: false
140
+ t.integer :meta_image_id
141
+ t.datetime :starts_at
142
+ t.datetime :ends_at
143
+ t.boolean :all_day, default: false, null: false
144
+ t.index :ends_at
145
+ t.index :parent_page_id
146
+ t.index :position
147
+ t.index :starts_at
148
+ t.index %i[status parent_page_id position]
149
+ t.index :status
150
+ t.index :user_id
151
+ end
152
+
153
+ create_table :password_reset_tokens do |t|
154
+ t.integer :user_id
155
+ t.string :token
156
+ t.datetime :expires_at
157
+ t.datetime :created_at
158
+ t.datetime :updated_at
159
+ end
160
+
161
+ create_table :roles do |t|
162
+ t.integer :user_id
163
+ t.string :name
164
+ t.datetime :created_at
165
+ t.datetime :updated_at
166
+ t.index :user_id
167
+ end
168
+
169
+ create_table :taggings do |t|
170
+ t.integer :tag_id
171
+ t.integer :taggable_id
172
+ t.string :taggable_type
173
+ t.index :tag_id
174
+ t.index %i[taggable_type taggable_id]
175
+ end
176
+
177
+ create_table :tags do |t|
178
+ t.string :name
179
+ t.boolean :pinned, default: false, null: false
180
+ t.index :name
181
+ end
182
+
183
+ create_table :users do |t|
184
+ t.string :username
185
+ t.string :hashed_password
186
+ t.string :name
187
+ t.string :email
188
+ t.datetime :last_login_at
189
+ t.integer :created_by
190
+ t.datetime :created_at
191
+ t.text :persistent_data
192
+ t.boolean :activated, default: false, null: false
193
+ t.integer :image_id
273
194
  end
274
195
  end
275
196
  end