Files
crm_ecosplay/templates/admin/revendeurs/edit.html.twig
Serreau Jovann 5f144ba4d2 fix: resolve SonarQube accessibility and test issues across templates
- Add for/id attributes to all form labels for accessibility compliance
- Add <title> tags to PDF templates (rgpd_access, rgpd_no_data, rgpd_deletion, contrat_revendeur)
- Add role="presentation" to email layout tables
- Remove deprecated cellpadding/cellspacing attributes from all templates
- Fix PHPUnit notices by replacing createMock with createStub where no expectations are set

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 19:30:53 +02:00

91 lines
6.3 KiB
Twig

{% extends 'admin/_layout.html.twig' %}
{% block title %}Modifier {{ revendeur.codeRevendeur }} - Administration - CRM Ecosplay{% endblock %}
{% block admin_content %}
<div class="page-container">
<div class="flex items-center justify-between mb-8">
<h1 class="text-3xl font-black uppercase tracking-tighter italic heading-page">Modifier le revendeur</h1>
<a href="{{ path('app_admin_revendeurs_index') }}" class="px-4 py-2 border-2 border-gray-900 bg-white font-black uppercase text-xs tracking-widest hover:bg-gray-900 hover:text-white transition-all">Retour</a>
</div>
{% for type, messages in app.flashes %}
{% for message in messages %}
<div class="mb-6 p-4 border-2 font-bold text-sm {{ type == 'success' ? 'border-green-600 bg-green-50 text-green-800' : 'border-red-600 bg-red-50 text-red-800' }}">
{{ message }}
</div>
{% endfor %}
{% endfor %}
<div class="mb-4 px-4 py-3 border-2 border-gray-900 bg-gray-900 text-[#fabf04] font-black text-sm tracking-widest inline-block">{{ revendeur.codeRevendeur }}</div>
<form method="post" action="{{ path('app_admin_revendeurs_edit', {id: revendeur.id}) }}" class="flex flex-col gap-6">
<section class="border-2 border-gray-900 bg-white p-6 shadow-[4px_4px_0px_rgba(0,0,0,1)]">
<h2 class="text-sm font-black uppercase tracking-widest mb-4">Entreprise</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div>
<label for="raisonSociale" class="block text-xs font-black uppercase tracking-widest mb-2">Raison sociale</label>
<input type="text" id="raisonSociale" name="raisonSociale" value="{{ revendeur.raisonSociale }}" placeholder="Nom de l'entreprise"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
<div>
<label for="siret" class="block text-xs font-black uppercase tracking-widest mb-2">SIRET</label>
<input type="text" id="siret" name="siret" value="{{ revendeur.siret }}" maxlength="14" placeholder="12345678901234"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
<div>
<label for="phone" class="block text-xs font-black uppercase tracking-widest mb-2">Telephone</label>
<input type="tel" id="phone" name="phone" value="{{ revendeur.phone }}" placeholder="06 12 34 56 78"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
</div>
<div class="mt-4">
<label for="email" class="block text-xs font-black uppercase tracking-widest mb-2">Email</label>
<input type="email" id="email" name="email" value="{{ revendeur.email }}" placeholder="email@exemple.fr"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
</section>
<section class="border-2 border-gray-900 bg-white p-6 shadow-[4px_4px_0px_rgba(0,0,0,1)]">
<h2 class="text-sm font-black uppercase tracking-widest mb-4">Adresse</h2>
<div class="flex flex-col gap-4">
<div>
<label for="address" class="block text-xs font-black uppercase tracking-widest mb-2">Adresse</label>
<input type="text" id="address" name="address" value="{{ revendeur.address }}" placeholder="Numero et rue"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label for="zipCode" class="block text-xs font-black uppercase tracking-widest mb-2">Code postal</label>
<input type="text" id="zipCode" name="zipCode" value="{{ revendeur.zipCode }}" maxlength="10" placeholder="02800"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
<div>
<label for="city" class="block text-xs font-black uppercase tracking-widest mb-2">Ville</label>
<input type="text" id="city" name="city" value="{{ revendeur.city }}" placeholder="Beautor"
class="w-full px-4 py-3 border-2 border-gray-900 bg-white text-sm font-bold focus:outline-none focus:border-indigo-600 focus:shadow-[4px_4px_0px_rgba(79,70,229,0.3)]">
</div>
</div>
</div>
</section>
<section class="border-2 border-gray-900 bg-white p-6 shadow-[4px_4px_0px_rgba(0,0,0,1)]">
<h2 class="text-sm font-black uppercase tracking-widest mb-4">Options</h2>
<label class="flex items-center gap-2 cursor-pointer">
<input type="checkbox" name="isUseStripe" value="1" {{ revendeur.isUseStripe ? 'checked' }} class="accent-[#fabf04]">
<span class="text-xs font-bold">Activer Stripe Connect</span>
</label>
{% if revendeur.stripeConnectId %}
<p class="text-xs text-gray-400 mt-2">Stripe Connect ID : <span class="font-mono">{{ revendeur.stripeConnectId }}</span></p>
{% endif %}
</section>
<button type="submit"
class="self-start px-6 py-3 border-2 border-gray-900 bg-[#fabf04] text-gray-900 font-black uppercase tracking-widest text-sm hover:bg-yellow-500 transition-all shadow-[4px_4px_0px_rgba(0,0,0,1)] hover:shadow-[2px_2px_0px_rgba(0,0,0,1)] active:shadow-none active:translate-x-1 active:translate-y-1">
Enregistrer
</button>
</form>
</div>
{% endblock %}