2023-02-09 10:45:59 +01:00
|
|
|
<!DOCTYPE html>
|
2023-10-15 20:58:20 +02:00
|
|
|
<html lang="fr">
|
2023-04-24 17:22:12 +02:00
|
|
|
<head dir="ltr">
|
|
|
|
{{>head.html}}
|
2023-10-15 20:58:20 +02:00
|
|
|
<link rel="stylesheet" href="/css/portfolio.css" />
|
|
|
|
<link rel="stylesheet" href="/css/languages.css" />
|
2023-04-24 17:22:12 +02:00
|
|
|
</head>
|
2023-02-09 10:45:59 +01:00
|
|
|
<body>
|
2023-10-15 20:58:20 +02:00
|
|
|
<header>{{>navbar.html}}</header>
|
|
|
|
<main>
|
|
|
|
{{#data}}
|
|
|
|
<h1>Portfolio</h1>
|
2024-01-25 18:23:07 +01:00
|
|
|
{{#about}} {{&content}} {{/about}}
|
2023-04-19 16:57:16 +02:00
|
|
|
|
2023-10-15 20:58:20 +02:00
|
|
|
<!-- Error message -->
|
2024-01-25 18:23:07 +01:00
|
|
|
{{#location_apps}}
|
2023-10-15 20:58:20 +02:00
|
|
|
<p>{{location_apps}} {{err_msg}}</p>
|
|
|
|
{{/location_apps}} {{^location_apps}}
|
|
|
|
|
|
|
|
<h2>Projets</h2>
|
|
|
|
<ul>
|
2023-10-16 12:31:52 +02:00
|
|
|
{{#apps}} {{>portfolio/card.html}} {{/apps}}
|
2023-10-15 20:58:20 +02:00
|
|
|
</ul>
|
2023-10-15 22:27:08 +02:00
|
|
|
|
|
|
|
{{#archived_apps_exists}}
|
|
|
|
<h2>Archives</h2>
|
|
|
|
<ul>
|
2023-10-15 22:30:35 +02:00
|
|
|
{{#archived_apps}} {{>portfolio/card.html}} {{/archived_apps}}
|
2023-10-15 22:27:08 +02:00
|
|
|
</ul>
|
|
|
|
{{/archived_apps_exists}} {{/location_apps}} {{/data}}
|
2023-10-15 20:58:20 +02:00
|
|
|
</main>
|
2023-10-15 21:32:45 +02:00
|
|
|
|
|
|
|
<script>
|
|
|
|
/* Fix links in list */
|
|
|
|
window.addEventListener("load", () =>
|
2023-10-15 22:30:35 +02:00
|
|
|
document.querySelectorAll("main a").forEach(function (link) {
|
2023-10-15 21:32:45 +02:00
|
|
|
link.setAttribute("target", "_blank");
|
|
|
|
link.setAttribute("rel", "noreferrer");
|
2024-01-26 17:02:01 +01:00
|
|
|
link.addEventListener("mouseup", function (event) {
|
2023-10-15 21:32:45 +02:00
|
|
|
event.stopPropagation();
|
|
|
|
});
|
|
|
|
})
|
|
|
|
);
|
2024-01-19 12:10:38 +01:00
|
|
|
|
2024-01-26 17:17:08 +01:00
|
|
|
/* Middle click */
|
|
|
|
const disableScroll = () => {
|
|
|
|
if (event.button === 1) {
|
|
|
|
event.preventDefault();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2024-01-19 12:10:38 +01:00
|
|
|
/* Open cards link */
|
|
|
|
const openLink = (url) => {
|
2024-01-19 12:15:44 +01:00
|
|
|
const backgroundtab = () =>
|
|
|
|
Object.assign(document.createElement("a"), {
|
|
|
|
href: url,
|
|
|
|
target: "_blank",
|
|
|
|
rel: "noreferrer",
|
|
|
|
}).dispatchEvent(
|
|
|
|
new MouseEvent("click", { ctrlKey: true, metaKey: true })
|
|
|
|
);
|
|
|
|
|
2024-01-19 12:10:38 +01:00
|
|
|
switch (event.button) {
|
|
|
|
case 0:
|
|
|
|
/* Left click */
|
2024-01-19 12:15:44 +01:00
|
|
|
if (event.ctrlKey || event.metaKey) {
|
|
|
|
backgroundtab();
|
|
|
|
} else {
|
|
|
|
window.open(url, "_blank", "noreferrer");
|
|
|
|
}
|
2024-01-19 12:10:38 +01:00
|
|
|
break;
|
2024-01-26 17:17:08 +01:00
|
|
|
|
2024-01-19 12:10:38 +01:00
|
|
|
case 1:
|
|
|
|
/* Middle click */
|
2024-01-19 12:15:44 +01:00
|
|
|
backgroundtab();
|
2024-01-19 12:10:38 +01:00
|
|
|
break;
|
2024-01-26 17:17:08 +01:00
|
|
|
|
2024-01-19 12:10:38 +01:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
};
|
2023-10-15 21:32:45 +02:00
|
|
|
</script>
|
2023-02-09 10:45:59 +01:00
|
|
|
</body>
|
|
|
|
</html>
|