pageflow 15.6.1 → 15.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +253 -11
  3. data/README.md +1 -2
  4. data/admins/pageflow/entry.rb +28 -57
  5. data/admins/pageflow/membership.rb +5 -1
  6. data/admins/pageflow/user.rb +1 -3
  7. data/app/assets/images/pageflow/admin/icons/buttons/editor.svg +2 -0
  8. data/app/assets/images/pageflow/admin/icons/buttons/preview.svg +2 -0
  9. data/app/assets/images/pageflow/admin/icons/buttons/show_public.svg +2 -0
  10. data/app/assets/images/pageflow/admin/icons/delete.svg +9 -0
  11. data/app/assets/images/pageflow/admin/icons/done.svg +6 -0
  12. data/app/assets/images/pageflow/admin/icons/edit.svg +7 -0
  13. data/app/assets/images/pageflow/admin/icons/editor.svg +2 -0
  14. data/app/assets/images/pageflow/admin/icons/folder.svg +8 -0
  15. data/app/assets/images/pageflow/admin/icons/folder_active.svg +8 -0
  16. data/app/assets/images/pageflow/admin/icons/info.svg +3 -0
  17. data/app/assets/images/pageflow/admin/icons/new.svg +5 -0
  18. data/app/assets/images/pageflow/admin/icons/preview.svg +2 -0
  19. data/app/assets/images/pageflow/admin/icons/published.svg +2 -0
  20. data/app/assets/images/pageflow/admin/icons/published_with_password.svg +2 -0
  21. data/app/assets/images/pageflow/admin/icons/show_public.svg +2 -0
  22. data/app/assets/images/pageflow/editor/blank_entry/logo.png +0 -0
  23. data/app/assets/images/pageflow/themes/default/embed_opt_in.svg +3 -0
  24. data/app/assets/images/pageflow/themes/default/embed_opt_out_info.svg +16 -0
  25. data/app/assets/javascripts/pageflow/admin/entries.js +9 -57
  26. data/app/assets/javascripts/pageflow/dist/editor.js +11890 -0
  27. data/app/assets/javascripts/pageflow/dist/frontend.js +5800 -0
  28. data/app/assets/javascripts/pageflow/dist/react-client.js +22 -0
  29. data/app/assets/javascripts/pageflow/dist/react-server.js +19 -0
  30. data/app/assets/javascripts/pageflow/dist/ui.js +127 -10
  31. data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +18 -16
  32. data/app/assets/stylesheets/pageflow/admin/badge_list.scss +25 -35
  33. data/app/assets/stylesheets/pageflow/admin/columns.scss +13 -11
  34. data/app/assets/stylesheets/pageflow/admin/embed_code.scss +1 -4
  35. data/app/assets/stylesheets/pageflow/admin/entries/folders.scss +44 -19
  36. data/app/assets/stylesheets/pageflow/admin/entries.scss +15 -31
  37. data/app/assets/stylesheets/pageflow/admin/features.scss +3 -1
  38. data/app/assets/stylesheets/pageflow/admin/forms.scss +14 -12
  39. data/app/assets/stylesheets/pageflow/admin/hint.scss +8 -14
  40. data/app/assets/stylesheets/pageflow/admin/icon_button.scss +25 -14
  41. data/app/assets/stylesheets/pageflow/admin/icon_link.scss +31 -15
  42. data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +14 -7
  43. data/app/assets/stylesheets/pageflow/admin/status_tags.scss +5 -4
  44. data/app/assets/stylesheets/pageflow/admin/tabs_view.scss +36 -34
  45. data/app/assets/stylesheets/pageflow/admin/tooltip_bubble.scss +15 -11
  46. data/app/assets/stylesheets/pageflow/admin.scss +12 -0
  47. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +15 -61
  48. data/app/assets/stylesheets/pageflow/editor/base.scss +28 -13
  49. data/app/assets/stylesheets/pageflow/editor/blank_entry.scss +6 -6
  50. data/app/assets/stylesheets/pageflow/editor/change_theme.scss +28 -71
  51. data/app/assets/stylesheets/pageflow/editor/composables.scss +2 -2
  52. data/app/assets/stylesheets/pageflow/editor/confirm_encoding.scss +18 -36
  53. data/app/assets/stylesheets/pageflow/editor/confirm_upload.scss +12 -39
  54. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +39 -12
  55. data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.scss +3 -3
  56. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -10
  57. data/app/assets/stylesheets/pageflow/editor/emulation_mode_button.scss +3 -8
  58. data/app/assets/stylesheets/pageflow/editor/failures.scss +3 -3
  59. data/app/assets/stylesheets/pageflow/editor/file_import.scss +22 -38
  60. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +3 -7
  61. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +4 -24
  62. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +10 -11
  63. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -8
  64. data/app/assets/stylesheets/pageflow/editor/files.scss +7 -6
  65. data/app/assets/stylesheets/pageflow/editor/files_explorer.scss +13 -30
  66. data/app/assets/stylesheets/pageflow/editor/files_gallery.scss +15 -11
  67. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +6 -7
  68. data/app/assets/stylesheets/pageflow/editor/help.scss +19 -14
  69. data/app/assets/stylesheets/pageflow/editor/help_image.scss +1 -1
  70. data/app/assets/stylesheets/pageflow/editor/info_box.scss +19 -0
  71. data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +7 -11
  72. data/app/assets/stylesheets/pageflow/editor/inputs/file_processing_state_display.scss +0 -2
  73. data/app/assets/stylesheets/pageflow/editor/inputs/reference.scss +7 -11
  74. data/app/assets/stylesheets/pageflow/editor/list.scss +13 -10
  75. data/app/assets/stylesheets/pageflow/editor/loading.scss +1 -1
  76. data/app/assets/stylesheets/pageflow/editor/locked.scss +9 -5
  77. data/app/assets/stylesheets/pageflow/editor/menu.scss +5 -5
  78. data/app/assets/stylesheets/pageflow/editor/notifications.scss +15 -14
  79. data/app/assets/stylesheets/pageflow/editor/other_entry_item.scss +7 -3
  80. data/app/assets/stylesheets/pageflow/editor/outline.scss +57 -19
  81. data/app/assets/stylesheets/pageflow/editor/page_links.scss +10 -8
  82. data/app/assets/stylesheets/pageflow/editor/page_selection.scss +2 -29
  83. data/app/assets/stylesheets/pageflow/editor/publish_entry.scss +5 -6
  84. data/app/assets/stylesheets/pageflow/editor/quotas.scss +2 -3
  85. data/app/assets/stylesheets/pageflow/editor/select_button.scss +12 -6
  86. data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -5
  87. data/app/assets/stylesheets/pageflow/editor/storyline_picker.scss +6 -2
  88. data/app/assets/stylesheets/pageflow/editor/text_tracks.scss +6 -22
  89. data/app/assets/stylesheets/pageflow/editor/widgets.scss +2 -2
  90. data/app/assets/stylesheets/pageflow/editor/wysihtml5.scss +35 -29
  91. data/app/assets/stylesheets/pageflow/mixins/background_icons.scss +3 -3
  92. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +50 -68
  93. data/app/assets/stylesheets/pageflow/themes/default/base.scss +2 -0
  94. data/app/assets/stylesheets/pageflow/themes/default/consent/bar.scss +156 -0
  95. data/app/assets/stylesheets/pageflow/themes/default/consent/vendor_list.scss +62 -0
  96. data/app/assets/stylesheets/pageflow/themes/default/consent.scss +2 -0
  97. data/app/assets/stylesheets/pageflow/themes/default/logo/alignment.scss +7 -0
  98. data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +44 -0
  99. data/app/assets/stylesheets/pageflow/themes/default/third_party_embed_consent.scss +103 -0
  100. data/app/assets/stylesheets/pageflow/ui/forms.scss +79 -84
  101. data/app/assets/stylesheets/pageflow/ui/functions.scss +56 -0
  102. data/app/assets/stylesheets/pageflow/ui/input/check_box_group_input.scss +2 -3
  103. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +6 -6
  104. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +63 -50
  105. data/app/assets/stylesheets/pageflow/ui/normalize/forms.scss +153 -0
  106. data/app/assets/stylesheets/pageflow/ui/normalize.scss +278 -0
  107. data/app/assets/stylesheets/pageflow/ui/properties.scss +44 -0
  108. data/app/assets/stylesheets/pageflow/ui/table_cells/delete_row_table_cell.scss +1 -1
  109. data/app/assets/stylesheets/pageflow/ui/table_view.scss +14 -18
  110. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -11
  111. data/app/assets/stylesheets/pageflow/ui/tooltip.scss +6 -8
  112. data/app/assets/stylesheets/pageflow/ui/validation_error_messages.scss +6 -0
  113. data/app/assets/stylesheets/pageflow/ui.scss +4 -0
  114. data/app/controllers/pageflow/edit_locks_controller.rb +3 -1
  115. data/app/helpers/pageflow/admin/entries_helper.rb +2 -12
  116. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  117. data/app/helpers/pageflow/entries_helper.rb +41 -2
  118. data/app/helpers/pageflow/file_background_images_helper.rb +1 -1
  119. data/app/helpers/pageflow/page_types_helper.rb +1 -1
  120. data/app/helpers/pageflow/themes_helper.rb +1 -1
  121. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -1
  122. data/app/jobs/pageflow/poll_zencoder_job.rb +1 -9
  123. data/app/models/pageflow/audio_file.rb +17 -0
  124. data/app/models/pageflow/audio_file_url_templates.rb +4 -1
  125. data/app/models/pageflow/customized_theme.rb +37 -0
  126. data/app/models/pageflow/draft_entry.rb +6 -59
  127. data/app/models/pageflow/entry.rb +8 -0
  128. data/app/models/pageflow/entry_at_revision.rb +68 -0
  129. data/app/models/pageflow/entry_role_query.rb +44 -24
  130. data/app/models/pageflow/image_file_css_background_image_urls.rb +8 -2
  131. data/app/models/pageflow/published_entry.rb +9 -56
  132. data/app/models/pageflow/theme_customization.rb +46 -0
  133. data/app/models/pageflow/theme_customization_file.rb +58 -0
  134. data/app/models/pageflow/video_file.rb +11 -1
  135. data/app/models/pageflow/video_file_url_templates.rb +1 -0
  136. data/app/policies/pageflow/entry_policy.rb +4 -0
  137. data/app/state_machines/pageflow/media_encoding_state_machine.rb +23 -4
  138. data/app/views/admin/entries/_form.html.erb +50 -0
  139. data/app/views/admin/entries/entry_type_name_input.html.erb +5 -0
  140. data/app/views/admin/features/_form.html.erb +1 -1
  141. data/app/views/admin/memberships/_form.html.erb +2 -3
  142. data/app/views/admin/users/_form.html.erb +1 -1
  143. data/app/views/admin/users/invitation.html.erb +2 -2
  144. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +10 -9
  145. data/app/views/components/pageflow/admin/members_tab.rb +5 -1
  146. data/app/views/components/pageflow/admin/revisions_tab.rb +13 -3
  147. data/app/views/components/pageflow/admin/timestamp.rb +20 -0
  148. data/app/views/components/pageflow/admin/user_account_badge_list.rb +5 -6
  149. data/app/views/pageflow/admin/entries/_cannot_add_user.html.erb +9 -5
  150. data/app/views/pageflow/admin/entries/_entry_type_name_input.html.erb +7 -0
  151. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +13 -0
  152. data/app/views/pageflow/editor/encoding_confirmations/_intro.html.erb +0 -0
  153. data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +14 -2
  154. data/config/initializers/paperclip.rb +16 -1
  155. data/config/locales/de.yml +24 -28
  156. data/config/locales/en.yml +19 -10
  157. data/db/migrate/20210528073122_create_pageflow_theme_customizations.rb +11 -0
  158. data/db/migrate/20210531090654_create_pageflow_theme_customization_files.rb +15 -0
  159. data/db/migrate/20210531102228_add_selected_file_ids_to_theme_customizations.rb +5 -0
  160. data/db/migrate/20211020085902_add_canonical_entry_url_prefix_to_themings.rb +5 -0
  161. data/db/migrate/20220503150010_add_peak_data_to_audio_files.rb +5 -0
  162. data/db/migrate/20220705084830_add_trailing_slash_in_canonical_urls_to_themings.rb +5 -0
  163. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +256 -124
  164. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +566 -167
  165. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  166. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +4 -4
  167. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +38 -0
  168. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_in.html.erb +12 -0
  169. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_out_info.html.erb +10 -0
  170. data/entry_types/paged/config/initializers/features.rb +2 -0
  171. data/entry_types/paged/config/locales/new/video_contain.de.yml +7 -0
  172. data/entry_types/paged/config/locales/new/video_contain.en.yml +7 -0
  173. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
  174. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +1 -0
  175. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +58 -0
  176. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +37 -3
  177. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +92 -6
  178. data/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb +20 -0
  179. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +7 -0
  180. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +5 -2
  181. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +5 -1
  182. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +5 -4
  183. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +16 -0
  184. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +13 -2
  185. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_widget.json.jbuilder +2 -0
  186. data/entry_types/scrolled/config/locales/de.yml +1 -8
  187. data/entry_types/scrolled/config/locales/en.yml +1 -9
  188. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +8 -0
  189. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +8 -0
  190. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +8 -0
  191. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +9 -0
  192. data/entry_types/scrolled/config/locales/new/consent.de.yml +25 -0
  193. data/entry_types/scrolled/config/locales/new/consent.en.yml +24 -0
  194. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +39 -0
  195. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +39 -0
  196. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +14 -0
  197. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +14 -0
  198. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +28 -0
  199. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +27 -0
  200. data/entry_types/scrolled/config/locales/new/header_size.de.yml +17 -0
  201. data/entry_types/scrolled/config/locales/new/header_size.en.yml +17 -0
  202. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +39 -0
  203. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +39 -0
  204. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +26 -0
  205. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +26 -0
  206. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +9 -0
  207. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +9 -0
  208. data/entry_types/scrolled/config/locales/new/section_width.de.yml +10 -0
  209. data/entry_types/scrolled/config/locales/new/section_width.en.yml +10 -0
  210. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +7 -0
  211. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +7 -0
  212. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +8 -0
  213. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +8 -0
  214. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +11 -0
  215. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +12 -0
  216. data/entry_types/scrolled/config/locales/new/widgets.de.yml +6 -0
  217. data/entry_types/scrolled/config/locales/new/widgets.en.yml +6 -0
  218. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +29 -5
  219. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +8 -6
  220. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +37 -0
  221. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +57 -0
  222. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +49 -0
  223. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +8 -0
  224. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +42 -0
  225. data/entry_types/scrolled/lib/pageflow_scrolled.rb +17 -1
  226. data/entry_types/scrolled/package/contentElements-editor.js +323 -89
  227. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  228. data/entry_types/scrolled/package/contentElements-frontend.js +719 -529
  229. data/entry_types/scrolled/package/editor.js +459 -261
  230. data/entry_types/scrolled/package/frontend/{EditableText-7093fd0e.js → EditableInlineText.module-b9923660.js} +284 -362
  231. data/entry_types/scrolled/package/frontend/{i18n-4dc6c377.js → PhonePlatformContext-9fb97827.js} +199 -106
  232. data/entry_types/scrolled/package/frontend/{Viewer-e49e7807.js → Viewer-e2290ea0.js} +196 -79
  233. data/entry_types/scrolled/package/frontend/{Wavesurfer-0adf5667.js → Wavesurfer-7d9cf1b7.js} +16 -58
  234. data/entry_types/scrolled/package/frontend/{components-6a6793ca.js → components-6ab26015.js} +664 -671
  235. data/entry_types/scrolled/package/frontend/{getPrototypeOf-63c7c8e8.js → createSuper-d0f30da3.js} +34 -5
  236. data/entry_types/scrolled/package/frontend/index.css +1 -9
  237. data/entry_types/scrolled/package/frontend/index.js +1919 -2386
  238. data/entry_types/scrolled/package/frontend/{useBrowserFeature-91a4c29d.js → usePhonePlatform-2857c22b.js} +9 -8
  239. data/entry_types/scrolled/package/frontend-server.js +3 -6
  240. data/entry_types/scrolled/package/package.json +16 -8
  241. data/entry_types/scrolled/package/testHelpers.js +456 -0
  242. data/entry_types/scrolled/package/values/breakpoints.module.css +9 -0
  243. data/entry_types/scrolled/package/values/colors.module.css +5 -0
  244. data/entry_types/scrolled/package/widgets/defaultNavigation.css +9 -0
  245. data/entry_types/scrolled/package/widgets/defaultNavigation.js +612 -0
  246. data/entry_types/scrolled/spec/fixtures/image.svg +1 -0
  247. data/lib/pageflow/ability_mixin.rb +4 -0
  248. data/lib/pageflow/built_in_widget_type.rb +4 -0
  249. data/lib/pageflow/built_in_widget_types_plugin.rb +7 -0
  250. data/lib/pageflow/configuration.rb +34 -1
  251. data/lib/pageflow/entry_type.rb +11 -2
  252. data/lib/pageflow/entry_type_configuration.rb +2 -0
  253. data/lib/pageflow/file_type.rb +24 -0
  254. data/lib/pageflow/paperclip_processors/audio_waveform.rb +42 -0
  255. data/lib/pageflow/paperclip_processors/noop.rb +10 -0
  256. data/lib/pageflow/theme_customizations.rb +61 -0
  257. data/lib/pageflow/user_mixin.rb +6 -0
  258. data/lib/pageflow/version.rb +1 -1
  259. data/lib/pageflow.rb +9 -0
  260. data/package/config/jest/index.js +2 -1
  261. data/package/config/postcss/scaleFunctions.js +71 -0
  262. data/package/editor.js +95 -85
  263. data/package/frontend.js +521 -161
  264. data/package/package.json +5 -3
  265. data/package/testHelpers.js +26 -5
  266. data/package/ui.js +124 -11
  267. data/spec/factories/draft_entries.rb +19 -1
  268. data/spec/factories/entries.rb +4 -0
  269. data/spec/factories/published_entries.rb +6 -0
  270. data/spec/fixtures/audio.ogg +0 -0
  271. metadata +123 -15
  272. data/app/views/admin/entries/_not_allowed_to_see_entry_types.json.jbuilder +0 -2
  273. data/app/views/admin/entries/entry_types.json.jbuilder +0 -4
  274. 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