diff --git a/package.json b/package.json index e89a43d75c..5b7ce98aa4 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "nodebb-plugin-spam-be-gone": "0.5.0", "nodebb-rewards-essentials": "0.0.9", "nodebb-theme-lavender": "4.0.1", - "nodebb-theme-persona": "5.0.4", - "nodebb-theme-vanilla": "6.0.3", + "nodebb-theme-persona": "5.0.5", + "nodebb-theme-vanilla": "6.0.4", "nodebb-widget-essentials": "3.0.0", "nodemailer": "2.6.4", "nodemailer-sendmail-transport": "1.0.0", diff --git a/public/language/en-GB/global.json b/public/language/en-GB/global.json index bb152e4561..08835e8386 100644 --- a/public/language/en-GB/global.json +++ b/public/language/en-GB/global.json @@ -130,6 +130,7 @@ "cookies.message": "This website uses cookies to ensure you get the best experience on our website.", "cookies.accept": "Got it!", "cookies.learn_more": "Learn More", - - "edited": "Edited" + + "edited": "Edited", + "disabled": "Disabled" } diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json index 727417ca5f..e25ef4973c 100644 --- a/public/language/en-GB/topic.json +++ b/public/language/en-GB/topic.json @@ -70,6 +70,7 @@ "thread_tools.unlock": "Unlock Topic", "thread_tools.move": "Move Topic", "thread_tools.move_all": "Move All", + "thread_tools.select_category": "Select Category", "thread_tools.fork": "Fork Topic", "thread_tools.delete": "Delete Topic", "thread_tools.delete-posts": "Delete Posts", @@ -86,7 +87,6 @@ "post_purge_confirm": "Are you sure you want to purge this post?", "load_categories": "Loading Categories", - "disabled_categories_note": "Disabled Categories are greyed out", "confirm_move": "Move", "confirm_fork": "Fork", diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index c241dd8840..0373d3837a 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -297,47 +297,30 @@ define('admin/manage/category', [ }; Category.launchParentSelector = function () { - socket.emit('categories.get', function (err, categories) { - if (err) { - return app.alertError(err.message); - } + var categories = ajaxify.data.allCategories.filter(function (category) { + return category && !category.disabled && parseInt(category.cid, 10) !== parseInt(ajaxify.data.category.cid, 10); + }); - categories = categories.filter(function (category) { - return category && !category.disabled && parseInt(category.cid, 10) !== parseInt(ajaxify.data.category.cid, 10); - }); + selectCategoryModal(categories, function (parentCid) { + var payload = {}; - templates.parse('partials/category_list', { - categories: categories, - }, function (html) { - var modal = bootbox.dialog({ - message: html, - title: '[[admin/manage/categories:alert.set-parent-category]]', + payload[ajaxify.data.category.cid] = { + parentCid: parentCid, + }; + + socket.emit('admin.categories.update', payload, function (err) { + if (err) { + return app.alertError(err.message); + } + var parent = ajaxify.data.allCategories.filter(function (category) { + return category && parseInt(category.cid, 10) === parseInt(parentCid, 10); }); + parent = parent[0]; - modal.find('li[data-cid]').on('click', function () { - var parentCid = $(this).attr('data-cid'); - var payload = {}; - - payload[ajaxify.data.category.cid] = { - parentCid: parentCid, - }; - - socket.emit('admin.categories.update', payload, function (err) { - if (err) { - return app.alertError(err.message); - } - var parent = categories.filter(function (category) { - return category && parseInt(category.cid, 10) === parseInt(parentCid, 10); - }); - parent = parent[0]; - - modal.modal('hide'); - $('button[data-action="removeParent"]').parent().removeClass('hide'); - $('button[data-action="setParent"]').addClass('hide'); - var buttonHtml = ' ' + parent.name; - $('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide'); - }); - }); + $('button[data-action="removeParent"]').parent().removeClass('hide'); + $('button[data-action="setParent"]').addClass('hide'); + var buttonHtml = ' ' + parent.name; + $('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide'); }); }); }; @@ -418,37 +401,35 @@ define('admin/manage/category', [ }); }; - function selectCategoryModal(callback) { - socket.emit('admin.categories.getNames', function (err, categories) { - if (err) { - return app.alertError(err.message); - } - - templates.parse('admin/partials/categories/select-category', { - categories: categories, - }, function (html) { - translator.translate(html, function (html) { - var modal = bootbox.dialog({ - title: 'Select a Category', - message: html, - buttons: { - save: { - label: 'Copy', - className: 'btn-primary', - callback: submit, - }, + function selectCategoryModal(categories, callback) { + if (typeof categories === 'function') { + callback = categories; + categories = ajaxify.data.allCategories; + } + templates.parse('admin/partials/categories/select-category', { + categories: categories, + }, function (html) { + translator.translate(html, function (html) { + var modal = bootbox.dialog({ + title: 'Select a Category', + message: html, + buttons: { + save: { + label: 'Copy', + className: 'btn-primary', + callback: submit, }, - }); - - function submit() { - var formData = modal.find('form').serializeObject(); - callback(formData['select-cid']); - modal.modal('hide'); - return false; - } - - modal.find('form').on('submit', submit); + }, }); + + function submit() { + var formData = modal.find('form').serializeObject(); + callback(formData['select-cid']); + modal.modal('hide'); + return false; + } + + modal.find('form').on('submit', submit); }); }); } diff --git a/public/src/client/topic/move.js b/public/src/client/topic/move.js index 5ff9a02c49..e023d6822e 100644 --- a/public/src/client/topic/move.js +++ b/public/src/client/topic/move.js @@ -4,7 +4,7 @@ define('forum/topic/move', function () { var Move = {}; var modal; - var selectedEl; + var selectedCategory; Move.init = function (tids, currentCid, onComplete) { Move.tids = tids; @@ -31,8 +31,17 @@ define('forum/topic/move', function () { modal.find('.modal-header h3').translateText('[[topic:move_topics]]'); } - modal.on('click', '.category-list li[data-cid]', function () { - selectCategory($(this)); + modal.find('#select-cid').on('change', function () { + var cid = $(this).val(); + var optionEl = $(this).find('option[value="' + cid + '"]'); + + var selectedCategory = { + cid: cid, + name: optionEl.attr('data-name'), + text: optionEl.text(), + icon: optionEl.attr('data-icon'), + }; + selectCategory(selectedCategory); }); modal.find('#move_thread_commit').on('click', onCommitClicked); @@ -42,60 +51,25 @@ define('forum/topic/move', function () { } function parseModal(categories, callback) { - templates.parse('partials/move_thread_modal', { categories: [] }, function (html) { - require(['translator'], function (translator) { - translator.translate(html, function (html) { - modal = $(html); - categories.forEach(function (category) { - if (!category.link) { - buildRecursive(modal.find('.category-list'), category, ''); - } - }); - callback(); - }); - }); - }); - } + app.parseAndTranslate('partials/move_thread_modal', { categories: categories }, function (html) { + modal = $(html); - function buildRecursive(parentEl, category, level) { - var categoryEl = $('
'); - - if (category.bgColor) { - categoryEl.css('background-color', category.bgColor); - } - if (category.color) { - categoryEl.css('color', category.color); - } - categoryEl.toggleClass('disabled', !!category.disabled); - categoryEl.attr('data-cid', category.cid); - categoryEl.attr('data-icon', category.icon); - categoryEl.attr('data-name', category.name); - categoryEl.html(' ' + category.name); - - parentEl.append(level); - parentEl.append(categoryEl); - parentEl.append('