-
Notifications
You must be signed in to change notification settings - Fork 385
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 PostFeaturedImage to PrePublishPanel #6563
Merged
westonruter
merged 9 commits into
ampproject:develop
from
arthur791004:add/post-featured-image-in-pre-publish-panel
Aug 30, 2021
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
21498ed
Add PostFeaturedImage to PrePublishPanel
arthur791004 4d9cf3e
Keep featured image check in pre-publish panel after selected an image
arthur791004 88edc04
Fix tests
arthur791004 3938ae8
Simplify PrePublishPanel because we already applied filter to PostFea…
arthur791004 a3f904a
Update comments
pierlon 9761650
Merge branch 'develop' into add/post-featured-image-in-pre-publish-panel
pierlon ac183ea
Show a warning notice when there are validation errors for the featur…
pierlon 09e81c8
Remove unnecessary constant
pierlon 1fb801e
Place import in correct position
pierlon File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,73 +1,27 @@ | ||
/** | ||
* External dependencies | ||
*/ | ||
import PropTypes from 'prop-types'; | ||
|
||
/** | ||
* WordPress dependencies | ||
*/ | ||
import { Notice } from '@wordpress/components'; | ||
import { PostFeaturedImage } from '@wordpress/editor'; | ||
import { PluginPrePublishPanel } from '@wordpress/edit-post'; | ||
import { withSelect } from '@wordpress/data'; | ||
import { __ } from '@wordpress/i18n'; | ||
|
||
/** | ||
* Internal dependencies | ||
*/ | ||
import { validateFeaturedImage } from '../helpers'; | ||
|
||
/** | ||
* Conditionally adds a notice to the pre-publish panel for the featured image. | ||
* Adds a pre-publish panel containing the featured image selection component. | ||
* | ||
* @param {Object} props Component props. | ||
* @param {Object} props.featuredMedia Media object. | ||
* @param {Array} props.dimensions Required image dimensions. | ||
* @param {boolean} props.required Whether selecting a featured image is required. | ||
* @return {Function} Either a plain pre-publish panel, or the panel with a featured image notice. | ||
* Note: The `PostFeaturedImage` component would have already been filtered to include | ||
* any notices for the featured image so there is no need to recreate them here. | ||
* | ||
* @return {Function} A pre-publish panel containing the featured image selection component. | ||
*/ | ||
const PrePublishPanel = ( { featuredMedia, dimensions, required } ) => { | ||
const errors = validateFeaturedImage( featuredMedia, dimensions, required ); | ||
|
||
if ( ! errors ) { | ||
return null; | ||
} | ||
|
||
const PrePublishPanel = () => { | ||
return ( | ||
<PluginPrePublishPanel | ||
title={ __( 'Featured Image', 'amp' ) } | ||
initialOpen="true" | ||
> | ||
<Notice | ||
status={ required ? 'warning' : 'notice' } | ||
isDismissible={ false } | ||
> | ||
{ errors.map( ( errorMessage, index ) => { | ||
return ( | ||
<p key={ `error-${ index }` }> | ||
{ errorMessage } | ||
</p> | ||
); | ||
} ) } | ||
</Notice> | ||
<PostFeaturedImage /> | ||
</PluginPrePublishPanel> | ||
); | ||
}; | ||
|
||
PrePublishPanel.propTypes = { | ||
featuredMedia: PropTypes.object, | ||
dimensions: PropTypes.shape( { | ||
width: PropTypes.number.isRequired, | ||
height: PropTypes.number.isRequired, | ||
} ), | ||
required: PropTypes.bool, | ||
}; | ||
|
||
export default withSelect( ( select ) => { | ||
const currentPost = select( 'core/editor' ).getCurrentPost(); | ||
const editedFeaturedMedia = select( 'core/editor' ).getEditedPostAttribute( 'featured_media' ); | ||
const featuredMedia = currentPost.featured_media || editedFeaturedMedia; | ||
|
||
return { | ||
featuredMedia: featuredMedia ? select( 'core' ).getMedia( featuredMedia ) : null, | ||
}; | ||
} )( PrePublishPanel ); | ||
export default PrePublishPanel; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Humm. Why was the message made unconditionally required? If the
required
prop is removed, the resulting message should rather beSelecting a featured image is recommended for an optimal user experience.
. Although this message as well should be improved (although not necessarily at this time) per #6075.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In other words, should these lines not be instead replaced with:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are many scenarios where no featured image neither available nor desired when someone publishes a post, so we shouldn't mandate Google Search's guidelines as requirements.
Indeed, the Featured Image is used as the
image
in the Schema.org metadata, and the Guidelines make a post eligible to show up with structured data in Search results. The post will still show up in search results without the extra metadata, although it won't be as well presented.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea here is to only let this function validate the image and return a set of validation errors. The text
Selecting a featured image is recommended for an optimal user experience.
is not necessarily an error but a reconmmendation, so I removed it from here.Instead, the component where this function is being used does a check to see if
media
is nullable, and if so uses the textSelecting a featured image is recommended for an optimal user experience.
. See https://github.com/arthur791004/amp-wp/blob/1fb801ed0a1fceaffec5087327c391e0f752782d/assets/src/common/components/higher-order/with-featured-image-notice.js#L60-L66.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, so this “required” message is actually never shown in the plugin currently but is included in
validateFeaturedImage()
here for completeness?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep.