Skip to content

Commit f98dff1

Browse files
feat: initial changes for frappe search
1 parent 3899e78 commit f98dff1

File tree

2 files changed

+44
-35
lines changed

2 files changed

+44
-35
lines changed

wiki/hooks.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
page_renderer = "wiki.wiki.doctype.wiki_page.wiki_renderer.WikiPageRenderer"
1111

1212
website_route_rules = [
13-
{"from_route": "/<path:wiki_page>/edit-wiki", "to_route": "/edit"},
14-
{"from_route": "/<path:wiki_page>/new-wiki", "to_route": "/new"},
15-
{"from_route": "/<path:wiki_page>/revisions", "to_route": "/revisions"},
13+
{"from_route": "/<path:wiki_page>/edit-wiki", "to_route": "/edit"},
14+
{"from_route": "/<path:wiki_page>/new-wiki", "to_route": "/new"},
15+
{"from_route": "/<path:wiki_page>/revisions", "to_route": "/revisions"},
1616
]
1717

1818
# Includes in <head>
@@ -109,7 +109,7 @@
109109
# ---------------
110110

111111
scheduler_events = {
112-
"cron": {"*/15 * * * *": ["wiki.wiki.doctype.wiki_page.search.rebuild_index_in_background"]}
112+
"cron": {"*/15 * * * *": ["wiki.wiki.doctype.wiki_page.search.rebuild_index_in_background"]}
113113
}
114114

115115
# scheduler_events = {
@@ -159,3 +159,11 @@
159159
# exempt linked doctypes from being automatically cancelled
160160
#
161161
# auto_cancel_exempted_doctypes = ["Auto Repeat"]
162+
163+
frappe_search_doctypes = {
164+
"Wiki Page": {
165+
"title": "title",
166+
"content": ["content"],
167+
"extras": ["route"],
168+
},
169+
}

wiki/public/js/render_wiki.js

+32-31
Original file line numberDiff line numberDiff line change
@@ -126,26 +126,26 @@ window.RenderWiki = class RenderWiki extends Wiki {
126126
if (
127127
!$(
128128
`.doc-sidebar .sidebar-group[data-title="${urlParams.get(
129-
"newWiki",
130-
)}"] .add-sidebar-page`,
129+
"newWiki"
130+
)}"] .add-sidebar-page`
131131
).length
132132
) {
133133
this.add_wiki_sidebar(urlParams.get("newWiki"));
134134

135135
$(
136136
$(
137137
`.sidebar-items > .list-unstyled .h6:contains(${urlParams.get(
138-
"newWiki",
139-
)}) + .add-sidebar-page`,
140-
)[0],
138+
"newWiki"
139+
)}) + .add-sidebar-page`
140+
)[0]
141141
).trigger("click");
142142
} else
143143
$(
144144
$(
145145
`.sidebar-items > .list-unstyled .h6:contains(${urlParams.get(
146-
"newWiki",
147-
)}) + .add-sidebar-page`,
148-
)[1],
146+
"newWiki"
147+
)}) + .add-sidebar-page`
148+
)[1]
149149
).trigger("click");
150150
}
151151
$(".wiki-footer, .wiki-page-meta").toggleClass("hide");
@@ -168,7 +168,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
168168
{
169169
scrollTop: offset,
170170
},
171-
500,
171+
500
172172
);
173173
});
174174
});
@@ -257,7 +257,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
257257
$(".edit-wiki-btn, .sidebar-edit-mode-btn").on("click", function () {
258258
if (frappe.session.user === "Guest")
259259
window.location.assign(
260-
`/login?redirect-to=${window.location.pathname}`,
260+
`/login?redirect-to=${window.location.pathname}`
261261
);
262262
else {
263263
const urlParams = new URLSearchParams(window.location.search);
@@ -283,7 +283,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
283283
const groupName = $(".sidebar-item.active").data("group-name");
284284
$(".edit-wiki-btn").trigger("click");
285285
$(
286-
`.doc-sidebar .add-sidebar-page[data-group-name="${groupName}"]`,
286+
`.doc-sidebar .add-sidebar-page[data-group-name="${groupName}"]`
287287
).trigger("click");
288288
});
289289

@@ -308,7 +308,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
308308
if (newWikiPage.data("group-name") !== groupName) {
309309
// when new item is created in a different group as earlier
310310
newSidebarItem.appendTo(
311-
$(this).parent().parent().children(".list-unstyled"),
311+
$(this).parent().parent().children(".list-unstyled")
312312
);
313313
if (urlParams.get("newWiki") !== groupName)
314314
set_search_params("newWiki", groupName);
@@ -325,11 +325,11 @@ window.RenderWiki = class RenderWiki extends Wiki {
325325
} else {
326326
// fresh new item
327327
active_items = $(
328-
".sidebar-item.active, .sidebar-item.active .active",
328+
".sidebar-item.active, .sidebar-item.active .active"
329329
).removeClass("active");
330330

331331
newSidebarItem.appendTo(
332-
$(this).parent().parent().children(".list-unstyled"),
332+
$(this).parent().parent().children(".list-unstyled")
333333
);
334334
if (!$(".wiki-editor").is(":visible")) toggleEditor();
335335
if (urlParams.get("newWiki") !== groupName)
@@ -338,7 +338,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
338338

339339
$(this).parent().parent().each(setSortable);
340340
e.stopPropagation();
341-
},
341+
}
342342
);
343343
}
344344

@@ -367,7 +367,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
367367
title: __("Delete Wiki Page"),
368368
indicator: "red",
369369
message: __(
370-
`Are you sure you want to <b>delete</b> the Wiki Page <b>${title}</b>?`,
370+
`Are you sure you want to <b>delete</b> the Wiki Page <b>${title}</b>?`
371371
),
372372
primary_action: {
373373
label: "Yes",
@@ -393,7 +393,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
393393
},
394394
},
395395
});
396-
},
396+
}
397397
);
398398
}
399399

@@ -408,7 +408,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
408408
$(".revision-content").html(),
409409
$(".from-markdown .wiki-content")
410410
.html()
411-
.replaceAll(/<br class="ProseMirror-trailingBreak">/g, ""),
411+
.replaceAll(/<br class="ProseMirror-trailingBreak">/g, "")
412412
);
413413
$(".previous-revision").removeClass("hide");
414414
} else {
@@ -450,11 +450,11 @@ window.RenderWiki = class RenderWiki extends Wiki {
450450
if (previousRevision.content)
451451
$(".revision-content")[0].innerHTML = HtmlDiff.execute(
452452
previousRevision.content,
453-
currentRevision.content,
453+
currentRevision.content
454454
);
455455
else $(".revision-content")[0].innerHTML = currentRevision.content;
456456
$(
457-
".revision-time",
457+
".revision-time"
458458
)[0].innerHTML = `${currentRevision.author} edited ${currentRevision.revision_time}`;
459459
currentRevisionIndex++;
460460
addHljsClass();
@@ -472,10 +472,10 @@ window.RenderWiki = class RenderWiki extends Wiki {
472472
$(".previous-revision").removeClass("hide");
473473
$(".revision-content")[0].innerHTML = HtmlDiff.execute(
474474
nextRevision.content,
475-
currentRevision.content,
475+
currentRevision.content
476476
);
477477
$(
478-
".revision-time",
478+
".revision-time"
479479
)[0].innerHTML = `${currentRevision.author} edited ${currentRevision.revision_time}`;
480480
currentRevisionIndex--;
481481
addHljsClass();
@@ -505,7 +505,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
505505
$(".doc-sidebar .sidebar-items")
506506
.children(".list-unstyled")
507507
.not(".hidden")
508-
.first(),
508+
.first()
509509
);
510510

511511
$(".web-sidebar ul").each(setSortable);
@@ -537,7 +537,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
537537
$(this)
538538
.parent()
539539
.append(
540-
$(`<ul class="list-unstyled" style="min-height:20px;"> </ul`),
540+
$(`<ul class="list-unstyled" style="min-height:20px;"> </ul`)
541541
);
542542
}
543543
});
@@ -568,7 +568,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
568568
// fixes html tags when they are sliced
569569
return new DOMParser().parseFromString(
570570
content.slice(start, end),
571-
"text/html",
571+
"text/html"
572572
).body.innerHTML;
573573
}
574574

@@ -599,27 +599,28 @@ window.RenderWiki = class RenderWiki extends Wiki {
599599

600600
frappe
601601
.call({
602-
method: "wiki.wiki.doctype.wiki_page.search.search",
602+
method: "frappe_search.core.search",
603603
args: {
604604
query: searchInput.val(),
605605
path: window.location.pathname,
606606
space: search_scope,
607607
},
608608
})
609609
.then((res) => {
610-
let results = res.message.docs || [];
610+
let results = res.message.results || [];
611611
let dropdown_html;
612612
if (results.length === 0) {
613613
dropdown_html = `<div style="margin: 1.5rem 9rem;">No results found</div>`;
614614
} else {
615+
console.log(results);
615616
dropdown_html = results
616617
.map((r) => {
617-
return `<a class="dropdown-item" href="/${r.route}">
618-
<h6>${r.title}</h6>
618+
return `<a class="dropdown-item" href="/${r.extras.route}">
619+
<h6>${r.highlighted_title || r.title}</h6>
619620
<div>${
620621
res.message.search_engine === "frappe_web_search"
621622
? r.content
622-
: trimContent(r.content)
623+
: trimContent(r.highlighted_content || r.content)
623624
}</div>
624625
</a>
625626
<div class='dropdown-border'></div>`;
@@ -630,7 +631,7 @@ window.RenderWiki = class RenderWiki extends Wiki {
630631
$dropdown_menu.addClass("show");
631632
dropdownItems = $dropdown_menu.find(".dropdown-item");
632633
});
633-
}, 500),
634+
}, 500)
634635
);
635636

636637
$("#dropdownMenuSearch, .mobile-search-icon").on("click", () => {

0 commit comments

Comments
 (0)