From 9c296ee7c593f2315e35c86cc3e88aeb2b8832ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:52:31 +0200 Subject: [PATCH 1/9] Display status in QuickEdit --- packages/edit-site/src/components/post-edit/index.js | 2 +- packages/edit-site/src/components/post-fields/index.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 80304f1650370..50eba7de5e933 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -45,7 +45,7 @@ function PostEditForm( { postType, postId } ) { const { fields } = usePostFields(); const form = { type: 'panel', - fields: [ 'title', 'author', 'date', 'comment_status' ], + fields: [ 'title', 'author', 'date', 'comment_status', 'status' ], }; const onChange = ( edits ) => { for ( const id of ids ) { diff --git a/packages/edit-site/src/components/post-fields/index.js b/packages/edit-site/src/components/post-fields/index.js index b03b2c6f5be3c..1d7569140ae8c 100644 --- a/packages/edit-site/src/components/post-fields/index.js +++ b/packages/edit-site/src/components/post-fields/index.js @@ -258,6 +258,7 @@ function usePostFields( viewType ) { { label: __( 'Status' ), id: 'status', + type: 'text', getValue: ( { item } ) => STATUSES.find( ( { value } ) => value === item.status ) ?.label ?? item.status, From d62a7d416ddb1acb6e0354c3df5e21b7827df7fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:52:58 +0200 Subject: [PATCH 2/9] Remove custom getValue from status field --- packages/edit-site/src/components/post-fields/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/edit-site/src/components/post-fields/index.js b/packages/edit-site/src/components/post-fields/index.js index 1d7569140ae8c..9c12c10c024be 100644 --- a/packages/edit-site/src/components/post-fields/index.js +++ b/packages/edit-site/src/components/post-fields/index.js @@ -259,9 +259,6 @@ function usePostFields( viewType ) { label: __( 'Status' ), id: 'status', type: 'text', - getValue: ( { item } ) => - STATUSES.find( ( { value } ) => value === item.status ) - ?.label ?? item.status, elements: STATUSES, render: PostStatusField, enableSorting: false, From ea00c2a0a7b5ec85f49a168f9ba7a18c300e4426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Wed, 7 Aug 2024 11:19:00 +0200 Subject: [PATCH 3/9] Do not show trash status --- .../edit-site/src/components/post-edit/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 50eba7de5e933..5eab0b273fdfa 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -42,7 +42,22 @@ function PostEditForm( { postType, postId } ) { ); const [ multiEdits, setMultiEdits ] = useState( {} ); const { editEntityRecord } = useDispatch( coreDataStore ); - const { fields } = usePostFields(); + const { fields: _fields } = usePostFields(); + const fields = useMemo( + () => + _fields?.map( ( field ) => { + if ( field.id === 'status' ) { + return { + ...field, + elements: field.elements.filter( + ( element ) => element.value !== 'trash' + ), + }; + } + return field; + } ), + [ _fields ] + ); const form = { type: 'panel', fields: [ 'title', 'author', 'date', 'comment_status', 'status' ], From 00e2f9025392b217ed75ebbe4504e9974c5b5e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Fri, 9 Aug 2024 14:10:56 +0200 Subject: [PATCH 4/9] Display status as radio --- packages/edit-site/src/components/post-fields/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/edit-site/src/components/post-fields/index.js b/packages/edit-site/src/components/post-fields/index.js index 9c12c10c024be..722112037382f 100644 --- a/packages/edit-site/src/components/post-fields/index.js +++ b/packages/edit-site/src/components/post-fields/index.js @@ -261,6 +261,7 @@ function usePostFields( viewType ) { type: 'text', elements: STATUSES, render: PostStatusField, + Edit: 'radio', enableSorting: false, filterBy: { operators: [ OPERATOR_IS_ANY ], From f0af051962df49769c67418b20b9e5ccc8cc48f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Fri, 9 Aug 2024 14:16:01 +0200 Subject: [PATCH 5/9] Add description to all status but draft --- .../src/components/post-fields/index.js | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/packages/edit-site/src/components/post-fields/index.js b/packages/edit-site/src/components/post-fields/index.js index 722112037382f..9e59b23d61922 100644 --- a/packages/edit-site/src/components/post-fields/index.js +++ b/packages/edit-site/src/components/post-fields/index.js @@ -42,11 +42,36 @@ import Media from '../media'; // See https://github.com/WordPress/gutenberg/issues/55886 // We do not support custom statutes at the moment. const STATUSES = [ - { value: 'draft', label: __( 'Draft' ), icon: drafts }, - { value: 'future', label: __( 'Scheduled' ), icon: scheduled }, - { value: 'pending', label: __( 'Pending Review' ), icon: pending }, - { value: 'private', label: __( 'Private' ), icon: notAllowed }, - { value: 'publish', label: __( 'Published' ), icon: published }, + { + value: 'draft', + label: __( 'Draft' ), + icon: drafts, + description: __( 'Not ready to publish.' ), + }, + { + value: 'future', + label: __( 'Scheduled' ), + icon: scheduled, + description: __( 'Publish automatically on a chosen date.' ), + }, + { + value: 'pending', + label: __( 'Pending Review' ), + icon: pending, + description: __( 'Waiting for review before publishing.' ), + }, + { + value: 'private', + label: __( 'Private' ), + icon: notAllowed, + description: __( 'Only visible to site admins and editors.' ), + }, + { + value: 'publish', + label: __( 'Published' ), + icon: published, + description: __( 'Visible to everyone.' ), + }, { value: 'trash', label: __( 'Trash' ), icon: trash }, ]; From c659533b5a3f3f2c99d5bfe1ecf41f7edee058b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Fri, 9 Aug 2024 14:17:43 +0200 Subject: [PATCH 6/9] Edit order of fields to be similar to DocumentInspector --- packages/edit-site/src/components/post-edit/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 5eab0b273fdfa..57c81ae76d81a 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -60,7 +60,7 @@ function PostEditForm( { postType, postId } ) { ); const form = { type: 'panel', - fields: [ 'title', 'author', 'date', 'comment_status', 'status' ], + fields: [ 'title', 'status', 'date', 'author', 'comment_status' ], }; const onChange = ( edits ) => { for ( const id of ids ) { From a13e01670d8f5e0b8edf7b1fc943fa3d8801f943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:02:37 +0200 Subject: [PATCH 7/9] Update date when new status is publish --- packages/edit-site/src/components/post-edit/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 57c81ae76d81a..65b1cafd60b71 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -64,6 +64,9 @@ function PostEditForm( { postType, postId } ) { }; const onChange = ( edits ) => { for ( const id of ids ) { + if ( edits.status === 'publish' ) { + edits.date = null; + } editEntityRecord( 'postType', postType, id, edits ); if ( ids.length > 1 ) { setMultiEdits( ( prev ) => ( { From 55ff29f3cd9d8415836b3d47d5e2124a011d5c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:28:30 +0200 Subject: [PATCH 8/9] handle status --- packages/edit-site/src/components/post-edit/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 65b1cafd60b71..301f37aa343ae 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -64,9 +64,15 @@ function PostEditForm( { postType, postId } ) { }; const onChange = ( edits ) => { for ( const id of ids ) { - if ( edits.status === 'publish' ) { + if ( + edits.status === 'future' && + new Date( record.date ) > new Date() + ) { edits.date = null; } + if ( edits.status === 'private' ) { + edits.password = ''; + } editEntityRecord( 'postType', postType, id, edits ); if ( ids.length > 1 ) { setMultiEdits( ( prev ) => ( { From f23403119d32c052d60fa50f7b443bd821344c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= <583546+oandregal@users.noreply.github.com> Date: Tue, 13 Aug 2024 10:22:10 +0200 Subject: [PATCH 9/9] Update handle status logic --- packages/edit-site/src/components/post-edit/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/edit-site/src/components/post-edit/index.js b/packages/edit-site/src/components/post-edit/index.js index 301f37aa343ae..0ec63589d9767 100644 --- a/packages/edit-site/src/components/post-edit/index.js +++ b/packages/edit-site/src/components/post-edit/index.js @@ -65,12 +65,13 @@ function PostEditForm( { postType, postId } ) { const onChange = ( edits ) => { for ( const id of ids ) { if ( - edits.status === 'future' && + edits.status !== 'future' && + record.status === 'future' && new Date( record.date ) > new Date() ) { edits.date = null; } - if ( edits.status === 'private' ) { + if ( edits.status === 'private' && record.password ) { edits.password = ''; } editEntityRecord( 'postType', postType, id, edits );