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

Editor: Multi-Entity Saving UI Improvements #35933

Merged
merged 14 commits into from
Oct 29, 2021
Merged

Conversation

ockham
Copy link
Contributor

@ockham ockham commented Oct 25, 2021

Description

Closes part of #31456.

  • Update panel header
  • Add entity descriptions to site and template sections
  • Sort entities (site before templates before template types before content)

How has this been tested?

  • Use the TT1 Blocks theme.
  • Go to the Site Editor, and select the Single Post Template to edit.
  • Make a few minor changes: Change the site title and tagline; insert a paragraph block with some text near the post content; change the address in the site footer.
  • Click 'Save'.

Screenshots

Before After
image image

Follow-up

I'd like to add the second screen from #31456 (comment) (where users can discard changes they've made) in a follow-up PR.

@ockham ockham added [Feature] Synced Patterns Related to synced patterns (formerly reusable blocks) [Feature] Full Site Editing labels Oct 25, 2021
@ockham ockham self-assigned this Oct 25, 2021
@ockham ockham marked this pull request as ready for review October 25, 2021 19:38
@github-actions
Copy link

github-actions bot commented Oct 25, 2021

Size Change: +4.58 kB (0%)

Total Size: 1.08 MB

Filename Size Change
build/block-editor/index.min.js 135 kB +606 B (0%)
build/block-editor/style-rtl.css 14.1 kB +27 B (0%)
build/block-editor/style.css 14 kB +28 B (0%)
build/block-library/blocks/button/style-rtl.css 560 B +11 B (+2%)
build/block-library/blocks/button/style.css 560 B +11 B (+2%)
build/block-library/blocks/navigation-link/editor-rtl.css 642 B +154 B (+32%) 🚨
build/block-library/blocks/navigation-link/editor.css 642 B +153 B (+31%) 🚨
build/block-library/blocks/post-content/style-rtl.css 56 B -1 B (-2%)
build/block-library/blocks/post-content/style.css 56 B -1 B (-2%)
build/block-library/editor-rtl.css 9.78 kB +69 B (+1%)
build/block-library/editor.css 9.78 kB +71 B (+1%)
build/block-library/index.min.js 154 kB +2.47 kB (+2%)
build/block-library/style-rtl.css 10.5 kB +14 B (0%)
build/block-library/style.css 10.6 kB +14 B (0%)
build/blocks/index.min.js 46 kB +16 B (0%)
build/components/index.min.js 212 kB +23 B (0%)
build/components/style-rtl.css 15.4 kB +6 B (0%)
build/components/style.css 15.4 kB +6 B (0%)
build/compose/index.min.js 10.9 kB +511 B (+5%) 🔍
build/core-data/index.min.js 12.6 kB +186 B (+1%)
build/customize-widgets/index.min.js 11.2 kB +31 B (0%)
build/edit-site/index.min.js 30.7 kB +61 B (0%)
build/edit-site/style-rtl.css 5.79 kB +13 B (0%)
build/edit-site/style.css 5.79 kB +11 B (0%)
build/edit-widgets/index.min.js 16.3 kB -2 B (0%)
build/editor/index.min.js 37.8 kB +96 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
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 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/buttons/editor-rtl.css 309 B
build/block-library/blocks/buttons/editor.css 309 B
build/block-library/blocks/buttons/style-rtl.css 317 B
build/block-library/blocks/buttons/style.css 317 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 497 B
build/block-library/blocks/columns/style.css 496 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.17 kB
build/block-library/blocks/cover/style.css 1.17 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 977 B
build/block-library/blocks/gallery/editor.css 982 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.59 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 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 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 502 B
build/block-library/blocks/image/style.css 505 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 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 493 B
build/block-library/blocks/media-text/style.css 490 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/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 195 B
build/block-library/blocks/navigation-submenu/style.css 195 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.81 kB
build/block-library/blocks/navigation/editor.css 1.81 kB
build/block-library/blocks/navigation/style-rtl.css 1.71 kB
build/block-library/blocks/navigation/style.css 1.7 kB
build/block-library/blocks/navigation/view.min.js 2.74 kB
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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 198 B
build/block-library/blocks/page-list/style.css 198 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 347 B
build/block-library/blocks/post-comments-form/style.css 347 B
build/block-library/blocks/post-comments/style-rtl.css 492 B
build/block-library/blocks/post-comments/style.css 493 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 396 B
build/block-library/blocks/post-featured-image/editor.css 397 B
build/block-library/blocks/post-featured-image/style-rtl.css 156 B
build/block-library/blocks/post-featured-image/style.css 156 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 391 B
build/block-library/blocks/post-template/style.css 392 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 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 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 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 262 B
build/block-library/blocks/query-pagination/editor.css 255 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 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 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 770 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 824 B
build/block-library/blocks/social-links/editor.css 823 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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/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 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 815 B
build/block-library/common.css 812 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 668 B
build/block-library/theme.css 673 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.44 kB
build/edit-navigation/index.min.js 15.8 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.4 kB
build/edit-post/style-rtl.css 7.12 kB
build/edit-post/style.css 7.12 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.18 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.21 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.34 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.3 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.19 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.7 kB
build/server-side-render/index.min.js 1.52 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.11 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@paaljoachim
Copy link
Contributor

