Merge pull request #3 from Apes-HDF/chore/sync-les-tilleuls

Chore/sync les tilleuls
This commit is contained in:
Camille Gaquiere 2024-03-26 16:18:05 +01:00 committed by GitHub
commit 1b3c3898ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 160 additions and 40 deletions

View file

@ -65,12 +65,14 @@
border-radius: 50%;
object-fit: cover;
}
.img-avatar {
display: inline-block;
background-size: cover;
background-position: center center;
border-radius: 50%
}
.bg-secondary-subtle {
background: $gray-100;
}
@ -95,6 +97,7 @@
> input {
border-right: 0;
}
&-button {
border: 1px solid #ced4da;
border-left: none;
@ -105,6 +108,34 @@
border-top-right-radius: var(--bs-border-radius-sm) !important;
}
}
p > strong {
> a {
color: $blue-500;;
position: relative;
text-decoration: none;
transition: .5s;
&:after {
background-color: $blue-500;
content: "";
height: 2px;
left: 0;
position: absolute;
top: 100%;
transform: scaleX(0);
transform-origin: right;
transition: transform .5s;
width: 100%;
}
&:hover:after {
transform: scaleX(1);
transform-origin: left;
}
}
}
@media screen and (max-width: 992px) {
.img-funding {
width: 100%;

View file

@ -1,6 +1,6 @@
api_platform:
title: 'PlateformCoop API'
description: 'List of PlateformCoop API endpoints. Most of them require to be logged.'
title: 'Plateforme EBS API'
description: 'List of Plateforme EBS API endpoints. Most of them require to be logged.'
# The version of the API.
version: '%app_version%'

View file

@ -5,7 +5,7 @@
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
app_version: 0.7.2
brand: PlateformCoop
brand: Plateforme EBS
# https://symfony.com/doc/current/performance.html#dump-the-service-container-into-a-single-file
container.dumper.inline_factories: true

View file

@ -26,6 +26,7 @@ App\Entity\Category:
category_service_4_0 (extends category_object):
parent: '@category_object_4'
name: Guitare
image: 'de945081-21b6-46c2-864d-db6ed6b43311.png'
category_object_5 (extends category_object):
name: Entretien de la maison
@ -35,6 +36,7 @@ App\Entity\Category:
category_object_7 (extends category_object):
name: Images & son
image: 'd1fdbb3f-a5ca-4019-b488-fe6d8b06a4d3.png'
category_object_8 (extends category_object):
name: Informatique - téléphonie consoles et jeux vidéos
@ -44,12 +46,13 @@ App\Entity\Category:
category_object_10 (extends category_object):
name: Livres
image: '87c1aa88-1937-4a71-b4d9-325086783193.png'
category_object_11 (extends category_object):
name: Loisirs divers
category_object_12 (extends category_object):
name: Matériel de sports
image: '04f41100-e963-4f33-8aaf-f1c774e0d42f.png'
category_object_13 (extends category_object):
name: Matériel de vacances et weekend

View file

@ -3,7 +3,7 @@ App\Entity\Group:
group_1 (extends group_template):
id: <uuid('1ed4bcca-336e-6732-a08c-a15bb85fa24a')>
name: Groupe 1
name: Groupe 1 - adhésion payante
description: >
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean velit erat,
fringilla sit amet dui in, vehicula ultrices dui.
@ -12,7 +12,7 @@ App\Entity\Group:
invitation_by_admin: true
group_2 (extends group_template):
name: Groupe 2
name: Groupe 2 - adhésion gratuite
description: >
Mauris varius vitae nunc ac maximus. Aliquam quis placerat nisi.
Pellentesque aliquam magna sed elit interdum, sed elementum erat posuere.

View file

@ -32,12 +32,6 @@ App\Entity\MenuItem:
parent: '@menu_item_account'
position: 0
menu_item_forgotten_password (extends menu_item):
name: 'Mot de passe oublié'
link: '/fr/compte/mot-de-passe-oublie'
parent: '@menu_item_account'
position: 1
menu_item_logout (extends menu_item):
name: 'Se déconnecter'
link: '/logout'

View file

@ -57,7 +57,82 @@ App\Entity\Page:
name: Accueil
home: true
content: |
\<h2><strong>Nulla fermentum justo sed magna rutrum, eget fermentum dolor accumsan.</strong></h2>
\<h1><strong>Bienvenue sur la d&eacute;mo de la plateforme d&#39;&eacute;change de biens et services EBS</strong></h1>
<p dir="auto">&nbsp;</p>
<h1 dir="auto">Contexte</h1>
<p dir="auto">Le logiciel est destin&eacute; aux porteurs de projets qui souhaitent d&eacute;velopper une plateforme coop&eacute;rative &agrave; une &eacute;chelle territoriale locale (ville, EPCI, d&eacute;partement, r&eacute;gion Hauts-de-France) et ce dans une f&eacute;d&eacute;ration d&rsquo;instances de plateformes coop&eacute;ratives.</p>
<p dir="auto">Ce logiciel propose une plateforme d&#39;&eacute;change de biens et services au sein d&#39;une communaut&eacute;. La plateforme propose un moyen de rentrer en contact avec quelqu&rsquo;un pour permettre cet &eacute;change : soit en tant que pr&ecirc;teur, qui propose un objet, soit en tant qu&rsquo;emprunteur, qui l&rsquo;utilise.</p>
<p dir="auto">Pour les administrateur&middot;rice&middot;s de la plateforme, elle est personnalisable en configurant les fonctionnalit&eacute;s disponibles et en personnalisant les contenus via l&rsquo;espace d&rsquo;administration.</p>
<p dir="auto">La plateforme a &eacute;t&eacute; con&ccedil;ue au format responsive pour &ecirc;tre utilis&eacute;e tant sur ordinateur qu&rsquo;appareil mobile (tablette ou smartphone).</p>
<p>Le code est disponible sous licence AGPL (Affero General Public License).</p>
<p>&nbsp;</p>
<hr />
<h2>D&eacute;p&ocirc;t</h2>
<p>Toutes les informations sur le projet et le code sont disponibles sur <strong><u><a href="https://github.com/Apes-HDF/EBS">le d&eacute;p&ocirc;t public</a></u></strong>.</p>
<p>&nbsp;</p>
<hr />
<h2>D&eacute;mo</h2>
<p>Vous pouvez tester la plateforme sur cet environnement de d&eacute;mo.</p>
<p>Utilisez les identifiants ci-dessous pour naviguez, ou cr&eacute;&eacute;z vous un compte :</p>
<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
<thead>
<tr>
<th scope="col">R&ocirc;le</th>
<th scope="col">Identifiant</th>
<th scope="col">Mot de passe</th>
</tr>
</thead>
<tbody>
<tr>
<td>Admin</td>
<td>sarah@example.com</td>
<td>apesebs</td>
</tr>
<tr>
<td>Utilisateur de type individuel</td>
<td>loic@example.com</td>
<td>apesebs</td>
</tr>
<tr>
<td>Utilisateur de type lieu</td>
<td>compte+lieu@apes-hdf.org</td>
<td>apesebs</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Testez les paiements avec les cartes de test suivantes :</p>
<table border="1" class="docutils styled-table">
<thead>
<tr>
<th>Type</th>
<th>Num&eacute;ro de carte</th>
<th>Expiration</th>
<th>CVV</th>
</tr>
</thead>
<tbody>
<tr>
<td>American Express</td>
<td><code>3782 822463 10005</code></td>
<td>Tous</td>
<td>Tous</td>
</tr>
<tr>
<td>Mastercard</td>
<td><code>2223 0000 1047 9399</code></td>
<td>Tous</td>
<td>Tous</td>
</tr>
<tr>
<td>VISA</td>
<td><code>4543 4740 0224 9996</code></td>
<td>Tous</td>
<td>Tous</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
cgu:
id: <uuid('1edca5ff-338d-6fa8-a99b-cf5fb5b2f7a5')>

View file

@ -44,6 +44,7 @@ App\Entity\Product:
description: >
Guitare en bon état.
age: 2010
images: ["d51c66ad-9e02-4fa9-8f37-5c84d928226e.jpg"]
loic_service_1 (extends service):
id: <uuid('1ed7a2a8-0a78-605a-a8e0-f3a729006754')>
@ -54,6 +55,7 @@ App\Entity\Product:
Initiation aux échecs pour débutants (1 heure).
duration: >
Une ou deux heures si besoin.
images: ["e2140911-4689-47df-a9cd-f87cef342cdd.jpg"]
# Kevin ———————————————————————————————————————————————————————————————————
kevin_object_1 (extends object):
@ -64,6 +66,7 @@ App\Entity\Product:
description: >
Très bien pour les déménagements, même proches.
age: Acheté en 2012.
images: ["d4a5f2fb-57bb-4e6a-95eb-0614e8f62d45.jpg"]
kevin_object_2 (extends object):
owner: '@admin_kevin'
@ -72,6 +75,7 @@ App\Entity\Product:
description: >
Très bien pour percer des trous dans la maison.
age: Acheté en 2015.
images: ["d75f07b1-52cb-4e39-929d-9da35e722627.jpg"]
# Camille —————————————————————————————————————————————————————————————————————
camille_object_1 (extends object):
@ -109,6 +113,7 @@ App\Entity\Product:
Pour transporter son enfant ou son chat.
age: 2022
deposit: 5000
images: ["335dbbc1-3660-4f82-a529-fe79eb1a9a87.jpg"]
# user 16 —————————————————————————————————————————————————————————————————————
user_16_service_1 (extends service):
@ -129,6 +134,7 @@ App\Entity\Product:
Très belle guitare électrique en bon état.
age: 2013
deposit: 2000
images: ["e5889470-abfd-432c-aa96-0838608b936a.jpg"]
user_16_object_2 (extends object):
owner: '@user_16'
@ -137,6 +143,7 @@ App\Entity\Product:
description: >
Piano en bon état.
age: 2010
images: ["f3fa0285-2b3c-4235-a618-9092ee55cae4.jpg"]
# place apes —————————————————————————————————————————————————————————————————————
place_apes_service_1 (extends service):
@ -164,6 +171,7 @@ App\Entity\Product:
Cours de rattrapage en histoire, aide aux devoirs, remise à niveau.
duration: >
Une journée.
images: ["c594de44-8999-46ed-89f0-6688c7d7c087.jpg"]
# Place 6 ———————————————————————————————————————————————————————————————————
place_6_object_1 (extends object):
@ -175,6 +183,7 @@ App\Entity\Product:
duration: Une journée.
age: De 2 à 10 ans
deposit: 0
images: ["434a9bb7-c140-4776-93e8-b8d018cd28f0.jpg"]
place_6_object_2 (extends object):
id: <uuid('1edf938b-7344-6684-87d5-d36fc869cf92')>

View file

@ -2,7 +2,7 @@ App\Entity\User:
base_user_template (template):
enabled: true
mainAdminAccount: false
password: '\$2y\$13\$LOIpgrMmOysCysIwkILTl.qD8psPxn9U9/V03p3odlqztLb7Aewze' # 35DVDj8ir3Buc7
password: '\$2y\$13\$TQ31DwKCMXXDX4.vV8R10OLUIT8rDgtbUCywwtoT/gB72Ei46AOQ.' # apesebs
emailConfirmed: true
phoneNumber: '+33600000000'
smsNotifications: true
@ -25,6 +25,7 @@ App\Entity\User:
lastname: 'Croteau'
mainAdminAccount: true
address: '@address_camille'
avatar: 'a9a9bf49-24e4-4b3e-bdbd-86808c32939e.jpg'
admin_loic (extends admin_template):
id: <uuid('1ed674d3-886f-6ad4-bc25-15f868662c0c')>
@ -33,17 +34,19 @@ App\Entity\User:
lastname: 'Duclos'
devAccount: true
address: '@address_loic'
avatar: '7c732ddb-9c13-45eb-aea0-e614f2340e6d.jpg'
admin_kevin (extends admin_template):
id: <uuid('1ed69804-eeb9-6c32-990b-632c3a6846ba')>
email: 'kevin@example.com'
firstname: 'Kevin'
lastname: 'Pirouet'
avatar: '7c732ddb-9c13-45eb-aea0-e614f2340e6d.jpg'
admin_apes (extends admin_template):
id: <uuid('1ed69804-eeb9-6e6c-bce0-632c3a6846ba')>
address: '@address_loic'
email: 'plateformcoop@apes-hdf.org'
email: 'plateformeebs@apes-hdf.org'
firstname: 'APES'
lastname: 'APES'
@ -55,6 +58,7 @@ App\Entity\User:
devAccount: true
address: '@address_region_hauts_de_france'
category: '@category_object_16'
avatar: 'a9a9bf49-24e4-4b3e-bdbd-86808c32939e.jpg'
# —— Places ————————————————————————————————————————————————————————————————
place_{6} (extends place_template):
@ -156,7 +160,7 @@ App\Entity\User:
firstname: <firstname()>
lastname: <lastname()>
address: null
avatar: 'ba827ea0-b140-4cbf-9786-77ac980c648c.jpg'
avatar: 'a9a9bf49-24e4-4b3e-bdbd-86808c32939e.jpg'
# user with an address and a preferred category set
user_{17} (extends user_template):
@ -173,3 +177,4 @@ App\Entity\User:
email: 'john.doe@example.com'
firstname: 'John'
lastname: 'Doe'
avatar: '7c732ddb-9c13-45eb-aea0-e614f2340e6d.jpg'

View file

@ -4,7 +4,6 @@ declare(strict_types=1);
namespace App\Controller\Admin;
use App\Controller\Admin\Dev\DevToolsController;
use App\Controller\User\MyAccountAction;
use App\Entity\Group;
use App\Entity\Page;
@ -211,12 +210,6 @@ final class DashboardController extends AbstractDashboardController
yield MenuItem::linkToCrud('menu.loans', 'fas fa-link', ServiceRequest::class)->setPermission(User::ROLE_ADMIN);
// —————————————————————————————————————————————————————————————————————
if ($user->isDevAccount()) {
yield MenuItem::section('menu.devtools')->setPermission(User::ROLE_ADMIN);
yield MenuItem::linkToRoute('menu.dev_tools', 'fas fa-wrench', DevToolsController::ROUTE_NAME)->setPermission(User::ROLE_ADMIN);
}
// —————————————————————————————————————————————————————————————————————
yield MenuItem::section('menu.public');
yield MenuItem::linkToUrl('menu.home', 'fa fa-home', '/')->setLinkTarget('_blank');

View file

@ -10,6 +10,7 @@ use App\Enum\Product\ProductType;
use App\Enum\Product\ProductVisibility;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
/**
* Specific page for services.
@ -53,15 +54,19 @@ final class ServiceCrudController extends AbstractProductCrudController
'nameField' => $nameField,
'descriptionField' => $descriptionField,
'durationField' => $durationField,
'imageField' => $imageField,
'createdAt' => $createdAt,
'updatedAt' => $updatedAt,
] = $this->getFields($pageName);
// list
if ($pageName === Crud::PAGE_INDEX) {
return [$nameField, $ownerField, $categoryField, $statusField, $visibilityField, $createdAt];
return [$nameField, $ownerField, $categoryField, $statusField, $visibilityField, $imageField, $createdAt];
}
/** @var ImageField $imageField */
$imageField->setCustomOption('first_image_only', false);
// forms
if ($pageName === Crud::PAGE_NEW || $pageName === Crud::PAGE_EDIT) {
/** @var ChoiceField $statusField */
@ -69,7 +74,7 @@ final class ServiceCrudController extends AbstractProductCrudController
/** @var ChoiceField $visibilityField */
$visibilityField->setChoices(ProductVisibility::cases());
return [$nameField, $ownerField, $categoryField, $statusField, $visibilityField, $descriptionField, $durationField];
return [$nameField, $ownerField, $categoryField, $statusField, $visibilityField, $descriptionField, $imageField, $durationField];
}
// detail
@ -83,7 +88,7 @@ final class ServiceCrudController extends AbstractProductCrudController
$nameField,
$descriptionField,
$durationField,
$imageField,
$panels['tech_information'],
$idField,
$typeField,

View file

@ -61,7 +61,7 @@ final class ObjectController extends AbstractController
return $this->redirectToRoute('app_product_show', $product->getRoutingParameters());
}
return $this->render('pages/product/new_object.html.twig', compact('form'));
return $this->render('pages/product/new_object.html.twig', compact('form', 'product'));
}
#[Route(path: [

