Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dashboard: Add global Page Advancement setting #12460

Merged
merged 37 commits into from
Oct 31, 2022

Conversation

miina
Copy link
Contributor

@miina miina commented Oct 11, 2022

Context

Adds Page Advancement global option to the Dashboard settings which will be used if the setting hasn't been set per story.

Summary

Relevant Technical Choices

To-do

  • Style
  • Tests
  • What to do with the migration V11?

User-facing changes

Screenshot 2022-10-13 at 12 58 37

Testing Instructions

  • This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

  1. Go to Dashboard settings
  2. Change the Page Advancement settings
  3. Verify that when adding a new story, the settings configured in the Dashboard are now used
  4. Verify existing stories will not be influenced.

Reviews

Does this PR have a security-related impact?

Does this PR change what data or activity we track or use?

Two new tracking values: change_auto_advance and change_default_page_duration

Does this PR have a legal-related impact?

Checklist

  • This PR addresses an existing issue and I have linked this PR to it in ZenHub
  • I have tested this code to the best of my abilities
  • I have verified accessibility to the best of my abilities (docs)
  • I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
  • This code is covered by automated tests (unit, integration, and/or e2e) to verify it works as intended (docs)
  • I have added documentation where necessary
  • I have added a matching Type: XYZ label to the PR

Fixes #11528

@miina miina added Type: Enhancement New feature or improvement of an existing feature Pod: Prometheus labels Oct 11, 2022
@miina miina self-assigned this Oct 11, 2022
defaultPageDuration: 7,
...story,
};
return story as StoryV11;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have to remove always setting the auto-advance and page duration, otherwise we can't really detect if it needs to be overridden by global settings.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@merapi FYI I stepped through the code locally and looks like the version is undefined for a new story, meaning that every new story will go through the full migration script initially 🤷 Not sure if that's the intended way or a bug.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@swissspidy Perhaps you have thoughts about this?
Looks like new stories will always go through all migrations. Since V11 adds auto-advance props but we shouldn't have those by default on new stories to use the global ones instead, we don't need V11 migration anymore. Should we just remove it? Is it a bug that the migration runs through new stories?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like new stories will always go through all migrations. Is it a bug that the migration runs through new stories?

AFAIK it's intentional because this way a new story automatically gets the right and up-to-date data structure.

We shouldn't modify existing migrations though, since this won't work for existing stories.

It'd be better to add a new migration, e.g. to delete defaultPageDuration if it's 7.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'd be better to add a new migration, e.g. to delete defaultPageDuration if it's 7.

Yep, I wasn't sure about what's the best way to proceed with that -- removed the current migration to make it work functionally.

If we add a new migration, the existing stories with the default values would be changed and this would mean the new global values would influence those stories, too, not just the new stories. If that's ok then this sounds like a good plan.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new global value will default to the same number as before, right? So a story would still behave the same.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessarily. The new global value will be default indeed, however, if the user first changes the global value, and then opens an existing story with previous default values, it will use the new global values for the story -- since the migration runs only if a story is opened, and it can be opened after the global value has been changed.

@miina miina marked this pull request as ready for review October 13, 2022 09:57
@miina miina requested review from barklund and merapi October 13, 2022 10:02
@googleforcreators-bot
Copy link
Collaborator

googleforcreators-bot commented Oct 13, 2022

Plugin builds for cd20bc2 are ready 🛎️!

@github-actions
Copy link
Contributor

github-actions bot commented Oct 13, 2022

Size Change: +1.28 kB (0%)

Total Size: 2.72 MB