paaljoachim commented Oct 25, 2021

Testing method: https://make.wordpress.org/design/2021/03/03/testing-a-gutenberg-pull-request-pr/

This is what I see. (I happen to test out a General template called Test.)

Screenshot 2021-10-25 at 21 49 14

Here are some thoughts that show up as I go through these sections.

Are you ready to save? (Kinda strange seeing that here as I have already clicked the Save button once. Next step is to go through the various areas listed. Make needed adjustments unclick (or some other way) to discard what I do not want to save and then click Save again to save the areas I want saved.)

"The following changes have been made to your site, templates, and content."
(Is clear and to the point sentence.)

Site - "These changes will affect your whole site." (To the point and helpful.)

Template - "These changes will affect pages and posts that use these templates." (To the point and helpful.)

Template Part (should we have a sentence here?) Something like: These changes will affect the following template parts. As in a real life situation header might be called header front page, header contact page, footer front page etc.

Page - Home
I need some clarity how a template called Test

Screenshot 2021-10-25 at 22 03 43

affects the Page - Home. Similar to how further up the Template panel has this sentence: "These changes will affect pages and posts that use these templates."

Thanks.

@ockham
Copy link
Contributor Author

ockham commented Oct 27, 2021

Thanks for reviewing, @paaljoachim! I've mostly tried to stick to the wording specified by the designs in #31456 (comment) (with one minor change, I put "The following changes have been made to your site, templates, and content." rather than "The following changes have been made to your site, post, and templates." to reflect that the changes can affect any kind of content -- rather than just a post -- and to reflect the new entity order).

That said, I don't mind changing the copy; but I would like to check back with designers, as per my understanding, we need to strike a balance between providing enough explanatory texts to help the user understand what they're doing, but not too much as to not overwhelm them 🙂

@ockham
Copy link
Contributor Author

ockham commented Oct 27, 2021

Investigating failing e2e tests 👀

@ockham
Copy link
Contributor Author

ockham commented Oct 27, 2021

Investigating failing e2e tests 👀

Pushed a fix: 034eace

@javierarce
Copy link
Contributor

This works great, @ockham!

I have just some minor suggestions for improvements:

  • I think we could get rid of the icons next to the Site and Page labels. Maybe we could rethink the use of icons in a second iteration of the sidebar.
  • Could we pluralize the messages depending on the number of changes? For example, if there's just one change, could we say: "This change will affect your whole site" instead of "These changes will affect your whole site"?
  • I would capitalize "Header" and "Footer", like we do now in the template tab.
  • I would also combine template and template parts into the "Templates" section. The concept of "template part" is vague, and this would simplify things. It would also solve the problem with the missing description that @paaljoachim mentioned. I would place the templates on top of the list and the parts on the bottom.

And here's something I just noticed when I saved a post after changing its title: we are currently showing the new title. Could we say "Title" as we do with the site?

Screenshot 2021-10-27 at 17 05 52

Thanks for reviewing, @paaljoachim! I've mostly tried to stick to the wording specified by the designs in #31456 (comment) (with one minor change, I put "The following changes have been made to your site, templates, and content." rather than "The following changes have been made to your site, post, and templates." to reflect that the changes can affect any kind of content -- rather than just a post -- and to reflect the new entity order).

