From f98dff170d2c6e19f3db58026417c545eb188d67 Mon Sep 17 00:00:00 2001 From: Safwan Samsudeen Date: Thu, 8 Feb 2024 05:18:18 +0530 Subject: [PATCH 1/2] feat: initial changes for frappe search --- wiki/hooks.py | 16 ++++++--- wiki/public/js/render_wiki.js | 63 ++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/wiki/hooks.py b/wiki/hooks.py index 60545cde..3232723e 100644 --- a/wiki/hooks.py +++ b/wiki/hooks.py @@ -10,9 +10,9 @@ page_renderer = "wiki.wiki.doctype.wiki_page.wiki_renderer.WikiPageRenderer" website_route_rules = [ - {"from_route": "//edit-wiki", "to_route": "/edit"}, - {"from_route": "//new-wiki", "to_route": "/new"}, - {"from_route": "//revisions", "to_route": "/revisions"}, + {"from_route": "//edit-wiki", "to_route": "/edit"}, + {"from_route": "//new-wiki", "to_route": "/new"}, + {"from_route": "//revisions", "to_route": "/revisions"}, ] # Includes in @@ -109,7 +109,7 @@ # --------------- scheduler_events = { - "cron": {"*/15 * * * *": ["wiki.wiki.doctype.wiki_page.search.rebuild_index_in_background"]} + "cron": {"*/15 * * * *": ["wiki.wiki.doctype.wiki_page.search.rebuild_index_in_background"]} } # scheduler_events = { @@ -159,3 +159,11 @@ # exempt linked doctypes from being automatically cancelled # # auto_cancel_exempted_doctypes = ["Auto Repeat"] + +frappe_search_doctypes = { + "Wiki Page": { + "title": "title", + "content": ["content"], + "extras": ["route"], + }, +} diff --git a/wiki/public/js/render_wiki.js b/wiki/public/js/render_wiki.js index 900569a6..f5172ac0 100644 --- a/wiki/public/js/render_wiki.js +++ b/wiki/public/js/render_wiki.js @@ -126,8 +126,8 @@ window.RenderWiki = class RenderWiki extends Wiki { if ( !$( `.doc-sidebar .sidebar-group[data-title="${urlParams.get( - "newWiki", - )}"] .add-sidebar-page`, + "newWiki" + )}"] .add-sidebar-page` ).length ) { this.add_wiki_sidebar(urlParams.get("newWiki")); @@ -135,17 +135,17 @@ window.RenderWiki = class RenderWiki extends Wiki { $( $( `.sidebar-items > .list-unstyled .h6:contains(${urlParams.get( - "newWiki", - )}) + .add-sidebar-page`, - )[0], + "newWiki" + )}) + .add-sidebar-page` + )[0] ).trigger("click"); } else $( $( `.sidebar-items > .list-unstyled .h6:contains(${urlParams.get( - "newWiki", - )}) + .add-sidebar-page`, - )[1], + "newWiki" + )}) + .add-sidebar-page` + )[1] ).trigger("click"); } $(".wiki-footer, .wiki-page-meta").toggleClass("hide"); @@ -168,7 +168,7 @@ window.RenderWiki = class RenderWiki extends Wiki { { scrollTop: offset, }, - 500, + 500 ); }); }); @@ -257,7 +257,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $(".edit-wiki-btn, .sidebar-edit-mode-btn").on("click", function () { if (frappe.session.user === "Guest") window.location.assign( - `/login?redirect-to=${window.location.pathname}`, + `/login?redirect-to=${window.location.pathname}` ); else { const urlParams = new URLSearchParams(window.location.search); @@ -283,7 +283,7 @@ window.RenderWiki = class RenderWiki extends Wiki { const groupName = $(".sidebar-item.active").data("group-name"); $(".edit-wiki-btn").trigger("click"); $( - `.doc-sidebar .add-sidebar-page[data-group-name="${groupName}"]`, + `.doc-sidebar .add-sidebar-page[data-group-name="${groupName}"]` ).trigger("click"); }); @@ -308,7 +308,7 @@ window.RenderWiki = class RenderWiki extends Wiki { if (newWikiPage.data("group-name") !== groupName) { // when new item is created in a different group as earlier newSidebarItem.appendTo( - $(this).parent().parent().children(".list-unstyled"), + $(this).parent().parent().children(".list-unstyled") ); if (urlParams.get("newWiki") !== groupName) set_search_params("newWiki", groupName); @@ -325,11 +325,11 @@ window.RenderWiki = class RenderWiki extends Wiki { } else { // fresh new item active_items = $( - ".sidebar-item.active, .sidebar-item.active .active", + ".sidebar-item.active, .sidebar-item.active .active" ).removeClass("active"); newSidebarItem.appendTo( - $(this).parent().parent().children(".list-unstyled"), + $(this).parent().parent().children(".list-unstyled") ); if (!$(".wiki-editor").is(":visible")) toggleEditor(); if (urlParams.get("newWiki") !== groupName) @@ -338,7 +338,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $(this).parent().parent().each(setSortable); e.stopPropagation(); - }, + } ); } @@ -367,7 +367,7 @@ window.RenderWiki = class RenderWiki extends Wiki { title: __("Delete Wiki Page"), indicator: "red", message: __( - `Are you sure you want to delete the Wiki Page ${title}?`, + `Are you sure you want to delete the Wiki Page ${title}?` ), primary_action: { label: "Yes", @@ -393,7 +393,7 @@ window.RenderWiki = class RenderWiki extends Wiki { }, }, }); - }, + } ); } @@ -408,7 +408,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $(".revision-content").html(), $(".from-markdown .wiki-content") .html() - .replaceAll(/
/g, ""), + .replaceAll(/
/g, "") ); $(".previous-revision").removeClass("hide"); } else { @@ -450,11 +450,11 @@ window.RenderWiki = class RenderWiki extends Wiki { if (previousRevision.content) $(".revision-content")[0].innerHTML = HtmlDiff.execute( previousRevision.content, - currentRevision.content, + currentRevision.content ); else $(".revision-content")[0].innerHTML = currentRevision.content; $( - ".revision-time", + ".revision-time" )[0].innerHTML = `${currentRevision.author} edited ${currentRevision.revision_time}`; currentRevisionIndex++; addHljsClass(); @@ -472,10 +472,10 @@ window.RenderWiki = class RenderWiki extends Wiki { $(".previous-revision").removeClass("hide"); $(".revision-content")[0].innerHTML = HtmlDiff.execute( nextRevision.content, - currentRevision.content, + currentRevision.content ); $( - ".revision-time", + ".revision-time" )[0].innerHTML = `${currentRevision.author} edited ${currentRevision.revision_time}`; currentRevisionIndex--; addHljsClass(); @@ -505,7 +505,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $(".doc-sidebar .sidebar-items") .children(".list-unstyled") .not(".hidden") - .first(), + .first() ); $(".web-sidebar ul").each(setSortable); @@ -537,7 +537,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $(this) .parent() .append( - $(`
    { - let results = res.message.docs || []; + let results = res.message.results || []; let dropdown_html; if (results.length === 0) { dropdown_html = `
    No results found
    `; } else { + console.log(results); dropdown_html = results .map((r) => { - return ` -
    ${r.title}
    + return `
    +
    ${r.highlighted_title || r.title}
    ${ res.message.search_engine === "frappe_web_search" ? r.content - : trimContent(r.content) + : trimContent(r.highlighted_content || r.content) }
    `; @@ -630,7 +631,7 @@ window.RenderWiki = class RenderWiki extends Wiki { $dropdown_menu.addClass("show"); dropdownItems = $dropdown_menu.find(".dropdown-item"); }); - }, 500), + }, 500) ); $("#dropdownMenuSearch, .mobile-search-icon").on("click", () => { From 9fadf9b24fcd634bd4876bcfb58ba53facb382b1 Mon Sep 17 00:00:00 2001 From: Safwan Samsudeen Date: Sun, 11 Feb 2024 14:08:21 +0530 Subject: [PATCH 2/2] fix: update to new names --- wiki/hooks.py | 8 ++++++++ wiki/public/js/render_wiki.js | 5 ++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/wiki/hooks.py b/wiki/hooks.py index 3232723e..c13ebfb6 100644 --- a/wiki/hooks.py +++ b/wiki/hooks.py @@ -167,3 +167,11 @@ "extras": ["route"], }, } + +frappe_search_doctypes = { + "Wiki Page": { + "title": "title", + "content": ["content"], + "fields": ["route"], + }, +} diff --git a/wiki/public/js/render_wiki.js b/wiki/public/js/render_wiki.js index f5172ac0..d0ff9239 100644 --- a/wiki/public/js/render_wiki.js +++ b/wiki/public/js/render_wiki.js @@ -599,7 +599,7 @@ window.RenderWiki = class RenderWiki extends Wiki { frappe .call({ - method: "frappe_search.core.search", + method: "frappe_search.api.search", args: { query: searchInput.val(), path: window.location.pathname, @@ -612,10 +612,9 @@ window.RenderWiki = class RenderWiki extends Wiki { if (results.length === 0) { dropdown_html = `
    No results found
    `; } else { - console.log(results); dropdown_html = results .map((r) => { - return ` + return `
    ${r.highlighted_title || r.title}
    ${ res.message.search_engine === "frappe_web_search"