Filename Size Change
assets/js/2539.js 0 B -195 kB (removed) 🏆
assets/js/4393.js 0 B -7.72 kB (removed) 🏆
assets/js/5369.js 0 B -90.4 kB (removed) 🏆
assets/js/9419.js 0 B -35 kB (removed) 🏆
assets/js/wp-dashboard.js 64.2 kB +754 B (+1%)
assets/js/wp-story-editor.js 1.44 MB -932 B (0%)
assets/js/1629.js 193 kB +193 kB (new file) 🆕
assets/js/2468.js 7.74 kB +7.74 kB (new file) 🆕
assets/js/6221.js 93.2 kB +93.2 kB (new file) 🆕
assets/js/9162.js 36.5 kB +36.5 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
assets/css/carousel-view-rtl.css 702 B 0 B
assets/css/carousel-view.css 701 B 0 B
assets/css/web-stories-block-rtl.css 4.5 kB 0 B
assets/css/web-stories-block.css 4.54 kB 0 B
assets/css/web-stories-embed-rtl.css 318 B 0 B
assets/css/web-stories-embed.css 317 B 0 B
assets/css/web-stories-list-styles-rtl.css 2.34 kB 0 B
assets/css/web-stories-list-styles.css 2.37 kB 0 B
assets/css/web-stories-theme-style-twentyeleven-rtl.css 102 B 0 B
assets/css/web-stories-theme-style-twentyeleven.css 102 B 0 B
assets/css/web-stories-theme-style-twentyfifteen-rtl.css 251 B 0 B
assets/css/web-stories-theme-style-twentyfifteen.css 251 B 0 B
assets/css/web-stories-theme-style-twentyfourteen-rtl.css 287 B 0 B
assets/css/web-stories-theme-style-twentyfourteen.css 287 B 0 B
assets/css/web-stories-theme-style-twentyseventeen-rtl.css 288 B 0 B
assets/css/web-stories-theme-style-twentyseventeen.css 288 B 0 B
assets/css/web-stories-theme-style-twentysixteen-rtl.css 224 B 0 B
assets/css/web-stories-theme-style-twentysixteen.css 224 B 0 B
assets/css/web-stories-theme-style-twentyten-rtl.css 143 B 0 B
assets/css/web-stories-theme-style-twentyten.css 143 B 0 B
assets/css/web-stories-theme-style-twentytwelve-rtl.css 256 B 0 B
assets/css/web-stories-theme-style-twentytwelve.css 256 B 0 B
assets/css/web-stories-theme-style-twentytwenty-rtl.css 86 B 0 B
assets/css/web-stories-theme-style-twentytwenty.css 86 B 0 B
assets/css/web-stories-theme-style-twentytwentyone-rtl.css 326 B 0 B
assets/css/web-stories-theme-style-twentytwentyone.css 326 B 0 B
assets/css/web-stories-widget-rtl.css 482 B 0 B
assets/css/web-stories-widget.css 482 B 0 B
assets/css/wp-dashboard-rtl.css 657 B 0 B
assets/css/wp-dashboard.css 659 B 0 B
assets/css/wp-story-editor-rtl.css 769 B 0 B
assets/css/wp-story-editor.css 771 B 0 B
assets/js/4422.js 49.3 kB 0 B
assets/js/9750.js 12.8 kB 0 B
assets/js/carousel-view.js 3.41 kB 0 B
assets/js/chunk-colorthief.js 2.64 kB 0 B
assets/js/chunk-ffmpeg.js 5.89 kB 0 B
assets/js/chunk-html-to-image.js 4.5 kB 0 B
assets/js/chunk-opentype.js 96 B 0 B
assets/js/chunk-react-calendar.js 12.5 kB 0 B
assets/js/chunk-react-color.js 44.3 kB 0 B
assets/js/chunk-selfie-segmentation.js 12.5 kB 0 B
assets/js/chunk-web-animations-js.js 14.6 kB 0 B
assets/js/chunk-web-stories-template-0-metaData.js 546 B 0 B
assets/js/chunk-web-stories-template-0.js 11.4 kB 0 B
assets/js/chunk-web-stories-template-1-metaData.js 540 B 0 B
assets/js/chunk-web-stories-template-1.js 9.6 kB 0 B
assets/js/chunk-web-stories-template-10-metaData.js 532 B 0 B
assets/js/chunk-web-stories-template-10.js 7.36 kB 0 B
assets/js/chunk-web-stories-template-11-metaData.js 539 B 0 B
assets/js/chunk-web-stories-template-11.js 9.07 kB 0 B
assets/js/chunk-web-stories-template-12-metaData.js 496 B 0 B
assets/js/chunk-web-stories-template-12.js 9.68 kB 0 B
assets/js/chunk-web-stories-template-13-metaData.js 525 B 0 B
assets/js/chunk-web-stories-template-13.js 7.39 kB 0 B
assets/js/chunk-web-stories-template-14-metaData.js 582 B 0 B
assets/js/chunk-web-stories-template-14.js 7.37 kB 0 B
assets/js/chunk-web-stories-template-15-metaData.js 544 B 0 B
assets/js/chunk-web-stories-template-15.js 9 kB 0 B
assets/js/chunk-web-stories-template-16-metaData.js 588 B 0 B
assets/js/chunk-web-stories-template-16.js 10.8 kB 0 B
assets/js/chunk-web-stories-template-17-metaData.js 540 B 0 B
assets/js/chunk-web-stories-template-17.js 9.2 kB 0 B
assets/js/chunk-web-stories-template-18-metaData.js 587 B 0 B
assets/js/chunk-web-stories-template-18.js 9.9 kB 0 B
assets/js/chunk-web-stories-template-19-metaData.js 501 B 0 B
assets/js/chunk-web-stories-template-19.js 10.8 kB 0 B
assets/js/chunk-web-stories-template-2-metaData.js 586 B 0 B
assets/js/chunk-web-stories-template-2.js 9.29 kB 0 B
assets/js/chunk-web-stories-template-20-metaData.js 548 B 0 B
assets/js/chunk-web-stories-template-20.js 8.99 kB 0 B
assets/js/chunk-web-stories-template-21-metaData.js 536 B 0 B
assets/js/chunk-web-stories-template-21.js 9.85 kB 0 B
assets/js/chunk-web-stories-template-22-metaData.js 525 B 0 B
assets/js/chunk-web-stories-template-22.js 7.83 kB 0 B
assets/js/chunk-web-stories-template-23-metaData.js 604 B 0 B
assets/js/chunk-web-stories-template-23.js 7.47 kB 0 B
assets/js/chunk-web-stories-template-24-metaData.js 517 B 0 B
assets/js/chunk-web-stories-template-24.js 11.7 kB 0 B
assets/js/chunk-web-stories-template-25-metaData.js 543 B 0 B
assets/js/chunk-web-stories-template-25.js 7.05 kB 0 B
assets/js/chunk-web-stories-template-26-metaData.js 600 B 0 B
assets/js/chunk-web-stories-template-26.js 7.26 kB 0 B
assets/js/chunk-web-stories-template-27-metaData.js 542 B 0 B
assets/js/chunk-web-stories-template-27.js 7.8 kB 0 B
assets/js/chunk-web-stories-template-28-metaData.js 532 B 0 B
assets/js/chunk-web-stories-template-28.js 9.05 kB 0 B
assets/js/chunk-web-stories-template-29-metaData.js 561 B 0 B
assets/js/chunk-web-stories-template-29.js 9.24 kB 0 B
assets/js/chunk-web-stories-template-3-metaData.js 539 B 0 B
assets/js/chunk-web-stories-template-3.js 8.39 kB 0 B
assets/js/chunk-web-stories-template-30-metaData.js 576 B 0 B
assets/js/chunk-web-stories-template-30.js 7.88 kB 0 B
assets/js/chunk-web-stories-template-31-metaData.js 503 B 0 B
assets/js/chunk-web-stories-template-31.js 10.3 kB 0 B
assets/js/chunk-web-stories-template-32-metaData.js 552 B 0 B
assets/js/chunk-web-stories-template-32.js 13.3 kB 0 B
assets/js/chunk-web-stories-template-33-metaData.js 491 B 0 B
assets/js/chunk-web-stories-template-33.js 9.06 kB 0 B
assets/js/chunk-web-stories-template-34-metaData.js 570 B 0 B
assets/js/chunk-web-stories-template-34.js 7.57 kB 0 B
assets/js/chunk-web-stories-template-35-metaData.js 565 B 0 B
assets/js/chunk-web-stories-template-35.js 8.9 kB 0 B
assets/js/chunk-web-stories-template-36-metaData.js 575 B 0 B
assets/js/chunk-web-stories-template-36.js 12.7 kB 0 B
assets/js/chunk-web-stories-template-37-metaData.js 529 B 0 B
assets/js/chunk-web-stories-template-37.js 6.71 kB 0 B
assets/js/chunk-web-stories-template-38-metaData.js 572 B 0 B
assets/js/chunk-web-stories-template-38.js 7.92 kB 0 B
assets/js/chunk-web-stories-template-39-metaData.js 589 B 0 B
assets/js/chunk-web-stories-template-39.js 8.07 kB 0 B
assets/js/chunk-web-stories-template-4-metaData.js 564 B 0 B
assets/js/chunk-web-stories-template-4.js 12.7 kB 0 B
assets/js/chunk-web-stories-template-40-metaData.js 556 B 0 B
assets/js/chunk-web-stories-template-40.js 10.2 kB 0 B
assets/js/chunk-web-stories-template-41-metaData.js 573 B 0 B
assets/js/chunk-web-stories-template-41.js 7.74 kB 0 B
assets/js/chunk-web-stories-template-42-metaData.js 521 B 0 B
assets/js/chunk-web-stories-template-42.js 6.99 kB 0 B
assets/js/chunk-web-stories-template-43-metaData.js 557 B 0 B
assets/js/chunk-web-stories-template-43.js 8.75 kB 0 B
assets/js/chunk-web-stories-template-44-metaData.js 583 B 0 B
assets/js/chunk-web-stories-template-44.js 11.1 kB 0 B
assets/js/chunk-web-stories-template-45-metaData.js 565 B 0 B
assets/js/chunk-web-stories-template-45.js 7.51 kB 0 B
assets/js/chunk-web-stories-template-46-metaData.js 531 B 0 B
assets/js/chunk-web-stories-template-46.js 5.21 kB 0 B
assets/js/chunk-web-stories-template-47-metaData.js 591 B 0 B
assets/js/chunk-web-stories-template-47.js 9.41 kB 0 B
assets/js/chunk-web-stories-template-48-metaData.js 556 B 0 B
assets/js/chunk-web-stories-template-48.js 9.08 kB 0 B
assets/js/chunk-web-stories-template-49-metaData.js 518 B 0 B
assets/js/chunk-web-stories-template-49.js 9.69 kB 0 B
assets/js/chunk-web-stories-template-5-metaData.js 556 B 0 B
assets/js/chunk-web-stories-template-5.js 9.91 kB 0 B
assets/js/chunk-web-stories-template-50-metaData.js 503 B 0 B
assets/js/chunk-web-stories-template-50.js 9.13 kB 0 B
assets/js/chunk-web-stories-template-51-metaData.js 526 B 0 B
assets/js/chunk-web-stories-template-51.js 10.3 kB 0 B
assets/js/chunk-web-stories-template-52-metaData.js 601 B 0 B
assets/js/chunk-web-stories-template-52.js 10.3 kB 0 B
assets/js/chunk-web-stories-template-53-metaData.js 551 B 0 B
assets/js/chunk-web-stories-template-53.js 5.78 kB 0 B
assets/js/chunk-web-stories-template-54-metaData.js 547 B 0 B
assets/js/chunk-web-stories-template-54.js 7.66 kB 0 B
assets/js/chunk-web-stories-template-55-metaData.js 574 B 0 B
assets/js/chunk-web-stories-template-55.js 7.12 kB 0 B
assets/js/chunk-web-stories-template-56-metaData.js 542 B 0 B
assets/js/chunk-web-stories-template-56.js 9.85 kB 0 B
assets/js/chunk-web-stories-template-57-metaData.js 528 B 0 B
assets/js/chunk-web-stories-template-57.js 14.9 kB 0 B
assets/js/chunk-web-stories-template-58-metaData.js 554 B 0 B
assets/js/chunk-web-stories-template-58.js 5.74 kB 0 B
assets/js/chunk-web-stories-template-59-metaData.js 590 B 0 B
assets/js/chunk-web-stories-template-59.js 8.94 kB 0 B
assets/js/chunk-web-stories-template-6-metaData.js 568 B 0 B
assets/js/chunk-web-stories-template-6.js 7.06 kB 0 B
assets/js/chunk-web-stories-template-60-metaData.js 509 B 0 B
assets/js/chunk-web-stories-template-60.js 9.52 kB 0 B
assets/js/chunk-web-stories-template-7-metaData.js 569 B 0 B
assets/js/chunk-web-stories-template-7.js 7.45 kB 0 B
assets/js/chunk-web-stories-template-8-metaData.js 569 B 0 B
assets/js/chunk-web-stories-template-8.js 8.9 kB 0 B
assets/js/chunk-web-stories-template-9-metaData.js 580 B 0 B
assets/js/chunk-web-stories-template-9.js 8.45 kB 0 B
assets/js/chunk-web-stories-templates.js 1.17 kB +1 B (0%)
assets/js/chunk-web-stories-textset-0.js 5.04 kB 0 B
assets/js/chunk-web-stories-textset-1.js 6.63 kB 0 B
assets/js/chunk-web-stories-textset-2.js 7.62 kB 0 B
assets/js/chunk-web-stories-textset-3.js 15 kB 0 B
assets/js/chunk-web-stories-textset-4.js 4.14 kB 0 B
assets/js/chunk-web-stories-textset-5.js 5.45 kB 0 B
assets/js/chunk-web-stories-textset-6.js 5.25 kB 0 B
assets/js/chunk-web-stories-textset-7.js 10.1 kB 0 B
assets/js/generateBlurhash.worker.worker.js 1.1 kB 0 B
assets/js/imgareaselect.js 3.77 kB 0 B
assets/js/lightbox.js 550 B 0 B
assets/js/tinymce-button.js 2.85 kB 0 B
assets/js/web-stories-activation-notice.js 27.1 kB 0 B
assets/js/web-stories-block.js 22.6 kB 0 B
assets/js/web-stories-embed.js 20 B 0 B
assets/js/web-stories-widget.js 587 B 0 B

