SAND-framework/data/docs/04.a. Les vues Twig.md
Emmanuel ROY 73a505ce7b update :
- documentation markdown du framework
2021-07-12 15:35:54 +02:00

11 KiB

#Les vues Twig

Elles sont chargées dans cette ordre:

  • application/include/vues/system
  • application/include/vues/layout
  • application/include/vues/view

ainsi la vue standard peut étendre de application/include/vues/layout/body.html.twig


{% extends "system.html.twig" %}

{% block body %}
    <!-- Body Inner -->
    <div class="body-inner">
        <!-- Topbar -->
        <div id="topbar" class="d-none d-xl-block d-lg-block topbar-transparent topbar-fullwidth dark"
             style="background: rgba(0, 0, 0, 0.59);">
            <div class="container">
                <ul class="top-menu">
                    {{call('\\MVC\\Object\\Environment','getTextEnvironment',[]) | raw}}
                    <li {% if name == 'docs_route' or name == 'docs_name_route' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'docs', []]) }}">Documentation</a></li>
                    <li {% if name == 'depots' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'gitlist/SAND-FrameWork', []]) }}">Dépot</a></li>
                    <li {% if name == 'donate' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Donate', []]) }}">Donate</a></li>
                    <li {% if name == 'cgu' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'CGU', []]) }}"> CGU Terms</a></li>
                    <li {% if name == 'policy' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Policy', []]) }}">Policy</a></li>
                </ul>
            </div>
        </div>
        <!-- end: Topbar -->
        <!-- Header -->
        <header id="header" class="dark" data-transparent="true" data-fullwidth="true"
                style="background: rgba(0, 0, 0, 0.59);">
            <div class="header-inner">
                <div class="container">
                    <!--Navigation Resposnive Trigger-->
                    <div id="mainMenu-trigger">
                        <a class="lines-button x"><span class="lines"></span></a>
                    </div>
                    <!--end: Navigation Resposnive Trigger-->
                    <!--Navigation-->
                    <div id="mainMenu">
                        <div class="container">
                            <!--Logo-->
                            <div id="logo">
                                <a href="#">
                                    SAND Framework
                                </a>
                            </div>
                            <!--end: logo-->
                            <nav>
                                <ul>
                                    <li {% if name == 'index' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Index', []]) }}">Index</a></li>
                                    <li {% if name == 'admin' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Admin', []]) }}">Admin</a></li>
                                    <li {% if name == 'laravel' %} class="actual" {% endif %} ><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[false, 'Laravel', []]) }}">Module Laravel</a></li>
                                </ul>
                            </nav>
                        </div>
                    </div>
                    <!--end: Navigation-->
                </div>
            </div>
        </header>
        <!-- end: Header -->
        <!-- Subbar -->
        <div id="subbar" class="fullwidth">
            <div class="container">
                <span style="float:left;">Vous êtes connecté en tant que {{session('user_login')}}</span>
                <span style="float:right;"><a href="{{ call("\\MVC\\Classe\\Url","link_rewrite",[ false, 'Logout', []]) }}">Se Deconnecter</a></span>
            </div>
        </div>
        <!-- end: Subbar -->
        <!-- Breadcrumbs -->
        {%if ariane is defined %}
            <div id="breadcrumbs" class="fullwidth">
                <div class="container">
                    <nav aria-label="breadcrumb">
                        <ol class="breadcrumb">
                            {% for value in ariane %}
                                {% if value == ariane|last %}
                                    <li class="breadcrumb-item active" aria-current="page">{{value}}</li>
                                {% else %}
                                    <li class="breadcrumb-item"><a href="{{call("\\MVC\\Classe\\Url","link_rewrite",[false,arianelink[value.index],[] ])}}">{{value}}</a></li>
                                {% endif %}
                            {% endfor %}
                        </ol>
                    </nav>
                </div>
            </div>
        {% endif %}
        <section id="page-content">
            <div class="container">

                <!--Alerts-->
                {% if not session('alerts') == null %}
                    {% for alert in session('alerts') %}
                        <div class="alert alert-{{alert.type}} alert-dismissible fade show" role="alert">
                            <strong>{{alert.title}}</strong> {{alert.message}}.
                            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                        </div>
                    {% endfor %}
                    {% endif %}
                <!--end: Alerts-->

                {% block content %}{% endblock %}

            </div>
        </section>

        <!-- Footer -->
        <footer id="footer">
            <div class="footer-content">
                <div class="container">
                    <div class="row">
                        <div class="col-lg-3">
                            <div class="widget">
                                <div class="widget-title"></div>
                                <p class="mb-5">
                                    <img src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/img/1007698-ffeb3b.svg']) }}" width="150">
                                </p>
                            </div>
                        </div>
                        <div class="col-lg-9">
                            <p>
                                SAND FrameWork is an CC-licensed or MIT-licenced open source project and completely free to use.
                            </p>
                            <p>
                                However, the amount of effort needed to maintain and develop new features for the project is not
                                sustainable without proper financial backing.
                                You can support its ongoing development by being a backer or a sponsor on
                                <a href="https://www.patreon.com/">Patreon campaign</a>
                                (recurring, with perks for different tiers), and get your company logo here.
                            </p>
                            <p>
                                Also, you can make a <a href="https://www.paypal.me/">one time donation via PayPal</a>.
                            </p>
                        </div>
                    </div>
                </div>
                <div class="copyright-content">
                    <div class="container">
                        <div class="copyright-text text-center">&copy; 2020-2021 Built with SAND Framework - Responsive SAND Template.</div>
                    </div>
                </div>
            </div>
        </footer>
        <!-- end: Footer -->

    </div>
    <!-- end: Body Inner -->
{% endblock %}

qui étends de application/include/vues/system/system.html.twig

<!DOCTYPE html>
<html>
<head>
    {% block head %}
        <title>{{page_title}}</title>

        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="author" content="" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="description" lang="fr" content="{{description}}"/>

        <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
        <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
        <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
        <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
        <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
        <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
        <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
        <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
        <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
        <link rel="icon" type="image/png" sizes="192x192"  href="/android-icon-192x192.png">
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
        <link rel="manifest" href="/manifest.json">
        <meta name="msapplication-TileColor" content="#ffffff">
        <meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
        <meta name="theme-color" content="#ffffff">
        {% block topCss %}
            <link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css'])}}">
            <link rel="stylesheet" href="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/css/custom.css'])}}">
        {% endblock %}
    {% endblock %}
</head>
<body>

{% block topJavascript %}{% endblock %}

{% block body %}{% endblock %}

{% block bottomJavascript %}
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js'])}}"></script>
<script src="{{ call("\\MVC\\Classe\\Url","asset_rewrite",['assets/js/custom.js'])}}"></script>

{#
SCRIPT JS permettant de ne valider qu'une seule fois un formulaire
ATTENTION tous les formulaires sont affecté
Lors d'une validation bootstrap personnalisé veuillez utilisé
la class do-resubmit sur le formulaire afin de permettre
l'activation supplémentaire du bouton.
#}
<script>
    window.onload = function() {
        let PreventAllforms = document.querySelectorAll("form");
        Array.prototype.slice.call(PreventAllforms)
            .forEach(function (PreventForm) {
                PreventForm.onsubmit = submitted.bind(PreventForm);
            });
    }

    function submitted(event) {
        if (event.target.classList.contains('do-resubmit')) {
            event.submitter.disabled = false;
        }else{
            event.submitter.disabled = true;
        }
    }
</script>
{% endblock %}
</body>
</html>