mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 20:16:04 +01:00
feat: #8233, search sub categories
This commit is contained in:
@@ -44,5 +44,6 @@
|
|||||||
"search-preferences-saved": "Search preferences saved",
|
"search-preferences-saved": "Search preferences saved",
|
||||||
"search-preferences-cleared": "Search preferences cleared",
|
"search-preferences-cleared": "Search preferences cleared",
|
||||||
"show-results-as": "Show results as",
|
"show-results-as": "Show results as",
|
||||||
"see-more-results": "See more results (%1)"
|
"see-more-results": "See more results (%1)",
|
||||||
|
"search-in-category": "Search in \"%1\""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -391,12 +391,34 @@ app.cacheBuster = null;
|
|||||||
var inputEl = options.searchElements.inputEl;
|
var inputEl = options.searchElements.inputEl;
|
||||||
var searchTimeoutId = 0;
|
var searchTimeoutId = 0;
|
||||||
var oldValue = inputEl.val();
|
var oldValue = inputEl.val();
|
||||||
|
var filterCategoryEl = quickSearchResults.find('.filter-category');
|
||||||
|
|
||||||
|
function updateCategoryFilterName() {
|
||||||
|
if (ajaxify.data.template.category) {
|
||||||
|
require(['translator'], function (translator) {
|
||||||
|
translator.translate('[[search:search-in-category, ' + ajaxify.data.name + ']]', function (translated) {
|
||||||
|
var name = $('<div></div>').html(translated).text();
|
||||||
|
filterCategoryEl.find('.name').text(name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
filterCategoryEl.toggleClass('hidden', !ajaxify.data.template.category);
|
||||||
|
}
|
||||||
|
|
||||||
function doSearch() {
|
function doSearch() {
|
||||||
require(['search'], function (search) {
|
require(['search'], function (search) {
|
||||||
/* eslint-disable-next-line */
|
/* eslint-disable-next-line */
|
||||||
options.searchOptions = Object.assign({}, searchOptions);
|
options.searchOptions = Object.assign({}, searchOptions);
|
||||||
options.searchOptions.term = inputEl.val();
|
options.searchOptions.term = inputEl.val();
|
||||||
|
updateCategoryFilterName();
|
||||||
|
|
||||||
|
if (ajaxify.data.template.category) {
|
||||||
|
if (filterCategoryEl.find('input[type="checkbox"]').is(':checked')) {
|
||||||
|
options.searchOptions.categories = [ajaxify.data.cid];
|
||||||
|
options.searchOptions.searchChildren = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
quickSearchResults.removeClass('hidden').find('.quick-search-results-container').html('');
|
quickSearchResults.removeClass('hidden').find('.quick-search-results-container').html('');
|
||||||
quickSearchResults.find('.loading-indicator').removeClass('hidden');
|
quickSearchResults.find('.loading-indicator').removeClass('hidden');
|
||||||
$(window).trigger('action:search.quick.start', options);
|
$(window).trigger('action:search.quick.start', options);
|
||||||
@@ -433,6 +455,11 @@ app.cacheBuster = null;
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
quickSearchResults.find('.filter-category input[type="checkbox"]').on('change', function () {
|
||||||
|
inputEl.focus();
|
||||||
|
doSearch();
|
||||||
|
});
|
||||||
|
|
||||||
inputEl.off('keyup').on('keyup', function () {
|
inputEl.off('keyup').on('keyup', function () {
|
||||||
if (searchTimeoutId) {
|
if (searchTimeoutId) {
|
||||||
clearTimeout(searchTimeoutId);
|
clearTimeout(searchTimeoutId);
|
||||||
@@ -466,7 +493,9 @@ app.cacheBuster = null;
|
|||||||
inputEl.on('focus', function () {
|
inputEl.on('focus', function () {
|
||||||
oldValue = inputEl.val();
|
oldValue = inputEl.val();
|
||||||
if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) {
|
if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) {
|
||||||
|
updateCategoryFilterName();
|
||||||
quickSearchResults.removeClass('hidden');
|
quickSearchResults.removeClass('hidden');
|
||||||
|
inputEl[0].setSelectionRange(0, inputEl.val().length);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -503,8 +532,12 @@ app.cacheBuster = null;
|
|||||||
});
|
});
|
||||||
|
|
||||||
function dismissSearch() {
|
function dismissSearch() {
|
||||||
searchFields.addClass('hidden');
|
setTimeout(function () {
|
||||||
searchButton.removeClass('hidden');
|
if (!searchInput.is(':focus')) {
|
||||||
|
searchFields.addClass('hidden');
|
||||||
|
searchButton.removeClass('hidden');
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
searchButton.off('click').on('click', function (e) {
|
searchButton.off('click').on('click', function (e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user