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

Comments Query Loop: Add discuss options to the block #37297

Merged
merged 19 commits into from
Jan 25, 2022

Conversation

cbravobernal
Copy link
Contributor

@cbravobernal cbravobernal commented Dec 10, 2021

Description

In this PR, we are adding the option to sort the comments on the Query Loop by Newer/Older.
A review of the copies is kindly appreciated 😄 .

How has this been tested?

  • Added a Comment Query Loop block.
  • Changed settings on editor.
  • Checked that everything is working both on editor and frontend.

Screenshots

Loom Video:

Edit Post “Post sample” ‹ gutenberg — WordPress - 20 January 2022 - Watch Video



Types of changes

New feature, adds an attribute to Comment Query Loop.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@cbravobernal cbravobernal self-assigned this Dec 10, 2021
@cbravobernal cbravobernal added [Block] Comments Affects the Comments Block - formerly known as Comments Query Loop [Feature] Blocks Overall functionality of blocks labels Dec 10, 2021
@cbravobernal cbravobernal requested review from gziolo, michalczaplinski, DAreRodz and luisherranz and removed request for ajitbohra December 10, 2021 17:48
@github-actions
Copy link

github-actions bot commented Dec 10, 2021

Size Change: +294 B (0%)

Total Size: 1.14 MB

Filename Size Change
build/block-library/editor-rtl.css 10.1 kB +17 B (0%)
build/block-library/editor.css 10.1 kB +18 B (0%)
build/block-library/index.min.js 166 kB +249 B (0%)
build/editor/index.min.js 38.4 kB +10 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 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-editor/index.min.js 141 kB
build/block-editor/style-rtl.css 14.6 kB
build/block-editor/style.css 14.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 65 B
build/block-library/blocks/archives/style.css 65 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 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/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 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 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 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-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 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.22 kB
build/block-library/blocks/cover/style.css 1.22 kB
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 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 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.6 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/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 507 B
build/block-library/blocks/image/style.css 511 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 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 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/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 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/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.99 kB
build/block-library/blocks/navigation/editor.css 2 kB
build/block-library/blocks/navigation/style-rtl.css 1.85 kB
build/block-library/blocks/navigation/style.css 1.84 kB
build/block-library/blocks/navigation/view.min.js 2.81 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 402 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 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 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 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 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 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 80 B
build/block-library/blocks/post-title/style.css 80 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 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 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 245 B
build/block-library/blocks/separator/style.css 245 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 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 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 674 B
build/block-library/blocks/social-links/editor.css 673 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 332 B
build/block-library/blocks/spacer/editor.css 332 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 214 B
build/block-library/blocks/tag-cloud/style.css 215 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 908 B
build/block-library/common.css 905 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 10.8 kB
build/block-library/style.css 10.8 kB
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 676 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.4 kB
build/components/index.min.js 215 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.4 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.49 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 29.6 kB
build/edit-post/style-rtl.css 7.15 kB
build/edit-post/style.css 7.14 kB
build/edit-site/index.min.js 41.5 kB
build/edit-site/style-rtl.css 7.22 kB
build/edit-site/style.css 7.21 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.17 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.75 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 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 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.58 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 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


