mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-30 18:46:01 +01:00 
			
		
		
		
	refactor: remove general menu from ACP (#8347)
* refactor: remove general menu from ACP * fix: incorrect translation keys, fixed tests
This commit is contained in:
		| @@ -1,11 +1,6 @@ | |||||||
| { | { | ||||||
|  | 	"dashboard": "Dashboard", | ||||||
| 	"section-general": "General", | 	"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", | 	"section-manage": "Manage", | ||||||
| 	"manage/categories": "Categories", | 	"manage/categories": "Categories", | ||||||
| @@ -22,17 +17,22 @@ | |||||||
|  |  | ||||||
| 	"section-settings": "Settings", | 	"section-settings": "Settings", | ||||||
| 	"settings/general": "General", | 	"settings/general": "General", | ||||||
|  | 	"settings/homepage": "Home Page", | ||||||
|  | 	"settings/navigation": "Navigation", | ||||||
| 	"settings/reputation": "Reputation", | 	"settings/reputation": "Reputation", | ||||||
| 	"settings/email": "Email", | 	"settings/email": "Email", | ||||||
| 	"settings/user": "User", | 	"settings/user": "User", | ||||||
| 	"settings/group": "Group", | 	"settings/group": "Group", | ||||||
| 	"settings/guest": "Guests", | 	"settings/guest": "Guests", | ||||||
| 	"settings/uploads": "Uploads", | 	"settings/uploads": "Uploads", | ||||||
|  | 	"settings/languages": "Languages", | ||||||
| 	"settings/post": "Post", | 	"settings/post": "Post", | ||||||
| 	"settings/chat": "Chat", | 	"settings/chat": "Chat", | ||||||
| 	"settings/pagination": "Pagination", | 	"settings/pagination": "Pagination", | ||||||
| 	"settings/tags": "Tags", | 	"settings/tags": "Tags", | ||||||
| 	"settings/notifications": "Notifications", | 	"settings/notifications": "Notifications", | ||||||
|  | 	"settings/sounds": "Sounds", | ||||||
|  | 	"settings/social": "Social", | ||||||
| 	"settings/cookies": "Cookies", | 	"settings/cookies": "Cookies", | ||||||
| 	"settings/web-crawler": "Web Crawler", | 	"settings/web-crawler": "Web Crawler", | ||||||
| 	"settings/sockets": "Sockets", | 	"settings/sockets": "Sockets", | ||||||
|   | |||||||
| @@ -260,7 +260,7 @@ paths: | |||||||
|                                 imageClass: |                                 imageClass: | ||||||
|                                   type: string |                                   type: string | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/dashboard: |   /api/admin/dashboard: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
| @@ -355,7 +355,7 @@ paths: | |||||||
|                             type: string |                             type: string | ||||||
|                             description: An ISO 8601 formatted date string (complementing `timestamp`) |                             description: An ISO 8601 formatted date string (complementing `timestamp`) | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/languages: |   /api/admin/settings/languages: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
| @@ -391,7 +391,7 @@ paths: | |||||||
|                         type: integer |                         type: integer | ||||||
|                         description: Whether the forum will attempt to guess language based on browser's `Accept-Language` header |                         description: Whether the forum will attempt to guess language based on browser's `Accept-Language` header | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/sounds: |   /api/admin/settings/sounds: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
| @@ -460,7 +460,7 @@ paths: | |||||||
|                                   selected: |                                   selected: | ||||||
|                                     type: boolean |                                     type: boolean | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/navigation: |   /api/admin/settings/navigation: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
| @@ -568,7 +568,7 @@ paths: | |||||||
|                         type: array |                         type: array | ||||||
|                         description: A clone of `enabled` |                         description: A clone of `enabled` | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/homepage: |   /api/admin/settings/homepage: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
| @@ -592,7 +592,7 @@ paths: | |||||||
|                             name: |                             name: | ||||||
|                               type: string |                               type: string | ||||||
|                   - $ref: components/schemas/CommonProps.yaml#/CommonProps |                   - $ref: components/schemas/CommonProps.yaml#/CommonProps | ||||||
|   /api/admin/general/social: |   /api/admin/settings/social: | ||||||
|     get: |     get: | ||||||
|       tags: |       tags: | ||||||
|         - admin |         - admin | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ | |||||||
|  |  | ||||||
| 			// If index is requested, load the dashboard | 			// If index is requested, load the dashboard | ||||||
| 			if (url === 'admin') { | 			if (url === 'admin') { | ||||||
| 				url = 'admin/general/dashboard'; | 				url = 'admin/dashboard'; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			url = [config.relative_path, url].join('/'); | 			url = [config.relative_path, url].join('/'); | ||||||
| @@ -100,12 +100,17 @@ | |||||||
| 				pageTitle = '[[admin/menu:section-plugins]] > ' + mainTitle; | 				pageTitle = '[[admin/menu:section-plugins]] > ' + mainTitle; | ||||||
| 			} else { | 			} else { | ||||||
| 				var matches = url.match(/admin\/(.+?)\/(.+?)$/); | 				var matches = url.match(/admin\/(.+?)\/(.+?)$/); | ||||||
| 				mainTitle = '[[admin/menu:' + matches[1] + '/' + matches[2] + ']]'; | 				if (matches) { | ||||||
| 				pageTitle = '[[admin/menu:section-' + | 					mainTitle = '[[admin/menu:' + matches[1] + '/' + matches[2] + ']]'; | ||||||
| 					(matches[1] === 'development' ? 'advanced' : matches[1]) + | 					pageTitle = '[[admin/menu:section-' + | ||||||
| 					']]' + (matches[2] ? (' > ' + mainTitle) : ''); | 						(matches[1] === 'development' ? 'advanced' : matches[1]) + | ||||||
| 				if (matches[2] === 'settings') { | 						']]' + (matches[2] ? (' > ' + mainTitle) : ''); | ||||||
| 					mainTitle = translator.compile('admin/menu:settings.page-title', mainTitle); | 					if (matches[2] === 'settings') { | ||||||
|  | 						mainTitle = translator.compile('admin/menu:settings.page-title', mainTitle); | ||||||
|  | 					} | ||||||
|  | 				} else { | ||||||
|  | 					mainTitle = '[[admin/menu:dashboard]]'; | ||||||
|  | 					pageTitle = '[[admin/menu:dashboard]]'; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress'], function (semver, Chart, translator, Benchpress) { | define('admin/dashboard', ['semver', 'Chart', 'translator', 'benchpress'], function (semver, Chart, translator, Benchpress) { | ||||||
| 	var	Admin = {}; | 	var	Admin = {}; | ||||||
| 	var	intervals = { | 	var	intervals = { | ||||||
| 		rooms: false, | 		rooms: false, | ||||||
| @@ -64,19 +64,19 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' | |||||||
| 
 | 
 | ||||||
| 		var html = '<div class="text-center pull-left">' + | 		var html = '<div class="text-center pull-left">' + | ||||||
| 						'<span class="formatted-number">' + data.onlineRegisteredCount + '</span>' + | 						'<span class="formatted-number">' + data.onlineRegisteredCount + '</span>' + | ||||||
| 						'<div class="stat">[[admin/general/dashboard:active-users.users]]</div>' + | 						'<div class="stat">[[admin/dashboard:active-users.users]]</div>' + | ||||||
| 					'</div>' + | 					'</div>' + | ||||||
| 					'<div class="text-center pull-left">' + | 					'<div class="text-center pull-left">' + | ||||||
| 						'<span class="formatted-number">' + data.onlineGuestCount + '</span>' + | 						'<span class="formatted-number">' + data.onlineGuestCount + '</span>' + | ||||||
| 						'<div class="stat">[[admin/general/dashboard:active-users.guests]]</div>' + | 						'<div class="stat">[[admin/dashboard:active-users.guests]]</div>' + | ||||||
| 					'</div>' + | 					'</div>' + | ||||||
| 					'<div class="text-center pull-left">' + | 					'<div class="text-center pull-left">' + | ||||||
| 						'<span class="formatted-number">' + (data.onlineRegisteredCount + data.onlineGuestCount) + '</span>' + | 						'<span class="formatted-number">' + (data.onlineRegisteredCount + data.onlineGuestCount) + '</span>' + | ||||||
| 						'<div class="stat">[[admin/general/dashboard:active-users.total]]</div>' + | 						'<div class="stat">[[admin/dashboard:active-users.total]]</div>' + | ||||||
| 					'</div>' + | 					'</div>' + | ||||||
| 					'<div class="text-center pull-left">' + | 					'<div class="text-center pull-left">' + | ||||||
| 						'<span class="formatted-number">' + data.socketCount + '</span>' + | 						'<span class="formatted-number">' + data.socketCount + '</span>' + | ||||||
| 						'<div class="stat">[[admin/general/dashboard:active-users.connections]]</div>' + | 						'<div class="stat">[[admin/dashboard:active-users.connections]]</div>' + | ||||||
| 					'</div>'; | 					'</div>'; | ||||||
| 
 | 
 | ||||||
| 		updateRegisteredGraph(data.onlineRegisteredCount, data.onlineGuestCount); | 		updateRegisteredGraph(data.onlineRegisteredCount, data.onlineGuestCount); | ||||||
| @@ -144,18 +144,18 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' | |||||||
| 
 | 
 | ||||||
| 		var t = translator.Translator.create(); | 		var t = translator.Translator.create(); | ||||||
| 		Promise.all([ | 		Promise.all([ | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.page-views', []), | 			t.translateKey('admin/dashboard:graphs.page-views', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.page-views-registered', []), | 			t.translateKey('admin/dashboard:graphs.page-views-registered', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.page-views-guest', []), | 			t.translateKey('admin/dashboard:graphs.page-views-guest', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.page-views-bot', []), | 			t.translateKey('admin/dashboard:graphs.page-views-bot', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.unique-visitors', []), | 			t.translateKey('admin/dashboard:graphs.unique-visitors', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.registered-users', []), | 			t.translateKey('admin/dashboard:graphs.registered-users', []), | ||||||
| 			t.translateKey('admin/general/dashboard:graphs.anonymous-users', []), | 			t.translateKey('admin/dashboard:graphs.anonymous-users', []), | ||||||
| 			t.translateKey('admin/general/dashboard:on-categories', []), | 			t.translateKey('admin/dashboard:on-categories', []), | ||||||
| 			t.translateKey('admin/general/dashboard:reading-posts', []), | 			t.translateKey('admin/dashboard:reading-posts', []), | ||||||
| 			t.translateKey('admin/general/dashboard:browsing-topics', []), | 			t.translateKey('admin/dashboard:browsing-topics', []), | ||||||
| 			t.translateKey('admin/general/dashboard:recent', []), | 			t.translateKey('admin/dashboard:recent', []), | ||||||
| 			t.translateKey('admin/general/dashboard:unread', []), | 			t.translateKey('admin/dashboard:unread', []), | ||||||
| 		]).then(function (translations) { | 		]).then(function (translations) { | ||||||
| 			var data = { | 			var data = { | ||||||
| 				labels: trafficLabels, | 				labels: trafficLabels, | ||||||
| @@ -334,7 +334,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' | |||||||
| 				$(this).addClass('active'); | 				$(this).addClass('active'); | ||||||
| 
 | 
 | ||||||
| 				require(['translator'], function (translator) { | 				require(['translator'], function (translator) { | ||||||
| 					translator.translate('[[admin/general/dashboard:page-views-custom]]', function (translated) { | 					translator.translate('[[admin/dashboard:page-views-custom]]', function (translated) { | ||||||
| 						$('[data-action="updateGraph"][data-units="custom"]').text(translated); | 						$('[data-action="updateGraph"][data-units="custom"]').text(translated); | ||||||
| 					}); | 					}); | ||||||
| 				}); | 				}); | ||||||
| @@ -345,7 +345,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' | |||||||
| 
 | 
 | ||||||
| 				Benchpress.parse('admin/partials/pageviews-range-select', {}, function (html) { | 				Benchpress.parse('admin/partials/pageviews-range-select', {}, function (html) { | ||||||
| 					var modal = bootbox.dialog({ | 					var modal = bootbox.dialog({ | ||||||
| 						title: '[[admin/general/dashboard:page-views-custom]]', | 						title: '[[admin/dashboard:page-views-custom]]', | ||||||
| 						message: html, | 						message: html, | ||||||
| 						buttons: { | 						buttons: { | ||||||
| 							submit: { | 							submit: { | ||||||
| @@ -501,7 +501,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' | |||||||
| 	function updateTopicsGraph(topics) { | 	function updateTopicsGraph(topics) { | ||||||
| 		if (!topics.length) { | 		if (!topics.length) { | ||||||
| 			topics = [{ | 			topics = [{ | ||||||
| 				title: '[[admin/general/dashboard:no-users-browsing]]', | 				title: '[[admin/dashboard:no-users-browsing]]', | ||||||
| 				count: 1, | 				count: 1, | ||||||
| 			}]; | 			}]; | ||||||
| 		} | 		} | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| define('admin/general/languages', ['admin/settings'], function (Settings) { |  | ||||||
| 	var Languages = {}; |  | ||||||
|  |  | ||||||
| 	Languages.init = function () { |  | ||||||
| 		Settings.prepare(); |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	return Languages; |  | ||||||
| }); |  | ||||||
| @@ -122,7 +122,7 @@ define('admin/settings', ['uploader'], function (uploader) { | |||||||
| 					accept: uploadBtn.attr('data-accept'), | 					accept: uploadBtn.attr('data-accept'), | ||||||
| 				}, function (image) { | 				}, function (image) { | ||||||
| 					// need to move these into template, ex data-callback | 					// need to move these into template, ex data-callback | ||||||
| 					if (ajaxify.currentPage === 'admin/general/sounds') { | 					if (ajaxify.currentPage === 'admin/settings/sounds') { | ||||||
| 						ajaxify.refresh(); | 						ajaxify.refresh(); | ||||||
| 					} else { | 					} else { | ||||||
| 						$('#' + uploadBtn.attr('data-target')).val(image); | 						$('#' + uploadBtn.attr('data-target')).val(image); | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| define('admin/general/homepage', ['admin/settings'], function () { | define('admin/settings/homepage', ['admin/settings'], function () { | ||||||
| 	function toggleCustomRoute() { | 	function toggleCustomRoute() { | ||||||
| 		if ($('[data-field="homePageRoute"]').val()) { | 		if ($('[data-field="homePageRoute"]').val()) { | ||||||
| 			$('#homePageCustom').hide(); | 			$('#homePageCustom').hide(); | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| define('admin/general/navigation', ['translator', 'iconSelect', 'benchpress', 'jqueryui'], function (translator, iconSelect, Benchpress) { | define('admin/settings/navigation', ['translator', 'iconSelect', 'benchpress', 'jqueryui'], function (translator, iconSelect, Benchpress) { | ||||||
| 	var navigation = {}; | 	var navigation = {}; | ||||||
| 	var available; | 	var available; | ||||||
| 
 | 
 | ||||||
| @@ -70,7 +70,7 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'benchpress', 'j | |||||||
| 		data.title = translator.escape(data.title); | 		data.title = translator.escape(data.title); | ||||||
| 		data.text = translator.escape(data.text); | 		data.text = translator.escape(data.text); | ||||||
| 		data.groups = ajaxify.data.groups; | 		data.groups = ajaxify.data.groups; | ||||||
| 		Benchpress.parse('admin/general/navigation', 'navigation', { navigation: [data] }, function (li) { | 		Benchpress.parse('admin/settings/navigation', 'navigation', { navigation: [data] }, function (li) { | ||||||
| 			translator.translate(li, function (li) { | 			translator.translate(li, function (li) { | ||||||
| 				li = $(translator.unescape(li)); | 				li = $(translator.unescape(li)); | ||||||
| 				el.after(li); | 				el.after(li); | ||||||
| @@ -78,7 +78,7 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'benchpress', 'j | |||||||
| 			}); | 			}); | ||||||
| 		}); | 		}); | ||||||
| 
 | 
 | ||||||
| 		Benchpress.parse('admin/general/navigation', 'enabled', { enabled: [data] }, function (li) { | 		Benchpress.parse('admin/settings/navigation', 'enabled', { enabled: [data] }, function (li) { | ||||||
| 			translator.translate(li, function (li) { | 			translator.translate(li, function (li) { | ||||||
| 				li = $(translator.unescape(li)); | 				li = $(translator.unescape(li)); | ||||||
| 				$('#enabled').append(li); | 				$('#enabled').append(li); | ||||||
| @@ -146,7 +146,7 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'benchpress', 'j | |||||||
| 	function toggle() { | 	function toggle() { | ||||||
| 		var btn = $(this); | 		var btn = $(this); | ||||||
| 		var disabled = btn.hasClass('btn-success'); | 		var disabled = btn.hasClass('btn-success'); | ||||||
| 		translator.translate(disabled ? '[[admin/general/navigation:btn.disable]]' : '[[admin/general/navigation:btn.enable]]', function (html) { | 		translator.translate(disabled ? '[[admin/settings/navigation:btn.disable]]' : '[[admin/settings/navigation:btn.enable]]', function (html) { | ||||||
| 			btn.toggleClass('btn-warning').toggleClass('btn-success').html(html); | 			btn.toggleClass('btn-warning').toggleClass('btn-success').html(html); | ||||||
| 			btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : ''); | 			btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : ''); | ||||||
| 		}); | 		}); | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| define('admin/general/social', [], function () { | define('admin/settings/social', [], function () { | ||||||
| 	var social = {}; | 	var social = {}; | ||||||
| 
 | 
 | ||||||
| 	social.init = function () { | 	social.init = function () { | ||||||
| @@ -18,7 +18,7 @@ define('admin/general/social', [], function () { | |||||||
| 					return app.alertError(err); | 					return app.alertError(err); | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				app.alertSuccess('[[admin/general/social:save-success]]'); | 				app.alertSuccess('[[admin/settings/social:save-success]]'); | ||||||
| 			}); | 			}); | ||||||
| 		}); | 		}); | ||||||
| 	}; | 	}; | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| define('admin/general/sounds', ['sounds', 'settings', 'admin/settings'], function (Sounds, Settings, AdminSettings) { | define('admin/settings/sounds', ['sounds', 'settings', 'admin/settings'], function (Sounds, Settings, AdminSettings) { | ||||||
| 	var	SoundsAdmin = {}; | 	var	SoundsAdmin = {}; | ||||||
| 
 | 
 | ||||||
| 	SoundsAdmin.init = function () { | 	SoundsAdmin.init = function () { | ||||||
| @@ -137,7 +137,7 @@ function initDict(language, callback) { | |||||||
|  |  | ||||||
| 					var title = namespace; | 					var title = namespace; | ||||||
| 					if (/admin\/general\/dashboard$/.test(title)) { | 					if (/admin\/general\/dashboard$/.test(title)) { | ||||||
| 						title = '[[admin/menu:general/dashboard]]'; | 						title = '[[admin/menu:dashboard]]'; | ||||||
| 					} else { | 					} else { | ||||||
| 						title = title.match(/admin\/(.+?)\/(.+?)$/); | 						title = title.match(/admin\/(.+?)\/(.+?)$/); | ||||||
| 						title = '[[admin/menu:section-' + | 						title = '[[admin/menu:section-' + | ||||||
|   | |||||||
| @@ -22,13 +22,8 @@ var adminController = { | |||||||
| 	database: require('./admin/database'), | 	database: require('./admin/database'), | ||||||
| 	cache: require('./admin/cache'), | 	cache: require('./admin/cache'), | ||||||
| 	plugins: require('./admin/plugins'), | 	plugins: require('./admin/plugins'), | ||||||
| 	languages: require('./admin/languages'), |  | ||||||
| 	settings: require('./admin/settings'), | 	settings: require('./admin/settings'), | ||||||
| 	logger: require('./admin/logger'), | 	logger: require('./admin/logger'), | ||||||
| 	sounds: require('./admin/sounds'), |  | ||||||
| 	homepage: require('./admin/homepage'), |  | ||||||
| 	navigation: require('./admin/navigation'), |  | ||||||
| 	social: require('./admin/social'), |  | ||||||
| 	themes: require('./admin/themes'), | 	themes: require('./admin/themes'), | ||||||
| 	users: require('./admin/users'), | 	users: require('./admin/users'), | ||||||
| 	uploads: require('./admin/uploads'), | 	uploads: require('./admin/uploads'), | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ dashboardController.get = async function (req, res) { | |||||||
| 	]); | 	]); | ||||||
| 	const version = nconf.get('version'); | 	const version = nconf.get('version'); | ||||||
|  |  | ||||||
| 	res.render('admin/general/dashboard', { | 	res.render('admin/dashboard', { | ||||||
| 		version: version, | 		version: version, | ||||||
| 		lookupFailed: latestVersion === null, | 		lookupFailed: latestVersion === null, | ||||||
| 		latestVersion: latestVersion, | 		latestVersion: latestVersion, | ||||||
| @@ -41,14 +41,14 @@ async function getNotices() { | |||||||
| 	const notices = [ | 	const notices = [ | ||||||
| 		{ | 		{ | ||||||
| 			done: !meta.reloadRequired, | 			done: !meta.reloadRequired, | ||||||
| 			doneText: '[[admin/general/dashboard:restart-not-required]]', | 			doneText: '[[admin/dashboard:restart-not-required]]', | ||||||
| 			notDoneText: '[[admin/general/dashboard:restart-required]]', | 			notDoneText: '[[admin/dashboard:restart-required]]', | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			done: plugins.hasListeners('filter:search.query'), | 			done: plugins.hasListeners('filter:search.query'), | ||||||
| 			doneText: '[[admin/general/dashboard:search-plugin-installed]]', | 			doneText: '[[admin/dashboard:search-plugin-installed]]', | ||||||
| 			notDoneText: '[[admin/general/dashboard:search-plugin-not-installed]]', | 			notDoneText: '[[admin/dashboard:search-plugin-not-installed]]', | ||||||
| 			tooltip: '[[admin/general/dashboard:search-plugin-tooltip]]', | 			tooltip: '[[admin/dashboard:search-plugin-tooltip]]', | ||||||
| 			link: '/admin/extend/plugins', | 			link: '/admin/extend/plugins', | ||||||
| 		}, | 		}, | ||||||
| 	]; | 	]; | ||||||
| @@ -56,7 +56,7 @@ async function getNotices() { | |||||||
| 	if (global.env !== 'production') { | 	if (global.env !== 'production') { | ||||||
| 		notices.push({ | 		notices.push({ | ||||||
| 			done: false, | 			done: false, | ||||||
| 			notDoneText: '[[admin/general/dashboard:running-in-development]]', | 			notDoneText: '[[admin/dashboard:running-in-development]]', | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -120,10 +120,10 @@ async function getStats() { | |||||||
| 		getStatsForSet('posts:pid', 'postCount'), | 		getStatsForSet('posts:pid', 'postCount'), | ||||||
| 		getStatsForSet('topics:tid', 'topicCount'), | 		getStatsForSet('topics:tid', 'topicCount'), | ||||||
| 	]); | 	]); | ||||||
| 	results[0].name = '[[admin/general/dashboard:unique-visitors]]'; | 	results[0].name = '[[admin/dashboard:unique-visitors]]'; | ||||||
| 	results[1].name = '[[admin/general/dashboard:new-users]]'; | 	results[1].name = '[[admin/dashboard:new-users]]'; | ||||||
| 	results[2].name = '[[admin/general/dashboard:posts]]'; | 	results[2].name = '[[admin/dashboard:posts]]'; | ||||||
| 	results[3].name = '[[admin/general/dashboard:topics]]'; | 	results[3].name = '[[admin/dashboard:topics]]'; | ||||||
| 	cache.set('admin:stats', results, 600000); | 	cache.set('admin:stats', results, 600000); | ||||||
| 	return results; | 	return results; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
| const helpers = require('../helpers'); |  | ||||||
|  |  | ||||||
| const homePageController = module.exports; |  | ||||||
|  |  | ||||||
| homePageController.get = async function (req, res) { |  | ||||||
| 	const routes = await helpers.getHomePageRoutes(req.uid); |  | ||||||
| 	res.render('admin/general/homepage', { routes: routes }); |  | ||||||
| }; |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
| const languages = require('../../languages'); |  | ||||||
| const meta = require('../../meta'); |  | ||||||
|  |  | ||||||
| const languagesController = module.exports; |  | ||||||
|  |  | ||||||
| languagesController.get = async function (req, res) { |  | ||||||
| 	const languageData = await languages.list(); |  | ||||||
| 	languageData.forEach(function (language) { |  | ||||||
| 		language.selected = language.code === meta.config.defaultLang; |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	res.render('admin/general/languages', { |  | ||||||
| 		languages: languageData, |  | ||||||
| 		autoDetectLang: meta.config.autoDetectLang, |  | ||||||
| 	}); |  | ||||||
| }; |  | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| const navigationAdmin = require('../../navigation/admin'); |  | ||||||
| const groups = require('../../groups'); |  | ||||||
|  |  | ||||||
| const navigationController = module.exports; |  | ||||||
|  |  | ||||||
| navigationController.get = async function (req, res) { |  | ||||||
| 	const [admin, allGroups] = await Promise.all([ |  | ||||||
| 		navigationAdmin.getAdmin(), |  | ||||||
| 		groups.getNonPrivilegeGroups('groups:createtime', 0, -1), |  | ||||||
| 	]); |  | ||||||
|  |  | ||||||
| 	allGroups.sort((a, b) => b.system - a.system); |  | ||||||
|  |  | ||||||
| 	admin.groups = allGroups.map(group => ({ name: group.name, displayName: group.displayName })); |  | ||||||
| 	admin.enabled.forEach(function (enabled, index) { |  | ||||||
| 		enabled.index = index; |  | ||||||
| 		enabled.selected = index === 0; |  | ||||||
|  |  | ||||||
| 		enabled.groups = admin.groups.map(function (group) { |  | ||||||
| 			return { |  | ||||||
| 				displayName: group.displayName, |  | ||||||
| 				selected: enabled.groups.includes(group.name), |  | ||||||
| 			}; |  | ||||||
| 		}); |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	admin.available.forEach(function (available) { |  | ||||||
| 		available.groups = admin.groups; |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	admin.navigation = admin.enabled.slice(); |  | ||||||
|  |  | ||||||
| 	res.render('admin/general/navigation', admin); |  | ||||||
| }; |  | ||||||
| @@ -4,25 +4,21 @@ const meta = require('../../meta'); | |||||||
| const emailer = require('../../emailer'); | const emailer = require('../../emailer'); | ||||||
| const notifications = require('../../notifications'); | const notifications = require('../../notifications'); | ||||||
| const groups = require('../../groups'); | const groups = require('../../groups'); | ||||||
|  | const languages = require('../../languages'); | ||||||
|  | const plugins = require('../../plugins'); | ||||||
|  | const navigationAdmin = require('../../navigation/admin'); | ||||||
|  | const social = require('../../social'); | ||||||
|  |  | ||||||
|  | const helpers = require('../helpers'); | ||||||
| const settingsController = module.exports; | const settingsController = module.exports; | ||||||
|  |  | ||||||
| settingsController.get = async function (req, res, next) { | settingsController.get = async function (req, res) { | ||||||
| 	const term = req.params.term ? req.params.term : 'general'; | 	const term = req.params.term || 'general'; | ||||||
|  | 	res.render('admin/settings/' + term); | ||||||
| 	if (term === 'email') { |  | ||||||
| 		await renderEmail(req, res, next); |  | ||||||
| 	} else if (term === 'user') { |  | ||||||
| 		await renderUser(req, res, next); |  | ||||||
| 	} else if (term === 'post') { |  | ||||||
| 		await renderPost(req, res, next); |  | ||||||
| 	} else { |  | ||||||
| 		res.render('admin/settings/' + term); |  | ||||||
| 	} |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| async function renderEmail(req, res) { | settingsController.email = async (req, res) => { | ||||||
| 	const emails = await emailer.getTemplates(meta.config); | 	const emails = await emailer.getTemplates(meta.config); | ||||||
|  |  | ||||||
| 	res.render('admin/settings/email', { | 	res.render('admin/settings/email', { | ||||||
| @@ -30,9 +26,9 @@ async function renderEmail(req, res) { | |||||||
| 		sendable: emails.filter(e => !e.path.includes('_plaintext') && !e.path.includes('partials')), | 		sendable: emails.filter(e => !e.path.includes('_plaintext') && !e.path.includes('partials')), | ||||||
| 		services: emailer.listServices(), | 		services: emailer.listServices(), | ||||||
| 	}); | 	}); | ||||||
| } | }; | ||||||
|  |  | ||||||
| async function renderUser(req, res) { | settingsController.user = async (req, res) => { | ||||||
| 	const notificationTypes = await notifications.getAllNotificationTypes(); | 	const notificationTypes = await notifications.getAllNotificationTypes(); | ||||||
| 	const notificationSettings = notificationTypes.map(function (type) { | 	const notificationSettings = notificationTypes.map(function (type) { | ||||||
| 		return { | 		return { | ||||||
| @@ -43,11 +39,97 @@ async function renderUser(req, res) { | |||||||
| 	res.render('admin/settings/user', { | 	res.render('admin/settings/user', { | ||||||
| 		notificationSettings: notificationSettings, | 		notificationSettings: notificationSettings, | ||||||
| 	}); | 	}); | ||||||
| } | }; | ||||||
|  |  | ||||||
| async function renderPost(req, res) { | settingsController.post = async (req, res) => { | ||||||
| 	const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1); | 	const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1); | ||||||
| 	res.render('admin/settings/post', { | 	res.render('admin/settings/post', { | ||||||
| 		groupsExemptFromPostQueue: groupData, | 		groupsExemptFromPostQueue: groupData, | ||||||
| 	}); | 	}); | ||||||
| } | }; | ||||||
|  |  | ||||||
|  | settingsController.languages = async function (req, res) { | ||||||
|  | 	const languageData = await languages.list(); | ||||||
|  | 	languageData.forEach(function (language) { | ||||||
|  | 		language.selected = language.code === meta.config.defaultLang; | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	res.render('admin/settings/languages', { | ||||||
|  | 		languages: languageData, | ||||||
|  | 		autoDetectLang: meta.config.autoDetectLang, | ||||||
|  | 	}); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | settingsController.sounds = async function (req, res) { | ||||||
|  | 	const types = [ | ||||||
|  | 		'notification', | ||||||
|  | 		'chat-incoming', | ||||||
|  | 		'chat-outgoing', | ||||||
|  | 	]; | ||||||
|  | 	const settings = await meta.configs.getFields(types) || {}; | ||||||
|  | 	var output = {}; | ||||||
|  |  | ||||||
|  | 	types.forEach(function (type) { | ||||||
|  | 		var soundpacks = plugins.soundpacks.map(function (pack) { | ||||||
|  | 			var sounds = Object.keys(pack.sounds).map(function (soundName) { | ||||||
|  | 				var value = pack.name + ' | ' + soundName; | ||||||
|  | 				return { | ||||||
|  | 					name: soundName, | ||||||
|  | 					value: value, | ||||||
|  | 					selected: value === settings[type], | ||||||
|  | 				}; | ||||||
|  | 			}); | ||||||
|  |  | ||||||
|  | 			return { | ||||||
|  | 				name: pack.name, | ||||||
|  | 				sounds: sounds, | ||||||
|  | 			}; | ||||||
|  | 		}); | ||||||
|  |  | ||||||
|  | 		output[type + '-sound'] = soundpacks; | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	res.render('admin/settings/sounds', output); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | settingsController.navigation = async function (req, res) { | ||||||
|  | 	const [admin, allGroups] = await Promise.all([ | ||||||
|  | 		navigationAdmin.getAdmin(), | ||||||
|  | 		groups.getNonPrivilegeGroups('groups:createtime', 0, -1), | ||||||
|  | 	]); | ||||||
|  |  | ||||||
|  | 	allGroups.sort((a, b) => b.system - a.system); | ||||||
|  |  | ||||||
|  | 	admin.groups = allGroups.map(group => ({ name: group.name, displayName: group.displayName })); | ||||||
|  | 	admin.enabled.forEach(function (enabled, index) { | ||||||
|  | 		enabled.index = index; | ||||||
|  | 		enabled.selected = index === 0; | ||||||
|  |  | ||||||
|  | 		enabled.groups = admin.groups.map(function (group) { | ||||||
|  | 			return { | ||||||
|  | 				displayName: group.displayName, | ||||||
|  | 				selected: enabled.groups.includes(group.name), | ||||||
|  | 			}; | ||||||
|  | 		}); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	admin.available.forEach(function (available) { | ||||||
|  | 		available.groups = admin.groups; | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	admin.navigation = admin.enabled.slice(); | ||||||
|  |  | ||||||
|  | 	res.render('admin/settings/navigation', admin); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | settingsController.homepage = async function (req, res) { | ||||||
|  | 	const routes = await helpers.getHomePageRoutes(req.uid); | ||||||
|  | 	res.render('admin/settings/homepage', { routes: routes }); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | settingsController.social = async function (req, res) { | ||||||
|  | 	const posts = await social.getPostSharing(); | ||||||
|  | 	res.render('admin/settings/social', { | ||||||
|  | 		posts: posts, | ||||||
|  | 	}); | ||||||
|  | }; | ||||||
|   | |||||||
| @@ -1,12 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
| const social = require('../../social'); |  | ||||||
|  |  | ||||||
| const socialController = module.exports; |  | ||||||
|  |  | ||||||
| socialController.get = async function (req, res) { |  | ||||||
| 	const posts = await social.getPostSharing(); |  | ||||||
| 	res.render('admin/general/social', { |  | ||||||
| 		posts: posts, |  | ||||||
| 	}); |  | ||||||
| }; |  | ||||||
| @@ -1,38 +0,0 @@ | |||||||
| 'use strict'; |  | ||||||
|  |  | ||||||
| const plugins = require('../../plugins'); |  | ||||||
| const meta = require('../../meta'); |  | ||||||
|  |  | ||||||
| const soundsController = module.exports; |  | ||||||
|  |  | ||||||
| soundsController.get = async function (req, res) { |  | ||||||
| 	const types = [ |  | ||||||
| 		'notification', |  | ||||||
| 		'chat-incoming', |  | ||||||
| 		'chat-outgoing', |  | ||||||
| 	]; |  | ||||||
| 	const settings = await meta.configs.getFields(types) || {}; |  | ||||||
| 	var output = {}; |  | ||||||
|  |  | ||||||
| 	types.forEach(function (type) { |  | ||||||
| 		var soundpacks = plugins.soundpacks.map(function (pack) { |  | ||||||
| 			var sounds = Object.keys(pack.sounds).map(function (soundName) { |  | ||||||
| 				var value = pack.name + ' | ' + soundName; |  | ||||||
| 				return { |  | ||||||
| 					name: soundName, |  | ||||||
| 					value: value, |  | ||||||
| 					selected: value === settings[type], |  | ||||||
| 				}; |  | ||||||
| 			}); |  | ||||||
|  |  | ||||||
| 			return { |  | ||||||
| 				name: pack.name, |  | ||||||
| 				sounds: sounds, |  | ||||||
| 			}; |  | ||||||
| 		}); |  | ||||||
|  |  | ||||||
| 		output[type + '-sound'] = soundpacks; |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	res.render('admin/general/sounds', output); |  | ||||||
| }; |  | ||||||
| @@ -7,12 +7,7 @@ module.exports = function (app, middleware, controllers) { | |||||||
|  |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin', middleware, middlewares, controllers.admin.dashboard.get); | 	helpers.setupAdminPageRoute(app, '/admin', middleware, middlewares, controllers.admin.dashboard.get); | ||||||
|  |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/dashboard', middleware, middlewares, controllers.admin.dashboard.get); | 	helpers.setupAdminPageRoute(app, '/admin/dashboard', middleware, middlewares, controllers.admin.dashboard.get); | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/languages', middleware, middlewares, controllers.admin.languages.get); |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/sounds', middleware, middlewares, controllers.admin.sounds.get); |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/navigation', middleware, middlewares, controllers.admin.navigation.get); |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/homepage', middleware, middlewares, controllers.admin.homepage.get); |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/general/social', middleware, middlewares, controllers.admin.social.get); |  | ||||||
|  |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/manage/categories', middleware, middlewares, controllers.admin.categories.getAll); | 	helpers.setupAdminPageRoute(app, '/admin/manage/categories', middleware, middlewares, controllers.admin.categories.getAll); | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/manage/categories/:category_id', middleware, middlewares, controllers.admin.categories.get); | 	helpers.setupAdminPageRoute(app, '/admin/manage/categories/:category_id', middleware, middlewares, controllers.admin.categories.get); | ||||||
| @@ -43,6 +38,14 @@ module.exports = function (app, middleware, controllers) { | |||||||
| 	helpers.setupAdminPageRoute(app, '/admin/manage/uploads', middleware, middlewares, controllers.admin.uploads.get); | 	helpers.setupAdminPageRoute(app, '/admin/manage/uploads', middleware, middlewares, controllers.admin.uploads.get); | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/manage/digest', middleware, middlewares, controllers.admin.digest.get); | 	helpers.setupAdminPageRoute(app, '/admin/manage/digest', middleware, middlewares, controllers.admin.digest.get); | ||||||
|  |  | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/email', middleware, middlewares, controllers.admin.settings.email); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/user', middleware, middlewares, controllers.admin.settings.user); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/post', middleware, middlewares, controllers.admin.settings.post); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/languages', middleware, middlewares, controllers.admin.settings.languages); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/sounds', middleware, middlewares, controllers.admin.settings.sounds); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/navigation', middleware, middlewares, controllers.admin.settings.navigation); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/homepage', middleware, middlewares, controllers.admin.settings.homepage); | ||||||
|  | 	helpers.setupAdminPageRoute(app, '/admin/settings/social', middleware, middlewares, controllers.admin.settings.social); | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/settings/:term?', middleware, middlewares, controllers.admin.settings.get); | 	helpers.setupAdminPageRoute(app, '/admin/settings/:term?', middleware, middlewares, controllers.admin.settings.get); | ||||||
|  |  | ||||||
| 	helpers.setupAdminPageRoute(app, '/admin/appearance/:term?', middleware, middlewares, controllers.admin.appearance.get); | 	helpers.setupAdminPageRoute(app, '/admin/appearance/:term?', middleware, middlewares, controllers.admin.appearance.get); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| 	<div class="col-lg-9"> | 	<div class="col-lg-9"> | ||||||
| 		<div class="panel panel-default" id="analytics-panel"> | 		<div class="panel panel-default" id="analytics-panel"> | ||||||
| 			<div class="panel-heading"> | 			<div class="panel-heading"> | ||||||
| 				[[admin/general/dashboard:forum-traffic]] | 				[[admin/dashboard:forum-traffic]] | ||||||
| 				<div class="pull-right"> | 				<div class="pull-right"> | ||||||
| 					<a id="view-as-json" href="{config.relative_path}/api/admin/analytics&type=hourly"><i class="fa fa-terminal"></i></a> | 					<a id="view-as-json" href="{config.relative_path}/api/admin/analytics&type=hourly"><i class="fa fa-terminal"></i></a> | ||||||
| 					<i class="fa fa-expand"></i> | 					<i class="fa fa-expand"></i> | ||||||
| @@ -16,19 +16,19 @@ | |||||||
| 				<div class="row"> | 				<div class="row"> | ||||||
| 					<div class="col-sm-3 hidden-xs text-center pageview-stats"> | 					<div class="col-sm-3 hidden-xs text-center pageview-stats"> | ||||||
| 						<div><strong id="pageViewsThirty">0</strong></div> | 						<div><strong id="pageViewsThirty">0</strong></div> | ||||||
| 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="days" data-amount="30">[[admin/general/dashboard:page-views-thirty]]</a></div> | 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="days" data-amount="30">[[admin/dashboard:page-views-thirty]]</a></div> | ||||||
| 					</div> | 					</div> | ||||||
| 					<div class="col-sm-3 text-center pageview-stats"> | 					<div class="col-sm-3 text-center pageview-stats"> | ||||||
| 						<div><strong id="pageViewsSeven">0</strong></div> | 						<div><strong id="pageViewsSeven">0</strong></div> | ||||||
| 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="days" data-amount="7">[[admin/general/dashboard:page-views-seven]]</a></div> | 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="days" data-amount="7">[[admin/dashboard:page-views-seven]]</a></div> | ||||||
| 					</div> | 					</div> | ||||||
| 					<div class="col-sm-3 hidden-xs text-center pageview-stats"> | 					<div class="col-sm-3 hidden-xs text-center pageview-stats"> | ||||||
| 						<div><strong id="pageViewsPastDay">0</strong></div> | 						<div><strong id="pageViewsPastDay">0</strong></div> | ||||||
| 						<div><a href="#" class="updatePageviewsGraph active" data-action="updateGraph" data-units="hours">[[admin/general/dashboard:page-views-last-day]]</a></div> | 						<div><a href="#" class="updatePageviewsGraph active" data-action="updateGraph" data-units="hours">[[admin/dashboard:page-views-last-day]]</a></div> | ||||||
| 					</div> | 					</div> | ||||||
| 					<div class="col-sm-3 text-center pageview-stats"> | 					<div class="col-sm-3 text-center pageview-stats"> | ||||||
| 						<div><strong><i class="fa fa-clock-o"></i></strong></div> | 						<div><strong><i class="fa fa-clock-o"></i></strong></div> | ||||||
| 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="custom">[[admin/general/dashboard:page-views-custom]]</a></div> | 						<div><a href="#" class="updatePageviewsGraph" data-action="updateGraph" data-units="custom">[[admin/dashboard:page-views-custom]]</a></div> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| @@ -40,16 +40,16 @@ | |||||||
| 					<thead> | 					<thead> | ||||||
| 						<tr> | 						<tr> | ||||||
| 							<th></th> | 							<th></th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.yesterday]]</th> | 							<th class="text-right">[[admin/dashboard:stats.yesterday]]</th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.today]]</th> | 							<th class="text-right">[[admin/dashboard:stats.today]]</th> | ||||||
| 							<th></th> | 							<th></th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.last-week]]</th> | 							<th class="text-right">[[admin/dashboard:stats.last-week]]</th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.this-week]]</th> | 							<th class="text-right">[[admin/dashboard:stats.this-week]]</th> | ||||||
| 							<th></th> | 							<th></th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.last-month]]</th> | 							<th class="text-right">[[admin/dashboard:stats.last-month]]</th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.this-month]]</th> | 							<th class="text-right">[[admin/dashboard:stats.this-month]]</th> | ||||||
| 							<th></th> | 							<th></th> | ||||||
| 							<th class="text-right">[[admin/general/dashboard:stats.all]]</th> | 							<th class="text-right">[[admin/dashboard:stats.all]]</th> | ||||||
| 						</tr> | 						</tr> | ||||||
| 					</thead> | 					</thead> | ||||||
| 					<tbody> | 					<tbody> | ||||||
| @@ -79,13 +79,13 @@ | |||||||
| 		<div class="row"> | 		<div class="row"> | ||||||
| 			<div class="col-lg-4"> | 			<div class="col-lg-4"> | ||||||
| 				<div class="panel panel-default"> | 				<div class="panel panel-default"> | ||||||
| 					<div class="panel-heading">[[admin/general/dashboard:anonymous-registered-users]]</div> | 					<div class="panel-heading">[[admin/dashboard:anonymous-registered-users]]</div> | ||||||
| 					<div class="panel-body"> | 					<div class="panel-body"> | ||||||
| 						<div class="graph-container pie-chart legend-down"> | 						<div class="graph-container pie-chart legend-down"> | ||||||
| 							<canvas id="analytics-registered"></canvas> | 							<canvas id="analytics-registered"></canvas> | ||||||
| 							<ul class="graph-legend" id="analytics-legend"> | 							<ul class="graph-legend" id="analytics-legend"> | ||||||
| 								<li><div class="registered"></div><span>(<span class="count"></span>) [[admin/general/dashboard:registered]]</span></li> | 								<li><div class="registered"></div><span>(<span class="count"></span>) [[admin/dashboard:registered]]</span></li> | ||||||
| 								<li><div class="anonymous"></div><span>(<span class="count"></span>) [[admin/general/dashboard:anonymous]]</span></li> | 								<li><div class="anonymous"></div><span>(<span class="count"></span>) [[admin/dashboard:anonymous]]</span></li> | ||||||
| 							</ul> | 							</ul> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| @@ -94,16 +94,16 @@ | |||||||
| 
 | 
 | ||||||
| 			<div class="col-lg-4"> | 			<div class="col-lg-4"> | ||||||
| 				<div class="panel panel-default"> | 				<div class="panel panel-default"> | ||||||
| 					<div class="panel-heading">[[admin/general/dashboard:user-presence]]</div> | 					<div class="panel-heading">[[admin/dashboard:user-presence]]</div> | ||||||
| 					<div class="panel-body"> | 					<div class="panel-body"> | ||||||
| 						<div class="graph-container pie-chart legend-down"> | 						<div class="graph-container pie-chart legend-down"> | ||||||
| 							<canvas id="analytics-presence"></canvas> | 							<canvas id="analytics-presence"></canvas> | ||||||
| 							<ul class="graph-legend" id="analytics-presence-legend"> | 							<ul class="graph-legend" id="analytics-presence-legend"> | ||||||
| 								<li><div class="reading-posts"></div><span>(<span class="count"></span>) [[admin/general/dashboard:reading-posts]]</span></li> | 								<li><div class="reading-posts"></div><span>(<span class="count"></span>) [[admin/dashboard:reading-posts]]</span></li> | ||||||
| 								<li><div class="on-categories"></div><span>(<span class="count"></span>) [[admin/general/dashboard:on-categories]]</span></li> | 								<li><div class="on-categories"></div><span>(<span class="count"></span>) [[admin/dashboard:on-categories]]</span></li> | ||||||
| 								<li><div class="browsing-topics"></div><span>(<span class="count"></span>) [[admin/general/dashboard:browsing-topics]]</span></li> | 								<li><div class="browsing-topics"></div><span>(<span class="count"></span>) [[admin/dashboard:browsing-topics]]</span></li> | ||||||
| 								<li><div class="recent"></div><span>(<span class="count"></span>) [[admin/general/dashboard:recent]]</span></li> | 								<li><div class="recent"></div><span>(<span class="count"></span>) [[admin/dashboard:recent]]</span></li> | ||||||
| 								<li><div class="unread"></div><span>(<span class="count"></span>) [[admin/general/dashboard:unread]]</span></li> | 								<li><div class="unread"></div><span>(<span class="count"></span>) [[admin/dashboard:unread]]</span></li> | ||||||
| 							</ul> | 							</ul> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| @@ -111,7 +111,7 @@ | |||||||
| 			</div> | 			</div> | ||||||
| 			<div class="col-lg-4"> | 			<div class="col-lg-4"> | ||||||
| 				<div class="panel panel-default"> | 				<div class="panel panel-default"> | ||||||
| 					<div class="panel-heading">[[admin/general/dashboard:high-presence-topics]]</div> | 					<div class="panel-heading">[[admin/dashboard:high-presence-topics]]</div> | ||||||
| 					<div class="panel-body"> | 					<div class="panel-body"> | ||||||
| 						<div class="graph-container pie-chart legend-down"> | 						<div class="graph-container pie-chart legend-down"> | ||||||
| 							<canvas id="analytics-topics"></canvas> | 							<canvas id="analytics-topics"></canvas> | ||||||
| @@ -125,74 +125,74 @@ | |||||||
| 
 | 
 | ||||||
| 	<div class="col-lg-3"> | 	<div class="col-lg-3"> | ||||||
| 		<div class="panel panel-default"> | 		<div class="panel panel-default"> | ||||||
| 			<div class="panel-heading">[[admin/general/dashboard:control-panel]]</div> | 			<div class="panel-heading">[[admin/dashboard:control-panel]]</div> | ||||||
| 			<div class="panel-body text-center"> | 			<div class="panel-body text-center"> | ||||||
| 				<p> | 				<p> | ||||||
| 					<button class="btn btn-block btn-warning restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/general/dashboard:restart]]</button> | 					<button class="btn btn-block btn-warning restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/dashboard:restart]]</button> | ||||||
| 					<button class="btn btn-block btn-danger rebuild-and-restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/general/dashboard:rebuild-and-restart]]</button> | 					<button class="btn btn-block btn-danger rebuild-and-restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/dashboard:rebuild-and-restart]]</button> | ||||||
| 				</p> | 				</p> | ||||||
| 				<!-- IF lastrestart --> | 				<!-- IF lastrestart --> | ||||||
| 				<p> | 				<p> | ||||||
| 					[[admin/general/dashboard:last-restarted-by]]<br /> | 					[[admin/dashboard:last-restarted-by]]<br /> | ||||||
| 					<a href="{config.relative_path}/uid/{lastrestart.uid}"><span class="label label-info">{lastrestart.user.username}</span></a> <span class="timeago" title="{lastrestart.timestampISO}"></span> | 					<a href="{config.relative_path}/uid/{lastrestart.uid}"><span class="label label-info">{lastrestart.user.username}</span></a> <span class="timeago" title="{lastrestart.timestampISO}"></span> | ||||||
| 				</p> | 				</p> | ||||||
| 				<!-- ENDIF lastrestart --> | 				<!-- ENDIF lastrestart --> | ||||||
| 				<p class="<!-- IF canRestart -->help-block<!-- ELSE -->alert alert-warning<!-- END -->"> | 				<p class="<!-- IF canRestart -->help-block<!-- ELSE -->alert alert-warning<!-- END -->"> | ||||||
| 					<!-- IF canRestart --> | 					<!-- IF canRestart --> | ||||||
| 					[[admin/general/dashboard:restart-warning]] | 					[[admin/dashboard:restart-warning]] | ||||||
| 					<!-- ELSE --> | 					<!-- ELSE --> | ||||||
| 					[[admin/general/dashboard:restart-disabled]] | 					[[admin/dashboard:restart-disabled]] | ||||||
| 					<!-- END --> | 					<!-- END --> | ||||||
| 				</p> | 				</p> | ||||||
| 				<p> | 				<p> | ||||||
| 					<a href="{config.relative_path}/admin/settings/advanced" class="btn btn-info btn-block" data-placement="bottom" data-toggle="tooltip" title="[[admin/general/dashboard:maintenance-mode-title]]">[[admin/general/dashboard:maintenance-mode]]</a> | 					<a href="{config.relative_path}/admin/settings/advanced" class="btn btn-info btn-block" data-placement="bottom" data-toggle="tooltip" title="[[admin/dashboard:maintenance-mode-title]]">[[admin/dashboard:maintenance-mode]]</a> | ||||||
| 				</p> | 				</p> | ||||||
| 
 | 
 | ||||||
| 				<hr /> | 				<hr /> | ||||||
| 				<span id="toggle-realtime">[[admin/general/dashboard:realtime-chart-updates]] <strong>OFF</strong> <i class="fa fa fa-toggle-off pointer"></i></span> | 				<span id="toggle-realtime">[[admin/dashboard:realtime-chart-updates]] <strong>OFF</strong> <i class="fa fa fa-toggle-off pointer"></i></span> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| 
 | 
 | ||||||
| 		<div class="panel panel-default"> | 		<div class="panel panel-default"> | ||||||
| 			<div class="panel-heading">[[admin/general/dashboard:active-users]]</div> | 			<div class="panel-heading">[[admin/dashboard:active-users]]</div> | ||||||
| 			<div class="panel-body"> | 			<div class="panel-body"> | ||||||
| 				<div id="active-users" class="stats"></div> | 				<div id="active-users" class="stats"></div> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| 
 | 
 | ||||||
| 		<div class="panel panel-default"> | 		<div class="panel panel-default"> | ||||||
| 			<div class="panel-heading">[[admin/general/dashboard:updates]]</div> | 			<div class="panel-heading">[[admin/dashboard:updates]]</div> | ||||||
| 			<div class="panel-body"> | 			<div class="panel-body"> | ||||||
| 				<div class="alert <!-- IF lookupFailed -->alert-danger<!-- ELSE --><!-- IF upgradeAvailable -->alert-warning<!-- ELSE --><!-- IF currentPrerelease -->alert-info<!-- ELSE -->alert-success<!-- END --><!-- END --><!-- END --> version-check"> | 				<div class="alert <!-- IF lookupFailed -->alert-danger<!-- ELSE --><!-- IF upgradeAvailable -->alert-warning<!-- ELSE --><!-- IF currentPrerelease -->alert-info<!-- ELSE -->alert-success<!-- END --><!-- END --><!-- END --> version-check"> | ||||||
| 					<p>[[admin/general/dashboard:running-version, {version}]]</p> | 					<p>[[admin/dashboard:running-version, {version}]]</p> | ||||||
| 					<p> | 					<p> | ||||||
| 					<!-- IF lookupFailed --> | 					<!-- IF lookupFailed --> | ||||||
| 					[[admin/general/dashboard:latest-lookup-failed]] | 					[[admin/dashboard:latest-lookup-failed]] | ||||||
| 					<!-- ELSE --> | 					<!-- ELSE --> | ||||||
| 						<!-- IF upgradeAvailable --> | 						<!-- IF upgradeAvailable --> | ||||||
| 							<!-- IF currentPrerelease --> | 							<!-- IF currentPrerelease --> | ||||||
| 							[[admin/general/dashboard:prerelease-upgrade-available, {latestVersion}]] | 							[[admin/dashboard:prerelease-upgrade-available, {latestVersion}]] | ||||||
| 							<!-- ELSE --> | 							<!-- ELSE --> | ||||||
| 							[[admin/general/dashboard:upgrade-available, {latestVersion}]] | 							[[admin/dashboard:upgrade-available, {latestVersion}]] | ||||||
| 							<!-- END --> | 							<!-- END --> | ||||||
| 						<!-- ELSE --> | 						<!-- ELSE --> | ||||||
| 							<!-- IF currentPrerelease --> | 							<!-- IF currentPrerelease --> | ||||||
| 							[[admin/general/dashboard:prerelease-warning]] | 							[[admin/dashboard:prerelease-warning]] | ||||||
| 							<!-- ELSE --> | 							<!-- ELSE --> | ||||||
| 							[[admin/general/dashboard:up-to-date]] | 							[[admin/dashboard:up-to-date]] | ||||||
| 							<!-- END --> | 							<!-- END --> | ||||||
| 						<!-- END --> | 						<!-- END --> | ||||||
| 					<!-- END --> | 					<!-- END --> | ||||||
| 					</p> | 					</p> | ||||||
| 				</div> | 				</div> | ||||||
| 				<p> | 				<p> | ||||||
| 					[[admin/general/dashboard:keep-updated]] | 					[[admin/dashboard:keep-updated]] | ||||||
| 				</p> | 				</p> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| 
 | 
 | ||||||
| 		<div class="panel panel-default"> | 		<div class="panel panel-default"> | ||||||
| 			<div class="panel-heading">[[admin/general/dashboard:notices]]</div> | 			<div class="panel-heading">[[admin/dashboard:notices]]</div> | ||||||
| 			<div class="panel-body"> | 			<div class="panel-body"> | ||||||
| 			<!-- BEGIN notices --> | 			<!-- BEGIN notices --> | ||||||
| 				<div> | 				<div> | ||||||
| @@ -1,36 +0,0 @@ | |||||||
| <div class="languages"> |  | ||||||
| 	<div class="row"> |  | ||||||
| 		<div class="col-sm-2 col-xs-12 settings-header">[[admin/general/languages:language-settings]]</div> |  | ||||||
| 		<div class="col-sm-10 col-xs-12"> |  | ||||||
| 			<p> |  | ||||||
| 				[[admin/general/languages:description]] |  | ||||||
| 			</p> |  | ||||||
|  |  | ||||||
| 			<form class="row"> |  | ||||||
| 				<div class="form-group col-sm-6"> |  | ||||||
| 					<label for="defaultLang">[[admin/general/languages:default-language]]</label> |  | ||||||
| 					<select id="language" data-field="defaultLang" class="form-control"> |  | ||||||
| 						<!-- BEGIN languages --> |  | ||||||
| 						<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option> |  | ||||||
| 						<!-- END languages --> |  | ||||||
| 					</select> |  | ||||||
| 				</div> |  | ||||||
| 			</form> |  | ||||||
|  |  | ||||||
| 			<form class="row"> |  | ||||||
| 				<div class="form-group col-sm-6"> |  | ||||||
| 					<div class="checkbox"> |  | ||||||
| 						<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> |  | ||||||
| 							<input class="mdl-switch__input" type="checkbox" data-field="autoDetectLang" <!-- IF autoDetectLang -->checked<!-- ENDIF autoDetectLang -->/> |  | ||||||
| 							<span class="mdl-switch__label">[[admin/general/languages:auto-detect]]</span> |  | ||||||
| 						</label> |  | ||||||
| 					</div> |  | ||||||
| 				</div> |  | ||||||
| 			</form> |  | ||||||
| 		</div> |  | ||||||
| 	</div> |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| <button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored"> |  | ||||||
| 	<i class="material-icons">save</i> |  | ||||||
| </button> |  | ||||||
| @@ -9,18 +9,6 @@ | |||||||
| 		</ul> | 		</ul> | ||||||
| 	</section> | 	</section> | ||||||
|  |  | ||||||
| 	<section class="menu-section"> |  | ||||||
| 		<h3 class="menu-section-title">[[admin/menu:section-general]]</h3> |  | ||||||
| 		<ul class="menu-section-list"> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/dashboard">[[admin/menu:general/dashboard]]</a></li> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/homepage">[[admin/menu:general/homepage]]</a></li> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/navigation">[[admin/menu:general/navigation]]</a></li> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/languages">[[admin/menu:general/languages]]</a></li> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/sounds">[[admin/menu:general/sounds]]</a></li> |  | ||||||
| 			<li><a href="{relative_path}/admin/general/social">[[admin/menu:general/social]]</a></li> |  | ||||||
| 		</ul> |  | ||||||
| 	</section> |  | ||||||
|  |  | ||||||
| 	<section class="menu-section"> | 	<section class="menu-section"> | ||||||
| 		<h3 class="menu-section-title">[[admin/menu:section-manage]]</h3> | 		<h3 class="menu-section-title">[[admin/menu:section-manage]]</h3> | ||||||
| 		<ul class="menu-section-list"> | 		<ul class="menu-section-list"> | ||||||
| @@ -42,10 +30,13 @@ | |||||||
| 		<h3 class="menu-section-title">[[admin/menu:section-settings]]</h3> | 		<h3 class="menu-section-title">[[admin/menu:section-settings]]</h3> | ||||||
| 		<ul class="menu-section-list"> | 		<ul class="menu-section-list"> | ||||||
| 			<li><a href="{relative_path}/admin/settings/general">[[admin/menu:section-general]]</a></li> | 			<li><a href="{relative_path}/admin/settings/general">[[admin/menu:section-general]]</a></li> | ||||||
|  | 			<li><a href="{relative_path}/admin/settings/homepage">[[admin/menu:settings/homepage]]</a></li> | ||||||
|  | 			<li><a href="{relative_path}/admin/settings/navigation">[[admin/menu:settings/navigation]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/user">[[admin/menu:settings/user]]</a></li> | 			<li><a href="{relative_path}/admin/settings/user">[[admin/menu:settings/user]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/group">[[admin/menu:settings/group]]</a></li> | 			<li><a href="{relative_path}/admin/settings/group">[[admin/menu:settings/group]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/tags">[[admin/menu:manage/tags]]</a></li> | 			<li><a href="{relative_path}/admin/settings/tags">[[admin/menu:manage/tags]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/post">[[admin/menu:settings/post]]</a></li> | 			<li><a href="{relative_path}/admin/settings/post">[[admin/menu:settings/post]]</a></li> | ||||||
|  | 			<li><a href="{relative_path}/admin/settings/languages">[[admin/menu:settings/languages]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/email">[[admin/menu:settings/email]]</a></li> | 			<li><a href="{relative_path}/admin/settings/email">[[admin/menu:settings/email]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/reputation">[[admin/menu:settings/reputation]]</a></li> | 			<li><a href="{relative_path}/admin/settings/reputation">[[admin/menu:settings/reputation]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/guest">[[admin/menu:settings/guest]]</a></li> | 			<li><a href="{relative_path}/admin/settings/guest">[[admin/menu:settings/guest]]</a></li> | ||||||
| @@ -53,6 +44,8 @@ | |||||||
| 			<li><a href="{relative_path}/admin/settings/chat">[[admin/menu:settings/chat]]</a></li> | 			<li><a href="{relative_path}/admin/settings/chat">[[admin/menu:settings/chat]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/pagination">[[admin/menu:settings/pagination]]</a></li> | 			<li><a href="{relative_path}/admin/settings/pagination">[[admin/menu:settings/pagination]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/notifications">[[admin/menu:settings/notifications]]</a></li> | 			<li><a href="{relative_path}/admin/settings/notifications">[[admin/menu:settings/notifications]]</a></li> | ||||||
|  | 			<li><a href="{relative_path}/admin/settings/sounds">[[admin/menu:settings/sounds]]</a></li> | ||||||
|  | 			<li><a href="{relative_path}/admin/settings/social">[[admin/menu:settings/social]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/cookies">[[admin/menu:settings/cookies]]</a></li> | 			<li><a href="{relative_path}/admin/settings/cookies">[[admin/menu:settings/cookies]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/web-crawler">[[admin/menu:settings/web-crawler]]</a></li> | 			<li><a href="{relative_path}/admin/settings/web-crawler">[[admin/menu:settings/web-crawler]]</a></li> | ||||||
| 			<li><a href="{relative_path}/admin/settings/sockets">[[admin/menu:settings/sockets]]</a></li> | 			<li><a href="{relative_path}/admin/settings/sockets">[[admin/menu:settings/sockets]]</a></li> | ||||||
| @@ -171,17 +164,7 @@ | |||||||
|  |  | ||||||
| 		<ul id="main-menu"> | 		<ul id="main-menu"> | ||||||
| 			<li class="menu-item"> | 			<li class="menu-item"> | ||||||
| 				<a href="{relative_path}/admin/general/dashboard">[[admin/menu:general/dashboard]]</a> | 				<a href="{relative_path}/admin/dashboard">[[admin/menu:dashboard]]</a> | ||||||
| 			</li> |  | ||||||
| 			<li class="dropdown menu-item"> |  | ||||||
| 				<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-general]]</a> |  | ||||||
| 				<ul class="dropdown-menu" role="menu"> |  | ||||||
| 					<li><a href="{relative_path}/admin/general/homepage">[[admin/menu:general/homepage]]</a></li> |  | ||||||
| 					<li><a href="{relative_path}/admin/general/navigation">[[admin/menu:general/navigation]]</a></li> |  | ||||||
| 					<li><a href="{relative_path}/admin/general/languages">[[admin/menu:general/languages]]</a></li> |  | ||||||
| 					<li><a href="{relative_path}/admin/general/sounds">[[admin/menu:general/sounds]]</a></li> |  | ||||||
| 					<li><a href="{relative_path}/admin/general/social">[[admin/menu:general/social]]</a></li> |  | ||||||
| 				</ul> |  | ||||||
| 			</li> | 			</li> | ||||||
| 			<li class="dropdown menu-item"> | 			<li class="dropdown menu-item"> | ||||||
| 				<a id="manage-menu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-manage]]</a> | 				<a id="manage-menu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-manage]]</a> | ||||||
| @@ -203,10 +186,13 @@ | |||||||
| 				<a id="settings-menu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-settings]]</a> | 				<a id="settings-menu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-settings]]</a> | ||||||
| 				<ul class="dropdown-menu" role="menu"> | 				<ul class="dropdown-menu" role="menu"> | ||||||
| 					<li><a id="settings-general" href="{relative_path}/admin/settings/general">[[admin/menu:section-general]]</a></li> | 					<li><a id="settings-general" href="{relative_path}/admin/settings/general">[[admin/menu:section-general]]</a></li> | ||||||
|  | 					<li><a href="{relative_path}/admin/settings/homepage">[[admin/menu:settings/homepage]]</a></li> | ||||||
|  | 					<li><a href="{relative_path}/admin/settings/navigation">[[admin/menu:settings/navigation]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/user">[[admin/menu:settings/user]]</a></li> | 					<li><a href="{relative_path}/admin/settings/user">[[admin/menu:settings/user]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/group">[[admin/menu:settings/group]]</a></li> | 					<li><a href="{relative_path}/admin/settings/group">[[admin/menu:settings/group]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/tags">[[admin/menu:manage/tags]]</a></li> | 					<li><a href="{relative_path}/admin/settings/tags">[[admin/menu:manage/tags]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/post">[[admin/menu:settings/post]]</a></li> | 					<li><a href="{relative_path}/admin/settings/post">[[admin/menu:settings/post]]</a></li> | ||||||
|  | 					<li><a href="{relative_path}/admin/settings/languages">[[admin/menu:settings/languages]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/email">[[admin/menu:settings/email]]</a></li> | 					<li><a href="{relative_path}/admin/settings/email">[[admin/menu:settings/email]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/reputation">[[admin/menu:settings/reputation]]</a></li> | 					<li><a href="{relative_path}/admin/settings/reputation">[[admin/menu:settings/reputation]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/guest">[[admin/menu:settings/guest]]</a></li> | 					<li><a href="{relative_path}/admin/settings/guest">[[admin/menu:settings/guest]]</a></li> | ||||||
| @@ -214,6 +200,8 @@ | |||||||
| 					<li><a href="{relative_path}/admin/settings/chat">[[admin/menu:settings/chat]]</a></li> | 					<li><a href="{relative_path}/admin/settings/chat">[[admin/menu:settings/chat]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/pagination">[[admin/menu:settings/pagination]]</a></li> | 					<li><a href="{relative_path}/admin/settings/pagination">[[admin/menu:settings/pagination]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/notifications">[[admin/menu:settings/notifications]]</a></li> | 					<li><a href="{relative_path}/admin/settings/notifications">[[admin/menu:settings/notifications]]</a></li> | ||||||
|  | 					<li><a href="{relative_path}/admin/settings/sounds">[[admin/menu:settings/sounds]]</a></li> | ||||||
|  | 					<li><a href="{relative_path}/admin/settings/social">[[admin/menu:settings/social]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/cookies">[[admin/menu:settings/cookies]]</a></li> | 					<li><a href="{relative_path}/admin/settings/cookies">[[admin/menu:settings/cookies]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/web-crawler">[[admin/menu:settings/web-crawler]]</a></li> | 					<li><a href="{relative_path}/admin/settings/web-crawler">[[admin/menu:settings/web-crawler]]</a></li> | ||||||
| 					<li><a href="{relative_path}/admin/settings/sockets">[[admin/menu:settings/sockets]]</a></li> | 					<li><a href="{relative_path}/admin/settings/sockets">[[admin/menu:settings/sockets]]</a></li> | ||||||
|   | |||||||
| @@ -1,20 +1,20 @@ | |||||||
| <form role="form"> | <form role="form"> | ||||||
| 	<fieldset> | 	<fieldset> | ||||||
| 		<div class="alert alert-danger hidden">[[admin/general/dashboard:page-views-custom-error]]</div> | 		<div class="alert alert-danger hidden">[[admin/dashboard:page-views-custom-error]]</div> | ||||||
| 		<div class="row"> | 		<div class="row"> | ||||||
| 			<div class="col-xs-6"> | 			<div class="col-xs-6"> | ||||||
| 				<div class="form-group"> | 				<div class="form-group"> | ||||||
| 					<label for="startRange">[[admin/general/dashboard:page-views-custom-start]]</label> | 					<label for="startRange">[[admin/dashboard:page-views-custom-start]]</label> | ||||||
| 					<input class="form-control" type="date" id="startRange" name="startRange" /> | 					<input class="form-control" type="date" id="startRange" name="startRange" /> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 			<div class="col-xs-6"> | 			<div class="col-xs-6"> | ||||||
| 				<div class="form-group"> | 				<div class="form-group"> | ||||||
| 					<label for="endRange">[[admin/general/dashboard:page-views-custom-end]]</label> | 					<label for="endRange">[[admin/dashboard:page-views-custom-end]]</label> | ||||||
| 					<input class="form-control" type="date" id="endRange" name="endRange" /> | 					<input class="form-control" type="date" id="endRange" name="endRange" /> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| 		<p class="help-block">[[admin/general/dashboard:page-views-custom-help]]</p> | 		<p class="help-block">[[admin/dashboard:page-views-custom-help]]</p> | ||||||
| 	</fieldset> | 	</fieldset> | ||||||
| </form> | </form> | ||||||
| @@ -1,12 +1,12 @@ | |||||||
| <div class="row"> | <div class="row"> | ||||||
| 	<div class="col-sm-2 col-xs-12 settings-header">[[admin/general/homepage:home-page]]</div> | 	<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/homepage:home-page]]</div> | ||||||
| 	<div class="col-sm-10 col-xs-12"> | 	<div class="col-sm-10 col-xs-12"> | ||||||
| 		<p> | 		<p> | ||||||
| 			[[admin/general/homepage:description]] | 			[[admin/settings/homepage:description]] | ||||||
| 		</p> | 		</p> | ||||||
| 		<form class="row"> | 		<form class="row"> | ||||||
| 			<div class="col-sm-6"> | 			<div class="col-sm-6"> | ||||||
| 				<label>[[admin/general/homepage:home-page-route]]</label> | 				<label>[[admin/settings/homepage:home-page-route]]</label> | ||||||
| 				<select class="form-control" data-field="homePageRoute"> | 				<select class="form-control" data-field="homePageRoute"> | ||||||
| 					<!-- BEGIN routes --> | 					<!-- BEGIN routes --> | ||||||
| 					<option value="{routes.route}">{routes.name}</option> | 					<option value="{routes.route}">{routes.name}</option> | ||||||
| @@ -14,18 +14,18 @@ | |||||||
| 				</select> | 				</select> | ||||||
| 				<div id="homePageCustom" style="display: none;"> | 				<div id="homePageCustom" style="display: none;"> | ||||||
| 					<br> | 					<br> | ||||||
| 					<label>[[admin/general/homepage:custom-route]]</label> | 					<label>[[admin/settings/homepage:custom-route]]</label> | ||||||
| 					<input type="text" class="form-control" data-field="homePageCustom"/> | 					<input type="text" class="form-control" data-field="homePageCustom"/> | ||||||
| 				</div> | 				</div> | ||||||
| 				<br> | 				<br> | ||||||
| 				<div class="checkbox"> | 				<div class="checkbox"> | ||||||
| 					<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> | 					<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> | ||||||
| 						<input class="mdl-switch__input" type="checkbox" data-field="allowUserHomePage"> | 						<input class="mdl-switch__input" type="checkbox" data-field="allowUserHomePage"> | ||||||
| 						<span class="mdl-switch__label"><strong>[[admin/general/homepage:allow-user-home-pages]]</strong></span> | 						<span class="mdl-switch__label"><strong>[[admin/settings/homepage:allow-user-home-pages]]</strong></span> | ||||||
| 					</label> | 					</label> | ||||||
| 				</div> | 				</div> | ||||||
| 				<br> | 				<br> | ||||||
| 				<label>[[admin/general/homepage:home-page-title]]</label> | 				<label>[[admin/settings/homepage:home-page-title]]</label> | ||||||
| 				<input class="form-control" type="text" data-field="homePageTitle" placeholder="[[pages:home]]"> | 				<input class="form-control" type="text" data-field="homePageTitle" placeholder="[[pages:home]]"> | ||||||
| 			</div> | 			</div> | ||||||
| 		</form> | 		</form> | ||||||
							
								
								
									
										34
									
								
								src/views/admin/settings/languages.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/views/admin/settings/languages.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | <!-- IMPORT admin/partials/settings/header.tpl --> | ||||||
|  |  | ||||||
|  | <div class="row"> | ||||||
|  | 	<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/languages:language-settings]]</div> | ||||||
|  | 	<div class="col-sm-10 col-xs-12"> | ||||||
|  | 		<p> | ||||||
|  | 			[[admin/settings/languages:description]] | ||||||
|  | 		</p> | ||||||
|  |  | ||||||
|  | 		<form class="row"> | ||||||
|  | 			<div class="form-group col-sm-6"> | ||||||
|  | 				<label for="defaultLang">[[admin/settings/languages:default-language]]</label> | ||||||
|  | 				<select id="language" data-field="defaultLang" class="form-control"> | ||||||
|  | 					<!-- BEGIN languages --> | ||||||
|  | 					<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option> | ||||||
|  | 					<!-- END languages --> | ||||||
|  | 				</select> | ||||||
|  | 			</div> | ||||||
|  | 		</form> | ||||||
|  |  | ||||||
|  | 		<form class="row"> | ||||||
|  | 			<div class="form-group col-sm-6"> | ||||||
|  | 				<div class="checkbox"> | ||||||
|  | 					<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> | ||||||
|  | 						<input class="mdl-switch__input" type="checkbox" data-field="autoDetectLang" <!-- IF autoDetectLang -->checked<!-- ENDIF autoDetectLang -->/> | ||||||
|  | 						<span class="mdl-switch__label">[[admin/settings/languages:auto-detect]]</span> | ||||||
|  | 					</label> | ||||||
|  | 				</div> | ||||||
|  | 			</div> | ||||||
|  | 		</form> | ||||||
|  | 	</div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <!-- IMPORT admin/partials/settings/footer.tpl --> | ||||||
| @@ -21,10 +21,10 @@ | |||||||
| 					<div class="row"> | 					<div class="row"> | ||||||
| 						<div class="col-sm-1"> | 						<div class="col-sm-1"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:icon]]</label> | 								<label>[[admin/settings/navigation:icon]]</label> | ||||||
| 								<br/> | 								<br/> | ||||||
| 								<span class="iconPicker"><i class="fa fa-2x {enabled.iconClass}"></i> | 								<span class="iconPicker"><i class="fa fa-2x {enabled.iconClass}"></i> | ||||||
| 									<a class="change-icon-link <!-- IF enabled.iconClass -->hidden<!-- ENDIF enabled.iconClass -->" href="#">[[admin/general/navigation:change-icon]]</a> | 									<a class="change-icon-link <!-- IF enabled.iconClass -->hidden<!-- ENDIF enabled.iconClass -->" href="#">[[admin/settings/navigation:change-icon]]</a> | ||||||
| 									<input class="form-control" type="hidden" name="iconClass" value="{enabled.iconClass}" /> | 									<input class="form-control" type="hidden" name="iconClass" value="{enabled.iconClass}" /> | ||||||
| 								</span> | 								</span> | ||||||
| 							</div> | 							</div> | ||||||
| @@ -32,21 +32,21 @@ | |||||||
| 
 | 
 | ||||||
| 						<div class="col-sm-3"> | 						<div class="col-sm-3"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:route]]</label> | 								<label>[[admin/settings/navigation:route]]</label> | ||||||
| 								<input class="form-control" type="text" name="route" value="{enabled.route}" /> | 								<input class="form-control" type="text" name="route" value="{enabled.route}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 
 | 
 | ||||||
| 						<div class="col-sm-4"> | 						<div class="col-sm-4"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:class]]</label> | 								<label>[[admin/settings/navigation:class]]</label> | ||||||
| 								<input class="form-control" type="text" name="class" value="{enabled.class}" /> | 								<input class="form-control" type="text" name="class" value="{enabled.class}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 
 | 
 | ||||||
| 						<div class="col-sm-4"> | 						<div class="col-sm-4"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:id]]</label> | 								<label>[[admin/settings/navigation:id]]</label> | ||||||
| 								<input class="form-control" type="text" name="id" value="{enabled.id}" /> | 								<input class="form-control" type="text" name="id" value="{enabled.id}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| @@ -54,26 +54,26 @@ | |||||||
| 					<div class="row"> | 					<div class="row"> | ||||||
| 						<div class="col-sm-4"> | 						<div class="col-sm-4"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:text]]</label> | 								<label>[[admin/settings/navigation:text]]</label> | ||||||
| 								<input class="form-control unescape" type="text" name="text" value="{enabled.text}" /> | 								<input class="form-control unescape" type="text" name="text" value="{enabled.text}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="col-sm-4"> | 						<div class="col-sm-4"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:text-class]]</label> | 								<label>[[admin/settings/navigation:text-class]]</label> | ||||||
| 								<input class="form-control" type="text" name="textClass" value="{enabled.textClass}" /> | 								<input class="form-control" type="text" name="textClass" value="{enabled.textClass}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 
 | 
 | ||||||
| 						<div class="col-sm-4"> | 						<div class="col-sm-4"> | ||||||
| 							<div class="form-group"> | 							<div class="form-group"> | ||||||
| 								<label>[[admin/general/navigation:tooltip]]</label> | 								<label>[[admin/settings/navigation:tooltip]]</label> | ||||||
| 								<input class="form-control unescape" type="text" name="title" value="{enabled.title}" /> | 								<input class="form-control unescape" type="text" name="title" value="{enabled.title}" /> | ||||||
| 							</div> | 							</div> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 
 | 
 | ||||||
| 					<strong>[[admin/general/navigation:groups]]</strong> | 					<strong>[[admin/settings/navigation:groups]]</strong> | ||||||
| 					<div> | 					<div> | ||||||
| 						<select name="groups" class="form-control" size="10" multiple> | 						<select name="groups" class="form-control" size="10" multiple> | ||||||
| 							<!-- BEGIN enabled.groups --> | 							<!-- BEGIN enabled.groups --> | ||||||
| @@ -85,15 +85,15 @@ | |||||||
| 					<div class="checkbox"> | 					<div class="checkbox"> | ||||||
| 						<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> | 						<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect"> | ||||||
| 							<input class="mdl-switch__input" type="checkbox" name="property:targetBlank" <!-- IF enabled.properties.targetBlank -->checked<!-- ENDIF enabled.properties.targetBlank -->/> | 							<input class="mdl-switch__input" type="checkbox" name="property:targetBlank" <!-- IF enabled.properties.targetBlank -->checked<!-- ENDIF enabled.properties.targetBlank -->/> | ||||||
| 							<span class="mdl-switch__label"><strong>[[admin/general/navigation:open-new-window]]</strong></span> | 							<span class="mdl-switch__label"><strong>[[admin/settings/navigation:open-new-window]]</strong></span> | ||||||
| 						</label> | 						</label> | ||||||
| 					</div> | 					</div> | ||||||
| 
 | 
 | ||||||
| 					<button class="btn btn-danger delete">[[admin/general/navigation:btn.delete]]</button> | 					<button class="btn btn-danger delete">[[admin/settings/navigation:btn.delete]]</button> | ||||||
| 					<!-- IF enabled.enabled --> | 					<!-- IF enabled.enabled --> | ||||||
| 					<button class="btn btn-warning toggle">[[admin/general/navigation:btn.disable]]</button> | 					<button class="btn btn-warning toggle">[[admin/settings/navigation:btn.disable]]</button> | ||||||
| 					<!-- ELSE --> | 					<!-- ELSE --> | ||||||
| 					<button class="btn btn-success toggle">[[admin/general/navigation:btn.enable]]</button> | 					<button class="btn btn-success toggle">[[admin/settings/navigation:btn.enable]]</button> | ||||||
| 					<!-- ENDIF enabled.enabled --> | 					<!-- ENDIF enabled.enabled --> | ||||||
| 					<input type="hidden" name="enabled" value="{enabled.enabled}" /> | 					<input type="hidden" name="enabled" value="{enabled.enabled}" /> | ||||||
| 				</form> | 				</form> | ||||||
| @@ -104,7 +104,7 @@ | |||||||
| 
 | 
 | ||||||
| 	<div class="col-lg-3"> | 	<div class="col-lg-3"> | ||||||
| 		<div class="panel panel-default"> | 		<div class="panel panel-default"> | ||||||
| 			<div class="panel-heading">[[admin/general/navigation:available-menu-items]]</div> | 			<div class="panel-heading">[[admin/settings/navigation:available-menu-items]]</div> | ||||||
| 			<div class="panel-body"> | 			<div class="panel-body"> | ||||||
| 				<ul id="available"> | 				<ul id="available"> | ||||||
| 					<li data-id="custom" class="clearfix"> | 					<li data-id="custom" class="clearfix"> | ||||||
| @@ -112,7 +112,7 @@ | |||||||
| 							<i class="fa fa-fw fa-plus-circle"></i> | 							<i class="fa fa-fw fa-plus-circle"></i> | ||||||
| 						</div> | 						</div> | ||||||
| 						<p> | 						<p> | ||||||
| 							<strong>[[admin/general/navigation:custom-route]]</strong> | 							<strong>[[admin/settings/navigation:custom-route]]</strong> | ||||||
| 						</p> | 						</p> | ||||||
| 					</li> | 					</li> | ||||||
| 					<!-- BEGIN available --> | 					<!-- BEGIN available --> | ||||||
| @@ -122,7 +122,7 @@ | |||||||
| 						</div> | 						</div> | ||||||
| 						<p> | 						<p> | ||||||
| 							<strong>{available.text}</strong> {available.route} <br/> | 							<strong>{available.text}</strong> {available.route} <br/> | ||||||
| 							<!-- IF available.core --> [[admin/general/navigation:core]] <!-- ELSE --> [[admin/general/navigation:plugin]] <!-- ENDIF available.core --> | 							<!-- IF available.core --> [[admin/settings/navigation:core]] <!-- ELSE --> [[admin/settings/navigation:plugin]] <!-- ENDIF available.core --> | ||||||
| 						</p> | 						</p> | ||||||
| 					</li> | 					</li> | ||||||
| 					<!-- END available --> | 					<!-- END available --> | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| <div class="social settings"> | <div class="social settings"> | ||||||
| 	<form role="form"> | 	<form role="form"> | ||||||
| 		<div class="row"> | 		<div class="row"> | ||||||
| 			<div class="col-sm-2 col-xs-12 settings-header">[[admin/general/social:post-sharing]]</div> | 			<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/social:post-sharing]]</div> | ||||||
| 			<div class="col-sm-10 col-xs-12"> | 			<div class="col-sm-10 col-xs-12"> | ||||||
| 				<div class="form-group" id="postSharingNetworks"> | 				<div class="form-group" id="postSharingNetworks"> | ||||||
| 					<!-- BEGIN posts --> | 					<!-- BEGIN posts --> | ||||||
| @@ -12,7 +12,7 @@ | |||||||
| 						</label> | 						</label> | ||||||
| 					</div> | 					</div> | ||||||
| 					<!-- END posts --> | 					<!-- END posts --> | ||||||
| 					<small>[[admin/general/social:info-plugins-additional]]</small> | 					<small>[[admin/settings/social:info-plugins-additional]]</small> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
| @@ -2,9 +2,9 @@ | |||||||
| 	<div class="col-xs-12"> | 	<div class="col-xs-12"> | ||||||
| 		<form role="form"> | 		<form role="form"> | ||||||
| 			<div class="row"> | 			<div class="row"> | ||||||
| 				<div class="col-sm-2 col-xs-12 settings-header">[[admin/general/sounds:notifications]]</div> | 				<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/sounds:notifications]]</div> | ||||||
| 				<div class="col-sm-10 col-xs-12"> | 				<div class="col-sm-10 col-xs-12"> | ||||||
| 					<label for="notification">[[admin/general/sounds:notifications]]</label> | 					<label for="notification">[[admin/settings/sounds:notifications]]</label> | ||||||
| 					<div class="row"> | 					<div class="row"> | ||||||
| 						<div class="form-group col-xs-9"> | 						<div class="form-group col-xs-9"> | ||||||
| 							<select class="form-control" id="notification" data-field="notification"> | 							<select class="form-control" id="notification" data-field="notification"> | ||||||
| @@ -21,16 +21,16 @@ | |||||||
| 							</select> | 							</select> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="btn-group col-xs-3"> | 						<div class="btn-group col-xs-3"> | ||||||
| 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/general/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/settings/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 
 | 
 | ||||||
| 			<div class="row"> | 			<div class="row"> | ||||||
| 				<div class="col-sm-2 col-xs-12 settings-header">[[admin/general/sounds:chat-messages]]</div> | 				<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/sounds:chat-messages]]</div> | ||||||
| 				<div class="col-sm-10 col-xs-12"> | 				<div class="col-sm-10 col-xs-12"> | ||||||
| 					<label for="chat-incoming">[[admin/general/sounds:incoming-message]]</label> | 					<label for="chat-incoming">[[admin/settings/sounds:incoming-message]]</label> | ||||||
| 					<div class="row"> | 					<div class="row"> | ||||||
| 						<div class="form-group col-xs-9"> | 						<div class="form-group col-xs-9"> | ||||||
| 							<select class="form-control" id="chat-incoming" data-field="chat-incoming"> | 							<select class="form-control" id="chat-incoming" data-field="chat-incoming"> | ||||||
| @@ -47,11 +47,11 @@ | |||||||
| 							</select> | 							</select> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="btn-group col-xs-3"> | 						<div class="btn-group col-xs-3"> | ||||||
| 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/general/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/settings/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 
 | 
 | ||||||
| 					<label for="chat-outgoing">[[admin/general/sounds:outgoing-message]]</label> | 					<label for="chat-outgoing">[[admin/settings/sounds:outgoing-message]]</label> | ||||||
| 					<div class="row"> | 					<div class="row"> | ||||||
| 						<div class="form-group col-xs-9"> | 						<div class="form-group col-xs-9"> | ||||||
| 							<select class="form-control" id="chat-outgoing" data-field="chat-outgoing"> | 							<select class="form-control" id="chat-outgoing" data-field="chat-outgoing"> | ||||||
| @@ -68,7 +68,7 @@ | |||||||
| 							</select> | 							</select> | ||||||
| 						</div> | 						</div> | ||||||
| 						<div class="btn-group col-xs-3"> | 						<div class="btn-group col-xs-3"> | ||||||
| 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/general/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | 							<button type="button" class="form-control btn btn-sm btn-default" data-action="play"><span class="hidden-xs">[[admin/settings/sounds:play-sound]] </span><i class="fa fa-play"></i></button> | ||||||
| 						</div> | 						</div> | ||||||
| 					</div> | 					</div> | ||||||
| 
 | 
 | ||||||
| @@ -81,7 +81,7 @@ | |||||||
| 								data-accept="audio/*" | 								data-accept="audio/*" | ||||||
| 								type="button" | 								type="button" | ||||||
| 								class="btn btn-primary" | 								class="btn btn-primary" | ||||||
| 								value="[[admin/general/sounds:upload-new-sound]]" | 								value="[[admin/settings/sounds:upload-new-sound]]" | ||||||
| 							></input> | 							></input> | ||||||
| 						</span> | 						</span> | ||||||
| 					</div> | 					</div> | ||||||
| @@ -174,8 +174,8 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should load /admin/general/homepage', function (done) { | 	it('should load /admin/settings/homepage', function (done) { | ||||||
| 		request(nconf.get('url') + '/api/admin/general/homepage', { jar: jar, json: true }, function (err, res, body) { | 		request(nconf.get('url') + '/api/admin/settings/homepage', { jar: jar, json: true }, function (err, res, body) { | ||||||
| 			assert.ifError(err); | 			assert.ifError(err); | ||||||
| 			assert.equal(res.statusCode, 200); | 			assert.equal(res.statusCode, 200); | ||||||
| 			assert(body.routes); | 			assert(body.routes); | ||||||
| @@ -413,13 +413,13 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should load /admin/general/navigation', function (done) { | 	it('should load /admin/settings/navigation', function (done) { | ||||||
| 		var navigation = require('../src/navigation/admin'); | 		var navigation = require('../src/navigation/admin'); | ||||||
| 		var data = require('../install/data/navigation.json'); | 		var data = require('../install/data/navigation.json'); | ||||||
|  |  | ||||||
| 		navigation.save(data, function (err) { | 		navigation.save(data, function (err) { | ||||||
| 			assert.ifError(err); | 			assert.ifError(err); | ||||||
| 			request(nconf.get('url') + '/api/admin/general/navigation', { jar: jar, json: true }, function (err, res, body) { | 			request(nconf.get('url') + '/api/admin/settings/navigation', { jar: jar, json: true }, function (err, res, body) { | ||||||
| 				assert.ifError(err); | 				assert.ifError(err); | ||||||
| 				assert(body); | 				assert(body); | ||||||
| 				assert(body.available); | 				assert(body.available); | ||||||
| @@ -456,8 +456,8 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should load /admin/general/sounds', function (done) { | 	it('should load /admin/settings/sounds', function (done) { | ||||||
| 		request(nconf.get('url') + '/api/admin/general/sounds', { jar: jar, json: true }, function (err, res, body) { | 		request(nconf.get('url') + '/api/admin/settings/sounds', { jar: jar, json: true }, function (err, res, body) { | ||||||
| 			assert.ifError(err); | 			assert.ifError(err); | ||||||
| 			assert.equal(res.statusCode, 200); | 			assert.equal(res.statusCode, 200); | ||||||
| 			assert(body); | 			assert(body); | ||||||
| @@ -510,8 +510,8 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should load /admin/general/languages', function (done) { | 	it('should load /admin/settings/languages', function (done) { | ||||||
| 		request(nconf.get('url') + '/api/admin/general/languages', { jar: jar, json: true }, function (err, res, body) { | 		request(nconf.get('url') + '/api/admin/settings/languages', { jar: jar, json: true }, function (err, res, body) { | ||||||
| 			assert.ifError(err); | 			assert.ifError(err); | ||||||
| 			assert.equal(res.statusCode, 200); | 			assert.equal(res.statusCode, 200); | ||||||
| 			assert(body); | 			assert(body); | ||||||
| @@ -519,11 +519,11 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should load /admin/general/social', function (done) { | 	it('should load /admin/settings/social', function (done) { | ||||||
| 		var socketAdmin = require('../src/socket.io/admin'); | 		var socketAdmin = require('../src/socket.io/admin'); | ||||||
| 		socketAdmin.social.savePostSharingNetworks({ uid: adminUid }, ['facebook', 'twitter'], function (err) { | 		socketAdmin.social.savePostSharingNetworks({ uid: adminUid }, ['facebook', 'twitter'], function (err) { | ||||||
| 			assert.ifError(err); | 			assert.ifError(err); | ||||||
| 			request(nconf.get('url') + '/api/admin/general/social', { jar: jar, json: true }, function (err, res, body) { | 			request(nconf.get('url') + '/api/admin/settings/social', { jar: jar, json: true }, function (err, res, body) { | ||||||
| 				assert.ifError(err); | 				assert.ifError(err); | ||||||
| 				assert(body); | 				assert(body); | ||||||
| 				body = body.posts.map(function (network) { | 				body = body.posts.map(function (network) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user