templates/layout.html.twig line 1

  1. <!DOCTYPE html>
    <html lang="{{ locale }}">
    <head>
        <meta charset="UTF-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title> {{ 'name'|trans({}, 'app') }} {% block title %}  {% endblock %}</title>
        <link rel="icon" type="image/x-icon" href="{{ asset('img/core-img/favicon.png') }}"/>
        <meta name="robots" content="index,follow"/>
        <meta name="viewport" content="width=device-width, minimum-scale=0.25, maximum-scale=1.6, initial-scale=1.0"/>
        <meta name="apple-mobile-web-app-capable" content="yes"/>
        <meta name="author" content="Marius Stanislas KEMAYOU DJEUMENI."/>
        <meta property="og:site_name" content="{{ 'name'|trans({}, 'app') }}">
        <meta name="og:locale" content="{{ locale }}_{{ locale|upper }}"/>
        <meta property="og:type" content="website">
        {% block metaHeader %}
            <meta property="og:title" content="{{ 'name'|trans({}, 'app') }}">
            <meta property="og:description" content="{{ 'name'|trans({}, 'app') }}">
            <meta property="og:image" content="{{ asset('img/core-img/logo.png') }}"><!-- link to image for socio -->
            <meta property="og:url" content="{{ asset('img/core-img/logo.png') }}">
        {% endblock %}
        <meta charset="UTF-8">
        <meta name="description" content="">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        {% block styles %}{% endblock %}
        {% block lastStyles %}{% endblock %}
        {% block topjavascripts %}{% endblock %}
        {% block heardFiles %}{% endblock %}
        {{ encore_entry_link_tags('app') }}
    </head>
    
    <body id="app" class="{% block body_class %}{% endblock %}">
    {% block foundation %}{% endblock %}
    <script type="text/javascript">
        var $locale = 'fr';
    </script>
    <script type="text/javascript" src="{{ absolute_url(asset('vendor/jquery/jquery-1.12.0.min.js')) }}"></script>
    <script type="text/javascript" src="{{ absolute_url(asset('vendor/jquery/jquery.form.js')) }}"></script>
    {% block javascripts %}{% endblock %}
    {{ encore_entry_script_tags('app') }}
    
    <script>
        // Global delegated handlers for request forms (attach once)
        (function () {
            if (window.__requestFormsGlobalInit) return;
            window.__requestFormsGlobalInit = true;
    
            // Utility to initialize UI for a form container (call after AJAX replace)
            window.initRequestForm = function (container) {
                if (!container) return;
                try {
                    var inputs = container.querySelectorAll && container.querySelectorAll('input[type="file"]');
                    if (!inputs) return;
                    inputs.forEach(function (input) {
                        var display = input.parentNode.querySelector('.uploaded-file-name');
                        if (!display) {
                            display = document.createElement('span');
                            display.className = 'uploaded-file-name';
                            input.parentNode.appendChild(display);
                        }
                        // if input has a value (browser-dependent) show filename
                        if (input.files && input.files.length) {
                            display.textContent = Array.from(input.files).map(function (f) {
                                return f.name;
                            }).join(', ');
                        } else if (input.value) {
                            var val = input.value.split('\\').pop().split('/').pop();
                            display.textContent = val ? ('Fichier chargé: ' + val) : '';
                        }
                    });
                } catch (e) {
                    console.warn('initRequestForm error', e);
                }
            };
    
            // auto-initialize existing forms on page load
            document.addEventListener('DOMContentLoaded', function () {
                var forms = document.querySelectorAll('#request-form');
                forms.forEach(function (f) {
                    window.initRequestForm(f);
                });
            });
    
            document.addEventListener('change', function (e) {
                var target = e.target;
                if (!target) return;
                if (target.matches('#request-form input[type="file"]')) {
                    var display = target.parentNode.querySelector('.uploaded-file-name');
                    if (!display) {
                        display = document.createElement('span');
                        display.className = 'uploaded-file-name';
                        target.parentNode.appendChild(display);
                    }
                    var names = Array.from(target.files || []).map(function (f) {
                        return f.name;
                    }).join(', ');
                    if (names) {
                        display.textContent = 'Fichier chargé: ' + names;
                    } else if (target.value) {
                        var val = target.value.split('\\').pop().split('/').pop();
                        display.textContent = val ? ('Fichier chargé: ' + val) : '';
                    } else {
                        display.textContent = '';
                    }
                }
            });
    
            document.addEventListener('click', function (e) {
                var target = e.target;
                if (!target) return;
    
                // Add momo
                if (target.matches('#add-momo-item')) {
                    var collection = document.getElementById('momo-items-collection');
                    if (!collection) return;
                    var prototype = collection.getAttribute('data-prototype');
                    if (!prototype) return;
                    var index = collection.querySelectorAll('.momo-item').length;
                    var newForm = prototype.replace(/__name__/g, index);
                    var wrapper = document.createElement('div');
                    wrapper.className = 'momo-item';
                    wrapper.innerHTML = newForm + '<button type="button" class="btn btn-sm btn-danger remove-momo-item">Supprimer</button>';
                    collection.appendChild(wrapper);
                    return;
                }
    
                // Add moov
                if (target.matches('#add-moov-item')) {
                    var collection2 = document.getElementById('moov-items-collection');
                    if (!collection2) return;
                    var prototype2 = collection2.getAttribute('data-prototype');
                    if (!prototype2) return;
                    var index2 = collection2.querySelectorAll('.moov-item').length;
                    var newForm2 = prototype2.replace(/__name__/g, index2);
                    var wrapper2 = document.createElement('div');
                    wrapper2.className = 'moov-item';
                    wrapper2.innerHTML = newForm2 + '<button type="button" class="btn btn-sm btn-danger remove-moov-item">Supprimer</button>';
                    collection2.appendChild(wrapper2);
                    return;
                }
    
                // Remove momo
                if (target.matches('.remove-momo-item')) {
                    var item = target.closest('.momo-item');
                    if (item) item.remove();
                    return;
                }
    
                // Remove moov
                if (target.matches('.remove-moov-item')) {
                    var item2 = target.closest('.moov-item');
                    if (item2) item2.remove();
                    return;
                }
            });
        })();
    </script>
    <!-- Google tag (gtag.js) -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-PTWKTPS5LS"></script>
    <script> window.dataLayer = window.dataLayer || [];
    
        function gtag() {
            dataLayer.push(arguments);
        }
    
        gtag('js', new Date());
        gtag('config', 'G-PTWKTPS5LS'); </script>
    </body>
    </html>