export default function CommentsQueryOrderControls( { value, onChange } ) {
return (
<ToggleGroupControl
Copy link
Contributor

Choose a reason for hiding this comment

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

It doesn't seem that the ToggleGroupControl is the right one for this control.. I think a combo box control is a better fit here and will accommodate for more options, if they need to be added.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the review!!

It seems that order options only accepts two values here, a long time ago for now. This is what we have when we check the documentation about the comments arguments on that function.
Screenshot 2021-12-13 at 10 29 22

Maybe the combo box would be a better option for OrderBy?
Screenshot 2021-12-13 at 10 32 02

Copy link
Contributor

Choose a reason for hiding this comment

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

I think the common case is to combine order and orderBy in a single control when we want both, but if we want only a control with two values (asc, desc) here, we might even consider a simple toggle control? --cc @jasmussen

Copy link
Contributor

@jasmussen jasmussen Dec 13, 2021

Choose a reason for hiding this comment

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

Nice PR! Yes, as a rule of thumb, if the text labels wrap inside a segmented control, then that control is not the right choice. I would also lean towards a basic toggle in cases where there are only two options. The combobox/dropdown is good for surfacing longer labels and obviously showing many options.

Is the toggle right for sort order? I'd say that depends on the phrasing and if it feels right. Something like this might work:

[on] Sort from newest to oldest

The implication would be that toggling it off would sort from oldest to newest. I think I'd personally like this as a good starting point, since it's a fairly simple toggle and good baseline.

We can always upgrade to the dropdown, which could be something like:

Sort order:
[ Newest to oldest
  Oldest to newest ]

What do you think?

@cbravobernal cbravobernal changed the title Update/add comments query loop sorting option [ Comments Query Loop] Add sorting by newer / older first options Dec 13, 2021
Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

Thank you for starting working on this control. My only concern would be that we use the block toolbar to set the number of items per page, and the sorting order is placed in the sidebar.

packages/block-library/src/comment-template/block.json Outdated Show resolved Hide resolved
packages/block-library/src/comment-template/index.php Outdated Show resolved Hide resolved
packages/block-library/src/comments-query-loop/block.json Outdated Show resolved Hide resolved
@@ -46,6 +47,12 @@ export default function CommentsQueryLoopEdit( { attributes, setAttributes } ) {
setAttributes( { tagName: value } )
}
/>
<QueryOrderControls
Copy link
Member

Choose a reason for hiding this comment

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

This setting should probably be located outside of the advanced group, in their own group specific for the block.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added on the toolbar. But I don't like how it shows. Maybe we could consider moving it to a Settings Inspector Options panel.

Copy link
Member

@gziolo gziolo Dec 16, 2021

Choose a reason for hiding this comment

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

It can be in the sidebar. It just shouldn’t be inside the advanced panel where controls related to tweaking HTML code live.

@cbravobernal cbravobernal force-pushed the update/add-comments-query-loop-sorting-option branch 2 times, most recently from dc4f4e3 to 25ab9be Compare December 15, 2021 16:14
@cbravobernal cbravobernal marked this pull request as draft December 15, 2021 16:16
Comment on lines 132 to 142
// We cannot get the order of the discussion settings page.
// Without the order defined, the default on the API is DESC
// with means show the newest comments first.
// By default, in discussion settings, the order is ASC.
// So the frontend is showing older comments first, while the editor is showing newer ones.
if ( order ) {
commentQuery.order = order;
}
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'm not confident with this solution, as both editor and frontend differ by default.

What is your opinion about this?

Could we solve it with the toggle box of inherit from settings proposal?

That way, the order would be:

  • If inherit enabled: settings
  • If inherit disabled: DESC (newer first) by default like the REST API, otherwise chosen by the user with the toggle.

cc: @gziolo @ntsekouras @jasmussen @michalczaplinski @DAreRodz

Copy link
Member

@gziolo gziolo Dec 16, 2021

Choose a reason for hiding this comment

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

We should read the default values from the server and use them when the user selects no explicit override. I think @michalczaplinski, at some point, had some code that exposes the site settings through the REST API. Am I correct, or was it something else?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes! I wanted to have comments_per_page exposed in the REST API. Here are quite complete instructions on how to do it, they should apply to the order property as well:
https://wordpress.slack.com/archives/C02QB2JS7/p1635376326175900

For those without access to the WP slack, here's how it can be done. It should be added to /lib/rest-api.php

function register_block_core_comment_template_order_setting() {
  register_setting(
	  'discussion',
	  'order',
	  array(
		  'show_in_rest' => true,
	  )
  );
}

add_action( 'rest_api_init', 'register_block_core_comment_template_order_setting', 10 );

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Wow, this is a really quick way to fix it, it will save me a lot of time 🎉

Would it be a good idea to create an endpoint to retrieve all the discussion settings? We could use register_rest_route, get all Discussion settings and use them for all the block rendering.

Copy link
Member

Choose a reason for hiding this comment

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

I don't think you need to create a new endpoint for that. As far as I'm aware the code that @michalczaplinski shared, adds the setting to the endpoint that is already in use in Gutenberg.

Copy link
Member

@gziolo gziolo Dec 17, 2021

Choose a reason for hiding this comment

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

I have an update in regards to these settings. I talked to @spacedmonkey and he explained that the https://make.wordpress.org/core/wp-json/wp/v2/settings endpoint is only available for admins. There is a long-standing Tract ticket that we would need to land: https://core.trac.wordpress.org/ticket/48885 – the idea is to expose site settings in the read-only mode for all user roles.

As a short-term solution, we could always expose those setting using the block_editor_settings_all filter. See am example of how to share the settings from the server:

function gutenberg_extend_block_editor_settings_with_default_editor_styles( $settings ) {
$default_editor_styles_file = gutenberg_dir_path() . 'build/block-editor/default-editor-styles.css';
$settings['defaultEditorStyles'] = array(
array(
'css' => file_get_contents( $default_editor_styles_file ),
),
);
// Remove the default font addition from Core Code.
$styles_without_core_styles = array();
if ( isset( $settings['styles'] ) ) {
foreach ( $settings['styles'] as $style ) {
if (
! isset( $style['__unstableType'] ) ||
'core' !== $style['__unstableType']
) {
$styles_without_core_styles[] = $style;
}
}
}
$settings['styles'] = $styles_without_core_styles;
return $settings;
}
add_filter( 'block_editor_settings_all', 'gutenberg_extend_block_editor_settings_with_default_editor_styles' );

Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

It looks like this PR is almost ready. The two remaining tasks I can see are:

  • Reading the default order for comments from the server.
  • Deciding whether controls for “Discussion Settings” should be in the block toolbar or instead in the sidebar.

@cbravobernal
Copy link
Contributor Author

cbravobernal commented Dec 16, 2021

This is what we see on the toolbar right now. Is there any way to make it wider without custom CSS?

Screenshot 2021-12-16 at 09 08 51

Thanks!

@cbravobernal
Copy link
Contributor Author

  • Deciding whether controls for “Discussion Settings” should be in the block toolbar or instead in the sidebar.

I guess it will be easier to expand in the sidebar.

@cbravobernal
Copy link
Contributor Author

On the sidebar is easier to handle.

Screenshot 2021-12-20 at 17 51 07

The code is working, but the editor comments won't get updated if the user is not an admin.

@cbravobernal cbravobernal force-pushed the update/add-comments-query-loop-sorting-option branch from 81b6ff6 to 639a420 Compare December 20, 2021 16:55
@cbravobernal cbravobernal marked this pull request as ready for review December 20, 2021 16:55
@cbravobernal cbravobernal force-pushed the update/add-comments-query-loop-sorting-option branch from 639a420 to 8018460 Compare December 21, 2021 08:49
@cbravobernal cbravobernal force-pushed the update/add-comments-query-loop-sorting-option branch from 990930c to dc5c16b Compare January 24, 2022 14:10
Co-authored-by: Greg Ziółkowski <grzegorz@gziolo.pl>
@cbravobernal cbravobernal force-pushed the update/add-comments-query-loop-sorting-option branch from 8f4924c to 67bfc8e Compare January 25, 2022 14:48
Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

Let's ship this version. I think the way it works now is pretty good. Everything works correctly in the case settings are inherited from the site settings and when some custom values get selected. Toggling settings inheriting also works great.

I'm testing using the legacy Post Comments block next to the Comments Query Loop block added to the Single Post template. I noticed that the order of pages differs between those two. I bet we need some more legacy logic related to the mix of first/last page and older/newer settings:

Screenshot 2022-01-25 at 16 03 09

Let's look into it the follow-up PR.

@cbravobernal cbravobernal merged commit 1f92999 into trunk Jan 25, 2022
@cbravobernal cbravobernal deleted the update/add-comments-query-loop-sorting-option branch January 25, 2022 16:08
@github-actions github-actions bot added this to the Gutenberg 12.5 milestone Jan 25, 2022
Comment on lines +1 to +3
.block-library-comments-toolbar__popover .components-popover__content {
min-width: 230px;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

While working on #40522, @DAreRodz, @michalczaplinski and I found that this file doesn't seem to be used.

It seems that it was introduced to fix the issue mentioned here, but it appears the relevant settings were later moved to the inspector controls in the sidebar, making the styling obsolete.

Just documenting this here for posterity 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Comments Affects the Comments Block - formerly known as Comments Query Loop [Feature] Blocks Overall functionality of blocks
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants