From 0c11526b8c66899e06e5a033ddd2da5df60e3657 Mon Sep 17 00:00:00 2001 From: RitvikSardana Date: Tue, 14 Jan 2025 14:41:51 +0530 Subject: [PATCH 001/106] fix(styles): canned responses preview --- desk/src/index.css | 35 ------------------------------ desk/src/pages/CannedResponses.vue | 12 +++++++--- 2 files changed, 9 insertions(+), 38 deletions(-) diff --git a/desk/src/index.css b/desk/src/index.css index f033b3322..d224f2af1 100644 --- a/desk/src/index.css +++ b/desk/src/index.css @@ -1,38 +1,3 @@ @import "./assets/Inter/inter.css"; @import "frappe-ui/src/style.css"; -@layer components { - .prose-f { - @apply - break-normal - max-w-none - prose - prose-code:break-all - prose-code:whitespace-pre-wrap - prose-img:border - prose-img:rounded-lg - prose-sm - prose-table:table-fixed - prose-td:border - prose-td:border-gray-300 - prose-td:p-2 - prose-td:relative - prose-th:bg-gray-100 - prose-th:border - prose-th:border-gray-300 - prose-th:p-2 - prose-th:relative - } - - .popover { - @apply - bg-white - mt-2 - p-1 - ring-1 - ring-black - ring-opacity-5 - rounded-lg - shadow-2xl - } -} diff --git a/desk/src/pages/CannedResponses.vue b/desk/src/pages/CannedResponses.vue index 2f7aebf1e..15b940fe2 100644 --- a/desk/src/pages/CannedResponses.vue +++ b/desk/src/pages/CannedResponses.vue @@ -31,7 +31,7 @@
@@ -59,8 +59,8 @@ v-if="cannedResponse.message" :content="cannedResponse.message" :editable="false" - editor-class="!prose-sm max-w-none !text-sm text-gray-600 focus:outline-none" - class="flex-1 overflow-hidden" + editor-class="prose-sm" + class="flex-1 overflow-hidden response-preview" />
@@ -167,3 +167,9 @@ usePageMeta(() => { }; }); + + From 6ed9a7523adb672d2312c96c2dab5ad920d54ed6 Mon Sep 17 00:00:00 2001 From: RitvikSardana <65544983+RitvikSardana@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:34:47 +0530 Subject: [PATCH 002/106] fix: bring back prose-f class --- desk/src/index.css | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/desk/src/index.css b/desk/src/index.css index d224f2af1..6fcb2fd6f 100644 --- a/desk/src/index.css +++ b/desk/src/index.css @@ -1,3 +1,26 @@ @import "./assets/Inter/inter.css"; @import "frappe-ui/src/style.css"; +@layer components { + .prose-f { + @apply + break-normal + max-w-none + prose + prose-code:break-all + prose-code:whitespace-pre-wrap + prose-img:border + prose-img:rounded-lg + prose-sm + prose-table:table-fixed + prose-td:border + prose-td:border-gray-300 + prose-td:p-2 + prose-td:relative + prose-th:bg-gray-100 + prose-th:border + prose-th:border-gray-300 + prose-th:p-2 + prose-th:relative + } +} From 4d0e2d026c8287fc068b2d73823b3f647fad0db1 Mon Sep 17 00:00:00 2001 From: RitvikSardana Date: Tue, 31 Dec 2024 12:32:27 +0530 Subject: [PATCH 003/106] refactor: knowledge base --- .gitignore | 1 + .../knowledge-base-v2/ArticleCard.vue | 2 +- .../KnowledgeBaseSidebar.vue | 22 ++++----------- desk/src/composables/columns.ts | 28 ------------------- .../pages/knowledge-base/KnowledgeBase.vue | 19 +++++++++---- desk/src/utils.ts | 4 +++ helpdesk/api/kbase.py | 9 ++---- 7 files changed, 29 insertions(+), 56 deletions(-) delete mode 100644 desk/src/composables/columns.ts diff --git a/.gitignore b/.gitignore index 5ddfafbda..5e52f71c0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ __pycache__/ *.log tags node_modules +.vscode # Distribution / packaging .Python diff --git a/desk/src/components/knowledge-base-v2/ArticleCard.vue b/desk/src/components/knowledge-base-v2/ArticleCard.vue index ea7c97e39..51e2e5317 100644 --- a/desk/src/components/knowledge-base-v2/ArticleCard.vue +++ b/desk/src/components/knowledge-base-v2/ArticleCard.vue @@ -7,7 +7,7 @@
-
+
{{ article.title }}
diff --git a/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue b/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue index f65a7a3f9..ec7439570 100644 --- a/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue +++ b/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue @@ -7,21 +7,11 @@ }" >
-
Categories
-
- - +
+

Categories

+

as

@@ -29,7 +19,7 @@ - - diff --git a/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue b/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue deleted file mode 100644 index ec7439570..000000000 --- a/desk/src/components/knowledge-base-v2/KnowledgeBaseSidebar.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/desk/src/components/knowledge-base-v2/ArticleCard.vue b/desk/src/components/knowledge-base/ArticleCard.vue similarity index 100% rename from desk/src/components/knowledge-base-v2/ArticleCard.vue rename to desk/src/components/knowledge-base/ArticleCard.vue diff --git a/desk/src/components/layouts/layoutSettings.ts b/desk/src/components/layouts/layoutSettings.ts index fa831de67..ded979d81 100644 --- a/desk/src/components/layouts/layoutSettings.ts +++ b/desk/src/components/layouts/layoutSettings.ts @@ -11,6 +11,7 @@ import { AGENT_PORTAL_CUSTOMER_LIST, AGENT_PORTAL_TEAM_LIST, AGENT_PORTAL_TICKET_LIST, + AGENT_PORTAL_KNOWLEDGE_BASE, } from "@/router"; export const agentPortalSidebarOptions = [ @@ -27,7 +28,7 @@ export const agentPortalSidebarOptions = [ { label: "Knowledge base", icon: LucideBookOpen, - to: "DeskKBHome", + to: AGENT_PORTAL_KNOWLEDGE_BASE, }, { label: "Teams", @@ -60,6 +61,6 @@ export const customerPortalSidebarOptions = [ { label: "Knowledge base", icon: LucideBookOpen, - to: "KnowledgeBasePublicNew", + to: AGENT_PORTAL_KNOWLEDGE_BASE, }, ]; diff --git a/desk/src/pages/knowledge-base-v2/KnowledgeBasePublic.vue b/desk/src/pages/knowledge-base-v2/KnowledgeBasePublic.vue deleted file mode 100644 index 9c02b4415..000000000 --- a/desk/src/pages/knowledge-base-v2/KnowledgeBasePublic.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBase.vue b/desk/src/pages/knowledge-base/KnowledgeBase.vue index fb589eb21..c2240d776 100644 --- a/desk/src/pages/knowledge-base/KnowledgeBase.vue +++ b/desk/src/pages/knowledge-base/KnowledgeBase.vue @@ -5,30 +5,20 @@
Knowledge base
-
- -
+
diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsNew.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsNew.vue deleted file mode 100644 index bca4b3dbe..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsNew.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsView.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsView.vue deleted file mode 100644 index 7d8f8b78c..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleActionsView.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopEdit.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopEdit.vue deleted file mode 100644 index 50baa61d5..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopEdit.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopNew.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopNew.vue deleted file mode 100644 index 7f81167af..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopNew.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopPublic.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopPublic.vue deleted file mode 100644 index 4f6adc018..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopPublic.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopView.vue b/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopView.vue deleted file mode 100644 index 3e32847b8..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseArticleTopView.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseCategory.vue b/desk/src/pages/knowledge-base/KnowledgeBaseCategory.vue deleted file mode 100644 index 025a2140c..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseCategory.vue +++ /dev/null @@ -1,225 +0,0 @@ - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseCategoryHeader.vue b/desk/src/pages/knowledge-base/KnowledgeBaseCategoryHeader.vue deleted file mode 100644 index 870892f78..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseCategoryHeader.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseCategoryNew.vue b/desk/src/pages/knowledge-base/KnowledgeBaseCategoryNew.vue deleted file mode 100644 index 8ca8bcb67..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseCategoryNew.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseIconSelector.vue b/desk/src/pages/knowledge-base/KnowledgeBaseIconSelector.vue deleted file mode 100644 index f6e354d02..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseIconSelector.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseSidebar.vue b/desk/src/pages/knowledge-base/KnowledgeBaseSidebar.vue deleted file mode 100644 index 7875fd72c..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseSidebar.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - diff --git a/desk/src/pages/knowledge-base/KnowledgeBaseSubcategory.vue b/desk/src/pages/knowledge-base/KnowledgeBaseSubcategory.vue deleted file mode 100644 index 34f900972..000000000 --- a/desk/src/pages/knowledge-base/KnowledgeBaseSubcategory.vue +++ /dev/null @@ -1,177 +0,0 @@ - - diff --git a/desk/src/router/index.ts b/desk/src/router/index.ts index ce0eb1e87..a1757f37c 100644 --- a/desk/src/router/index.ts +++ b/desk/src/router/index.ts @@ -21,7 +21,6 @@ export const AGENT_PORTAL_KNOWLEDGE_BASE_CATEGORY = "DeskKBCategory"; export const AGENT_PORTAL_KNOWLEDGE_BASE_SUB_CATEGORY = "DeskKBSubcategory"; export const AGENT_PORTAL_KNOWLEDGE_BASE_ARTICLE = "DeskKBArticle"; -export const KB_PUBLIC = "KBHome"; export const KB_PUBLIC_ARTICLE = "KBArticlePublic"; export const KB_PUBLIC_CATEGORY = "KBCategoryPublic"; @@ -90,23 +89,9 @@ const routes = [ }, ], }, - // handle knowledge base routing { - path: "knowledge-base-public", - children: [ - { - path: "", - name: "KnowledgeBasePublicNew", - component: () => - import("@/pages/knowledge-base-v2/KnowledgeBasePublic.vue"), - }, - { - path: "articles/:articleId?", - name: "KBArticlePublicNew", - component: () => import("@/pages/KnowledgeBaseArticle.vue"), - props: true, - }, - ], + path: "kb", + name: AGENT_PORTAL_KNOWLEDGE_BASE, }, ], }, @@ -152,28 +137,6 @@ const routes = [ path: "kb", name: AGENT_PORTAL_KNOWLEDGE_BASE, component: () => import("@/pages/knowledge-base/KnowledgeBase.vue"), - children: [ - { - path: ":categoryId", - name: AGENT_PORTAL_KNOWLEDGE_BASE_CATEGORY, - props: true, - component: () => - import("@/pages/knowledge-base/KnowledgeBaseCategory.vue"), - }, - { - path: ":categoryId/:subCategoryId", - name: AGENT_PORTAL_KNOWLEDGE_BASE_SUB_CATEGORY, - props: true, - component: () => - import("@/pages/knowledge-base/KnowledgeBaseSubcategory.vue"), - }, - ], - }, - { - path: "kb/articles/:articleId", - name: AGENT_PORTAL_KNOWLEDGE_BASE_ARTICLE, - props: true, - component: () => import("@/pages/KnowledgeBaseArticle.vue"), }, { path: "customers", From 5fa49e7ab99024b857eb32cea260156a0abdea10 Mon Sep 17 00:00:00 2001 From: RitvikSardana Date: Wed, 1 Jan 2025 01:45:14 +0530 Subject: [PATCH 005/106] chore: article category cleanup --- .../hd_article_category.py | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/helpdesk/helpdesk/doctype/hd_article_category/hd_article_category.py b/helpdesk/helpdesk/doctype/hd_article_category/hd_article_category.py index f24f8f4ce..dfdd166e6 100644 --- a/helpdesk/helpdesk/doctype/hd_article_category/hd_article_category.py +++ b/helpdesk/helpdesk/doctype/hd_article_category/hd_article_category.py @@ -19,24 +19,3 @@ def before_save(self): "HD Article Category", {"parent_category": self.parent_category} ) ) - - def archive(self): - self.idx = -1 - self.status = "Archived" - self.save() - - def unarchive(self): - self.status = "Published" - self.save() - - def get_breadcrumbs(self): - breadcrumbs = [{"name": self.name, "label": self.category_name}] - current_category = self - while current_category.parent_category: - current_category = frappe.get_doc( - "HD Article Category", current_category.parent_category - ) - breadcrumbs.append( - {"name": current_category.name, "label": current_category.category_name} - ) - return breadcrumbs[::-1] From b05ca7db8de73fae34c209151b3c59a2a6448e80 Mon Sep 17 00:00:00 2001 From: RitvikSardana Date: Wed, 1 Jan 2025 20:23:32 +0530 Subject: [PATCH 006/106] fix: common variable for text editor options --- desk/src/components/CommentTextEditor.vue | 39 +------------------- desk/src/components/EmailEditor.vue | 40 +-------------------- desk/src/pages/KnowledgeBaseArticle.vue | 44 +++-------------------- desk/src/utils.ts | 38 ++++++++++++++++++++ 4 files changed, 44 insertions(+), 117 deletions(-) diff --git a/desk/src/components/CommentTextEditor.vue b/desk/src/components/CommentTextEditor.vue index aef0a6583..57979441f 100644 --- a/desk/src/components/CommentTextEditor.vue +++ b/desk/src/components/CommentTextEditor.vue @@ -104,6 +104,7 @@ import { AttachmentItem } from "@/components/"; import { useAgentStore } from "@/stores/agent"; import { useStorage } from "@vueuse/core"; import { PreserveVideoControls } from "@/tiptap-extensions"; +import { textEditorMenuButtons } from "@/utils"; const { agents: agentsList } = useAgentStore(); @@ -163,42 +164,4 @@ async function submitComment() { comment.submit(); } - -const textEditorMenuButtons = [ - "Paragraph", - ["Heading 2", "Heading 3", "Heading 4", "Heading 5", "Heading 6"], - "Separator", - "Bold", - "Italic", - "Separator", - "Bullet List", - "Numbered List", - "Separator", - "Align Left", - "Align Center", - "Align Right", - "FontColor", - "Separator", - "Image", - "Video", - "Link", - "Blockquote", - "Code", - "Horizontal Rule", - [ - "InsertTable", - "AddColumnBefore", - "AddColumnAfter", - "DeleteColumn", - "AddRowBefore", - "AddRowAfter", - "DeleteRow", - "MergeCells", - "SplitCell", - "ToggleHeaderColumn", - "ToggleHeaderRow", - "ToggleHeaderCell", - "DeleteTable", - ], -]; diff --git a/desk/src/components/EmailEditor.vue b/desk/src/components/EmailEditor.vue index 184729346..a672eda80 100644 --- a/desk/src/components/EmailEditor.vue +++ b/desk/src/components/EmailEditor.vue @@ -157,7 +157,7 @@ import { TextEditorFixedMenu, createResource, } from "frappe-ui"; -import { createToast, validateEmail } from "@/utils"; +import { createToast, validateEmail, textEditorMenuButtons } from "@/utils"; import { MultiSelectInput, AttachmentItem, @@ -298,44 +298,6 @@ function addToReply( .run(); } -const textEditorMenuButtons = [ - "Paragraph", - ["Heading 2", "Heading 3", "Heading 4", "Heading 5", "Heading 6"], - "Separator", - "Bold", - "Italic", - "Separator", - "Bullet List", - "Numbered List", - "Separator", - "Align Left", - "Align Center", - "Align Right", - "FontColor", - "Separator", - "Image", - "Video", - "Link", - "Blockquote", - "Code", - "Horizontal Rule", - [ - "InsertTable", - "AddColumnBefore", - "AddColumnAfter", - "DeleteColumn", - "AddRowBefore", - "AddRowAfter", - "DeleteRow", - "MergeCells", - "SplitCell", - "ToggleHeaderColumn", - "ToggleHeaderRow", - "ToggleHeaderCell", - "DeleteTable", - ], -]; - const editor = computed(() => { return editorRef.value.editor; }); diff --git a/desk/src/pages/KnowledgeBaseArticle.vue b/desk/src/pages/KnowledgeBaseArticle.vue index 5b808bef4..2bf1bc12d 100644 --- a/desk/src/pages/KnowledgeBaseArticle.vue +++ b/desk/src/pages/KnowledgeBaseArticle.vue @@ -110,7 +110,7 @@ import { AGENT_PORTAL_KNOWLEDGE_BASE_SUB_CATEGORY, CUSTOMER_PORTAL_NEW_TICKET, } from "@/router"; -import { createToast } from "@/utils"; +import { createToast, textEditorMenuButtons } from "@/utils"; import { useAuthStore } from "@/stores/auth"; import { useError } from "@/composables/error"; import { LayoutHeader } from "@/components"; @@ -353,7 +353,9 @@ const insertRes = createResource({ }, }); }, - onError: useError({ title: "Error creating article" }), + onError(err){ + useError(err);, + } }); const setValueRes = createResource({ @@ -411,44 +413,6 @@ const backTo = computed(() => ({ }, })); -const textEditorMenuButtons = [ - "Paragraph", - ["Heading 2", "Heading 3", "Heading 4", "Heading 5", "Heading 6"], - "Separator", - "Bold", - "Italic", - "Separator", - "Bullet List", - "Numbered List", - "Separator", - "Align Left", - "Align Center", - "Align Right", - "FontColor", - "Separator", - "Image", - "Video", - "Link", - "Blockquote", - "Code", - "Horizontal Rule", - [ - "InsertTable", - "AddColumnBefore", - "AddColumnAfter", - "DeleteColumn", - "AddRowBefore", - "AddRowAfter", - "DeleteRow", - "MergeCells", - "SplitCell", - "ToggleHeaderColumn", - "ToggleHeaderRow", - "ToggleHeaderCell", - "DeleteTable", - ], -]; - const textEditorContentWithIDs = computed(() => article.data?.content ? addLinksToHeadings(article.data?.content) : null ); diff --git a/desk/src/utils.ts b/desk/src/utils.ts index a367fb05d..9560501ab 100644 --- a/desk/src/utils.ts +++ b/desk/src/utils.ts @@ -120,3 +120,41 @@ export function setupCustomActions(data, obj) { export const isCustomerPortal = (route: RouteLocation) => route.meta.public ?? false; + +export const textEditorMenuButtons = [ + "Paragraph", + ["Heading 2", "Heading 3", "Heading 4", "Heading 5", "Heading 6"], + "Separator", + "Bold", + "Italic", + "Separator", + "Bullet List", + "Numbered List", + "Separator", + "Align Left", + "Align Center", + "Align Right", + "FontColor", + "Separator", + "Image", + "Video", + "Link", + "Blockquote", + "Code", + "Horizontal Rule", + [ + "InsertTable", + "AddColumnBefore", + "AddColumnAfter", + "DeleteColumn", + "AddRowBefore", + "AddRowAfter", + "DeleteRow", + "MergeCells", + "SplitCell", + "ToggleHeaderColumn", + "ToggleHeaderRow", + "ToggleHeaderCell", + "DeleteTable", + ], +]; From b773be076b0cc2efeaf8d4b43c91ca0fa388e09d Mon Sep 17 00:00:00 2001 From: RitvikSardana Date: Wed, 1 Jan 2025 20:24:15 +0530 Subject: [PATCH 007/106] fix: change KB router name --- desk/src/components/command-palette/CP.vue | 2 +- desk/src/components/layouts/layoutSettings.ts | 2 +- .../pages/knowledge-base/KnowledgeBase.vue | 6 +- desk/src/pages/knowledge-base/NewArticle.vue | 131 ++++++++++++++++++ desk/src/router/index.ts | 19 ++- 5 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 desk/src/pages/knowledge-base/NewArticle.vue diff --git a/desk/src/components/command-palette/CP.vue b/desk/src/components/command-palette/CP.vue index effe071b4..daff52ca8 100644 --- a/desk/src/components/command-palette/CP.vue +++ b/desk/src/components/command-palette/CP.vue @@ -165,7 +165,7 @@ export default { { title: "Knowledge Base", icon: () => h(LucideBookOpen), - route: { name: "DeskKBHome" }, + route: { name: "AgentKnowledgeBase" }, condition: () => true, }, ].filter((item) => (item.condition ? item.condition() : true)), diff --git a/desk/src/components/layouts/layoutSettings.ts b/desk/src/components/layouts/layoutSettings.ts index ded979d81..a0088f9b0 100644 --- a/desk/src/components/layouts/layoutSettings.ts +++ b/desk/src/components/layouts/layoutSettings.ts @@ -28,7 +28,7 @@ export const agentPortalSidebarOptions = [ { label: "Knowledge base", icon: LucideBookOpen, - to: AGENT_PORTAL_KNOWLEDGE_BASE, + to: "AgentKnowledgeBase", }, { label: "Teams", diff --git a/desk/src/pages/knowledge-base/KnowledgeBase.vue b/desk/src/pages/knowledge-base/KnowledgeBase.vue index c2240d776..a20225080 100644 --- a/desk/src/pages/knowledge-base/KnowledgeBase.vue +++ b/desk/src/pages/knowledge-base/KnowledgeBase.vue @@ -5,7 +5,11 @@
Knowledge base