Files
2026-05-28 23:43:20 +02:00

97 lines
5.1 KiB
HTML

{% load i18n static property_tags %}<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% block meta_description %}{% trans "Biens immobiliers à vendre et à louer LOGIS" %}{% endblock %}">
{% block meta_keywords_tag %}{% endblock %}
<title>{% block title %}LOGIS{% endblock %} — {% trans "Immobilier" %}</title>
<link rel="canonical" href="{% block canonical %}{{ request.build_absolute_uri }}{% endblock %}">
<meta property="og:site_name" content="LOGIS PERSONNEL">
<meta property="og:type" content="{% block og_type %}website{% endblock %}">
<meta property="og:locale" content="{{ LANGUAGE_CODE }}">
<meta property="og:title" content="{% block og_title %}LOGIS — {% trans 'Immobilier' %}{% endblock %}">
<meta property="og:description" content="{% block og_description %}{% trans "Biens immobiliers à vendre et à louer LOGIS" %}{% endblock %}">
<meta property="og:url" content="{{ request.build_absolute_uri }}">
{% block og_image_tag %}{% endblock %}
{% block extra_head %}{% endblock %}
{# Alternate links hreflang pour le SEO bilingue — URLs réelles traduites #}
{% get_available_languages as LANGUAGES %}
{% for lang_code, lang_name in LANGUAGES %}
{% lang_switch_url lang_code as hreflang_url %}
<link rel="alternate" hreflang="{{ lang_code }}" href="{{ request.scheme }}://{{ request.get_host }}{{ hreflang_url }}">
{% endfor %}
<link rel="icon" type="image/svg+xml" href="{% static 'images/favicon.svg' %}">
<link rel="stylesheet" href="{% static 'css/main.css' %}">
</head>
<body>
{# ── Navigation ─────────────────────────────────────────────────────────── #}
<header class="site-header">
<nav class="navbar container">
<a href="{% url 'properties:list' %}" class="navbar-brand" aria-label="{% trans 'Accueil LOGIS' %}">
<span class="brand-icon">🏠</span>
<span class="brand-name">LOGIS PERSONNEL</span>
</a>
<div class="navbar-actions">
{# Sélecteur de langue — un formulaire par langue avec next pré-traduit #}
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
<div class="lang-switcher" role="group" aria-label="{% trans 'Choisir la langue' %}">
{% for lang_code, lang_name in LANGUAGES %}
{% lang_switch_url lang_code as target_url %}
<form action="{% url 'set_language' %}" method="post" style="display:inline">
{% csrf_token %}
<input type="hidden" name="next" value="{{ target_url }}">
<button type="submit" name="language" value="{{ lang_code }}"
class="lang-btn {% if lang_code == LANGUAGE_CODE %}active{% endif %}"
aria-pressed="{% if lang_code == LANGUAGE_CODE %}true{% else %}false{% endif %}">
{{ lang_code|upper }}
</button>
</form>
{% endfor %}
</div>
</div>
</nav>
</header>
{# ── Contenu principal ───────────────────────────────────────────────────── #}
<main id="main-content">
{% block content %}{% endblock %}
</main>
{# ── Pied de page ────────────────────────────────────────────────────────── #}
<footer class="site-footer">
<div class="container footer-inner">
<p class="footer-brand">LOGIS PERSONNEL &mdash; {% trans "Transactions immobilières" %}</p>
<p class="footer-copy">&copy; {% now "Y" %} LOGIS PERSONNEL. {% trans "Tous droits réservés." %}</p>
</div>
</footer>
{# ── Modal de la galerie (instanciée par Gallery.js) ────────────────────── #}
<div id="gallery-modal" class="gallery-modal" role="dialog" aria-modal="true" aria-label="{% trans 'Galerie photos' %}" hidden>
<div class="gallery-modal-overlay" id="gallery-overlay"></div>
<div class="gallery-modal-content">
<button class="gallery-modal-close" id="gallery-close" aria-label="{% trans 'Fermer' %}">&times;</button>
<button class="gallery-modal-nav prev" id="gallery-prev" aria-label="{% trans 'Photo précédente' %}">&#8249;</button>
<figure class="gallery-modal-figure">
<img id="gallery-modal-img" src="" alt="">
<figcaption id="gallery-modal-caption" class="gallery-modal-caption"></figcaption>
</figure>
<button class="gallery-modal-nav next" id="gallery-next" aria-label="{% trans 'Photo suivante' %}">&#8250;</button>
<div id="gallery-counter" class="gallery-modal-counter"></div>
</div>
</div>
<script src="{% static 'js/Gallery.js' %}"></script>
<script src="{% static 'js/ContactForm.js' %}"></script>
<script src="{% static 'js/main.js' %}"></script>
{% block extra_js %}{% endblock %}
</body>
</html>