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

Patterns: fix capabilities settings for pattern categories #55379

Merged
merged 22 commits into from
Oct 20, 2023

Conversation

glendaviesnz
Copy link
Contributor

@glendaviesnz glendaviesnz commented Oct 16, 2023

What?

Fixes the capabilities settings for pattern categories so Authors and below can view existing user categories in the editor inserter patterns tab. Also prevents Authors from adding new categories, but still provides the ability for them to assign existing categories to their own patterns.

Why?

Currently Authors and contributors get API errors when trying to view pattern categories, and Authors are able to add as well as assign pattern categories

How?

  • Sets the context of the categories API call to view so contributors can see the user categories list
  • Limits users to a select list of existing categories if they do not have create capabilities for wp_pattern_category

Testing Instructions

  • As an admin go to /wp-admin/edit-tags.php?taxonomy=wp_pattern_category and remove any categories
  • Add some new patterns with some new custom categories, not the core pattern categories
  • Log in as a Contributer user and make sure the new categories appear in the editor inserter Patterns tab
  • Check that going to /wp-admin/edit-tags.php?taxonomy=wp_pattern_category gives an insufficient permissions error.
  • Log in as an Author and make sure the new categories appear in the editor inserter Patterns tab
  • Add a new pattern and make sure you can only select from the custom categories added above and that you can't add any new categories, and check pattern saves correctly and is available in the assigned categories
  • Go to wp-admin/edit.php?post_type=wp_block and choose a pattern to edit, and make sure you can only select and not create categories in the right panel
  • Check that going to /wp-admin/edit-tags.php?taxonomy=wp_pattern_category gives an insufficient permissions error
  • As an admin delete all the pattern categories again
  • Login as Author and add a new pattern and check that the category option is not shown because there are now no categories to select from
  • Login as an Editor and add a new pattern and make sure you can assign new categories to a pattern as well as select existing ones

Screenshots or screencast

Before:

author-pattern-caps-before.mp4

After:

pattern-caps-after-2.mp4

@glendaviesnz glendaviesnz 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 [Feature] Patterns A collection of blocks that can be synced (previously reusable blocks) or unsynced labels Oct 16, 2023
@glendaviesnz glendaviesnz self-assigned this Oct 16, 2023
@github-actions
Copy link

github-actions bot commented Oct 16, 2023

This pull request has changed or added PHP files. Please confirm whether these changes need to be synced to WordPress Core, and therefore featured in the next release of WordPress.

If so, it is recommended to create a new Trac ticket and submit a pull request to the WordPress Core Github repository soon after this pull request is merged.

If you're unsure, you can always ask for help in the #core-editor channel in WordPress Slack.

Thank you! ❤️

View changed files
❔ lib/compat/wordpress-6.4/class-gutenberg-rest-blocks-controller-6-4.php
❔ lib/compat/wordpress-6.4/class-gutenberg-rest-pattern-categories-controller.php
❔ lib/compat/wordpress-6.4/block-patterns.php
❔ lib/compat/wordpress-6.4/blocks.php
❔ lib/load.php

@glendaviesnz
Copy link
Contributor Author

One question with this is whether Authors should be allowed to add new categories to their patterns, which is the case with the changes in this PR, or should we be making it that Authors can only select from existing categories?

@github-actions
Copy link

github-actions bot commented Oct 16, 2023

Size Change: +3.16 kB (0%)

Total Size: 1.66 MB

