backup for Phase 2.5

This commit is contained in:
2026-08-04 00:34:02 -05:00
parent a81e31bf1a
commit 8c13c5e5ec
9 changed files with 745 additions and 11 deletions
+7
View File
@@ -47,6 +47,13 @@
</nav>
</div>
<main class="main-content">
{% if messages %}
<div class="messages-banner">
{% for message in messages %}
<div class="message message-{{ message.tags }}">{{ message }}</div>
{% endfor %}
</div>
{% endif %}
{% block content %}{% endblock %}
</main>
@@ -64,6 +64,7 @@
{% if project.category == 'guide' %}Guide{% else %}Description{% endif %}
</button>
<button class="tab-btn" data-tab="versions" role="tab">Versions</button>
{% if animation_manifest %}<button class="tab-btn" data-tab="animations" role="tab">Animations</button>{% endif %}
{% if project.category == 'modpack' %}<button class="tab-btn" data-tab="mods" role="tab">Mods</button>{% endif %}
<button class="tab-btn" data-tab="gallery" role="tab">Gallery</button>
</div>
@@ -138,6 +139,96 @@
</div>
</section>
{% if animation_manifest %}
<section class="tab-panel" id="tab-animations">
<div class="card">
<div class="animations-header">
<h2><i class="fas fa-film"></i> Animations</h2>
{% if animation_manifest.name %}
<p class="anim-pack-name">{{ animation_manifest.name }}
{% if animation_manifest.version %}<span class="pack-format-badge">v{{ animation_manifest.version }}</span>{% endif %}
</p>
{% endif %}
<p class="anim-authors">
<i class="fas fa-user-pen"></i> by
{% for author in animation_manifest.authors %}{{ author }}{% if not forloop.last %}, {% endif %}{% empty %}{{ project.owner.username }}{% endfor %}
</p>
{% if animation_manifest.description %}<p class="anim-description">{{ animation_manifest.description }}</p>{% endif %}
{% if not animation_manifest.animation_id %}
<p class="anim-warning"><i class="fas fa-exclamation-triangle"></i> This pack has no <code>animationframework.id</code> — it can't be reached through the update-check API.</p>
{% endif %}
</div>
{% if anim_stats %}
<div class="animations-summary">
<span><strong>{{ anim_stats.total }}</strong> animations</span>
<span><strong>{{ anim_stats.player }}</strong> Player × Player</span>
<span><strong>{{ anim_stats.entity }}</strong> Entity × Player</span>
<span><strong>{{ anim_stats.solo }}</strong> solo</span>
{% if anim_stats.flagged %}<span class="anim-summary-flagged"><strong>{{ anim_stats.flagged }}</strong> flagged ⚠</span>{% endif %}
<span><strong>{{ anim_stats.tags|length }}</strong> tags</span>
</div>
{% endif %}
<div class="anim-grid">
{% for anim in animation_manifest.animations %}
<div class="anim-card">
<div class="anim-card-head">
<strong class="anim-name">{{ anim.name }}</strong>
<span class="anim-type-badge">{{ anim.type }}</span>
{% if anim.problem_tags %}
<span class="anim-problem" title="{{ anim.problem_tags|join:', ' }}"><i class="fas fa-exclamation-triangle"></i></span>
{% endif %}
</div>
<div class="anim-tags">
{% for tag in anim.content_tags %}
<span class="tag-chip" style="border-color: var(--md-sys-color-content, #d62828); color: var(--md-sys-color-content, #d62828);">{{ tag }}</span>
{% endfor %}
{% for tag in anim.animation_tags %}
<span class="tag-chip">{{ tag }}</span>
{% endfor %}
</div>
<div class="anim-actors">
{% for actor in anim.actors %}
<span class="actor-chip">
{% if actor.entity == 'player' %}
<i class="fas fa-user"></i> Player
{% else %}
<i class="fas fa-paw"></i> {{ actor.entity }}
{% endif %}
{% if actor.gender %}{% if actor.gender == 'male' %} ♂{% elif actor.gender == 'female' %} ♀{% endif %}{% endif %}
{% if actor.activity %}<small>· {{ actor.activity }}</small>{% endif %}
{% if actor.injector %}
<span class="injector-badge"{% if actor.injector != 'injector' %} title="Injector: {{ actor.injector_name }}"{% endif %}>
{% if actor.injector == 'injector' %}injector{% else %}{{ actor.injector_name }} ({{ actor.injector }}){% endif %}
</span>
{% endif %}
{% if actor.receiver %}<small>· receiver</small>{% endif %}
</span>
{% endfor %}
</div>
<div class="anim-stages">
<span class="stages-count">{{ anim.stages|length }} stage{{ anim.stages|length|pluralize }}</span>
{% for s in anim.stages %}
<span class="stage-chip"{% if s.climax %} title="climax stage"{% endif %}>
{% if s.climax %}<i class="fas fa-star"></i>{% endif %}{{ s.stage }}{% if s.loop %}↻{% endif %}{% if s.cycle_seconds %} {{ s.cycle_seconds }}s{% endif %}
</span>
{% endfor %}
</div>
{% if anim.weight or anim.block_requirements or anim.water %}
<div class="anim-extras">
{% if anim.weight %}<span class="anim-extra">weight {{ anim.weight }}</span>{% endif %}
{% if anim.block_requirements %}<span class="anim-extra"><i class="fas fa-cubes"></i> requires block support</span>{% endif %}
{% if anim.water %}<span class="anim-extra"><i class="fas fa-water"></i> water</span>{% endif %}
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
</section>
{% endif %}
{% if project.category == 'modpack' %}
<section class="tab-panel" id="tab-mods">
<div class="card">