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

Footnotes: store in revisions #52686

Merged
merged 9 commits into from
Jul 19, 2023
Merged

Footnotes: store in revisions #52686

merged 9 commits into from
Jul 19, 2023

Conversation

ellatrix
Copy link
Member

@ellatrix ellatrix commented Jul 17, 2023

What?

Fixes #52541. Currently footnotes are not stored in revisions because it's post meta.

Why?

We should store them, otherwise footnotes are lost and links become broken.

How?

When a revision is added, update the revision meta. When restoring a revision, also restore the meta.

Testing Instructions

Create a post with footnotes. Then update the content and update a footnote or add/remove one. Now restore a previous revision.

Testing Instructions for Keyboard

Screenshots or screencast

fn-revision

@ellatrix ellatrix added [Type] Bug An existing feature does not function as intended Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta labels Jul 17, 2023
@ellatrix ellatrix requested a review from mcsf July 17, 2023 13:45
@ellatrix ellatrix requested a review from ajitbohra as a code owner July 17, 2023 13:45
@github-actions
Copy link

github-actions bot commented Jul 17, 2023

Flaky tests detected in a924b4b.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/5597363864
📝 Reported issues:

@adamsilverstein
Copy link
Member

@ellatrix - you may need to also add a filter on wp_save_post_revision_post_has_changed - otherwise changes to only meta (without content changes) will not create a revision. I have a pretty refined version of this type of revision auto-saving in https://github.com/adamsilverstein/wp-post-meta-revisions/blob/main/wp-post-meta-revisions.php please use what you can from there!

@ellatrix
Copy link
Member Author

@adamsilverstein Yes, I know, right now you need to change content as well to trigger a revision. When you add/remove or change footnotes order it will create a revision, because it affects post content. But this is the least of our problems. Currently we need to do this ugly hack:

remove_action( 'post_updated', 'wp_save_post_revision', 10, 1 );
add_action( 'wp_after_insert_post', 'wp_save_post_revision', 10, 1 );

Because the REST API first updates the post, then updates the meta. And revisions are created on post_updated, before the meta is inserted. If the REST API were using the meta_input field, it would be no problem.

Any ideas on what to do here?

@adamsilverstein
Copy link
Member

When you add/remove or change footnotes order it will create a revision, because it affects post content. But this is the least of our problems.

Ah, ok

Any ideas on what to do here?

