1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
{% 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>
{{ 'link_action_list'|trans({}, 'SonataAdminBundle') }}
</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>{{ "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 modifiable."|trans }}</li>
<li>{{ "Pour chaque type de données (groupe, comptoir, prestataire, adherent) à 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' href='{{ csvparam.filexls }}'>Instructions en .xlsx</a>
<a class='btn btn-default ml-4' target='_blank' href='{{ csvparam.filenum }}'>Instructions en .numbers</a>
<a class='btn btn-default ml-4' target='_blank' 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.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 %}