pageflow 15.7.1 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -243
  3. data/README.md +1 -9
  4. data/Rakefile +4 -1
  5. data/admins/pageflow/accounts.rb +12 -16
  6. data/admins/pageflow/entry.rb +57 -28
  7. data/admins/pageflow/entry_templates.rb +5 -7
  8. data/admins/pageflow/sites.rb +50 -0
  9. data/admins/pageflow/user.rb +7 -0
  10. data/app/assets/javascripts/pageflow/admin/entries.js +53 -4
  11. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +65 -0
  12. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  13. data/app/assets/stylesheets/pageflow/editor/base.scss +2 -6
  14. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +2 -0
  15. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +9 -0
  16. data/app/assets/stylesheets/pageflow/editor/info_box.scss +13 -3
  17. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +1 -0
  18. data/app/assets/stylesheets/pageflow/page.scss +0 -2
  19. data/app/assets/stylesheets/pageflow/themes/default/page.scss +1 -1
  20. data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -1
  21. data/app/controllers/pageflow/editor/file_import_controller.rb +32 -42
  22. data/app/controllers/pageflow/entries_controller.rb +27 -3
  23. data/app/helpers/pageflow/admin/permalinks_helper.rb +15 -0
  24. data/app/helpers/pageflow/common_entry_seed_helper.rb +1 -1
  25. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  26. data/app/helpers/pageflow/entries_helper.rb +25 -17
  27. data/app/helpers/pageflow/sites_helper.rb +11 -0
  28. data/app/helpers/pageflow/social_share_helper.rb +2 -2
  29. data/app/inputs/pageflow_permalink_input.rb +47 -0
  30. data/app/models/concerns/pageflow/permalinkable.rb +12 -0
  31. data/app/models/concerns/pageflow/reusable_file.rb +5 -0
  32. data/app/models/concerns/pageflow/uploadable_file.rb +4 -0
  33. data/app/models/pageflow/account.rb +7 -33
  34. data/app/models/pageflow/{cname_theming_request_scope.rb → cname_site_request_scope.rb} +3 -3
  35. data/app/models/pageflow/customized_theme.rb +5 -3
  36. data/app/models/pageflow/entry.rb +8 -4
  37. data/app/models/pageflow/entry_at_revision.rb +4 -3
  38. data/app/models/pageflow/entry_duplicate.rb +8 -1
  39. data/app/models/pageflow/entry_template.rb +4 -4
  40. data/app/models/pageflow/home_button.rb +7 -7
  41. data/app/models/pageflow/image_file_url_templates.rb +2 -2
  42. data/app/models/pageflow/permalink.rb +39 -0
  43. data/app/models/pageflow/permalink_directory.rb +10 -0
  44. data/app/models/pageflow/published_entry.rb +19 -2
  45. data/app/models/pageflow/revision.rb +1 -1
  46. data/app/models/pageflow/site.rb +59 -0
  47. data/app/models/pageflow/theme_customization.rb +1 -1
  48. data/app/models/pageflow/theme_customization_file.rb +6 -1
  49. data/app/policies/pageflow/account_policy.rb +2 -2
  50. data/app/policies/pageflow/entry_policy.rb +2 -2
  51. data/app/policies/pageflow/entry_template_policy.rb +1 -1
  52. data/app/policies/pageflow/{theming_policy.rb → site_policy.rb} +13 -11
  53. data/app/views/admin/accounts/_entry_template_details.html.arb +1 -1
  54. data/app/views/admin/accounts/_form.html.erb +4 -22
  55. data/app/views/admin/accounts/_site_defaults_inline_help.html.erb +5 -0
  56. data/app/views/admin/entries/_form.html.erb +11 -12
  57. data/app/views/admin/entries/_permalink_inputs.html.erb +6 -0
  58. data/app/views/admin/entries/_site_input.html.erb +15 -0
  59. data/app/views/admin/entries/{entry_type_name_input.html.erb → entry_site_and_type_name_input.html.erb} +3 -0
  60. data/app/views/admin/entries/permalink_inputs.html.erb +7 -0
  61. data/app/views/admin/entry_templates/_form.html.erb +5 -5
  62. data/app/views/admin/sites/_attributes_table.html.arb +9 -0
  63. data/app/views/admin/sites/_fields.html.erb +17 -0
  64. data/app/views/admin/sites/_form.html.erb +5 -0
  65. data/app/views/components/pageflow/admin/entries_tab.rb +1 -2
  66. data/app/views/components/pageflow/admin/entry_templates_tab.rb +10 -11
  67. data/app/views/components/pageflow/admin/features_tab.rb +1 -1
  68. data/app/views/components/pageflow/admin/sites_tab.rb +32 -0
  69. data/app/views/components/pageflow/admin/users_tab.rb +1 -2
  70. data/app/views/pageflow/editor/entries/seed.json.erb +1 -1
  71. data/app/views/pageflow/editor/file_import/start_import_job.json.jbuilder +10 -0
  72. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  73. data/app/views/pageflow/entries/{_theming.css.erb → _site.css.erb} +0 -0
  74. data/app/views/pageflow/entries/stylesheet.css.erb +1 -1
  75. data/app/views/pageflow/files/_file.json.jbuilder +1 -0
  76. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  77. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  78. data/config/initializers/admin_resource_tabs.rb +29 -12
  79. data/config/initializers/mime_types.rb +1 -0
  80. data/config/locales/de.yml +19 -17
  81. data/config/locales/en.yml +19 -17
  82. data/config/routes.rb +8 -5
  83. data/db/migrate/20221024100724_create_pageflow_permalink_directories.rb +10 -0
  84. data/db/migrate/20221025074049_add_permalink_attributes_to_entries.rb +5 -0
  85. data/db/migrate/20221027065022_create_pageflow_permalinks.rb +12 -0
  86. data/db/migrate/20221215101134_rename_theming_to_site.rb +9 -0
  87. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +34 -0
  88. data/db/migrate/20221219203023_add_name_to_sites.rb +5 -0
  89. data/db/migrate/20230103155934_associate_theme_customizations_with_sites.rb +27 -0
  90. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +176 -179
  91. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +49 -7
  92. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  93. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
  94. data/entry_types/paged/config/initializers/features.rb +2 -0
  95. data/entry_types/paged/config/locales/{new/help.de.yml → de.yml} +74 -65
  96. data/entry_types/paged/config/locales/{new/help.en.yml → en.yml} +66 -56
  97. data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +39 -13
  98. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +55 -0
  99. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +6 -2
  100. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +2 -0
  101. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/_manifest.json.jbuilder +16 -0
  102. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +9 -3
  103. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +5 -5
  104. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +16 -10
  105. data/entry_types/scrolled/config/locales/de.yml +265 -76
  106. data/entry_types/scrolled/config/locales/en.yml +266 -77
  107. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +3 -3
  108. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +14 -0
  109. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +1 -1
  110. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +1 -1
  111. data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +11 -0
  112. data/entry_types/scrolled/lib/pageflow_scrolled.rb +39 -1
  113. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +3 -2
  114. data/entry_types/scrolled/package/contentElements-editor.js +124 -38
  115. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  116. data/entry_types/scrolled/package/contentElements-frontend.js +321 -27
  117. data/entry_types/scrolled/package/editor.js +1345 -739
  118. data/entry_types/scrolled/package/frontend/EditableInlineText.module-14c7b097.js +5314 -0
  119. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9fb97827.js → PhonePlatformContext-f6093cc6.js} +87 -223
  120. data/entry_types/scrolled/package/frontend/{Viewer-e2290ea0.js → Viewer-b6becc57.js} +6 -40
  121. data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +42 -0
  122. data/entry_types/scrolled/package/frontend/{components-6ab26015.js → components-b3160dd7.js} +546 -361
  123. data/entry_types/scrolled/package/frontend/index.css +1 -1
  124. data/entry_types/scrolled/package/frontend/index.js +398 -3692
  125. data/entry_types/scrolled/package/package.json +3 -2
  126. data/entry_types/scrolled/package/testHelpers.js +12 -2
  127. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  128. data/entry_types/scrolled/package/widgets/defaultNavigation.js +50 -40
  129. data/entry_types/scrolled/spec/fixtures/image.ico +0 -0
  130. data/lib/pageflow/ability_mixin.rb +16 -8
  131. data/lib/pageflow/admin/attributes_table_rows.rb +1 -1
  132. data/lib/pageflow/admin/form_inputs.rb +1 -1
  133. data/lib/pageflow/admin/tabs.rb +1 -1
  134. data/lib/pageflow/configuration/permissions.rb +3 -3
  135. data/lib/pageflow/configuration.rb +17 -17
  136. data/lib/pageflow/entry_export_import/entry_serialization.rb +1 -1
  137. data/lib/pageflow/entry_type.rb +6 -2
  138. data/lib/pageflow/primary_domain_entry_redirect.rb +7 -7
  139. data/lib/pageflow/seeds.rb +10 -10
  140. data/lib/pageflow/theme_customizations.rb +10 -10
  141. data/lib/pageflow/version.rb +1 -1
  142. data/package/editor.js +129 -156
  143. data/package/frontend.js +19 -2
  144. data/package/testHelpers.js +39 -6
  145. data/spec/factories/accounts.rb +5 -2
  146. data/spec/factories/draft_entries.rb +2 -2
  147. data/spec/factories/entries.rb +18 -1
  148. data/spec/factories/entry_templates.rb +1 -1
  149. data/spec/factories/permalink_directory.rb +6 -0
  150. data/spec/factories/permalinks.rb +4 -0
  151. data/spec/factories/published_entries.rb +4 -2
  152. data/spec/factories/sites.rb +9 -0
  153. metadata +50 -62
  154. data/app/assets/javascripts/pageflow/dist/editor.js +0 -11890
  155. data/app/assets/javascripts/pageflow/dist/frontend.js +0 -5800
  156. data/app/assets/javascripts/pageflow/dist/react-client.js +0 -22
  157. data/app/assets/javascripts/pageflow/dist/react-server.js +0 -19
  158. data/app/helpers/pageflow/themings_helper.rb +0 -11
  159. data/app/models/pageflow/theming.rb +0 -29
  160. data/app/views/admin/accounts/_theming_defaults_inline_help.html.erb +0 -5
  161. data/app/views/admin/accounts/_theming_details.html.arb +0 -5
  162. data/app/views/pageflow/editor/themings/_theming.json.jbuilder +0 -1
  163. data/entry_types/paged/config/locales/new/video_contain.de.yml +0 -7
  164. data/entry_types/paged/config/locales/new/video_contain.en.yml +0 -7
  165. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +0 -8
  166. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +0 -8
  167. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +0 -8
  168. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +0 -9
  169. data/entry_types/scrolled/config/locales/new/consent.de.yml +0 -25
  170. data/entry_types/scrolled/config/locales/new/consent.en.yml +0 -24
  171. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +0 -39
  172. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +0 -39
  173. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +0 -14
  174. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +0 -14
  175. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +0 -28
  176. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +0 -27
  177. data/entry_types/scrolled/config/locales/new/header_size.de.yml +0 -17
  178. data/entry_types/scrolled/config/locales/new/header_size.en.yml +0 -17
  179. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +0 -39
  180. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +0 -39
  181. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +0 -26
  182. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +0 -26
  183. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +0 -9
  184. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +0 -9
  185. data/entry_types/scrolled/config/locales/new/section_width.de.yml +0 -10
  186. data/entry_types/scrolled/config/locales/new/section_width.en.yml +0 -10
  187. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +0 -7
  188. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +0 -7
  189. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +0 -8
  190. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +0 -8
  191. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +0 -11
  192. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +0 -12
  193. data/entry_types/scrolled/config/locales/new/widgets.de.yml +0 -6
  194. data/entry_types/scrolled/config/locales/new/widgets.en.yml +0 -6
  195. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +0 -9
  196. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/mstile-150x150.png +0 -0
  197. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/safari-pinned-tab.svg +0 -46
  198. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +0 -19
  199. data/entry_types/scrolled/package/frontend/EditableInlineText.module-b9923660.js +0 -993
  200. data/entry_types/scrolled/package/frontend/usePhonePlatform-2857c22b.js +0 -34
  201. data/spec/factories/themings.rb +0 -7
@@ -1,6 +1,48 @@
1
1
  en:
2
+ pageflow:
3
+ datawrapper_chart_embed_opt_in:
4
+ feature_name: Opt-in for Datawrapper embeds
5
+ defaultNavigation:
6
+ widget_type_name: Default navigation
7
+ editor:
8
+ widgets:
9
+ attributes:
10
+ defaultNavigation:
11
+ fixedOnDesktop:
12
+ inline_help: |
13
+ By default, the navigation are hidden when the page is
14
+ scrolled. Use this option to prevent hiding the
15
+ navigation bar in desktop layout. To safe space, the
16
+ navigation is still always hidden when the page is
17
+ scrolled in phone layout.
18
+ label: Keep expanded in desktop layout
19
+ hideSharingButton:
20
+ label: Hide share button
21
+ hideToggleMuteButton:
22
+ label: Hide unmute button
23
+ frontend_v2:
24
+ feature_name: Frontend v2
25
+ iframe_embed_content_element:
26
+ feature_name: iframe embed content element
27
+ ui:
28
+ configuration_editor:
29
+ tabs:
30
+ defaultNavigation: Default navigation
2
31
  pageflow_scrolled:
3
32
  editor:
33
+ backdrop_effects:
34
+ blur:
35
+ label: Blur
36
+ brightness:
37
+ label: Brightness
38
+ contrast:
39
+ label: Contast
40
+ grayscale:
41
+ label: Grayscale
42
+ saturate:
43
+ label: Saturate
44
+ sepia:
45
+ label: Sepia
4
46
  blank_entry:
5
47
  create_chapter: Click <em>New chapter</em> to create your first chapter.
6
48
  create_content_element: Use the <em>Plus buttons</em> inside the preview to add text blocks and other elements.
@@ -29,6 +71,23 @@ en:
29
71
  right: Floated right
30
72
  sticky: Sticky
31
73
  wide: Wide
74
+ typographyVariant:
75
+ blank: "(Default)"
76
+ label: Variant
77
+ variant:
78
+ blank: "(Default)"
79
+ label: Variant
80
+ content_element_categories:
81
+ basic:
82
+ name: Basic
83
+ data:
84
+ name: Data and Diagrams
85
+ interactive:
86
+ name: Interactive
87
+ links:
88
+ name: Links
89
+ media:
90
+ name: Media
32
91
  content_elements:
33
92
  dataWrapperChart:
34
93
  attributes:
@@ -43,6 +102,7 @@ en:
43
102
  url:
44
103
  inline_help: URL of a chart published via Datawrapper. Datawrapper offers a special 'Pageflow' layout selectable on the 'Design' tab for optimal display inside Pageflow.
45
104
  label: Chart URL
105
+ description: Embedded chart created with Datawrapper
46
106
  name: DataWrapper Chart
47
107
  tabs:
48
108
  general: Chart
@@ -66,6 +126,7 @@ en:
66
126
  back: Back
