diff --git a/public/language/en-GB/admin/admin.json b/public/language/en-GB/admin/admin.json new file mode 100644 index 0000000000..a64cc856a6 --- /dev/null +++ b/public/language/en-GB/admin/admin.json @@ -0,0 +1,6 @@ +{ + "alert.confirm-reload": "Are you sure you wish to reload NodeBB?", + "alert.confirm-restart": "Are you sure you wish to restart NodeBB?", + + "acp-title": "%1 | NodeBB Admin Control Panel" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/menu.json b/public/language/en-GB/admin/menu.json new file mode 100644 index 0000000000..1db5c15abf --- /dev/null +++ b/public/language/en-GB/admin/menu.json @@ -0,0 +1,74 @@ +{ + "section-general": "General", + "general/dashboard": "Dashboard", + "general/homepage": "Home Page", + "general/navigation": "Navigation", + "general/languages": "Languages", + "general/sounds": "Sounds", + "general/social": "Social", + + "section-manage": "Manage", + "manage/categories": "Categories", + "manage/tags": "Tags", + "manage/users": "Users", + "manage/registration": "Registration Queue", + "manage/groups": "Groups", + "manage/flags": "Flags", + "manage/ip-blacklist": "IP Blacklist", + + "section-settings": "Settings", + "settings/general": "General", + "settings/reputation": "Reputation", + "settings/email": "Email", + "settings/user": "User", + "settings/group": "Group", + "settings/guest": "Guests", + "settings/uploads": "Uploads", + "settings/post": "Post", + "settings/chat": "Chat", + "settings/pagination": "Pagination", + "settings/tags": "Tags", + "settings/notifications": "Notifications", + "settings/cookies": "Cookies", + "settings/web-crawler": "Web Crawler", + "settings/sockets": "Sockets", + "settings/advanced": "Advanced", + + "settings.page-title": "%1 Settings", + + "section-appearance": "Appearance", + "appearance/themes": "Themes", + "appearance/skins": "Skins", + "appearance/customise": "Custom HTML & CSS", + + "section-extend": "Extend", + "extend/plugins": "Plugins", + "extend/widgets": "Widgets", + "extend/rewards": "Rewards", + + "section-social-auth": "Social Authentication", + + "section-plugins": "Plugins", + "extend/plugins.install": "Install Plugins", + + "section-advanced": "Advanced", + "advanced/database": "Database", + "advanced/events": "Events", + "advanced/logs": "Logs", + "advanced/errors": "Errors", + "advanced/cache": "Cache", + "development/logger": "Logger", + + "reload-forum": "Reload Forum", + "restart-forum": "Restart Forum", + "logout": "Log out", + "view-forum": "View Forum", + + "search.placeholder": "Search...", + "search.no-results": "No results...", + "search.search-forum": "Search the forum for ", + "search.keep-typing": "Type more to see results...", + "search.start-typing": "Start typing to see results...", + + "connection-lost": "Connection to %1 has been lost, attempting to reconnect..." +} \ No newline at end of file diff --git a/public/src/admin/admin.js b/public/src/admin/admin.js index c7a874e96a..6dabcb9f38 100644 --- a/public/src/admin/admin.js +++ b/public/src/admin/admin.js @@ -9,16 +9,12 @@ } logoutTimer = setTimeout(function () { - require(['translator'], function (translator) { - translator.translate('[[login:logged-out-due-to-inactivity]]', function (translated) { - bootbox.alert({ - closeButton: false, - message: translated, - callback: function () { - window.location.reload(); - } - }); - }); + bootbox.alert({ + closeButton: false, + message: '[[login:logged-out-due-to-inactivity]]', + callback: function () { + window.location.reload(); + } }); }, 3600000); } @@ -69,11 +65,9 @@ } function setupKeybindings() { - require(['mousetrap'], function (mousetrap) { + require(['mousetrap', 'admin/modules/instance'], function (mousetrap, instance) { mousetrap.bind('ctrl+shift+a r', function () { - require(['admin/modules/instance'], function (instance) { - instance.reload(); - }); + instance.reload(); }); mousetrap.bind('ctrl+shift+a R', function () { @@ -89,43 +83,60 @@ } function selectMenuItem(url) { - url = url - .replace(/\/\d+$/, '') - .split('/').slice(0, 3).join('/') - .split('?')[0]; + require(['translator'], function (translator) { + url = url + .replace(/\/\d+$/, '') + .split('/').slice(0, 3).join('/') + .split('?')[0]; - // If index is requested, load the dashboard - if (url === 'admin') { - url = 'admin/general/dashboard'; - } + // If index is requested, load the dashboard + if (url === 'admin') { + url = 'admin/general/dashboard'; + } - $('#main-menu li').removeClass('active'); - $('#main-menu a').removeClass('active').each(function () { - var menu = $(this), - href = menu.attr('href'), - isLink = menu.parent().attr('data-link') === '1'; + url = [config.relative_path, url].join('/'); - if (!isLink && href && href === [config.relative_path, url].join('/')) { + $('#main-menu li').removeClass('active'); + $('#main-menu a').removeClass('active').filter('[href="' + url + '"]').each(function () { + var menu = $(this); menu .parent().addClass('active') .parents('.menu-item').addClass('active'); + + var match = menu.attr('href').match(/admin\/((.+?)\/.+?)$/); + if (!match) { + return; + } + var str = '[[admin/menu:' + match[1] + ']]'; + if (match[2] === 'settings') { + str = translator.compile('admin/menu:settings.page-title', str); + } + translator.translate(str, function (text) { + $('#main-page-title').text(text); + }); + }); - $('#main-page-title').text(menu.text() + (menu.parents('.menu-item').children('a').text() === 'Settings' ? ' Settings' : '')); + var title; + if (/admin\/general\/dashboard$/.test(url)) { + title = '[[admin/menu:general/dashboard]]'; + } else { + title = url.match(/admin\/(.+?)\/(.+?)$/); + title = '[[admin/menu:section-' + title[1] + ']]' + + (title[2] ? (' > [[admin/menu:' + + title[1] + '/' + title[2] + ']]') : ''); } - }); - var acpPath = url.replace('admin/', '').split('/'); - acpPath.forEach(function (path, i) { - acpPath[i] = path.charAt(0).toUpperCase() + path.slice(1); - }); - acpPath = acpPath.join(' > '); + title = '[[admin/admin:acp-title, ' + title + ']]'; - document.title = (url === 'admin/general/dashboard' ? 'Dashboard' : acpPath) + ' | NodeBB Admin Control Panel'; + translator.translate(title, function (title) { + document.title = title.replace(/>/g, '>'); + }); + }); } function setupRestartLinks() { $('.reload').off('click').on('click', function () { - bootbox.confirm('Are you sure you wish to reload NodeBB?', function (confirm) { + bootbox.confirm('[[admin/admin:alert.confirm-reload]]', function (confirm) { if (confirm) { require(['admin/modules/instance'], function (instance) { instance.reload(); @@ -135,7 +146,7 @@ }); $('.restart').off('click').on('click', function () { - bootbox.confirm('Are you sure you wish to restart NodeBB?', function (confirm) { + bootbox.confirm('[[admin/admin:alert.confirm-restart]]', function (confirm) { if (confirm) { require(['admin/modules/instance'], function (instance) { instance.restart(); @@ -143,7 +154,7 @@ } }); }); - }; + } function launchSnackbar(params) { var message = (params.title ? "" + params.title + "" : '') + (params.message ? params.message : ''); diff --git a/src/controllers/admin/blacklist.js b/src/controllers/admin/blacklist.js index d70b1d1d79..c9ba71169e 100644 --- a/src/controllers/admin/blacklist.js +++ b/src/controllers/admin/blacklist.js @@ -9,7 +9,7 @@ blacklistController.get = function (req, res, next) { if (err) { return next(err); } - res.render('admin/manage/ip-blacklist', {rules: rules, title: 'IP Blacklist'}); + res.render('admin/manage/ip-blacklist', { rules: rules }); }); }; diff --git a/src/controllers/admin/flags.js b/src/controllers/admin/flags.js index 1b31a95ff4..03c9329fca 100644 --- a/src/controllers/admin/flags.js +++ b/src/controllers/admin/flags.js @@ -65,7 +65,6 @@ flagsController.get = function (req, res, next) { sortByCount: sortBy === 'count', sortByTime: sortBy === 'time', pagination: pagination.create(page, pageCount, req.query), - title: '[[pages:flagged-posts]]' }; res.render('admin/manage/flags', data); }); diff --git a/src/views/admin/partials/menu.tpl b/src/views/admin/partials/menu.tpl index 9bc0c48d7e..ea481dcfb8 100644 --- a/src/views/admin/partials/menu.tpl +++ b/src/views/admin/partials/menu.tpl @@ -1,72 +1,72 @@