Skip to content

Template Switcher: Add current theme#21578

Merged
ockham merged 6 commits into
masterfrom
add/current-theme-to-template-switcher
Apr 17, 2020
Merged

Template Switcher: Add current theme#21578
ockham merged 6 commits into
masterfrom
add/current-theme-to-template-switcher

Conversation

@ockham

@ockham ockham commented Apr 14, 2020

Copy link
Copy Markdown
Contributor

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

github-actions Bot commented Apr 14, 2020

Copy link
Copy Markdown

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
Copy Markdown
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

ockham commented Apr 15, 2020

Copy link
Copy Markdown
Contributor Author

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

ockham commented Apr 16, 2020

Copy link
Copy Markdown
Contributor Author

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 🎉

@ockham ockham marked this pull request as ready for review April 16, 2020 20:05

@youknowriad youknowriad left a comment

Copy link
Copy Markdown
Contributor

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

ockham commented Apr 17, 2020

Copy link
Copy Markdown
Contributor Author

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