-
Notifications
You must be signed in to change notification settings - Fork 0
Feature: #16 - Sanitise version number #24
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
base: main
Are you sure you want to change the base?
Changes from all commits
5a27a6b
5b9aa2f
a29854f
33c9c7d
4304f37
efc1b1f
59c499f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -374,12 +374,14 @@ public function test_scheduled_event( $id ) { | |
|
|
||
| $content_arr = explode( "\n", $content ); | ||
|
|
||
| $version = get_post_meta( $id, 'version', true ); | ||
|
|
||
| $header_title = [ | ||
| [ | ||
| 'type' => 'header', | ||
| 'text' => [ | ||
| 'type' => 'plain_text', | ||
| 'text' => get_post_meta( $id, 'is_pre_release', true ) ? __( 'New Pre-Release 🎉', 'release-notes' ) : __( 'New Release 🎉', 'release-notes' ), | ||
| 'text' => str_contains( $version, '-' ) ? __( 'New Pre-Release 🎉', 'release-notes' ) : __( 'New Release 🎉', 'release-notes' ), | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as above, although this wasn't in place originally it may be an improvement to have a variable |
||
| ], | ||
| ], | ||
| ]; | ||
|
|
@@ -392,7 +394,7 @@ public function test_scheduled_event( $id ) { | |
| 'text' => sprintf( | ||
| /* translators: %s: The version number. */ | ||
| __( 'Version: %s', 'release-notes' ), | ||
| get_post_meta( $id, 'version', true ) | ||
| $version, | ||
| ), | ||
| ], | ||
| ], | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,9 @@ | ||
| <?php | ||
| $version = get_post_meta( get_the_ID(), 'version', true ); | ||
| $date = get_post_meta( get_the_ID(), 'release_date', true ); | ||
| $is_pre_release = get_post_meta( get_the_ID(), 'is_pre_release', true ); | ||
| $version = get_post_meta( get_the_ID(), 'version', true ); | ||
| $date = get_post_meta( get_the_ID(), 'release_date', true ); | ||
| ?> | ||
|
|
||
| <article class="release-note-single<?php $is_pre_release && print ' is-pre-release'; ?>"> | ||
| <article class="release-note-single<?php str_contains( $version, '-') && print ' is-pre-release'; ?>"> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same as above, it may be an beneficial to keep the variable |
||
| <header class="release-note-header"> | ||
| <h1 class="release-note-title"><?php the_title(); ?></h1> | ||
| <div class="release-note-meta-wrapper"> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,36 +2,128 @@ const { PluginDocumentSettingPanel } = wp.editPost; | |
| const { | ||
| PanelRow, | ||
| DatePicker, | ||
| ToggleControl, | ||
| __experimentalInputControl: InputControl, | ||
| SelectControl, | ||
| __experimentalNumberControl: NumberControl, | ||
| __experimentalText: Text, | ||
| __experimentalVStack: VStack, | ||
| __experimentalHStack: HStack, | ||
| } = wp.components; | ||
| const { useEntityProp } = wp.coreData; | ||
| const { useSelect } = wp.data; | ||
| const { __ } = wp.i18n; | ||
| const { useState, useEffect } = wp.element; | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There are a few steps I'd recommend going through to improve the organisation of this JS code, and reduce complexity/chance of bugs:
|
||
|
|
||
| /** Adds the date selector to the post settings */ | ||
| function CustomBlockFields() { | ||
| const postType = useSelect((select) => select('core/editor').getCurrentPostType(), []); | ||
| if (postType !== 'release-note') return null; | ||
|
|
||
| const [meta, setMeta] = useEntityProp('postType', postType, 'meta'); | ||
| const { version, is_pre_release: isPrerelease, release_date: releaseDate } = meta; | ||
| const { version, release_date: releaseDate } = meta; | ||
|
|
||
| const [versionObject, setVersionObject] = useState({}); | ||
|
|
||
| /** | ||
| * Splits the version string into an object | ||
| */ | ||
| const splitVersion = () => { | ||
| const prerelease = version.split('-'); | ||
| const versionArray = prerelease[0].split('.'); | ||
| const prereleaseVersion = prerelease[1] ? prerelease[1].split('.')[1] : ''; | ||
| const prereleaseType = prerelease[1] ? prerelease[1].split('.')[0] : ''; | ||
|
|
||
| setVersionObject({ | ||
| major: versionArray[0], | ||
| minor: versionArray[1], | ||
| patch: versionArray[2], | ||
| prerelease: prereleaseType, | ||
| prerelease_version: prereleaseVersion, | ||
| }); | ||
| }; | ||
|
|
||
| /** | ||
| * Updates the version object | ||
| * | ||
| * @param {integer || string} val value | ||
| * @param {string} key key | ||
| */ | ||
| const onVersionChange = (val, key) => { | ||
| const tempVersionObject = { ...versionObject }; | ||
| tempVersionObject[key] = val; | ||
|
|
||
| let versionString = `${tempVersionObject.major}.${tempVersionObject.minor}.${tempVersionObject.patch}`; | ||
|
|
||
| if (tempVersionObject.prerelease) { | ||
| versionString += `-${tempVersionObject.prerelease}`; | ||
| if (tempVersionObject.prerelease_version) { | ||
| versionString += `.${tempVersionObject.prerelease_version}`; | ||
| } | ||
| } | ||
|
|
||
| setVersionObject(tempVersionObject); | ||
| setMeta({ ...meta, version: versionString }); | ||
| }; | ||
|
|
||
| const onDateChange = (val) => { | ||
| setMeta({ ...meta, release_date: val }); | ||
| }; | ||
|
|
||
| useEffect(() => { | ||
| splitVersion(); | ||
| }, []); | ||
|
|
||
| return ( | ||
| <> | ||
| <PluginDocumentSettingPanel initialOpen name="release-notes" title="Release Info"> | ||
| <PanelRow> | ||
| <InputControl | ||
| value={version} | ||
| onChange={(val) => setMeta({ ...meta, version: val })} | ||
| label={__('Version Number')} | ||
| /> | ||
| <HStack> | ||
| <NumberControl | ||
| shiftStep={1} | ||
| min={0} | ||
| value={versionObject.major} | ||
| onChange={(val) => onVersionChange(val, 'major')} | ||
| spinControls="none" | ||
| /> | ||
| <Text variant="label">.</Text> | ||
| <NumberControl | ||
| shiftStep={1} | ||
| min={0} | ||
| value={versionObject.minor} | ||
| onChange={(val) => onVersionChange(val, 'minor')} | ||
| spinControls="none" | ||
| /> | ||
| <Text variant="label">.</Text> | ||
| <NumberControl | ||
| shiftStep={1} | ||
| min={0} | ||
| value={versionObject.patch} | ||
| onChange={(val) => onVersionChange(val, 'patch')} | ||
| spinControls="none" | ||
| /> | ||
| <SelectControl | ||
| className="release-notes__prerelease" | ||
| value={versionObject.prerelease} | ||
| options={[ | ||
| { label: 'None', value: '' }, | ||
| { label: '-Alpha', value: 'alpha' }, | ||
| { label: '-Beta', value: 'beta' }, | ||
| { label: '-RC', value: 'rc' }, | ||
| ]} | ||
| onChange={(val) => onVersionChange(val, 'prerelease')} | ||
| /> | ||
| {versionObject.prerelease && ( | ||
| <> | ||
| <Text variant="label">.</Text> | ||
| <NumberControl | ||
| shiftStep={1} | ||
| min={0} | ||
| value={versionObject.prerelease_version} | ||
| onChange={(val) => onVersionChange(val, 'prerelease_version')} | ||
| spinControls="none" | ||
| /> | ||
| </> | ||
| )} | ||
| </HStack> | ||
| </PanelRow> | ||
| <br /> | ||
| <PanelRow> | ||
|
|
@@ -43,14 +135,6 @@ function CustomBlockFields() { | |
| /> | ||
| </VStack> | ||
| </PanelRow> | ||
| <br /> | ||
| <PanelRow> | ||
| <ToggleControl | ||
| label={__('Pre-Release Toggle')} | ||
| checked={isPrerelease} | ||
| onChange={(val) => setMeta({ ...meta, is_pre_release: val })} | ||
| /> | ||
| </PanelRow> | ||
| </PluginDocumentSettingPanel> | ||
| </> | ||
| ); | ||
|
|
||
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.
Although you're dropping the meta, I would recommend keeping a boolean variable in place, i.e:
$is_pre_release = str_contains( $version, '-');as it helps make the intent clearer.