pageflow 17.0.4 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +372 -26
  3. data/README.md +0 -1
  4. data/admins/pageflow/accounts.rb +16 -14
  5. data/admins/pageflow/entry.rb +68 -20
  6. data/admins/pageflow/entry_templates.rb +10 -9
  7. data/admins/pageflow/folder.rb +1 -1
  8. data/admins/pageflow/membership.rb +4 -4
  9. data/admins/pageflow/revisions.rb +5 -5
  10. data/admins/pageflow/site_root_entry.rb +64 -0
  11. data/admins/pageflow/sites.rb +12 -3
  12. data/admins/pageflow/translations.rb +75 -0
  13. data/admins/pageflow/user.rb +21 -35
  14. data/app/assets/javascripts/pageflow/admin/entries.js +30 -5
  15. data/app/assets/javascripts/pageflow/dist/ui.js +2865 -257
  16. data/app/assets/stylesheets/pageflow/admin/entries/index_table.scss +2 -1
  17. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +2 -1
  18. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +6 -0
  19. data/app/assets/stylesheets/pageflow/editor/base.scss +2 -0
  20. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -1
  21. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +5 -1
  22. data/app/assets/stylesheets/pageflow/editor/files.scss +28 -16
  23. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +24 -0
  24. data/app/assets/stylesheets/pageflow/editor/info_box.scss +11 -3
  25. data/app/assets/stylesheets/pageflow/editor/list.scss +6 -4
  26. data/app/assets/stylesheets/pageflow/editor/list_search_field.scss +52 -0
  27. data/app/assets/stylesheets/pageflow/editor/outline.scss +0 -13
  28. data/app/assets/stylesheets/pageflow/editor/select_button.scss +1 -1
  29. data/app/assets/stylesheets/pageflow/editor/sortable.scss +12 -0
  30. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +4 -4
  31. data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -0
  32. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +8 -0
  33. data/app/assets/stylesheets/pageflow/ui/input/file_name_input.scss +37 -0
  34. data/app/assets/stylesheets/pageflow/ui/properties.scss +5 -0
  35. data/app/assets/stylesheets/pageflow/ui.scss +1 -0
  36. data/app/controllers/concerns/pageflow/controller_delegation.rb +1 -1
  37. data/app/controllers/concerns/pageflow/edit_locking.rb +17 -10
  38. data/app/controllers/concerns/pageflow/entry_password_protection.rb +1 -0
  39. data/app/controllers/concerns/pageflow/public_https_mode.rb +2 -1
  40. data/app/controllers/concerns/pageflow/quota_verification.rb +5 -4
  41. data/app/controllers/pageflow/admin/initial_passwords_controller.rb +1 -0
  42. data/app/controllers/pageflow/application_controller.rb +19 -19
  43. data/app/controllers/pageflow/chapters_controller.rb +3 -2
  44. data/app/controllers/pageflow/edit_locks_controller.rb +3 -2
  45. data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +1 -0
  46. data/app/controllers/pageflow/editor/entries_controller.rb +2 -1
  47. data/app/controllers/pageflow/editor/entry_publications_controller.rb +1 -0
  48. data/app/controllers/pageflow/editor/file_import_controller.rb +3 -3
  49. data/app/controllers/pageflow/editor/files_controller.rb +7 -6
  50. data/app/controllers/pageflow/editor/widgets_controller.rb +1 -0
  51. data/app/controllers/pageflow/entries_controller.rb +77 -17
  52. data/app/controllers/pageflow/feeds_controller.rb +1 -1
  53. data/app/controllers/pageflow/files_controller.rb +1 -0
  54. data/app/controllers/pageflow/pages_controller.rb +4 -2
  55. data/app/controllers/pageflow/revisions_controller.rb +2 -1
  56. data/app/controllers/pageflow/sitemaps_controller.rb +1 -1
  57. data/app/controllers/pageflow/storylines_controller.rb +1 -0
  58. data/app/helpers/pageflow/admin/cutoff_modes_helper.rb +12 -0
  59. data/app/helpers/pageflow/admin/entries_helper.rb +1 -1
  60. data/app/helpers/pageflow/admin/entry_translations_helper.rb +18 -0
  61. data/app/helpers/pageflow/admin/features_helper.rb +1 -1
  62. data/app/helpers/pageflow/admin/form_helper.rb +3 -3
  63. data/app/helpers/pageflow/admin/locales_helper.rb +10 -2
  64. data/app/helpers/pageflow/admin/memberships_helper.rb +32 -32
  65. data/app/helpers/pageflow/admin/revisions_helper.rb +1 -1
  66. data/app/helpers/pageflow/admin/sites_helper.rb +22 -0
  67. data/app/helpers/pageflow/admin/users_helper.rb +7 -5
  68. data/app/helpers/pageflow/admin/widgets_helper.rb +3 -3
  69. data/app/helpers/pageflow/asset_urls_helper.rb +1 -1
  70. data/app/helpers/pageflow/audio_files_helper.rb +5 -2
  71. data/app/helpers/pageflow/background_image_helper.rb +7 -6
  72. data/app/helpers/pageflow/common_entry_seed_helper.rb +2 -4
  73. data/app/helpers/pageflow/editor/config_helper.rb +1 -1
  74. data/app/helpers/pageflow/editor/files_helper.rb +1 -1
  75. data/app/helpers/pageflow/embed_code_helper.rb +3 -3
  76. data/app/helpers/pageflow/entries_helper.rb +58 -34
  77. data/app/helpers/pageflow/entry_json_seed_helper.rb +3 -2
  78. data/app/helpers/pageflow/feeds_helper.rb +2 -2
  79. data/app/helpers/pageflow/file_background_images_helper.rb +2 -2
  80. data/app/helpers/pageflow/file_thumbnails_helper.rb +4 -3
  81. data/app/helpers/pageflow/files_helper.rb +5 -4
  82. data/app/helpers/pageflow/folders_helper.rb +8 -5
  83. data/app/helpers/pageflow/help_entries_helper.rb +2 -2
  84. data/app/helpers/pageflow/hreflang_links_helper.rb +37 -0
  85. data/app/helpers/pageflow/info_box_helper.rb +7 -11
  86. data/app/helpers/pageflow/media_query_helper.rb +3 -3
  87. data/app/helpers/pageflow/navigation_bar_helper.rb +1 -1
  88. data/app/helpers/pageflow/overview_helper.rb +1 -1
  89. data/app/helpers/pageflow/page_types_helper.rb +5 -5
  90. data/app/helpers/pageflow/pages_helper.rb +29 -15
  91. data/app/helpers/pageflow/public_i18n_helper.rb +1 -1
  92. data/app/helpers/pageflow/quota_helper.rb +4 -4
  93. data/app/helpers/pageflow/render_json_helper.rb +6 -3
  94. data/app/helpers/pageflow/revision_file_helper.rb +2 -1
  95. data/app/helpers/pageflow/sites_helper.rb +3 -3
  96. data/app/helpers/pageflow/social_share_helper.rb +24 -10
  97. data/app/helpers/pageflow/social_share_links_helper.rb +12 -9
  98. data/app/helpers/pageflow/structured_data_helper.rb +1 -1
  99. data/app/helpers/pageflow/stub_page_configuration.rb +7 -3
  100. data/app/helpers/pageflow/text_direction_helper.rb +1 -1
  101. data/app/helpers/pageflow/themes_helper.rb +1 -1
  102. data/app/helpers/pageflow/video_files_helper.rb +29 -13
  103. data/app/helpers/pageflow/widgets_helper.rb +7 -6
  104. data/app/inputs/pageflow_permalink_input.rb +3 -2
  105. data/app/jobs/pageflow/application_job.rb +1 -0
  106. data/app/jobs/pageflow/entry_export_import/upload_and_publish_file_job.rb +1 -1
  107. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -0
  108. data/app/jobs/pageflow/poll_zencoder_job.rb +3 -2
  109. data/app/jobs/pageflow/process_image_or_text_track_job.rb +1 -0
  110. data/app/jobs/pageflow/prune_auto_snapshots_job.rb +1 -0
  111. data/app/jobs/pageflow/request_meta_data_from_zencoder_job.rb +1 -0
  112. data/app/jobs/pageflow/submit_file_to_zencoder_job.rb +1 -0
  113. data/app/mailers/pageflow/user_mailer.rb +1 -0
  114. data/app/models/concerns/pageflow/auto_generated_perma_id.rb +13 -1
  115. data/app/models/concerns/pageflow/entry_publication_states.rb +7 -3
  116. data/app/models/concerns/pageflow/feature_target.rb +8 -4
  117. data/app/models/concerns/pageflow/output_source.rb +3 -3
  118. data/app/models/concerns/pageflow/permalinkable.rb +2 -1
  119. data/app/models/concerns/pageflow/reusable_file.rb +23 -23
  120. data/app/models/concerns/pageflow/serialization_blacklist.rb +1 -1
  121. data/app/models/concerns/pageflow/suspendable.rb +5 -3
  122. data/app/models/concerns/pageflow/theme_referencer.rb +1 -1
  123. data/app/models/concerns/pageflow/translatable.rb +62 -0
  124. data/app/models/concerns/pageflow/uploadable_file.rb +6 -6
  125. data/app/models/pageflow/account.rb +6 -5
  126. data/app/models/pageflow/account_member_query.rb +1 -1
  127. data/app/models/pageflow/account_role_query.rb +1 -1
  128. data/app/models/pageflow/application_query.rb +1 -1
  129. data/app/models/pageflow/application_record.rb +1 -1
  130. data/app/models/pageflow/audio_file.rb +4 -4
  131. data/app/models/pageflow/audio_file_url_templates.rb +1 -1
  132. data/app/models/pageflow/authentication_token.rb +2 -2
  133. data/app/models/pageflow/chapter.rb +6 -1
  134. data/app/models/pageflow/chapter_scaffold.rb +2 -4
  135. data/app/models/pageflow/cname_site_request_scope.rb +1 -1
  136. data/app/models/pageflow/customized_theme.rb +6 -6
  137. data/app/models/pageflow/draft_entry.rb +37 -9
  138. data/app/models/pageflow/edit_lock.rb +19 -21
  139. data/app/models/pageflow/encoding_confirmation.rb +2 -2
  140. data/app/models/pageflow/entries_feed.rb +2 -2
  141. data/app/models/pageflow/entry.rb +44 -30
  142. data/app/models/pageflow/entry_at_revision.rb +5 -1
  143. data/app/models/pageflow/entry_duplicate.rb +8 -5
  144. data/app/models/pageflow/entry_publication.rb +2 -2
  145. data/app/models/pageflow/entry_role_query.rb +4 -4
  146. data/app/models/pageflow/entry_template.rb +4 -4
  147. data/app/models/pageflow/entry_title_or_account_name_query.rb +2 -2
  148. data/app/models/pageflow/entry_translation_group.rb +42 -0
  149. data/app/models/pageflow/file_reuse.rb +2 -2
  150. data/app/models/pageflow/file_usage.rb +10 -3
  151. data/app/models/pageflow/folder.rb +2 -2
  152. data/app/models/pageflow/home_button.rb +7 -7
  153. data/app/models/pageflow/image_file.rb +20 -5
  154. data/app/models/pageflow/image_file_url_templates.rb +1 -1
  155. data/app/models/pageflow/invitation_form.rb +2 -1
  156. data/app/models/pageflow/managed_user_query.rb +1 -1
  157. data/app/models/pageflow/membership.rb +5 -5
  158. data/app/models/pageflow/nested_revision_component_copy.rb +263 -0
  159. data/app/models/pageflow/null_user.rb +1 -1
  160. data/app/models/pageflow/overview_button.rb +1 -1
  161. data/app/models/pageflow/page.rb +7 -3
  162. data/app/models/pageflow/permalink.rb +23 -2
  163. data/app/models/pageflow/permalink_directory.rb +7 -0
  164. data/app/models/pageflow/permalink_redirect.rb +7 -0
  165. data/app/models/pageflow/positioned_file.rb +5 -5
  166. data/app/models/pageflow/potential_entry_translations.rb +55 -0
  167. data/app/models/pageflow/potential_memberships.rb +5 -4
  168. data/app/models/pageflow/published_entry.rb +62 -11
  169. data/app/models/pageflow/revision.rb +24 -15
  170. data/app/models/pageflow/roles.rb +14 -18
  171. data/app/models/pageflow/site.rb +36 -3
  172. data/app/models/pageflow/site_root_entry_form.rb +27 -0
  173. data/app/models/pageflow/sitemaps.rb +10 -1
  174. data/app/models/pageflow/storyline.rb +5 -2
  175. data/app/models/pageflow/storyline_scaffold.rb +1 -1
  176. data/app/models/pageflow/text_track_file.rb +1 -1
  177. data/app/models/pageflow/text_track_file_url_templates.rb +1 -1
  178. data/app/models/pageflow/theme_customization_file.rb +3 -2
  179. data/app/models/pageflow/thumbnail_file_resolver.rb +1 -1
  180. data/app/models/pageflow/url_template.rb +1 -1
  181. data/app/models/pageflow/used_file.rb +7 -3
  182. data/app/models/pageflow/user_name_query.rb +2 -2
  183. data/app/models/pageflow/video_file.rb +22 -15
  184. data/app/models/pageflow/video_file_url_templates.rb +6 -4
  185. data/app/models/pageflow/widget.rb +4 -3
  186. data/app/models/pageflow/with_file_usage_extension.rb +1 -1
  187. data/app/models/pageflow/zencoder_attachment.rb +8 -8
  188. data/app/policies/pageflow/account_policy.rb +3 -1
  189. data/app/policies/pageflow/admin/admin_only_tab_policy.rb +1 -0
  190. data/app/policies/pageflow/admin/entry_tab_policy.rb +1 -0
  191. data/app/policies/pageflow/application_policy.rb +2 -0
  192. data/app/policies/pageflow/entry_policy.rb +7 -1
  193. data/app/policies/pageflow/entry_template_policy.rb +2 -1
  194. data/app/policies/pageflow/file_policy.rb +4 -7
  195. data/app/policies/pageflow/folder_policy.rb +18 -8
  196. data/app/policies/pageflow/membership_policy.rb +6 -4
  197. data/app/policies/pageflow/site_policy.rb +10 -3
  198. data/app/policies/pageflow/user_policy.rb +6 -4
  199. data/app/state_machines/pageflow/image_and_text_track_processing_state_machine.rb +3 -2
  200. data/app/state_machines/pageflow/media_encoding_state_machine.rb +5 -4
  201. data/app/views/admin/accounts/_entry_template_details.html.arb +2 -2
  202. data/app/views/admin/entries/_attributes_table.html.arb +6 -5
  203. data/app/views/admin/entries/_form.html.erb +2 -1
  204. data/app/views/admin/entries/_permalink_inputs.html.erb +9 -2
  205. data/app/views/admin/entry_templates/_form.html.erb +1 -3
  206. data/app/views/admin/site_root_entry/choose.html.erb +19 -0
  207. data/app/views/admin/sites/_fields.html.erb +14 -1
  208. data/app/views/admin/translations/_form.html.erb +31 -0
  209. data/app/views/admin/users/_attributes_table.html.arb +13 -0
  210. data/app/views/components/pageflow/admin/add_membership_button.rb +13 -12
  211. data/app/views/components/pageflow/admin/custom_scopes_renderer.rb +1 -0
  212. data/app/views/components/pageflow/admin/embed_code_field.rb +1 -0
  213. data/app/views/components/pageflow/admin/embedded_index_table.rb +9 -10
  214. data/app/views/components/pageflow/admin/entries_tab.rb +1 -0
  215. data/app/views/components/pageflow/admin/entry_publication_state_indicator.rb +6 -5
  216. data/app/views/components/pageflow/admin/entry_templates_tab.rb +2 -1
  217. data/app/views/components/pageflow/admin/entry_translations_tab.rb +102 -0
  218. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +1 -0
  219. data/app/views/components/pageflow/admin/extensible_attributes_table.rb +9 -8
  220. data/app/views/components/pageflow/admin/features_tab.rb +1 -0
  221. data/app/views/components/pageflow/admin/grouped_folder_list.rb +1 -0
  222. data/app/views/components/pageflow/admin/icon_link_to.rb +1 -0
  223. data/app/views/components/pageflow/admin/members_tab.rb +4 -3
  224. data/app/views/components/pageflow/admin/membership_role_with_tooltip.rb +3 -2
  225. data/app/views/components/pageflow/admin/revisions_tab.rb +14 -10
  226. data/app/views/components/pageflow/admin/sites_tab.rb +1 -0
  227. data/app/views/components/pageflow/admin/tabs_view.rb +1 -0
  228. data/app/views/components/pageflow/admin/timestamp.rb +6 -5
  229. data/app/views/components/pageflow/admin/user_account_badge_list.rb +2 -3
  230. data/app/views/components/pageflow/admin/user_accounts_tab.rb +1 -0
  231. data/app/views/components/pageflow/admin/user_entries_tab.rb +1 -0
  232. data/app/views/components/pageflow/admin/users_tab.rb +1 -0
  233. data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -1
  234. data/app/views/pageflow/editor/entries/index.json.jbuilder +1 -1
  235. data/app/views/pageflow/editor/entries/show.json.jbuilder +1 -1
  236. data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +2 -2
  237. data/app/views/pageflow/editor/files/_file.json.jbuilder +5 -13
  238. data/app/views/pageflow/editor/files/create.json.jbuilder +1 -1
  239. data/app/views/pageflow/editor/files/index.json.jbuilder +1 -1
  240. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  241. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +1 -3
  242. data/app/views/pageflow/entries/share_menu/_bluesky_link.html.erb +8 -0
  243. data/app/views/pageflow/entries/share_menu/_threads_link.html.erb +8 -0
  244. data/app/views/pageflow/entries/share_menu/_twitter_link.html.erb +3 -13
  245. data/app/views/pageflow/files/_file.json.jbuilder +3 -3
  246. data/app/views/pageflow/sitemaps/index.xml.builder +9 -1
  247. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  248. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  249. data/config/initializers/active_admin_patches.rb +3 -6
  250. data/config/initializers/admin_resource_tabs.rb +3 -0
  251. data/config/initializers/paperclip.rb +1 -0
  252. data/config/initializers/symmetric_encryption.rb +1 -1
  253. data/config/initializers/zencoder.rb +24 -13
  254. data/config/locales/de.yml +110 -5
  255. data/config/locales/en.yml +109 -8
  256. data/config/routes.rb +15 -13
  257. data/config/spring.rb +2 -1
  258. data/db/migrate/20140418225525_setup_schema.rb +2 -2
  259. data/db/migrate/20190306161431_copy_file_attributes_of_failed_uploads.rb +2 -2
  260. data/db/migrate/20190820152900_drop_accounts_themes.rb +2 -1
  261. data/db/migrate/20191202145757_create_pageflow_scrolled_sections.rb +11 -11
  262. data/db/migrate/20191202150657_create_pageflow_scrolled_chapters.rb +1 -1
  263. data/db/migrate/20191202154723_create_pageflow_scrolled_content_elements.rb +9 -9
  264. data/db/migrate/20191219143450_add_position_to_content_elements.rb +2 -1
  265. data/db/migrate/20200117133200_change_revision_appearance_option_default_and_null.rb +2 -1
  266. data/db/migrate/20200122115400_create_pageflow_entry_templates.rb +25 -25
  267. data/db/migrate/20200206134400_convert_legacy_scrolled_content_element_types.rb +3 -3
  268. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +2 -2
  269. data/db/migrate/20230120092923_create_other_files.rb +2 -1
  270. data/db/migrate/20230419083307_create_pageflow_entry_translation_group.rb +9 -0
  271. data/db/migrate/20240612110434_add_cutoff_mode_name_to_sites.rb +5 -0
  272. data/db/migrate/20240918084059_create_pageflow_permalink_redirects.rb +14 -0
  273. data/db/migrate/20250508172234_ensure_scrolled_entries_have_main_storyline.rb +14 -0
  274. data/db/migrate/20250617090048_add_custom404_entry_to_sites.rb +5 -0
  275. data/db/migrate/20250617100000_add_perma_id_counter_to_entries.rb +28 -0
  276. data/db/migrate/20250722174123_add_perma_id_to_chapters.rb +10 -0
  277. data/db/migrate/20250725080603_add_perma_id_indexes_to_revision_components.rb +13 -0
  278. data/db/migrate/20250726000000_add_display_name_to_file_usages.rb +5 -0
  279. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +3918 -1489
  280. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +468 -1161
  281. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +28125 -22
  282. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +26589 -19
  283. data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
  284. data/entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb +1 -1
  285. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +7 -7
  286. data/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder +1 -0
  287. data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
  288. data/entry_types/paged/lib/pageflow_paged/plugin.rb +4 -0
  289. data/entry_types/paged/lib/pageflow_paged/react/page_type.rb +1 -1
  290. data/entry_types/paged/lib/pageflow_paged/react/widget_type.rb +3 -3
  291. data/entry_types/paged/lib/pageflow_paged.rb +1 -1
  292. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +5 -3
  293. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +2 -2
  294. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -2
  295. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -1
  296. data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +2 -2
  297. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +1 -0
  298. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +2 -1
  299. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +60 -6
  300. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +16 -2
  301. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +21 -23
  302. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +16 -1
  303. data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +15 -14
  304. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +12 -0
  305. data/entry_types/scrolled/app/models/pageflow_scrolled/section.rb +12 -1
  306. data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +19 -1
  307. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -0
  308. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +2 -2
  309. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +2 -0
  310. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +17 -9
  311. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry_translations.json.jbuilder +14 -0
  312. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +25 -5
  313. data/entry_types/scrolled/app/views/pageflow_scrolled/storylines/_storyline.json.jbuilder +7 -0
  314. data/entry_types/scrolled/config/locales/de.yml +612 -49
  315. data/entry_types/scrolled/config/locales/en.yml +584 -51
  316. data/entry_types/scrolled/config/routes.rb +18 -8
  317. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +12 -20
  318. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/icons/information.svg +13 -0
  319. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/icons/muted.svg +1 -0
  320. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/icons/share.svg +12 -0
  321. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/icons/unmuted.svg +1 -0
  322. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantDesktop.svg +56 -0
  323. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantMobile.svg +22 -0
  324. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +26 -11
  325. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +27 -8
  326. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
  327. data/entry_types/scrolled/lib/pageflow_scrolled/additional_theme_assets.rb +27 -0
  328. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +16 -4
  329. data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +1 -1
  330. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -4
  331. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +24 -22
  332. data/entry_types/scrolled/lib/pageflow_scrolled.rb +1 -1
  333. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +6 -5
  334. data/entry_types/scrolled/package/config/webpack.js +22 -0
  335. data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -0
  336. data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1529 -0
  337. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.css +1 -0
  338. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +59 -0
  339. data/entry_types/scrolled/package/contentElements-editor.js +2076 -322
  340. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  341. data/entry_types/scrolled/package/contentElements-frontend.js +1022 -648
  342. data/entry_types/scrolled/package/editor.js +2086 -1091
  343. data/entry_types/scrolled/package/frontend/{EditableInlineText.module-6ee0e024.js → FloatingPortalRootProvider-51914be7.js} +1200 -1258
  344. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-b28d991a.js → PhonePlatformContext-9f76033e.js} +7 -8
  345. data/entry_types/scrolled/package/frontend/ThemeIcon-81f2f066.js +1932 -0
  346. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-788e9cdb.js +39 -0
  347. data/entry_types/scrolled/package/frontend/{Viewer-6e4d14ed.js → Viewer-0345ce57.js} +36 -63
  348. data/entry_types/scrolled/package/frontend/{Viewer-32cd1ac1.js → Viewer-cdc549cc.js} +15 -22
  349. data/entry_types/scrolled/package/frontend/{Wavesurfer-7d9cf1b7.js → Wavesurfer-1cdc3925.js} +54 -74
  350. data/entry_types/scrolled/package/frontend/{components-24363f97.js → components-96660ffd.js} +1791 -841
  351. data/entry_types/scrolled/package/frontend/{index-fc4b13e6.js → index-eb670c2f.js} +11 -18
  352. data/entry_types/scrolled/package/frontend/index.css +1 -1
  353. data/entry_types/scrolled/package/frontend/index.js +517 -903
  354. data/entry_types/scrolled/package/frontend/{createSuper-d0f30da3.js → inherits-539844a6.js} +40 -56
  355. data/entry_types/scrolled/package/frontend/{useContentElementEditorState-245f1986.js → useContentElementEditorState-77fe6c79.js} +7 -8
  356. data/entry_types/scrolled/package/frontend/usePhonePlatform-c2ba875d.js +8 -0
  357. data/entry_types/scrolled/package/frontend-server.js +0 -1
  358. data/entry_types/scrolled/package/package.json +19 -10
  359. data/entry_types/scrolled/package/testHelpers.js +306 -70
  360. data/entry_types/scrolled/package/values/widgets.module.css +18 -0
  361. data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
  362. data/entry_types/scrolled/package/widgets/consentBar.js +47 -66
  363. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  364. data/entry_types/scrolled/package/widgets/defaultNavigation.js +177 -207
  365. data/entry_types/scrolled/package/widgets/excursionDialog.css +1 -0
  366. data/entry_types/scrolled/package/widgets/excursionDialog.js +109 -0
  367. data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -0
  368. data/entry_types/scrolled/package/widgets/excursionSheet.js +262 -0
  369. data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
  370. data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +6 -9
  371. data/entry_types/scrolled/package/widgets/iconScrollIndicator.css +1 -0
  372. data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +48 -0
  373. data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -0
  374. data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +144 -0
  375. data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
  376. data/entry_types/scrolled/package/widgets/textInlineFileRights.js +26 -9
  377. data/entry_types/scrolled/package/widgets-server.js +5 -0
  378. data/entry_types/scrolled/spec/factories/chapters.rb +14 -1
  379. data/entry_types/scrolled/spec/factories/content_elements.rb +1 -1
  380. data/lib/generators/pageflow/active_admin_initializer/active_admin_initializer_generator.rb +5 -3
  381. data/lib/generators/pageflow/assets/assets_generator.rb +7 -5
  382. data/lib/generators/pageflow/cancan/cancan_generator.rb +2 -1
  383. data/lib/generators/pageflow/cancan/templates/ability.rb +1 -1
  384. data/lib/generators/pageflow/error_pages/error_pages_generator.rb +2 -1
  385. data/lib/generators/pageflow/initializer/initializer_generator.rb +3 -2
  386. data/lib/generators/pageflow/install/install_generator.rb +2 -2
  387. data/lib/generators/pageflow/procfile/procfile_generator.rb +2 -1
  388. data/lib/generators/pageflow/resque/resque_generator.rb +6 -4
  389. data/lib/generators/pageflow/resque/templates/resque.rake +1 -1
  390. data/lib/generators/pageflow/routes/routes_generator.rb +4 -2
  391. data/lib/generators/pageflow/seeds/seeds_generator.rb +3 -2
  392. data/lib/generators/pageflow/seeds/templates/seeds.rb +6 -6
  393. data/lib/generators/pageflow/theme/theme_generator.rb +2 -1
  394. data/lib/generators/pageflow/user/user_generator.rb +2 -1
  395. data/lib/pageflow/ability_mixin.rb +25 -15
  396. data/lib/pageflow/active_admin_patches/views/attributes_table.rb +1 -0
  397. data/lib/pageflow/active_admin_patches/views/pages/base.rb +3 -2
  398. data/lib/pageflow/active_admin_patches/views/table_for.rb +1 -0
  399. data/lib/pageflow/additional_headers.rb +27 -0
  400. data/lib/pageflow/admin/attributes_table_rows.rb +3 -3
  401. data/lib/pageflow/admin/tabs.rb +1 -1
  402. data/lib/pageflow/built_in_file_type.rb +1 -1
  403. data/lib/pageflow/built_in_page_types_plugin.rb +1 -1
  404. data/lib/pageflow/built_in_widget_type.rb +2 -2
  405. data/lib/pageflow/built_in_widget_types_plugin.rb +2 -1
  406. data/lib/pageflow/configuration.rb +141 -18
  407. data/lib/pageflow/cutoff_modes.rb +39 -0
  408. data/lib/pageflow/editor_controller.rb +6 -10
  409. data/lib/pageflow/engine.rb +4 -5
  410. data/lib/pageflow/entry_export_import/attachment_files.rb +1 -1
  411. data/lib/pageflow/entry_export_import/entry_serialization.rb +5 -4
  412. data/lib/pageflow/entry_export_import/file_mappings.rb +1 -0
  413. data/lib/pageflow/entry_export_import/revision_serialization/import.rb +1 -1
  414. data/lib/pageflow/entry_export_import.rb +3 -3
  415. data/lib/pageflow/entry_types.rb +2 -2
  416. data/lib/pageflow/feature.rb +1 -1
  417. data/lib/pageflow/features.rb +4 -6
  418. data/lib/pageflow/file_importers.rb +4 -4
  419. data/lib/pageflow/file_type.rb +3 -3
  420. data/lib/pageflow/file_types.rb +3 -3
  421. data/lib/pageflow/global_config_api.rb +5 -6
  422. data/lib/pageflow/help_entries.rb +7 -7
  423. data/lib/pageflow/help_entry.rb +1 -1
  424. data/lib/pageflow/hooks.rb +1 -1
  425. data/lib/pageflow/nested_revision_component.rb +9 -27
  426. data/lib/pageflow/news_item_api.rb +1 -1
  427. data/lib/pageflow/page_type.rb +2 -3
  428. data/lib/pageflow/page_types.rb +3 -3
  429. data/lib/pageflow/paperclip_interpolations/support.rb +1 -1
  430. data/lib/pageflow/paperclip_processors/vtt.rb +1 -0
  431. data/lib/pageflow/paperclip_processors/webp.rb +2 -2
  432. data/lib/pageflow/partial_editor_fragment_renderer.rb +2 -2
  433. data/lib/pageflow/plugin.rb +1 -2
  434. data/lib/pageflow/quota.rb +9 -5
  435. data/lib/pageflow/quotas.rb +1 -1
  436. data/lib/pageflow/rails_version.rb +1 -0
  437. data/lib/pageflow/react.rb +1 -1
  438. data/lib/pageflow/revision_component.rb +8 -40
  439. data/lib/pageflow/revision_components.rb +16 -6
  440. data/lib/pageflow/seeds.rb +12 -16
  441. data/lib/pageflow/theme.rb +1 -1
  442. data/lib/pageflow/theme_customizations.rb +10 -10
  443. data/lib/pageflow/themes.rb +3 -3
  444. data/lib/pageflow/user_mixin.rb +6 -6
  445. data/lib/pageflow/version.rb +1 -1
  446. data/lib/pageflow/widget_type.rb +4 -4
  447. data/lib/pageflow/widget_types.rb +9 -9
  448. data/lib/pageflow/zencoder_api.rb +32 -42
  449. data/lib/pageflow/zencoder_audio_output_definition.rb +14 -13
  450. data/lib/pageflow/zencoder_meta_data_output_definition.rb +3 -2
  451. data/lib/pageflow/zencoder_output_definition.rb +16 -14
  452. data/lib/pageflow/zencoder_video_output_definition.rb +140 -88
  453. data/lib/pageflow.rb +7 -2
  454. data/lib/tasks/pageflow_tasks.rake +1 -1
  455. data/package/editor.js +960 -871
  456. data/package/frontend.js +113 -387
  457. data/package/package.json +2 -1
  458. data/package/testHelpers.js +10 -56
  459. data/package/ui.js +209 -251
  460. data/spec/factories/accounts.rb +37 -22
  461. data/spec/factories/audio_files.rb +2 -2
  462. data/spec/factories/authentication_tokens.rb +4 -4
  463. data/spec/factories/chapters.rb +4 -4
  464. data/spec/factories/draft_entries.rb +14 -6
  465. data/spec/factories/edit_locks.rb +1 -1
  466. data/spec/factories/entries.rb +28 -19
  467. data/spec/factories/entry_translation_groups.rb +6 -0
  468. data/spec/factories/file_usages.rb +2 -1
  469. data/spec/factories/folders.rb +1 -1
  470. data/spec/factories/image_files.rb +2 -2
  471. data/spec/factories/pages.rb +3 -3
  472. data/spec/factories/published_entries.rb +26 -8
  473. data/spec/factories/revisions.rb +1 -1
  474. data/spec/factories/sites.rb +6 -0
  475. data/spec/factories/test_multi_attachment_files.rb +1 -1
  476. data/spec/factories/text_track_files.rb +1 -1
  477. data/spec/factories/uploadable_files.rb +1 -1
  478. data/spec/factories/users.rb +6 -6
  479. data/spec/factories/video_files.rb +2 -2
  480. data/spec/factories/widgets.rb +1 -1
  481. data/spec/fixtures/7x15_rotated.jpg +0 -0
  482. data/vendor/assets/javascripts/wysihtml-toolbar.js +19288 -0
  483. metadata +105 -41
  484. data/config/initializers/revision_components.rb +0 -5
  485. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-8242f213.js +0 -107
  486. data/entry_types/scrolled/package/frontend/arrowRight-e42e6011.js +0 -77
  487. data/entry_types/scrolled/package/frontend/i18n-71c39823.js +0 -1129
@@ -1,25 +1,35 @@
1
1
  PageflowScrolled::Engine.routes.draw do
2
2
  scope module: 'editor' do
3
3
  shallow do
4
- resources :chapters do
4
+ # Legacy path to support editor sessions that span the deploy that
5
+ # introduces the storylines resource above.
6
+ resources :chapters, only: [:create] do
5
7
  collection do
6
8
  put :order
7
9
  end
10
+ end
8
11
 
9
- resources :sections do
12
+ resources :storylines, only: [] do
13
+ resources :chapters, only: [:create, :update, :destroy] do
10
14
  collection do
11
15
  put :order
12
16
  end
13
17
 
14
- member do
15
- post :duplicate
16
- end
17
-
18
- resources :content_elements do
18
+ resources :sections, only: [:create, :update, :destroy] do
19
19
  collection do
20
- put :batch
21
20
  put :order
22
21
  end
22
+
23
+ member do
24
+ post :duplicate
25
+ end
26
+
27
+ resources :content_elements, only: [:create, :update, :destroy] do
28
+ collection do
29
+ put :batch
30
+ put :order
31
+ end
32
+ end
23
33
  end
24
34
  end
25
35
  end
@@ -11,10 +11,10 @@ module PageflowScrolled
11
11
  def initializer
12
12
  inject_into_file('config/initializers/pageflow.rb',
13
13
  after: "Pageflow.configure do |config|\n") do
