From e20863a7e1ef4dc91d13ddf31748d1133430625c Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 25 Jan 2022 22:13:48 +0000 Subject: [PATCH] Support links to video hosts other than YouTube --- app/flatpages/help/api.md | 2 +- app/flatpages/help/package_config.md | 2 +- app/logic/packages.py | 4 +--- app/public/static/video_embed.js | 2 ++ app/scss/gallery.scss | 13 +++++++++++-- app/templates/base.html | 2 +- app/templates/packages/create_edit.html | 2 +- app/templates/packages/view.html | 5 ++++- 8 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/flatpages/help/api.md b/app/flatpages/help/api.md index 679ac33..1814d49 100644 --- a/app/flatpages/help/api.md +++ b/app/flatpages/help/api.md @@ -89,7 +89,7 @@ Tokens can be attained by visiting [Settings > API Tokens](/user/tokens/). * `website`: Website URL. * `issue_tracker`: Issue tracker URL. * `forums`: forum topic ID. - * `video_url`: URL to a video, YouTube only for now. + * `video_url`: URL to a video. * GET `/api/packages///dependencies/` * Returns dependencies, with suggested candidates * If query argument `only_hard` is present, only hard deps will be returned. diff --git a/app/flatpages/help/package_config.md b/app/flatpages/help/package_config.md index 68f84c6..5ddc5c0 100644 --- a/app/flatpages/help/package_config.md +++ b/app/flatpages/help/package_config.md @@ -61,7 +61,7 @@ It should be a JSON dictionary with one or more of the following optional keys: * `website`: Website URL. * `issue_tracker`: Issue tracker URL. * `forums`: forum topic ID. -* `video_url`: URL to a video, YouTube only for now. +* `video_url`: URL to a video. Use `null` to unset fields where relevant. diff --git a/app/logic/packages.py b/app/logic/packages.py index 4f96724..c13e3b2 100644 --- a/app/logic/packages.py +++ b/app/logic/packages.py @@ -131,9 +131,7 @@ def do_edit_package(user: User, package: Package, was_new: bool, was_web: bool, data["media_license"] = get_license(data["media_license"]) if "video_url" in data: - data["video_url"] = clean_youtube_url(data["video_url"]) - if data["video_url"] is None: - raise LogicError(400, lazy_gettext("Video URL is not a YouTube video URL")) + data["video_url"] = clean_youtube_url(data["video_url"]) or data["video_url"] for key in ["name", "title", "short_desc", "desc", "type", "dev_state", "license", "media_license", "repo", "website", "issueTracker", "forums", "video_url"]: diff --git a/app/public/static/video_embed.js b/app/public/static/video_embed.js index 9ff2e06..c62dd5b 100644 --- a/app/public/static/video_embed.js +++ b/app/public/static/video_embed.js @@ -24,6 +24,8 @@ document.querySelectorAll(".video-embed").forEach(ele => { ele.setAttribute("data-src", href); ele.removeAttribute("href"); + + ele.querySelector(".label").innerText = "YouTube"; } } catch (e) { console.error(url); diff --git a/app/scss/gallery.scss b/app/scss/gallery.scss index e8ea172..66e0011 100644 --- a/app/scss/gallery.scss +++ b/app/scss/gallery.scss @@ -47,11 +47,12 @@ background: #111; position: relative; display: flex !important; + flex-direction: column !important; align-items: center !important; justify-content: center !important; cursor: pointer; - .fas { + .fa-play { display: block; font-size: 200%; color: #f44; @@ -60,10 +61,18 @@ &:hover { background: #191919; - .fas { + .fa-play { color: red; } } + + .label { + position: absolute; + top: 0.25rem; + right: 0.5rem; + color: #555; + font-size: 80%; + } } .screenshot-add { diff --git a/app/templates/base.html b/app/templates/base.html index 9a4de5d..8c6eb41 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -6,7 +6,7 @@ {% block title %}title{% endblock %} - {{ config.USER_APP_NAME }} - + diff --git a/app/templates/packages/create_edit.html b/app/templates/packages/create_edit.html index 3e241a6..8324059 100644 --- a/app/templates/packages/create_edit.html +++ b/app/templates/packages/create_edit.html @@ -117,7 +117,7 @@ pattern="[0-9]+", prefix="forum.minetest.net/viewtopic.php?t=", placeholder=_("Tip: paste in a forum topic URL")) }} - {{ render_field(form.video_url, class_="pkg_meta", hint=_("Only supports YouTube, for now")) }} + {{ render_field(form.video_url, class_="pkg_meta", hint=_("YouTube videos will be shown in an embed.")) }}
{{ render_submit_field(form.submit) }}
diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index 8f687a5..d008611 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -252,8 +252,11 @@