mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: more merge/search fixes
This commit is contained in:
@@ -477,14 +477,16 @@ app.cacheBuster = null;
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
app.enableTopicSearch = function (options, searchQuery) {
|
app.enableTopicSearch = function (options) {
|
||||||
var quickSearchResults = options.resultEl;
|
var quickSearchResults = options.searchElements.resultEl;
|
||||||
var inputEl = options.inputEl;
|
var inputEl = options.searchElements.inputEl;
|
||||||
var searchTimeoutId = 0;
|
var searchTimeoutId = 0;
|
||||||
var oldValue = inputEl.val();
|
var oldValue = inputEl.val();
|
||||||
inputEl.on('blur', function () {
|
inputEl.on('blur', function () {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
quickSearchResults.addClass('hidden');
|
if (!inputEl.is(':focus')) {
|
||||||
|
quickSearchResults.addClass('hidden');
|
||||||
|
}
|
||||||
}, 200);
|
}, 200);
|
||||||
});
|
});
|
||||||
inputEl.on('focus', function () {
|
inputEl.on('focus', function () {
|
||||||
@@ -512,16 +514,16 @@ app.cacheBuster = null;
|
|||||||
return quickSearchResults.addClass('hidden');
|
return quickSearchResults.addClass('hidden');
|
||||||
}
|
}
|
||||||
require(['search'], function (search) {
|
require(['search'], function (search) {
|
||||||
searchQuery = searchQuery || { in: 'titles' };
|
options.searchOptions = options.searchOptions || { in: 'titles' };
|
||||||
searchQuery.term = inputEl.val();
|
options.searchOptions.term = inputEl.val();
|
||||||
search.quick(searchQuery, options);
|
search.quick(options);
|
||||||
});
|
});
|
||||||
}, 250);
|
}, 250);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
app.handleSearch = function (options) {
|
app.handleSearch = function (searchOptions) {
|
||||||
options = options || { in: 'titles' };
|
searchOptions = searchOptions || { in: 'titles' };
|
||||||
var searchButton = $('#search-button');
|
var searchButton = $('#search-button');
|
||||||
var searchFields = $('#search-fields');
|
var searchFields = $('#search-fields');
|
||||||
var searchInput = $('#search-fields input');
|
var searchInput = $('#search-fields input');
|
||||||
@@ -537,10 +539,15 @@ app.cacheBuster = null;
|
|||||||
searchInput.off('blur').on('blur', dismissSearch);
|
searchInput.off('blur').on('blur', dismissSearch);
|
||||||
searchInput.off('focus');
|
searchInput.off('focus');
|
||||||
|
|
||||||
app.enableTopicSearch({
|
var searchElements = {
|
||||||
inputEl: searchInput,
|
inputEl: searchInput,
|
||||||
resultEl: quickSearchContainer,
|
resultEl: quickSearchContainer,
|
||||||
}, options);
|
};
|
||||||
|
|
||||||
|
app.enableTopicSearch({
|
||||||
|
searchOptions: searchOptions,
|
||||||
|
searchElements: searchElements,
|
||||||
|
});
|
||||||
|
|
||||||
function dismissSearch() {
|
function dismissSearch() {
|
||||||
searchFields.addClass('hidden');
|
searchFields.addClass('hidden');
|
||||||
@@ -567,7 +574,10 @@ 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 });
|
$(window).trigger('action:search.submit', {
|
||||||
|
data: data,
|
||||||
|
searchElements: searchElements,
|
||||||
|
});
|
||||||
search.query(data, function () {
|
search.query(data, function () {
|
||||||
input.val('');
|
input.val('');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -31,10 +31,13 @@ define('forum/topic/merge', function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.enableTopicSearch({
|
app.enableTopicSearch({
|
||||||
inputEl: modal.find('.topic-search-input'),
|
searchElements: {
|
||||||
resultEl: modal.find('.quick-search-container'),
|
inputEl: modal.find('.topic-search-input'),
|
||||||
}, {
|
resultEl: modal.find('.quick-search-container'),
|
||||||
in: 'titles',
|
},
|
||||||
|
searchOptions: {
|
||||||
|
in: 'titles',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
modal.on('click', '[data-tid]', function () {
|
modal.on('click', '[data-tid]', function () {
|
||||||
if ($(this).attr('data-tid')) {
|
if ($(this).attr('data-tid')) {
|
||||||
|
|||||||
@@ -33,26 +33,29 @@ define('search', ['navigator', 'translator', 'storage'], function (nav, translat
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Search.quick = function (query, options, callback) {
|
Search.quick = function (options, callback) {
|
||||||
callback = callback || function () {};
|
callback = callback || function () {};
|
||||||
var template = options.template || 'partials/quick-search-results';
|
$(window).trigger('action:search.quick.start', options);
|
||||||
$(window).trigger('action:search.quick.start', { data: query });
|
options.searchOptions.searchOnly = 1;
|
||||||
query.searchOnly = 1;
|
Search.api(options.searchOptions, function (data) {
|
||||||
Search.api(query, function (data) {
|
var resultEl = options.searchElements.resultEl;
|
||||||
if (options.hideOnNoMatches && !data.posts.length) {
|
if (options.hideOnNoMatches && !data.posts.length) {
|
||||||
return options.resultEl.addClass('hidden').find('#quick-search-results-container').html('');
|
return resultEl.addClass('hidden').find('.quick-search-results-container').html('');
|
||||||
}
|
}
|
||||||
data.posts.forEach(function (p) {
|
data.posts.forEach(function (p) {
|
||||||
p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...');
|
p.snippet = utils.escapeHTML($('<div>' + p.content + '</div>').text().slice(0, 80) + '...');
|
||||||
});
|
});
|
||||||
app.parseAndTranslate(template, data, function (html) {
|
app.parseAndTranslate('partials/quick-search-results', data, function (html) {
|
||||||
if (html.length) {
|
if (html.length) {
|
||||||
html.find('.timeago').timeago();
|
html.find('.timeago').timeago();
|
||||||
options.resultEl.removeClass('hidden').find('#quick-search-results-container').html(html);
|
resultEl.removeClass('hidden').find('.quick-search-results-container').html(html);
|
||||||
} else {
|
} else {
|
||||||
options.resultEl.addClass('hidden').find('#quick-search-results-container').html('');
|
resultEl.addClass('hidden').find('.quick-search-results-container').html('');
|
||||||
}
|
}
|
||||||
$(window).trigger('action:search.quick.complete', { data: data });
|
$(window).trigger('action:search.quick.complete', {
|
||||||
|
data: data,
|
||||||
|
options: options,
|
||||||
|
});
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user