67
127
  confirm_delete: Are you sure you want to delete this element?
68
128
  confirm_delete_link: Are you sure you want to delete this link?
129
+ description: A collection of links to external websites
69
130
  destroy: Delete
70
131
  name: External links
71
132
  outline: Outline
@@ -76,9 +137,83 @@ en:
76
137
  attributes:
77
138
  children:
78
139
  label: Text
140
+ hyphens:
141
+ inline_help: |
142
+ With manual hyphenation, words are only ever separated
143
+ at positions that have been marked with a soft
144
+ hyphen. This helps prevent separating words at
145
+ unwanted positions. Without soft hyphens, long words
146
+ will be continued to the next line without a hyphen.
147
+ Therefore, always double check mobile display when
148
+ using manual hyphenation.
149
+ label: Hyphenation
150
+ values:
151
+ auto: Automatic
152
+ manual: Manual
153
+ textSize:
154
+ inline_help: |
155
+ By default, a heading in the first section of the
156
+ entry is large. Headings in later sections have small
157
+ text size.
158
+ label: Text size
159
+ values:
160
+ auto: "(Auto)"
161
+ large: Large
162
+ medium: Medium
163
+ small: Small
164
+ description: Entry or chapter title
165
+ help_texts:
166
+ shortcuts: |
167
+ <dl class="shortcuts">
168
+ <dt>
169
+ <span class="shortcut">
170
+ <kbd>Alt</kbd> + <kbd>Enter</kbd>
171
+ </span>
172
+ <span class="inline_help">
173
+ Specify potential line break points within long words
174
+ to control hyphenation.
175
+ </span>
176
+ </dt>
177
+ <dd>
178
+ Insert soft hyphen
179
+ </dd>
180
+ </dl>
79
181
  name: Heading
80
182
  tabs:
81
183
  general: Heading
184
+ iframeEmbed:
185
+ attributes:
186
+ aspectRatio:
187
+ label: Aspect Ratio
188
+ values:
189
+ narrow: Landscape (4:3)
190
+ portrait: Portrait (9:16)
191
+ square: Square (1:1)
192
+ wide: Landscape (16:9)
193
+ portraitAspectRatio:
194
+ blank: "(Default)"
195
+ label: Aspect Ratio (Portrait)
196
+ values:
197
+ narrow: Landscape (4:3)
198
+ portrait: Portrait (9:16)
199
+ square: Square (1:1)
200
+ wide: Landscape (16:9)
201
+ scale:
202
+ label: Scale
203
+ values:
204
+ p100: 100%
205
+ p33: 33%
206
+ p50: 50%
207
+ p75: 75%
208
+ source:
209
+ label: URL
210
+ title:
211
+ inline_help: Used by screen readers to describe the chart as a whole.
212
+ label: Title
213
+ description: Embed externally hosted websites
214
+ name: iframe Embed
215
+ tabs:
216
+ general: iframe Embed
82
217
  inlineAudio:
