pages_core 3.12.4 → 3.12.5

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/app/assets/builds/pages_core/admin-dist.js +8 -43
  4. data/app/assets/builds/pages_core/admin-dist.js.map +4 -4
  5. data/app/assets/builds/pages_core/admin.css +264 -133
  6. data/app/assets/stylesheets/pages_core/admin/components/attachments.css +3 -4
  7. data/app/assets/stylesheets/pages_core/admin/components/forms.css +17 -16
  8. data/app/assets/stylesheets/pages_core/admin/components/image_editor.css +8 -4
  9. data/app/assets/stylesheets/pages_core/admin/components/image_grid.css +1 -1
  10. data/app/assets/stylesheets/pages_core/admin/components/list_table.css +11 -3
  11. data/app/assets/stylesheets/pages_core/admin/components/modal.css +9 -5
  12. data/app/assets/stylesheets/pages_core/admin/components/page_tree.css +5 -1
  13. data/app/assets/stylesheets/pages_core/admin/components/toast.css +2 -2
  14. data/app/assets/stylesheets/pages_core/admin/controllers/pages.css +4 -2
  15. data/app/assets/stylesheets/pages_core/admin/vars.css +2 -1
  16. data/app/controllers/admin/calendars_controller.rb +2 -2
  17. data/app/controllers/admin/categories_controller.rb +3 -3
  18. data/app/controllers/admin/news_controller.rb +6 -6
  19. data/app/controllers/admin/pages_controller.rb +12 -11
  20. data/app/controllers/admin/users_controller.rb +1 -1
  21. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +15 -17
  22. data/app/controllers/pages_core/admin_controller.rb +2 -2
  23. data/app/controllers/pages_core/base_controller.rb +1 -8
  24. data/app/controllers/pages_core/frontend/pages_controller.rb +13 -5
  25. data/app/controllers/pages_core/frontend_controller.rb +12 -7
  26. data/app/helpers/admin/menu_helper.rb +2 -0
  27. data/app/helpers/admin/pages_helper.rb +1 -4
  28. data/app/helpers/pages_core/admin/admin_helper.rb +0 -1
  29. data/app/helpers/pages_core/admin/content_tabs_helper.rb +9 -2
  30. data/app/helpers/pages_core/application_helper.rb +2 -3
  31. data/app/helpers/pages_core/frontend_helper.rb +1 -1
  32. data/app/helpers/pages_core/head_tags_helper.rb +15 -46
  33. data/app/helpers/pages_core/images_helper.rb +76 -21
  34. data/app/helpers/pages_core/locales_helper.rb +9 -0
  35. data/app/helpers/pages_core/open_graph_tags_helper.rb +3 -5
  36. data/app/helpers/pages_core/page_path_helper.rb +1 -1
  37. data/app/javascript/components/Attachments/Attachment.tsx +55 -52
  38. data/app/javascript/components/Attachments/AttachmentEditor.tsx +45 -50
  39. data/app/javascript/components/Attachments/Placeholder.tsx +1 -2
  40. data/app/javascript/components/Attachments.jsx +69 -57
  41. data/app/javascript/components/DateRangeSelect.jsx +94 -54
  42. data/app/javascript/components/EditableImage.tsx +20 -16
  43. data/app/javascript/components/FileUploadButton.tsx +12 -12
  44. data/app/javascript/components/ImageCropper/FocalPoint.tsx +22 -20
  45. data/app/javascript/components/ImageCropper/Image.tsx +20 -16
  46. data/app/javascript/components/ImageCropper/Toolbar.tsx +35 -27
  47. data/app/javascript/components/ImageCropper/useCrop.ts +105 -91
  48. data/app/javascript/components/ImageCropper.tsx +34 -25
  49. data/app/javascript/components/ImageEditor/Form.tsx +32 -43
  50. data/app/javascript/components/ImageEditor.tsx +29 -21
  51. data/app/javascript/components/ImageGrid/DragElement.tsx +6 -4
  52. data/app/javascript/components/ImageGrid/GridImage.tsx +56 -52
  53. data/app/javascript/components/ImageGrid/Placeholder.tsx +1 -1
  54. data/app/javascript/components/ImageGrid.jsx +132 -101
  55. data/app/javascript/components/ImageUploader.tsx +59 -55
  56. data/app/javascript/components/Modal.tsx +2 -4
  57. data/app/javascript/components/PageDates.jsx +25 -20
  58. data/app/javascript/components/PageFiles.jsx +7 -5
  59. data/app/javascript/components/PageImages.tsx +9 -7
  60. data/app/javascript/components/PageTree/Draggable.tsx +46 -40
  61. data/app/javascript/components/PageTree/Node.tsx +111 -95
  62. data/app/javascript/components/PageTree/types.ts +9 -9
  63. data/app/javascript/components/PageTree.tsx +44 -29
  64. data/app/javascript/components/RichTextArea.jsx +51 -37
  65. data/app/javascript/components/RichTextToolbarButton.tsx +8 -5
  66. data/app/javascript/components/TagEditor/AddTagForm.tsx +11 -10
  67. data/app/javascript/components/TagEditor/Tag.tsx +10 -8
  68. data/app/javascript/components/TagEditor.tsx +15 -10
  69. data/app/javascript/components/Toast.tsx +3 -7
  70. data/app/javascript/components/drag/draggedOrder.ts +16 -15
  71. data/app/javascript/components/drag/types.ts +12 -12
  72. data/app/javascript/components/drag/useDragCollection.ts +36 -42
  73. data/app/javascript/components/drag/useDragUploader.ts +3 -2
  74. data/app/javascript/components/drag.ts +5 -4
  75. data/app/javascript/controllers/LoginController.ts +0 -1
  76. data/app/javascript/controllers/MainController.ts +6 -2
  77. data/app/javascript/controllers/PageOptionsController.js +7 -2
  78. data/app/javascript/features/RichText.tsx +9 -7
  79. data/app/javascript/index.ts +5 -3
  80. data/app/javascript/lib/Tree.ts +27 -24
  81. data/app/javascript/lib/copyToClipboard.ts +5 -4
  82. data/app/javascript/lib/readyHandler.ts +4 -4
  83. data/app/javascript/lib/request.ts +7 -3
  84. data/app/javascript/stores/useModalStore.ts +3 -3
  85. data/app/javascript/stores/useToastStore.ts +14 -12
  86. data/app/javascript/types.ts +22 -22
  87. data/app/models/concerns/pages_core/page_model/templateable.rb +1 -1
  88. data/app/views/admin/calendars/show.html.erb +1 -1
  89. data/app/views/admin/news/index.html.erb +1 -1
  90. data/app/views/admin/pages/_edit_files.html.erb +1 -1
  91. data/app/views/admin/pages/_edit_images.html.erb +1 -1
  92. data/app/views/admin/pages/_list_item.html.erb +1 -1
  93. data/app/views/admin/pages/_search_bar.html.erb +1 -1
  94. data/app/views/admin/pages/deleted.html.erb +2 -2
  95. data/app/views/admin/pages/edit.html.erb +3 -3
  96. data/app/views/admin/pages/index.html.erb +4 -4
  97. data/app/views/admin/pages/new.html.erb +1 -1
  98. data/app/views/admin/pages/search.html.erb +3 -3
  99. data/app/views/feeds/pages.rss.builder +2 -2
  100. data/app/views/layouts/admin/_page_header.html.erb +4 -4
  101. data/app/views/layouts/admin.html.erb +1 -2
  102. data/config/locales/en.yml +1 -0
  103. data/lib/pages_core/pages_plugin.rb +5 -3
  104. data/lib/rails/generators/pages_core/frontend/templates/application.html.erb +15 -13
  105. data/lib/tasks/pages/reports.rake +26 -0
  106. metadata +32 -4
  107. data/app/helpers/pages_core/admin/deprecated_admin_helper.rb +0 -40
  108. data/app/views/pages_core/_google_analytics.html.erb +0 -8
