From 2ef02f2e80235eb4cb476d4fc352e5ba6fb587e9 Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Tue, 10 Jan 2023 18:44:40 +0800 Subject: [PATCH] refactor: refactor the page management and remove the function page (#816) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind api-change /kind improvement #### What this PR does / why we need it: 1. 重构页面管理,移除功能页面的功能,改为由插件自行配置菜单。 2. 改进自定义页面的 UI 权限绑定,不会再出现没有勾选相关角色,但仍然显示左侧**页面**菜单的问题。 原由请看:https://github.com/halo-dev/halo/issues/3124 #### Which issue(s) this PR fixes: Fixes https://github.com/halo-dev/halo/issues/3124 #### Screenshots: image 插件需要自己定义菜单配置,如: image ```diff export default definePlugin({ - name: "PluginLinks", components: {}, routes: [ { parentName: "Root", route: { - path: "/pages/functional/links", + path: "/links", name: "Links", component: LinkList, meta: { permissions: ["plugin:links:view"], + menu: { + name: "链接", + group: "content", + icon: markRaw(RiLinksLine), + }, }, }, }, ], - extensionPoints: { - "page:functional:create": () => { - return [ - { - name: "链接", - url: "/links", - path: "/pages/functional/links", - permissions: ["plugin:links:view"], - }, - ]; - }, - }, }); ``` #### Special notes for your reviewer: 测试方式: 1. 测试左侧菜单的页面入口是否正常。 2. 创建一个新的角色,不勾选页面的查看权限,登录后检查是否可以在左侧菜单看到页面选项。 3. 测试插件添加菜单是否正常,可测试插件:[plugin-links-1.0.0-SNAPSHOT-plain.jar.zip](https://github.com/halo-dev/console/files/10379709/plugin-links-1.0.0-SNAPSHOT-plain.jar.zip) #### Does this PR introduce a user-facing change? ```release-note 重构页面管理,移除功能页面的功能。 ``` --- packages/shared/src/states/pages.ts | 1 + packages/shared/src/types/plugin.ts | 1 + .../contents/pages/FunctionalPageList.vue | 77 -- src/modules/contents/pages/SinglePageList.vue | 744 +++++++++--------- .../contents/pages/layouts/PageLayout.vue | 109 --- src/modules/contents/pages/module.ts | 115 +-- 6 files changed, 428 insertions(+), 619 deletions(-) delete mode 100644 src/modules/contents/pages/FunctionalPageList.vue delete mode 100644 src/modules/contents/pages/layouts/PageLayout.vue diff --git a/packages/shared/src/states/pages.ts b/packages/shared/src/states/pages.ts index a0a721d3..446d0c7f 100644 --- a/packages/shared/src/states/pages.ts +++ b/packages/shared/src/states/pages.ts @@ -1,3 +1,4 @@ +// @deprecated export interface FunctionalPage { name: string; path: string; diff --git a/packages/shared/src/types/plugin.ts b/packages/shared/src/types/plugin.ts index 8217b4ac..a9898da7 100644 --- a/packages/shared/src/types/plugin.ts +++ b/packages/shared/src/types/plugin.ts @@ -10,6 +10,7 @@ export interface RouteRecordAppend { } export interface ExtensionPoint { + // @deprecated "page:functional:create"?: () => FunctionalPage[] | Promise; "attachment:selector:create"?: () => diff --git a/src/modules/contents/pages/FunctionalPageList.vue b/src/modules/contents/pages/FunctionalPageList.vue deleted file mode 100644 index 6566f2a1..00000000 --- a/src/modules/contents/pages/FunctionalPageList.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/src/modules/contents/pages/SinglePageList.vue b/src/modules/contents/pages/SinglePageList.vue index 650ac97c..8a506a71 100644 --- a/src/modules/contents/pages/SinglePageList.vue +++ b/src/modules/contents/pages/SinglePageList.vue @@ -9,6 +9,7 @@ import { IconAddCircle, IconRefreshLine, IconExternalLinkLine, + IconPages, VButton, VCard, VPagination, @@ -20,6 +21,7 @@ import { VEntity, VEntityField, VLoading, + VPageHeader, Toast, } from "@halo-dev/components"; import SinglePageSettingModal from "./components/SinglePageSettingModal.vue"; @@ -439,373 +441,411 @@ function handleClearFilters() { - - diff --git a/src/modules/contents/pages/layouts/PageLayout.vue b/src/modules/contents/pages/layouts/PageLayout.vue deleted file mode 100644 index 7d36e276..00000000 --- a/src/modules/contents/pages/layouts/PageLayout.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - diff --git a/src/modules/contents/pages/module.ts b/src/modules/contents/pages/module.ts index e4ee8f57..f8190401 100644 --- a/src/modules/contents/pages/module.ts +++ b/src/modules/contents/pages/module.ts @@ -1,8 +1,5 @@ import { definePlugin } from "@halo-dev/console-shared"; import BasicLayout from "@/layouts/BasicLayout.vue"; -import BlankLayout from "@/layouts/BlankLayout.vue"; -import PageLayout from "./layouts/PageLayout.vue"; -import FunctionalPageList from "./FunctionalPageList.vue"; import SinglePageList from "./SinglePageList.vue"; import DeletedSinglePageList from "./DeletedSinglePageList.vue"; import SinglePageEditor from "./SinglePageEditor.vue"; @@ -16,89 +13,45 @@ export default definePlugin({ }, routes: [ { - path: "/pages", - component: BlankLayout, - name: "BasePages", - redirect: { - name: "FunctionalPages", - }, - meta: { - menu: { - name: "页面", - group: "content", - icon: markRaw(IconPages), - priority: 1, - }, - }, + path: "/single-pages", + component: BasicLayout, children: [ { - path: "functional", - component: PageLayout, - children: [ - { - path: "", - name: "FunctionalPages", - component: FunctionalPageList, - meta: { - title: "功能页面", - searchable: true, - }, + path: "", + name: "SinglePages", + component: SinglePageList, + meta: { + title: "页面", + searchable: true, + permissions: ["system:singlepages:view"], + menu: { + name: "页面", + group: "content", + icon: markRaw(IconPages), + priority: 1, + mobile: true, }, - ], + }, }, { - path: "single", - component: BlankLayout, - children: [ - { - path: "", - component: PageLayout, - children: [ - { - path: "", - name: "SinglePages", - component: SinglePageList, - meta: { - title: "自定义页面", - searchable: true, - permissions: ["system:singlepages:view"], - }, - }, - ], - }, - { - path: "deleted", - component: BasicLayout, - children: [ - { - path: "", - name: "DeletedSinglePages", - component: DeletedSinglePageList, - meta: { - title: "自定义页面回收站", - searchable: true, - permissions: ["system:singlepages:view"], - }, - }, - ], - }, - { - path: "editor", - component: BasicLayout, - children: [ - { - path: "", - name: "SinglePageEditor", - component: SinglePageEditor, - meta: { - title: "页面编辑", - searchable: true, - permissions: ["system:singlepages:manage"], - }, - }, - ], - }, - ], + path: "deleted", + name: "DeletedSinglePages", + component: DeletedSinglePageList, + meta: { + title: "页面回收站", + searchable: true, + permissions: ["system:singlepages:view"], + }, + }, + { + path: "editor", + name: "SinglePageEditor", + component: SinglePageEditor, + meta: { + title: "页面编辑", + searchable: true, + permissions: ["system:singlepages:manage"], + }, }, ], },