From 7223aee5d24679b6441771712de598187451e1cb Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Fri, 20 Mar 2020 19:10:29 +0200 Subject: [PATCH 01/23] adds simple dynamic link generation to navigation items --- packages/block-library/src/navigation-link/edit.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/block-library/src/navigation-link/edit.js b/packages/block-library/src/navigation-link/edit.js index 29d30643acb8f8..7bd26c661a23f3 100644 --- a/packages/block-library/src/navigation-link/edit.js +++ b/packages/block-library/src/navigation-link/edit.js @@ -258,6 +258,7 @@ function NavigationLinkEdit( { title: newTitle = '', url: newURL = '', opensInNewTab: newOpensInNewTab, + type, id, } = {} ) => setAttributes( { @@ -285,6 +286,7 @@ function NavigationLinkEdit( { return escape( normalizedURL ); } )(), opensInNewTab: newOpensInNewTab, + type, id, } ) } From 6610e9fa417b60056b32ae44357c47bfa9f62510 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Mon, 23 Mar 2020 11:04:02 +0200 Subject: [PATCH 02/23] Linting and snapshots fix --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index c575b3297d2a23..a7a1a0cec5a197 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -66,6 +66,6 @@ exports[`Navigation allows an empty navigation block to be created and manually exports[`Navigation allows pages to be created from the navigation block and their links added to menu 1`] = ` " - + " `; From 57c9cf1732cacee421831867479a593d14603e3f Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Mon, 27 Apr 2020 16:28:00 +0300 Subject: [PATCH 03/23] removes checking by type also fixes LinkControl to not set URL as if for manual entries --- .../block-editor/src/components/link-control/index.js | 1 - packages/block-library/src/navigation-link/block.json | 3 --- packages/block-library/src/navigation-link/edit.js | 4 +--- .../experiments/__snapshots__/navigation.test.js.snap | 8 ++++---- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/block-editor/src/components/link-control/index.js b/packages/block-editor/src/components/link-control/index.js index bdf9112ef0153b..d27200258dafee 100644 --- a/packages/block-editor/src/components/link-control/index.js +++ b/packages/block-editor/src/components/link-control/index.js @@ -273,7 +273,6 @@ function LinkControl( { return Promise.resolve( [ { - id: val, title: val, url: type === 'URL' ? prependHTTP( val ) : val, type, diff --git a/packages/block-library/src/navigation-link/block.json b/packages/block-library/src/navigation-link/block.json index 8bbf88c23a00f6..93806f7cd4f947 100644 --- a/packages/block-library/src/navigation-link/block.json +++ b/packages/block-library/src/navigation-link/block.json @@ -12,9 +12,6 @@ "type": "boolean", "default": false }, - "type": { - "type": "string" - }, "description": { "type": "string" }, diff --git a/packages/block-library/src/navigation-link/edit.js b/packages/block-library/src/navigation-link/edit.js index 7bd26c661a23f3..e48a4621be36ca 100644 --- a/packages/block-library/src/navigation-link/edit.js +++ b/packages/block-library/src/navigation-link/edit.js @@ -258,7 +258,6 @@ function NavigationLinkEdit( { title: newTitle = '', url: newURL = '', opensInNewTab: newOpensInNewTab, - type, id, } = {} ) => setAttributes( { @@ -286,8 +285,7 @@ function NavigationLinkEdit( { return escape( normalizedURL ); } )(), opensInNewTab: newOpensInNewTab, - type, - id, + id: id ? Number( id ) : undefined, } ) } /> diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index a7a1a0cec5a197..8755300090ae8a 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -46,11 +46,11 @@ exports[`Navigation Creating from existing Menus does not display option to crea exports[`Navigation Creating from existing Pages allows a navigation block to be created using existing pages 1`] = ` " - + - + - + " `; @@ -66,6 +66,6 @@ exports[`Navigation allows an empty navigation block to be created and manually exports[`Navigation allows pages to be created from the navigation block and their links added to menu 1`] = ` " - + " `; From 0a79c609b535bf9dfed1e42e12814aef2e7ab022 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Thu, 30 Apr 2020 16:15:18 +0300 Subject: [PATCH 04/23] adds snapshot fix --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index 8755300090ae8a..84f63291b02c8b 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -2,6 +2,7 @@ exports[`Navigation Creating from existing Menus allows a navigation block to be created from existing menus 1`] = ` " +<<<<<<< HEAD @@ -59,7 +60,6 @@ exports[`Navigation Creating from existing Pages does not display option to crea exports[`Navigation allows an empty navigation block to be created and manually populated using a mixture of internal and external links 1`] = ` " - " `; From a0db3c820f45085ff29c6061ef27d138140f4e47 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Thu, 30 Apr 2020 17:08:53 +0300 Subject: [PATCH 05/23] removed URL as id from snapshot --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index 84f63291b02c8b..1c263daa7f917a 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -2,7 +2,6 @@ exports[`Navigation Creating from existing Menus allows a navigation block to be created from existing menus 1`] = ` " -<<<<<<< HEAD @@ -59,7 +58,7 @@ exports[`Navigation Creating from existing Pages does not display option to crea exports[`Navigation allows an empty navigation block to be created and manually populated using a mixture of internal and external links 1`] = ` " - + " `; From a53a7290d6e911bb3595909c6b1cb0fc92ab86b7 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Thu, 30 Apr 2020 17:35:55 +0300 Subject: [PATCH 06/23] fixes snapshot --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index 1c263daa7f917a..7a3e9f4728c941 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -59,6 +59,7 @@ exports[`Navigation Creating from existing Pages does not display option to crea exports[`Navigation allows an empty navigation block to be created and manually populated using a mixture of internal and external links 1`] = ` " + " `; From c1cc9cba3c9f58bcd687720f0fe810a299f2cbdc Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Mon, 4 May 2020 19:18:21 +0300 Subject: [PATCH 07/23] refactores according to code review adds a new get_navigation_link_url function to navigation link rendering removes url from navigation links that have id --- packages/block-library/src/navigation-link/edit.js | 7 ++++++- packages/block-library/src/navigation/index.php | 9 +++++++++ .../experiments/__snapshots__/navigation.test.js.snap | 11 +++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/block-library/src/navigation-link/edit.js b/packages/block-library/src/navigation-link/edit.js index e48a4621be36ca..aeb134f8647dbe 100644 --- a/packages/block-library/src/navigation-link/edit.js +++ b/packages/block-library/src/navigation-link/edit.js @@ -261,7 +261,12 @@ function NavigationLinkEdit( { id, } = {} ) => setAttributes( { - url: encodeURI( newURL ), + url: ( () => { + if ( id ) { + return undefined; + } + return encodeURI( newURL ); + } )(), label: ( () => { const normalizedTitle = newTitle.replace( /http(s?):\/\//gi, diff --git a/packages/block-library/src/navigation/index.php b/packages/block-library/src/navigation/index.php index e28c5216671013..004307c4062098 100644 --- a/packages/block-library/src/navigation/index.php +++ b/packages/block-library/src/navigation/index.php @@ -154,6 +154,15 @@ function render_block_core_navigation( $attributes, $content, $block ) { ); } +function get_navigation_link_url( $attrs ) { + if ( isset( $attrs['id'] ) ) { + return esc_url( get_permalink( $attrs['id'] ) ); + } else if ( isset( $attrs['url'] ) ) { + return esc_url( $attrs['url'] ); + } + return false; +} + /** * Register the navigation block. * diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index 7a3e9f4728c941..e15091caa46a87 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -3,7 +3,6 @@ exports[`Navigation Creating from existing Menus allows a navigation block to be created from existing menus 1`] = ` " - @@ -46,11 +45,11 @@ exports[`Navigation Creating from existing Menus does not display option to crea exports[`Navigation Creating from existing Pages allows a navigation block to be created using existing pages 1`] = ` " - + - + - + " `; @@ -60,12 +59,12 @@ exports[`Navigation allows an empty navigation block to be created and manually " - + " `; exports[`Navigation allows pages to be created from the navigation block and their links added to menu 1`] = ` " - + " `; From de76e90aea2dd0367712bbe8b882ec7867ab8bae Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Tue, 5 May 2020 12:18:13 +0300 Subject: [PATCH 08/23] removes URL when creating from existing pages also PHP linting --- packages/block-library/src/navigation/index.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/block-library/src/navigation/index.php b/packages/block-library/src/navigation/index.php index 004307c4062098..d8dfcec822619d 100644 --- a/packages/block-library/src/navigation/index.php +++ b/packages/block-library/src/navigation/index.php @@ -154,10 +154,17 @@ function render_block_core_navigation( $attributes, $content, $block ) { ); } +/** + * Returns the link for the one nav iteem or false + * + * @param array $attributes The Navigation Link block attributes. + * + * @return string|bool Returns the determined link or false. + */ function get_navigation_link_url( $attrs ) { if ( isset( $attrs['id'] ) ) { return esc_url( get_permalink( $attrs['id'] ) ); - } else if ( isset( $attrs['url'] ) ) { + } elseif ( isset( $attrs['url'] ) ) { return esc_url( $attrs['url'] ); } return false; From 648787012b624ad45d17f5341aa637655dcf0de9 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Tue, 5 May 2020 16:31:16 +0300 Subject: [PATCH 09/23] corrects docblock --- packages/block-library/src/navigation/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/block-library/src/navigation/index.php b/packages/block-library/src/navigation/index.php index d8dfcec822619d..3c0984b689574a 100644 --- a/packages/block-library/src/navigation/index.php +++ b/packages/block-library/src/navigation/index.php @@ -157,7 +157,7 @@ function render_block_core_navigation( $attributes, $content, $block ) { /** * Returns the link for the one nav iteem or false * - * @param array $attributes The Navigation Link block attributes. + * @param array $attrs The Navigation Link block attributes. * * @return string|bool Returns the determined link or false. */ From 7c796b74c2a60bf16a114b7ac3cfd876dc6fbe37 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Thu, 7 May 2020 17:29:58 +0300 Subject: [PATCH 10/23] adding stored URL back removing the URL from the navigation item caused LinkControl to not load in edit mode when a link is present. it also messes the look of the navigation items. It is rather weird that we store a potentially outdated link but we can address that separately. --- packages/block-library/src/navigation-link/edit.js | 3 --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/block-library/src/navigation-link/edit.js b/packages/block-library/src/navigation-link/edit.js index aeb134f8647dbe..2906cca20347d2 100644 --- a/packages/block-library/src/navigation-link/edit.js +++ b/packages/block-library/src/navigation-link/edit.js @@ -262,9 +262,6 @@ function NavigationLinkEdit( { } = {} ) => setAttributes( { url: ( () => { - if ( id ) { - return undefined; - } return encodeURI( newURL ); } )(), label: ( () => { diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index e15091caa46a87..b5a84078fde12a 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -65,6 +65,6 @@ exports[`Navigation allows an empty navigation block to be created and manually exports[`Navigation allows pages to be created from the navigation block and their links added to menu 1`] = ` " - + " `; From b58ebb649bd9eb23eae34488b197697339d9beb9 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Thu, 7 May 2020 19:08:11 +0300 Subject: [PATCH 11/23] revert snapshot for adding the URL back to navigation link --- .../experiments/__snapshots__/navigation.test.js.snap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index b5a84078fde12a..fb04faa0456acb 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -45,11 +45,11 @@ exports[`Navigation Creating from existing Menus does not display option to crea exports[`Navigation Creating from existing Pages allows a navigation block to be created using existing pages 1`] = ` " - + - + - + " `; @@ -59,7 +59,7 @@ exports[`Navigation allows an empty navigation block to be created and manually " - + " `; From 6bfa53ad1edd188207d2fc9a56c66b803e44defa Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Mon, 11 May 2020 10:19:37 +0300 Subject: [PATCH 12/23] fixes typoin snapshot --- .../specs/experiments/__snapshots__/navigation.test.js.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap index fb04faa0456acb..873b316583feea 100644 --- a/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap +++ b/packages/e2e-tests/specs/experiments/__snapshots__/navigation.test.js.snap @@ -59,7 +59,7 @@ exports[`Navigation allows an empty navigation block to be created and manually " - + " `; From 072dfdefb96788c30ab74ca46d7d756ab8bea680 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Mon, 29 Jun 2020 15:58:09 +0300 Subject: [PATCH 13/23] updates LinkControl to work with only id instead of URL --- .../src/components/link-control/index.js | 41 ++++++++++++------- .../block-library/src/navigation-link/edit.js | 16 +++++--- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/packages/block-editor/src/components/link-control/index.js b/packages/block-editor/src/components/link-control/index.js index d27200258dafee..052e1ebc45a7b1 100644 --- a/packages/block-editor/src/components/link-control/index.js +++ b/packages/block-editor/src/components/link-control/index.js @@ -158,6 +158,7 @@ const makeCancelable = ( promise ) => { function LinkControl( { searchInputPlaceholder, value, + id, settings, onChange = noop, noDirectEntry = false, @@ -177,7 +178,7 @@ function LinkControl( { const [ isEditingLink, setIsEditingLink ] = useState( forceIsEditingLink !== undefined ? forceIsEditingLink - : ! value || ! value.url + : ! value || ( ! value.url && ! id ) ); const [ isResolvingLink, setIsResolvingLink ] = useState( false ); const [ errorMessage, setErrorMessage ] = useState( null ); @@ -591,19 +592,31 @@ function LinkControl( { } ) } > - - - { ( value && value.title ) || displayURL } - - { value && value.title && ( - - { displayURL } - - ) } - + { typeof value.url !== 'undefined' && ( + + + { ( value && value.title ) || displayURL } + + { value && value.title && ( + + { displayURL } + + ) } + + ) } + + { typeof value.url === 'undefined' && ( + + { value && value.title && ( + + { value.title } + + ) } + + ) }