@@ -2,7 +2,7 @@
2
2
 
3
3
  <% content_for :page_description do %>
4
4
  All pages /
5
- <%= link_to("Deleted pages", deleted_admin_pages_path(@locale)) %>
5
+ <%= link_to("Deleted pages", deleted_admin_pages_path(content_locale)) %>
6
6
  <% end %>
7
7
 
8
8
  <% content_for :page_description_links do %>
@@ -13,12 +13,12 @@
13
13
  locals: { query: search_query }) %>
14
14
 
15
15
  <div class="content">
16
- <% cache Page.visible.roots.to_a + [current_user, @locale] do %>
16
+ <% cache Page.visible.roots.to_a + [current_user, content_locale] do %>
17
17
  <%= react_component(
18
18
  "PageTree", {
19
19
  pages: @pages.map { |p| page_json(p) },
20
- locale: @locale,
21
- dir: locale_direction(@locale),
20
+ locale: content_locale,
21
+ dir: locale_direction(content_locale),
22
22
  permissions: [(:create if policy(Page).create?)] }
23
23
  ) %>
24
24
  <% end %>
@@ -9,7 +9,7 @@
9
9
 
10
10
  <% content_for :main_wrapper do %>
11
11
  <%= form_for(@page,
12
- url: admin_pages_url(@locale),
12
+ url: admin_pages_url(content_locale),
13
13
  builder: PagesCore::Admin::FormBuilder,
14
14
  html: {
15
15
  class: "edit-page main-wrapper",
@@ -11,7 +11,7 @@
11
11
  <%= render(partial: "admin/pages/search_bar",
12
12
  locals: { query: search_query }) %>
13
13
 
14
- <% if @search_documents.any? %>
14
+ <% if @search_documents&.any? %>
15
15
  <table class="list calendar-item-list">
16
16
  <tr>
17
17
  <th>Name</th>
@@ -24,7 +24,7 @@
24
24
  <td class="name">
25
25
  <%= link_to_if(policy(page).edit?,
26
26
  page_name(page),
27
- edit_admin_page_url(@locale, page),
27
+ edit_admin_page_url(content_locale, page),
28
28
  class: 'name_link') %>
29
29
  <%= autopublish_notice(page) %>
30
30
  </td>
@@ -45,7 +45,7 @@
45
45
  <% end %>
46
46
  </table>
47
47
  <%= will_paginate(@search_documents, renderer: PagesCore::LinkRenderer) %>
48
- <% else %>
48
+ <% elsif @search_documents %>
49
49
  <div class="content">
50
50
  <p>
51
51
  Found no results for your search query.
@@ -12,11 +12,11 @@ xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
12
12
  @items.each do |item|
13
13
  xml.item do
14
14
  xml.title { xml.cdata! item.name.to_s }
15
- xml.link page_url(@locale, item, only_path: false)
15
+ xml.link page_url(content_locale, item, only_path: false)
16
16
  xml.description do
17
17
  xml.cdata! item.excerpt.to_html + item.body.to_html
18
18
  end
19
- xml.guid page_url(@locale, item, only_path: false)
19
+ xml.guid page_url(content_locale, item, only_path: false)
20
20
  xml.pubDate item.published_at.to_fs(:rfc822)
21
21
  xml.tag!("dc:creator", item.author.name)
22
22
  if item.image
@@ -1,5 +1,5 @@
1
- <% if content_for?(:page_description) || @content_tabs %>
2
- <div class="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
1
+ <% if content_for?(:page_description) || content_tabs? %>
2
+ <div class="page-description"<% if content_tabs? %> class="with_content_tabs"<% end %>>
3
3
  <% if content_for?(:page_description_links) %>
4
4
  <div class="links">
5
5
  <%= content_for(:page_description_links) %>
@@ -8,10 +8,10 @@
8
8
  <h3>
9
9
  <%= content_for(:page_description) || content_for(:page_title) %>
10
10
  </h3>
11
- <% if @content_tabs %>
11
+ <% if content_tabs? %>
12
12
  <ul class="content-tabs"
13
13
  role="tablist">
14
- <% @content_tabs.map do |t| %>
14
+ <% content_tabs.map do |t| %>
15
15
  <li id="content-tab-link-<%= t[:key] %>"
16
16
  data-tab="<%= t[:key] %>"
17
17
  data-main-target="link">
@@ -31,13 +31,12 @@
31
31
  <%= csrf_meta_tag %>
32
32
  <meta name="viewport"
33
33
  content="width=device-width, initial-scale=1, user-scalable=no">
34
- <%= google_analytics_tags "UA-5468672-21" %>
35
34
  </head>
36
35
 
37
36
  <body class="<%= content_for(:body_class) %>"
38
37
  data-controller="<%= controller.class.to_s %>"
39
38
  data-action="<%= controller.action_name %>"
40
- data-locale="<%= @locale %>">
39
+ data-locale="<%= content_locale %>">
41
40
 
42
41
  <div class="wrapper">
43
42
  <%= render partial: "layouts/admin/header" %>
@@ -34,6 +34,7 @@ en:
34
34
  invalid_request: Invalid password reset request
35
35
  not_found: Couldn't find a user with that email address
36
36
  sent: An email with further instructions has been sent
37
+ problems_saving: There were problems saving your changes
37
38
  templates:
38
39
  default:
39
40
  blocks:
@@ -15,15 +15,17 @@ module PagesCore
15
15
 
16
16
  paths["db/migrate"] = "db/migrate"
17
17
 
18
- admin_menu_item "News", proc { admin_news_index_path(@locale) }, :pages,
18
+ admin_menu_item "News", proc { admin_news_index_path(content_locale) },
19
+ :pages,
19
20
  if: proc { Page.news_pages.any? },
20
21
  current: proc { @page && @page.parent.try(&:news_page?) }
21
22
 
22
- admin_menu_item "Calendar", proc { admin_calendar_path(@locale) }, :pages,
23
+ admin_menu_item "Calendar", proc { admin_calendar_path(content_locale) },
24
+ :pages,
23
25
  if: proc { Page.with_dates.any? },
24
26
  current: proc { @page && @page.starts_at? }
25
27
 
26
- admin_menu_item "Pages", proc { admin_pages_path(@locale) }, :pages
28
+ admin_menu_item "Pages", proc { admin_pages_path(content_locale) }, :pages
27
29
 
28
30
  admin_menu_item "Users", proc { admin_users_path }, :account
29
31
  end
@@ -1,14 +1,16 @@
1
- <%= head_tag do %>
2
- <%# default_meta_image "/images/facebook-share.png" %>
3
- <%= stylesheet_link_tag "application" %>
4
- <%= javascript_include_tag "application" %>
5
- <%= feed_tags %>
6
- <meta name="viewport" content="width=device-width, initial-scale=1">
7
- <% end %>
8
- <body>
9
- <% if Rails.env.development? %>
10
- <div class="grid-overlay"></div>
1
+ <!doctype html>
2
+ <%= tag.html(lang: locale) do %>
3
+ <%= head_tag do %>
4
+ <%# default_meta_image "/images/facebook-share.png" %>
5
+ <%= stylesheet_link_tag "application" %>
6
+ <%= javascript_include_tag "application" %>
7
+ <%= feed_tags %>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
11
9
  <% end %>
12
- <%= yield %>
13
- </body>
14
- </html>
10
+ <body>
11
+ <% if Rails.env.development? %>
12
+ <div class="grid-overlay"></div>
13
+ <% end %>
14
+ <%= yield %>
15
+ </body>
16
+ <% end %>
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tty-table"
4
+
5
+ namespace :pages do
6
+ namespace :reports do
7
+ desc "Template usage report"
8
+ task templates: :environment do
9
+ pastel = Pastel.new
10
+ files = PagesCore::Templates.names
11
+ rows = (Page.pluck(:template).to_a + files).uniq.sort.map do |t|
12
+ [t,
13
+ Page.published.where(template: t).count,
14
+ Page.where(template: t).count,
15
+ files.include?(t) ? pastel.green("Yes") : pastel.red("No")]
16
+ end
17
+
18
+ table = TTY::Table.new(
19
+ %w[Name Published Total File],
20
+ rows
21
+ )
22
+ puts table.render(:unicode, padding: [0, 1, 0, 1])
23
+ puts " Total: #{rows.length} templates"
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pages_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.12.4
4
+ version: 3.12.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-05 00:00:00.000000000 Z
11
+ date: 2023-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pastel
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: pg_search
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,20 @@ dependencies:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
208
  version: 4.3.2
209
+ - !ruby/object:Gem::Dependency
210
+ name: tty-table
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
195
223
  - !ruby/object:Gem::Dependency
196
224
  name: typhoeus
197
225
  requirement: !ruby/object:Gem::Requirement
@@ -444,7 +472,6 @@ files:
444
472
  - app/helpers/pages_core/admin/admin_helper.rb
445
473
  - app/helpers/pages_core/admin/content_tabs_helper.rb
446
474
  - app/helpers/pages_core/admin/date_range_helper.rb
447
- - app/helpers/pages_core/admin/deprecated_admin_helper.rb
448
475
  - app/helpers/pages_core/admin/form_builder.rb
449
476
  - app/helpers/pages_core/admin/image_uploads_helper.rb
450
477
  - app/helpers/pages_core/admin/labelled_field_helper.rb
@@ -460,6 +487,7 @@ files:
460
487
  - app/helpers/pages_core/head_tags_helper.rb
461
488
  - app/helpers/pages_core/images_helper.rb
462
489
  - app/helpers/pages_core/labelled_form_builder.rb
490
+ - app/helpers/pages_core/locales_helper.rb
463
491
  - app/helpers/pages_core/meta_tags_helper.rb
464
492
  - app/helpers/pages_core/open_graph_tags_helper.rb
465
493
  - app/helpers/pages_core/page_path_helper.rb
@@ -621,7 +649,6 @@ files:
621
649
  - app/views/layouts/admin/_header.html.erb
622
650
  - app/views/layouts/admin/_page_header.html.erb
623
651
  - app/views/layouts/errors.html.erb
624
- - app/views/pages_core/_google_analytics.html.erb
625
652
  - app/views/sitemaps/show.xml.builder
626
653
  - config/locales/en.yml
627
654
  - config/routes.rb
@@ -695,6 +722,7 @@ files:
695
722
  - lib/tasks/pages/cache.rake
696
723
  - lib/tasks/pages/export.rake
697
724
  - lib/tasks/pages/page_paths.rake
725
+ - lib/tasks/pages/reports.rake
698
726
  - template.rb
699
727
  homepage: ''
700
728
  licenses: []
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module PagesCore
4
- module Admin
5
- module DeprecatedAdminHelper
6
- def link_separator
7
- ActiveSupport::Deprecation.warn("link_separator is deprecated")
8
-
9
- safe_join [" ", tag.span("|", class: "separator"), " "]
10
- end
11
-
12
- def page_description=(description)
13
- ActiveSupport::Deprecation.warn(content_helper_deprecation)
14
- content_for(:page_description, description.html_safe)
15
- end
16
- alias page_description page_description=
17
-
18
- def page_description_links=(links)
19
- ActiveSupport::Deprecation.warn(content_helper_deprecation)
20
- content_for(:page_description_links, links.html_safe)
21
- end
22
- alias page_description_links page_description_links=
23
-
24
- def page_title=(title)
25
- ActiveSupport::Deprecation.warn(content_helper_deprecation)
26
- content_for(:page_title, title)
27
- end
28
- alias page_title page_title=
29
-
30
- private
31
-
32
- def content_helper_deprecation
33
- name = caller_locations(1, 1)[0].label
34
- replacement = name.gsub(/=$/, "")
35
-
36
- "The #{name} helper is deprecated, use content_for(:#{replacement})"
37
- end
38
- end
39
- end
40
- end
@@ -1,8 +0,0 @@
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>