Skip to content

Commit 9a99e78

Browse files
ntsekourastyxla
andauthored
Experiment: Content types single route and package (#78059)
Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org> Co-authored-by: tyxla <tyxla@git.wordpress.org>
1 parent d5932fc commit 9a99e78

76 files changed

Lines changed: 1155 additions & 1179 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,26 @@
11
<?php
22
/**
3-
* Bootstraps the Content Types pages (Taxonomies, Post Types) in wp-admin
4-
* under Settings.
3+
* Bootstraps the Content Types page in wp-admin under Settings.
54
*
65
* @package gutenberg
76
*/
87

98
add_action( 'admin_menu', '_gutenberg_content_types_add_settings_menu_items', 11 );
109

1110
/**
12-
* Registers "Taxonomies" and "Post Types" submenu items under Settings.
11+
* Registers the "Content Types" submenu item under Settings.
1312
*
1413
* @access private
1514
*/
1615
function _gutenberg_content_types_add_settings_menu_items() {
17-
if ( function_exists( 'gutenberg_taxonomies_wp_admin_render_page' ) ) {
16+
if ( function_exists( 'gutenberg_content_types_wp_admin_render_page' ) ) {
1817
add_submenu_page(
1918
'options-general.php',
20-
__( 'Taxonomies', 'gutenberg' ),
21-
__( 'Taxonomies', 'gutenberg' ),
19+
__( 'Content Types', 'gutenberg' ),
20+
__( 'Content Types', 'gutenberg' ),
2221
'manage_options',
23-
'taxonomies-wp-admin',
24-
'gutenberg_taxonomies_wp_admin_render_page'
25-
);
26-
}
27-
if ( function_exists( 'gutenberg_post_types_wp_admin_render_page' ) ) {
28-
add_submenu_page(
29-
'options-general.php',
30-
__( 'Post Types', 'gutenberg' ),
31-
__( 'Post Types', 'gutenberg' ),
32-
'manage_options',
33-
'post-types-wp-admin',
34-
'gutenberg_post_types_wp_admin_render_page'
22+
'content-types-wp-admin',
23+
'gutenberg_content_types_wp_admin_render_page'
3524
);
3625
}
3726
}

package-lock.json

Lines changed: 69 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@
3535
"options-connectors",
3636
"guidelines",
3737
"experiments",
38-
"taxonomies",
39-
"post-types",
38+
"content-types",
4039
"dashboard"
4140
]
4241
},
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
{
2-
"name": "@wordpress/user-taxonomies",
2+
"name": "@wordpress/content-types",
33
"version": "1.0.0",
44
"private": true,
5-
"description": "User-defined taxonomies editor components and data model.",
5+
"description": "User-defined content types (post types and taxonomies) editor components and data model.",
66
"author": "The WordPress Contributors",
77
"license": "GPL-2.0-or-later",
88
"keywords": [
99
"wordpress",
1010
"gutenberg",
11+
"content-types",
12+
"post-types",
1113
"taxonomies"
1214
],
13-
"homepage": "https://github.com/WordPress/gutenberg/tree/HEAD/packages/user-taxonomies/README.md",
15+
"homepage": "https://github.com/WordPress/gutenberg/tree/HEAD/packages/content-types/README.md",
1416
"repository": {
1517
"type": "git",
1618
"url": "https://github.com/WordPress/gutenberg.git",
17-
"directory": "packages/user-taxonomies"
19+
"directory": "packages/content-types"
1820
},
1921
"bugs": {
2022
"url": "https://github.com/WordPress/gutenberg/issues"
@@ -25,12 +27,15 @@
2527
"types": "./build-types/index.d.ts",
2628
"import": "./build-module/index.mjs"
2729
},
30+
"./build-style/": "./build-style/",
2831
"./package.json": "./package.json"
2932
},
3033
"wpScriptModuleExports": "./build-module/index.mjs",
3134
"types": "build-types",
3235
"dependencies": {
36+
"@wordpress/admin-ui": "file:../admin-ui",
3337
"@wordpress/components": "file:../components",
38+
"@wordpress/compose": "file:../compose",
3439
"@wordpress/core-data": "file:../core-data",
3540
"@wordpress/data": "file:../data",
3641
"@wordpress/dataviews": "file:../dataviews",
@@ -39,6 +44,7 @@
3944
"@wordpress/icons": "file:../icons",
4045
"@wordpress/notices": "file:../notices",
4146
"@wordpress/private-apis": "file:../private-apis",
47+
"@wordpress/route": "file:../route",
4248
"@wordpress/ui": "file:../ui",
4349
"@wordpress/url": "file:../url"
4450
},
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* WordPress dependencies
3+
*/
4+
import { Page } from '@wordpress/admin-ui';
5+
import { privateApis as componentsPrivateApis } from '@wordpress/components';
6+
import { __ } from '@wordpress/i18n';
7+
import { useNavigate } from '@wordpress/route';
8+
import type { ReactNode } from 'react';
9+
10+
/**
11+
* Internal dependencies
12+
*/
13+
import { unlock } from '../../lock-unlock';
14+
15+
const { Tabs } = unlock( componentsPrivateApis );
16+
17+
interface LayoutProps {
18+
activeTab: 'post-types' | 'taxonomies';
19+
children: ReactNode;
20+
}
21+
22+
export function Layout( { activeTab, children }: LayoutProps ) {
23+
const navigate = useNavigate();
24+
25+
return (
26+
<Page
27+
ariaLabel={ __( 'Content Types' ) }
28+
className="content-types-page"
29+
>
30+
<Tabs
31+
selectedTabId={ activeTab }
32+
onSelect={ ( tabId: string ) =>
33+
navigate( { to: `/${ tabId }` } )
34+
}
35+
>
36+
<div className="content-types-tabs-wrapper">
37+
<Tabs.TabList>
38+
<Tabs.Tab tabId="post-types">
39+
{ __( 'Post Types' ) }
40+
</Tabs.Tab>
41+
<Tabs.Tab tabId="taxonomies">
42+
{ __( 'Taxonomies' ) }
43+
</Tabs.Tab>
44+
</Tabs.TabList>
45+
</div>
46+
</Tabs>
47+
{ children }
48+
</Page>
49+
);
50+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
@use "@wordpress/base-styles/colors" as *;
2+
@use "@wordpress/base-styles/variables" as *;
3+
@use "@wordpress/base-styles/mixins" as *;
4+
5+
// Size the stage to the viewport so DataViews owns its own scroll and
6+
// the sticky footer stays visible. Note: when the wp-admin sidebar
7+
// (#adminmenu) is taller than the viewport, #wpwrap still grows to
8+
// fit it, so empty space may appear below DataViews.
9+
.boot-layout__stage:has(.content-types-page) {
10+
height: calc(100vh - #{$admin-bar-height-big});
11+
12+
@include break-medium {
13+
height: calc(100vh - #{$admin-bar-height});
14+
}
15+
}
16+
17+
.content-types-page {
18+
padding: var(--wpds-dimension-padding-lg);
19+
}
20+
21+
.content-types-tabs-wrapper {
22+
border-bottom: 1px solid $gray-100;
23+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// URL path segments for the top-level tabs / list pages.
2+
export const POST_TYPES_PATH = '/post-types';
3+
export const TAXONOMIES_PATH = '/taxonomies';
4+
5+
// Core-data postType names that store the user-defined records.
6+
export const POST_TYPE_ENTITY = 'wp_user_post_type';
7+
export const TAXONOMY_ENTITY = 'wp_user_taxonomy';
8+
9+
// Sentinel for the edit-route param when creating a new record.
10+
export const NEW_ID = 'new';

0 commit comments

Comments
 (0)