pageflow 15.7.1 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -243
  3. data/README.md +1 -9
  4. data/Rakefile +4 -1
  5. data/admins/pageflow/accounts.rb +12 -16
  6. data/admins/pageflow/entry.rb +57 -28
  7. data/admins/pageflow/entry_templates.rb +5 -7
  8. data/admins/pageflow/sites.rb +50 -0
  9. data/admins/pageflow/user.rb +7 -0
  10. data/app/assets/javascripts/pageflow/admin/entries.js +53 -4
  11. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +65 -0
  12. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  13. data/app/assets/stylesheets/pageflow/editor/base.scss +2 -6
  14. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +2 -0
  15. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +9 -0
  16. data/app/assets/stylesheets/pageflow/editor/info_box.scss +13 -3
  17. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +1 -0
  18. data/app/assets/stylesheets/pageflow/page.scss +0 -2
  19. data/app/assets/stylesheets/pageflow/themes/default/page.scss +1 -1
  20. data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -1
  21. data/app/controllers/pageflow/editor/file_import_controller.rb +32 -42
  22. data/app/controllers/pageflow/entries_controller.rb +27 -3
  23. data/app/helpers/pageflow/admin/permalinks_helper.rb +15 -0
  24. data/app/helpers/pageflow/common_entry_seed_helper.rb +1 -1
  25. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  26. data/app/helpers/pageflow/entries_helper.rb +25 -17
  27. data/app/helpers/pageflow/sites_helper.rb +11 -0
  28. data/app/helpers/pageflow/social_share_helper.rb +2 -2
  29. data/app/inputs/pageflow_permalink_input.rb +47 -0
  30. data/app/models/concerns/pageflow/permalinkable.rb +12 -0
  31. data/app/models/concerns/pageflow/reusable_file.rb +5 -0
  32. data/app/models/concerns/pageflow/uploadable_file.rb +4 -0
  33. data/app/models/pageflow/account.rb +7 -33
  34. data/app/models/pageflow/{cname_theming_request_scope.rb → cname_site_request_scope.rb} +3 -3
  35. data/app/models/pageflow/customized_theme.rb +5 -3
  36. data/app/models/pageflow/entry.rb +8 -4
  37. data/app/models/pageflow/entry_at_revision.rb +4 -3
  38. data/app/models/pageflow/entry_duplicate.rb +8 -1
  39. data/app/models/pageflow/entry_template.rb +4 -4
  40. data/app/models/pageflow/home_button.rb +7 -7
  41. data/app/models/pageflow/image_file_url_templates.rb +2 -2
  42. data/app/models/pageflow/permalink.rb +39 -0
  43. data/app/models/pageflow/permalink_directory.rb +10 -0
  44. data/app/models/pageflow/published_entry.rb +19 -2
  45. data/app/models/pageflow/revision.rb +1 -1
  46. data/app/models/pageflow/site.rb +59 -0
  47. data/app/models/pageflow/theme_customization.rb +1 -1
  48. data/app/models/pageflow/theme_customization_file.rb +6 -1
  49. data/app/policies/pageflow/account_policy.rb +2 -2
  50. data/app/policies/pageflow/entry_policy.rb +2 -2
  51. data/app/policies/pageflow/entry_template_policy.rb +1 -1
  52. data/app/policies/pageflow/{theming_policy.rb → site_policy.rb} +13 -11
  53. data/app/views/admin/accounts/_entry_template_details.html.arb +1 -1
  54. data/app/views/admin/accounts/_form.html.erb +4 -22
  55. data/app/views/admin/accounts/_site_defaults_inline_help.html.erb +5 -0
  56. data/app/views/admin/entries/_form.html.erb +11 -12
  57. data/app/views/admin/entries/_permalink_inputs.html.erb +6 -0
  58. data/app/views/admin/entries/_site_input.html.erb +15 -0
  59. data/app/views/admin/entries/{entry_type_name_input.html.erb → entry_site_and_type_name_input.html.erb} +3 -0
  60. data/app/views/admin/entries/permalink_inputs.html.erb +7 -0
  61. data/app/views/admin/entry_templates/_form.html.erb +5 -5
  62. data/app/views/admin/sites/_attributes_table.html.arb +9 -0
  63. data/app/views/admin/sites/_fields.html.erb +17 -0
  64. data/app/views/admin/sites/_form.html.erb +5 -0
  65. data/app/views/components/pageflow/admin/entries_tab.rb +1 -2
  66. data/app/views/components/pageflow/admin/entry_templates_tab.rb +10 -11
  67. data/app/views/components/pageflow/admin/features_tab.rb +1 -1
  68. data/app/views/components/pageflow/admin/sites_tab.rb +32 -0
  69. data/app/views/components/pageflow/admin/users_tab.rb +1 -2
  70. data/app/views/pageflow/editor/entries/seed.json.erb +1 -1
  71. data/app/views/pageflow/editor/file_import/start_import_job.json.jbuilder +10 -0
  72. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  73. data/app/views/pageflow/entries/{_theming.css.erb → _site.css.erb} +0 -0
  74. data/app/views/pageflow/entries/stylesheet.css.erb +1 -1
  75. data/app/views/pageflow/files/_file.json.jbuilder +1 -0
  76. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  77. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  78. data/config/initializers/admin_resource_tabs.rb +29 -12
  79. data/config/initializers/mime_types.rb +1 -0
  80. data/config/locales/de.yml +19 -17
  81. data/config/locales/en.yml +19 -17
  82. data/config/routes.rb +8 -5
  83. data/db/migrate/20221024100724_create_pageflow_permalink_directories.rb +10 -0
  84. data/db/migrate/20221025074049_add_permalink_attributes_to_entries.rb +5 -0
  85. data/db/migrate/20221027065022_create_pageflow_permalinks.rb +12 -0
  86. data/db/migrate/20221215101134_rename_theming_to_site.rb +9 -0
  87. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +34 -0
  88. data/db/migrate/20221219203023_add_name_to_sites.rb +5 -0
  89. data/db/migrate/20230103155934_associate_theme_customizations_with_sites.rb +27 -0
  90. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +176 -179
  91. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +49 -7
  92. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  93. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
  94. data/entry_types/paged/config/initializers/features.rb +2 -0
  95. data/entry_types/paged/config/locales/{new/help.de.yml → de.yml} +74 -65
  96. data/entry_types/paged/config/locales/{new/help.en.yml → en.yml} +66 -56
  97. data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +39 -13
  98. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +55 -0
  99. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +6 -2
  100. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +2 -0
  101. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/_manifest.json.jbuilder +16 -0
  102. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +9 -3
  103. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +5 -5
  104. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +16 -10
  105. data/entry_types/scrolled/config/locales/de.yml +265 -76
  106. data/entry_types/scrolled/config/locales/en.yml +266 -77
  107. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +3 -3
  108. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +14 -0
  109. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +1 -1
  110. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +1 -1
  111. data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +11 -0
  112. data/entry_types/scrolled/lib/pageflow_scrolled.rb +39 -1
  113. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +3 -2
  114. data/entry_types/scrolled/package/contentElements-editor.js +124 -38
  115. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  116. data/entry_types/scrolled/package/contentElements-frontend.js +321 -27
  117. data/entry_types/scrolled/package/editor.js +1345 -739
  118. data/entry_types/scrolled/package/frontend/EditableInlineText.module-14c7b097.js +5314 -0
  119. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9fb97827.js → PhonePlatformContext-f6093cc6.js} +87 -223
  120. data/entry_types/scrolled/package/frontend/{Viewer-e2290ea0.js → Viewer-b6becc57.js} +6 -40
  121. data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +42 -0
  122. data/entry_types/scrolled/package/frontend/{components-6ab26015.js → components-b3160dd7.js} +546 -361
  123. data/entry_types/scrolled/package/frontend/index.css +1 -1
  124. data/entry_types/scrolled/package/frontend/index.js +398 -3692
  125. data/entry_types/scrolled/package/package.json +3 -2
  126. data/entry_types/scrolled/package/testHelpers.js +12 -2
  127. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  128. data/entry_types/scrolled/package/widgets/defaultNavigation.js +50 -40
  129. data/entry_types/scrolled/spec/fixtures/image.ico +0 -0
  130. data/lib/pageflow/ability_mixin.rb +16 -8
  131. data/lib/pageflow/admin/attributes_table_rows.rb +1 -1
  132. data/lib/pageflow/admin/form_inputs.rb +1 -1
  133. data/lib/pageflow/admin/tabs.rb +1 -1
  134. data/lib/pageflow/configuration/permissions.rb +3 -3
  135. data/lib/pageflow/configuration.rb +17 -17
  136. data/lib/pageflow/entry_export_import/entry_serialization.rb +1 -1
  137. data/lib/pageflow/entry_type.rb +6 -2
  138. data/lib/pageflow/primary_domain_entry_redirect.rb +7 -7
  139. data/lib/pageflow/seeds.rb +10 -10
  140. data/lib/pageflow/theme_customizations.rb +10 -10
  141. data/lib/pageflow/version.rb +1 -1
  142. data/package/editor.js +129 -156
  143. data/package/frontend.js +19 -2
  144. data/package/testHelpers.js +39 -6
  145. data/spec/factories/accounts.rb +5 -2
  146. data/spec/factories/draft_entries.rb +2 -2
  147. data/spec/factories/entries.rb +18 -1
  148. data/spec/factories/entry_templates.rb +1 -1
  149. data/spec/factories/permalink_directory.rb +6 -0
  150. data/spec/factories/permalinks.rb +4 -0
  151. data/spec/factories/published_entries.rb +4 -2
  152. data/spec/factories/sites.rb +9 -0
  153. metadata +50 -62
  154. data/app/assets/javascripts/pageflow/dist/editor.js +0 -11890
  155. data/app/assets/javascripts/pageflow/dist/frontend.js +0 -5800
  156. data/app/assets/javascripts/pageflow/dist/react-client.js +0 -22
  157. data/app/assets/javascripts/pageflow/dist/react-server.js +0 -19
  158. data/app/helpers/pageflow/themings_helper.rb +0 -11
  159. data/app/models/pageflow/theming.rb +0 -29
  160. data/app/views/admin/accounts/_theming_defaults_inline_help.html.erb +0 -5
  161. data/app/views/admin/accounts/_theming_details.html.arb +0 -5
  162. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +0 -1
  163. data/entry_types/paged/config/locales/new/video_contain.de.yml +0 -7
  164. data/entry_types/paged/config/locales/new/video_contain.en.yml +0 -7
  165. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +0 -8
  166. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +0 -8
  167. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +0 -8
  168. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +0 -9
  169. data/entry_types/scrolled/config/locales/new/consent.de.yml +0 -25
  170. data/entry_types/scrolled/config/locales/new/consent.en.yml +0 -24
  171. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +0 -39
  172. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +0 -39
  173. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +0 -14
  174. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +0 -14
  175. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +0 -28
  176. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +0 -27
  177. data/entry_types/scrolled/config/locales/new/header_size.de.yml +0 -17
  178. data/entry_types/scrolled/config/locales/new/header_size.en.yml +0 -17
  179. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +0 -39
  180. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +0 -39
  181. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +0 -26
  182. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +0 -26
  183. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +0 -9
  184. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +0 -9
  185. data/entry_types/scrolled/config/locales/new/section_width.de.yml +0 -10
  186. data/entry_types/scrolled/config/locales/new/section_width.en.yml +0 -10
  187. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +0 -7
  188. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +0 -7
  189. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +0 -8
  190. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +0 -8
  191. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +0 -11
  192. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +0 -12
  193. data/entry_types/scrolled/config/locales/new/widgets.de.yml +0 -6
  194. data/entry_types/scrolled/config/locales/new/widgets.en.yml +0 -6
  195. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +0 -9
  196. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/mstile-150x150.png +0 -0
  197. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/safari-pinned-tab.svg +0 -46
  198. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +0 -19
  199. data/entry_types/scrolled/package/frontend/EditableInlineText.module-b9923660.js +0 -993
  200. data/entry_types/scrolled/package/frontend/usePhonePlatform-2857c22b.js +0 -34
  201. data/spec/factories/themings.rb +0 -7
