diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-01-28 16:03:16 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-01-28 16:03:16 +0100 |
| commit | 96373c6d93f0c310f8b777494c5a40c27fd78a0b (patch) | |
| tree | bfb9825ac80cd2331ede1adc21f84230813a1f22 /templates | |
| parent | a584e47488212c61defe9e266d23eb036c0148e4 (diff) | |
| download | scratch-gallery-96373c6d93f0c310f8b777494c5a40c27fd78a0b.tar.gz scratch-gallery-96373c6d93f0c310f8b777494c5a40c27fd78a0b.zip | |
initial commit
Diffstat (limited to 'templates')
| -rw-r--r-- | templates/index.css | 144 | ||||
| -rw-r--r-- | templates/index.html | 81 | ||||
| -rw-r--r-- | templates/index.js | 33 |
3 files changed, 258 insertions, 0 deletions
diff --git a/templates/index.css b/templates/index.css new file mode 100644 index 0000000..975c233 --- /dev/null +++ b/templates/index.css @@ -0,0 +1,144 @@ +:root { + /* define applied colors */ + --bg: #fdfdfd; + --fg: #1a1a1a; + --link-color: #0000EE; +} +@media (prefers-color-scheme: dark) { + /* change apllied colors to the dark gruvbox pallet + * https://github.com/morhetz/gruvbox + */ + :root { + --bg: #282828; /* dark bg */ + --fg: #ebdbb2; /* dark fg */ + --link-color: #d79921; /* yellow */ + } +} + +html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: var(--fg); + background-color: var(--bg); +} + +body { + margin: 0 auto; + /* max-width: 36em; */ + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; +} + +footer { + position:absolute; + bottom: 0; +} + +a { + color: var(--link-color); +} + +a:visited { + color: var(--link-color); +} + +@media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } +} + +* { + box-sizing: border-box; +} + +/* Position the image container (needed to position the left and right arrows) */ +.container { + position: relative; +} + +/* Hide the images by default */ +.mySlides { + display: none; +} + +/* Add a pointer when hovering over the thumbnail images */ +.cursor { + cursor: pointer; +} + +/* Next & previous buttons */ +.prev, +.next { + cursor: pointer; + position: absolute; + top: 40%; + width: auto; + padding: 16px; + margin-top: -50px; + color: white; + font-weight: bold; + font-size: 20px; + border-radius: 0 3px 3px 0; + user-select: none; + -webkit-user-select: none; +} + +/* Position the "next button" to the right */ +.next { + right: 0; + border-radius: 3px 0 0 3px; +} + +/* On hover, add a black background color with a little bit see-through */ +.prev:hover, +.next:hover { + background-color: rgba(0, 0, 0, 0.8); +} + +/* Number text (1/3 etc) */ +.numbertext { + color: #f2f2f2; + font-size: 12px; + padding: 8px 12px; + position: absolute; + top: 0; +} + +/* Container for image text */ +.caption-container { + text-align: center; + background-color: #222; + padding: 2px 16px; + color: white; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +/* Six columns side by side */ +.column { + float: left; + width: 16.66%; +} + +/* Add a transparency effect for thumnbail images */ +.demo { + opacity: 0.6; +} + +.active, +.demo:hover { + opacity: 1; +} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2ee1369 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,81 @@ +<!DOCTYPE html> +<html> +<head> + <title>{{ title }}</title> + <meta charset="utf8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="author" content="{{ author }}"> + + <style> +{% include 'index.css' %} + </style> + + <script language="javascript" type="text/javascript"> +{% include 'index.js' %} + </script> +</head> + +<body> + <h1>{{ title }}</h1> +{% if halloffame %} + <div id='hall-of-fame'> + <h2>Hall of Fame</h2> +{% for id, game in halloffame.items() %} + <div class="mySlides"> + <div class="numbertext">{{ loop.index }}/ {{ loop.length }}</div> + <iframe src="{{ game.path }}/{{ game.entry }}" + pid="{{ id }}" + title="{{ game.name }}" + style="width:100%" + allow="fullscreen *"> + </iframe> + </div> +{% endfor %} + </div> +{% endif %} +{% for section, subsections in projects.items() %} +<h2>{{ section }}</h2> +{% for subsection, games in subsections.items() %} +<h3>{{ subsection }}</h2> +<div class="container"> +{% for id, game in games.items() %} + <!-- Full-width iframes with number text --> + <div class="mySlides"> + <div class="numbertext">{{ loop.index }}/{{ loop.length }}</div> + <iframe src="{{ game.path }}/{{ game.entry }}" + pid="{{ id }}" + title="{{ game.name }}" + style="width:100%" + allow="fullscreen *"> + </iframe> + </div> +{% endfor %} + + <!-- Next and previous buttons --> + <a class="prev" onclick="plusSlides(-1)">❮</a> + <a class="next" onclick="plusSlides(1)">❯</a> + + <!-- Image text --> + <div class="caption-container"> + <p id="caption"></p> + </div> + + <!-- Thumbnail images --> + <div class="row"> +{% for _, game in games.items() %} + <div class="column"> + <img class="demo cursor" src="img_woods.jpg" style="width:100%" onclick="currentSlide({{ loop.index }})" alt="{{ game.name }} von {{ game.authors }} {{game.license }} "> + </div> +{% endfor %} + </div> +</div> +{% endfor %} +{% endfor %} +{% if no_license %} +{% else %} +<footer> +<p xmlns:cc="http://creativecommons.org/ns#">Diese Seite von <span property="cc:attributionName">{{ author }}</span> ist unter folgender Lizenz veröffentlicht: <a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">CC BY-SA 4.0<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" alt=""><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" alt=""><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1" alt=""></a></p> +</footer> +{% endif %} +</body> +</html> diff --git a/templates/index.js b/templates/index.js new file mode 100644 index 0000000..22d8c4e --- /dev/null +++ b/templates/index.js @@ -0,0 +1,33 @@ +let slideIndex = 1; + +// Next/previous controls +function plusSlides(n) { + showSlides(slideIndex += n); +} + +// Thumbnail image controls +function currentSlide(n) { + showSlides(slideIndex = n); +} + +function showSlides(n) { + let i; + let slides = document.getElementsByClassName("mySlides"); + let dots = document.getElementsByClassName("demo"); + let captionText = document.getElementById("caption"); + if (n > slides.length) {slideIndex = 1} + if (n < 1) {slideIndex = slides.length} + for (i = 0; i < slides.length; i++) { + slides[i].style.display = "none"; + } + for (i = 0; i < dots.length; i++) { + dots[i].className = dots[i].className.replace(" active", ""); + } + slides[slideIndex-1].style.display = "block"; + dots[slideIndex-1].className += " active"; + captionText.innerHTML = dots[slideIndex-1].alt; +} + +window.onload = function () { + showSlides(slideIndex); +} |
