pageflow 15.6.1 → 15.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +236 -11
  3. data/README.md +1 -2
  4. data/admins/pageflow/entry.rb +28 -57
  5. data/admins/pageflow/user.rb +1 -3
  6. data/app/assets/images/pageflow/admin/icons/buttons/editor.svg +2 -0
  7. data/app/assets/images/pageflow/admin/icons/buttons/preview.svg +2 -0
  8. data/app/assets/images/pageflow/admin/icons/buttons/show_public.svg +2 -0
  9. data/app/assets/images/pageflow/admin/icons/delete.svg +9 -0
  10. data/app/assets/images/pageflow/admin/icons/done.svg +6 -0
  11. data/app/assets/images/pageflow/admin/icons/edit.svg +7 -0
  12. data/app/assets/images/pageflow/admin/icons/editor.svg +2 -0
  13. data/app/assets/images/pageflow/admin/icons/folder.svg +8 -0
  14. data/app/assets/images/pageflow/admin/icons/folder_active.svg +8 -0
  15. data/app/assets/images/pageflow/admin/icons/info.svg +3 -0
  16. data/app/assets/images/pageflow/admin/icons/new.svg +5 -0
  17. data/app/assets/images/pageflow/admin/icons/preview.svg +2 -0
  18. data/app/assets/images/pageflow/admin/icons/published.svg +2 -0
  19. data/app/assets/images/pageflow/admin/icons/published_with_password.svg +2 -0
  20. data/app/assets/images/pageflow/admin/icons/show_public.svg +2 -0
  21. data/app/assets/images/pageflow/editor/blank_entry/logo.png +0 -0
  22. data/app/assets/images/pageflow/themes/default/embed_opt_in.svg +3 -0
  23. data/app/assets/images/pageflow/themes/default/embed_opt_out_info.svg +16 -0
  24. data/app/assets/javascripts/pageflow/admin/entries.js +9 -57
  25. data/app/assets/javascripts/pageflow/dist/ui.js +127 -10
  26. data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +18 -16
  27. data/app/assets/stylesheets/pageflow/admin/badge_list.scss +25 -35
  28. data/app/assets/stylesheets/pageflow/admin/columns.scss +13 -11
  29. data/app/assets/stylesheets/pageflow/admin/embed_code.scss +1 -4
  30. data/app/assets/stylesheets/pageflow/admin/entries/folders.scss +44 -19
  31. data/app/assets/stylesheets/pageflow/admin/entries.scss +15 -31
  32. data/app/assets/stylesheets/pageflow/admin/features.scss +3 -1
  33. data/app/assets/stylesheets/pageflow/admin/forms.scss +14 -12
  34. data/app/assets/stylesheets/pageflow/admin/hint.scss +8 -14
  35. data/app/assets/stylesheets/pageflow/admin/icon_button.scss +25 -14
  36. data/app/assets/stylesheets/pageflow/admin/icon_link.scss +31 -15
  37. data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +14 -7
  38. data/app/assets/stylesheets/pageflow/admin/status_tags.scss +5 -4
  39. data/app/assets/stylesheets/pageflow/admin/tabs_view.scss +36 -34
  40. data/app/assets/stylesheets/pageflow/admin/tooltip_bubble.scss +15 -11
  41. data/app/assets/stylesheets/pageflow/admin.scss +12 -0
  42. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +15 -61
  43. data/app/assets/stylesheets/pageflow/editor/base.scss +28 -13
  44. data/app/assets/stylesheets/pageflow/editor/blank_entry.scss +6 -6
  45. data/app/assets/stylesheets/pageflow/editor/change_theme.scss +28 -71
  46. data/app/assets/stylesheets/pageflow/editor/composables.scss +2 -2
  47. data/app/assets/stylesheets/pageflow/editor/confirm_encoding.scss +18 -36
  48. data/app/assets/stylesheets/pageflow/editor/confirm_upload.scss +12 -39
  49. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +39 -12
  50. data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.scss +3 -3
  51. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -10
  52. data/app/assets/stylesheets/pageflow/editor/emulation_mode_button.scss +3 -8
  53. data/app/assets/stylesheets/pageflow/editor/failures.scss +3 -3
  54. data/app/assets/stylesheets/pageflow/editor/file_import.scss +22 -38
  55. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +3 -7
  56. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +4 -24
  57. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +10 -11
  58. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -8
  59. data/app/assets/stylesheets/pageflow/editor/files.scss +7 -6
  60. data/app/assets/stylesheets/pageflow/editor/files_explorer.scss +13 -30
  61. data/app/assets/stylesheets/pageflow/editor/files_gallery.scss +15 -11
  62. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +6 -7
  63. data/app/assets/stylesheets/pageflow/editor/help.scss +19 -14
  64. data/app/assets/stylesheets/pageflow/editor/help_image.scss +1 -1
  65. data/app/assets/stylesheets/pageflow/editor/info_box.scss +19 -0
  66. data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +7 -11
  67. data/app/assets/stylesheets/pageflow/editor/inputs/file_processing_state_display.scss +0 -2
  68. data/app/assets/stylesheets/pageflow/editor/inputs/reference.scss +7 -11
  69. data/app/assets/stylesheets/pageflow/editor/list.scss +13 -10
  70. data/app/assets/stylesheets/pageflow/editor/loading.scss +1 -1
  71. data/app/assets/stylesheets/pageflow/editor/locked.scss +9 -5
  72. data/app/assets/stylesheets/pageflow/editor/menu.scss +5 -5
  73. data/app/assets/stylesheets/pageflow/editor/notifications.scss +15 -14
  74. data/app/assets/stylesheets/pageflow/editor/other_entry_item.scss +7 -3
  75. data/app/assets/stylesheets/pageflow/editor/outline.scss +57 -19
  76. data/app/assets/stylesheets/pageflow/editor/page_links.scss +10 -8
  77. data/app/assets/stylesheets/pageflow/editor/page_selection.scss +2 -29
  78. data/app/assets/stylesheets/pageflow/editor/publish_entry.scss +5 -6
  79. data/app/assets/stylesheets/pageflow/editor/quotas.scss +2 -3
  80. data/app/assets/stylesheets/pageflow/editor/select_button.scss +12 -6
  81. data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -5
  82. data/app/assets/stylesheets/pageflow/editor/storyline_picker.scss +6 -2
  83. data/app/assets/stylesheets/pageflow/editor/text_tracks.scss +6 -22
  84. data/app/assets/stylesheets/pageflow/editor/widgets.scss +2 -2
  85. data/app/assets/stylesheets/pageflow/editor/wysihtml5.scss +35 -29
  86. data/app/assets/stylesheets/pageflow/mixins/background_icons.scss +3 -3
  87. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +50 -68
  88. data/app/assets/stylesheets/pageflow/themes/default/base.scss +2 -0
  89. data/app/assets/stylesheets/pageflow/themes/default/consent/bar.scss +156 -0
  90. data/app/assets/stylesheets/pageflow/themes/default/consent/vendor_list.scss +62 -0
  91. data/app/assets/stylesheets/pageflow/themes/default/consent.scss +2 -0
  92. data/app/assets/stylesheets/pageflow/themes/default/logo/alignment.scss +7 -0
  93. data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +44 -0
  94. data/app/assets/stylesheets/pageflow/themes/default/third_party_embed_consent.scss +103 -0
  95. data/app/assets/stylesheets/pageflow/ui/forms.scss +79 -84
  96. data/app/assets/stylesheets/pageflow/ui/functions.scss +56 -0
  97. data/app/assets/stylesheets/pageflow/ui/input/check_box_group_input.scss +2 -3
  98. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +6 -6
  99. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +63 -50
  100. data/app/assets/stylesheets/pageflow/ui/normalize/forms.scss +153 -0
  101. data/app/assets/stylesheets/pageflow/ui/normalize.scss +278 -0
  102. data/app/assets/stylesheets/pageflow/ui/properties.scss +44 -0
  103. data/app/assets/stylesheets/pageflow/ui/table_cells/delete_row_table_cell.scss +1 -1
  104. data/app/assets/stylesheets/pageflow/ui/table_view.scss +14 -18
  105. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -11
  106. data/app/assets/stylesheets/pageflow/ui/tooltip.scss +6 -8
  107. data/app/assets/stylesheets/pageflow/ui/validation_error_messages.scss +6 -0
  108. data/app/assets/stylesheets/pageflow/ui.scss +4 -0
  109. data/app/controllers/pageflow/edit_locks_controller.rb +3 -1
  110. data/app/helpers/pageflow/admin/entries_helper.rb +2 -12
  111. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  112. data/app/helpers/pageflow/entries_helper.rb +41 -2
  113. data/app/helpers/pageflow/file_background_images_helper.rb +1 -1
  114. data/app/helpers/pageflow/page_types_helper.rb +1 -1
  115. data/app/helpers/pageflow/themes_helper.rb +1 -1
  116. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -1
  117. data/app/jobs/pageflow/poll_zencoder_job.rb +1 -9
  118. data/app/models/pageflow/audio_file.rb +17 -0
  119. data/app/models/pageflow/audio_file_url_templates.rb +4 -1
  120. data/app/models/pageflow/customized_theme.rb +37 -0
  121. data/app/models/pageflow/draft_entry.rb +6 -59
  122. data/app/models/pageflow/entry_at_revision.rb +68 -0
  123. data/app/models/pageflow/entry_role_query.rb +44 -24
  124. data/app/models/pageflow/image_file_css_background_image_urls.rb +8 -2
  125. data/app/models/pageflow/published_entry.rb +9 -56
  126. data/app/models/pageflow/theme_customization.rb +46 -0
  127. data/app/models/pageflow/theme_customization_file.rb +58 -0
  128. data/app/models/pageflow/video_file.rb +11 -1
  129. data/app/models/pageflow/video_file_url_templates.rb +1 -0
  130. data/app/policies/pageflow/entry_policy.rb +4 -0
  131. data/app/state_machines/pageflow/media_encoding_state_machine.rb +23 -4
  132. data/app/views/admin/entries/_form.html.erb +50 -0
  133. data/app/views/admin/entries/entry_type_name_input.html.erb +5 -0
  134. data/app/views/admin/features/_form.html.erb +1 -1
  135. data/app/views/admin/memberships/_form.html.erb +2 -3
  136. data/app/views/admin/users/_form.html.erb +1 -1
  137. data/app/views/admin/users/invitation.html.erb +2 -2
  138. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +10 -9
  139. data/app/views/components/pageflow/admin/members_tab.rb +5 -1
  140. data/app/views/components/pageflow/admin/revisions_tab.rb +13 -3
  141. data/app/views/components/pageflow/admin/timestamp.rb +20 -0
  142. data/app/views/components/pageflow/admin/user_account_badge_list.rb +5 -6
  143. data/app/views/pageflow/admin/entries/_cannot_add_user.html.erb +9 -5
  144. data/app/views/pageflow/admin/entries/_entry_type_name_input.html.erb +7 -0
  145. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +13 -0
  146. data/app/views/pageflow/editor/encoding_confirmations/_intro.html.erb +0 -0
  147. data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +14 -2
  148. data/config/initializers/paperclip.rb +16 -1
  149. data/config/locales/de.yml +24 -28
  150. data/config/locales/en.yml +19 -10
  151. data/db/migrate/20210528073122_create_pageflow_theme_customizations.rb +11 -0
  152. data/db/migrate/20210531090654_create_pageflow_theme_customization_files.rb +15 -0
  153. data/db/migrate/20210531102228_add_selected_file_ids_to_theme_customizations.rb +5 -0
  154. data/db/migrate/20211020085902_add_canonical_entry_url_prefix_to_themings.rb +5 -0
  155. data/db/migrate/20220503150010_add_peak_data_to_audio_files.rb +5 -0
  156. data/db/migrate/20220705084830_add_trailing_slash_in_canonical_urls_to_themings.rb +5 -0
  157. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +256 -124
  158. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +566 -167
  159. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  160. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +4 -4
  161. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +38 -0
  162. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_in.html.erb +12 -0
  163. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_out_info.html.erb +10 -0
  164. data/entry_types/paged/config/initializers/features.rb +2 -0
  165. data/entry_types/paged/config/locales/new/video_contain.de.yml +7 -0
  166. data/entry_types/paged/config/locales/new/video_contain.en.yml +7 -0
  167. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
  168. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +1 -0
  169. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +58 -0
  170. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +37 -3
  171. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +92 -6
  172. data/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb +20 -0
  173. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +7 -0
  174. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +5 -2
  175. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +5 -1
  176. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +5 -4
  177. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +16 -0
  178. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +13 -2
  179. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_widget.json.jbuilder +2 -0
  180. data/entry_types/scrolled/config/locales/de.yml +1 -8
  181. data/entry_types/scrolled/config/locales/en.yml +1 -9
  182. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +8 -0
  183. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +8 -0
  184. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +8 -0
  185. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +9 -0
  186. data/entry_types/scrolled/config/locales/new/consent.de.yml +25 -0
  187. data/entry_types/scrolled/config/locales/new/consent.en.yml +24 -0
  188. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +39 -0
  189. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +39 -0
  190. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +14 -0
  191. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +14 -0
  192. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +28 -0
  193. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +27 -0
  194. data/entry_types/scrolled/config/locales/new/header_size.de.yml +17 -0
  195. data/entry_types/scrolled/config/locales/new/header_size.en.yml +17 -0
  196. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +39 -0
  197. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +39 -0
  198. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +26 -0
  199. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +26 -0
  200. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +9 -0
  201. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +9 -0
  202. data/entry_types/scrolled/config/locales/new/section_width.de.yml +10 -0
  203. data/entry_types/scrolled/config/locales/new/section_width.en.yml +10 -0
  204. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +7 -0
  205. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +7 -0
  206. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +8 -0
  207. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +8 -0
  208. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +11 -0
  209. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +12 -0
  210. data/entry_types/scrolled/config/locales/new/widgets.de.yml +6 -0
  211. data/entry_types/scrolled/config/locales/new/widgets.en.yml +6 -0
  212. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +29 -5
  213. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +8 -6
  214. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +37 -0
  215. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +57 -0
  216. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +49 -0
  217. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +8 -0
  218. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +42 -0
  219. data/entry_types/scrolled/lib/pageflow_scrolled.rb +17 -1
  220. data/entry_types/scrolled/package/contentElements-editor.js +323 -89
  221. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  222. data/entry_types/scrolled/package/contentElements-frontend.js +719 -529
  223. data/entry_types/scrolled/package/editor.js +459 -261
  224. data/entry_types/scrolled/package/frontend/{EditableText-7093fd0e.js → EditableInlineText.module-b9923660.js} +284 -362
  225. data/entry_types/scrolled/package/frontend/{i18n-4dc6c377.js → PhonePlatformContext-9fb97827.js} +199 -106
  226. data/entry_types/scrolled/package/frontend/{Viewer-e49e7807.js → Viewer-e2290ea0.js} +196 -79
  227. data/entry_types/scrolled/package/frontend/{Wavesurfer-0adf5667.js → Wavesurfer-7d9cf1b7.js} +16 -58
  228. data/entry_types/scrolled/package/frontend/{components-6a6793ca.js → components-6ab26015.js} +664 -671
  229. data/entry_types/scrolled/package/frontend/{getPrototypeOf-63c7c8e8.js → createSuper-d0f30da3.js} +34 -5
  230. data/entry_types/scrolled/package/frontend/index.css +1 -9
  231. data/entry_types/scrolled/package/frontend/index.js +1919 -2386
  232. data/entry_types/scrolled/package/frontend/{useBrowserFeature-91a4c29d.js → usePhonePlatform-2857c22b.js} +9 -8
  233. data/entry_types/scrolled/package/frontend-server.js +3 -6
  234. data/entry_types/scrolled/package/package.json +16 -8
  235. data/entry_types/scrolled/package/testHelpers.js +456 -0
  236. data/entry_types/scrolled/package/values/breakpoints.module.css +9 -0
  237. data/entry_types/scrolled/package/values/colors.module.css +5 -0
  238. data/entry_types/scrolled/package/widgets/defaultNavigation.css +9 -0
  239. data/entry_types/scrolled/package/widgets/defaultNavigation.js +612 -0
  240. data/entry_types/scrolled/spec/fixtures/image.svg +1 -0
  241. data/lib/pageflow/ability_mixin.rb +4 -0
  242. data/lib/pageflow/built_in_widget_type.rb +4 -0
  243. data/lib/pageflow/built_in_widget_types_plugin.rb +7 -0
  244. data/lib/pageflow/configuration.rb +34 -1
  245. data/lib/pageflow/entry_type.rb +11 -2
  246. data/lib/pageflow/entry_type_configuration.rb +2 -0
  247. data/lib/pageflow/file_type.rb +24 -0
  248. data/lib/pageflow/paperclip_processors/audio_waveform.rb +42 -0
  249. data/lib/pageflow/paperclip_processors/noop.rb +10 -0
  250. data/lib/pageflow/theme_customizations.rb +61 -0
  251. data/lib/pageflow/version.rb +1 -1
  252. data/lib/pageflow.rb +9 -0
  253. data/package/config/jest/index.js +2 -1
  254. data/package/config/postcss/scaleFunctions.js +71 -0
  255. data/package/editor.js +95 -85
  256. data/package/frontend.js +521 -161
  257. data/package/package.json +5 -3
  258. data/package/testHelpers.js +26 -5
  259. data/package/ui.js +124 -11
  260. data/spec/factories/draft_entries.rb +19 -1
  261. data/spec/factories/entries.rb +4 -0
  262. data/spec/factories/published_entries.rb +6 -0
  263. data/spec/fixtures/audio.ogg +0 -0
  264. metadata +118 -14
  265. data/app/views/admin/entries/_not_allowed_to_see_entry_types.json.jbuilder +0 -2
  266. data/app/views/admin/entries/entry_types.json.jbuilder +0 -4
  267. data/package/config/jest/transformers/upwardBabel.js +0 -5
@@ -0,0 +1,24 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ public:
4
+ third_party_consent:
5
+ opt_in_prompt:
6
+ video: DELETED
7
+ youtube: I agree with being shown YouTube videos.
8
+ vimeo: I agree with being shown Vimeo videos.
9
+ facebook: I agree with being shown Facebook videos.
10
+ consent_accept_all: Accept all and close
11
+ consent_configure: More Information
12
+ consent_deny_all: Deny
13
+ consent_expand_vendor: More information
14
+ consent_no_vendors: Currently not using any third party integrations.
15
+ consent_prompt_html: |-
16
+ This website uses third party technologies.
17
+ We are asking your permission to use these technologies.
18
+ You can always change or withdraw your consent later via our
19
+ <a href="%{privacyLinkUrl}" target="_blank">privacy policy</a> page.
20
+ consent_save: Save selection
21
+ consent_settings: Privacy Settings
22
+ pageflow:
23
+ datawrapper_chart_embed_opt_in:
24
+ feature_name: 'Opt-in for Datawrapper embeds'
@@ -0,0 +1,39 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_element_categories:
5
+ basic:
6
+ name: "Basic"
7
+ links:
8
+ name: "Verweise"
9
+ data:
10
+ name: "Daten und Diagramme"
11
+ media:
12
+ name: "Media"
13
+ interactive:
14
+ name: "Interaktiv"
15
+ content_elements:
16
+ dataWrapperChart:
17
+ description: "Einbindung von Diagrammen, die mit Datawrapper erstellt wurden"
18
+ externalLinkList:
19
+ description: "Sammlung von Verweisen zu Webseiten außerhalb des Beitrags"
20
+ heading:
21
+ description: "Beitrags- oder Kapiteltitel"
22
+ inlineAudio:
23
+ description: "Wiedergabe einer Audiodatei mit Steuerelementen"
24
+ inlineBeforeAfter:
25
+ description: "Zwei übereinandergelegte Bilder mit Schieberegler getrennt"
26
+ inlineImage:
27
+ description: "Einbindung von Bildern"
28
+ inlineVideo:
29
+ description: "Wiedergabe einer Videodatei mit Steuerelementen"
30
+ soundDisclaimer:
31
+ description: "Lass den Leser den Ton aktiveren"
32
+ textBlock:
33
+ description: "Text mit Listen, Zitaten und Zwischenüberschriften"
34
+ videoEmbed:
35
+ description: "Bettet ein externes Video von YouTube, Vimeo oder Facebook ein"
36
+ vrImage:
37
+ description: "Interaktives Panorama aus Bild mit rektangularer Projektion"
38
+ iframeEmbed:
39
+ description: "Einbindung einer extern gehosteten Website"
@@ -0,0 +1,39 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_element_categories:
5
+ basic:
6
+ name: "Basic"
7
+ links:
8
+ name: "Links"
9
+ data:
10
+ name: "Data and Diagrams"
11
+ media:
12
+ name: "Media"
13
+ interactive:
14
+ name: "Interactive"
15
+ content_elements:
16
+ dataWrapperChart:
17
+ description: "Embedded chart created with Datawrapper"
18
+ externalLinkList:
19
+ description: "A collection of links to external websites"
20
+ heading:
21
+ description: "Entry or chapter title"
22
+ inlineAudio:
23
+ description: "Player or waveform with controls"
24
+ inlineBeforeAfter:
25
+ description: "Compare to images using a slider"
26
+ inlineImage:
27
+ description: "Display an image"
28
+ inlineVideo:
29
+ description: "Player with controls"
30
+ soundDisclaimer:
31
+ description: "Make sure users unmute before continuing"
32
+ textBlock:
33
+ description: "Text with lists, block quotes and sub-headings"
34
+ videoEmbed:
35
+ description: "Embed a video from YouTube, Vimeo or Facebook"
36
+ vrImage:
37
+ description: "Interactive panorama using an image with rectangular projection"
38
+ iframeEmbed:
39
+ description: "Embed externally hosted websites"
@@ -0,0 +1,14 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ edit_section_transition:
5
+ attributes:
6
+ transition:
7
+ values:
8
+ fade: "Überblenden"
9
+ fadeBg: "DELETE"
10
+ variants:
11
+ fade: "Inhalte der Abschnitte ebenfalls überblenden"
12
+ fadeBg: "Nur Hintergründe der Abschnitte überblenden"
13
+ mark_as_default_transition: "Als Standard für neue Abschnitte verwenden"
14
+ default_transition: "Wird als Standard für neue Abschnitte verwendet"
@@ -0,0 +1,14 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ edit_section_transition:
5
+ attributes:
6
+ transition:
7
+ values:
8
+ fade: "Cross Fade"
9
+ fadeBg: "DELETE"
10
+ variants:
11
+ fade: "Also fade content of sections"
12
+ fadeBg: "Fade only section backgrounds"
13
+ mark_as_default_transition: "Use as default for new sections"
14
+ default_transition: "Used as default for new sections"
@@ -0,0 +1,28 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ heading:
6
+ help_texts:
7
+ shortcuts: |
8
+ <dl class="shortcuts">
9
+ <dt><kbd>Shift</kbd> + <kbd>Enter</kbd></dt>
10
+ <dd>
11
+ Bedingten Trennstrich einfügen.
12
+ </dd>
13
+ </dl>
14
+ attributes:
15
+ hyphens:
16
+ label: 'Silbentrennung'
17
+ inline_help: |
18
+ Bei manueller Silbentrennung werden Worte nur an
19
+ Stellen getrennt, die durch einen bedingten
20
+ Trennstrich ausgezeichnet wurden. Du kannst so
21
+ Trennung an unerwünschten Stellen verhindern. Ohne
22
+ bedingte Trennstriche werden lange Worte in der
23
+ nächsten Zeile ohne Bindestrich fortgesetzt. Prüfe
24
+ daher insbesondere die mobile Darstellung, wenn du
25
+ manuelle Silbentrennung verwendest.
26
+ values:
27
+ auto: 'Automatisch'
28
+ manual: 'Manuell'
@@ -0,0 +1,27 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ heading:
6
+ help_texts:
7
+ shortcuts: |
8
+ <dl class="shortcuts">
9
+ <dt><kbd>Shift</kbd> + <kbd>Enter</kbd></dt>
10
+ <dd>
11
+ Insert soft hyphen.
12
+ </dd>
13
+ </dl>
14
+ attributes:
15
+ hyphens:
16
+ label: 'Hyphenation'
17
+ inline_help: |
18
+ With manual hyphenation, words are only ever separated
19
+ at positions that have been marked with a soft
20
+ hyphen. This helps prevent separating words at
21
+ unwanted positions. Without soft hyphens, long words
22
+ will be continued to the next line without a hyphen.
23
+ Therefore, always double check mobile display when
24
+ using manual hyphenation.
25
+ values:
26
+ auto: 'Automatic'
27
+ manual: 'Manual'
@@ -0,0 +1,17 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ heading:
6
+ attributes:
7
+ textSize:
8
+ label: "Schriftgröße"
9
+ values:
10
+ auto: "(Automatisch)"
11
+ large: "Groß"
12
+ medium: "Mittel"
13
+ small: "Klein"
14
+ inline_help: |
15
+ Standardmäßig haben Überschriften im ersten Abschnitt
16
+ des Beitrags große Schrift. Überschriften in späteren
17
+ Abschnitten verwenden Schriftgröße "Klein".
@@ -0,0 +1,17 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ heading:
6
+ attributes:
7
+ textSize:
8
+ label: "Text size"
9
+ values:
10
+ auto: "(Auto)"
11
+ large: "Large"
12
+ medium: "Medium"
13
+ small: "Small"
14
+ inline_help: |
15
+ By default, a heading in the first section of the
16
+ entry is large. Headings in later sections have small
17
+ text size.
@@ -0,0 +1,39 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ iframeEmbed:
6
+ attributes:
7
+ aspectRatio:
8
+ label: Seitenverhältnis
9
+ values:
10
+ narrow: Landscape (4:3)
11
+ portrait: Portrait (9:16)
12
+ square: Quadratisch (1:1)
13
+ wide: Landscape (16:9)
14
+ portraitAspectRatio:
15
+ label: Seitenverhältnis (Hochkant)
16
+ values:
17
+ narrow: Landscape (4:3)
18
+ portrait: Portrait (9:16)
19
+ square: Quadratisch (1:1)
20
+ wide: Landscape (16:9)
21
+ blank: '(Standard)'
22
+ scale:
23
+ label: Skalieren
24
+ values:
25
+ p100: "100%"
26
+ p75: "75%"
27
+ p50: "50%"
28
+ p33: "33%"
29
+ source:
30
+ label: URL
31
+ title:
32
+ inline_help: Dieser Titel wird von Screenreadern verwendet, um das iframe als Ganzes zu beschreiben.
33
+ label: Titel
34
+ name: iframe-Embed
35
+ tabs:
36
+ general: iframe-Embed
37
+ pageflow:
38
+ iframe_embed_content_element:
39
+ feature_name: "iframe-Embed Inhaltselement"
@@ -0,0 +1,39 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ iframeEmbed:
6
+ attributes:
7
+ aspectRatio:
8
+ label: Aspect Ratio
9
+ values:
10
+ narrow: Landscape (4:3)
11
+ portrait: Portrait (9:16)
12
+ square: Square (1:1)
13
+ wide: Landscape (16:9)
14
+ portraitAspectRatio:
15
+ label: Aspect Ratio (Portrait)
16
+ values:
17
+ narrow: Landscape (4:3)
18
+ portrait: Portrait (9:16)
19
+ square: Square (1:1)
20
+ wide: Landscape (16:9)
21
+ blank: '(Default)'
22
+ scale:
23
+ label: Scale
24
+ values:
25
+ p100: "100%"
26
+ p75: "75%"
27
+ p50: "50%"
28
+ p33: "33%"
29
+ source:
30
+ label: URL
31
+ title:
32
+ inline_help: Used by screen readers to describe the chart as a whole.
33
+ label: Title
34
+ name: iframe Embed
35
+ tabs:
36
+ general: iframe Embed
37
+ pageflow:
38
+ iframe_embed_content_element:
39
+ feature_name: "iframe embed content element"
@@ -0,0 +1,26 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineVideo:
6
+ attributes:
7
+ playbackMode:
8
+ label: "Wiedergabe-Modus"
9
+ values:
10
+ manual: "Manuell"
11
+ autoplay: "Automatisch"
12
+ loop: "Loop"
13
+ inline_help_html: "Bestimme, wie das Video gestartet wird:<ul><li><strong>Manuell:</strong> Durch einen Klick des Benutzers.</li><li><strong>Automatisch:</strong> Wenn es die Mitte des Browser-Viewports erreicht.</li><li><strong>Loop:</strong> In Endlosschleife sobald es sichtbar wird.</li></ul>"
14
+ hideControlBar:
15
+ label: "Controls ausblenden"
16
+ inline_help: "Für kurze Videos, bei denen der Benutzer nicht an bestimmte Stellen springen will."
17
+ inline_help_disabled: 'Für Videos mit Wiedergabe-Modus "Loop" sind die Controls immer ausgeblendet.'
18
+ unmuteLabel:
19
+ label: "Stummschaltung des Beitrags"
20
+ inline_help_html: 'Browser erlauben standardmäßig das Abspielen von Videos mit Ton nur nach einer Benutzer-Interaktion. Um Videos dennoch automatisch abspielen zu können, sind Beiträge zu Beginn stummgeschaltet.<br /><br />Die Stummschaltung kann z.B. über das Lautsprecher-Icon in der Navigationsleiste oder ein im Beitrag platziertes "Audio-Hinweis"-Element aufgehoben werden.'
21
+ unmute:
22
+ label: "...bei Klick auf Video aufheben"
23
+ inline_help_html: "Der Klick auf das Video wird verwendet, um den Ton für den gesamten Beitrag zu aktivieren.<br /><br />Nach dem Klick können Atmo-Audios sowie der Ton nachfolgender Videos dann unmittelbar wiedergegeben werden.<br /><br />Wenn diese Option aktiviert ist, wird bei automatisch ohne Ton gestarteten Videos ein animierter Indikator angezeigt, der auf die Stummschaltung hinweist."
24
+ rewindOnUnmute:
25
+ label: "...und Video von vorne abspielen"
26
+ inline_help_html: "Verhindere, dass der Benutzer bei einem automatisch ohne Ton gestarteten Video wichtige Inhalte verpasst.<br /><br />Alternativ kann dem Video eine Ton-Ersatz-Textspur hinzugefügt werden. Diese wird automatisch gezeigt solange der Beitrag stummgeschaltet ist."
@@ -0,0 +1,26 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineVideo:
6
+ attributes:
7
+ playbackMode:
8
+ label: "Playback Mode"
9
+ values:
10
+ manual: "Manual"
11
+ autoplay: "Autoplay"
12
+ loop: "Loop"
13
+ inline_help_html: "Determines how the video starts:<ul><li><strong>Manual:</strong> When the user clicks the video.</li><li><strong>Autoplay:</strong> When the video is scrolled to the center of the browser viewport.</li><li><strong>Loop:</strong> In an endless loop soon as it becomes visible.</li></ul>"
14
+ hideControlBar:
15
+ label: "Hide controls"
16
+ inline_help: "For short videos where there is no need to seek."
17
+ inline_help_disabled: 'Controls are always hidden for videos with playback mode "Loop".'
18
+ unmuteLabel:
19
+ label: "Unmute entry"
20
+ inline_help_html: 'By default browsers only allow autoplaying videos with sound after a user interaction. To still be able to autoplay videos, entries therefore start muted.<br /><br />Sound can be activated using the speaker icon in the navigation bar or via an "Audio notice" element that has been placed in the entry.'
21
+ unmute:
22
+ label: "...when user clicks video"
23
+ inline_help_html: "The click is used to activate sound for the whole entry.<br /><br />After the click, atmo audios and audio of following video elements can then immediately be played.<br /><br />If this option is active, the video element displays an animated indicator icon when autoplaying without sound."
24
+ rewindOnUnmute:
25
+ label: "...and play from the beginning"
26
+ inline_help_html: "Prevent users from missing important content when videos are autoplayed without sound.<br /><br />Alternatively, you can add an audio replacement text track to the video. It will be displayed automatically as long as the entry is muted."
@@ -0,0 +1,9 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineImage:
6
+ attributes:
7
+ portraitId:
8
+ label: Bild (Hochkant)
9
+ inline_help: Wird gezeigt, wenn der Browser-Viewport höher als breit ist - zum Beispiel auf Smartphones oder Tablets in Portrait-Ausrichtung. Kann als Alternative zu einem querformatigen Bild konfiguriert werden, das ansonsten zu klein dargestellt würde.
@@ -0,0 +1,9 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineImage:
6
+ attributes:
7
+ portraitId:
8
+ label: Image (Portrait)
9
+ inline_help: Displayed when the browser viewport is taller than wide, for example on phones or tablets in portrait orientation. Can be used to provide an alternative to a landscape image that would otherwise be displayed too small.
@@ -0,0 +1,10 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ edit_section:
5
+ attributes:
6
+ width:
7
+ label: "Laufweite"
8
+ values:
9
+ wide: "Breit"
10
+ narrow: "Schmal"
@@ -0,0 +1,10 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ edit_section:
5
+ attributes:
6
+ width:
7
+ label: "Width"
8
+ values:
9
+ wide: "Wide"
10
+ narrow: "Narrow"
@@ -0,0 +1,7 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ common_content_element_attributes:
5
+ typographyVariant:
6
+ label: Variante
7
+ blank: (Standard)
@@ -0,0 +1,7 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ common_content_element_attributes:
5
+ typographyVariant:
6
+ label: Variant
7
+ blank: (Default)
@@ -0,0 +1,8 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ videoEmbed:
6
+ attributes:
7
+ posterId:
8
+ label: Poster
@@ -0,0 +1,8 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ videoEmbed:
6
+ attributes:
7
+ posterId:
8
+ label: Poster
@@ -0,0 +1,11 @@
1
+ de:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineAudio:
6
+ attributes:
7
+ playerControlVariant:
8
+ values:
9
+ waveform: "Waveform (Fein)"
10
+ waveformBars: "Waveform (Balken)"
11
+ waveformLines: "Waveform (Linien)"
@@ -0,0 +1,12 @@
1
+ en:
2
+ pageflow_scrolled:
3
+ editor:
4
+ content_elements:
5
+ inlineAudio:
6
+ attributes:
7
+ playerControlVariant:
8
+ label: "Waveform Style"
9
+ values:
10
+ waveform: "Waveform (Fein)"
11
+ waveformBars: "Waveform (Bars)"
12
+ waveformLines: "Waveform (Lines)"
@@ -0,0 +1,6 @@
1
+ de:
2
+ pageflow:
3
+ widgets:
4
+ roles:
5
+ footer: "Footer"
6
+ header: "Header"
@@ -0,0 +1,6 @@
1
+ en:
2
+ pageflow:
3
+ widgets:
4
+ roles:
5
+ footer: "Footer"
6
+ header: "Header"
@@ -2,6 +2,8 @@ module PageflowScrolled
2
2
  module Generators
