fix(dl): afficher les images de release et ouvrir la page de release
This commit is contained in:
@@ -27,6 +27,42 @@
|
|||||||
return entry?.name || entry?.tag_name || entry?.ref || "Sans nom";
|
return entry?.name || entry?.tag_name || entry?.ref || "Sans nom";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getReleasePageUrl(entry, mode) {
|
||||||
|
if (mode === "releases") {
|
||||||
|
return entry?.html_url || REPO_URL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry?.name) {
|
||||||
|
return `${REPO_URL}/releases/tag/${encodeURIComponent(entry.name)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return REPO_URL;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sanitizeReleaseHtml(html) {
|
||||||
|
const wrapper = document.createElement("div");
|
||||||
|
wrapper.innerHTML = html || "";
|
||||||
|
|
||||||
|
wrapper.querySelectorAll("script, iframe, object, embed, link, style").forEach((node) => node.remove());
|
||||||
|
wrapper.querySelectorAll("*").forEach((node) => {
|
||||||
|
Array.from(node.attributes).forEach((attribute) => {
|
||||||
|
const name = attribute.name.toLowerCase();
|
||||||
|
const value = attribute.value || "";
|
||||||
|
|
||||||
|
if (name.startsWith("on")) {
|
||||||
|
node.removeAttribute(attribute.name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((name === "href" || name === "src") && /^javascript:/i.test(value)) {
|
||||||
|
node.removeAttribute(attribute.name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return wrapper.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
function pickDirectDownloadUrl(release) {
|
function pickDirectDownloadUrl(release) {
|
||||||
const assets = Array.isArray(release?.assets) ? release.assets : [];
|
const assets = Array.isArray(release?.assets) ? release.assets : [];
|
||||||
const isoAsset = assets.find((asset) => /\.iso$/i.test(asset?.name || ""));
|
const isoAsset = assets.find((asset) => /\.iso$/i.test(asset?.name || ""));
|
||||||
@@ -79,9 +115,7 @@
|
|||||||
li.className = "version-item";
|
li.className = "version-item";
|
||||||
|
|
||||||
const label = getReleaseLabel(entry);
|
const label = getReleaseLabel(entry);
|
||||||
const downloadUrl = mode === "releases"
|
const downloadUrl = getReleasePageUrl(entry, mode);
|
||||||
? pickDirectDownloadUrl(entry)
|
|
||||||
: `https://github.com/${OWNER}/${REPO}/archive/refs/tags/${encodeURIComponent(entry.name)}.zip`;
|
|
||||||
const published = formatDate(entry.published_at || entry.commit?.committer?.date);
|
const published = formatDate(entry.published_at || entry.commit?.committer?.date);
|
||||||
|
|
||||||
li.innerHTML = `
|
li.innerHTML = `
|
||||||
@@ -129,9 +163,10 @@
|
|||||||
if (currentVersionNode) currentVersionNode.textContent = latestLabel;
|
if (currentVersionNode) currentVersionNode.textContent = latestLabel;
|
||||||
if (currentVersionDateNode) currentVersionDateNode.textContent = latestDate ? ` · ${latestDate}` : "";
|
if (currentVersionDateNode) currentVersionDateNode.textContent = latestDate ? ` · ${latestDate}` : "";
|
||||||
if (currentReleaseNoteNode) {
|
if (currentReleaseNoteNode) {
|
||||||
currentReleaseNoteNode.textContent = latest.body || "Release GitHub la plus récente.";
|
const bodyHtml = sanitizeReleaseHtml(latest.body || "");
|
||||||
|
currentReleaseNoteNode.innerHTML = bodyHtml || "Release GitHub la plus récente.";
|
||||||
}
|
}
|
||||||
if (latestDownloadNode) latestDownloadNode.href = latestDownloadUrl;
|
if (latestDownloadNode) latestDownloadNode.href = latest.html_url || REPO_URL;
|
||||||
|
|
||||||
renderList(releases, "releases");
|
renderList(releases, "releases");
|
||||||
return;
|
return;
|
||||||
@@ -146,7 +181,7 @@
|
|||||||
if (Array.isArray(tags) && tags.length > 0) {
|
if (Array.isArray(tags) && tags.length > 0) {
|
||||||
const latestTag = tags[0];
|
const latestTag = tags[0];
|
||||||
const latestLabel = getReleaseLabel(latestTag);
|
const latestLabel = getReleaseLabel(latestTag);
|
||||||
const latestDownloadUrl = `https://github.com/${OWNER}/${REPO}/archive/refs/tags/${encodeURIComponent(latestTag.name)}.zip`;
|
const latestDownloadUrl = `${REPO_URL}/releases/tag/${encodeURIComponent(latestTag.name)}`;
|
||||||
|
|
||||||
if (currentVersionNode) currentVersionNode.textContent = `${latestLabel} (tag)`;
|
if (currentVersionNode) currentVersionNode.textContent = `${latestLabel} (tag)`;
|
||||||
if (currentVersionDateNode) currentVersionDateNode.textContent = "";
|
if (currentVersionDateNode) currentVersionDateNode.textContent = "";
|
||||||
|
|||||||
@@ -34,6 +34,23 @@
|
|||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.latest-note img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
margin: 0.75rem 0;
|
||||||
|
border-radius: 0.65rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.latest-note a {
|
||||||
|
color: #7dd3fc;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.latest-note a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
.versions-archive {
|
.versions-archive {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user