Filename Size Change
build/block-editor/index.min.js 219 kB +240 B (0%)
build/block-library/index.min.js 211 kB -2 B (0%)
build/components/index.min.js 251 kB +437 B (0%)
build/core-data/index.min.js 71.7 kB +820 B (+1%)
build/edit-post/index.min.js 35.7 kB +2 B (0%)
build/edit-site/index.min.js 206 kB +753 B (0%)
build/editor/index.min.js 46.2 kB +333 B (+1%)
build/format-library/index.min.js 7.82 kB -3 B (0%)
build/patterns/index.min.js 4.81 kB +301 B (+7%) 🔍
build/patterns/style-rtl.css 657 B +139 B (+27%) 🚨
build/patterns/style.css 657 B +140 B (+27%) 🚨
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 964 B
build/annotations/index.min.js 2.71 kB
build/api-fetch/index.min.js 2.29 kB
build/autop/index.min.js 2.11 kB
build/blob/index.min.js 461 B
build/block-directory/index.min.js 7.25 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 4.28 kB
build/block-editor/content.css 4.27 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-editor/style-rtl.css 15.6 kB
build/block-editor/style.css 15.6 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 138 B
build/block-library/blocks/audio/theme.css 138 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 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 633 B
build/block-library/blocks/button/style.css 632 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.7 kB
build/block-library/blocks/cover/style.css 1.69 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 138 B
build/block-library/blocks/embed/theme.css 138 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 321 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 228 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 343 B
build/block-library/blocks/form-submission-notification/editor.css 342 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 452 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 957 B
build/block-library/blocks/gallery/editor.css 962 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 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 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 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 340 B
build/block-library/blocks/html/editor.css 341 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.54 kB
build/block-library/blocks/image/style.css 1.54 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 2 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 671 B
build/block-library/blocks/navigation-link/editor.css 672 B
build/block-library/blocks/navigation-link/style-rtl.css 103 B
build/block-library/blocks/navigation-link/style.css 103 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/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.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.07 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 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 345 B
build/block-library/blocks/post-featured-image/style.css 345 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 409 B
build/block-library/blocks/post-template/style.css 408 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 288 B
build/block-library/blocks/query-pagination/style.css 284 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 312 B
build/block-library/blocks/query/style.css 308 B
build/block-library/blocks/query/view.min.js 609 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 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 613 B
build/block-library/blocks/search/style.css 613 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 471 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 329 B
build/block-library/blocks/shortcode/editor.css 329 B
build/block-library/blocks/site-logo/editor-rtl.css 760 B
build/block-library/blocks/site-logo/editor.css 760 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.45 kB
build/block-library/blocks/social-links/style.css 1.45 kB
build/block-library/blocks/spacer/editor-rtl.css 359 B
build/block-library/blocks/spacer/editor.css 359 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 646 B
build/block-library/blocks/table/style.css 645 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 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 191 B
build/block-library/blocks/video/style.css 191 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 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.4 kB
build/block-library/editor.css 12.4 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.4 kB
build/block-library/style.css 14.4 kB
build/block-library/theme-rtl.css 700 B
build/block-library/theme.css 705 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51.5 kB
build/commands/index.min.js 15.5 kB
build/commands/style-rtl.css 947 B
build/commands/style.css 942 B
build/components/style-rtl.css 11.9 kB
build/components/style.css 11.9 kB
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 2.72 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.51 kB
build/customize-widgets/style.css 1.5 kB
build/data-controls/index.min.js 651 B
build/data/index.min.js 8.87 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 462 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/style-rtl.css 7.88 kB
build/edit-post/style.css 7.88 kB
build/edit-site/style-rtl.css 14.3 kB
build/edit-site/style.css 14.3 kB
build/edit-widgets/index.min.js 17 kB
build/edit-widgets/style-rtl.css 4.85 kB
build/edit-widgets/style.css 4.84 kB
build/editor/style-rtl.css 3.58 kB
build/editor/style.css 3.58 kB
build/element/index.min.js 4.87 kB
build/escape-html/index.min.js 548 B
build/format-library/style-rtl.css 577 B
build/format-library/style.css 577 B
build/hooks/index.min.js 1.57 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.61 kB
build/interactivity/index.min.js 11.4 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.76 kB
build/keycodes/index.min.js 1.9 kB
build/list-reusable-blocks/index.min.js 2.21 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 964 B
build/nux/index.min.js 2.01 kB
build/nux/style-rtl.css 775 B
build/nux/style.css 771 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 1.85 kB
build/preferences/index.min.js 1.26 kB
build/primitives/index.min.js 994 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 988 B
build/react-i18n/index.min.js 631 B
build/react-refresh-entry/index.min.js 9.46 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.71 kB
build/reusable-blocks/index.min.js 2.73 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 10.2 kB
build/router/index.min.js 1.79 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 1.98 kB
build/token-list/index.min.js 587 B
build/url/index.min.js 3.83 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 967 B
build/warning/index.min.js 259 B
build/widgets/index.min.js 7.18 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

@github-actions
Copy link

github-actions bot commented Oct 16, 2023

Flaky tests detected in 2311222.
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/6584404650
📝 Reported issues:

@ramonjd
Copy link
Member

ramonjd commented Oct 17, 2023

This PR is working well for me. As an admin I can still manage all categories, but as an author I can only add/manage my own terms.

One question with this is whether Authors should be allowed to add new categories to their patterns, which is the case with the changes in this PR, or should we be making it that Authors can only select from existing categories?

Good question. I can envision a world where site owners might want to restrict category creation.

Still, authors can already create patterns in the post editor so it's not a great leap to also grant the capability to manage the terms of those patterns.

However I see that adding new post categories is restricted for authors:

Admin Author
Screenshot 2023-10-17 at 11 10 21 am Screenshot 2023-10-17 at 11 10 38 am

Tags are allowed.

So maybe the question is: do we view pattern taxonomy as "categories", with hierarchies and so on, or rather "tags"?


Out of interest, it looks like these might be the default taxonomy capabilities.

If we wanted to restrict pattern taxonomy, would they suffice? https://github.com/WordPress/wordpress-develop/blob/991fa6bff23590fe71e9f2807cfcdb218d661c95/src/wp-includes/class-wp-taxonomy.php#L430

Or the same caps as post categories:

			'capabilities'          => array(
				'manage_terms' => 'manage_categories',
				'edit_terms'   => 'edit_categories',
				'delete_terms' => 'delete_categories',
				'assign_terms' => 'assign_categories',
			),

I'd say, if we wanted to prevent authors and contributors from managing pattern taxonomy then we might also want to update the form logic so they only search and select.

Screenshot 2023-10-17 at 11 08 32 am Screenshot 2023-10-17 at 10 58 57 am

@aaronrobertshaw
Copy link
Contributor

One question with this is whether Authors should be allowed to add new categories to their patterns

I'd lean towards matching the post categories capabilities as well. Which then would require updating the category selector in the create pattern modal as suggested.

should we be making it that Authors can only select from existing categories?

That sounds like the best starting point to me. We can extend capabilities later.

It would also make it easier to handle the wrinkle where the "core categories" are merged as suggestions for the category selector. We can simply omit merging core categories into the suggestions if the user doesn't have the required capabilities.

@glendaviesnz
Copy link
Contributor Author

glendaviesnz commented Oct 17, 2023

