From f61757318d2faef51f467697c0dcb9cabddd557d Mon Sep 17 00:00:00 2001
From: Tim <135014430+nagisa77@users.noreply.github.com>
Date: Thu, 10 Jul 2025 13:21:26 +0800
Subject: [PATCH] Add ArticleCategory component and update tag/category links
---
.../src/components/ArticleCategory.vue | 58 +++++++++++++++++++
open-isle-cli/src/components/ArticleTags.vue | 12 ++++
open-isle-cli/src/views/HomePageView.vue | 12 +++-
open-isle-cli/src/views/PostPageView.vue | 5 +-
4 files changed, 82 insertions(+), 5 deletions(-)
create mode 100644 open-isle-cli/src/components/ArticleCategory.vue
diff --git a/open-isle-cli/src/components/ArticleCategory.vue b/open-isle-cli/src/components/ArticleCategory.vue
new file mode 100644
index 000000000..af1b55ac1
--- /dev/null
+++ b/open-isle-cli/src/components/ArticleCategory.vue
@@ -0,0 +1,58 @@
+
+
+
+
![]()
+
{{ category.name }}
+
+
+
+
+
+
+
diff --git a/open-isle-cli/src/components/ArticleTags.vue b/open-isle-cli/src/components/ArticleTags.vue
index 14a802347..9677783e1 100644
--- a/open-isle-cli/src/components/ArticleTags.vue
+++ b/open-isle-cli/src/components/ArticleTags.vue
@@ -4,6 +4,7 @@
class="article-info-item"
v-for="tag in tags"
:key="tag.id || tag.name"
+ @click="gotoTag(tag)"
>
@@ -43,6 +54,7 @@ export default {
padding: 2px 4px;
background-color: var(--article-info-background-color);
border-radius: 4px;
+ cursor: pointer;
}
.article-info-item-img {
diff --git a/open-isle-cli/src/views/HomePageView.vue b/open-isle-cli/src/views/HomePageView.vue
index c5d2ad1e0..462462668 100644
--- a/open-isle-cli/src/views/HomePageView.vue
+++ b/open-isle-cli/src/views/HomePageView.vue
@@ -60,7 +60,7 @@
{{ sanitizeDescription(article.description) }}
@@ -104,6 +104,7 @@ import TimeManager from '../utils/time'
import CategorySelect from '../components/CategorySelect.vue'
import TagSelect from '../components/TagSelect.vue'
import ArticleTags from '../components/ArticleTags.vue'
+import ArticleCategory from '../components/ArticleCategory.vue'
import SearchDropdown from '../components/SearchDropdown.vue'
import { hatch } from 'ldrs'
hatch.register()
@@ -115,15 +116,20 @@ export default {
CategorySelect,
TagSelect,
ArticleTags,
+ ArticleCategory,
SearchDropdown
},
setup() {
const route = useRoute()
- const selectedCategory = ref(route.query.category || '')
+ const selectedCategory = ref(route.query.category ? decodeURIComponent(route.query.category) : '')
const selectedTags = ref([])
if (route.query.tags) {
const t = Array.isArray(route.query.tags) ? route.query.tags.join(',') : route.query.tags
- selectedTags.value = t.split(',').filter(v => v).map(v => isNaN(v) ? v : Number(v))
+ selectedTags.value = t
+ .split(',')
+ .filter(v => v)
+ .map(v => decodeURIComponent(v))
+ .map(v => (isNaN(v) ? v : Number(v)))
}
const isLoadingPosts = ref(false)
const topics = ref(['最新', '排行榜' /*, '热门', '类别'*/])
diff --git a/open-isle-cli/src/views/PostPageView.vue b/open-isle-cli/src/views/PostPageView.vue
index 683da5662..6205f80de 100644
--- a/open-isle-cli/src/views/PostPageView.vue
+++ b/open-isle-cli/src/views/PostPageView.vue
@@ -7,7 +7,7 @@
@@ -78,6 +78,7 @@ import CommentItem from '../components/CommentItem.vue'
import CommentEditor from '../components/CommentEditor.vue'
import BaseTimeline from '../components/BaseTimeline.vue'
import ArticleTags from '../components/ArticleTags.vue'
+import ArticleCategory from '../components/ArticleCategory.vue'
import ReactionsGroup from '../components/ReactionsGroup.vue'
import { renderMarkdown } from '../utils/markdown'
import { API_BASE_URL, toast } from '../main'
@@ -89,7 +90,7 @@ hatch.register()
export default {
name: 'PostPageView',
- components: { CommentItem, CommentEditor, BaseTimeline, ArticleTags, ReactionsGroup },
+ components: { CommentItem, CommentEditor, BaseTimeline, ArticleTags, ArticleCategory, ReactionsGroup },
setup() {
const route = useRoute()
const postId = route.params.id