14
- " config.plugin(PageflowScrolled.plugin)\n\n" \
15
- " config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config|\n" \
16
- " entry_type_config.plugin(ScrolledThemesPlugin.new)\n" \
17
- " end\n\n"
14
+ " config.plugin(PageflowScrolled.plugin)\n\n " \
15
+ "config.for_entry_type(PageflowScrolled.entry_type) do |entry_type_config|\n " \
16
+ "entry_type_config.plugin(ScrolledThemesPlugin.new)\n " \
17
+ "end\n\n"
18
18
  end
19
19
  end
20
20
 
@@ -30,11 +30,11 @@ module PageflowScrolled
30
30
  end
31
31
 
32
32
  def install_packages
33
- run 'yarn add css-loader style-loader' \
34
- ' mini-css-extract-plugin css-minimizer-webpack-plugin' \
35
- ' postcss postcss-preset-env postcss-loader' \
36
- ' postcss-import postcss-url postcss-flexbugs-fixes' \
37
- ' @fontsource/source-sans-pro'
33
+ run 'yarn add css-loader style-loader ' \
34
+ 'mini-css-extract-plugin css-minimizer-webpack-plugin ' \
35
+ 'postcss postcss-preset-env postcss-loader ' \
36
+ 'postcss-import postcss-url postcss-flexbugs-fixes ' \
37
+ '@fontsource/source-sans-pro'
38
38
  end
39
39
 
40
40
  def webpack_config
@@ -76,7 +76,7 @@ module PageflowScrolled
76
76
  module: {
77
77
  rules: [
78
78
  {
79
- test: /\.(bmp|gif|jpe?g|png|tiff|ico|avif|webp|eot|otf|ttf|woff|woff2|svg|mp3)$/,
79
+ test: /\\.(bmp|gif|jpe?g|png|tiff|ico|avif|webp|eot|otf|ttf|woff|woff2|svg|mp3)$/,
80
80
  type: 'asset/resource'
81
81
  }
82
82
  ]
@@ -128,7 +128,7 @@ module PageflowScrolled
128
128
  def server_pack
129
129
  create_file 'app/javascript/packs/pageflow-scrolled-server.js', <<-JS
130
130
  import 'pageflow-scrolled/frontend-server';
131
- import 'pageflow-scrolled/contentElements-frontend';
131
+ import 'pageflow-scrolled/contentElements-server';
132
132
  import 'pageflow-scrolled/widgets-server';
133
133
  JS
134
134
  end
@@ -141,15 +141,7 @@ module PageflowScrolled
141
141
  end
142
142
 
143
143
  def default_theme
144
- theme_dir = 'app/javascript/pageflow-scrolled/themes/default'
145
- icons_src_dir = PageflowScrolled::Engine.root.join('package/src/frontend/icons')
146
-
147
- directory 'theme', theme_dir
148
-
149
- CUSTOM_THEME_ICONS.each do |icon|
150
- copy_file icons_src_dir.join("#{icon}.svg"),
151
- File.join(theme_dir, "icons/#{icon}.svg")
152
- end
144
+ directory 'theme', 'app/javascript/pageflow-scrolled/themes/default'
153
145
  end
154
146
  end
155
147
  end
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
4
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ viewBox="-65 -65 449 449" style="enable-background:new 0 0 330 330;" xml:space="preserve">
6
+ <g>
7
+ <path d="M165,0C74.019,0,0,74.02,0,165.001C0,255.982,74.019,330,165,330s165-74.018,165-164.999C330,74.02,255.981,0,165,0z
8
+ M165,300c-74.44,0-135-60.56-135-134.999C30,90.562,90.56,30,165,30s135,60.562,135,135.001C300,239.44,239.439,300,165,300z"/>
9
+ <path d="M164.998,70c-11.026,0-19.996,8.976-19.996,20.009c0,11.023,8.97,19.991,19.996,19.991
10
+ c11.026,0,19.996-8.968,19.996-19.991C184.994,78.976,176.024,70,164.998,70z"/>
11
+ <path d="M165,140c-8.284,0-15,6.716-15,15v90c0,8.284,6.716,15,15,15c8.284,0,15-6.716,15-15v-90C180,146.716,173.284,140,165,140z"/>
12
+ </g>
13
+ </svg>
@@ -0,0 +1 @@
1
+ <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="volume-mute" class="svg-inline--fa fa-volume-mute fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"></path></svg>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
4
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ viewBox="5 5 84 84" style="enable-background:new 0 0 96 96;" xml:space="preserve">
6
+ <g>
7
+ <path d="M67.5,18c-5.1,0-9.3,4.2-9.3,9.3c0,0.5,0.1,1.1,0.2,1.6l-23,12.9c-1.7-1.8-4.1-3-6.8-3
8
+ c-5.1,0-9.3,4.1-9.3,9.3c0,5.1,4.1,9.3,9.3,9.3c2.7,0,5.2-1.2,6.9-3.1l22.8,13.4c0,0.4-0.1,0.7-0.1,1.1c0,5.1,4.1,9.3,9.3,9.3
9
+ c5.1,0,9.3-4.1,9.3-9.3c0-5.1-4.1-9.3-9.3-9.3c-2.8,0-5.4,1.3-7.1,3.3L37.7,49.4c0.1-0.4,0.1-0.9,0.1-1.3c0-0.5,0-1-0.1-1.5
10
+ l23.1-13c1.7,1.8,4.1,3,6.8,3c5.1,0,9.3-4.1,9.3-9.3C76.8,22.2,72.6,18,67.5,18L67.5,18z"/>
11
+ </g>
12
+ </svg>
@@ -0,0 +1 @@
1
+ <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="volume-mute" class="svg-inline--fa fa-volume-mute fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="m 232.35938,64.009766 c -0.39117,-0.0089 -0.78371,-0.0083 -1.17579,0.002 -5.70289,0.149548 -11.46367,2.348437 -16.15429,7.039062 L 126.06055,160 H 24 C 10.74,160 0,170.74 0,184 v 144 c 0,13.25 10.74,24 24,24 h 102.06055 l 88.96875,88.94922 c 15.03,15.03 40.9707,4.47125 40.9707,-16.96875 V 88.019531 C 256,73.726836 244.48559,64.2867 232.35938,64.009766 Z m 149.5,31.99414 c -8.10621,-0.16023 -16.09719,3.8143 -20.75,11.216794 -7.09002,11.28 -3.77985,26.20938 7.41015,33.35938 C 408.26953,165.97008 432,209.11 432,256 c 0,46.89 -23.73047,90.02992 -63.48047,115.41992 -11.19,7.14 -14.50016,22.06938 -7.41015,33.35938 6.50999,10.36 21.12109,15.14093 33.12109,7.46093 C 447.94047,377.94023 480,319.54 480,256 480,192.47 447.94047,134.05977 394.23047,99.759766 c -3.84656,-2.454375 -8.125,-3.67193 -12.37109,-3.75586 z m -55.03126,80.173824 c -8.5099,-0.0456 -16.79523,4.42047 -21.20898,12.40235 -6.39,11.61 -2.15883,26.19937 9.45117,32.60937 C 327.98031,228.27945 336,241.63 336,256 c 0,14.38 -8.01992,27.72055 -20.91992,34.81055 -11.61,6.41 -15.83922,20.99937 -9.44922,32.60937 6.43,11.66 21.04937,15.79922 32.60937,9.44922 28.23,-15.55 45.76954,-44.99891 45.76954,-76.87891 0,-31.88 -17.5393,-61.31937 -45.7793,-76.85937 -3.61875,-1.97813 -7.53421,-2.9324 -11.40235,-2.95313 z"></path></svg>
@@ -0,0 +1,56 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 -50 951.9 338.9" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#fff;}
7
+ .st1{fill:#fff;stroke:#fff;}
8
+ </style>
9
+ <title>Element 1</title>
10
+ <g id="Ebene_2">
11
+ <g id="Ebene_1-2">
12
+ <path class="st0" d="M106.3,238.9l-86.7-86.7C-3.7,129-2,105.3,3.4,89.5c3.8-10.6,9.7-20.2,17.4-28.4l6.5,6.5
13
+ C20.5,74.8,15.3,83.4,12,92.8c-6.6,19.3-1.8,37.1,14,52.9l80.2,80.2l39.1-39.1l6.5,6.5L106.3,238.9z"/>
14
+ <path class="st0" d="M104.2,234.5c-23.2-23.2-21.8-46.8-16.5-62.4c3.6-10.5,9.4-20,17-28.1l42.3-42.3l6.5,6.5l-42.3,42.3
15
+ c-6.6,7.2-11.7,15.7-14.9,24.9c-6.3,19-1.5,36.8,14.3,52.6L104.2,234.5z"/>
16
+ <path class="st0" d="M61.3,193.9c-23.2-23.2-21.8-46.8-16.5-62.4c3.6-10.5,9.4-20,17-28.1l84-84l6.5,6.5l-84,84
17
+ c-6.6,7.2-11.7,15.7-14.9,24.9c-6.4,19.1-1.5,36.8,14.4,52.7L61.3,193.9z"/>
18
+ <path class="st0" d="M151.6,110.1l-6.5-6.5c6.7-7.2,11.8-15.7,15-25c6.4-19.1,1.6-36.9-14.3-52.7S112.1,5.4,92.6,12.2
19
+ C83.1,15.7,74.4,21,67,27.8L25.1,69.7l-6.5-6.5l41.9-41.9c8.3-7.8,18.1-13.8,28.8-17.7c16-5.6,39.9-7.5,63.1,15.8
20
+ s21.7,46.8,16.4,62.5C165.1,92.4,159.2,102,151.6,110.1z"/>
21
+ <path class="st0" d="M151.2,194l-6.5-6.5l3.2,3.2l-3.3-3.2c6.5-7.1,11.5-15.5,14.6-24.6c6.2-18.9,1.3-36.5-14.6-52.4l6.5-6.5
22
+ c23.2,23.2,21.9,46.6,16.8,62.1C164.5,176.5,158.7,186,151.2,194z"/>
23
+ <path class="st0" d="M102.2,69.6"/>
24
+ <path class="st0" d="M106.8,224.7"/>
25
+ <path class="st1" d="M239.2,70.9c0-1.8,0.9-2.8,2.7-2.8h24.5c14.1,0,24.3,9.2,24.3,23.7s-10.2,24.1-24.3,24.1H247V144
26
+ c0.2,1.4-0.8,2.6-2.2,2.8c-0.2,0-0.3,0-0.5,0H242c-1.8,0-2.7-1-2.7-2.8L239.2,70.9z M265.4,109c10.5,0,17.4-6.4,17.4-17.1
27
+ s-6.8-16.8-17.2-16.8H247V109H265.4z"/>
28
+ <path class="st1" d="M326.5,70.4c0.3-1.4,1.6-2.3,3-2.2h3.7c1.4-0.1,2.7,0.9,3,2.2l27.1,73.2c0.6,2-0.2,3.2-2.2,3.2h-2.5
29
+ c-1.5,0.1-2.8-0.8-3.1-2.2l-8.4-22.8h-31.5l-8.3,22.8c-0.3,1.4-1.7,2.4-3.1,2.2h-2.4c-2.1,0-2.9-1.2-2.4-3.2L326.5,70.4z
30
+ M344.9,115l-10.4-28.5c-1.2-3.7-2.9-10.3-2.9-10.3h-0.2c0,0-1.8,6.6-3,10.3L317.8,115H344.9z"/>
31
+ <path class="st1" d="M449.2,130.2c-1.9,6.2-16.6,18-32.8,18c-21.6,0-38.6-17.4-38.6-40.6c0-22.9,17-40.7,39.7-40.7
32
+ c13.4,0,22.5,5.2,25.9,7.5c1.1,0.6,1.5,2.1,0.9,3.2c-0.1,0.2-0.3,0.4-0.4,0.6l-1,1.4c-0.6,1.2-2.1,1.6-3.3,1
33
+ c-0.2-0.1-0.3-0.2-0.5-0.3c-6.4-4-13.7-6.2-21.3-6.2c-19,0-31.9,14.7-31.9,33.2c0,19.2,13.3,33.6,31.2,33.6
34
+ c15.8,0,24.9-11.5,24.9-11.5v-13.2h-19.6c-1.5,0-2.8-1.3-2.8-2.8V112c0-1.5,1.3-2.8,2.8-2.8h24.1c1.5,0,2.7,1.2,2.7,2.7
35
+ c0,0,0,0,0,0L449.2,130.2"/>
36
+ <path class="st1" d="M474.2,70.9c0-1.8,0.9-2.8,2.7-2.8h38.8c1.4-0.2,2.6,0.9,2.8,2.3c0,0.2,0,0.4,0,0.5v1.3
37
+ c0.2,1.4-0.9,2.6-2.3,2.8c-0.2,0-0.4,0-0.5,0h-33.8v28.7H509c1.8,0,2.8,0.9,2.8,2.7v1.4c0.2,1.4-0.9,2.6-2.3,2.8
38
+ c-0.2,0-0.4,0-0.5,0h-27.1v29.2h35.8c1.4-0.2,2.6,0.9,2.8,2.3c0,0.2,0,0.4,0,0.5v1.3c0.2,1.4-0.9,2.6-2.3,2.8c-0.2,0-0.4,0-0.5,0
39
+ h-40.9c-1.8,0-2.7-1-2.7-2.8L474.2,70.9z"/>
40
+ <path class="st1" d="M543.5,70.9c0-1.8,0.9-2.8,2.7-2.8h35.9c1.4-0.2,2.6,0.9,2.8,2.3c0,0.2,0,0.4,0,0.5v1.3
41
+ c0.2,1.4-0.9,2.6-2.3,2.8c-0.2,0-0.4,0-0.5,0h-30.9v29.6h26.2c1.3-0.2,2.5,0.7,2.7,2c0,0.2,0,0.5,0,0.7v1.4c0,1.8-0.9,2.8-2.7,2.8
42
+ h-26.2V144c0.2,1.4-0.8,2.6-2.2,2.8c-0.2,0-0.3,0-0.5,0h-2.3c-1.8,0-2.7-1-2.7-2.8V70.9z"/>
43
+ <path class="st1" d="M606.6,70.9c0-1.8,0.9-2.8,2.7-2.8h2.3c1.4-0.1,2.6,0.9,2.7,2.3c0,0.2,0,0.3,0,0.5v68.9H648
44
+ c1.4-0.2,2.6,0.9,2.8,2.3c0,0.2,0,0.4,0,0.5v1.3c0.2,1.4-0.9,2.6-2.3,2.8c-0.2,0-0.4,0-0.5,0h-38.7c-1.8,0-2.7-1-2.7-2.8
45
+ L606.6,70.9z"/>
46
+ <path class="st1" d="M699.6,66.8c23.1,0,40.1,17.6,40.1,40.2c0,23.1-17,41.2-40.1,41.2S659.5,130,659.5,107
47
+ C659.5,84.4,676.6,66.8,699.6,66.8z M699.6,140.9c18.5,0,32-14.8,32-33.9c0-18.7-13.5-32.9-32-32.9s-32,14.2-32,32.9
48
+ C667.6,126.1,681.2,140.9,699.6,140.9z"/>
49
+ <path class="st1" d="M756.7,71.2c-0.5-1.9,0.5-3,2.5-3h2.5c1.5-0.1,2.8,1,3,2.5l14.7,58.7c1,4,1.8,8.4,1.8,8.4h0.2
50
+ c0,0,0.8-4.4,1.9-8.4l16.3-58.8c0.3-1.4,1.6-2.4,3-2.3h2.6c1.5-0.1,2.8,0.9,3,2.3l16.1,58.8c0.8,2.8,1.5,5.6,2,8.4h0.2
51
+ c0,0,0.7-4.4,1.7-8.4l15.3-58.7c0.2-1.5,1.5-2.5,3-2.5h2.5c1.9,0,2.9,1.1,2.3,3l-19.5,73.3c-0.3,1.5-1.6,2.5-3.1,2.4h-4.2
52
+ c-1.5,0.1-2.8-0.9-3.1-2.4l-14.5-53c-1.5-5-2.8-11.8-2.8-11.8h-0.3c0,0-1.3,6.7-2.8,11.8l-14.7,53c-0.3,1.4-1.6,2.4-3,2.4h-4.4
53
+ c-1.5,0.1-2.8-1-3-2.5L756.7,71.2z"/>
54
+ </g>
55
+ </g>
56
+ </svg>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 20.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="-50 -50 272.07254 338.90793" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#fff;}
7
+ </style>
8
+ <title>Pageflow</title>
9
+ <path class="st0" d="M106.3,238.9l-86.7-86.7C-3.7,129-2,105.3,3.4,89.5c3.8-10.6,9.7-20.2,17.4-28.4l6.5,6.5
10
+ C20.5,74.8,15.3,83.4,12,92.8c-6.6,19.3-1.8,37.1,14,52.9l80.2,80.2l39.1-39.1l6.5,6.5L106.3,238.9z"/>
11
+ <path class="st0" d="M104.2,234.5c-23.2-23.2-21.8-46.8-16.5-62.4c3.6-10.5,9.4-20,17-28.1l42.3-42.3l6.5,6.5l-42.3,42.3
12
+ c-6.6,7.2-11.7,15.7-14.9,24.9c-6.3,19-1.5,36.8,14.3,52.6L104.2,234.5z"/>
13
+ <path class="st0" d="M61.3,193.9c-23.2-23.2-21.8-46.8-16.5-62.4c3.6-10.5,9.4-20,17-28.1l84-84l6.5,6.5l-84,84
14
+ c-6.6,7.2-11.7,15.7-14.9,24.9c-6.4,19.1-1.5,36.8,14.4,52.7L61.3,193.9z"/>
15
+ <path class="st0" d="M151.6,110.1l-6.5-6.5c6.7-7.2,11.8-15.7,15-25c6.4-19.1,1.6-36.9-14.3-52.7S112.1,5.4,92.6,12.2
16
+ C83.1,15.7,74.4,21,67,27.8L25.1,69.7l-6.5-6.5l41.9-41.9c8.3-7.8,18.1-13.8,28.8-17.7c16-5.6,39.9-7.5,63.1,15.8
17
+ s21.7,46.8,16.4,62.5C165.1,92.4,159.2,102,151.6,110.1z"/>
18
+ <path class="st0" d="M151.2,194l-6.5-6.5l3.2,3.2l-3.3-3.2c6.5-7.1,11.5-15.5,14.6-24.6c6.2-18.9,1.3-36.5-14.6-52.4l6.5-6.5
19
+ c23.2,23.2,21.9,46.6,16.8,62.1C164.5,176.5,158.7,186,151.2,194z"/>
20
+ <path class="st0" d="M102.2,69.6"/>
21
+ <path class="st0" d="M106.8,224.7"/>
22
+ </svg>
@@ -9,17 +9,32 @@ class ScrolledThemesPlugin
9
9
  widget: '"Source Sans Pro", sans-serif'
10
10
  },
11
11
  custom_theme_icons: <%= @custom_theme_icons %>,
12
- colors: {
13
- accent: '#e10028',
14
- widget: {
15
- surface: '#fff',
16
- on_surface: '#000',
17
- primary: '#00375a',
18
- on_primary: '#fff',
19
- secondary: '#c2c2c2',
20
- on_seconday: '#000',
21
- background: 'rgba(255, 255, 255, 0.95)',
22
- on_background: '#000'
12
+ properties: {
13
+ root: {
14
+ accent_color: '#e10028',
15
+ widget_surface_color: '#fff',
16
+ widget_on_surface_color: '#000',
17
+ widget_primary_color: '#00375a',
18
+ widget_on_primary_color: '#fff',
19
+ widget_secondary_color: '#c2c2c2',
20
+ widget_on_seconday_color: '#000',
21
+ widget_background_color: 'rgb(255 255 255 / .95)',
22
+ widget_on_background_color: '#000',
23
+ },
24
+
25
+ dark: {
26
+ accent_color: '#ff8097',
27
+ widget_surface_color: '#000',
28
+ widget_surface_backdrop_blur: '5px',
29
+ widget_surface_opacity: '70%',
30
+ widget_on_surface_color: '#eee',
31
+ widget_primary_color: '#fff',
32
+ widget_on_primary_color: '#000',
33
+ widget_background_color: 'rgb(0 0 0 / .65)',
34
+ widget_background_backdrop_blur: '5px',
35
+ widget_on_background_color: '#eee',
36
+ default_navigation_separator_color: 'rgb(255 255 255 / .1)',
37
+ default_navigation_progress_bar_background_color: 'rgb(0 0 0 / .5)',
23
38
  }
24
39
  },
25
40
  logo_alt_text: 'Pageflow',
@@ -8,8 +8,14 @@ module PageflowScrolled
8
8
 
9
9
  # content_element_type_names option only takes effect for frontend
10
10
  # packs.
11
- def register(path, content_element_type_names: [])
12
- @packs << AdditionalPack.new(path, content_element_type_names)
11
+ def register(path, content_element_type_names: [], stylesheet: false, if: nil, unless: nil)
12
+ @packs << AdditionalPack.new(
13
+ path,
14
+ content_element_type_names,
15
+ stylesheet,
16
+ binding.local_variable_get(:if),
17
+ binding.local_variable_get(:unless)
18
+ )
13
19
  end
14
20
 
15
21
  # @api private
@@ -20,19 +26,32 @@ module PageflowScrolled
20
26
  end
21
27
 
22
28
  # @api private
23
- def paths
24
- @packs.map(&:path)
29
+ def paths(entry)
30
+ packs_matching_conditions(entry).map(&:path)
25
31
  end
26
32
 
27
33
  # @api private
28
- def paths_for_content_element_types(type_names)
29
- @packs.reject { |pack|
34
+ def stylesheet_paths(entry)
35
+ packs_matching_conditions(entry).select(&:stylesheet).map(&:path)
36
+ end
37
+
38
+ # @api private
39
+ def paths_for_content_element_types(entry, type_names)
40
+ packs_matching_conditions(entry).reject { |pack|
30
41
  pack.content_element_type_names.present? &&
31
- (pack.content_element_type_names & type_names).empty?
42
+ !pack.content_element_type_names.intersect?(type_names)
32
43
  }.map(&:path)
33
44
  end
34
45
 
35
46
  # @api private
36
- AdditionalPack = Struct.new(:path, :content_element_type_names)
47
+ AdditionalPack = Struct.new(:path, :content_element_type_names, :stylesheet, :if, :unless)
48
+
49
+ private
50
+
51
+ def packs_matching_conditions(entry)
52
+ @packs
53
+ .select { |pack| !pack.if || pack.if.call(entry:) }
54
+ .select { |pack| !pack.unless || !pack.unless.call(entry:) }
55
+ end
37
56
  end
38
57
  end
@@ -20,7 +20,7 @@ module PageflowScrolled
20
20
  # @api private
21
21
  def for(entry, request, options = {})
22
22
  items_for_entry(entry, options).each_with_object({}) do |item, result|
23
- result[item.name] = item.callable.call(entry: entry, request: request, foo: 1)
23
+ result[item.name] = item.callable.call(entry:, request:, foo: 1)
24
24
  end
25
25
  end
26
26
 
@@ -0,0 +1,27 @@
1
+ module PageflowScrolled
2
+ # Register additional theme customization files that shall be
3
+ # included in theme assets seed data.
4
+ class AdditionalThemeAssets
5
+ # @api private
6
+ def initialize
7
+ @assets = []
8
+ end
9
+
10
+ # Register additional theme customization files and specify style
11
+ # that shall be used.
12
+ def register(theme_file_role:, theme_file_style: :resized)
13
+ @assets << AdditionalThemeAsset.new(
14
+ theme_file_role,
15
+ theme_file_style
16
+ )
17
+ end
18
+
19
+ # @api private
20
+ def each(&)
21
+ @assets.each(&)
22
+ end
23
+
24
+ # @api private
25
+ AdditionalThemeAsset = Struct.new(:theme_file_role, :theme_file_style)
26
+ end
27
+ end
@@ -10,7 +10,7 @@ module PageflowScrolled
10
10
  # @example
11
11
  #
12
12
  # config.additional_frontend_packs.register(
13
- # pageflow-scrolled/contentElements/some-pack',
13
+ # 'pageflow-scrolled/contentElements/some-pack',
14
14
  # content_element_type_names: ['someType']
15
15
  # )
16
16
  #
@@ -23,7 +23,7 @@ module PageflowScrolled
23
23
  # @example
24
24
  #
25
25
  # config.additional_editor_packs.register(
26
- # pageflow-scrolled/contentElements/some-pack'
26
+ # 'pageflow-scrolled/contentElements/some-pack'
27
27
  # )
28
28
  #
29
29
  # @return [AdditionalPacks]
@@ -36,14 +36,25 @@ module PageflowScrolled
36
36
  # @example
37
37
  #
38
38
  # config.additional_frontend_seed_data.register(
39
- # pageflow-scrolled/contentElements/some-pack',
40
- # ->(entry, request) { {some: 'data'}}
39
+ # 'someData',
40
+ # ->(entry:, request:, **) { {some: 'data'}}
41
41
  # )
42
42
  #
43
43
  # @return [AdditionalSeedData]
44
44
  # @since 15.7
45
45
  attr_reader :additional_frontend_seed_data
46
46
 
47
+ # Include paths of additional theme customization files in theme
48
+ # assets seed data.
49
+ #
50
+ # @example
51
+ #
52
+ # config.additional_theme_assets.register(theme_file_role: :footer_logo)
53
+ #
54
+ # @return [AdditionalThemeAssets]
55
+ # @since 17.1
56
+ attr_reader :additional_theme_assets
57
+
47
58
  # Determine which vendors a content element will require consent
48
59
  # for. Based on the vendor name returned here, the following
49
60
  # translations will be used in consent UI components.
@@ -142,6 +153,7 @@ module PageflowScrolled
142
153
  @additional_editor_packs = AdditionalPacks.new
143
154
 
144
155
  @additional_frontend_seed_data = AdditionalSeedData.new
156
+ @additional_theme_assets = AdditionalThemeAssets.new
145
157
  @content_element_consent_vendors = ContentElementConsentVendors.new
146
158
  @consent_vendor_host_matchers = {}
147
159
 
@@ -23,7 +23,7 @@ module PageflowScrolled
23
23
  next unless @callables[content_element.type_name]
24
24
 
25
25
  result[content_element.id] = @callables[content_element.type_name].call(
26
- entry: entry,
26
+ entry:,
27
27
  configuration: content_element.configuration
28
28
  )
29
29
  }.compact
@@ -12,7 +12,14 @@ module PageflowScrolled
12
12
  c.file_types.register(Pageflow::BuiltInFileType.audio)
13
13
  c.file_types.register(Pageflow::BuiltInFileType.other)
14
14
 
15
- c.revision_components.register(Storyline)
15
+ c.revision_components.register(Storyline, create_defaults: true)
16
+
17
+ ['tikTokEmbed', 'hotspots'].each do |name|
18
+ c.additional_frontend_packs.register(
19
+ "pageflow-scrolled/contentElements/#{name}-frontend",
20
+ content_element_type_names: [name]
21
+ )
22
+ end
16
23
 
17
24
  c.widget_types.register(ReactWidgetType.new(name: 'defaultNavigation',
18
25
  role: 'header'),
@@ -27,12 +34,25 @@ module PageflowScrolled
27
34
  c.widget_types.register(ReactWidgetType.new(name: 'textInlineFileRights',
28
35
  role: 'inlineFileRights'))
29
36
 
37
+ c.features.register('icon_scroll_indicator') do |feature_config|
38
+ feature_config.widget_types.register(
39
+ ReactWidgetType.new(name: 'iconScrollIndicator',
40
+ role: 'scrollIndicator'),
41
+ default: true
42
+ )
43
+ end
44
+
30
45
  c.features.register('datawrapper_chart_embed_opt_in')
31
46
  c.features.enable_by_default('datawrapper_chart_embed_opt_in')
32
47
  c.features.register('iframe_embed_content_element')
33
- c.features.register('image_gallery_content_element')
34
48
  c.features.register('frontend_v2')
35
49
  c.features.register('scrolled_entry_fragment_caching')
50
+ c.features.register('backdrop_content_elements')
51
+ c.features.register('custom_palette_colors')
52
+ c.features.register('decoration_effects')
53
+ c.features.register('content_element_margins')
54
+ c.features.register('backdrop_size')
55
+ c.features.register('section_paddings')
36
56
 
37
57
  c.additional_frontend_seed_data.register(
38
58
  'frontendVersion',
@@ -52,9 +72,9 @@ module PageflowScrolled
52
72
  uri = URI.parse(configuration['source'])
53
73
  host_matchers = Pageflow.config_for(entry).consent_vendor_host_matchers
54
74
 
55
- host_matchers.detect do |matcher, _|
75
+ host_matchers.detect { |matcher, _|
56
76
  uri.host =~ matcher
57
- end&.last
77
+ }&.last
58
78
  rescue URI::InvalidURIError
59
79
  nil
60
80
  end
@@ -57,18 +57,18 @@ module PageflowScrolled
57
57
  video_files_by_name = create_files(draft_entry,
58
58
  :video,
59
59
  attributes.fetch(:video_files, {}),
60
- options.fetch(:skip_encoding, false))
60
+ skip_encoding: options.fetch(:skip_encoding, false))
61
61
 
62
62
  audio_files_by_name = create_files(draft_entry,
63
63
  :audio,
64
64
  attributes.fetch(:audio_files, {}),
65
- options.fetch(:skip_encoding, false))
65
+ skip_encoding: options.fetch(:skip_encoding, false))
66
66
 
67
67
  files_by_name = image_files_by_name.merge(video_files_by_name).merge(audio_files_by_name)
68
68
 
69
69
  # rewrite parent file references to actual ids
70
70
  text_tracks_by_name = attributes.fetch(:text_track_files, {})
71
- text_tracks_by_name.each do |_name, text_track_config|
71
+ text_tracks_by_name.each_value do |text_track_config|
72
72
  parent_file = files_by_name.fetch(text_track_config['parent_file_id'])
73
73
  text_track_config['parent_file_id'] = parent_file.id
74
74
  end
@@ -92,14 +92,16 @@ module PageflowScrolled
92
92
  say(" sample scrolled entry '#{entry.title}'\n")
93
93
  end
94
94
 
95
- def create_files(draft_entry, file_type, file_data_by_name, skip_encoding = false)
95
+ def create_files(draft_entry, file_type, file_data_by_name, skip_encoding: false)
96
96
  file_data_by_name.transform_values do |data|
97
97
  say(" creating #{file_type} file from #{data['url']}")
98
98
 
99
99
  file_state = %i[image text_track].include?(file_type) ? 'processed' : 'uploading'
100
+ uri = URI.parse(data['url'])
100
101
  file = draft_entry.create_file!(Pageflow::BuiltInFileType.send(file_type),
101
102
  state: file_state,
102
- attachment: URI.parse(data['url']),
103
+ attachment: uri,
104
+ display_name: File.basename(uri.path, '*'),
103
105
  configuration: data['configuration'],
104
106
  parent_file_model_type: data['parent_file_model_type'],
105
107
  parent_file_id: data['parent_file_id'],
@@ -109,18 +111,18 @@ module PageflowScrolled
109
111
  file.update!(state: 'encoded')
110
112
  if file_type.eql?(:video)
111
113
  file.update!(output_presences: {
112
- "dash-playlist" => true,
113
- "hls-playlist" => true,
114
- "dash-medium"=> true,
115
- "hls-medium" => true,
116
- "dash-high" => true,
117
- "hls-high" => true,
118
- "dash-low" => true,
119
- "hls-low" => true,
120
- "medium" => true,
121
- "high" => true,
122
- "low" => true
123
- })
114
+ 'dash-playlist' => true,
115
+ 'hls-playlist' => true,
116
+ 'dash-medium' => true,
117
+ 'hls-medium' => true,
118
+ 'dash-high' => true,
119
+ 'hls-high' => true,
120
+ 'dash-low' => true,
121
+ 'hls-low' => true,
122
+ 'medium' => true,
123
+ 'high' => true,
124
+ 'low' => true
125
+ })
124
126
  end
125
127
  else
126
128
  file.publish!
@@ -134,12 +136,12 @@ module PageflowScrolled
134
136
  def create_chapter(entry, chapter_config, position, files_by_name)
135
137
  section_configs = chapter_config.delete('sections') || []
136
138
  chapter = Chapter.create!(
137
- revision: entry.draft,
139
+ storyline: Storyline.all_for_revision(entry.draft).first,
138
140
  configuration: {
139
141
  title: chapter_config['title'],
140
142
  summary: chapter_config['summary']
141
143
  },
142
- position: position
144
+ position:
143
145
  )
144
146
 
145
147
  section_configs.each_with_index do |section_config, i|
@@ -154,9 +156,9 @@ module PageflowScrolled
154
156
  %w[image imageMobile video],
155
157
  files_by_name)
156
158
 
157
- section = Section.create!(chapter: chapter,
159
+ section = Section.create!(chapter:,
158
160
  configuration: section_config,
159
- position: position)
161
+ position:)
160
162
 
161
163
  content_element_configs.each_with_index do |content_element_config, i|
162
164
  create_content_element(section, content_element_config, i, files_by_name)
@@ -176,7 +178,7 @@ module PageflowScrolled
176
178
  section.content_elements.create!(
177
179
  type_name: content_element_config['type'],
178
180
  configuration: content_element_config['props'],
179
- position: position
181
+ position:
180
182
  )
181
183
  end
182
184
 
@@ -11,7 +11,7 @@ module PageflowScrolled
11
11
  Pageflow::EntryType.new(name: 'scrolled',
12
12
  frontend_app: PageflowScrolled::EntriesController.action(:show),
13
13
  configuration: PageflowScrolled::Configuration,
14
- editor_fragment_renderer: editor_fragment_renderer,
14
+ editor_fragment_renderer:,
15
15
  editor_app: PageflowScrolled::Engine,
16
16
  web_app_manifest: PageflowScrolled::WebAppManifest,
17
17
  theme_files: {
@@ -29,6 +29,7 @@ namespace :pageflow_scrolled do
29
29
  if ENV['PAGEFLOW_SCROLLED_DB_SEED_SKIP_FILES'] == 'true'
30
30
  puts 'Skipping file uploads to S3.'
31
31
  Paperclip::Storage::S3.class_eval { def flush_writes; end }
32
+ Pageflow::DraftEntry.class_eval { def generate_file_name(file_name) = file_name }
32
33
  end
33
34
 
34
35
  account = seeds.account(name: 'storybook-seed') do |account_in_progress|
@@ -39,7 +40,7 @@ namespace :pageflow_scrolled do
39
40
  seeds.sample_scrolled_entry(
40
41
  attributes: {
41
42
  title: 'Storybook seed',
42
- account: account,
43
+ account:,
43
44
  chapters: [],
44
45
  image_files: {
45
46
  turtle: {
@@ -119,8 +120,8 @@ namespace :pageflow_scrolled do
119
120
  end
120
121
 
121
122
  if args[:output_dir].blank?
122
- puts 'Missing argument: Pass output directory via '\
123
- '`rake pageflow_scrolled:storybook:seed:setup[some/directory]`'
123
+ puts 'Missing argument: Pass output directory via ' \
124
+ '`rake pageflow_scrolled:storybook:seed:setup[some/directory]`'
124
125
  exit 1
125
126
  end
126
127
 
@@ -150,8 +151,8 @@ namespace :pageflow_scrolled do
150
151
  end
151
152
 
152
153
  if args[:output_dir].blank?
153
- puts 'Missing argument: Pass output directory via '\
154
- '`rake pageflow_scrolled:storybook:seed:setup[some/directory]`'
154
+ puts 'Missing argument: Pass output directory via ' \
155
+ '`rake pageflow_scrolled:storybook:seed:setup[some/directory]`'
155
156
  exit 1
156
157
  end
157
158