diff options
author | Peter Wu <peter@lekensteyn.nl> | 2015-04-08 12:18:58 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2015-04-08 12:18:58 +0200 |
commit | 126f66d112ea63acb2478321a468f77cf2a1fa1e (patch) | |
tree | d545cc4ca2ccae2e7432a60252ac1bf0c38e0a86 /js | |
parent | a57cd77ee3e733794563e610cd361301a5c46224 (diff) | |
download | site-126f66d112ea63acb2478321a468f77cf2a1fa1e.tar.gz |
Add sitemap
Diffstat (limited to 'js')
-rw-r--r-- | js/main.js | 2 | ||||
-rw-r--r-- | js/sitemap.js | 61 |
2 files changed, 62 insertions, 1 deletions
@@ -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); + }; +}); |