3
3
  # @api private
4
4
  class InstallGenerator < Rails::Generators::Base
5
+ CUSTOM_THEME_ICONS = [:information, :muted, :share, :unmuted].freeze
6
+
5
7
  desc 'Installs Pageflow Scrolled entry type.'
6
8
 
7
9
  source_root File.expand_path('templates', __dir__)
@@ -17,6 +19,8 @@ module PageflowScrolled
17
19
  end
18
20
 
19
21
  def theme_plugin
22
+ @custom_theme_icons = CUSTOM_THEME_ICONS.inspect
23
+
20
24
  # Ruby files in the lib directory are eager loaded in
21
25
  # production. This includes template files in
22
26
  # lib/generators. Template file extension (.tt) is removed by
@@ -34,6 +38,12 @@ module PageflowScrolled
34
38
  before: "module.exports = environment\n") do
35
39
  "environment.config.merge(require('pageflow/config/webpack'))\n" \
36
40
  "environment.config.merge(require('pageflow-scrolled/config/webpack'))\n\n" \
41
+ "// Allow loading only chunks of used widgets. runtimeChunk 'single'\n" \
42
+ "// ensures that modules are only evaluated once which is important\n" \
43
+ "// for modules with side effects.\n" \
44
+ "environment.splitChunks((config) =>\n" \
45
+ " Object.assign({}, config, { optimization: { runtimeChunk: 'single' }})\n" \
46
+ ")\n\n" \
37
47
  "// Opt into future default behavior of Webpacker [1] to work around\n" \