@@ -10,29 +10,11 @@
10
10
  <% end %>
11
11
  <% end %>
12
12
 
13
- <%= f.semantic_fields_for :default_theming do |theming| %>
14
- <%= f.inputs do %>
15
- <%= theming.input :cname, hint: t('pageflow.admin.themings.cname_hint') %>
16
- <%= theming.input :additional_cnames, hint: t('pageflow.admin.themings.additional_cnames_hint') %>
17
- <%= theming.input :home_url, hint: t('pageflow.admin.themings.home_url_hint') %>
13
+ <% if resource.new_record? %>
14
+ <%= f.semantic_fields_for :default_site do |site| %>
15
+ <%= render 'admin/sites/fields', f: site, account_config: account_config %>
18
16
  <% end %>
19
-
20
- <%= f.inputs do %>
21
- <%= theming.input :imprint_link_label %>
22
- <%= theming.input :imprint_link_url %>
23
- <%= theming.input :copyright_link_label %>
24
- <%= theming.input :copyright_link_url %>
25
- <%= theming.input :privacy_link_url %>
26
-
27
- <% account_config.admin_form_inputs.find_all_for(:theming).each do |form_input| %>
28
- <%= form_input.build(theming) %>
29
- <% end %>
30
- <% end %>
31
- <% end %>
32
-
33
- <p>
34
- <%= t('pageflow.admin.accounts.entry_template_hint') %>
35
- </p>
17
+ <% end %>
36
18
 
