mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-12 17:05:51 +01:00
Translate dynamically added admin content
This commit is contained in:
committed by
Julian Lam
parent
3cd6a8a94b
commit
4eca23174a
@@ -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('');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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';
|
||||
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
|
||||
}
|
||||
Categories.create(formData);
|
||||
modal.modal('hide');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
modal.find('form').on('submit', 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);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
@@ -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
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
});
|
||||
translator.translate(html, 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 = {};
|
||||
modal.find('li[data-cid]').on('click', function () {
|
||||
var parentCid = $(this).attr('data-cid'),
|
||||
payload = {};
|
||||
|
||||
payload[ajaxify.data.category.cid] = {
|
||||
parentCid: parentCid
|
||||
};
|
||||
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);
|
||||
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 = '<i class="fa ' + parent.icon + '"></i> ' + 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 = '<i class="fa ' + parent.icon + '"></i> ' + 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;
|
||||
}
|
||||
|
||||
var modal = bootbox.dialog({
|
||||
title: 'Select a Category',
|
||||
message: html,
|
||||
buttons: {
|
||||
save: {
|
||||
label: 'Copy',
|
||||
className: 'btn-primary',
|
||||
callback: submit
|
||||
}
|
||||
translator.translate(html, function (html) {
|
||||
function submit() {
|
||||
var formData = modal.find('form').serializeObject();
|
||||
callback(formData['select-cid']);
|
||||
modal.modal('hide');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
modal.find('form').on('submit', 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);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user