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

Add auto-drafting for theme supplied template parts. #23254

Merged
merged 7 commits into from
Jun 19, 2020

Conversation

Addison-Stavlo
Copy link
Contributor

@Addison-Stavlo Addison-Stavlo commented Jun 17, 2020

Description

A follow up to #22760 - to prevent the potential issue of losing access to theme supplied template parts as discussed in #22760 (comment)

How has this been tested?

Local docker environment using twentynineteen-blocks theme.

Using the site editor experiment and a block based theme, add a new template part .html file to the themes /block-template-parts/ directory. (you can copy the contents of one that already exists thre, just give it a new unique file name for the slug). Then run this PR and verify the new template part loads in the template part placeholder's preview list.

Screenshots

Types of changes

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 Jun 17, 2020

Size Change: +593 B (0%)

Total Size: 1.12 MB

Filename Size Change
build/annotations/index.js 3.62 kB -2 B (0%)
build/api-fetch/index.js 3.4 kB -1 B
build/block-editor/index.js 107 kB +557 B (0%)
build/block-editor/style-rtl.css 10.7 kB -34 B (0%)
build/block-editor/style.css 10.7 kB -32 B (0%)
build/block-library/editor-rtl.css 7.87 kB +6 B (0%)
build/block-library/editor.css 7.87 kB +5 B (0%)
build/block-library/index.js 129 kB +28 B (0%)
build/blocks/index.js 48.1 kB +1 B
build/components/index.js 196 kB +4 B (0%)
build/components/style-rtl.css 15.9 kB +11 B (0%)
build/components/style.css 15.8 kB +11 B (0%)
build/data/index.js 8.44 kB -1 B
build/edit-navigation/index.js 8.26 kB +4 B (0%)
build/edit-post/index.js 303 kB -2 B (0%)
build/edit-post/style-rtl.css 5.5 kB +4 B (0%)
build/edit-post/style.css 5.5 kB +5 B (0%)
build/edit-site/index.js 16.6 kB -3 B (0%)
build/editor/style-rtl.css 3.81 kB +4 B (0%)
build/editor/style.css 3.81 kB +3 B (0%)
build/format-library/style-rtl.css 547 B +5 B (0%)
build/format-library/style.css 548 B +5 B (0%)
build/keyboard-shortcuts/index.js 2.51 kB +2 B (0%)
build/list-reusable-blocks/style-rtl.css 450 B +4 B (0%)
build/list-reusable-blocks/style.css 451 B +4 B (0%)
build/nux/index.js 3.4 kB +1 B
build/nux/style-rtl.css 663 B +1 B
build/nux/style.css 660 B +3 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 7.26 kB 0 B
build/block-directory/style-rtl.css 937 B 0 B
build/block-directory/style.css 937 B 0 B
build/block-library/style-rtl.css 8 kB 0 B
build/block-library/style.css 8.01 kB 0 B
build/block-library/theme-rtl.css 730 B 0 B
build/block-library/theme.css 732 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/compose/index.js 9.6 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/date/index.js 5.47 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.17 kB 0 B
build/edit-navigation/style-rtl.css 1.02 kB 0 B
build/edit-navigation/style.css 1.02 kB 0 B
build/edit-site/style-rtl.css 3.03 kB 0 B
build/edit-site/style.css 3.03 kB 0 B
build/edit-widgets/index.js 9.33 kB 0 B
build/edit-widgets/style-rtl.css 2.43 kB 0 B
build/edit-widgets/style.css 2.43 kB 0 B
build/editor/editor-styles-rtl.css 468 B 0 B
build/editor/editor-styles.css 469 B 0 B
build/editor/index.js 44.8 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.72 kB 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/is-shallow-equal/index.js 711 B 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 788 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

$template_part_files = array_merge( $template_part_files, $child_template_part_files );
}
foreach ( $template_part_files as $template_part ) {
create_auto_draft_for_template_part_block( $template_part );
Copy link
Contributor

Choose a reason for hiding this comment

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

This function takes a block, not a file.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ahh yeah. And it looks like the template part files only contain the inner content. That is, the template files contain the template part definitions that have the slug/theme name, but the template part files do not contain that information inside themselves.

So im getting the content from the template part file, and wrapping it with a template-part block string and parsing it into a block. Im filling in that missing info by assuming the slug attribute will always correspond to the file name and the theme attr will always correspond to the currently applied theme in this case. I think thats fair?

Does this approach make more sense? (pushed these changes noted above)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

After stepping away and thinking about it more, would it make more sense to do the query and create post here? As opposed to building a string to parse it into a block to give to a function that is going to go back to the stylesheet directory again anyways?

Copy link
Contributor

Choose a reason for hiding this comment

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

It'd be nice to extract the logic for creating the post so that it can be referenced in both places.

@Addison-Stavlo
Copy link
Contributor Author

This works! I updated the template part placeholder query to use this, so that can be used to help test.

But for testing, I created a new template part in my current theme's directory that has a slug not used in any of the templates. It shows up in the placeholder previews! 🎉

I do wonder if #23254 (comment) might be a better approach though? 🤔

@Addison-Stavlo Addison-Stavlo marked this pull request as ready for review June 19, 2020 00:05
@Addison-Stavlo Addison-Stavlo merged commit b831891 into master Jun 19, 2020
@Addison-Stavlo Addison-Stavlo deleted the update/template-part-rest-filter branch June 19, 2020 19:50
@github-actions github-actions bot added this to the Gutenberg 8.4 milestone Jun 19, 2020
This was referenced Jun 24, 2020
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