37
19
  <%= f.actions do %>
38
20
  <%= f.action(:submit) %>
@@ -0,0 +1,5 @@
1
+ <li class="inline_help_item">
2
+ <p>
3
+ <%= t('pageflow.admin.accounts.site_defaults_inline_help') %>
4
+ </p>
5
+ </li>
@@ -1,6 +1,8 @@
1
1
  <%= admin_form_for([:admin, resource]) do |f| %>
2
2
  <%= f.inputs do %>
3
- <%= f.input :title, hint: I18n.t('pageflow.admin.entries.title_hint') %>
3
+ <%= f.input(:title,
4
+ hint: @entry.site.permalink_directories.blank? &&
5
+ I18n.t('pageflow.admin.entries.title_hint')) %>
4
6
 
5
7
  <% if authorized?(:update_account_on, resource) &&
6
8
  account_policy_scope.entry_creatable.many? %>
@@ -14,17 +16,14 @@
14
16
  input_html: {class: 'entry_account_input'}) %>
15
17
  <%end %>
16
18
 
17
- <% if authorized?(:update_theming_on, resource) && !resource.new_record? %>
18
- <%= f.input(:theming,
19
- as: :searchable_select,
20
- ajax: {
21
- resource: Pageflow::Entry,
22
- collection_name: :eligible_themings,
23
- params: {
24
- entry_id: resource.id
25
- }
26
- },
27
- include_blank: false) %>
19
+ <%= render('admin/entries/site_input',
20
+ entry: resource,
21
+ form: f) %>
22
+
23
+ <%= f.fields_for(:permalink, @entry.permalink || Pageflow::Permalink.new) do |permalink| %>
24
+ <%= render('admin/entries/permalink_inputs',
25
+ entry: resource,
26
+ form: permalink) %>
28
27
  <% end %>
29
28
 
30
29
  <% if resource.new_record? %>
@@ -0,0 +1,6 @@
1
+ <%= form.input(:permalink,
2
+ as: :pageflow_permalink,
3
+ base_url: pretty_site_url(entry.site),
4
+ directory_collection: collection_for_permalink_directories(entry.site,
5
+ form.object),
6
+ slug_placeholder: entry.default_permalink_slug) %>
@@ -0,0 +1,15 @@
1
+ <% if authorized?(:update_site_on, entry) %>
2
+ <%= form.input(:site,
3
+ as: :searchable_select,
4
+ ajax: {
5
+ resource: Pageflow::Entry,
6
+ collection_name: :eligible_sites,
7
+ params: {
8
+ account_id: entry.account_id
9
+ }
10
+ },
11
+ include_blank: false,
12
+ wrapper_html: {
13
+ style: ('display: none' if site_policy_scope.sites_allowed_for(entry.account).one?)
14
+ }) %>
15
+ <% end %>
@@ -1,4 +1,7 @@
1
1
  <%= fields_for(:entry, @entry, builder: ActiveAdmin::FormBuilder) do |form| %>
2
+ <%= render('admin/entries/site_input',
3
+ entry: @entry,
4
+ form: form) %>
2
5
  <%= render('pageflow/admin/entries/entry_type_name_input',
3
6
  form: form,
4
7
  entry_types: Pageflow.config_for(@entry.account).entry_types) %>
@@ -0,0 +1,7 @@
1
+ <%= fields_for(:entry, @entry, builder: ActiveAdmin::FormBuilder) do |form| %>
2
+ <%= form.fields_for(:permalink, @entry.permalink || Pageflow::Permalink.new) do |permalink| %>
3
+ <%= render('admin/entries/permalink_inputs',
4
+ entry: @entry,
5
+ form: permalink) %>
6
+ <% end %>
7
+ <% end %>
@@ -4,7 +4,7 @@
4
4
 
5
5
  <%= f.inputs do %>
6
6
  <%= f.semantic_errors :entry_type_name %>
7
- <%= render('admin/accounts/theming_defaults_inline_help') %>
7
+ <%= render('admin/accounts/site_defaults_inline_help') %>
8
8
  <%= f.hidden_field :entry_type_name, value: entry_type_name %>
9
9
  <%= f.input :default_locale,
10
10
  as: :select,
@@ -12,15 +12,15 @@
12
12
  collection: Pageflow.config.available_public_locales.map{ |locale|
13
13
  [t('pageflow.public._language', locale: locale), locale.to_s]
14
14
  },
15
- hint: t('pageflow.admin.themings.default_locale_hint') %>
15
+ hint: t('pageflow.admin.sites.default_locale_hint') %>
16
16
  <%= f.input :default_author,
17
- hint: t('pageflow.admin.themings.default_author_hint'),
17
+ hint: t('pageflow.admin.sites.default_author_hint'),
18
18
  placeholder: Pageflow.config.default_author_meta_tag %>
19
19
  <%= f.input :default_publisher,
20
- hint: t('pageflow.admin.themings.default_publisher_hint'),
20
+ hint: t('pageflow.admin.sites.default_publisher_hint'),
21
21
  placeholder: Pageflow.config.default_publisher_meta_tag %>
22
22
  <%= f.input :default_keywords,
23
- hint: t('pageflow.admin.themings.default_keywords_hint'),
23
+ hint: t('pageflow.admin.sites.default_keywords_hint'),
24
24
  placeholder: Pageflow.config.default_keywords_meta_tag %>
25
25
  <%= render('admin/accounts/share_providers_label') %>
26
26
  <%= f.semantic_fields_for :share_providers,
@@ -0,0 +1,9 @@
1
+ extensible_attributes_table_for(site,
2
+ Pageflow.config_for(site.account)
3
+ .admin_attributes_table_rows.for(:site)) do
4
+ row :host, class: 'host'
5
+ row :account, class: 'account' do
6
+ link_to(site.account.name,
7
+ admin_account_path(site.account, tab: 'sites'))
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ <%= f.inputs do %>
2
+ <%= f.input :cname, hint: t('pageflow.admin.sites.cname_hint') %>
3
+ <%= f.input :additional_cnames, hint: t('pageflow.admin.sites.additional_cnames_hint') %>
4
+ <%= f.input :home_url, hint: t('pageflow.admin.sites.home_url_hint') %>
5
+ <% end %>
6
+
7
+ <%= f.inputs do %>
8
+ <%= f.input :imprint_link_label %>
9
+ <%= f.input :imprint_link_url %>
10
+ <%= f.input :copyright_link_label %>
11
+ <%= f.input :copyright_link_url %>
12
+ <%= f.input :privacy_link_url %>
13
+
14
+ <% account_config.admin_form_inputs.find_all_for(:site).each do |form_input| %>
15
+ <%= form_input.build(f) %>
16
+ <% end %>
17
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= admin_form_for [:admin, parent, resource] do |f| %>
2
+ <%= f.inputs :name %>
3
+ <%= render 'fields', f: f, account_config: Pageflow.config_for(resource.account) %>
4
+ <%= f.actions :submit, :cancel %>
5
+ <% end %>
@@ -1,8 +1,7 @@
1
1
  module Pageflow
2
2
  module Admin
3
3
  class EntriesTab < ViewComponent
