From f77d9053add47a7e4ffd74ab9a1d8007b8746170 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 16 Aug 2016 19:52:22 +0300 Subject: [PATCH] closes #4795 --- public/src/admin/manage/tags.js | 38 ++++++++++++++++++++++++++++++++- src/controllers/tags.js | 1 - src/database/mongo/sorted.js | 7 +++--- src/socket.io/admin/tags.js | 12 +++++++++-- src/topics/tags.js | 27 +++++++++++++++++++++-- src/views/admin/manage/tags.tpl | 27 +++++++++++++++++++++-- tests/database/sorted.js | 12 +++++++++++ 7 files changed, 113 insertions(+), 11 deletions(-) diff --git a/public/src/admin/manage/tags.js b/public/src/admin/manage/tags.js index 01f755612b..9fda81eccb 100644 --- a/public/src/admin/manage/tags.js +++ b/public/src/admin/manage/tags.js @@ -1,5 +1,5 @@ "use strict"; -/*global define, socket, app, utils, bootbox*/ +/*global define, socket, app, utils, bootbox, ajaxify*/ define('admin/manage/tags', [ 'forum/infinitescroll', @@ -12,11 +12,47 @@ define('admin/manage/tags', [ Tags.init = function() { selectable.enable('.tag-management', '.tag-row'); + handleCreate(); handleSearch(); handleModify(); handleDeleteSelected(); }; + function handleCreate() { + var createModal = $('#create-modal'); + var createTagName = $('#create-tag-name'); + var createModalGo = $('#create-modal-go'); + + createModal.on('keypress', function(e) { + if (e.keyCode === 13) { + createModalGo.click(); + } + }); + + $('#create').on('click', function() { + createModal.modal('show'); + setTimeout(function() { + createTagName.focus(); + }, 250); + }); + + createModalGo.on('click', function() { + socket.emit('admin.tags.create', { + tag: createTagName.val() + }, function(err) { + if (err) { + return app.alertError(err.message); + } + + createTagName.val(''); + createModal.on('hidden.bs.modal', function() { + ajaxify.refresh(); + }); + createModal.modal('hide'); + }); + }); + } + function handleSearch() { $('#tag-search').on('input propertychange', function() { if (timeoutId) { diff --git a/src/controllers/tags.js b/src/controllers/tags.js index 45ab3424aa..163efc2af0 100644 --- a/src/controllers/tags.js +++ b/src/controllers/tags.js @@ -44,7 +44,6 @@ tagsController.getTag = function(req, res, next) { }, function (results, next) { if (Array.isArray(results.tids) && !results.tids.length) { - topics.deleteTag(req.params.tag); return res.render('tag', templateData); } topicCount = results.topicCount; diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 1f9a67adb1..5cc06eab42 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -1,6 +1,7 @@ "use strict"; var async = require('async'); +var utils = require('../../../public/src/utils'); module.exports = function(db, module) { var helpers = module.helpers.mongo; @@ -381,12 +382,12 @@ module.exports = function(db, module) { map[item.value] = item.score; }); - var returnData = new Array(values.length), - score; + var returnData = new Array(values.length); + var score; for(var i=0; i Your forum does not have any topics with tags yet. - +
@@ -32,9 +32,10 @@
-
Modify Tag
+
Create & Modify Tags

Select tags via clicking and/or dragging, use shift to select multiple.

+
@@ -48,4 +49,26 @@
+ +
diff --git a/tests/database/sorted.js b/tests/database/sorted.js index 8f23038dae..c1066f5ff4 100644 --- a/tests/database/sorted.js +++ b/tests/database/sorted.js @@ -336,6 +336,18 @@ describe('Sorted Set methods', function() { }); describe('sortedSetScores()', function() { + before(function(done) { + db.sortedSetAdd('zeroScore', 0, 'value1', done); + }); + + it('should return 0 if score is 0', function(done) { + db.sortedSetScores('zeroScore', ['value1'], function(err, scores) { + assert.ifError(err); + assert.equal(0, scores[0]); + done(); + }); + }); + it('should return the scores of value in sorted sets', function(done) { db.sortedSetScores('sortedSetTest1', ['value2', 'value1', 'doesnotexist'], function(err, scores) { assert.equal(err, null);