#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
支持管理已删除的文章和自定义页面,优化删除的逻辑。
Fixes https://github.com/halo-dev/halo/issues/2647
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2648
2. 测试文章和自定义页面的删除功能,以及回收站的管理功能。
#### Does this PR introduce a user-facing change?
```release-note
支持管理已删除的文章和自定义页面,优化删除的逻辑。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
添加选择附件类型的 FormKit 输入框。
在 Vue 单组件中使用:
```vue
<script lang="ts" setup>
const logo = ref("")
</script>
<template>
<FormKit
v-model="logo"
label="Logo"
type="attachment"
validation="required"
/>
</template>
```
在 FormKit Schema 中使用(插件 / 主题设置表单定义):
```yaml
- $formkit: attachment
name: logo
label: Logo
```
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2558
#### Screenshots:
<img width="671" alt="image" src="https://user-images.githubusercontent.com/21301288/198980581-ba90ec32-f205-4d03-8546-3c93238298e7.png">
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
添加选择附件类型的 FormKit 输入框。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
以 inline svg 的形式加载 Logo,解决因为加载 svg 文件导致的页面抖动问题。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:检查登录页面、初始化页面、侧边菜单顶部的 Logo 是否加载正常。
#### Does this PR introduce a user-facing change?
```release-note
以 inline svg 的形式加载 Logo,解决因为加载 svg 文件导致的页面抖动问题。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
优化部分数据列表的逻辑,支持在检测出有正在删除的数据时,自动定时刷新列表。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 进入任意一个数据列表,比如文章。
2. 删除一个文章,观察是否有自动刷新列表。
3. 切换路由,检查自动刷新是否停止。
#### Does this PR introduce a user-facing change?
```release-note
优化部分数据列表的逻辑,支持在检测出有正在删除的数据时,自动定时刷新列表。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
修正关于 Attachment 组件和编辑器组件的参数错别字。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
插件和主题管理的 Logo 改为使用 `Avatar` 组件。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:检查主题和插件相关的管理页面是否正常加载 Logo。
#### Does this PR introduce a user-facing change?
```release-note
插件和主题管理的 Logo 改为使用 `Avatar` 组件。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
为部分功能数据列表添加刷新按钮。
#### Screenshots:
<img width="1664" alt="image" src="https://user-images.githubusercontent.com/21301288/197397277-353befe4-8c43-4326-9ad5-64d2888dc4a3.png">
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 需要 `pnpm build:packages`
2. 测试点击刷新按钮是否可以正常请求接口。
#### Does this PR introduce a user-facing change?
```release-note
为部分功能数据列表添加刷新按钮。
```
#### What type of PR is this?
/kind api-change
/kind bug
#### What this PR does / why we need it:
更新 `@halo-dev/api-client` 以修复文章访问数据不正确的问题。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
```release-note
更新 `@halo-dev/api-client` 以修复文章访问数据不正确的问题。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
Ref https://github.com/halo-dev/halo/issues/2526#issuecomment-1273094868
FormKit 文档:https://formkit.com/advanced/custom-inputs
通过扩展 FormKit 的自定义 Input,提供系统常用资源的选择组件。
目前提供如下类型:
- menuCheckbox
- menuRadio
- menuItemSelect
- postSelect
- categorySelect
- tagSelect
- singlePageSelect
- categoryCheckbox
- tagCheckbox
FormKit 组件的使用方式:
```vue
<FormKit
placeholder="请选择文章"
label="文章"
type="postSelect"
validation="required"
/>
```
FormKit Schema 的使用方式:
```yaml
- $formkit: menuRadio
name: menus
label: 底部菜单组
```
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2526
#### Screenshots:
<!--
如果此 PR 有 UI 的改动,最好截图说明这个 PR 的改动。
If there are UI changes to this PR, it is best to take a screenshot to illustrate the changes to this PR.
eg.
Before:
![screenshot-before](https://user-images.githubusercontent.com/screenshot.png)
After:
![screenshot-after](https://user-images.githubusercontent.com/screenshot.png)
-->
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 检查后台文章设置弹框的选择分类和标签功能是否正常。
2. 检查后台添加菜单项的功能是否正常。
3. 使用主题或者插件定义 settings.yaml,使用上述任意 input 类型,检查得到的效果和值是否正常。
#### Does this PR introduce a user-facing change?
```release-note
通过扩展 FormKit 的自定义 Input,提供系统常用资源的选择组件。
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
为登录操作和加载插件资源添加异常提示。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2534
#### Screenshots:
<img width="650" alt="image" src="https://user-images.githubusercontent.com/21301288/196105634-ece58153-d9e0-450d-8068-8cda1bed8bcc.png">
<img width="634" alt="image" src="https://user-images.githubusercontent.com/21301288/196105704-e3a59808-8a33-456d-b668-13e891512353.png">
#### Special notes for your reviewer:
目前还没有处理全局的接口请求异常,需要后端修改异常返回结构。
/cc @halo-dev/sig-halo-console
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
为登录操作和加载插件资源添加异常提示。
```
#### What type of PR is this?
/kind api-change
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
重构 Dialog 组件使用 API 的调用方式,改为与 Toast 组件一致。https://github.com/halo-dev/console/pull/644
同样的,使用此方式调用 Dialog 组件不限制在 Vue 组件。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
需要测试后台各个操作的会话框是否正常。
#### Does this PR introduce a user-facing change?
```release-note
重构 Dialog 组件使用 API 的调用方式。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
升级 `@halo-dev/api-client` 版本以适配 Attachment 资源的自定义 Endpoint。
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 需要 `pnpm install`。
2. 测试附件列表和上传的功能。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
优化用户登录的逻辑。 适配:https://github.com/halo-dev/halo/pull/2528
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2506
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
优化用户登录的逻辑
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
Ref https://github.com/halo-dev/halo/pull/2521 我们已经将 halo-admin 的命名改为了 console,所以相关命名需要同步修改。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2519
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. 需要 `pnpm install && pnpm build:packages`
2. 测试后台功能是否正常。
PS:将在此 PR 合并之后发布 `@halo-dev/console-shared` 包到 npm。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
完善 UI 权限控制。适配 https://github.com/halo-dev/halo/pull/2488
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2342
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要使用 https://github.com/halo-dev/halo/issues/2342 PR 的分支。
2. 创建新的角色,并勾选需要测试的权限。
3. 创建新的用户并赋予新的角色。
4. 测试操作权限。
#### Does this PR introduce a user-facing change?
```release-note
完善 UI 权限控制
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
- 支持在文章和自定义页面的管理列表显示访问数和评论数。
- 仪表盘支持显示整站的访问数。
适配 https://github.com/halo-dev/halo/pull/2476
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2430
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要 https://github.com/halo-dev/halo/pull/2476 PR 中的分支。
2. 需要执行 `pnpm install && pnpm build:packages`
3. 随机访问前台文章或者自定义页面,以及添加评论。
4. 查看后台是否正确统计文章浏览数和评论数。
TODO list:
- [ ] 更新 `@halo-dev/api-client`
#### Does this PR introduce a user-facing change?
```release-note
支持在文章和自定义页面的管理列表显示访问数和评论数
```
#### What type of PR is this?
/kind feature
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
添加插件管理筛选的支持。适配 https://github.com/halo-dev/halo/pull/2489
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2470
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo
/cc @halo-dev/sig-halo-console
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2489 PR 的分支。
2. Console 需要 `pnpm install`
3. 安装若干插件,测试筛选和排序。
#### Does this PR introduce a user-facing change?
```release-note
插件管理支持筛选
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
修改标签/分类显示文章数量的字段。 适配 https://github.com/halo-dev/halo/pull/2483
#### Which issue(s) this PR fixes:
Fixes #
#### Special notes for your reviewer:
测试方式:
1. Halo 需要切换到 https://github.com/halo-dev/halo/pull/2483 PR 中的分支。
2. Console 需要 `pnpm install`
3. 发布多篇带分类和标签的文章后,检查分类和标签的文章数量是否正确。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
支持删除主题的时候删除对应的 Setting 和 ConfigMap 资源。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2325
#### Screenshots:
<img width="1004" alt="image" src="https://user-images.githubusercontent.com/21301288/191994812-0ad32b23-e461-4286-9bd7-ce12b413f580.png">
#### Special notes for your reviewer:
测试方式:
1. 安装一个带有设置项的主题并做一定的配置。
2. 选择**卸载并删除配置**的选项。
3. 重新安装主题,检查设置项是否已经恢复为默认。
#### Does this PR introduce a user-facing change?
```release-note
支持卸载主题时,删除对应的 Setting 和 ConfigMap 资源。
```
#### What type of PR is this?
/kind improvement
/milestone 2.0
#### What this PR does / why we need it:
适配 https://github.com/halo-dev/halo/pull/2453
1. 将生产构建的 base url 更改为 console
2. 优化登录之后跳转的逻辑。
#### Which issue(s) this PR fixes:
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-admin
测试方式:
1. 在本地根据此 PR 构建生产版本(pnpm build)
2. 根据 https://github.com/halo-dev/halo/pull/2453#issue-1381947867 中的描述修改配置文件。
3. 访问 http://localhost:8090/console
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
评论管理模块。适配 https://github.com/halo-dev/halo/pull/2412
#### Which issue(s) this PR fixes:
Fixeshalo-dev/halo#2409
#### Screenshots:
#### Special notes for your reviewer:
测试方式:
1. 本地的 halo-admin 仓库需要 checkout 到当前分支。
2. 后端需要 checkout 到 <https://github.com/halo-dev/halo/pull/2412>。
3. 使用最新的主题:<https://github.com/halo-sigs/theme-anatole>。
4. 更新 halo-admin 的依赖和构建 packages:`pnpm install` `pnpm build:packages`
5. 启用主题之后在文章详情页面即可看到评论框。
6. 测试主题端的评论和后台评论的管理。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
添加 Entity 和 EntityField 组件,作为列表项使用。
#### Which issue(s) this PR fixes:
#### Screenshots:
#### Special notes for your reviewer:
测试方式:检查后台各个页面的列表样式和功能是否正常。
/cc @halo-dev/sig-halo-admin
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/milestone 2.0
#### What this PR does / why we need it:
菜单项支持绑定自定义页面。适配 https://github.com/halo-dev/halo/pull/2395
#### Which issue(s) this PR fixes:
#### Screenshots:
#### Special notes for your reviewer:
功能测试步骤:
1. 本地仓库 Checkout 到当前 PR。
2. Halo 后端需要 Checkout 到 https://github.com/halo-dev/halo/pull/2395/files PR。
3. 更新依赖:pnpm install
4. 构建依赖包:pnpm build:packages
5. 进入后台的自定义页面并新建页面。
6. 进入菜单管理,添加类型为自定义页面的菜单项。
7. 检查最终菜单项提供的显示名称和 permalink 是否正确。
8. 修改页面标题或者 slug,再检查最终菜单项的显示名称和 permalink 是否有自动修改。
/hold until https://github.com/halo-dev/halo-admin/pull/606 merge
#### Does this PR introduce a user-facing change?
```release-note
None
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind feature
/milestone 2.0
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind optimization
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
菜单项支持设置与文章、分类、标签的关联关系。关联之后,当被关联对象有所改变时,同步菜单项更新。适配:https://github.com/halo-dev/halo/pull/2380
> 自定义页面(pageRef)会等到 https://github.com/halo-dev/halo/pull/2381 合并之后再做适配。
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2295
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
#### Screenshots:
<img width="1389" alt="image" src="https://user-images.githubusercontent.com/21301288/188453129-26711a32-707f-4c45-a137-fa386beff6a3.png">
<img width="1389" alt="image" src="https://user-images.githubusercontent.com/21301288/188453143-4c32ae32-3910-49a1-9a1f-1ae51f596c99.png">
<!--
如果此 PR 有 UI 的改动,最好截图说明这个 PR 的改动。
If there are UI changes to this PR, it is best to take a screenshot to illustrate the changes to this PR.
eg.
Before:
![screenshot-before](https://user-images.githubusercontent.com/screenshot.png)
After:
![screenshot-after](https://user-images.githubusercontent.com/screenshot.png)
-->
#### Special notes for your reviewer:
/hold until https://github.com/halo-dev/halo/pull/2380 merge
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
None
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind improvement
/milestone 2.0
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind optimization
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
修改 api-client 的请求参数结构,改为所有参数由一个对象包裹,而不是将各个参数作为方法的参数,防止因为后端参数结构发生改变,或者生成 api-client 时参数顺序发生改变导致请求异常。如:
```diff
await apiClient.extension.storage.group.updatestorageHaloRunV1alpha1Group(
- formState.value.metadata.name,
- formState.value
+ {
+ name: formState.value.metadata.name,
+ group: formState.value,
+ }
);
```
#### Which issue(s) this PR fixes:
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
None
#### Screenshots:
<!--
如果此 PR 有 UI 的改动,最好截图说明这个 PR 的改动。
If there are UI changes to this PR, it is best to take a screenshot to illustrate the changes to this PR.
eg.
Before:
![screenshot-before](https://user-images.githubusercontent.com/screenshot.png)
After:
![screenshot-after](https://user-images.githubusercontent.com/screenshot.png)
-->
None
#### Special notes for your reviewer:
/cc @halo-dev/sig-halo-admin
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
None
```