added ModPacks support

This commit is contained in:
2026-08-04 20:23:32 -05:00
parent ef7147ca83
commit 50a70bfe31
4 changed files with 227 additions and 29 deletions
+35 -3
View File
@@ -17,6 +17,11 @@
<div class="project-title-row">
<h1>{{ project.title }}</h1>
<span class="category-badge">{{ project.get_category_display }}</span>
{% if mods_manifest %}
{% if mods_manifest.minecraft %}<span class="category-badge modpack-badge" title="Minecraft version">{{ mods_manifest.minecraft }}</span>{% endif %}
{% for loader in mods_manifest.modloaders %}<span class="category-badge modpack-badge" title="Modloader">{{ loader }}</span>{% endfor %}
<span class="category-badge modpack-badge" title="Mod count">{{ mods_manifest.totals.total }} mods</span>
{% endif %}
<span class="project-id-badge" title="Project ID">#{{ project.pk }}</span>
</div>
{% if project.summary %}<p class="project-summary">{{ project.summary }}</p>{% endif %}
@@ -347,10 +352,26 @@
<div class="card">
<h2><i class="fas fa-cubes"></i> Mods</h2>
{% if mods_manifest.files %}
<span class="mods-source-badge">{{ mods_manifest.source }}</span>
<ul class="mods-list">
<div class="mods-summary">
<span class="mods-source-badge">{{ mods_manifest.source }}</span>
{% if mods_manifest.minecraft %}<span class="mods-stat">MC {{ mods_manifest.minecraft }}</span>{% endif %}
{% if mods_manifest.modloaders %}<span class="mods-stat">{{ mods_manifest.modloaders|join:' / ' }}</span>{% endif %}
<span class="mods-stat">{{ mods_manifest.totals.total }} mods</span>
{% if mods_manifest.totals.required is not None %}
<span class="mods-stat">{{ mods_manifest.totals.required }} required</span>
<span class="mods-stat">{{ mods_manifest.totals.optional }} optional</span>
{% endif %}
</div>
<input type="search" class="mods-filter" id="mods-filter" placeholder="Filter mods…" aria-label="Filter mods">
<ul class="mods-list" id="mods-list">
{% for mod in mods_manifest.files %}
<li><i class="fas fa-cube"></i> {{ mod.name }}</li>
<li class="mods-item">
<i class="fas fa-cube"></i>
<span class="mods-name">{{ mod.name }}</span>
{% if mod.file_name and mod.file_name != mod.name %}<span class="mods-file">{{ mod.file_name }}</span>{% endif %}
{% if mod.env == 'client' %}<span class="mods-badge client">client</span>{% elif mod.env == 'server' %}<span class="mods-badge server">server</span>{% elif mod.env == 'optional' or mod.required is False %}<span class="mods-badge optional">optional</span>{% endif %}
{% if mod.url %}<a class="mods-link" href="{{ mod.url }}" target="_blank" rel="noopener noreferrer" title="Open project page"><i class="fas fa-external-link-alt"></i></a>{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
@@ -496,6 +517,17 @@
btn.addEventListener('click', () => window.PacksPreview.open(btn));
});
}
// Live filter for the Mods tab.
const modsFilter = document.getElementById('mods-filter');
if (modsFilter) {
modsFilter.addEventListener('input', () => {
const q = modsFilter.value.toLowerCase();
document.querySelectorAll('#mods-list .mods-item').forEach(item => {
item.style.display = item.textContent.toLowerCase().includes(q) ? '' : 'none';
});
});
}
})();
</script>
{% endblock %}