pageflow 15.8.0 → 16.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +183 -103
  3. data/README.md +0 -1
  4. data/Rakefile +1 -1
  5. data/admins/pageflow/accounts.rb +12 -16
  6. data/admins/pageflow/entry.rb +28 -26
  7. data/admins/pageflow/entry_templates.rb +5 -7
  8. data/admins/pageflow/sites.rb +53 -0
  9. data/app/assets/javascripts/pageflow/admin/entries.js +16 -7
  10. data/app/assets/javascripts/pageflow/dist/ui.js +298 -72
  11. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +10 -0
  12. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +6 -1
  13. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -0
  14. data/app/assets/stylesheets/pageflow/editor/help.scss +3 -3
  15. data/app/assets/stylesheets/pageflow/editor/info_box.scss +7 -0
  16. data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +0 -5
  17. data/app/assets/stylesheets/pageflow/ui/forms.scss +1 -1
  18. data/app/controllers/pageflow/chapters_controller.rb +2 -2
  19. data/app/controllers/pageflow/editor/files_controller.rb +1 -1
  20. data/app/controllers/pageflow/entries_controller.rb +12 -2
  21. data/app/controllers/pageflow/feeds_controller.rb +18 -0
  22. data/app/controllers/pageflow/pages_controller.rb +2 -2
  23. data/app/controllers/pageflow/sitemaps_controller.rb +15 -0
  24. data/app/controllers/pageflow/storylines_controller.rb +2 -2
  25. data/app/helpers/pageflow/common_entry_seed_helper.rb +1 -1
  26. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  27. data/app/helpers/pageflow/entries_helper.rb +16 -15
  28. data/app/helpers/pageflow/feeds_helper.rb +66 -0
  29. data/app/helpers/pageflow/page_types_helper.rb +9 -9
  30. data/app/helpers/pageflow/sites_helper.rb +11 -0
  31. data/app/helpers/pageflow/social_share_helper.rb +2 -2
  32. data/app/inputs/pageflow_permalink_input.rb +15 -3
  33. data/app/models/concerns/pageflow/reusable_file.rb +3 -3
  34. data/app/models/pageflow/account.rb +13 -31
  35. data/app/models/pageflow/audio_file_url_templates.rb +2 -1
  36. data/app/models/pageflow/{cname_theming_request_scope.rb → cname_site_request_scope.rb} +3 -3
  37. data/app/models/pageflow/customized_theme.rb +1 -1
  38. data/app/models/pageflow/draft_entry.rb +1 -1
  39. data/app/models/pageflow/entries_feed.rb +32 -0
  40. data/app/models/pageflow/entry.rb +3 -4
  41. data/app/models/pageflow/entry_at_revision.rb +2 -2
  42. data/app/models/pageflow/entry_duplicate.rb +1 -1
  43. data/app/models/pageflow/entry_template.rb +4 -4
  44. data/app/models/pageflow/home_button.rb +7 -7
  45. data/app/models/pageflow/image_file.rb +14 -3
  46. data/app/models/pageflow/membership.rb +3 -2
  47. data/app/models/pageflow/other_file.rb +5 -0
  48. data/app/models/pageflow/other_file_url_templates.rb +16 -0
  49. data/app/models/pageflow/permalink.rb +3 -3
  50. data/app/models/pageflow/permalink_directory.rb +2 -2
  51. data/app/models/pageflow/published_entry.rb +8 -2
  52. data/app/models/pageflow/revision.rb +4 -0
  53. data/app/models/pageflow/site.rb +67 -0
  54. data/app/models/pageflow/sitemaps.rb +13 -0
  55. data/app/models/pageflow/theme_customization.rb +1 -1
  56. data/app/models/pageflow/used_file.rb +2 -2
  57. data/app/models/pageflow/video_file_url_templates.rb +3 -1
  58. data/app/models/pageflow/widget.rb +9 -1
  59. data/app/policies/pageflow/account_policy.rb +2 -2
  60. data/app/policies/pageflow/entry_policy.rb +2 -2
  61. data/app/policies/pageflow/entry_template_policy.rb +1 -1
  62. data/app/policies/pageflow/{theming_policy.rb → site_policy.rb} +13 -11
  63. data/app/views/admin/accounts/_entry_template_details.html.arb +1 -1
  64. data/app/views/admin/accounts/_form.html.erb +4 -22
  65. data/app/views/admin/accounts/_site_defaults_inline_help.html.erb +5 -0
  66. data/app/views/admin/entries/_form.html.erb +4 -13
  67. data/app/views/admin/entries/_permalink_inputs.html.erb +2 -3
  68. data/app/views/admin/entries/_site_input.html.erb +15 -0
  69. data/app/views/admin/entries/{entry_type_name_input.html.erb → entry_site_and_type_name_input.html.erb} +3 -0
  70. data/app/views/admin/entry_templates/_form.html.erb +5 -5
  71. data/app/views/admin/sites/_attributes_table.html.arb +12 -0
  72. data/app/views/admin/sites/_fields.html.erb +23 -0
  73. data/app/views/admin/sites/_form.html.erb +5 -0
  74. data/app/views/components/pageflow/admin/entries_tab.rb +1 -2
  75. data/app/views/components/pageflow/admin/entry_templates_tab.rb +10 -11
  76. data/app/views/components/pageflow/admin/extensible_attributes_table.rb +8 -2
  77. data/app/views/components/pageflow/admin/features_tab.rb +1 -1
  78. data/app/views/components/pageflow/admin/sites_tab.rb +35 -0
  79. data/app/views/components/pageflow/admin/users_tab.rb +1 -2
  80. data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -0
  81. data/app/views/pageflow/editor/entries/seed.json.erb +1 -1
  82. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  83. data/app/views/pageflow/entries/stylesheet.css.erb +1 -1
  84. data/app/views/pageflow/feeds/index.atom.builder +20 -0
  85. data/app/views/pageflow/sitemaps/index.xml.builder +9 -0
  86. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  87. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  88. data/config/initializers/admin_resource_tabs.rb +29 -12
  89. data/config/initializers/features.rb +1 -0
  90. data/config/initializers/paperclip.rb +4 -0
  91. data/config/locales/de.yml +42 -19
  92. data/config/locales/en.yml +45 -17
  93. data/config/routes.rb +3 -0
  94. data/config/spring.rb +1 -1
  95. data/db/migrate/20221215101134_rename_theming_to_site.rb +9 -0
  96. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +34 -0
  97. data/db/migrate/20221219203023_add_name_to_sites.rb +5 -0
  98. data/db/migrate/20230103155934_associate_theme_customizations_with_sites.rb +27 -0
  99. data/db/migrate/20230120092923_create_other_files.rb +23 -0
  100. data/db/migrate/20230323115745_add_feeds_enabled_to_sites.rb +5 -0
  101. data/db/migrate/20230323154323_add_sitemap_enabled_to_sites.rb +5 -0
  102. data/db/migrate/20230331103823_add_title_to_sites.rb +5 -0
  103. data/db/migrate/20230405103612_add_custom_feed_url_to_sites.rb +5 -0
  104. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +455 -119
  105. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +31 -8
  106. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +1 -1
  107. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
  108. data/entry_types/paged/app/controllers/pageflow_paged/editor/entries_controller.rb +0 -2
  109. data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
  110. data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
  111. data/entry_types/paged/config/initializers/features.rb +0 -1
  112. data/entry_types/paged/lib/pageflow_paged/engine.rb +17 -1
  113. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +2 -2
  114. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +3 -4
  115. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +13 -6
  116. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -0
  117. data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +11 -0
  118. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +42 -0
  119. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
  120. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +31 -10
  121. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +9 -1
  122. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +3 -1
  123. data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +23 -0
  124. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +6 -1
  125. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +1 -5
  126. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +10 -0
  127. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +44 -41
  128. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_consent_vendors.json.jbuilder +16 -0
  129. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +8 -5
  130. data/entry_types/scrolled/config/initializers/features.rb +5 -0
  131. data/entry_types/scrolled/config/locales/consent_widget.de.yml +4 -0
  132. data/entry_types/scrolled/config/locales/consent_widget.en.yml +4 -0
  133. data/entry_types/scrolled/config/locales/de.yml +189 -8
  134. data/entry_types/scrolled/config/locales/en.yml +207 -2
  135. data/entry_types/scrolled/config/routes.rb +4 -0
  136. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +97 -5
  137. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
  138. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +96 -0
  139. data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +38 -0
  140. data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +17 -1
  141. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -0
  142. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +6 -1
  143. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +1 -1
  144. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +1 -2
  145. data/entry_types/scrolled/package/contentElements-editor.js +307 -22
  146. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  147. data/entry_types/scrolled/package/contentElements-frontend.js +690 -71
  148. data/entry_types/scrolled/package/editor.js +616 -220
  149. data/entry_types/scrolled/package/frontend/{EditableInlineText.module-c6672f27.js → EditableInlineText.module-fa9e3aff.js} +1669 -1674
  150. data/entry_types/scrolled/package/frontend/PhonePlatformContext-10a1d600.js +32 -0
  151. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-727cce0d.js +107 -0
  152. data/entry_types/scrolled/package/frontend/Viewer-169e14ca.js +154 -0
  153. data/entry_types/scrolled/package/frontend/{Viewer-6b05522f.js → Viewer-ee1aa590.js} +32 -161
  154. data/entry_types/scrolled/package/frontend/arrowRight-92a34ccc.js +77 -0
  155. data/entry_types/scrolled/package/frontend/{components-487daafa.js → components-4a09bfa3.js} +185 -45
  156. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-22e65f92.js → i18n-ddd92820.js} +162 -292
  157. data/entry_types/scrolled/package/frontend/index-02378634.js +118 -0
  158. data/entry_types/scrolled/package/frontend/index.css +1 -1
  159. data/entry_types/scrolled/package/frontend/index.js +375 -40
  160. data/entry_types/scrolled/package/frontend/useContentElementEditorState-63045393.js +52 -0
  161. data/entry_types/scrolled/package/package.json +2 -1
  162. data/entry_types/scrolled/package/testHelpers.js +9 -2
  163. data/entry_types/scrolled/package/values/colors.module.css +15 -0
  164. data/entry_types/scrolled/package/widgets/consentBar.css +1 -0
  165. data/entry_types/scrolled/package/widgets/consentBar.js +426 -0
  166. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  167. data/entry_types/scrolled/package/widgets/defaultNavigation.js +16 -9
  168. data/lib/generators/pageflow/resque/resque_generator.rb +1 -1
  169. data/lib/pageflow/ability_mixin.rb +21 -13
  170. data/lib/pageflow/active_admin_can_can_fix.rb +2 -2
  171. data/lib/pageflow/admin/attributes_table_rows.rb +1 -1
  172. data/lib/pageflow/admin/form_inputs.rb +1 -1
  173. data/lib/pageflow/admin/tabs.rb +1 -1
  174. data/lib/pageflow/built_in_file_type.rb +7 -0
  175. data/lib/pageflow/configuration/permissions.rb +3 -3
  176. data/lib/pageflow/configuration.rb +38 -17
  177. data/lib/pageflow/engine.rb +60 -39
  178. data/lib/pageflow/entry_export_import/entry_serialization.rb +1 -1
  179. data/lib/pageflow/entry_export_import/revision_serialization.rb +1 -1
  180. data/lib/pageflow/file_type.rb +2 -2
  181. data/lib/pageflow/global_config_api.rb +2 -2
  182. data/lib/pageflow/nested_revision_component.rb +23 -5
  183. data/lib/pageflow/primary_domain_entry_redirect.rb +7 -7
  184. data/lib/pageflow/rails_version.rb +19 -0
  185. data/lib/pageflow/seeds.rb +20 -17
  186. data/lib/pageflow/theme_customizations.rb +10 -10
  187. data/lib/pageflow/version.rb +1 -1
  188. data/lib/pageflow/widget_types.rb +4 -0
  189. data/package/config/webpack5.js +14 -0
  190. data/package/editor.js +148 -37
  191. data/package/frontend.js +26 -2
  192. data/package/testHelpers.js +1 -1
  193. data/package/ui.js +296 -71
  194. data/spec/factories/accounts.rb +5 -2
  195. data/spec/factories/draft_entries.rb +2 -2
  196. data/spec/factories/entries.rb +19 -5
  197. data/spec/factories/entry_templates.rb +1 -1
  198. data/spec/factories/permalink_directory.rb +1 -1
  199. data/spec/factories/published_entries.rb +2 -2
  200. data/spec/factories/sites.rb +12 -0
  201. data/vendor/assets/javascripts/iscroll.js +4 -7
  202. metadata +84 -59
  203. data/app/helpers/pageflow/admin/permalinks_helper.rb +0 -15
  204. data/app/helpers/pageflow/themings_helper.rb +0 -11
  205. data/app/models/pageflow/theming.rb +0 -30
  206. data/app/views/admin/accounts/_theming_defaults_inline_help.html.erb +0 -5
  207. data/app/views/admin/accounts/_theming_details.html.arb +0 -5
  208. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +0 -1
  209. data/entry_types/scrolled/package/frontend/arrowRight-7e3d9dd5.js +0 -42
  210. data/spec/factories/themings.rb +0 -7
  211. /data/app/views/pageflow/entries/{_theming.css.erb → _site.css.erb} +0 -0
