205 lines
6.8 KiB
HTML
205 lines
6.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title></title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta charset="utf-8">
|
|
<link rel="stylesheet" type="text/css" href="style.css">
|
|
<style>
|
|
body {
|
|
overflow: hidden;
|
|
background: pink;
|
|
}
|
|
#map {
|
|
position: absolute;
|
|
left: 0; top: 0;
|
|
right: 0;
|
|
height: 160vh;
|
|
z-index: 0;
|
|
background: gray;
|
|
overflow: hidden;
|
|
}
|
|
#map #radio {
|
|
position: absolute;
|
|
left: 10px;
|
|
bottom: 10px;
|
|
width: 360px;
|
|
height: 60px;
|
|
}
|
|
#map a {
|
|
position: relative;
|
|
left: 200px;
|
|
top: 200px;
|
|
}
|
|
#pagediv {
|
|
position: absolute;
|
|
left: 0; top: 0;
|
|
bottom: 0; right: 0;
|
|
z-index: 0;
|
|
overflow: auto;
|
|
}
|
|
|
|
/* https://stackoverflow.com/questions/24859452/css-how-to-center-absolute-position-div-with-max-width-in-ie9-10-11 */
|
|
#page {
|
|
position: absolute;
|
|
top: 60vh;
|
|
height: 100vh;
|
|
left: 0px;
|
|
right: 0px;
|
|
/*left: 80px; right: 80px;*/
|
|
text-align: center;
|
|
}
|
|
#page iframe {
|
|
width: 100%;
|
|
height: 100%;
|
|
border: none;
|
|
max-width: 800px;
|
|
display: inline-block;
|
|
width: 100%;
|
|
margin: 0 auto;
|
|
}
|
|
#cats {
|
|
display: none;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="pagediv">
|
|
<div id="map">
|
|
<svg id="svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>
|
|
|
|
<!-- <div id="radio"><iframe width="100%" height="60" src="https://www.mixcloud.com/widget/iframe/?hide_cover=1&mini=1&feed=%2FErgote_Radio%2Fmagma-reclaim-the-climax-publication-exposition-documentation%2F" frameborder="0" ></iframe></div>
|
|
-->
|
|
</div>
|
|
<div id="page">
|
|
<iframe id="wikiframe" src="/mw"></iframe>
|
|
</div>
|
|
</div>
|
|
<div id="cats" class="expanded">
|
|
<div class="ocontents">
|
|
<div class="contents">
|
|
<div class="head">Liste des catégories</div>
|
|
<div class="body"></div>
|
|
<div class="foot"><input id="allcats" type="checkbox"><label for="allcats">Afficher tous</label></div>
|
|
<hr>
|
|
<div class="history"><input id="history" type="checkbox"><label for="history">Histoire</div>
|
|
</div>
|
|
</div>
|
|
<div class="botright"><div class="thumb"></div></div>
|
|
</div>
|
|
</body>
|
|
<script type="text/javascript" src="dist/wikimaptotal.js"></script>
|
|
<script>
|
|
var svg = document.querySelector("#svg"),
|
|
iframe = document.querySelector("iframe#wikiframe"),
|
|
cats = document.querySelector("#cats"),
|
|
cats_contents = document.querySelector("#cats .body"),
|
|
cats_thumb = document.querySelector("#cats .thumb"),
|
|
allcatscb = document.querySelector("input#allcats"),
|
|
historycb = document.querySelector("input#history"),
|
|
current_title = null,
|
|
loaded = false;
|
|
|
|
window.addEventListener("resize", resize);
|
|
function resize() {
|
|
var w = window,
|
|
d = document,
|
|
e = d.documentElement,
|
|
g = d.getElementsByTagName('body')[0],
|
|
x = w.innerWidth || e.clientWidth || g.clientWidth,
|
|
y = w.innerHeight|| e.clientHeight|| g.clientHeight;
|
|
svg.setAttribute("width", x);
|
|
svg.setAttribute("height", y);
|
|
console.log("resize", x, y);
|
|
}
|
|
resize();
|
|
// console.log("mediawikiapi", mediawikiapi);
|
|
var symbols = {
|
|
"Orientations": "symbols.svg#Orientations",
|
|
"Ateliers pluridisciplinaires": "symbols.svg#Ateliers_pluridisciplinaires",
|
|
"Cours de soutien à l'orientation": "symbols.svg#Cours_de_soutien_a_l'orientation",
|
|
"Cours de soutien spécifique": "symbols.svg#Cours_de_soutien_specifique",
|
|
"Cours techniques": "symbols.svg#Cours_techniques",
|
|
"Cours théoriques": "symbols.svg#Cours_theoriques",
|
|
"Enseignants": "symbols.svg#Enseignants",
|
|
"default": "symbols.svg#Main"
|
|
};
|
|
var map = new wikimap.SimpleMap(symbols);
|
|
map.init_svg("#svg");
|
|
async function doload () {
|
|
console.log("loading map");
|
|
await map.load_json("sitemap.json");
|
|
console.log("loading categories");
|
|
await map.load_cats("cats.json", cats_contents);
|
|
console.log("LOADED!");
|
|
loaded = true;
|
|
if (current_title) {
|
|
map.set_active_title(current_title);
|
|
}
|
|
}
|
|
|
|
map.on("page", function (title) {
|
|
console.log("map.page", title);
|
|
var url = wiki_title_to_url(title);
|
|
iframe.src = url;
|
|
})
|
|
// async function doload() {
|
|
// map.set_active_node(startpage.value);
|
|
// }
|
|
var URLPAT = new RegExp("http://wiki.erg.be/mw/index.php/(.+)");
|
|
function strip_fragment (href) {
|
|
var spos = href.indexOf("#");
|
|
if (spos >= 0) {
|
|
return href.substr(0, href.indexOf("#"))
|
|
}
|
|
return href;
|
|
}
|
|
function url_to_wiki_title (href) {
|
|
href = strip_fragment(href);
|
|
var m = URLPAT.exec(href);
|
|
if (m !== null) {
|
|
return decodeURI(m[1]).replace(/_/g, " ");
|
|
}
|
|
console.log("m", m);
|
|
}
|
|
function wiki_title_to_url (title) {
|
|
return "http://wiki.erg.be/mw/index.php/"+encodeURI(title.replace(/ /g, "_"));
|
|
}
|
|
window.addEventListener("DOMContentLoaded", doload);
|
|
iframe.addEventListener("load", function () {
|
|
var href = strip_fragment(iframe.contentWindow.location.href);
|
|
console.log("iframe loaded", href);
|
|
var title = url_to_wiki_title(href);
|
|
console.log("title", title);
|
|
if (title) {
|
|
current_title = title;
|
|
if (loaded) {
|
|
map.set_active_title(title);
|
|
}
|
|
}
|
|
// attempt to map url to wiki page title and update the map if it is one
|
|
|
|
});
|
|
|
|
cats_thumb.addEventListener("click", function () {
|
|
cats.classList.toggle("expanded");
|
|
});
|
|
// allcats checkbox
|
|
// match current state & respond to change events
|
|
// console.log("setting checked to", cats.classList.contains("showall"))
|
|
allcatscb.checked = cats.classList.contains("showall");
|
|
allcatscb.addEventListener("change", function () {
|
|
// console.log("allcats", allcatscb);
|
|
if (allcatscb.checked) {
|
|
cats.classList.add("showall")
|
|
} else {
|
|
cats.classList.remove("showall")
|
|
}
|
|
})
|
|
historycb.addEventListener("change", function () {
|
|
// console.log("history", historycb.checked);
|
|
map.set_show_history(historycb.checked);
|
|
})
|
|
</script>
|
|
</html>
|