+1, much better than what I suggested.

@ockham
Copy link
Contributor Author

ockham commented Oct 27, 2021

Hey @javierarce, thanks a lot for reviewing!

I'll address each item in a separate comment, starting with one of the easiest ones:

Could we pluralize the messages depending on the number of changes? For example, if there's just one change, could we say: "This change will affect your whole site" instead of "These changes will affect your whole site"?

Done in ef6f357 and d6b8679:

image

@ockham
Copy link
Contributor Author

ockham commented Oct 27, 2021

I think we could get rid of the icons next to the Site and Page labels. Maybe we could rethink the use of icons in a second iteration of the sidebar.

88adb53

@ockham
Copy link
Contributor Author

ockham commented Oct 28, 2021

And here's something I just noticed when I saved a post after changing its title: we are currently showing the new title. Could we say "Title" as we do with the site?

That's not really specific to title changes, though: It will refer to the modified post by title irrespective of what part of the post was changed. (Try e.g. changing the post date through the corresponding block.) So I'd rather not change that 🤔

@javierarce
Copy link
Contributor

That's not really specific to title changes, though: It will refer to the modified post by title irrespective of what part of the post was changed. (Try e.g. changing the post date through the corresponding block.) So I'd rather not change that 🤔

Oh, I didn't notice that, sorry. Ok, let's leave it then.

@paaljoachim
Copy link
Contributor

paaljoachim commented Oct 28, 2021

@javierarce

Javier I believe you mentioned merging templates and template parts into one panel + capitalizing Header and Footer. Like so:

Multi-save-suggestion

NB! I added some text under the Pages panel.
Because the text: "This change will affect pages and posts that use this template." is located inside the Template panel creating association to the specific panel. If the panel is closed the text will not be seen in the Page panel further below. I would suggest to add a description that builds upon the text seen under template.
"The following pages use this template."

@ockham
Copy link
Contributor Author

ockham commented Oct 28, 2021

I would capitalize "Header" and "Footer", like we do now in the template tab.

This one was a bit trickier than it seems. The template part names are specified by the template part itself, and could theoretically be pretty much any string -- and in some cases maybe shouldn't be capitalized (think i18n).

What we seem to do in cases like this is find the template part area a template part is meant for. For some of those (such as header and footer), we've defined specific icons and labels (which are properly capitalized, and -- hopefully! -- translated).

I've implemented this in 4ef8ac1:

image

@ockham
Copy link
Contributor Author

ockham commented Oct 28, 2021

NB! I added some text under the Pages panel.
Because the text: "This change will affect pages and posts that use this template." is located inside the Template panel creating association to the specific panel. If the panel is closed the text will not be seen in the Page panel further below.

Hmm, this is fine, though: The text is really only meant to refer to templates. The Page panel however is about the page content (rather than the template) that the user has modified.

I would suggest to add a description that builds upon the text seen under template.
"The following pages use this template."

We can do that, but it's a bit misleading, and it won't scale too well:

It's technically correct since AFAICT, we'll only see this panel if we're editing the template for a specific page (rather than a generic template, such as Single Post or Index). However, as stated above, the other necessary condition for seeing this panel is that we've modified the page content. So it would be more correct to say something like "The content of the following page has been modified."

However, if we allow editing content other than individual pages in the site editor -- e.g. multiple posts through a template with a query loop -- that description would no longer be accurate. How about something like "The following content has been modified." instead?

@paaljoachim
Copy link
Contributor

This sounds good to me. What do you think @javierarce ?

How about something like "The following content has been modified." instead?

I assume we should have @kellychoffman and @jameskoster check out the PR as well.

@ockham
Copy link
Contributor Author

ockham commented Oct 28, 2021

I would also combine template and template parts into the "Templates" section. The concept of "template part" is vague, and this would simplify things. It would also solve the problem with the missing description that @paaljoachim mentioned. I would place the templates on top of the list and the parts on the bottom.

This item is the trickiest one. I'm not totally sure I agree that having templates and template under the same heading simplifies thing 😬 On the development side, it would actually be a rather big change of the relevant code. I'd just like to double-check this is really what we want before I make that change 😅