compressed-size-action

@spacedmonkey
Copy link
Contributor

Couple of questions and I think we need to work out what is going on with the migration, otherwise this is looking good to go.

@miina
Copy link
Contributor Author

miina commented Oct 13, 2022

Couple of questions and I think we need to work out what is going on with the migration, otherwise this is looking good to go.

Yep, that's still a todo in the description, too :) Pascal also recommended adding a new migration. If it's ok that all the previous stories with default values be influenced as well by the new global values, then sounds like a good plan.

Copy link
Contributor

@barklund barklund left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks and works perfect!

Copy link
Contributor

@spacedmonkey spacedmonkey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@kkalarickal
Copy link

@swissspidy @miina

I can confirm that changing the value of auto page advancement time is saved. When I create a new story, the global value is applied to the new story only (does not affect previously created stories).

However, when I publish the story and look at the source, it looks like the updated value is NOT passed on to the amp

Example:

  • I update the global page adv to auto-15sec

image.png

  • The new story that I created had default auto adv se to 15 sec

Test Story URL: https://stories-qa-wordpress-amp.pantheonsite.io/wp-admin/post.php?post=20421&action=edit#page=%2522e538f99e-de42-4385-987d-d02a3d867645%2522

image.png

  • However, the AMP that was generated still showed 7 sec

image.png

  • Also, if you publish and view the story, the time delay between auto page adv is actually 7 sec .. not the longer 15 sec.

@kkalarickal
Copy link

I feel this ticket needs some more work.

  1. Ensure that the new global value is actually reflected in the amp and the timing meets the new global number.

  2. Either disallow decimals in the global page adv setting, or ensure that any fractions in the setting are transferred to the individual story. At the moment, if I set global ppage adv to 2.5 sec, the story shows 2 sec page adv value.

@miina
Copy link
Contributor Author

miina commented Oct 20, 2022

  • Ensure that the new global value is actually reflected in the amp and the timing meets the new global number.

Good catch! I saved the story before publishing so the values were correct in the front-end, too. Should be fixed now without saving, too.

  • Either disallow decimals in the global page adv setting, or ensure that any fractions in the setting are transferred to the individual story. At the moment, if I set global ppage adv to 2.5 sec, the story shows 2 sec page adv value.

Fixed, thanks!

@kkalarickal
Copy link

@miina -- now the global value for page adv is applied by directly to the new story and within the amp (both draft and published version) as expected. I also tested other ways of creating a story (duplicate existing story, New > Story from top menu, Stories > Add new) and the page adv value matches the expected.

However, when I create a web-story from template, the updated global value is NOT applied

