Compare commits
5 commits
2794359218
...
dd856d93d5
Author | SHA1 | Date | |
---|---|---|---|
dd856d93d5 | |||
fa9d7e9be0 | |||
a9d6a3800e | |||
8b7f5b39b8 | |||
a3f85e4cba |
5 changed files with 66 additions and 48 deletions
|
@ -1,3 +1,4 @@
|
|||
copyright_start: 2021
|
||||
guilds:
|
||||
# Tegaki Tuesday
|
||||
- id: 814700630958276649
|
||||
|
|
|
@ -6,6 +6,7 @@ use std::fs;
|
|||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Settings {
|
||||
pub guilds: Vec<Guild>,
|
||||
pub copyright_start: u32,
|
||||
}
|
||||
|
||||
impl Settings {
|
||||
|
|
|
@ -43,11 +43,19 @@ input[type=number] {
|
|||
#content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
"nav nav"
|
||||
"challenge submissions";
|
||||
grid-template-columns: 30em auto;
|
||||
grid-template-rows: min-content auto;
|
||||
|
||||
overflow: hidden;
|
||||
|
||||
nav {
|
||||
grid-area: nav;
|
||||
|
||||
--bg: #{$fg};
|
||||
--fg: #{$bg};
|
||||
background: var(--bg);
|
||||
|
@ -98,17 +106,21 @@ input[type=number] {
|
|||
}
|
||||
}
|
||||
|
||||
& > div:first-of-type {
|
||||
& > div {
|
||||
overflow: scroll;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
& > :first-child {
|
||||
min-width: 40em;
|
||||
padding: 1em;
|
||||
}
|
||||
& > * {
|
||||
overflow: scroll;
|
||||
flex-direction: column;
|
||||
gap: 1em;
|
||||
|
||||
footer {
|
||||
margin-top: auto;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
#challenge {
|
||||
padding: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
|
@ -116,17 +128,17 @@ input[type=number] {
|
|||
}
|
||||
|
||||
#submissions {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: calc(100% - 2em);
|
||||
grid-area: submissions;
|
||||
|
||||
background: rgba(0, 0, 0, 0.125);
|
||||
$gap: 0.5em;
|
||||
padding: $gap;
|
||||
padding: 1em;
|
||||
|
||||
& > div {
|
||||
width: 100%;
|
||||
column-count: 3;
|
||||
margin: 0;
|
||||
|
||||
$gap: 0.5em;
|
||||
gap: $gap;
|
||||
|
||||
& > figure {
|
||||
|
|
1
templates/copyright-years.html.tera
Normal file
1
templates/copyright-years.html.tera
Normal file
|
@ -0,0 +1 @@
|
|||
© {% set year = now() | date(format="%Y") | int %}{{ settings.copyright_start }}{% if year != settings.copyright_start %}–{{ year }}{% endif %}
|
|
@ -64,7 +64,7 @@
|
|||
</nav>
|
||||
</a>
|
||||
</nav>
|
||||
<div>
|
||||
<div id="challenge">
|
||||
<div>
|
||||
<h1>Welcome to Tegaki Tuesday #{{ challenge }}!</h1>
|
||||
{% if content.japanese %}
|
||||
|
@ -118,38 +118,41 @@
|
|||
<p><em>This challenge was suggested by <strong>{{ content.suggester }}</strong> using the <code>-h suggest</code> command.</code></em></p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<div id="submissions">
|
||||
<script>
|
||||
const submissionModal = image => {
|
||||
const dialog = document.createElement("dialog");
|
||||
dialog.style.padding = "0";
|
||||
const img = document.createElement("img");
|
||||
img.src = "/{{ challenge }}/" + image;
|
||||
const defaultZoom = "75vh";
|
||||
img.style.height = defaultZoom;
|
||||
img.style.cursor = "zoom-in";
|
||||
img.style.display = "block";
|
||||
img.style.margin = "0";
|
||||
img.onclick = event => img.style.height = img.style.height ? "" : defaultZoom;
|
||||
dialog.appendChild(img);
|
||||
dialog.addEventListener("close", event => document.body.removeChild(dialog));
|
||||
document.body.appendChild(dialog);
|
||||
dialog.showModal();
|
||||
};
|
||||
</script>
|
||||
<div>
|
||||
{% for submission in submissions %}
|
||||
{% set author = users[submission.author_id] %}
|
||||
<figure>
|
||||
<img src="/{{ challenge }}/{{ submission.image }}" alt="{{ author.username }}'s submission" onclick="submissionModal('{{ submission.image }}')">
|
||||
<figcaption>{% if not author.deleted %}<a href="https://discord.com/users/{{ author.id }}" target="_blank">{% endif %}{{ author.username }}{% if author.deleted %} (deleted account){% else %}</a>{% endif %}</figcaption>
|
||||
</figure>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
some random shit goes here
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
Copyright {% include "copyright-years" %} Tegaki Tuesday. All rights reserved. 字ちゃん mascot art by <a href="https://twitter.com/bellumela" target="_blank">@bellumela</a>.
|
||||
</footer>
|
||||
</div>
|
||||
<div id="submissions">
|
||||
<script>
|
||||
const submissionModal = image => {
|
||||
const dialog = document.createElement("dialog");
|
||||
dialog.style.padding = "0";
|
||||
const img = document.createElement("img");
|
||||
img.src = "/{{ challenge }}/" + image;
|
||||
const defaultZoom = "75vh";
|
||||
img.style.height = defaultZoom;
|
||||
img.style.cursor = "zoom-in";
|
||||
img.style.display = "block";
|
||||
img.style.margin = "0";
|
||||
img.onclick = event => img.style.height = img.style.height ? "" : defaultZoom;
|
||||
dialog.appendChild(img);
|
||||
dialog.addEventListener("close", event => document.body.removeChild(dialog));
|
||||
document.body.appendChild(dialog);
|
||||
dialog.showModal();
|
||||
};
|
||||
</script>
|
||||
<div>
|
||||
{% for submission in submissions %}
|
||||
{% set author = users[submission.author_id] %}
|
||||
<figure>
|
||||
<img src="/{{ challenge }}/{{ submission.image }}" alt="{{ author.username }}'s submission" onclick="submissionModal('{{ submission.image }}')">
|
||||
<figcaption>{% if not author.deleted %}<a href="https://discord.com/users/{{ author.id }}" target="_blank">{% endif %}{{ author.username }}{% if author.deleted %} (deleted account){% else %}</a>{% endif %}</figcaption>
|
||||
</figure>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<footer>
|
||||
Submissions are copyright {% include "copyright-years" %} their respective submitters, and are licensed under the <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
Loading…
Add table
Reference in a new issue