38
48
  "// problems with Video.js DASH service worker.\n" \
39
49
  "//\n" \
@@ -71,6 +81,9 @@ module PageflowScrolled
71
81
 
72
82
  def frontend_pack
73
83
  create_file 'app/javascript/packs/pageflow-scrolled-frontend.js', <<-JS
84
+ import 'pageflow-scrolled/frontend/index.css';
85
+ import 'pageflow-scrolled/contentElements-frontend.css';
86
+
74
87
  import 'pageflow-scrolled/frontend';
75
88
  import 'pageflow-scrolled/contentElements-frontend';
76
89
 
@@ -82,13 +95,16 @@ module PageflowScrolled
82
95
  create_file 'app/javascript/packs/pageflow-scrolled-server.js', <<-JS
83
96
  import 'pageflow-scrolled/frontend-server';
84
97
  import 'pageflow-scrolled/contentElements-frontend';
98
+ import 'pageflow-scrolled/widgets/defaultNavigation';
85
99
  JS
86
100
  end
87
101
 
88
- def theme_pack
89
- create_file 'app/javascript/packs/pageflow-scrolled-theme.css', <<-JS
90
- @import "pageflow-scrolled/frontend/index.css";
91
- @import "pageflow-scrolled/contentElements-frontend.css";
102
+ def default_navigation_widget_packs
103
+ widget_dir = 'app/javascript/packs/pageflow-scrolled/widgets'
104
+
105
+ create_file File.join(widget_dir, 'defaultNavigation.js'), <<-JS
106
+ import 'pageflow-scrolled/widgets/defaultNavigation';
107
+ import 'pageflow-scrolled/widgets/defaultNavigation.css';
92
108
  JS
