2017 © Pedro PelĂĄez
 

symfony-bundle acad-template-bundle

Template Bundle

image

neevalt/acad-template-bundle

Template Bundle

  • Monday, May 28, 2018
  • by Neevalt
  • Repository
  • 0 Watchers
  • 0 Stars
  • 8 Installations
  • CSS
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

Bundle de templating de l'académie de Créteil

Installer le bundle

Depuis la console :, (*1)

composer require neevalt/acad-template-bundle

Importer les routes

Grùce à Symfony Flex, le bundle est activé automatiquement. Pour bénéficier des routes, il faut importer celles-ci dans config/routes.yaml :, (*2)

acad_template:
    resource: '@AcadTemplateBundle/Resources/config/routing.yaml'

Utiliser et configurer le template

Utiliser le template

Pour utiliser ce template, il est vivement conseillé de gérer les dépendances via Webpack Encore. Vous bénéficierez ainsi d'une personnalisation plus avancée., (*3)

Installez celles-ci :, (*4)

yarn add jquery popper.js bootstrap

Puis créez vos assets, par exemple comme suit :, (*5)

projet/
└── assets/
    ├── scss
    │   ├── _variables.scss
    │   └── app.scss
    └── js
        └── app.js

Nb : le fichier _variables.scss n'est nécessaire que si vous souhaitez modifier les différentes variables Sass du template (les couleurs, les tailles, ...), (*6)

Faites les imports nécessaires :, (*7)

// app.scss
@import './variables';
@import '~bootstrap/scss/bootstrap';
@import '../../vendor/neevalt/acad-template-bundle/Resources/assets/scss/acad-template.scss';
// app.js
import '../../vendor/neevalt/acad-template-bundle/Resources/assets/js/acad-template.js';

Compilez vos assets via webpack :, (*8)

// webpack.config.js
Encore
    // ...
  .addEntry('js/app', './assets/js/app.js')
  .addStyleEntry('css/app', './assets/css/app.scss')
  .enableSassLoader()
  .autoProvidejQuery()
    // ...

MĂȘme si la configuration ci-dessus fonctionne, il est plutĂŽt conseillĂ© d'utiliser des chunks partagĂ©s pour profiter du cache navigateur :, (*9)

// webpack.config.js
Encore
    //...
    .createSharedEntry('vendor', [
        'babel-polyfill', // Pour es2017
        'bootstrap',
        'bootstrap/scss/bootstrap.scss',
        './vendor/neevalt/acad-template-bundle/Resources/assets/js/acad-template',
        './vendor/neevalt/acad-template-bundle/Resources/assets/scss/acad-template.scss',
    ])
    //...

Enfin, Ă©tendez le template du bundle dans le votre :, (*10)

{% extends '@AcadTemplate/base.html.twig' %}