83
218
  attributes:
84
219
  atmoDuringPlayback:
@@ -92,14 +227,18 @@ en:
92
227
  label: Audio
93
228
  playerControlVariant:
94
229
  inline_help: Choose the style of player controls.
95
- label: Player Controls
230
+ label: Waveform Style
96
231
  values:
97
232
  classic: Classic
233
+ waveform: Waveform (Fein)
234
+ waveformBars: Waveform (Bars)
235
+ waveformLines: Waveform (Lines)
98
236
  posterId:
99
237
  label: Poster
100
238
  waveformColor:
101
239
  inline_help: Color of the waveform's parts that represents the already played part of the audio.
102
240
  label: Waveform Color
241
+ description: Player or waveform with controls
103
242
  name: Inline Audio
104
243
  tabs:
105
244
  general: Inline Audio
@@ -123,6 +262,7 @@ en:
123
262
  slider_color:
124
263
  inline_help: You can configure slider color (incl. slider handle) freely. Make sure that the slider can be seen clearly on every position over the entire Before/After area.
125
264
  label: Slider Color
265
+ description: Compare to images using a slider
126
266
  name: Before/After
127
267
  tabs:
128
268
  general: Before/After
@@ -130,6 +270,10 @@ en:
130
270
  attributes:
131
271
  id:
132
272
  label: Image
273
+ portraitId:
274
+ 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.
275
+ label: Image (Portrait)
276
+ description: Display an image
133
277
  name: Inline Image
134
278
  tabs:
135
279
  general: Inline Image
@@ -142,21 +286,92 @@ en:
142
286
  mute: Mute
143
287
  play: Keep playing
144
288
  turnDown: Keep playing at lower volume
289
+ hideControlBar:
290
+ inline_help: For short videos where there is no need to seek.
291
+ inline_help_disabled: Controls are always hidden for videos with playback mode "Loop".
292
+ label: Hide controls
145
293
  id:
146
294
  label: Video
295
+ playbackMode:
296
+ 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>
297
+ label: Playback Mode
298
+ values:
299
+ autoplay: Autoplay
300
+ loop: Loop
301
+ manual: Manual
147
302
  posterId:
148
303
  label: Poster
304
+ rewindOnUnmute:
305
+ 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.
306
+ label: "...and play from the beginning"
307
+ unmute:
308
+ 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.
309
+ label: "...when user clicks video"
310
+ unmuteLabel:
311
+ 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.
312
+ label: Unmute entry
313
+ description: Player with controls
149
314
  name: Inline Video
150
315
  tabs:
151
316
  general: Inline Video
317
+ question:
318
+ attributes:
319
+ expandByDefault:
320
+ inline_help: Display answer initially.
321
+ label: Expand by default
322
+ description: Expand to reveal an answer
323
+ name: Question/Answer
324
+ tabs:
325
+ general: Question/Answer
152
326
  soundDisclaimer:
327
+ description: Make sure users unmute before continuing
153
328
  name: Audio Notice
154
329
  tabs:
155
330
  general: Audio Notice
156
331
  textBlock:
332
+ description: Text with lists, block quotes and sub-headings
333
+ help_texts:
334
+ shortcuts: |
335
+ <dl class="shortcuts">
336
+ <dt>
337
+ <span class="shortcut">
338
+ <kbd>Shift</kbd> + <kbd>Enter</kbd>
339
+ </span>
340
+ <span class="inline_help">
341
+ Insert a new line without beginning a new paragraph.
342
+ </span>
343
+ </dt>
344
+ <dd>
345
+ Insert soft break/new line
346
+ </dd>
347
+ <dt>
348
+ <span class="shortcut">
349
+ <kbd>Alt</kbd> + <kbd>Enter</kbd>
350
+ </span>
351
+ <span class="inline_help">
352
+ Specify potential line break points within long words
353
+ to control hyphenation.
354
+ </span>
355
+ </dt>
356
+ <dd>
357
+ Insert soft hyphen
358
+ </dd>
359
+ </dl>
157
360
  name: Text Block
158
361
  tabs:
159
362
  general: Text Block
363
+ twitterEmbed:
364
+ attributes:
365
+ hideConversation:
366
+ label: Hide Conversation
367
+ hideMedia:
368
+ label: Hide Media
369
+ url:
370
+ label: Tweet URL
371
+ description: Embed content from Twitter
372
+ name: Tweet
373
+ tabs:
374
+ general: Twitter Embed
160
375
  videoEmbed:
