mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-06 12:31:33 +01:00
autocompleteTags
This commit is contained in:
@@ -4,6 +4,10 @@ var topics = require('../../topics');
|
||||
var utils = require('../../../public/src/utils');
|
||||
|
||||
module.exports = function(SocketTopics) {
|
||||
SocketTopics.autocompleteTags = function(socket, data, callback) {
|
||||
topics.autocompleteTags(data, callback);
|
||||
};
|
||||
|
||||
SocketTopics.searchTags = function(socket, data, callback) {
|
||||
topics.searchTags(data, callback);
|
||||
};
|
||||
|
||||
@@ -283,16 +283,42 @@ module.exports = function(Topics) {
|
||||
});
|
||||
}
|
||||
|
||||
findMatches(data.query, function(err, matches) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
done(matches);
|
||||
});
|
||||
};
|
||||
|
||||
Topics.autocompleteTags = function(data, callback) {
|
||||
if (!data || !data.query) {
|
||||
return callback(null, []);
|
||||
}
|
||||
|
||||
if (plugins.hasListeners('filter:topics.autocompleteTags')) {
|
||||
return plugins.fireHook('filter:topics.autocompleteTags', {data: data}, function(err, data) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
callback(null, data.matches);
|
||||
});
|
||||
}
|
||||
|
||||
findMatches(data.query, callback);
|
||||
};
|
||||
|
||||
function findMatches(query, callback) {
|
||||
db.getSortedSetRevRange('tags:topic:count', 0, -1, function(err, tags) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
data.query = data.query.toLowerCase();
|
||||
query = query.toLowerCase();
|
||||
|
||||
var matches = [];
|
||||
for(var i=0; i<tags.length; ++i) {
|
||||
if (tags[i].toLowerCase().startsWith(data.query)) {
|
||||
if (tags[i].toLowerCase().startsWith(query)) {
|
||||
matches.push(tags[i]);
|
||||
if (matches.length > 19) {
|
||||
break;
|
||||
@@ -303,10 +329,9 @@ module.exports = function(Topics) {
|
||||
matches = matches.sort(function(a, b) {
|
||||
return a > b;
|
||||
});
|
||||
|
||||
done(matches);
|
||||
callback(null, matches);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Topics.searchAndLoadTags = function(data, callback) {
|
||||
var searchResult = {
|
||||
|
||||
Reference in New Issue
Block a user