import.html.twig 4.73 KB
Newer Older
Julien Jorry committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
{% 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>
Julien Jorry committed
25
			            {{ 'Liste des imports'|trans }}
Julien Jorry committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
			        </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>
41 42 43
    		<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>
Julien Jorry committed
44 45 46 47 48 49 50 51 52
    		<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>
53 54 55
					<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>
Julien Jorry committed
56 57 58 59 60 61 62 63 64
				</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) }}
65
			{{ form_row(form.test) }}
Julien Jorry committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
			{{ 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 %}