osm-commerces/templates/base.html.twig

132 lines
6.1 KiB
Twig

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Welcome!{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
<!-- CSS Bootstrap -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!-- CSS personnalisé -->
<link rel="stylesheet" href="{{ asset('css/main.css') }}">
<!-- JavaScript Bootstrap avec Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" type="image/png" href="{{ asset('logo-osm.png') }}">
<!-- Script pour le tri automatique des tableaux -->
<script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.0/Sortable.min.js"></script>
{# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
<link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' />
{% endblock %}
</head>
<body>
<header class="main-header">
<div class="container">
<div class="row align-items-center">
<div class="col-12">
<a href="{{ path('app_public_index') }}" class="d-flex align-items-center">
<h1 class="mb-0 mt-2">
<img src="{{ asset('logo-osm.png') }}" alt="Logo OSM" class="me-2" style="width: 30px; height: 30px;">
Mon Commerce OpenStreetMap</h1>
</a>
</div>
</div>
{% for label, messages in app.flashes %}
{% for message in messages %}
<div class="alert alert-{{ label }} alert-dismissible fade show mt-3" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endfor %}
<div class="row mt-3">
<div class="col-12">
{% include 'public/nav.html.twig' %}
</div>
</div>
</div>
</header>
<main class="body-landing">
{% block body %}{% endblock %}
</main>
<footer class="main-footer">
<div class="container">
<div class="row mb-4">
<div class="col-12">
{% include 'public/nav.html.twig' %}
</div>
</div>
<div class="row">
<div class="col-12">
<p class="mb-2">OpenStreetMap Mon Commerce</p>
<p class="mb-2">
Licence AGPLv3+, fait par
<a href="https://mastodon.cipherbliss.com/@tykayn">Tykayn</a> de
<a href="https://www.cipherbliss.com">CipherBliss EI</a>,
membre de la fédération des professionels d'OpenStreetMap
</p>
<p class="mb-2">
Sources des données : <a href="https://www.openstreetmap.org/">OpenStreetMap</a>
</p>
<p class="mb-2">
<a href="https://www.openstreetmap.org/copyright">OpenStreetMap France</a>
</p>
<p class="mb-0">
<a href="https://www.openstreetmap.org/copyright">Sources du logiciel</a>
</p>
<div id="userChangesHistory"></div>
<div id="qr-share">
partagez cette page :
<br>
<div id="qrcode"></div>
</div>
</div>
</div>
</div>
</footer>
{% block javascripts %}
{{ encore_entry_script_tags('app') }}
{# <script src="{{ asset('js/main.js') }}"></script> #}
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" integrity="sha512-CNgIRecGo7nphbeZ04Sc13ka07paqdeTu0WR1IM4kNcpmBAUSHSQX0FslNhTDadL4O5SAGapGt4FodqL8My0mA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
new QRCode(document.getElementById('qrcode'), {
text: window.location.href,
width: 100,
height: 100,
colorDark : '#000000',
colorLight : '#ffffff',
correctLevel : QRCode.CorrectLevel.H
});
// Tri automatique des tableaux
// Sélectionner la première table du document
if( Sortable) {
const firstTable = document.querySelector('table');
if (firstTable) {
console.log('première table trouvée', firstTable);
var sortable = new Sortable(firstTable, {
animation: 150,
ghostClass: 'sortable-ghost',
chosenClass: 'sortable-chosen',
dragClass: 'sortable-drag'
});
} else {
console.log('pas de table trouvée');
}
}else{
console.log('Sortable non trouvé');
}
</script>
{% endblock %}
</body>
</html>