mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: add client side hook for quick search&normal search
This commit is contained in:
@@ -591,6 +591,7 @@ app.cacheBuster = null;
|
|||||||
in: 'titles',
|
in: 'titles',
|
||||||
searchOnly: 1,
|
searchOnly: 1,
|
||||||
};
|
};
|
||||||
|
$(window).trigger('action:search.quick', { data: data });
|
||||||
search.api(data, function (data) {
|
search.api(data, function (data) {
|
||||||
if (!data.matchCount) {
|
if (!data.matchCount) {
|
||||||
quickSearchResults.html('').addClass('hidden');
|
quickSearchResults.html('').addClass('hidden');
|
||||||
@@ -662,6 +663,7 @@ app.cacheBuster = null;
|
|||||||
require(['search'], function (search) {
|
require(['search'], function (search) {
|
||||||
var data = search.getSearchPreferences();
|
var data = search.getSearchPreferences();
|
||||||
data.term = input.val();
|
data.term = input.val();
|
||||||
|
$(window).trigger('action:search.submit', { data: data });
|
||||||
search.query(data, function () {
|
search.query(data, function () {
|
||||||
input.val('');
|
input.val('');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -36,13 +36,6 @@ search.search = async function (data) {
|
|||||||
async function searchInContent(data) {
|
async function searchInContent(data) {
|
||||||
data.uid = data.uid || 0;
|
data.uid = data.uid || 0;
|
||||||
|
|
||||||
const itemsPerPage = Math.min(data.itemsPerPage || 10, 100);
|
|
||||||
const returnData = {
|
|
||||||
posts: [],
|
|
||||||
matchCount: 0,
|
|
||||||
pageCount: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
const [searchCids, searchUids] = await Promise.all([
|
const [searchCids, searchUids] = await Promise.all([
|
||||||
getSearchCids(data),
|
getSearchCids(data),
|
||||||
getSearchUids(data),
|
getSearchUids(data),
|
||||||
@@ -69,9 +62,6 @@ async function searchInContent(data) {
|
|||||||
if (data.returnIds) {
|
if (data.returnIds) {
|
||||||
return { pids: pids, tids: tids };
|
return { pids: pids, tids: tids };
|
||||||
}
|
}
|
||||||
if (!pids.length && !tids.length) {
|
|
||||||
return returnData;
|
|
||||||
}
|
|
||||||
|
|
||||||
const mainPids = await topics.getMainPids(tids);
|
const mainPids = await topics.getMainPids(tids);
|
||||||
|
|
||||||
@@ -84,8 +74,12 @@ async function searchInContent(data) {
|
|||||||
pids: allPids,
|
pids: allPids,
|
||||||
});
|
});
|
||||||
|
|
||||||
returnData.matchCount = metadata.pids.length;
|
const itemsPerPage = Math.min(data.itemsPerPage || 10, 100);
|
||||||
returnData.pageCount = Math.max(1, Math.ceil(parseInt(returnData.matchCount, 10) / itemsPerPage));
|
const returnData = {
|
||||||
|
posts: [],
|
||||||
|
matchCount: metadata.pids.length,
|
||||||
|
pageCount: Math.max(1, Math.ceil(parseInt(metadata.pids.length, 10) / itemsPerPage)),
|
||||||
|
};
|
||||||
|
|
||||||
if (data.page) {
|
if (data.page) {
|
||||||
const start = Math.max(0, (data.page - 1)) * itemsPerPage;
|
const start = Math.max(0, (data.page - 1)) * itemsPerPage;
|
||||||
@@ -93,7 +87,8 @@ async function searchInContent(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
returnData.posts = await posts.getPostSummaryByPids(metadata.pids, data.uid, {});
|
returnData.posts = await posts.getPostSummaryByPids(metadata.pids, data.uid, {});
|
||||||
await plugins.fireHook('filter:search.getPosts', { posts: returnData.posts });
|
const result = await plugins.fireHook('filter:search.contentGetResult', { result: returnData, data: data });
|
||||||
|
returnData.posts = result.result.posts;
|
||||||
delete metadata.pids;
|
delete metadata.pids;
|
||||||
return Object.assign(returnData, metadata);
|
return Object.assign(returnData, metadata);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user