{% extends base_template %} {% import _self as macros %} {% block actions %} {% endblock %} {% block breadcrumb %}{% endblock %} {%- block tab_menu -%} {{ knp_menu_render(admin.sidemenu(action), { 'currentClass': 'active', 'template': get_global_template('tab_menu_template') }, 'twig') }} {%- endblock -%} {% block title %} {{ 'Import de données'|trans }} {% endblock %} {% block sonata_admin_content_actions_wrappers %} <div class="navbar-collapse"> <ul class="nav navbar-nav navbar-right"> <li> <a class="sonata-action-element" href="{{ admin.generateUrl('list') }}"> <i class="fa fa-list" aria-hidden="true"></i> {{ 'Liste des imports'|trans }} </a> </li> </ul> </div> {% endblock sonata_admin_content_actions_wrappers %} {% block navbar_title %} {{ block('title') }} {% endblock %} {% block content %} <div class="px-3"> <h3>Recommandations et instructions :</h3> <ul> <li>{{ "L'importation de données ne fonctionne qu'avec des fichiers .CSV, et ayant au moins les colonnes obligatoires (celle en rouge dans les fichiers d'instructions)"|trans }}</li> <li>{{ "Pour que les accents et caractères spéciaux fonctionnent, il faut que le fichier soit enregistré avec l'encodage UTF-8. Votre tableur et/ou éditeur de texte doit vous le proposer lors de l'enregistrement/l'export du fichier !"|trans }}</li> <li>{{ "L'ordre des colonnes n'a pas d'importance, mais les noms des colonnes utilisés dans la première ligne du fichier CSV ne sont pas modifiables."|trans }}</li> <li>{{ "Pour chaque type de données (groupe, comptoir, prestataire, adherent, flux) à importer, vous pouvez télécharger des fichiers d'exemples et d'instructions .XLSX (Excel - Windows) et .NUMBERS (Mac - Numbers), mais seul un fichier .CSV peut être importé !"|trans }}</li> <li>{{ "Les gestionnaires (de comptoir, groupe et prestataire) correspondent aux adhérents ayant accès à l'interface d'administration !"|trans }}</li> <li>{{ "Les contacts (de comptoir, groupe et prestataire) correspondent à des informations publiques permettant de contacter les comptoirs, groupes et prestataires, ils n'ont pas de compte crée avec leur email !"|trans }}</li> <li>{{ "Pour les comptoirs, groupes et prestataires, vous pouvez ajouter un ou plusieurs gestionnaires (gestionnaire_email1, gestionnaire_email2), un ou plusieurs contacts par défaut visible en public (contact1, contact2) et jusqu'à 10 de chaque !"|trans }}</li> </ul> <h3>Exemples de fichiers :</h3> <div class='mb-5'> {% for key, csvparam in csvparams %} <h4>{{ key|capitalize }}(s) : </h4> <p> <a class='btn btn-default ml-4' target='_blank' rel="noopener noreferrer" href='{{ csvparam.filexls }}'>Instructions en .xlsx</a> <a class='btn btn-default ml-4' target='_blank' rel="noopener noreferrer" href='{{ csvparam.filenum }}'>Instructions en .numbers</a> <a class='btn btn-default ml-4' target='_blank' rel="noopener noreferrer" href='{{ csvparam.filecsv }}'>Exemple .csv</a> </p> {# <p class='ml-4'><i>{{ csvparam.header }}</i></p> <p class='ml-4 mb-4'><i>{{ 'Exemple'|trans }} :</i> {{ csvparam.example }}</p> #} {% endfor %} </div> <hr class='color-blue'/> {{ form_start(form) }} {{ form_row(form.type) }} {{ form_row(form.sendemail) }} {{ form_row(form.test) }} {{ form_row(form.media) }} {{ form_errors(form) }} {{ form_row(form.user) }} {{ form_row(form.save) }} {{ form_end(form) }} {% if errors is defined and errors|length > 0 %} <div class='container bg-danger w-100 py-4 row'> {% if errors['error'] is defined %} {{ errors['error'] }} {% else %} {{ macros.show_error(errors) }} {% endif %} </div> {% endif %} {% if warnings is defined and warnings|length > 0 %} <div class='container bg-warning w-100 py-4 row'> {{ macros.show_error(warnings) }} </div> {% endif %} {% if success is defined and success|length > 0 %} <div class='container bg-success w-100 py-4 row'> {{ macros.show_error(success) }} </div> {% endif %} {% if linkcsverror is defined and linkcsverror != null %} <div class='py-4'> <a href='{{ linkcsverror }}' role="button" class="btn-primary btn">{{ 'Télécharger CSV avec lignes en erreurs'|trans }}</a> </div> {% endif %} </div> {% endblock %} {% macro show_error(errors) %} {% for line, errorA in errors %} <div class='col-12'> <span>Ligne {{line}}</span> {% for key, errorB in errorA %} {% for csvline, errorString in errorB %} <span class="pl-2">{% if (key is not empty) %}[{{key}}]{% endif %}{{errorString}}</span> {% endfor %} {% endfor %} </div> {% endfor %} {% endmacro %}