This sounds very similar to the "off by one" issue raised several times on the plugin (eg. adamsilverstein/wp-post-meta-revisions#17 (comment) - review the fix there). I think moving the hook to wp_after_insert_post will have some unanticipated side effects so I would be hesitant to change that! Ultimately, I think we can fix this in core in a way that won't be as hacky because we can copy over the revised meta fields at the correct time. Now that GB footnotes actually utilizes post meta we have a stronger argument for getting a fix into core; I would be happy to work on trying to land this in 6.4. I can work on updating the core patch with the latest approach from the plugin

@adamsilverstein
Copy link
Member

adamsilverstein commented Jul 17, 2023

I took a new pass at the core patch and will test to verify footnotes work correctly (which I included by default now):

WordPress/wordpress-develop#4859

note the additional feature there that makes previews also work correctly with revisioned meta which I believe will correct other reported issues as well.

@ellatrix
Copy link
Member Author

Is this something we can publish as a plugin in the directory so we have something to point people to until 6.4? Though this bug makes me think that footnotes is not ready for 6.3. It would not be cool if we had to point people to a plugin for a new feature to work properly.

@ellatrix
Copy link
Member Author

To be clear, here's what happens now:

Whatever the current footnotes are, those will be preserved. But you might not realise that footnotes are not being tracked in revision history, and only realise after you restore a revision that footnotes are not restored. The fact that it’s heavily linked to the post content makes matter worse: the links will become broken with anchors pointing to nonexistent footnotes, footnotes being there that are not relevant, and the list numbering will not match the numbering in the content. That’s the case until you edit the post and the entity provider onChange is called so the order is fixed and irrelevant notes are deleted. But old footnotes will remain empty.

@ellatrix
Copy link
Member Author

ellatrix commented Jul 18, 2023

@adamsilverstein How do you address (or plan to address) the fact that the REST API updates meta separately, while the only hook it corrects is wp_after_insert_post, not post_updated, save_post etc. As long as creating a revision is done on the post_updated hook, this will be a problem, unless the REST API's hook order is corrected.

(I see you update meta before updating the post in the unit tests, which is the opposite of what the REST API does.)

@adamsilverstein
Copy link
Member

adamsilverstein commented Jul 18, 2023

@adamsilverstein How do you address (or plan to address) the fact that the REST API updates meta separately, while the only hook it corrects is wp_after_insert_post, not post_updated, save_post etc. As long as creating a revision is done on the post_updated hook, this will be a problem, unless the REST API's hook order is corrected.

I noticed that as well in my manual testing. I'll need to expand the unit tests to cover actual REST API saves. maybe here you could use the wp_after_insert_post action?

I think the best bet will be to integrate the revisioning meta update into the REST API endpoint directly, right after the post meta is updated, we can copy it over to the newly created revision. I started working on this in the PR and plan to continue on that direction. I will also try integrating to the autosaves endpoint which we use for previews.

this bug makes me think that footnotes is not ready for 6.3

I tend to agree: it is a serious bug, unless we plan to backport a fix to 6.3.1

@ellatrix
Copy link
Member Author

I noticed that as well in my manual testing. I'll need to expand the unit tests to cover actual REST API saves. maybe here you could use the wp_after_insert_post action?

That doesn't work because revisions are created on post_updated. A couple of solutions:

  • Move creating revisions to wp_after_insert_post. That will at least break plugins relying on the fact that it's added to the post_updated action, for example for removing the hook.
  • Fix the REST API so post_updated is fired after meta is updated, just like it is for wp_insert/update_post. I think this is my preference because it make the behaviour the same as wp_insert/update_post.
  • Maybe update post meta before updating the post in the REST API, but I think that's more risky and widens the difference between the REST API and wp_insert/update_post even more.

I tend to agree: it is a serious bug, unless we plan to backport a fix to 6.3.1

We should get this PR in 6.3 RC2.

@adamsilverstein
Copy link
Member

@ellatrix can you test with the latest version on WordPress/wordpress-develop#4859?

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

Thanks for the PR @ellatrix ! I'm not fully across how revisions work so am probably not the best person to review this change, but one thing I'm noticing is the function naming: because PHP files from block-library are auto-generated from the package in core, it's better to prefix the functions with wp instead of gutenberg, and rename them at build time. This avoids collisions when running the plugin once the functions are in core. See #51989 for a recent example.
Edit: actually #51978 might be a better example 😄

@Mamaduka Mamaduka added the [Block] Footnotes Affects the Footnotes Block label Jul 19, 2023
@ellatrix
Copy link
Member Author

@ellatrix can you test with the latest version on WordPress/wordpress-develop#4859?

Did you add REST API support?

@github-actions
Copy link

Size Change: +1.29 kB (0%)

Total Size: 1.44 MB

Filename Size Change
build/block-editor/index.min.js 209 kB +137 B (0%)
build/block-library/index.min.js 202 kB +197 B (0%)
build/components/index.min.js 241 kB +5 B (0%)
build/core-commands/index.min.js 2.31 kB +49 B (+2%)
build/core-data/index.min.js 16.4 kB -15 B (0%)
build/edit-site/index.min.js 88.8 kB +446 B (+1%)
build/edit-site/style-rtl.css 13.1 kB -6 B (0%)
build/edit-site/style.css 13.1 kB -7 B (0%)
build/editor/index.min.js 45.5 kB +20 B (0%)
build/interactivity/index.min.js 10.4 kB +282 B (+3%)
build/private-apis/index.min.js 951 B +8 B (+1%)
build/reusable-blocks/index.min.js 2.71 kB +173 B (+7%) 🔍
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.28 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 451 B
build/block-directory/index.min.js 6.99 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.26 kB
build/block-editor/content.css 4.25 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 624 B
build/block-library/blocks/button/style.css 623 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 409 B
build/block-library/blocks/columns/style.css 409 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 178 B
build/block-library/blocks/details/style.css 178 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view-interactivity.min.js 317 B
build/block-library/blocks/file/view.min.js 375 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/freeform/editor-rtl.css 2.58 kB
build/block-library/blocks/freeform/editor.css 2.58 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.42 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view-interactivity.min.js 1.46 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 712 B
build/block-library/blocks/navigation-link/editor.css 711 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.23 kB
build/block-library/blocks/navigation/style.css 2.22 kB
build/block-library/blocks/navigation/view-interactivity.min.js 988 B
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 438 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 302 B
build/block-library/blocks/query-pagination/style.css 299 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 450 B
build/block-library/blocks/query/editor.css 449 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 587 B
build/block-library/blocks/search/style.css 584 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 531 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.43 kB
build/block-library/blocks/social-links/style.css 1.42 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 645 B
build/block-library/blocks/table/style.css 644 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.1 kB
build/block-library/editor.css 12.1 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 13.7 kB
build/block-library/style.css 13.7 kB
build/block-library/theme-rtl.css 686 B
build/block-library/theme.css 691 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51 kB
build/commands/index.min.js 14.9 kB
build/commands/style-rtl.css 827 B
build/commands/style.css 827 B
build/components/style-rtl.css 11.8 kB
build/components/style.css 11.8 kB
build/compose/index.min.js 12 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.46 kB
build/customize-widgets/style.css 1.45 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.28 kB
build/date/index.min.js 17.8 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.63 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 35.3 kB
build/edit-post/style-rtl.css 7.58 kB
build/edit-post/style.css 7.57 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.52 kB
build/edit-widgets/style.css 4.52 kB
build/editor/style-rtl.css 3.58 kB
build/editor/style.css 3.58 kB
build/element/index.min.js 4.8 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.62 kB
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.64 kB
build/keycodes/index.min.js 1.84 kB
build/list-reusable-blocks/index.min.js 2.18 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.99 kB
build/nux/style-rtl.css 735 B
build/nux/style.css 732 B
build/plugins/index.min.js 1.77 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 943 B
build/priority-queue/index.min.js 1.52 kB
build/react-i18n/index.min.js 615 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 11 kB
build/router/index.min.js 1.77 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.83 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.57 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 958 B
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

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

Wonderful turnaround here! 🚀

@ellatrix ellatrix merged commit 92be30f into trunk Jul 19, 2023
@ellatrix ellatrix deleted the try/fn-revision branch July 19, 2023 17:03
@github-actions github-actions bot added this to the Gutenberg 16.4 milestone Jul 19, 2023
@adamsilverstein
Copy link
Member

@ellatrix can you test with the latest version on WordPress/wordpress-develop#4859?

Did you add REST API support?

Yes, it supports the rest API correctly, I just haven't added it to the tests

@Mamaduka
Copy link
Member

I created a small follow-up PR #52781.

tellthemachines pushed a commit that referenced this pull request Jul 24, 2023
@tellthemachines
Copy link
Contributor

I just cherry-picked this PR to the update/packages-RC2 branch to get it included in the next release: 5a3ac19

@tellthemachines tellthemachines removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Jul 24, 2023
tellthemachines added a commit that referenced this pull request Jul 24, 2023
* Filter out patterns that are not allowed in the inserter (#52675)

* Remove autofocus and improve placeholder text consistency. (#52634)

* Do not navigate to the styles pages unless you're in a random listing page (#52728)

* Patterns: Don't override the rootClientID  in create menu - only set if undefined (#52713)

* Footnotes: store in revisions (#52686)

* Fix: Block toolbar obscuring document tools when Top Toolbar is enabled (#52722)

* Update toolbar width

* Site editor needs specific width

* fixes top toolbar width for post editor when not in fullscreen

* remove the body rule

---------

Co-authored-by: Andrei Draganescu <[email protected]>

* Site Editor: Fix site link accessibility issues (#52744)

* Add id to pattern inserted notice to stop multiple notices stacking (#52746)

* Global Styles: Don't use named arguments for 'sprintf' (#52782)

* Footnotes: Use static closures when not using '' (#52781)

* removes check for active preview device type to enable the fixed toolbar preference (#52770)

* Parser / Site Editor: Ensure autop is not run when freeform block is set to core/html (#52716)

* Parse / Site Editor: Ensure autop is not run when freeform block is set to core/html

* Switch to equals freeform instead of not equals core/html

* Rename core/test-freeform to core/freeform in tests

* Adding @SInCE annotation for relevant 6.3 changes. (#52820)

* Navigation: Load the raw property on the navigation fallback (#52758)

* Navigation: Load the raw property on the navigation fallback

* Update lib/compat/wordpress-6.3/navigation-fallback.php

Co-authored-by: Dave Smith <[email protected]>

* Update lib/compat/wordpress-6.3/navigation-fallback.php

Co-authored-by: Dave Smith <[email protected]>

* Add a test for these properties

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* Update phpunit/class-gutenberg-rest-navigation-fallback-controller-test.php

Co-authored-by: Dave Smith <[email protected]>

* add more comments

* add necessary method

* Fix php coding standards error

---------

Co-authored-by: Dave Smith <[email protected]>
Co-authored-by: Jerry Jones <[email protected]>

* Allow styles to be changed dynamically through editor settings (#52767)

* ResizableFrame: Fix styling in Firefox (#52700)

* ResizableFrame: Fix styling in Firefox

* Remove unused class

* Patterns: Fix empty general template parts category (#52747)

---------

Co-authored-by: Glen Davies <[email protected]>

---------

Co-authored-by: Carolina Nymark <[email protected]>
Co-authored-by: Andrea Fercia <[email protected]>
Co-authored-by: Riad Benguella <[email protected]>
Co-authored-by: Glen Davies <[email protected]>
Co-authored-by: Ella <[email protected]>
Co-authored-by: James Koster <[email protected]>
Co-authored-by: Andrei Draganescu <[email protected]>
Co-authored-by: George Mamadashvili <[email protected]>
Co-authored-by: Andrei Draganescu <[email protected]>
Co-authored-by: Andrew Serong <[email protected]>
Co-authored-by: Ramon <[email protected]>
Co-authored-by: Ben Dwyer <[email protected]>
Co-authored-by: Dave Smith <[email protected]>
Co-authored-by: Jerry Jones <[email protected]>
Co-authored-by: Lena Morita <[email protected]>
Co-authored-by: Kai Hao <[email protected]>
Co-authored-by: Glen Davies <[email protected]>

if ( $_gutenberg_revision_id ) {
$revision = get_post( $_gutenberg_revision_id );
$post_id = $revision->post_parent;
Copy link
Contributor

Choose a reason for hiding this comment

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

This line is causing PHP test failures on the core backport. Not 100% sure why that's happening but might be good to check if the revision exists/is an object before trying to access one of its properties?

Copy link
Member Author

Choose a reason for hiding this comment

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

#52879 fixes it

Copy link
Member

Choose a reason for hiding this comment

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

I think @tellthemachines already created PR for this #52870

@adamsilverstein
Copy link
Member

Does this fix also work for previews?

I realize this is needed to land footnotes in 6.3, however I feel we should generalize the code so any post meta can be revisioned, which is what my core PR does. I will continue to work on that code with a plan to remove what was added here once the more generalized solution is available.

@ellatrix
Copy link
Member Author

Yes, it would be good to replace this with a general solution.

Does this fix also work for previews?

What do you mean?

@Mamaduka
Copy link
Member

Does this fix also work for previews?

It doesn't work with published posts.

Testing Instructions

  1. Create a new post.
  2. Add text and a few footnotes.
  3. Publish the post.
  4. Add another footnote.
  5. Preview the post.
  6. Notice that the new footnote isn't displayed in the block, but the anchor is in the content.

Screenshot

CleanShot 2023-07-26 at 12 16 48

@ellatrix
Copy link
Member Author

Looking into it

@ellatrix
Copy link
Member Author

What does this have to do with revisions though?

@Mamaduka
Copy link
Member

The previews are stored as a temp revision - autosaves.

@ellatrix
Copy link
Member Author

Oh, ok. Since there's no content loss, I'm not sure if we should fix it this late.

@ellatrix
Copy link
Member Author

@adamsilverstein Yes, your PR adds e2e test for the revisions endpoint, but it doesn't add tests for the posts endpoint, which is what GB is using. GB is not managing revisions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Footnotes Affects the Footnotes Block [Type] Bug An existing feature does not function as intended
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

Footnotes: footnotes are not reverted or restored with post revisions
5 participants