4
- def build(theming)
5
- account = theming.account
4
+ def build(account)
6
5
  embedded_index_table(account.entries,
7
6
  blank_slate_text: I18n.t('pageflow.admin.entries.no_members')) do
8
7
  table_for_collection(sortable: true, class: 'entries', i18n: Pageflow::Entry) do
@@ -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
  )
@@ -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,32 @@
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 :host do |site|
13
+ site.host.presence || '-'
14
+ end
15
+ end
16
+ end
17
+
18
+ add_button(account)
19
+ end
20
+
21
+ private
22
+
23
+ def add_button(account)
24
+ return unless authorized?(:create, Site)
25
+
26
+ text_node(link_to(t('pageflow.admin.sites.add'),
27
+ new_admin_account_site_path(account),
28
+ class: 'button'))
29
+ end
30
+ end
31
+ end
32
+ 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'),
@@ -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,10 @@
1
+ json.array! @items do |item|
2
+ json.source_url item[:source_url]
3
+
4
+ json.attributes do
5
+ json.partial!(object: item[:file],
6
+ partial: 'pageflow/editor/files/file',
7
+ locals: {file_type: item[:file].file_type},
8
+ as: :file)
9
+ end
10
+ end
@@ -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 %>
@@ -2,6 +2,7 @@ json.call(file,
2
2
  :id,
3
3
  :perma_id,
4
4
  :basename,
5
+ :extension,
5
6
  :rights,
6
7
  :configuration,
7
8
  :parent_file_id,
@@ -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)
@@ -0,0 +1 @@
1
+ Mime::Type.register 'application/manifest+json', :webmanifest
@@ -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,11 +265,7 @@ 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:
273
269
  additional_cnames: Zusätzliche CNAMES
274
270
  cname: CNAME
275
271
  copyright_link_label: Copyright-Link Text
@@ -279,6 +275,10 @@ de:
279
275
  imprint_link_url: Impressum-Link URL
280
276
  privacy_link_url: Datenschutz-Link URL
281
277
  share_providers: Standard Share Links
278
+ pageflow/text_track_file:
279
+ kind: Art
280
+ label: Label
281
+ srclang: Sprache
282
282
  pageflow/video_file:
283
283
  dimensions: Maße
284
284
  duration: Länge
@@ -406,21 +406,21 @@ de:
406
406
  pageflow/revision:
407
407
  one: Revision
408
408
  other: Revisionen
409
+ pageflow/site:
410
+ one: Site
411
+ other: Sites
409
412
  pageflow/text_track_file:
410
413
  one: Textspur-Datei
411
414
  other: Textspur-Dateien
412
- pageflow/theming:
413
- one: Theming
414
- other: Themings
415
415
  pageflow/video_file:
416
416
  one: Videodatei
417
417
  other: Videodateien
418
418
  revision:
419
419
  one: Revision
420
420
  other: Revisionen
421
- theming:
422
- one: Theming
423
- other: Themings
421
+ site:
422
+ one: Site
423
+ other: Sites
424
424
  user:
425
425
  one: Nutzer
426
426
  other: Nutzer
@@ -499,7 +499,7 @@ de:
499
499
  - Fr
500
500
  - Sa
501
501
  abbr_month_names:
502
- -
502
+ -
503
503
  - Jan
504
504
  - Feb
505
505
  - Mär
@@ -525,7 +525,7 @@ de:
525
525
  long: "%e. %B %Y"
526
526
  short: "%e. %b"
527
527
  month_names:
528
- -
528
+ -
529
529
  - Januar
530
530
  - Februar
531
531
  - März
@@ -798,10 +798,9 @@ de:
798
798
  cannot_add: Was Sie tun möchten, ist nicht möglich.
799
799
  none_addable_tooltip: Kein Konto verfügbar
800
800
  accounts:
801
- entry_template_hint: Einige Formularfelder sind ab sofort im Beitragsvorlagen-Tab auf der Informations-Seite dieses Kontos zu finden.
802
801
  no_entries: Keine Beiträge
803
802
  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.
803
+ 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
804
  entries:
806
805
  add_folder: Ordner hinzufügen
807
806
  confirm_depublish: Soll der Beitrag wirklich depubliziert werden?
@@ -881,16 +880,19 @@ de:
881
880
  features: Features
882
881
  members: Mitglieder