Test:

  1. Set the global auto page adv to 15 sec or manual
  2. Go to Explore Templates > Use template to create a web-story from template
  3. Verify the Document > Page adv setting

Expected: the new global age adv 15 sec or manual
Observed: the old 7 sec default is found.

I think the path to create a new story from template should honor the global page adv settings.

Cc: @swissspidy

@kkalarickal
Copy link

@swissspidy @miina - I think this ticket should be in-progress since creating the story via templates does not pick up the global page adv settings. So I am going to move this ticket back so that it reflects the current status.

@merapi
Copy link
Contributor

merapi commented Oct 27, 2022

Good catch @kkalarickal but I think we should proceed with what we have here and create a follow-up to solve the template case because for me it's not so obvious that is should be taken from the global settings and not from the template settings.
Let's say I create a template for a recipe and set the auto-advancement to manual. When I create the story from that template, I still want it to be manual (and not global 20s) because it's a recipe and different people need a different amount of time to process/prepare the ingredients or follow the steps on a given page.
So it's kind of a product question we need to answer.

Is everything else fine here?

@swissspidy
Copy link
Collaborator

Let's say I create a template for a recipe and set the auto-advancement to manual.

@merapi Are you referring to custom saved page templates? Or the story templates from the dashboard?

@merapi
Copy link
Contributor

merapi commented Oct 27, 2022

@merapi Are you referring to custom saved page templates? Or the story templates from the dashboard?

Templates from the dashboard. So the question is - whether the template creator would like the new story pages to have a specific auto-advance rather than the global one. Is there a use case for that?

@kkalarickal
Copy link

Is everything else fine here?

Yes @merapi -- the global auto advance settings are working fine on all other paths for creating a new story. If the templates from dashboard have their own auto adv setting that is not over-riden by the global setting, then we should probably mention that in the Default Page Advancement blurb "All new stories will be set to this page advancement setting, except when created from default templates...."

@merapi
Copy link
Contributor

merapi commented Oct 28, 2022

we should probably mention that in the Default Page Advancement blurb

💯

I think the path to create a new story from template should honor the global page adv settings.

My biggest issue with this is:
When those templates were created the timeout was 7s, if somebody changes the global timeout to 3s or 20s most of those stories will be unreadable - pages will switch too fast and you will not able to read them fully, or readers will be annoyed by how long they need to wait for the next page.

@miina
Copy link
Contributor Author

miina commented Oct 31, 2022

For visibility: it was decided that we'll use global value for the templates. Will create a follow-up PR for that.

@miina miina merged commit 5df5757 into main Oct 31, 2022
@miina miina deleted the add/11528-dashboard-page-advancement branch October 31, 2022 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement New feature or improvement of an existing feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Provide way to set manual page advancement as default
7 participants