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

Site Editor: Add 'Show template' toggle when editing pages #52674

Merged
merged 16 commits into from
Sep 20, 2023

Conversation

noisysocks
Copy link
Member

@noisysocks noisysocks commented Jul 17, 2023

What?

First pass at adding a Show template toggle to the site editor when editing a page. Toggling this hides the blocks belonging to the template entirely so that you're left with a minimal interface that mimics the post editor.

Why?

Allows users to focus on their content when desired. Moreover, it is small a step towards one day unifying the post editor and site editor. See item 3 in #41717.

How?

We re-use the approach that the site editor has for editing a wp_navigation CPT but instead of creating a fake core/navigation block we create a fake core/group block containing a core/post-title, core/post-contentandcore/post-featured-image`. These blocks are shown in the same order they appear in the template and do not appear if the template doesn't have it.

Testing Instructions

  1. Go to Appearance → Editor → Pages, select or create a page, then edit it.
  2. In the Page settings sidebar, click on the Template dropdown and toggle "Show template" and "Hide template"
  3. Check that the page content blocks are the same between hide/show modes.
  4. Hide the template and then navigate away from edit mode in the site editor by clicking on the WP logo. The template should reappear in view mode.
  5. Navigate to another section, e.g., Patterns, then return to the same page you edited previously
  6. The page blocks should appear as expected

Run some tests:

npm run test:unit packages/edit-site/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js

Screenshots or screencast

2023-09-14.14.33.26.mp4

@noisysocks noisysocks added Needs Design Needs design efforts. [Type] Feature New feature to highlight in changelogs. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Feature] Page Content Focus Ability to toggle between focusing on editing the page and editing the template in the site editor. labels Jul 17, 2023
@noisysocks noisysocks self-assigned this Jul 17, 2023
@github-actions
Copy link

github-actions bot commented Jul 17, 2023

Size Change: +417 B (0%)

Total Size: 1.62 MB

Filename Size Change
build/edit-site/index.min.js 181 kB +389 B (0%)
build/edit-site/style-rtl.css 13.8 kB +14 B (0%)
build/edit-site/style.css 13.8 kB +14 B (0%)
ℹ️ 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 7.03 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.25 kB
build/block-editor/content.css 4.24 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/index.min.js 217 kB
build/block-editor/style-rtl.css 15.4 kB
build/block-editor/style.css 15.4 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 629 B
build/block-library/blocks/button/style.css 628 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 421 B
build/block-library/blocks/columns/style.css 421 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.69 kB
build/block-library/blocks/cover/style.css 1.68 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 98 B
build/block-library/blocks/details/style.css 98 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 311 B
build/block-library/blocks/file/style.css 312 B
build/block-library/blocks/file/view.min.js 318 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.61 kB
build/block-library/blocks/freeform/editor.css 2.61 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.41 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.min.js 1.83 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 505 B
build/block-library/blocks/media-text/style.css 503 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 668 B
build/block-library/blocks/navigation-link/editor.css 669 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.min.js 984 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 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 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 215 B
build/block-library/blocks/post-navigation-link/style.css 214 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 125 B
build/block-library/blocks/preformatted/style.css 125 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 168 B
build/block-library/blocks/pullquote/theme.css 168 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 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/style-rtl.css 375 B
build/block-library/blocks/query/style.css 372 B
build/block-library/blocks/query/view.min.js 555 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 607 B
build/block-library/blocks/search/style.css 607 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 468 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 204 B
build/block-library/blocks/site-logo/style.css 204 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 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.44 kB
build/block-library/blocks/social-links/style.css 1.43 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 432 B
build/block-library/blocks/table/editor.css 432 B
build/block-library/blocks/table/style-rtl.css 639 B
build/block-library/blocks/table/style.css 639 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 185 B
build/block-library/blocks/video/style.css 185 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.2 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/index.min.js 205 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 13.9 kB
build/block-library/style.css 13.9 kB
build/block-library/theme-rtl.css 688 B
build/block-library/theme.css 693 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.3 kB
build/commands/index.min.js 15.5 kB
build/commands/style-rtl.css 921 B
build/commands/style.css 918 B
build/components/index.min.js 255 kB
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 2.6 kB
build/core-data/index.min.js 17 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.48 kB
build/customize-widgets/style.css 1.48 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.84 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.64 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 35.5 kB
build/edit-post/style-rtl.css 7.84 kB
build/edit-post/style.css 7.83 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.8 kB
build/edit-widgets/style.css 4.79 kB
build/editor/index.min.js 45.6 kB
build/editor/style-rtl.css 3.53 kB
build/editor/style.css 3.52 kB
build/element/index.min.js 4.82 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.74 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/interactivity/index.min.js 11.3 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.87 kB
build/list-reusable-blocks/index.min.js 2.2 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/patterns/index.min.js 3.35 kB
build/patterns/style-rtl.css 302 B
build/patterns/style.css 302 B
build/plugins/index.min.js 1.79 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 975 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 958 B
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/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 10.2 kB
build/router/index.min.js 1.78 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.97 kB
build/sync/index.min.js 53.8 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.73 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 249 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

@github-actions
Copy link

github-actions bot commented Jul 17, 2023

Flaky tests detected in 0724b6d.
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/6244853194
📝 Reported issues:

@ramonjd
Copy link
Member

ramonjd commented Jul 19, 2023

I know this is a proposal, so just commenting on the concept of having an icon (any icon) in the Document tools toolbar to toggle between editing a page/post and editing that page/post's template.

This is all totally subjective.

I'm finding it hard to articulate why I'm not sold on it yet.

Though it seems like the right place for such a button, given that its siblings are mostly related to document editing, the toolbar does contain a number of tools already, it might be just that I don't like clutter 🤷🏻

Or could be the icon itself that's throwing me. Maybe a lock/unlock set would tap my brain in the right way and it's just as simple as finding the right signage.

With this toggle button, we'd have three different controls to toggle between modes (counting the notification), whose functions require the user to expend a few cognitive cycles to either read their descriptions or learn what they do. This is not a bad thing. The editor is full of such things.

I mention this with the risk of bringing up a potentially tired pattern, but I can't help but wonder if the editor couldn't just show me straight up what I can and cannot edit in the canvas.

Example:

Screenshot 2023-07-19 at 12 29 37 pm

@jameskoster
Copy link
Contributor

jameskoster commented Aug 10, 2023

Did y'all consider an inverted implementation of the button, IE use the layout icon toggled on when the template is visible? I'm wondering if that might be more intuitive... the Post Content icon doesn't really communicate post content all that well.

Personally I wouldn't include the post title when focussed on post content as it is technically part of the layout. For me the toggle here is essentially; view all blocks versus view contents of Post Content block. I appreciate this means you wouldn't be able to edit the title when focussed on the content, but we need to add an off-canvas title editing UI for post formats anyway. There should be a 'Rename' action in the Command Palette too.

Edit: From discussions elsewhere it seems like this isn't strictly about toggling the template. It's more about hiding parts of the template that distract from writing (headers, footers, sidebars, etc.). It can still be useful for certain meta data (title, featured image) to be editable on the canvas though.

@noisysocks
Copy link
Member Author

Did y'all consider an inverted implementation of the button, IE use the layout icon toggled on when the template is visible? I'm wondering if that might be more intuitive... the Post Content icon doesn't really communicate post content all that well.

We didn't spend much time thinking about which way the toggle should work as it's easy to swap 😀 Agree the layout icon is more comprehensible.

@noisysocks noisysocks force-pushed the try/show-template-toggle branch 2 times, most recently from 6610070 to a45f499 Compare August 15, 2023 04:10
@noisysocks noisysocks changed the title [WIP] Site Editor: Add Show Template toggle when editing pages [WIP] Site Editor: Add Show template toggle when editing pages Aug 15, 2023
@noisysocks noisysocks marked this pull request as ready for review August 15, 2023 04:17
@noisysocks
Copy link
Member Author

noisysocks commented Aug 15, 2023

I updated this so that Show template is a toggle that appears in the sidebar. This is a lot less prominent which makes me feel comfortable shipping it in the plugin as a way to gather feedback and iterate. I also refactored things so that switching between modes is fast. I'm pretty happy with it, so will mark it as ready for review, though maybe @SaxonF wants to push a few design tweaks.

@noisysocks noisysocks changed the title [WIP] Site Editor: Add Show template toggle when editing pages Site Editor: Add 'Show template' toggle when editing pages Aug 15, 2023
@noisysocks noisysocks added Needs Design Feedback Needs general design feedback. and removed Needs Design Needs design efforts. labels Aug 15, 2023
@ramonjd ramonjd self-requested a review August 21, 2023 22:28
@jameskoster
Copy link
Contributor

Given the changes to the template section of the sidebar (#51477) we might do something like this:

Screenshot 2023-09-12 at 17 24 47

It has similar prominence to the current state of the PR.

@ramonjd
Copy link
Member

ramonjd commented Sep 13, 2023

I'll put this on my list to revive. Thanks for the updated designs @jameskoster 🍺

@ramonjd ramonjd self-assigned this Sep 13, 2023
Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

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

Thanks again for all the rounds of follow-up @ramonjd, this is testing great for me now! The resetting when going to the browse mode is working nicely, with the value persisting when I go back into the editor. This feels like a good balance to me, so that folks going out and in to a page have their value persisted, but if they reload the page they can easily get back to the template preview, too 👍

2023-09-20.16.48.02.mp4

I noted one other (very) edge case, which I've added in a comment — feel free to disregard that one for this PR, I think we're well and truly in polishing territory which could be looked at in a follow-up if need be. And of course we can see if we get feedback from folks using the feature during the 6.4 beta, too. For now this PR is feeling good and solid to me and ready to land 🎉

Great work again getting this PR to a thorough state and adding in all the tests. LGTM! ✨

Comment on lines +56 to +75
return [
createBlock(
'core/group',
{
layout: { type: 'constrained' },
style: {
spacing: {
margin: {
top: '4em', // Mimics the post editor.
},
},
},
},
flattenBlocks( blocks, ( block ) => {
if ( PAGE_CONTENT_BLOCK_TYPES[ block.name ] ) {
return createBlock( block.name );
}
} )
),
];
Copy link
Contributor

Choose a reason for hiding this comment

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

Another nit: if no page content blocks are found, then we return an empty group block. This means that if a page's template has no content blocks at all, switching off "Template preview" results in an empty page, because the return value is not an empty array:

image

This is getting very edge-casey territory, and you'd only see this if you go to a page that uses a template that has no content blocks and only after switching off Template preview, so not a blocker to landing for me!

Copy link
Member

Choose a reason for hiding this comment

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

Great find! I think we should follow up with a fix for this.

I'll make a note and get a PR up.

🙇🏻

@ramonjd
Copy link
Member

ramonjd commented Sep 20, 2023

@andrewserong Thanks for sticking with me on this one. I owe you 💯 🍹

@ramonjd ramonjd merged commit 8f3f218 into trunk Sep 20, 2023
50 checks passed
@ramonjd ramonjd deleted the try/show-template-toggle branch September 20, 2023 22:57
@github-actions github-actions bot added this to the Gutenberg 16.8 milestone Sep 20, 2023
@ramonjd
Copy link
Member

ramonjd commented Sep 20, 2023

Also found a bug. When exiting the site editor in edit mode with the template hidden, we need to reset pageContentFocusType to 'disabledState' otherwise it'll be hidden by default. Looking now.

@andrewserong andrewserong added the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 20, 2023
@ramonjd ramonjd removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 21, 2023
@fullofcaffeine fullofcaffeine added Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) and removed Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) labels Sep 22, 2023
mikachan pushed a commit that referenced this pull request Sep 22, 2023
* Site Editor: First pass at adding a Show Template toggle when editing pages

* Bit of clean up

* Use a toggle in sidebar

* Make toggling 'Show template' on/off faster

* Use blocks in same order as template

* Tidy up code

* Add unit tests

* Add doc comment

* Formatting
Remove unused component import
Doc update

* With icon and updated copy

* Use only the check icon and set min width of dropdown to minimize the effect of the dropdown width toggling between narrow and wide

* This commit tries to get around a peculiarity of __experimentalGetGlobalBlocksByName, which doesn't seem to be able to find the post-content block in a new block tree (if it even exists in state).
We're sidestepping the issue, but with fewer selectors, so overall hopefully it's more sustainable.

* Removing the filter iteration layer and adding it to the flattenBlock helper function
Checking for disallowed blocks as well, e.g., core/query

* Extract usePageContentBlocks and write basic tests
Moving PAGE_CONTENT_BLOCK_TYPES to utils/constants and creating a map

* Updates selectors to include canvas mode so we can show any hidden templates in focus mode

* Moving getPageContentFocusType and setPageContentFocusType selector/action to locked, private methods
In the use-page-content-blocks.js test, add innerblocks to the query test block

---------

Co-authored-by: ramon <[email protected]>
},
},
},
flattenBlocks( blocks, ( block ) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

I find it weird that we're trying to guess the blocks from the content of the template rather than just fixing "core/post-title" + "core/post-content" (like the post editor).

Copy link
Member

Choose a reason for hiding this comment

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

Could you help me understand that statement? Is there something more reliable that could be done here?

I imagine it was approached this way to cover the (possibly unlikely) scenario that there are 2 x site titles or whatever in a template.

Plus there is a bit of guessing required since we don't know how deep or where these blocks are located in a template in advance.

Copy link
Contributor

Choose a reason for hiding this comment

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

rather than just fixing "core/post-title" + "core/post-content" (like the post editor).

By grabbing the real blocks we ensure that the order of the content blocks matches the template so that it more closely resembles the site. I suppose the main value at the moment is that it determines whether or not a featured image is shown, and the order of the title, featured image, and content blocks. While reviewing, I thought it added a nice level of polish.

Copy link
Contributor

Choose a reason for hiding this comment

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

By grabbing the real blocks we ensure that the order of the content blocks matches the template so that it more closely resembles the site

Is that the role of this mode though? I mean, it felt like this mode is more of a "post editor" mode to me where we don't really care about the template, we're just filling the content and title.

Copy link
Member

@ramonjd ramonjd Nov 14, 2023

Choose a reason for hiding this comment

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

I mean, it felt like this mode is more of a "post editor" mode to me where we don't really care about the template, we're just filling the content and title.

We could do it this way.

I'd probably want to confer on the UX with some design folks.

The thinking was that, because we're in the site editor, it would be a more intuitive, seamless experience to have the page content reflect the page template.

So for instance, if I edit the Pages template to have the post title appear underneath the post content, (just because I can) then when I edit that page in the site editor, the page corresponds with the new template structure. I can see my changes.

It might be confusing to have the page content seemingly 'revert' in template preview mode just seconds after I've edited the template, whereas the post editor doesn't have any of the extra context of templates etc so the experience is more "static", if that makes sense.

That's the argument for.

Against, it'd be easier to refactor the code to just make it match the post editor behavior, e.g., just show the required inner blocks...

				[
					createBlock( 'core/post-title' ),
					createBlock( 'core/post-content' ),
				]

Another angle is to remove the template preview mode altogether, I'd be for this. I understand there's a "great unification" going on, where the site editor will be jack of all trades, but I don't know how much value hiding the template in this way adds. Maybe to some folks.

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't know how much value hiding the template in this way adds. Maybe to some folks.

I'm not sure how much value it has in its current form, I but I like the principle behind the idea of a more focused writing-mode like experience akin to the post editor, that folks can use from within the site editor. However it's exposed, I think it's important that folks can still set a featured image while editing their post content, whether or not that's in the sidebar or on the editor canvas. One of the neat things about having it in the canvas is that it gets exposed in the list view for free, so it's easier to find / interact with.

Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

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

I'm in a middle of a big refactor to use the EntityProvider and would have appreciated an e2e test to ensure I didn't break this feature. #56000

@ramonjd
Copy link
Member

ramonjd commented Nov 13, 2023

I'm in a middle of a big refactor to use the EntityProvider and would have appreciated an e2e test to ensure I didn't break this feature. #56000

I'll add one. Thanks!

ramonjd added a commit that referenced this pull request Nov 14, 2023
It also adds an aria label to the edit template button to indicate its state (pressed or not pressed).
ramonjd added a commit that referenced this pull request Nov 14, 2023
… to template preview toggle (#56096)

* This PR adds a follow up E2E test for #52674
It also adds an aria label to the edit template button to indicate its state (pressed or not pressed).

* Refactor test to account for order of page content blocks

* remove saving from tests. unnecessary to the test
cbravobernal pushed a commit that referenced this pull request Nov 14, 2023
… to template preview toggle (#56096)

* This PR adds a follow up E2E test for #52674
It also adds an aria label to the edit template button to indicate its state (pressed or not pressed).

* Refactor test to account for order of page content blocks

* remove saving from tests. unnecessary to the test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Page Content Focus Ability to toggle between focusing on editing the page and editing the template in the site editor. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") Needs Design Feedback Needs general design feedback. [Type] Feature New feature to highlight in changelogs.
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

8 participants