From a UX-perspective, it was my impression that we have a few invariants that differentiate both concepts:

  • A template affects an entire "screen" of what a user sees -- be it on the frontend or in the editor. As a corollary, the site editor always only shows exactly one template. By conclusion, the multi-entity Save UI will never show more than one template as affected by user changes.
  • A template part defines part of a "screen" that can be used across templates, typically to provide some visual consistency, and reusability. E.g. a header or footer template part that's used across all templates of a theme. A template can contain any number of template parts; any of them can be modified by the user in the site editor.

@javierarce
Copy link
Contributor

javierarce commented Oct 28, 2021

I'm not totally sure I agree that having templates and template under the same heading simplifies thing 😬 On the development side, it would actually be a rather big change of the relevant code. I'd just like to double-check this is really what we want before I make that change 😅

After thinking this through again and reading your explanation, I feel that it could be confusing to list the name of a template (say 404) and then "header" and "footer" immediately below.

For me, templates and template parts are conceptually very similar (they are structures), but the difference in size and side-effects at that part of the flow could be disorienting for a user who has made many changes.

The solution that @paaljoachim designed in this comment sits in a good middle ground that could simplify the sidebar and at the same time maintain that differentiation. The only thing I would change is the "Template part" label: I would use "Areas" as we do in the header dropdown.

Copy link
Contributor

@ntsekouras ntsekouras 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 working on this @ockham!

This is looking good code wise and my sole concern is the template parts area comment.

),
};

return (
Copy link
Contributor

Choose a reason for hiding this comment

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

I guess this can become a bit overwhelming with many changes 😄
Screenshot 2021-10-29 at 4 15 48 PM

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That was partly by mistake -- there shouldn't be any description for Template Part. Fix in 717d7041ba.

I don't mind removing the "The following content has been modified." description altogether, if it's still too overwhelming.

Copy link
Contributor

Choose a reason for hiding this comment

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

I personally like it for the page edits. Not sure for reusable blocks though, but not a blocker.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah, I'd somehow missed the reusable blocks. Good point, I'll do some final tweaking...

@ockham
Copy link
Contributor Author

ockham commented Oct 29, 2021

The solution that @paaljoachim designed in this comment sits in a good middle ground that could simplify the sidebar and at the same time maintain that differentiation.

Thanks @javierarce! I believe that the latest couple of commits should've tweaked the UI accordingly (see image at the bottom of this comment).

The only thing I would change is the "Template part" label: I would use "Areas" as we do in the header dropdown.

In line with the outcome of my discussion with @ntsekouras and @Mamaduka, I've kept this as "Template part", since we really show the template parts that are included with a theme, and also use their titles (rather than the areas they're associated with) -- which could be something like "Default header", "Alternative header", "Big footer", "Small footer" etc, since a given theme can theoretically provide multiple template parts for a given area.

What I've done however is pluralize correctly if there are multiple template parts affected:

image

Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

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

LGTM, thanks @ockham !

@Mamaduka
Copy link
Member

Thanks for working on this, @ockham.

Copy link
Contributor

@paaljoachim paaljoachim left a comment

Choose a reason for hiding this comment

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

The design looks good to me! Thank you for working on this PR @ockham Bernie!

Here is a before and after.
Multisave

@javierarce
Copy link
Contributor

Thanks for working on this, @ockham. The changes look good!

@ockham
Copy link
Contributor Author

ockham commented Oct 29, 2021

Thanks all for your feedback and reviews! ❤️

@ockham ockham merged commit 0825df2 into trunk Oct 29, 2021
@ockham ockham deleted the update/multi-entity-saving branch October 29, 2021 17:09
@github-actions github-actions bot added this to the Gutenberg 11.9 milestone Oct 29, 2021
);
case 'page':
case 'post':
return __( 'The following content has been modified.' );
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we move these descriptions to the entities config instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

const {
site: siteSavables,
wp_template: templateSavables,
wp_template_part: templatePartSavables,
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you think that order can be defined as a "priority" somehow in the entities config? Or maybe this is sufficient for now?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think it'd make the code quite a bit more complex, and I don't think it's worth it right now, since this is the only place so far where we're needing that priority order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Synced Patterns Related to synced patterns (formerly reusable blocks)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants