Files
godot-showreel-voting/templates/manage-submission.html
2026-01-29 14:39:01 +01:00

101 lines
4.0 KiB
HTML

<main id="submission-form">
<div>
<h1>Showreel Submission</h1>
<p>Fill in the form to submit your video for the Godot Showreel.</p>
</div>
<hr>
<form method="POST" enctype="multipart/form-data" hx-post="{{ url_for('votes.update_submission', video_id=video_id, _method='POST') }}" hx-target='#submission-form' hx-swap='outerHTML'>
{{ form.csrf_token }}
{{ form.game.label }}<br>
{{ form.game(size=100) }}<br>
{% for error in form.game.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
{{ form.author_name.label }}<br>
{{ form.author_name(size=100) }}<br>
{% for error in form.author_name.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
{{ form.contact_email.label }}<br>
{{ form.contact_email(size=100) }}<br>
{% for error in form.contact_email.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
{{ form.video_link.label }}<br>
{{ form.video_link(size=100) }}
<button type="button" class="button secondary" id="preview-btn">Preview</button><br>
{% for error in form.video_link.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
<div id="preview-container" style="display: none;">
<iframe width="560" height="315" src="" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
<br>
{{ form.video_download_link.label }}<br>
{{ form.video_download_link(size=100) }}<br>
{% for error in form.video_download_link.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
{{ form.follow_me_link.label }}<br>
{{ form.follow_me_link(size=100) }}<br>
{% for error in form.follow_me_link.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
{{ form.store_link.label }}<br>
{{ form.store_link(size=100) }}<br>
{% for error in form.store_link.errors %}
<p class="error">{{ error }}</p>
{% endfor %}<br>
<button type="submit" class="button secondary">Update</button>
</form>
</main>
<script>
// Render video preview
function parseVideoID(videoLink) {
const videoUrl = new URL(videoLink);
console.log(videoUrl.hostname);
const hostname = videoUrl.hostname
if (hostname == 'youtu.be') {
return videoUrl.pathname.slice(1);
}
else if (hostname === 'www.youtube.com' || hostname === 'youtube.com' || hostname === 'm.youtube.com') {
if (videoUrl.pathname == '/watch') {
return videoUrl.searchParams.get('v');
}
else if (videoUrl.pathname.startsWith('/embed/')) {
return videoUrl.pathname.split('/')[2];
}
else if (videoUrl.pathname.startsWith('/v/')) {
return videoUrl.pathname.split('/')[2];
}
}
return null;
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('preview-btn').addEventListener('click', function() {
const originalForm = document.querySelector("#submission-form form");
const previewContainer = document.getElementById('preview-container');
let videoID = parseVideoID(originalForm.querySelector("input[name='video_link']").value);
if (!videoID) {
previewContainer.innerHTML = '<p class="error">Invalid video link provided.</p>';
previewContainer.style.display = 'block';
return;
}
videoID = 'https://www.youtube.com/embed/' + videoID + '?rel=0&autoplay=1';
previewContainer.querySelector('iframe').src = videoID;
previewContainer.style.display = 'block';
});
})
</script>