From 4eca23174a90066db755f4a6f1cc223275439f47 Mon Sep 17 00:00:00 2001 From: Peter Jaszkowiak Date: Sat, 3 Dec 2016 22:41:16 -0700 Subject: [PATCH] Translate dynamically added admin content --- public/src/admin/extend/rewards.js | 10 ++- public/src/admin/general/navigation.js | 16 ++-- public/src/admin/manage/categories.js | 72 +++++++++--------- public/src/admin/manage/category.js | 99 +++++++++++++------------ public/src/admin/manage/groups.js | 6 +- public/src/admin/manage/ip-blacklist.js | 6 +- public/src/admin/manage/users.js | 38 +++++----- 7 files changed, 134 insertions(+), 113 deletions(-) diff --git a/public/src/admin/extend/rewards.js b/public/src/admin/extend/rewards.js index 939bdbb20d..279c0c8d27 100644 --- a/public/src/admin/extend/rewards.js +++ b/public/src/admin/extend/rewards.js @@ -1,7 +1,7 @@ "use strict"; /* global define, app, ajaxify, socket, templates, bootbox */ -define('admin/extend/rewards', function () { +define('admin/extend/rewards', ['translator'], function (translator) { var rewards = {}; @@ -142,9 +142,11 @@ define('admin/extend/rewards', function () { }; templates.parse('admin/extend/rewards', 'active', data, function (li) { - li = $(li); - ul.append(li); - li.find('select').val(''); + translator.translate(li, function (li) { + li = $(li); + ul.append(li); + li.find('select').val(''); + }); }); } diff --git a/public/src/admin/general/navigation.js b/public/src/admin/general/navigation.js index ee53fa5561..4c4256ddd1 100644 --- a/public/src/admin/general/navigation.js +++ b/public/src/admin/general/navigation.js @@ -69,15 +69,19 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun data.index = (parseInt($('#enabled').children().last().attr('data-index'), 10) || 0) + 1; templates.parse('admin/general/navigation', 'navigation', {navigation: [data]}, function (li) { - li = $(translator.unescape(li)); - el.after(li); - el.remove(); + translator.translate(li, function (li) { + li = $(translator.unescape(li)); + el.after(li); + el.remove(); + }); }); templates.parse('admin/general/navigation', 'enabled', {enabled: [data]}, function (li) { - li = $(translator.unescape(li)); - $('#enabled').append(li); - componentHandler.upgradeDom(); + translator.translate(li, function (li) { + li = $(translator.unescape(li)); + $('#enabled').append(li); + componentHandler.upgradeDom(); + }); }); } diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index bbc5a69695..1042c723e6 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -40,29 +40,31 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri templates.parse('admin/partials/categories/create', { categories: categories }, function (html) { - function submit() { - var formData = modal.find('form').serializeObject(); - formData.description = ''; - formData.icon = 'fa-comments'; - - Categories.create(formData); - modal.modal('hide'); - return false; - } + translator.translate(html, function (html) { + function submit() { + var formData = modal.find('form').serializeObject(); + formData.description = ''; + formData.icon = 'fa-comments'; + + Categories.create(formData); + modal.modal('hide'); + return false; + } - var modal = bootbox.dialog({ - title: 'Create a Category', - message: html, - buttons: { - save: { - label: 'Save', - className: 'btn-primary', - callback: submit + var modal = bootbox.dialog({ + title: 'Create a Category', + message: html, + buttons: { + save: { + label: 'Save', + className: 'btn-primary', + callback: submit + } } - } - }); + }); - modal.find('form').on('submit', submit); + modal.find('form').on('submit', submit); + }); }); }); }; @@ -176,22 +178,24 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri cid: parentId, categories: categories }, function (html) { - container.append(html); + translator.translate(html, function (html) { + container.append(html); - // Handle and children categories in this level have - for(var x = 0,numCategories = categories.length; x < numCategories; x++) { - renderList(categories[x].children, $('li[data-cid="' + categories[x].cid + '"]'), categories[x].cid); - } + // Handle and children categories in this level have + for(var x = 0,numCategories = categories.length; x < numCategories; x++) { + renderList(categories[x].children, $('li[data-cid="' + categories[x].cid + '"]'), categories[x].cid); + } - // Make list sortable - sortables[parentId] = Sortable.create($('ul[data-cid="' + parentId + '"]')[0], { - group: 'cross-categories', - animation: 150, - handle: '.icon', - dataIdAttr: 'data-cid', - ghostClass: "placeholder", - onAdd: itemDidAdd, - onEnd: itemDragDidEnd + // Make list sortable + sortables[parentId] = Sortable.create($('ul[data-cid="' + parentId + '"]')[0], { + group: 'cross-categories', + animation: 150, + handle: '.icon', + dataIdAttr: 'data-cid', + ghostClass: "placeholder", + onAdd: itemDidAdd, + onEnd: itemDragDidEnd + }); }); }); } diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 866bc4bb9d..32da35b007 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -5,8 +5,9 @@ define('admin/manage/category', [ 'uploader', 'iconSelect', 'admin/modules/colorpicker', - 'autocomplete' -], function (uploader, iconSelect, colorpicker, autocomplete) { + 'autocomplete', + 'translator' +], function (uploader, iconSelect, colorpicker, autocomplete, translator) { var Category = {}; var modified_categories = {}; @@ -232,8 +233,10 @@ define('admin/manage/category', [ templates.parse('admin/partials/categories/privileges', { privileges: privileges }, function (html) { - $('.privilege-table-container').html(html); - Category.exposeAssumedPrivileges(); + translator.translate(html, function (html) { + $('.privilege-table-container').html(html); + Category.exposeAssumedPrivileges(); + }); }); }); }; @@ -289,33 +292,35 @@ define('admin/manage/category', [ templates.parse('partials/category_list', { categories: categories }, function (html) { - var modal = bootbox.dialog({ - message: html, - title: 'Set Parent Category' - }); - - modal.find('li[data-cid]').on('click', function () { - var parentCid = $(this).attr('data-cid'), - payload = {}; - - payload[ajaxify.data.category.cid] = { - parentCid: parentCid - }; + translator.translate(html, function (html) { + var modal = bootbox.dialog({ + message: html, + title: 'Set Parent Category' + }); - 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); + modal.find('li[data-cid]').on('click', function () { + var parentCid = $(this).attr('data-cid'), + 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'); }); - 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'); }); }); }); @@ -407,26 +412,28 @@ define('admin/manage/category', [ templates.parse('admin/partials/categories/select-category', { categories: categories }, function (html) { - function submit() { - var formData = modal.find('form').serializeObject(); - callback(formData['select-cid']); - modal.modal('hide'); - return false; - } + translator.translate(html, function (html) { + function submit() { + var formData = modal.find('form').serializeObject(); + callback(formData['select-cid']); + modal.modal('hide'); + return false; + } - var modal = bootbox.dialog({ - title: 'Select a Category', - message: html, - buttons: { - save: { - label: 'Copy', - className: 'btn-primary', - callback: submit + var modal = bootbox.dialog({ + title: 'Select a Category', + message: html, + buttons: { + save: { + label: 'Copy', + className: 'btn-primary', + callback: submit + } } - } - }); + }); - modal.find('form').on('submit', submit); + modal.find('form').on('submit', submit); + }); }); }); } diff --git a/public/src/admin/manage/groups.js b/public/src/admin/manage/groups.js index bbb0c08352..92a7c43efd 100644 --- a/public/src/admin/manage/groups.js +++ b/public/src/admin/manage/groups.js @@ -102,8 +102,10 @@ define('admin/manage/groups', [ templates.parse('admin/manage/groups', 'groups', { groups: groups }, function (html) { - groupsEl.find('[data-groupname]').remove(); - groupsEl.find('tr').after(html); + translator.translate(html, function (html) { + groupsEl.find('[data-groupname]').remove(); + groupsEl.find('tr').after(html); + }); }); }); } diff --git a/public/src/admin/manage/ip-blacklist.js b/public/src/admin/manage/ip-blacklist.js index 03f4d8bb5c..fdb4eef413 100644 --- a/public/src/admin/manage/ip-blacklist.js +++ b/public/src/admin/manage/ip-blacklist.js @@ -1,7 +1,7 @@ 'use strict'; /* globals $, app, socket, templates, define, bootbox */ -define('admin/manage/ip-blacklist', [], function () { +define('admin/manage/ip-blacklist', ['translator'], function (translator) { var Blacklist = {}; @@ -34,7 +34,9 @@ define('admin/manage/ip-blacklist', [], function () { } templates.parse('admin/partials/blacklist-validate', data, function (html) { - bootbox.alert(html); + translator.translate(html, function (html) { + bootbox.alert(html); + }); }); }); }); diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index b8fb8d5de6..d2407fa82a 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -336,25 +336,25 @@ define('admin/manage/users', ['translator'], function (translator) { } templates.parse('admin/manage/users', 'users', data, function (html) { - html = $(html); - $('.users-table tr').not(':first').remove(); - $('.users-table tr').first().after(html); - html.find('.timeago').timeago(); - $('.fa-spinner').addClass('hidden'); - - if (data && data.users.length === 0) { - $('#user-notfound-notify').html('User not found!') - .removeClass('hide') - .addClass('label-danger') - .removeClass('label-success'); - } else { - $('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.') - .removeClass('hide') - .addClass('label-success') - .removeClass('label-danger'); - } - - + translator.translate(html, function (html) { + html = $(html); + $('.users-table tr').not(':first').remove(); + $('.users-table tr').first().after(html); + html.find('.timeago').timeago(); + $('.fa-spinner').addClass('hidden'); + + if (data && data.users.length === 0) { + $('#user-notfound-notify').html('User not found!') + .removeClass('hide') + .addClass('label-danger') + .removeClass('label-success'); + } else { + $('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.') + .removeClass('hide') + .addClass('label-success') + .removeClass('label-danger'); + } + }); }); }); }, 250);