93
109
  end
94
110
 
@@ -100,7 +116,15 @@ module PageflowScrolled
100
116
  end
101
117
 
102
118
  def default_theme
103
- directory 'theme', 'app/javascript/pageflow-scrolled/themes/default'
119
+ theme_dir = 'app/javascript/pageflow-scrolled/themes/default'
120
+ icons_src_dir = PageflowScrolled::Engine.root.join('package/src/frontend/icons')
121
+
122
+ directory 'theme', theme_dir
123
+
124
+ CUSTOM_THEME_ICONS.each do |icon|
125
+ copy_file icons_src_dir.join("#{icon}.svg"),
126
+ File.join(theme_dir, "icons/#{icon}.svg")
127
+ end
104
128
  end
105
129
  end
106
130
  end
@@ -6,18 +6,20 @@ class ScrolledThemesPlugin
6
6
  stylesheet_packs: ['fonts/sourceSansPro'],
7
7
  font_family: {
8
8
  entry: '"Source Sans Pro", sans-serif',
9
- navigation: '"Source Sans Pro", sans-serif'
9
+ widget: '"Source Sans Pro", sans-serif'
10
10
  },
11
+ custom_theme_icons: <%= @custom_theme_icons %>,
11
12
  colors: {
12
13
  accent: '#e10028',
13
- navigation: {
14
+ widget: {
14
15
  surface: '#fff',
15
16
  on_surface: '#000',
16
- primary_on_surface: '#00375a',
17
- secondary_on_surface: '#c2c2c2',
17
+ primary: '#00375a',
18
+ on_primary: '#fff',
19
+ secondary: '#c2c2c2',
20
+ on_seconday: '#000',
18
21
  background: 'rgba(255, 255, 255, 0.95)',
19
- on_background: '#000',
20
- primary_on_background: '#00375a'
22
+ on_background: '#000'
21
23
  }
22
24
  },
23
25
  logo_alt_text: 'Pageflow',
@@ -0,0 +1,37 @@
1
+ module PageflowScrolled
2
+ # Register additonal Webpacker packs to be loaded in entries.
3
+ class AdditionalPacks
4
+ # @api private
5
+ def initialize
6
+ @packs = []
7
+ end
8
+
9
+ # content_element_type_names option only takes effect for frontend
10
+ # packs.
11
+ def register(path, content_element_type_names: [])
12
+ @packs << AdditionalPack.new(path, content_element_type_names)
13
+ end
14
+
15
+ # @api private
16
+ def content_element_type_names
17
+ @packs
18
+ .flat_map(&:content_element_type_names)
19
+ .uniq
20
+ end
21
+
22
+ # @api private
23
+ def paths
24
+ @packs.map(&:path)
25
+ end
26
+
27
+ # @api private
28
+ def paths_for_content_element_types(type_names)
29
+ @packs.reject { |pack|
30
+ (pack.content_element_type_names & type_names).empty?
31
+ }.map(&:path)
32
+ end
33
+
34
+ # @api private
35
+ AdditionalPack = Struct.new(:path, :content_element_type_names)
36
+ end
37
+ end