summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2015-04-08 12:18:58 +0200
committerPeter Wu <peter@lekensteyn.nl>2015-04-08 12:18:58 +0200
commit126f66d112ea63acb2478321a468f77cf2a1fa1e (patch)
treed545cc4ca2ccae2e7432a60252ac1bf0c38e0a86
parenta57cd77ee3e733794563e610cd361301a5c46224 (diff)
downloadsite-126f66d112ea63acb2478321a468f77cf2a1fa1e.tar.gz
Add sitemap
-rw-r--r--index.html2
-rw-r--r--js/main.js2
-rw-r--r--js/sitemap.js61
-rw-r--r--pages/sitemap.html7
4 files changed, 71 insertions, 1 deletions
diff --git a/index.html b/index.html
index 22fba1d..61970b2 100644
--- a/index.html
+++ b/index.html
@@ -45,6 +45,8 @@ setTimeout(function() {
<a href="#/contact">Contact</a>
<a href="#/disclaimer">Disclaimer</a>
+
+<a href="#/sitemap">Sitemap</a>
</p>
</footer>
<script data-main="js/boot" src="lib/require.js"></script>
diff --git a/js/main.js b/js/main.js
index 767fd81..fcfd2cb 100644
--- a/js/main.js
+++ b/js/main.js
@@ -1,7 +1,7 @@
define(function() {
'use strict';
- var all_pages = 'home studying curriculum campus career disclaimer contact'.split(' ');
+ var all_pages = 'home studying curriculum campus career disclaimer contact sitemap'.split(' ');
var cacheBuster = '';
if (/dev/.test(location.search)) {
diff --git a/js/sitemap.js b/js/sitemap.js
new file mode 100644
index 0000000..65b05c8
--- /dev/null
+++ b/js/sitemap.js
@@ -0,0 +1,61 @@
+define(['courses', 'campus-coords'], function(courses, campus_coords) {
+ 'use strict';
+
+ function Link(name, url) {
+ this.name = name;
+ this.url = '#/' + url;
+ this.children = [];
+ }
+
+ var add = function(parent, name, url) {
+ var link = new Link(name, url);
+ parent.push(link);
+ return link.children;
+ };
+ var links = [];
+ add(links, 'Home', 'home');
+ add(links, 'Studying', 'studying');
+ var course_links = add(links, 'Curriculum', 'curriculum');
+ courses.courses.forEach(function(course) {
+ add(course_links, course.name, 'curriculum/' + course.id);
+ });
+
+ var campus_links = add(links, 'Campus', 'campus');
+ campus_coords.forEach(function(building) {
+ add(campus_links, building.name, 'campus/' + building.name);
+ });
+
+ add(links, 'Career', 'career');
+ add(links, 'Contact', 'contact');
+ add(links, 'Disclaimer', 'disclaimer');
+ add(links, 'Sitemap', 'sitemap');
+
+ function make_list(parent, item) {
+ if (item instanceof Link) {
+ var li = document.createElement('li');
+ var link = document.createElement('a');
+ link.href = item.url;
+ link.textContent = item.name;
+ li.appendChild(link);
+
+ // child pages
+ if (item.children.length) {
+ make_list(li, item.children);
+ }
+
+ parent.appendChild(li);
+ } else {
+ var list = document.createElement('ul');
+ item.forEach(function(item) {
+ make_list(list, item);
+ });
+ parent.appendChild(list);
+ }
+ }
+
+ return function() {
+ var container = document.getElementById('sitemap-content');
+
+ make_list(container, links);
+ };
+});
diff --git a/pages/sitemap.html b/pages/sitemap.html
new file mode 100644
index 0000000..8d9411e
--- /dev/null
+++ b/pages/sitemap.html
@@ -0,0 +1,7 @@
+<script>
+require(['sitemap'], function(main) { main(); });
+</script>
+
+<h1>Sitemap</h1>
+
+<div id="sitemap-content"></div>