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";
|
||||
}
|
||||
|
||||
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) {
|
||||
const assets = Array.isArray(release?.assets) ? release.assets : [];
|
||||
const isoAsset = assets.find((asset) => /\.iso$/i.test(asset?.name || ""));
|
||||
@@ -79,9 +115,7 @@
|
||||
li.className = "version-item";
|
||||
|
||||
const label = getReleaseLabel(entry);
|
||||
const downloadUrl = mode === "releases"
|
||||
? pickDirectDownloadUrl(entry)
|
||||
: `https://github.com/${OWNER}/${REPO}/archive/refs/tags/${encodeURIComponent(entry.name)}.zip`;
|
||||
const downloadUrl = getReleasePageUrl(entry, mode);
|
||||
const published = formatDate(entry.published_at || entry.commit?.committer?.date);
|
||||
|
||||
li.innerHTML = `
|
||||
@@ -129,9 +163,10 @@
|
||||
if (currentVersionNode) currentVersionNode.textContent = latestLabel;
|
||||
if (currentVersionDateNode) currentVersionDateNode.textContent = latestDate ? ` · ${latestDate}` : "";
|
||||
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");
|
||||
return;
|
||||
@@ -146,7 +181,7 @@
|
||||
if (Array.isArray(tags) && tags.length > 0) {
|
||||
const latestTag = tags[0];
|
||||
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 (currentVersionDateNode) currentVersionDateNode.textContent = "";
|
||||
|
||||
@@ -34,6 +34,23 @@
|
||||
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 {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user