161
376
  attributes:
162
377
  aspectRatio:
@@ -166,14 +381,24 @@ en:
166
381
  portrait: Portrait (9:16)
167
382
  square: Square
168
383
  wide: Landscape 16:9
384
+ atmoDuringPlayback:
385
+ inline_help: Choose which way the atmo shall behave during playback of the video embed.
386
+ label: Atmo During Playback
387
+ values:
388
+ mute: Mute
389
+ play: Keep playing
390
+ turnDown: Keep playing at lower volume
169
391
  hideControls:
170
392
  inline_help: Hides the player controls if possible (depends on the videos provider and configuration). The video can be played and paused via click.
171
393
  label: Hide controls
172
394
  hideInfo:
173
395
  inline_help: Hides the video title and author info inside the embed if possible (depends on the videos provider and configuration).
174
396
  label: Hide title in embed
397
+ posterId:
398
+ label: Poster
175
399
  videoSource:
176
400
  label: Video-URL
401
+ description: Embed a video from YouTube, Vimeo or Facebook
177
402
  name: Video Embed
178
403
  tabs:
179
404
  general: Video-Embed
@@ -185,6 +410,7 @@ en:
185
410
  label: Initial Pitch
186
411
  initialYaw:
187
412
  label: Initial Yaw
413
+ description: Interactive panorama using an image with rectangular projection
188
414
  name: 360° Image
189
415
  edit_chapter:
190
416
  attributes:
@@ -254,26 +480,37 @@ en:
254
480
  inline_help: This setting controls the position of the scrolling foreground layer of the section on desktop devices. On mobile devices the foreground layer will automatically become centered.
255
481
  label: Content alignment
256
482
  values:
483
+ center: Centered
484
+ centerRagged: Centered (Ragged)
257
485
  left: Left
258
486
  right: Right
259
487
  staticShadowOpacity:
260
488
  inline_help: Intensity of the shadow displayed behind text when section content and motif area fit side by side or no motif area has been specified. For left or right aligned content, the shadow has the form of a horizontal gradient. When "Content alignment" is set to "Center", the shadow is displayed as a translucent layer behind the text.
261
489
  label: Static shadow
490
+ width:
491
+ label: Width
492
+ values:
493
+ narrow: Narrow
494
+ wide: Wide
262
495
  edit_motif_area: Select motif area...
263
496
  tabs:
264
497
  section: Section
265
498
  edit_section_transition:
266
499
  attributes:
267
500
  transition:
501
+ default_transition: Used as default for new sections
268
502
  inline_help: This setting defines the transition when scrolling from the previous section to the current. The different settings have specific effects concerning the behaviors of background and foreground. The effects "Cross-Fade All" and "Cross-Fade Backgrounds" are only available if the "Use Full Viewport-Height" option has been enabled in the settings of both adjacent sections.
269
503
  label: Effect
504
+ mark_as_default_transition: Use as default for new sections
270
505
  values:
271
506
  beforeAfter: Scrolling with static Backgrounds
272
- fade: Also fade section content
273
- fadeBg: Cross Fade
507
+ fade: Cross Fade
274
508
  reveal: Reveal
275
509
  scroll: Scroll
276
510
  scrollOver: Scroll Over
511
+ variants:
512
+ fade: Also fade content of sections
513
+ fadeBg: Fade only section backgrounds
277
514
  confirm_destroy: |-
278
515
  Really delete this section including ALL its elements?
279
516
 
@@ -281,6 +518,9 @@ en:
281
518
  save_error: There was an error while saving this section.
282
519
  tabs:
283
520
  transition: Transition
521
+ effect_list_input:
522
+ add: Add effect...
523
+ remove: Remove
284
524
  entry_outline:
285
525
  add_chapter: New chapter
286
526
  header: Outline
@@ -291,6 +531,18 @@ en:
291
531
  section_item:
292
532
  drag_hint: Drag to move section
293
533
  save_error: There was an error while saving this section.
534
+ select_link_destination:
535
+ cancel: Cancel
536
+ create: Create
537
+ enter_url: Use external URL as destination
538
+ header: Create link
539
+ open_in_new_tab: Open in new tab
540
+ or: or
541
+ select_chapter_or_section: Select chapter or section as destination
542
+ selectable_chapter_item:
543
+ title: Select chapter
544
+ selectable_section_item:
545
+ title: Select section
294
546
  help_entries:
