97 lines
5.1 KiB
HTML
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 — {% trans "Transactions immobilières" %}</p>
|
|
<p class="footer-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' %}">×</button>
|
|
<button class="gallery-modal-nav prev" id="gallery-prev" aria-label="{% trans 'Photo précédente' %}">‹</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' %}">›</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>
|