883
882
  revisions: Revisionen
883
+ sites: Sites
884
884
  users: Benutzer
885
885
  revisions:
886
886
  published_until_hint: Freilassen, um Beitrag unbegrenzt zu veröffentlichen.
887
887
  restored: Revision wiederhergestellt
888
- themings:
888
+ sites:
889
+ add: Site hinzufügen
889
890
  additional_cnames_hint: Kommaseparierte Liste von weiteren CNAMES. Ausschließlich zur Auswahl der Redirect URL genutzt.
890
891
  cname_hint: Wird in Share Links verwendet.
891
892
  default_author_hint: Voreinstellung 'author' Meta-Feld für Eintrage
892
893
  default_keywords_hint: Voreinstellung 'keywords' Meta-Feld für Eintrage
893
894
  default_locale_hint: Voreinstellung Sprache für Einträge
895
+ default_name: "(Standard)"
894
896
  default_publisher_hint: Voreinstellung 'publisher' Meta-Feld für Eintrage
895
897
  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
898
  name: "%{account_name}"
@@ -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,11 +265,7 @@ 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:
273
269
  additional_cnames: Additional CNAMES
274
270
  cname: CNAME
275
271
  copyright_link_label: Copyright link Text
@@ -279,6 +275,10 @@ en:
279
275
  imprint_link_url: Legal notice link URL
280
276
  privacy_link_url: Privacy link URL
281
277
  share_providers: Default Share Links
278
+ pageflow/text_track_file:
279
+ kind: Kind
280
+ label: Label
281
+ srclang: Language
282
282
  pageflow/video_file:
283
283
  dimensions: Dimensions
284
284
  duration: Duration
@@ -406,21 +406,21 @@ en:
406
406
  pageflow/revision:
407
407
  one: Version
408
408
  other: Versions
409
+ pageflow/site:
410
+ one: Site
411
+ other: Sites
409
412
  pageflow/text_track_file:
410
413
  one: Text Track File
411
414
  other: Text Track Files
412
- pageflow/theming:
413
- one: Theming
414
- other: Themings
415
415
  pageflow/video_file:
416
416
  one: Video File
417
417
  other: Video Files
418
418
  revision:
419
419
  one: Version
420
420
  other: Versions
421
- theming:
422
- one: Theming
423
- other: Themings
421
+ site:
422
+ one: Site
423
+ other: Sites
424
424
  user:
425
425
  one: User
426
426
  other: Users
@@ -499,7 +499,7 @@ en:
499
499
  - Fri
500
500
  - Sat
501
501
  abbr_month_names:
502
- -
502
+ -
503
503
  - Jan
504
504
  - Feb
505
505
  - Mar
@@ -525,7 +525,7 @@ en:
525
525
  long: "%B %d, %Y"
526
526
  short: "%b %d"
527
527
  month_names:
528
- -
528
+ -
529
529
  - January
530
530
  - February
531
531
  - March
@@ -792,10 +792,9 @@ en:
792
792
  cannot_add: What you want to do is not possible at the moment.
793
793
  none_addable_tooltip: No account available
794
794
  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
795
  no_entries: No Stories
797
796
  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.
797
+ 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
798
  entries:
800
799
  add_folder: Add folder
801
800
  confirm_depublish: Depublish this story?
@@ -875,16 +874,19 @@ en:
875
874
  features: Features
876
875
  members: Members
877
876
  revisions: Versions
877
+ sites: Sites
878
878
  users: User
879
879
  revisions:
880
880
  published_until_hint: Leave blank to publish indefinitely.
881
881
  restored: Version restored
882
- themings:
882
+ sites:
883
+ add: Add site
883
884
  additional_cnames_hint: Comma separated list of additional CNAMES. Used only to select the correct redirect URL.
884
885
  cname_hint: Used in public sharing URLs.
885
886
  default_author_hint: Default 'author' meta field for stories
886
887
  default_keywords_hint: Default 'keywords' meta field for stories
887
888
  default_locale_hint: Default language for stories
889
+ default_name: "(Default)"
888
890
  default_publisher_hint: Default 'publisher' meta field for stories
889
891
  home_url_hint: Used for requests to the root path with one of the above CNAMES. Default target location for the home button.
890
892
  name: "%{account_name}"