Files
portfolio-django/templates/projects/detail.html
2026-03-31 13:10:16 +02:00

213 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base.html" %}
{% load static %}
{% block title %}{{ project.title }} — {{ config.seo.site_title }}{% endblock %}
{% block content %}
<!-- ─── En-tête projet ───────────────────────────────────────────────────── -->
<section class="project-hero">
<div class="project-hero-container">
<nav class="breadcrumb">
<a href="{% url 'projects:home' %}">Accueil</a>
<span class="breadcrumb-sep"></span>
<a href="{% url 'projects:list' %}">Projets</a>
<span class="breadcrumb-sep"></span>
<span>{{ project.title }}</span>
</nav>
<div class="project-hero-content">
<div class="project-meta-top">
<span class="project-category-badge">{{ project.category }}</span>
{% if project.context %}<span class="project-context-badge">{{ project.context }}</span>{% endif %}
{% if project.complexity %}<span class="complexity-badge complexity-{{ project.complexity|lower }}">{{ project.complexity }}</span>{% endif %}
</div>
<h1 class="project-hero-title">{{ project.title }}</h1>
<p class="project-hero-desc">{{ project.short_description }}</p>
<div class="project-techs-header">
{% for tech in project.technologies %}
<span class="tech-tag tech-tag-lg">{{ tech }}</span>
{% endfor %}
</div>
{% if project.github_url or project.demo_url %}
<div class="project-links">
{% if project.github_url %}
<a href="{{ project.github_url }}" target="_blank" class="btn btn-outline btn-sm">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/></svg>
Voir le code
</a>
{% endif %}
{% if project.demo_url %}
<a href="{{ project.demo_url }}" target="_blank" class="btn btn-primary btn-sm">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>
Voir la démo
</a>
{% endif %}
</div>
{% endif %}
</div>
</div>
</section>
<!-- ─── Contenu détaillé ─────────────────────────────────────────────────── -->
<section class="section">
<div class="detail-container">
<div class="detail-main">
<!-- Galerie images -->
{% if project.images %}
<div class="gallery-section">
<h2 class="detail-section-title">Galerie</h2>
<div class="gallery-grid">
{% for img in project.images %}
<div class="gallery-item" onclick="openLightbox('{{ img }}')">
<img src="{{ img }}" alt="{{ project.title }} — image {{ forloop.counter }}" loading="lazy">
<div class="gallery-overlay">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg>
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
<!-- Problématique & Solution -->
{% if project.problem or project.solution %}
<div class="problem-solution-grid">
{% if project.problem %}
<div class="ps-card ps-problem">
<div class="ps-icon"></div>
<h3 class="ps-title">Problématique</h3>
<p class="ps-text">{{ project.problem }}</p>
</div>
{% endif %}
{% if project.solution %}
<div class="ps-card ps-solution">
<div class="ps-icon"></div>
<h3 class="ps-title">Solution apportée</h3>
<p class="ps-text">{{ project.solution }}</p>
</div>
{% endif %}
</div>
{% endif %}
<!-- Description complète -->
<div class="description-section">
<h2 class="detail-section-title">Description du projet</h2>
<div class="description-content">
{{ project.full_description|linebreaks }}
</div>
</div>
<!-- Résultat -->
{% if project.outcome %}
<div class="outcome-section">
<h2 class="detail-section-title">Résultat</h2>
<div class="outcome-card">
<span class="outcome-icon">🎯</span>
<p>{{ project.outcome }}</p>
</div>
</div>
{% endif %}
</div>
<!-- ─── Sidebar ──────────────────────────────────────────────────── -->
<aside class="detail-sidebar">
<!-- Infos clés -->
<div class="sidebar-card">
<h3 class="sidebar-card-title">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
Informations
</h3>
<ul class="info-list">
{% if project.context %}
<li class="info-item"><span class="info-label">Contexte</span><span class="info-value">{{ project.context }}</span></li>
{% endif %}
{% if project.period %}
<li class="info-item"><span class="info-label">Période</span><span class="info-value">{{ project.period }}</span></li>
{% endif %}
{% if project.role %}
<li class="info-item"><span class="info-label">Rôle</span><span class="info-value">{{ project.role }}</span></li>
{% endif %}
{% if project.complexity %}
<li class="info-item"><span class="info-label">Complexité</span><span class="info-value">{{ project.complexity }}</span></li>
{% endif %}
</ul>
</div>
<!-- Points clés -->
{% if project.highlights %}
<div class="sidebar-card">
<h3 class="sidebar-card-title">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/></svg>
Points clés
</h3>
<ul class="highlights-list">
{% for highlight in project.highlights %}
<li class="highlight-item">
<span class="highlight-check"></span>
{{ highlight }}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
<!-- Technologies -->
<div class="sidebar-card">
<h3 class="sidebar-card-title">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
Technologies
</h3>
<div class="sidebar-techs">
{% for tech in project.technologies %}
<a href="{% url 'projects:list' %}?tech={{ tech }}" class="tech-tag tech-tag-clickable">{{ tech }}</a>
{% endfor %}
</div>
</div>
<!-- Catégorie -->
<div class="sidebar-card">
<h3 class="sidebar-card-title">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 20h16M4 4h16M9 9h6M9 15h6"/></svg>
Catégorie
</h3>
<a href="{% url 'projects:list' %}?category={{ project.category }}" class="category-link">
{{ project.category }}
</a>
</div>
</aside>
</div>
</section>
<!-- ─── Navigation projet précédent / suivant ────────────────────────────── -->
<section class="project-nav-section">
<div class="project-nav-container">
{% if prev_project %}
<a href="{% url 'projects:detail' prev_project.slug %}" class="project-nav-card project-nav-prev">
<span class="nav-direction">← Précédent</span>
<span class="nav-project-title">{{ prev_project.title }}</span>
</a>
{% else %}<div></div>{% endif %}
<a href="{% url 'projects:list' %}" class="btn btn-outline">Tous les projets</a>
{% if next_project %}
<a href="{% url 'projects:detail' next_project.slug %}" class="project-nav-card project-nav-next">
<span class="nav-direction">Suivant →</span>
<span class="nav-project-title">{{ next_project.title }}</span>
</a>
{% else %}<div></div>{% endif %}
</div>
</section>
<!-- ─── Lightbox ─────────────────────────────────────────────────────────── -->
<div class="lightbox" id="lightbox" onclick="closeLightbox()">
<button class="lightbox-close" onclick="closeLightbox()"></button>
<img class="lightbox-img" id="lightboxImg" src="" alt="">
</div>
{% endblock %}