295
547
  content_elements:
296
548
  menu_item: Content Elements
@@ -394,87 +646,24 @@ en:
394
646
  after: Insert new element below
395
647
  before: Insert new element above
396
648
  insert_link: Insert link
649
+ link_tooltip:
650
+ chapter_number: Chapter %{number}
651
+ opens_in_new_tab: Opens in new tab
652
+ opens_in_same_tab: Outside editor, will open in same tab
653
+ visit_chapter: Go to chapter
654
+ visit_section: Go to section
397
655
  remove_link: Remove link
398
656
  select_content_element: Select element
399
657
  select_section: Select section
658
+ type_answer: Type answer text
400
659
  type_heading: Heading
660
+ type_question: Type question text
401
661
  type_text: Type some text
402
662
  type_title: Title
403
663
  url_placeholder: Type or paste URL
404
664
  public:
405
- chart:
406
- default_title: Interactive chart
407
- enter_fullscreen: Fullscreen
408
- exit_fullscreen: Exit fullscreen
409
- image_rights: Image rights
410
- js_required: Please activate JavaScript to make this website display correctly.
411
- languages:
412
- ar: Arabic
413
- cs: Czech
414
- de: German
415
- dk: Danish
416
- el: Greek
417
- en: English
418
- es: Spanish
419
- fi: Finnish
420
- fr: French
421
- fy: Frisian
422
- hi: Hindi
423
- it: Italian
424
- ja: Japanese
425
- lb: Letzeburgesch
426
- nb: Norsk Bokmål
427
- nl: Dutch
428
- nn: Norsk Nynorsk
429
- 'no': Norsk
430
- pl: Polish
431
- pt: Portuguese
432
- rm: Romansh
433
- ru: Russian
434
- se: Northern Sami
435
- sr: Serbian
436
- sv: Swedish
437
- tr: Turkish
438
- unknown: "(Unknown)"
439
- zh: Chinese
440
- navigation:
441
- chapter: Chapter %{number}
442
- close_mobile_menu: close chapter overview
443
- legal_info: Imprint
444
- mute: Mute sound
445
- open_mobile_menu: Open chapter overview
446
- share: Share
447
- unmute: Unmute sound
448
- navigation_skip_links:
449
- content: To the content
450
- player_controls:
451
- pause: Pause
452
- play: Play
453
- progress: 'Timeline. Current time: %{currentTime}. Duration: %{duration}'
454
- quality: Quality
455
- text_tracks: Subtitles
456
- sound_disclaimer:
457
- help_muted: This site works best with sound turned on. Click here to activate sound.
458
- help_unmuted: Sound can be muted again using the speaker icon in the navigation.
459
- text_track_modes:
460
- auto: Auto (%{label})
461
- auto_off: Auto (Off)
462
- none: false
463
665
  third_party_consent:
464
- confirm: Okay
465
666
  opt_in_prompt:
466
- datawrapper: I agree with being shown Datawrapper graphs.
467
- opt_out:
468
- prompt: To opt out of displaying external embeds, change your settings %{link}.
469
- prompt_link: here
470
- unsupported_browser: This website uses features that your browser doesn't support. Please upgrade to a recent version of your browser.
471
- video_qualities:
472
- annotations:
473
- 4k: 4K
474
- fullhd: HD
475
- medium: HD
476
- labels:
477
- 4k: 2160p
478
- auto: Auto
479
- fullhd: 1080p
480
- medium: 720p
667
+ twitter: I agree with being shown content from Twitter.
668
+ twitter:
669
+ default_title: Tweet
@@ -15,7 +15,7 @@ module PageflowScrolled
15
15
  # )
16
16
  #
17
17
  # @return [AdditionalPacks]
18
- # @since edge
18
+ # @since 15.7
19
19
  attr_reader :additional_frontend_packs
20
20
 
21
21
  # Load additional Webpacker packs in editor.
@@ -27,7 +27,7 @@ module PageflowScrolled
27
27
  # )
28
28
  #
29
29
  # @return [AdditionalPacks]
30
- # @since edge
30
+ # @since 15.7
31
31
  attr_reader :additional_editor_packs
32
32
 
33
33
  # Provide additional seed data for custom widgets and content
@@ -41,7 +41,7 @@ module PageflowScrolled
41
41
  # )
42
42
  #
43
43
  # @return [AdditionalSeedData]
44
- # @since edge
44
+ # @since 15.7
45
45
  attr_reader :additional_frontend_seed_data
46
46
 