The PR has now been updated to restrict adding of new categories to users with create capabilityon thewp_pattern_category` endpoint. If a user does not have this capability they are just shown a select list of existing categories to select from.

This currently means that if site editors/admins want Author users to be able to assign core pattern categories to their patterns they will need to manually add the core pattern categories to their site's wp_pattern_category taxonomy.

@glendaviesnz
Copy link
Contributor Author

Copy link
Contributor

@aaronrobertshaw aaronrobertshaw left a comment

Choose a reason for hiding this comment

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

Nice work wrangling the fix for this @glendaviesnz 👍

It tests well as per the test instructions although it looks like we still need to update other places where authors could assign categories e.g. when editing a pattern via wp-admin wp-admin/edit.php?post_type=wp_block

Screenshot 2023-10-18 at 9 38 55 am

In addition, it would be good if we could remove the Add new tag label there so that it matches the control when editing a pattern in the site editor for admin users.

We might also need some design feedback on the multi-select control in the create pattern modal. To me, it looks a bit rough but given the potential number of pattern categories I'm not sure if there is a better option.

Screenshot 2023-10-18 at 9 32 02 am

@aaronrobertshaw aaronrobertshaw added the Needs Design Feedback Needs general design feedback. label Oct 17, 2023
@ramonjd
Copy link
Member

ramonjd commented Oct 18, 2023

This is testing well according to the instructions, thanks!

Using an author account in trunk I managed, it seems, to in fact create a pattern category which, when switching to this branch persisted:

Screenshot 2023-10-18 at 12 30 43 pm

In the editor it looks like creating a new category as an author doesn't work, but it saves anyway. So when switching to this branch they're there. Not a huge deal I suppose since the editor doesn't give any expectation to the user that the category is "created" (even though it is).

While testing I also found something else that we might like to address in a follow up - despite having no permissions in the backend, authors can edit patterns created by, for example, an admin in the editor.

This leads to a case where saving is blocked in the editor with no advice on how to get around it.

The "fix" is to revert all changes, or refresh the page. This might lead to content loss however.

2023-10-18.12.37.29.mp4

@glendaviesnz
Copy link
Contributor Author

While testing I also found something else that we might like to address in a follow up - despite having no permissions in the backend, authors can edit patterns created by, for example, an admin in the editor.

This is an outstanding issue and has been there since reusable block days - an issue for it here

@glendaviesnz
Copy link
Contributor Author

glendaviesnz commented Oct 18, 2023

Using an author account in trunk I managed, it seems, to in fact create a pattern category which, when switching to this branch persisted

Yep that is correct, on trunk authors are able to add categories because pattern categories is a flat taxonomy and they have permission to add those, which this PR hopefully fixes.

@glendaviesnz glendaviesnz force-pushed the fix/pattern-categories-capabilities branch from 4281c9e to c433e5c Compare October 18, 2023 09:02
@ramonjd
Copy link
Member

ramonjd commented Oct 18, 2023

This is an outstanding issue and has been there since reusable block days - an #54442

Ah, thanks for pointing that out, sorry for the noise.

Yep that is correct, on trunk authors are able to add categories because pattern categories is a flat taxonomy and they have permission to add those, which this PR hopefully fixes.

👍🏻 All good. I think the transition, even if there are folks out there relying on it, won't be so jarring. Any categories created by an author will be preserved should the site ever update.

@glendaviesnz glendaviesnz changed the title Patterns: add capabilities settings to pattern categories Patterns: fix capabilities settings for pattern categories Oct 18, 2023
@glendaviesnz
Copy link
Contributor Author

I think this is closer now. It now shows a list of checkboxes instead of multiselect, and this component is reused by the post editor taxonomy panel just for wp_pattern_category when user does not have create capability.

@glendaviesnz
Copy link
Contributor Author

I would like to tidy up some of the language used, eg. categoryTerms would be clearer if it was selectedCategories but I think we should handle that in follow up PRs post 6.4 to limit the changes in this bug fix, which are already reasonably big.

Copy link
Contributor

@apeatling apeatling left a comment

Choose a reason for hiding this comment

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

✅ Log in as a Contributer user and make sure the new categories appear in the editor inserter Patterns tab
(just got a log in screen, but that's fine) Check that going to /wp-admin/edit-tags.php?taxonomy=wp_pattern_category gives an insufficient permissions error.
✅ Log in as an Author and make sure the new categories appear in the editor inserter Patterns tab
✅ Add a new pattern and make sure you can only select from the custom categories added above and that you can't add any new categories, and check pattern saves correctly and is available in the assigned categories
✅ Go to wp-admin/edit.php?post_type=wp_block and choose a pattern to edit, and make sure you can only select and not create categories in the right panel
(just got a log in screen, but that's fine) Check that going to /wp-admin/edit-tags.php?taxonomy=wp_pattern_category gives an insufficient permissions error
✅ Login as Author and add a new pattern and check that the category option is not shown because there are now no categories to select from
✅ Login as an Editor and add a new pattern and make sure you can assign new categories to a pattern as well as select existing ones

All worked exactly as expected with all the different user roles.

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

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

Working as described for each of the roles.

Thanks for sticking with this one @glendaviesnz

// Patterns categories are a flat hierarchy (like tags), but work more like post categories in terms of permissions.
if ( ! current_user_can( $taxonomy_obj->cap->edit_terms ) ) {
return new WP_Error(
'rest_cannot_create',
Copy link
Member

Choose a reason for hiding this comment

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

Not for this PR, but I think when syncing with Core it'd be good have some unit tests, e.g., something like

public function test_should_not_return_menus_for_users_without_permissions() {

Copy link
Contributor Author

Choose a reason for hiding this comment

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

for sure, I added one on the backport PR

Comment on lines 15 to 17
const unescapeString = ( arg ) => {
return decodeEntities( arg );
};
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
const unescapeString = ( arg ) => {
return decodeEntities( arg );
};
const unescapeString = ( arg ) => decodeEntities( arg );

Totally optional. Just a style thing

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, yeh, thanks, I think that was a copy pasta that wasn't tidied up, done now.

@glendaviesnz glendaviesnz removed the Needs Design Feedback Needs general design feedback. label Oct 20, 2023
@glendaviesnz glendaviesnz merged commit 5b10d27 into trunk Oct 20, 2023
51 checks passed
@glendaviesnz glendaviesnz deleted the fix/pattern-categories-capabilities branch October 20, 2023 09:11
@github-actions github-actions bot added this to the Gutenberg 17.0 milestone Oct 20, 2023
@glendaviesnz
Copy link
Contributor Author

With cherry picking of this for the 6.4 rc2 release there will be a minor conflict caused by the inclusion of RenamePatternCategoryModal in this commit, which does not exist in the release branch. This component should not be included in 6.4 so conflict can be resolved by deleting this component import and related file. Ping me if any issues with this.

@glendaviesnz
Copy link
Contributor Author

@glendaviesnz
Copy link
Contributor Author

@SiobhyB - just hold of cherry picking this one until I get back to you - there are some questions about whether the approach taken here should be going into core.

@SiobhyB
Copy link
Contributor

SiobhyB commented Oct 20, 2023

@glendaviesnz, ah, whoops, I cherry-picked this change in 6f83c92, at around the same time as your message came in. 🙈 I'd like to wait for the tests to run to verify they all pass with the changes, but will revert straight after that.

I'll follow along for when it's possible to cherry-pick again!

SiobhyB pushed a commit that referenced this pull request Oct 20, 2023
@SiobhyB
Copy link
Contributor

SiobhyB commented Oct 20, 2023

I confirmed all the tests passed with the cherry-picked changes and went ahead to revert the cherry-pick in a783961. Let me know when it's ready for inclusion again!

SiobhyB pushed a commit that referenced this pull request Oct 23, 2023
* Focus submenu button when clicked (#55198)

* Focus element manually when open submenu on click

* Try using `tabindex="-1"`

* Use `tabindex="-1"` also in body when a submenu is opened

* Replace tabindex with event listener

* Explain the tabindex on <li>

* Don't store the element on hover to restore the focus later

* Improve explanations

* Add tests to cover webkit frontend menu interactions

Safari doesn't place focus on a clicked button as expected. These tests verify that when a submenu chevron button is clicked, focus is correctly placed on that button. It also verifies that the click on the body correctly closes any open submenus, which was failing in Safari.

* Focus clicked button on Safari

Combining the tabindex -1 on the parent li and focusing the button on Safari, and also checking that the relatedTarget is null inside the handleMenuFocusout seems to contain the focus within the menu to not fire the handleMenuFocusout as often, and still works to click on the body to close the menu.

* Added the document.addEventListener body click back in

Authored by Luis Herranz <[email protected]>. I'm just re-applying the change.

* Remove tab keypresses from webkit menu interaction tests

Tab keypreses on webkit playwright are really flakey (or it's something in our code that we haven't isolated) so I've split out the webkit tests to test everything I can without using a tab keypress.

* Use body click instead for consistency across environments

---------

Co-authored-by: Luis Herranz <[email protected]>
Co-authored-by: Jerry Jones <[email protected]>

* Make layout support compatible with enhanced pagination (#55416)

* Make layout supports compatible with enhanced pagination

* Use sanitize_title and add `layout` to the class name

* Update default fullscreen icon for lightbox trigger (#55463)

* Make duotone compatible with enhanced pagination (#55415)

* Patterns: fix capabilities settings for pattern categories (#55379)

Co-authored-by: Daniel Richards <[email protected]>

* Revert "Patterns: fix capabilities settings for pattern categories (#55379)"

This reverts commit 6f83c92.

* Image block: wrap images with hrefs in an A tag (#55470)

* This commit sees what happens when we wrap the image element in an A tag in the editor.
This is to ensure any inherited styles from the link element, such as border color, apply to the image.

* Removing duplicate <a href /> wrapper
Adding disabled onClick and aria attribute

* Image: Improve focus management in lightbox (#55428)

* Improve focus management

This commit removes the logic to set focus differently
based on event.pointerType and instead sets focus on the
dialog itself when the lightbox opens, and on the lightbox
trigger when the lightbox closes.

* Add delay before focusing when closing lightbox

* Put focus back on close button when opening lightbox

It turns out that placing focus on the modal was causing
inconsistent behavior in Safari, so I've put the focus back
on the close button when the lightbox opens, which
performs predictably.

I've also added a tabindex to the image, which prevents
the focus ring from erroneously showing when opening the lightbox
with a mouse in Chrome and Firefox.

* Move focus to the dialog when opening the lightbox.

* Fix SVG markup.

* Consistent indentation with spaces.

* Remove unnecessary tabindex

---------

Co-authored-by: Andrea Fercia <[email protected]>

* Fix: - Update the title when using enhanced pagination

---------

Co-authored-by: Mario Santos <[email protected]>
Co-authored-by: Luis Herranz <[email protected]>
Co-authored-by: Jerry Jones <[email protected]>
Co-authored-by: Artemio Morales <[email protected]>
Co-authored-by: Glen Davies <[email protected]>
Co-authored-by: Daniel Richards <[email protected]>
Co-authored-by: Ramon <[email protected]>
Co-authored-by: Andrea Fercia <[email protected]>
talldan pushed a commit that referenced this pull request Oct 23, 2023
@glendaviesnz glendaviesnz 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 Oct 23, 2023
@glendaviesnz
Copy link
Contributor Author

@SiobhyB A decision has been made to revert this change in Gutenberg so it will not be included in 6.4 either so you can cross it off your cherry pick list. Thanks.

@SiobhyB
Copy link
Contributor

SiobhyB commented Oct 23, 2023

Thanks for keeping me in the loop @glendaviesnz 🙌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Patterns A collection of blocks that can be synced (previously reusable blocks) or unsynced [Type] Bug An existing feature does not function as intended
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants