feat: add client side hook for quick search&normal search

v1.18.x
Barış Soner Uşaklı 6 years ago
parent f9a804e014
commit f31d30cd02

@ -591,6 +591,7 @@ app.cacheBuster = null;
in: 'titles',
searchOnly: 1,
};
$(window).trigger('action:search.quick', { data: data });
search.api(data, function (data) {
if (!data.matchCount) {
quickSearchResults.html('').addClass('hidden');
@ -662,6 +663,7 @@ app.cacheBuster = null;
require(['search'], function (search) {
var data = search.getSearchPreferences();
data.term = input.val();
$(window).trigger('action:search.submit', { data: data });
search.query(data, function () {
input.val('');
});

@ -36,13 +36,6 @@ search.search = async function (data) {
async function searchInContent(data) {
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([
getSearchCids(data),
getSearchUids(data),
@ -69,9 +62,6 @@ async function searchInContent(data) {
if (data.returnIds) {
return { pids: pids, tids: tids };
}
if (!pids.length && !tids.length) {
return returnData;
}
const mainPids = await topics.getMainPids(tids);
@ -84,8 +74,12 @@ async function searchInContent(data) {
pids: allPids,
});
returnData.matchCount = metadata.pids.length;
returnData.pageCount = Math.max(1, Math.ceil(parseInt(returnData.matchCount, 10) / itemsPerPage));
const itemsPerPage = Math.min(data.itemsPerPage || 10, 100);
const returnData = {
posts: [],
matchCount: metadata.pids.length,
pageCount: Math.max(1, Math.ceil(parseInt(metadata.pids.length, 10) / itemsPerPage)),
};
if (data.page) {
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, {});
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;
return Object.assign(returnData, metadata);
}

Loading…
Cancel
Save