{% block header_assets %}
    {# Si vous utilisez les chunks partagés, décommentez les trois lignes suivantes #}
    {#<link rel="stylesheet" href="{{ asset('build/vendor.css') }}" />#}
    {##}
    {##}
    <link rel="stylesheet" href="{{ asset('build/css/app.css') }}" />
{% endblock %}

{% block footer_assets %}
    
{% endblock %}

Pour un exemple fonctionnel :, (*11)

{% extends '@AcadTemplate/base.html.twig' %}

{% set title = "Mon appli" %}
{% set logout_link = path("arena_auth_logout") %}

{% block header_assets %}
    <link href="{{ asset('build/css/app.css') }}" rel="stylesheet">
{% endblock %}

{% block navbar_content %}
    <li class="nav-item active">
        <a class="nav-link" href="#">
            Home
        </a>
    </li>
    <li class="nav-item dropdown">
        <button class="nav-link dropdown-toggle" id="navbarDropdown" role="button"
                data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Dropdown
        </button>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">Something else here</a>
        </div>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
    </li>
    <li class="nav-item disabled">
        <span>Disabled</span>
    </li>
{% endblock %}

{% block sidebar_content %}


{% endblock %} {% block navbar_right_dropdown %} <a class="dropdown-item" href="#">Guide utilisateur</a> <div class="dropdown-divider"></div> {{ parent() }} {% endblock %} {% block main %}

Ma page

Metuentes igitur idem latrones Lycaoniam magna parte campestrem cum se inpares nostris fore congressione stataria documentis frequentibus scirent, tramitibus deviis petivere Pamphyliam diu quidem intactam sed timore populationum et caedium, milite per omnia diffuso propinqua, magnis undique praesidiis conmunitam. Latius iam disseminata licentia onerosus bonis omnibus Caesar nullum post haec adhibens modum orientis latera cuncta vexabat nec honoratis parcens nec urbium primatibus nec plebeiis. , (*12)

Cyprum itidem insulam procul a continenti discretam et portuosam inter municipia crebra urbes duae faciunt claram Salamis et Paphus, altera Iovis delubris altera Veneris templo insignis. tanta autem tamque multiplici fertilitate abundat rerum omnium eadem Cyprus ut nullius externi indigens adminiculi indigenis viribus a fundamento ipso carinae ad supremos usque carbasos aedificet onerariam navem omnibusque armamentis instructam mari committat. , (*13)

Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. Paphius quin etiam et Cornelius senatores, ambo venenorum artibus pravis se polluisse confessi, eodem pronuntiante Maximino sunt interfecti. pari sorte etiam procurator monetae extinctus est. Sericum enim et Asbolium supra dictos, quoniam cum hortaretur passim nominare, quos vellent, adiecta religione firmarat, nullum igni vel ferro se puniri iussurum, plumbi validis ictibus interemit. et post hoe flammis Campensem aruspicem dedit, in negotio eius nullo sacramento constrictus. , (*14)

{% endblock %} {% block footer_assets %} {% endblock %}

Important : Certains Ă©lĂ©ments (comme les modals Bootstap) nĂ©cessitent d'ĂȘtre en dehors du contexte donnĂ© par le template. Un block after_page est dĂ©fini Ă  cet effet., (*15)

Configurer le template

Variables twig

La configuration du template se fait directement dans le votre via des variables twig. Les valeurs par défaut sont :, (*16)

{# Le titre de l'onglet #}
{% set title = 'Titre' %}

{# Le chemin du favicon #}
{% set favicon = favicon|default('bundles/acadtemplate/images/en.ico') %}

{# Le titre dans la navbar #}
{% set navbar_title = title %}

{# Le titre dans la sidebar #}
{% set sidebar_title = title %}

{# Le label du dropdown fixé à droite #}
{% set navbar_right_label = 'Menu' %}

{# Le breakpoint Bootstrap auquel la navbar est réduite #}
{% set navbar_bp = 'md' %}

{# Le breakpoint Bootstrap auquel la sidebar est cachée #}
{# Ce paramÚtre est ignoré si sidebar_display vaut 'collapse' #}
{% set sidebar_bp = 'xl' %}

{# Le type de sidebar. Valeurs possibles : null, 'collapse', 'always' #}
{# Si la valeur est à 'collapse', son contenu sera remplacé par celui de la navbar #}
{% set sidebar_display = 'always' %}

{# Le chemin du logo dans la navbar #}
{% set logo_navbar = 'bundles/acadtemplate/images/logo_ac_blanc.png) %}

{# Le chemin du logo dans la sidebar #}
{% set logo_sidebar = 'bundles/acadtemplate/images/logo_ac_blanc.png' %}

{# Le chemin du logo dans le footer #}
{% set logo_footer = 'bundles/acadtemplate/images/logo_dsi.png' %}

{# La disposition du footer. Valeurs possibles : null, 'sticky', 'always' #}
{% set footer_display = 'sticky' %}

{# La largeur du footer. Valeurs possibles : null, 'full' #}
{# Cette variable n'est utile que si footer_display vaut 'always' #}
{% set footer_width = null %}

{# L'url de déconnexion #}
{% set logout_link = '#' %}

{# Le numéro CNIL #}
{% set num_cnil = null %}

{# Le style Bootstrap de la navbar. Valeurs possibles: 'light', 'dark' #}
{# Cela ne change que l'apparence du bouton de collapse de la navbar #}
{% set navbar_style = 'dark' %}

{# Les classes associées aux toasts #}
{% set toasts_class = 'col-xs-12 col-sm-6 col-md-4 col-xl-3' %}

{# Le chemin vers la page "Mention légales" #}
{% set path_mentions_legales = path("acad_template_mentions_legales") %}

Apparence

Si vous souhaitez modifier l'apparence du template, comme les couleurs, les hauteurs des footer / navbar, etc..., des variables Sass sont disponibles. Les valeurs par défaut sont :, (*17)

$acad-navbar-height: 60px;
$acad-navbar-header-width: 250px;
$acad-navbar-background: #3F51B5;
$acad-navbar-header-background: $acad-navbar-background;
$acad-navbar-color: #FFF;
$acad-navbar-hover: #FF8F00;
$acad-navbar-header-border-right: none;
$acad-sidebar-width: $acad-navbar-header-width;
$acad-footer-height: 60px;

$acad-navbar-accent: #1A237E;
$acad-footer-background: transparent;
$acad-footer-color: inherit;

$acad-sidebar-background: #536DFE;
$acad-sidebar-color: $acad-navbar-color;
$acad-sidebar-accent:  $acad-navbar-background;
$acad-sidebar-hover: $acad-navbar-hover;
$acad-sidebar-font-size: 15px;
$acad-sidebar-margin: 8px 8px 8px 25px;
$acad-sidebar-border-right: $acad-navbar-header-border-right;
$acad-sidebar-logo-height: 100px;

Pour les modifier, il suffit de les réécrire dans le fichier _variables.scss mentionné plus haut. Il est aussi possible de redéfinir les breakpoints Bootstrap :, (*18)

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1300px
);

Si vous changez ces valeurs et que vous avez utilisé les chunks partagés, pensez à en créer un qui ne servira qu'à redéfinir ces variables avec les imports nécessaires (qui ne doivent donc plus constituer des chunks)., (*19)

Redéfinir le template

Pour redéfinir le template, consultez la documentation officielle., (*20)

Les toasts

Le template vient avec des messages toasts javascript qui affichent par défaut les flash messages de Symfony :, (*21)

public function home()
{
    $this->addFlash("success", "#SuccÚs#Le projet a bien été créé");
    return $this->render('base.html.twig');
}

Il est aussi possible de les gĂ©nĂ©rer soi-mĂȘme avec du js, cela peut ĂȘtre utile notamment pour de l'ajax. Dans app.js :, (*22)

import acadAlert from '../../vendor/neevalt/acad-template-bundle/Resources/assets/js/alert';

acadAlert('info','Une information');

async function doAjax(args) {
    let type;
    let message;
    try {
        message = await $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: args
        });
        type = 'success';
    } catch (error) {
        message = '#Erreur#Une erreur est survenue';
        type = 'danger';
    }
    acadAlert(type, message);
}

Le premier argument de la fonction acadAlert(type, message) détermine la couleur du toast. Les couleurs sont celles de Bootstrap., (*23)

Pour ajouter un titre au toast, respecter la syntaxe de message suivante : #Titre#Le message., (*24)

Rendu

L'ensemble des extraits de code montrés ci-dessus donne le rendu suivant :, (*25)

Rendu template, (*26)

Utilisation sans Webpack

Il est déconseillé de se passer de Webpack pour utiliser ce bundle. Si vous décidez néanmoins de le faire, il suffit de ne pas écraser les blocks assets du template :, (*27)

{% extends '@AcadTemplate/base.html.twig' %}

{% block header_assets %}
    {{ parent() }}
     {# Mon css custom #}
{% endblock %}

{% block footer_assets %}
    {{ parent() }}
     {# Mon js custom #}
{% endblock %}

The Versions

28/05 2018

dev-master

9999999-dev

Template Bundle

  Sources   Download

proprietary

The Requires

 

by Avatar Neevalt

template academie creteil

28/05 2018

v1.0.2

1.0.2.0

Template Bundle

  Sources   Download

proprietary

The Requires

 

by Avatar Neevalt

template academie creteil

11/05 2018

v1.0.1

1.0.1.0

Template Bundle

  Sources   Download

proprietary

The Requires

 

by Avatar Neevalt

template academie creteil

30/03 2018

v1.0

1.0.0.0

Template Bundle

  Sources   Download

proprietary

The Requires

 

by Avatar Neevalt

template academie creteil