View file

@ -66,7 +66,7 @@ final class ServiceController extends AbstractController
return $this->redirectToRoute('app_product_show', $product->getRoutingParameters());
}
return $this->render('pages/product/new_service.html.twig', compact('form'));
return $this->render('pages/product/new_service.html.twig', compact('form', 'product'));
} else {
throw new GoneHttpException();
}

View file

@ -13,7 +13,7 @@
</div>
{% endfor %}
{% else %}
<div class="col-6 order-1 order-sm-2 py-2 d-flex justify-content-center align-items-center">
<div class="d-none d-md-flex col-6 order-1 order-sm-2 py-2 justify-content-center align-items-center">
<ul class="p-0">
{% for item in links %}
<li class="text-center list-group-item">

View file

@ -1,7 +1,7 @@
{% if app.user.address is not null %}
{% include 'components/layout/_title_5.html.twig' with {
rowClass: 'border-top',
title: 'product.form.recover'|trans,
title: product.type.value == "object" ? 'product.form.recover'|trans : 'product.form.service_location'|trans,
colClass: 'col-md-8 col-lg-6 col-xl-5 mt-4'
} %}
{% include 'components/product/_address.html.twig' with {

View file

@ -28,7 +28,7 @@ final class NotifyMembershipExpirationCommandTest extends KernelTestCase
$commandTester->assertCommandIsSuccessful();
$output = $commandTester->getDisplay();
self::assertStringContainsString(sprintf('%d notification', 1), $output);
self::assertStringContainsString('Groupe 1 of Camille', $output);
self::assertMatchesRegularExpression('/Groupe 1 - adhésion payante of[\s\/\\n]*Camille/', $output);
self::assertEmailCount(1);
self::assertNotificationCount(1);

View file

@ -33,7 +33,7 @@ final class TestReference
// users
public const USER_COUNT = 18;
public const PASSWORD_FIXTURES = '35DVDj8ir3Buc7';
public const PASSWORD_FIXTURES = 'apesebs';
public const PASSWORD = '12345678';
public const USER_17_EMAIL = 'user17@example.com';
@ -101,7 +101,7 @@ final class TestReference
// menu and footer
public const MENU_COUNT = 2;
public const MENU_ITEMS_COUNT = 16;
public const MENU_ITEMS_COUNT = 15;
public const MENU_HEADER_ITEM_FIRST = '58a72426-57e4-4251-9c32-d29603bdcf5b';
public const MENU_HEADER_ITEM_LAST = 'ac678c07-421f-4968-b2f8-74c9f2f22fcf';

View file

@ -151,6 +151,11 @@
<target>A récupérer</target>
</trans-unit>
<trans-unit id="CBB4WUZ" resname="product.form.service_location">
<source>product.form.service_location</source>
<target>Lieu de la prestation</target>
</trans-unit>
<trans-unit id="QqEwe6u" resname="product.form.address">
<source>product.form.address</source>
<target>Adresse</target>

View file

@ -40,7 +40,7 @@
<!-- translations for admin email -->
<trans-unit id="ZKTDVd5" resname="templates.pages.account.index.mail.subject">
<source>templates.pages.account.index.mail.subject</source>
<target>PlatformCoop : demande de création de groupe</target>
<target>Platforme EBS : demande de création de groupe</target>
</trans-unit>
<trans-unit id="nd7Cu7v" resname="templates.pages.account.index.mail.mail_adress">