From d464cb2f0dbb20a7b636ee4f6b91af54b2067515 Mon Sep 17 00:00:00 2001
From: psychobunny <rodrigues.andrew@gmail.com>
Date: Wed, 19 Aug 2015 13:27:30 -0400
Subject: [PATCH] settings - automated table of contents

---
 public/less/admin/settings.less      | 16 +++++++++++-----
 public/src/admin/settings.js         | 10 ++++++++++
 src/views/admin/settings/footer.tpl  |  1 +
 src/views/admin/settings/general.tpl | 11 +++++++++++
 4 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/public/less/admin/settings.less b/public/less/admin/settings.less
index 94318e180f..1f7b403cf1 100644
--- a/public/less/admin/settings.less
+++ b/public/less/admin/settings.less
@@ -1,9 +1,15 @@
 .settings {
-	.settings-header {
-		font-weight: 700;
-	}
-
 	.row {
 		margin-bottom: 15px;
-	}	
+	}
+
+	.section-content {
+		border-left: 3px solid @brand-primary;
+
+		ul {
+			list-style-type: none;
+			font-size: 16px;
+			padding-left: 20px;
+		}
+	}
 }
\ No newline at end of file
diff --git a/public/src/admin/settings.js b/public/src/admin/settings.js
index 1eee16a353..07fe9311ad 100644
--- a/public/src/admin/settings.js
+++ b/public/src/admin/settings.js
@@ -8,6 +8,16 @@ define('admin/settings', ['uploader', 'sounds'], function(uploader, sounds) {
 		$(window).on('action:config.loaded', Settings.prepare);
 	};
 
+	Settings.populateTOC = function() {
+		$('.settings-header').each(function() {
+			var header = $(this).text(),
+				anchor = header.toLowerCase().replace(/ /g, '-').trim();
+
+			$(this).prepend('<a name="' + anchor + '"></a>');
+			$('.section-content ul').append('<li><a href="#' + anchor + '">' + header + '</a></li>');
+		});
+	};
+
 	Settings.prepare = function(callback) {
 		// Populate the fields on the page from the config
 		var fields = $('#content [data-field]'),
diff --git a/src/views/admin/settings/footer.tpl b/src/views/admin/settings/footer.tpl
index f20e3294c7..6c39673be5 100644
--- a/src/views/admin/settings/footer.tpl
+++ b/src/views/admin/settings/footer.tpl
@@ -5,5 +5,6 @@
 <script>
 	require(['admin/settings'], function(Settings) {
 		Settings.prepare();
+		Settings.populateTOC();
 	});
 </script>
diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl
index 860ed527e1..6d2583761f 100644
--- a/src/views/admin/settings/general.tpl
+++ b/src/views/admin/settings/general.tpl
@@ -1,6 +1,17 @@
 <!-- IMPORT admin/settings/header.tpl -->
 
 
+<div class="row">
+	<div class="col-xs-2 settings-header">
+		Contents
+	</div>
+	<div class="col-xs-10">
+		<nav class="section-content">
+			<ul></ul>
+		</nav>
+	</div>
+</div>
+
 <div class="row">
 	<div class="col-xs-2 settings-header">
 		Site Settings