@@ -1,9 +1,8 @@
1
1
  module Pageflow
2
2
  module Admin
3
3
  class EntryTemplatesTab < ViewComponent
4
- def build(theming)
5
- account = theming.account
6
- table_subjects = account.existing_and_potential_entry_templates
4
+ def build(site)
5
+ table_subjects = site.existing_and_potential_entry_templates
7
6
 
8
7
  table_for(table_subjects, i18n: Pageflow::EntryTemplate) do
9
8
  column do |entry_template|
@@ -15,30 +14,30 @@ module Pageflow
15
14
  end
16
15
  column do |entry_template|
17
16
  if entry_template.id
18
- edit_link(entry_template, account)
17
+ edit_link(entry_template, site)
19
18
  else
20
- new_link(entry_template, account)
19
+ new_link(entry_template, site)
21
20
  end
22
21
  end
23
22
  end
24
23
  end
25
24
 
26
- def new_link(entry_template, account)
25
+ def new_link(entry_template, site)
27
26
  link_to(
28
27
  I18n.t('active_admin.new'),
29
- new_admin_account_entry_template_path(
30
- account,
28
+ new_admin_site_entry_template_path(
29
+ site,
31
30
  entry_template,
32
31
  entry_type_name: entry_template.entry_type_name
33
32
  )
34
33
  )
35
34
  end
36
35
 
37
- def edit_link(entry_template, account)
36
+ def edit_link(entry_template, site)
38
37
  link_to(
39
38
  I18n.t('active_admin.edit'),
40
- edit_admin_account_entry_template_path(
41
- account,
39
+ edit_admin_site_entry_template_path(
40
+ site,
42
41
  entry_template
43
42
  )
44
43
  )
@@ -78,8 +78,14 @@ module Pageflow
78
78
  #
79
79
  # This is also the reason we can not use SimpleDelegator here
80
80
  # and also delegate_missing in Rails 5 would not work.
81
- def method_missing(method, *args, &block)
82
- @context.public_send(method, *args, &block)
81
+ def method_missing(method, *args, **kwargs, &block)
82
+ # Required for Ruby 2.6. Remove together with
83
+ # Pageflow::RailsVersion.experimental? conditionals.
84
+ if kwargs.present?
85
+ @context.public_send(method, *args, **kwargs, &block)
86
+ else
87
+ @context.public_send(method, *args, &block)
88
+ end
83
89
  end
84
90
  # rubocop:enable Style/MethodMissing
85
91
  end
@@ -2,7 +2,7 @@ module Pageflow
2
2
  module Admin
3
3
  class FeaturesTab < ViewComponent
4
4
  def build(resource)
5
- feature_target = resource.is_a?(Theming) ? resource.account : resource
5
+ feature_target = resource.is_a?(Site) ? resource.account : resource
6
6
  render('admin/features/form', resource: feature_target)
7
7
  end
8
8
  end
@@ -0,0 +1,35 @@
1
+ module Pageflow
2
+ module Admin
3
+ class SitesTab < ViewComponent
4
+ def build(account)
5
+ embedded_index_table(account.sites,
6
+ blank_slate_text: I18n.t('pageflow.admin.accounts.no_sites')) do
7
+ table_for_collection class: 'sites', i18n: Pageflow::Site do
8
+ column :name do |site|
9
+ link_to(site.display_name,
10
+ admin_account_site_path(site.account, site))
11
+ end
12
+ column :title do |site|
13
+ site.title.presence || '-'
14
+ end
15
+ column :host do |site|
16
+ site.host.presence || '-'
17
+ end
18
+ end
19
+ end
20
+
21
+ add_button(account)
22
+ end
23
+
24
+ private
25
+
26
+ def add_button(account)
27
+ return unless authorized?(:create, Site)
28
+
29
+ text_node(link_to(t('pageflow.admin.sites.add'),
30
+ new_admin_account_site_path(account),
31
+ class: 'button'))
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,8 +1,7 @@
1
1
  module Pageflow
2
2
  module Admin
3
3
  class UsersTab < ViewComponent
4
- def build(theming)
5
- account = theming.account
4
+ def build(account)
6
5
  embedded_index_table(account.memberships.on_accounts.includes(:user)
7
6
  .accessible_by(current_ability, :index)
8
7
  .where('pageflow_memberships.user_id IS NOT NULL'),
@@ -1,6 +1,7 @@
1
1
  json.key_format!(camelize: :lower)
2
2
  json.call(Pageflow.config,
3
3
  :confirm_encoding_jobs,
4
+ :default_published_until_duration_in_months,
4
5
  :available_locales,
5
6
  :available_public_locales,
6
7
  :available_text_track_kinds,
@@ -12,7 +12,7 @@
12
12
  "files": <%= editor_files_json_seed(@entry) %>,
13
13
 
14
14
  "account": <%= render_json_seed(@entry.account) %>,
15
- "theming": <%= render_json_seed(@entry.theming) %>,
15
+ "site": <%= render_json_seed(@entry.site) %>,
16
16
  "widget_types": <%= widget_types_json_seeds(@entry_config) %>,
17
17
  "page_types": <%= page_type_json_seeds(@entry_config) %>,
18
18
  "themes": <%= theme_json_seeds(@entry_config) %>,
@@ -0,0 +1 @@
1
+ json.pretty_url pretty_site_url(site)
@@ -6,5 +6,5 @@
6
6
  <% end %>
7
7
 
8
8
  <%= file_thumbnails_css(@entry) %>
9
- <%= render 'pageflow/entries/theming' %>
9
+ <%= render 'pageflow/entries/site' %>
10
10
  <% end %>
@@ -0,0 +1,20 @@
1
+ atom_feed language: @feed.locale,
2
+ root_url: @feed.root_url,
3
+ url: @feed.custom_url do |feed|
4
+ feed.title(@feed.title)
5
+ feed.updated(@feed.updated_at&.utc)
6
+
7
+ @feed.entries.each do |entry|
8
+ feed.entry(entry,
9
+ url: social_share_entry_url(entry),
10
+ published: entry.first_published_at.utc,
11
+ updated: entry.published_at.utc) do |feed_entry|
12
+ feed_entry.title(entry.title)
13
+ feed_entry.content(feed_entry_content(entry), type: 'html')
14
+
15
+ feed_entry.author do |author|
16
+ author.name(entry.author)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ xml.instruct!
2
+ xml.urlset xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' do
3
+ @entries.each do |entry|
4
+ xml.url do
5
+ xml.loc(social_share_entry_url(entry))
6
+ xml.lastmod(entry.published_at.utc.xmlschema)
7
+ end
8
+ end
9
+ end
@@ -5,7 +5,7 @@
5
5
  <%= tag :meta, property: "og:title", content: pretty_entry_title(entry) %>
6
6
  <%= tag :meta, property: "og:description", name: "description", content: social_share_entry_description(entry) %>
7
7
  <%= tag :meta, property: "og:url", content: social_share_entry_url(entry) %>
8
- <%= tag :meta, property: "og:site_name", content: entry.theming.cname_domain %>
8
+ <%= tag :meta, property: "og:site_name", content: entry.site.cname_domain %>
9
9
  <%= tag :meta, property: "og:type", content: "website" %>
10
10
 
11
11
  <%= tag :meta, name: "twitter:card", content: "summary_large_image" %>
@@ -5,7 +5,7 @@
5
5
  <%= tag :meta, property: "og:title", content: social_share_page_title(page) %>
6
6
  <%= tag :meta, property: "og:description", name: "description", content: social_share_page_description(entry, page) %>
7
7
  <%= tag :meta, property: "og:url", content: social_share_page_url(entry, page) %>
8
- <%= tag :meta, property: "og:site_name", content: entry.theming.cname_domain %>
8
+ <%= tag :meta, property: "og:site_name", content: entry.site.cname_domain %>
9
9
  <%= tag :meta, property: "og:type", content: "website" %>
10
10
 
11
11
  <%= tag :meta, name: "twitter:card", content: "summary_large_image" %>
@@ -1,17 +1,34 @@
1
1
  Pageflow.configure do |config|
2
- config.admin_resource_tabs.register(:entry, name: :members, component: Pageflow::Admin::MembersTab)
3
- config.admin_resource_tabs.register(:entry, name: :revisions, component: Pageflow::Admin::RevisionsTab)
2
+ config.admin_resource_tabs.register(:entry,
3
+ name: :members,
4
+ component: Pageflow::Admin::MembersTab)
5
+ config.admin_resource_tabs.register(:entry,
6
+ name: :revisions,
7
+ component: Pageflow::Admin::RevisionsTab)
8
+
9
+ config.admin_resource_tabs.register(:user,
10
+ name: :accounts,
11
+ component: Pageflow::Admin::UserAccountsTab)
12
+ config.admin_resource_tabs.register(:user,
13
+ name: :entries,
14
+ component: Pageflow::Admin::UserEntriesTab)
4
15
 
5
- config.admin_resource_tabs.register(:user, name: :accounts, component: Pageflow::Admin::UserAccountsTab)
6
- config.admin_resource_tabs.register(:user, name: :entries, component: Pageflow::Admin::UserEntriesTab)
16
+ config.admin_resource_tabs.register(:account,
17
+ name: :entries,
18
+ component: Pageflow::Admin::EntriesTab)
19
+ config.admin_resource_tabs.register(:account,
20
+ name: :users,
21
+ component: Pageflow::Admin::UsersTab)
22
+ config.admin_resource_tabs.register(:account,
23
+ name: :sites,
24
+ component: Pageflow::Admin::SitesTab)
7
25
 
8
- config.admin_resource_tabs.register(:theming, name: :entries, component: Pageflow::Admin::EntriesTab)
9
- config.admin_resource_tabs.register(:theming, name: :users, component: Pageflow::Admin::UsersTab)
10
- config.admin_resource_tabs.register(
11
- :theming,
12
- name: :entry_templates,
13
- component: Pageflow::Admin::EntryTemplatesTab
14
- )
26
+ config.admin_resource_tabs.register(:site,
27
+ name: :entries,
28
+ component: Pageflow::Admin::EntriesTab)
29
+ config.admin_resource_tabs.register(:site,
30
+ name: :entry_templates,
31
+ component: Pageflow::Admin::EntryTemplatesTab)
15
32
  end
16
33
 
17
34
  Pageflow.after_configure do |config|
@@ -27,7 +44,7 @@ Pageflow.after_configure do |config|
27
44
  component: Pageflow::Admin::FeaturesTab,
28
45
  **features_tab_permissions)
29
46
 
30
- config.admin_resource_tabs.register(:theming,
47
+ config.admin_resource_tabs.register(:account,
31
48
  name: :features,
32
49
  component: Pageflow::Admin::FeaturesTab,
33
50
  **features_tab_permissions)
@@ -1,4 +1,5 @@
1
1
  Pageflow.configure do |config|
2
2
  config.features.register('highdef_video_encoding')
3
+ config.features.register('force_fullhd_video_quality')
3
4
  config.features.register('selectable_themes')
4
5
  end
@@ -1,3 +1,7 @@
1
+ require 'pageflow/paperclip_processors/vtt'
2
+ require 'pageflow/paperclip_processors/audio_waveform'
3
+ require 'pageflow/paperclip_processors/noop'
4
+
1
5
  Paperclip.interpolates(:pageflow_s3_root) do |_attachment, _style|
2
6
  Pageflow.config.paperclip_s3_root
3
7
  end
@@ -161,7 +161,7 @@ de:
161
161
  pageflow/account:
162
162
  created_at: Erstellt am
163
163
  default_file_rights: Standard Urheber
164
- default_theming: Standard-Theming
164
+ default_site: Standard-Site
165
165
  entries_count: "# Beiträge"
166
166
  landing_page_name: Einstiegsseite
167
167
  name: Name
@@ -265,20 +265,24 @@ de:
265
265
  published_at: Publiziert am
266
266
  published_until: Publiziert bis
267
267
  updated_at: Geändert am
268
- pageflow/text_track_file:
269
- kind: Art
270
- label: Label
271
- srclang: Sprache
272
- pageflow/theming:
268
+ pageflow/site:
269
+ account: Konto
273
270
  additional_cnames: Zusätzliche CNAMES
274
271
  cname: CNAME
275
272
  copyright_link_label: Copyright-Link Text
276
273
  copyright_link_url: Copyright-Link URL
274
+ feeds_enabled: Atom-Feeds
277
275
  home_url: Redirect URL
278
276
  imprint_link_label: Impressum-Link Text
279
277
  imprint_link_url: Impressum-Link URL
280
278
  privacy_link_url: Datenschutz-Link URL
281
279
  share_providers: Standard Share Links
280
+ sitemap_enabled: XML-Sitemap
281
+ title: Titel
282
+ pageflow/text_track_file:
283
+ kind: Art
284
+ label: Label
285
+ srclang: Sprache
282
286
  pageflow/video_file:
283
287
  dimensions: Maße
284
288
  duration: Länge
@@ -403,24 +407,27 @@ de:
403
407
  pageflow/membership:
404
408
  one: Mitgliedschaft
405
409
  other: Mitgliedschaften
410
+ pageflow/other_file:
411
+ many: Unbekannte Dateien
412
+ one: Unbekannte Datei
406
413
  pageflow/revision:
407
414
  one: Revision
408
415
  other: Revisionen
416
+ pageflow/site:
417
+ one: Site
418
+ other: Sites
409
419
  pageflow/text_track_file:
410
420
  one: Textspur-Datei
411
421
  other: Textspur-Dateien
412
- pageflow/theming:
413
- one: Theming
414
- other: Themings
415
422
  pageflow/video_file:
416
423
  one: Videodatei
417
424
  other: Videodateien
418
425
  revision:
419
426
  one: Revision
420
427
  other: Revisionen
421
- theming:
422
- one: Theming
423
- other: Themings
428
+ site:
429
+ one: Site
430
+ other: Sites
424
431
  user:
425
432
  one: Nutzer
426
433
  other: Nutzer
@@ -798,10 +805,9 @@ de:
798
805
  cannot_add: Was Sie tun möchten, ist nicht möglich.
799
806
  none_addable_tooltip: Kein Konto verfügbar
800
807
  accounts:
801
- entry_template_hint: Einige Formularfelder sind ab sofort im Beitragsvorlagen-Tab auf der Informations-Seite dieses Kontos zu finden.
802
808
  no_entries: Keine Beiträge
803
809
  no_members: Keine Benutzer
804
- theming_defaults_inline_help: Die folgenden Einstellungen werden als Standard für neue Beiträge des Kontos verwendet. Änderungen wirken sich nicht auf existierende Beiträge aus.
810
+ site_defaults_inline_help: Die folgenden Einstellungen werden als Standard für neue Beiträge des Kontos verwendet. Änderungen wirken sich nicht auf existierende Beiträge aus.
805
811
  entries:
806
812
  add_folder: Ordner hinzufügen
807
813
  confirm_depublish: Soll der Beitrag wirklich depubliziert werden?
@@ -881,21 +887,38 @@ de:
881
887
  features: Features
882
888
  members: Mitglieder
883
889
  revisions: Revisionen
890
+ sites: Sites
884
891
  users: Benutzer
885
892
  revisions:
886
893
  published_until_hint: Freilassen, um Beitrag unbegrenzt zu veröffentlichen.
887
894
  restored: Revision wiederhergestellt
888
- themings:
895
+ sites:
896
+ add: Site hinzufügen
889
897
  additional_cnames_hint: Kommaseparierte Liste von weiteren CNAMES. Ausschließlich zur Auswahl der Redirect URL genutzt.
890
898
  cname_hint: Wird in Share Links verwendet.
891
899
  default_author_hint: Voreinstellung 'author' Meta-Feld für Eintrage
892
900
  default_keywords_hint: Voreinstellung 'keywords' Meta-Feld für Eintrage
893
901
  default_locale_hint: Voreinstellung Sprache für Einträge
902
+ default_name: "(Standard)"
894
903
  default_publisher_hint: Voreinstellung 'publisher' Meta-Feld für Eintrage
904
+ feeds_hint: |-
905
+ Wenn diese Option aktiviert ist, stehen Feeds mit allen
906
+ veröffentlichten Beiträgen der Site über URLs der Form
907
+ https://%{site_host}/feeds/de.atom zu Verfügung, wobei "en"
908
+ durch ein beliebiges Sprachkürzel ersetzt werden kann, nach
909
+ dem gefiltert werden soll.
895
910
  home_url_hint: Wird einer der obigen CNAMES ohne Pfad in der URL verwendet, wird zu dieser URL umgeleitet. Standard Link Ziel des Home Buttons.
896
911
  name: "%{account_name}"
897
912
  remove_logo: Logo entfernen
898
913
  show: Anzeigen
914
+ sitemap_hint: |-
915
+ Wenn diese Option aktiviert ist, steht eine Sitemap mit
916
+ allen veröffentlichten Einträgen der Site unter
917
+ https://%{site_host}/sitemap.xml zur Verfügung. Registriere
918
+ die URL in Google Search Console oder ähnlichen Tools.
919
+ title_hint: |-
920
+ Wird in Titeln der Beiträge und als Titel für den Atom-Feed
921
+ verwendet.
899
922
  user:
900
923
  cannot_add: Was Sie tun möchten, ist nicht möglich. Sie müssen aktualisieren.
901
924
  none_addable_tooltip: Kein Benutzer verfügbar
@@ -1146,6 +1169,7 @@ de:
1146
1169
  tabs:
1147
1170
  audio_files: Audios
1148
1171
  image_files: Bilder
1172
+ other_files: Andere
1149
1173
  video_files: Videos
1150
1174
  media_loading_spinner:
1151
1175
  widget_type_info_box_text: Dies ist eine Vorschau der Lade-Ansicht von 'Bild'. Die Animation wird ausgeführt, während die Seite geladen wird.
@@ -1288,7 +1312,7 @@ de:
1288
1312
  close: Schließen
1289
1313
  title: Hilfe
1290
1314
  help_button:
1291
- open_help: Hilfe anzeigen
1315
+ open_help: Hilfe
1292
1316
  list_blank_slate:
1293
1317
  text: "(Keine Einträge)"
1294
1318
  list_item:
@@ -1802,9 +1826,7 @@ de:
1802
1826
  publisher: Name oder Firmenname des Herausgeber.
1803
1827
  share_providers: Social Media Plattformen, die unter dem Menüpunkt "Teilen" des Beitrags angezeigt werden sollen
1804
1828
  share_url: URL, die geteilt werden soll, wenn der Benutzer auf einen der Social Media Buttons klickt. Feld frei lassen, um URL des veröffentlichten Beitrags zu verwenden.
1805
- summary: 'Trage hier ein, welcher Beschreibungstext beim Teilen in sozialen Netzwerken angezeigt wird.
1806
-
1807
- '
1829
+ summary: Trage hier ein, welcher Beschreibungstext beim Teilen in sozialen Netzwerken angezeigt wird.
1808
1830
  title: Hier kannst Du Deinem Pageflow einen Titel geben, der in der Titelleiste des Browserfensters angezeigt wird. Unter diesem Titel wird Dein Pageflow nach der Veröffentlichung auch in Suchmaschinen indiziert werden
1809
1831
  pageflow/page:
1810
1832
  additional_title: Die Infobox wird über den Steuerelementen zum Starten und Stoppen der Wiedegabe angezeigt.
@@ -1903,6 +1925,7 @@ de:
1903
1925
  roles:
1904
1926
  analytics: Zählpixel
1905
1927
  background_media_control: Hintergrund-Media-Control
1928
+ consent: Privatsphäre-Einstellungen
1906
1929
  cookie_notice: Privatsphäre-Einstellungen
1907
1930
  loading_spinner: Lade-Ansicht
1908
1931
  mobile_navigation: Mobile Navigation
@@ -161,7 +161,7 @@ en:
161
161
  pageflow/account:
162
162
  created_at: Created at
163
163
  default_file_rights: Default file credits
164
- default_theming: Default theming
164
+ default_site: Default site
165
165
  entries_count: "# Stories"
166
166
  landing_page_name: Landing page
167
167
  name: Name
@@ -265,20 +265,24 @@ en:
265
265
  published_at: Published at
266
266
  published_until: Published until
267
267
  updated_at: Updated at
268
- pageflow/text_track_file:
269
- kind: Kind
270
- label: Label
271
- srclang: Language
272
- pageflow/theming:
268
+ pageflow/site:
269
+ account: Account
273
270
  additional_cnames: Additional CNAMES
274
271
  cname: CNAME
275
272
  copyright_link_label: Copyright link Text
276
273
  copyright_link_url: Copyright link URL
274
+ feeds_enabled: Atom feeds
277
275
  home_url: Redirect URL
278
276
  imprint_link_label: Legal notice link label
279
277
  imprint_link_url: Legal notice link URL
280
278
  privacy_link_url: Privacy link URL
281
279
  share_providers: Default Share Links
280
+ sitemap_enabled: XML sitemap
281
+ title: Title
282
+ pageflow/text_track_file:
283
+ kind: Kind
284
+ label: Label
285
+ srclang: Language
282
286
  pageflow/video_file:
283
287
  dimensions: Dimensions
284
288
  duration: Duration
@@ -403,24 +407,27 @@ en:
403
407
  pageflow/membership:
404
408
  one: Membership
405
409
  other: Memberships
410
+ pageflow/other_file:
411
+ many: Unknown files
412
+ one: Unknown file
406
413
  pageflow/revision:
407
414
  one: Version
408
415
  other: Versions
416
+ pageflow/site:
417
+ one: Site
418
+ other: Sites
409
419
  pageflow/text_track_file:
410
420
  one: Text Track File
411
421
  other: Text Track Files
412
- pageflow/theming:
413
- one: Theming
414
- other: Themings
415
422
  pageflow/video_file:
416
423
  one: Video File
417
424
  other: Video Files
418
425
  revision:
419
426
  one: Version
420
427
  other: Versions
421
- theming:
422
- one: Theming
423
- other: Themings
428
+ site:
429
+ one: Site
430
+ other: Sites
424
431
  user:
425
432
  one: User
426
433
  other: Users
@@ -732,6 +739,12 @@ en:
732
739
  create: Create %{model}
733
740
  submit: Save %{model}
734
741
  update: Update %{model}
742
+ i18n:
743
+ transliterate:
744
+ rule:
745
+ ä:
746
+ ö:
747
+ ü:
735
748
  language: English
736
749
  number:
737
750
  currency:
@@ -792,10 +805,9 @@ en:
792
805
  cannot_add: What you want to do is not possible at the moment.
793
806
  none_addable_tooltip: No account available
794
807
  accounts:
795
- entry_template_hint: Some of the form fields can now be found in the story template tab on the info page for this account
796
808
  no_entries: No Stories
797
809
  no_members: No members
798
- theming_defaults_inline_help: The following settings will be used as defaults for new stories in this account. Changes do not affect existing stories.
810
+ site_defaults_inline_help: The following settings will be used as defaults for new stories in this account. Changes do not affect existing stories.
799
811
  entries:
800
812
  add_folder: Add folder
801
813
  confirm_depublish: Depublish this story?
@@ -875,21 +887,35 @@ en:
875
887
  features: Features
876
888
  members: Members
877
889
  revisions: Versions
890
+ sites: Sites
878
891
  users: User
879
892
  revisions:
880
893
  published_until_hint: Leave blank to publish indefinitely.
881
894
  restored: Version restored
882
- themings:
895
+ sites:
896
+ add: Add site
883
897
  additional_cnames_hint: Comma separated list of additional CNAMES. Used only to select the correct redirect URL.
884
898
  cname_hint: Used in public sharing URLs.
885
899
  default_author_hint: Default 'author' meta field for stories
886
900
  default_keywords_hint: Default 'keywords' meta field for stories
887
901
  default_locale_hint: Default language for stories
902
+ default_name: "(Default)"
888
903
  default_publisher_hint: Default 'publisher' meta field for stories
904
+ feeds_hint: |-
905
+ When enabled, feeds containing all published entries of the
906
+ site are available via URLs of the form
907
+ https://%{site_host}/feeds/en.atom where "en" can be
908
+ replaced with any locale you want to filter by.
889
909
  home_url_hint: Used for requests to the root path with one of the above CNAMES. Default target location for the home button.
890
910
  name: "%{account_name}"
891
911
  remove_logo: Remove logo
892
912
  show: View
913
+ sitemap_hint: |-
914
+ When enabled, a sitemap with all published entries of the
915
+ site is available at
916
+ https://%{site_host}/sitemap.xml. Register the URL in Google
917
+ Search Console or similar tools.
918
+ title_hint: Used in entry titles and as title for the atom feed.
893
919
  user:
894
920
  cannot_add: What you want to do is not possible. You need to upgrade.
895
921
  none_addable_tooltip: No user available
@@ -1141,6 +1167,7 @@ en:
1141
1167
  tabs:
1142
1168
  audio_files: Audios
1143
1169
  image_files: Images
1170
+ other_files: Other
1144
1171
  video_files: Videos
1145
1172
  media_loading_spinner:
1146
1173
  widget_type_info_box_text: This is a preview of the 'Image' loading view. The animation runs while the page is loading.
@@ -1283,7 +1310,7 @@ en:
1283
1310
  close: Close
1284
1311
  title: Help
1285
1312
  help_button:
1286
- open_help: Open help
1313
+ open_help: Help
1287
1314
  list_blank_slate:
1288
1315
  text: "(No items)"
1289
1316
  list_item:
@@ -1814,7 +1841,7 @@ en:
1814
1841
  The text-block can be formatted with the buttons underneath the input field. [B= bold / I=italic / U=underlined / infinity symbol= Link/URL to an external website]
1815
1842
 
1816
1843
  All changes are visible in the left front-end-view as soon as you leave the appropriate input field in the editor.
1817
- thumbnail_image_id: 'The thumbnail replaces the automatically generated preview-picture in the navigation and overview.'
1844
+ thumbnail_image_id: The thumbnail replaces the automatically generated preview-picture in the navigation and overview.
1818
1845
  transition: Choose the animation, that will be used when users scroll to this page.
1819
1846
  templates:
1820
1847
  inputs:
@@ -1894,6 +1921,7 @@ en:
1894
1921
  roles:
1895
1922
  analytics: Tracking
1896
1923
  background_media_control: Background media control
1924
+ consent: Privacy settings
1897
1925
  cookie_notice: Privacy settings
1898
1926
  loading_spinner: Loading View
1899
1927
  mobile_navigation: Mobile navigation
data/config/routes.rb CHANGED
@@ -88,6 +88,9 @@ Pageflow::Engine.routes.draw do
88
88
  # Authentication provider call back
89
89
  get '/auth/:provider/callback', to: 'users/omniauth_callbacks#auth_callback'
90
90
 
91
+ get 'feeds/:locale', to: 'feeds#index', as: :feed
92
+ get 'sitemap', to: 'sitemaps#index', as: :sitemap
93
+
91
94
  get ':id/manifest', to: 'entries#manifest', as: :entry_manifest
92
95
  get ':id/embed', to: 'entries#show', defaults: {embed: '1'}, as: :entry_embed
93
96
 
data/config/spring.rb CHANGED
@@ -1,2 +1,2 @@
1
- require File.expand_path('../spec/support/pageflow/rails_version', File.dirname(__FILE__))
1
+ require File.expand_path('../lib/pageflow/rails_version', File.dirname(__FILE__))
2
2
  Spring.application_root = File.join(__FILE__, "../../spec/dummy/rails-#{Pageflow::RailsVersion.detect}")
@@ -0,0 +1,9 @@
1
+ class RenameThemingToSite < ActiveRecord::Migration[5.2]
2
+ def change
3
+ rename_table :pageflow_themings, :pageflow_sites
4
+
5
+ rename_column :pageflow_accounts, :default_theming_id, :default_site_id
6
+ rename_column :pageflow_entries, :theming_id, :site_id
7
+ rename_column :pageflow_permalink_directories, :theming_id, :site_id
8
+ end
9
+ end