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

Template Switcher: Add current theme #21578

Merged
merged 6 commits into from
Apr 17, 2020

Conversation

ockham
Copy link
Contributor

@ockham ockham commented Apr 14, 2020

Description

Display the current theme name in the template selector of edit-site.

Since the /themes endpoint currently only exposes the theme_supports field for each theme, this PR adds a number of additional fields to it, using the rest_prepare_theme hook. (I also filed a WordPress/wordpress-develop#222 against Core to extend the, err, upstream endpoint accordingly so that we can eventually drop the filter.)

In addition, this PR adds a new getCurrentTheme selector and related reducer/resolver/action to core-data (including a themes reducer for better normalization).

Finally, that selector is used to render the theme name in edit-site's template selector.

The fields I've chosen to add should be sufficient to implement the on-hover previews seen at #20469 (comment):

image

However, this PR doesn't implement those previews yet, since we need to implement the underlying fly-out menu component first (see #20470).

Fixes part of #20469.

How has this been tested?

  • If you haven't done yet, enable the site editor (and the demo templates) in Gutenberg > Experiments.
  • Go to the Site Editor menu.
  • Click on the template switcher.

Screenshots

image

Types of changes

New feature

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • 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.

@github-actions
Copy link

github-actions bot commented Apr 14, 2020

Size Change: +1.17 kB (0%)

Total Size: 841 kB

Filename Size Change
build/a11y/index.js 1.02 kB -1 B
build/api-fetch/index.js 4.01 kB -1 B
build/block-editor/index.js 105 kB +401 B (0%)
build/block-editor/style-rtl.css 10.2 kB +21 B (0%)
build/block-editor/style.css 10.2 kB +22 B (0%)
build/block-library/editor-rtl.css 7.09 kB -22 B (0%)
build/block-library/editor.css 7.09 kB -24 B (0%)
build/block-library/index.js 112 kB -60 B (0%)
build/block-library/style-rtl.css 7.17 kB +33 B (0%)
build/block-library/style.css 7.17 kB +31 B (0%)
build/block-serialization-default-parser/index.js 1.88 kB -2 B (0%)
build/components/index.js 198 kB +79 B (0%)
build/components/style-rtl.css 16.7 kB +119 B (0%)
build/components/style.css 16.7 kB +118 B (0%)
build/compose/index.js 6.66 kB +2 B (0%)
build/core-data/index.js 11.2 kB +125 B (1%)
build/date/index.js 5.47 kB +1 B
build/edit-navigation/index.js 3.54 kB +435 B (12%) ⚠️
build/edit-navigation/style-rtl.css 485 B +206 B (42%) 🚨
build/edit-navigation/style.css 485 B +205 B (42%) 🚨
build/edit-post/index.js 27.7 kB -66 B (0%)
build/edit-site/index.js 10.4 kB -12 B (0%)
build/edit-widgets/index.js 7.47 kB -59 B (0%)
build/editor/index.js 43.3 kB -365 B (0%)
build/editor/style-rtl.css 3.48 kB -18 B (0%)
build/editor/style.css 3.47 kB -17 B (0%)
build/format-library/index.js 7.32 kB +23 B (0%)
build/is-shallow-equal/index.js 710 B -1 B
build/keycodes/index.js 1.91 kB +1 B
build/notices/index.js 1.79 kB -1 B
build/nux/index.js 3.4 kB -1 B
build/priority-queue/index.js 788 B -1 B
build/rich-text/index.js 14.8 kB -1 B
build/token-list/index.js 1.28 kB -1 B
build/url/index.js 4.02 kB +6 B (0%)
build/warning/index.js 1.14 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/annotations/index.js 3.62 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.24 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 57.7 kB 0 B
build/data-controls/index.js 1.25 kB 0 B
build/data/index.js 8.43 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 3.1 kB 0 B
build/edit-post/style-rtl.css 12.3 kB 0 B
build/edit-post/style.css 12.3 kB 0 B
build/edit-site/style-rtl.css 5.02 kB 0 B
build/edit-site/style.css 5.02 kB 0 B
build/edit-widgets/style-rtl.css 4.65 kB 0 B
build/edit-widgets/style.css 4.64 kB 0 B
build/editor/editor-styles-rtl.css 428 B 0 B
build/editor/editor-styles.css 431 B 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.28 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.67 kB 0 B
build/primitives/index.js 1.49 kB 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/server-side-render/index.js 2.67 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@ockham ockham changed the title Add/current theme to template switcher Template Switcher: Add current theme Apr 14, 2020
@ockham ockham force-pushed the add/current-theme-to-template-switcher branch from 3704d06 to 4950572 Compare April 14, 2020 18:14
@noahtallen
Copy link
Member

I wonder, does the code in #222 need to go into the Gutenberg plugin for the time being? Otherwise, wouldn't the feature be broken until the next WordPress core update?

@ockham
Copy link
Contributor Author

ockham commented Apr 15, 2020

I wonder, does the code in #222 need to go into the Gutenberg plugin for the time being? Otherwise, wouldn't the feature be broken until the next WordPress core update?

I think so, yeah. Probably by tapping into rest_prepare_theme I think? 🙂

@ockham
Copy link
Contributor Author

ockham commented Apr 16, 2020

I wonder, does the code in #222 need to go into the Gutenberg plugin for the time being? Otherwise, wouldn't the feature be broken until the next WordPress core update?

I think so, yeah. Probably by tapping into rest_prepare_theme I think?

Yep, that worked: c74cf62 🎉

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.

Probable some failures on php linting. Otherwise, it looks good to me.

@ockham
Copy link
Contributor Author

ockham commented Apr 17, 2020

Probable some failures on php linting. Otherwise, it looks good to me.

Thanks Riad! Ah, looks like it's actually a PHP unit test, I'll look into it.

Edit: Nope, PHP lint run inside Travis' unit test job 😅

@ockham ockham merged commit a32e961 into master Apr 17, 2020
@ockham ockham deleted the add/current-theme-to-template-switcher branch April 17, 2020 11:49
@github-actions github-actions bot added this to the Gutenberg 8.0 milestone Apr 17, 2020
@youknowriad youknowriad mentioned this pull request Apr 17, 2020
53 tasks
@ellatrix ellatrix mentioned this pull request Jun 16, 2020
12 tasks
ockham added a commit that referenced this pull request Jun 28, 2020
In #21578, I added a few fields to Core's `/themes` endpoint, for use by the Site Editor's Template Switcher (see both #21578 and #21768). I then submitted those changes as a [PR](WordPress/wordpress-develop#222) against Core. That PR underwent a number of modifications and was eventually merged; the new fields will be part of the `/themes` endpoint exposed by Core starting from the next WP release.

This PR updates the fields added by Gutenberg to follow the same semantics, as well as the callsites that use that endpoint.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants