diff --git a/public/src/app.js b/public/src/app.js index 749a64aaf5..bdb63d152b 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -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(''); }); diff --git a/src/search.js b/src/search.js index a83ff3b626..3ab0f262e2 100644 --- a/src/search.js +++ b/src/search.js @@ -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); }