47
47
  def initialize(*)
@@ -20,6 +20,20 @@ module PageflowScrolled
20
20
  c.features.register('datawrapper_chart_embed_opt_in')
21
21
  c.features.enable_by_default('datawrapper_chart_embed_opt_in')
22
22
  c.features.register('iframe_embed_content_element')
23
+ c.features.register('frontend_v2')
24
+
25
+ c.additional_frontend_seed_data.register(
26
+ 'frontendVersion',
27
+ FRONTEND_VERSION_SEED_DATA
28
+ )
29
+ end
30
+ end
31
+
32
+ FRONTEND_VERSION_SEED_DATA = lambda do |request:, entry:, **|
33
+ if request.params[:frontend] == 'v2' || entry.feature_state('frontend_v2')
34
+ 2
35
+ else
36
+ 1
23
37
  end
24
38
  end
25
39
  end
@@ -6,7 +6,7 @@ module PageflowScrolled
6
6
  # `pageflow-scrolled/widgets/<name>Theme.css` to define cutom
7
7
  # styles.
8
8
  #
9
- # @since edge
9
+ # @since 15.7
10
10
  class ReactWidgetType < Pageflow::WidgetType
11
11
  def initialize(role:, name:)
12
12
  @role = role
@@ -42,7 +42,7 @@ module PageflowScrolled
42
42
  :video_files,
43
43
  :audio_files,
44
44
  :text_track_files)) do |created_entry|
45
- created_entry.theming = attributes.fetch(:account).default_theming
45
+ created_entry.site = attributes.fetch(:account).default_site
46
46
 
47
47
  say_creating_scrolled_entry(created_entry)
48
48
  yield(created_entry) if block_given?
@@ -0,0 +1,11 @@
1
+ module PageflowScrolled
2
+ WebAppManifest = lambda do |entry|
3
+ EntriesController.renderer.render(
4
+ partial: 'manifest',
5
+ formats: 'json',
6
+ locals: {
7
+ theme: entry.theme
8
+ }
9
+ )
10
+ end
11
+ end
@@ -13,9 +13,11 @@ module PageflowScrolled
13
13
  configuration: PageflowScrolled::Configuration,
14
14
  editor_fragment_renderer: editor_fragment_renderer,
15
15
  editor_app: PageflowScrolled::Engine,
16
+ web_app_manifest: PageflowScrolled::WebAppManifest,
16
17
  theme_files: {
17
18
  logo_mobile: LOGO_OPTIONS,
18
- logo_desktop: LOGO_OPTIONS
19
+ logo_desktop: LOGO_OPTIONS,
20
+ **FAVICONS
19
21
  })
20
22
  end
21
23
 
@@ -37,4 +39,40 @@ module PageflowScrolled
37
39
  end
38
40
  end
39
41
  }.freeze
42
+
43
+ FAVICONS = {
44
+ favicon: {
45
+ content_type: %r{\Aimage/svg\+xml\z},
46
+ styles: {original: {}}
47
+ },
48
+ favicon_png: {
49
+ content_type: %r{\Aimage/},
50
+ styles: {
51
+ w16: {
52
+ geometry: '16x16#',
53
+ format: 'png'
54
+ },
55
+ w32: {
56
+ geometry: '32x32#',
57
+ format: 'png'
58
+ },
59
+ w180: {
60
+ geometry: '180x180#',
61
+ format: 'png'
62
+ },
63
+ w192: {
64
+ geometry: '192x192#',
65
+ format: 'png'
66
+ },
67
+ w512: {
68
+ geometry: '512x512#',
69
+ format: 'png'
70
+ }
71
+ }
72
+ },
73
+ favicon_ico: {
74
+ content_type: %r{\Aimage/vnd.microsoft.icon\z},
75
+ styles: {original: {}}
76
+ }
77
+ }.freeze
40
78
  end
@@ -31,9 +31,10 @@ namespace :pageflow_scrolled do
31
31
  Paperclip::Storage::S3.class_eval { def flush_writes; end }
32
32
  end
33
33
 
34
- account = seeds.account(name: 'Storybook seed') do |account_in_progress|
34
+ account = seeds.account(name: 'storybook-seed') do |account_in_progress|
35
35
  account_in_progress.features_configuration =
36
- account_in_progress.features_configuration.merge('scrolled_entry_type' => true)
36
+ account_in_progress.features_configuration.merge('scrolled_entry_type' => true,
37
+ 'frontend_v2' => true)
37
38
  end
38
39
 
39
40
  seeds.sample_scrolled_entry(