<?php
namespace App\Controller\Project;
use App\Entity\Projet;
use App\Entity\User;
use App\Entity\UserRole;
use App\Service\ProjetCSVService;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Flasher\SweetAlert\Prime\SweetAlertFactory;
class ProjetCrudController extends AbstractCrudController
{
private SweetAlertFactory $flasher;
private AdminUrlGenerator $adminUrlGenerator;
private ProjetCSVService $csvService;
public function __construct(
AdminUrlGenerator $adminUrlGenerator,
SweetAlertFactory $flasher,
ProjetCSVService $csvService,
ManagerRegistry $manager,
EntityManagerInterface $entityManager
) {
$this->flasher = $flasher;
$this->adminUrlGenerator = $adminUrlGenerator;
$this->csvService = $csvService;
$this->manager = $manager;
$this->entityManager = $entityManager;
}
public static function getEntityFqcn(): string
{
return Projet::class;
}
public function configureFields(string $pageName): iterable
{
if ($this->isGranted('ROLE_SUPER_ADMIN')) {
return [
FormField::addTab('General'),
TextField::new('projet')->stripTags()->hideOnDetail()->setColumns('col-sm-6 col-lg-5 col-xxl-6'),
DateField::new('dateDebut')->setColumns('col-sm-6 col-lg-3 col-xxl-2')->hideOnIndex(),
DateField::new('dateFin')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
BooleanField::new('switchEnLigne')->setLabel('Passer en ligne')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextareaField::new('remarque')->setColumns('col-sm-6 col-lg-6 col-xxl-12')->hideOnIndex(),
FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
IntegerField::new('nbrPage')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre de pages proposé'),
IntegerField::new('nbrArticle')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre d\'arcticles proposé'),
IntegerField::new('nbrMainNav')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre proposé de menus principaux'),
// Home
FormField::addTab('Home'),
TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
FormField::addRow(),
TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
// Logo
FormField::addTab('Logo')->hideWhenCreating(),
TextField::new('logo')
->addCssClass('pe-3')
->addCssClass('projectLogoGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVertical')
->addCssClass('pe-3')
->addCssClass('projectLogoVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVerticalDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoFavicon')
->setHelp('Logo FavIcon (icon)')
->addCssClass('pe-3')
->addCssClass('projectLogoFaviconGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoOpenGraph')
->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoOpenGraphGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoPdf')
// ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoPdfGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
// Serveur Local
FormField::addTab('Serveur Local'),
FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('imageFtpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageHttpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageFtpLogin')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('imageFtpMdp')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('webFtpServer')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpLogin')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpMdp')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
// PARAM mysql
FormField::addPanel('Parametrage database'),
TextField::new('databaseUrl')
->setHelp('Database Url exple: "mysql://root:@127.0.0.1:3306/nomBaseDeDonnee?serverVersion=10.4.20-MariaDB&charset=utf8mb4"')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex(),
// Serveur En Ligne
FormField::addTab('Serveur En Ligne'),
FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('imageFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageHttpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageFtpLoginEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('imageFtpMdpEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('webFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpLoginEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpMdpEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
// PARAM
FormField::addPanel('Parametrage database En ligne'),
TextField::new('databaseUrlEnligne')
->setHelp('Database Url En ligne exple: "mysql://devilinf44551688:motPasse@devilinf44551688.mysql.db:3306/devilinf44551688"')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex(),
// Contact
FormField::addTab('Contact'),
FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
// SMTP & SMS
FormField::addTab('SMTP & SMS'),
TextField::new('smtpServer')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
IntegerField::new('smtpPort')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('smtpLogin')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('smtpMdp')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Email')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('smtpEmailApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('emailSender')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('emailRecipient')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('SMS')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('smsApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('smsSender')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
//Google
FormField::addTab('Google'),
FormField::addPanel('Recaptcha')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('recaptchaSiteKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('recaptchaProjectId')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('recaptchaConfigFile')
->addCssClass('setrecaptchafile')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex()
->hideWhenCreating(),
FormField::addPanel('Analytics')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextareaField::new('googleAnalytics')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
];
} else {
$activate = false;
$user = $this->getUser();
$project = $user->getProjet();
$roles = $this->manager->getRepository(UserRole::class)->findBy(['user' => $user, 'projet' => $project]);
foreach ($roles as $role) {
$groupe = $role->getGroupe();
$label = $groupe->getLabel();
if ($label == 'ROLE_ADMIN') {
$activate = true;
}
}
if ($activate) {
return [
FormField::addTab('General'),
TextField::new('projet')->stripTags()->hideOnDetail()->setColumns('col-sm-6 col-lg-5 col-xxl-6'),
DateField::new('dateDebut')->setColumns('col-sm-6 col-lg-3 col-xxl-2')->hideOnIndex(),
DateField::new('dateFin')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
BooleanField::new('switchEnLigne')->setLabel('Passer en ligne')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextareaField::new('remarque')->setColumns('col-sm-6 col-lg-6 col-xxl-12')->hideOnIndex(),
FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
IntegerField::new('nbrPage')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre de pages proposé'),
IntegerField::new('nbrArticle')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre d\'arcticles proposé'),
IntegerField::new('nbrMainNav')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre proposé de menus principaux'),
// Home
FormField::addTab('Home'),
TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
FormField::addRow(),
TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
// Logo
FormField::addTab('Logo')->hideWhenCreating(),
TextField::new('logo')
->addCssClass('pe-3')
->addCssClass('projectLogoGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVertical')
->addCssClass('pe-3')
->addCssClass('projectLogoVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVerticalDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoFavicon')
->setHelp('Logo FavIcon (icon)')
->addCssClass('pe-3')
->addCssClass('projectLogoFaviconGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoOpenGraph')
->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoOpenGraphGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoPdf')
// ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoPdfGallery')
->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
// Serveur Local
FormField::addTab('Serveur Local'),
FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('imageFtpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageHttpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageFtpLogin')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('imageFtpMdp')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('webFtpServer')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpLogin')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpMdp')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
// PARAM mysql
FormField::addPanel('Parametrage database'),
TextField::new('databaseUrl')
->setHelp('Database Url exple: "mysql://root:@127.0.0.1:3306/nomBaseDeDonnee?serverVersion=10.4.20-MariaDB&charset=utf8mb4"')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex(),
// Serveur En Ligne
FormField::addTab('Serveur En Ligne'),
FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('imageFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageHttpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('imageFtpLoginEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('imageFtpMdpEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
TextField::new('webFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpLoginEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('webFtpMdpEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
// PARAM
FormField::addPanel('Parametrage database En ligne'),
TextField::new('databaseUrlEnligne')
->setHelp('Database Url En ligne exple: "mysql://devilinf44551688:motPasse@devilinf44551688.mysql.db:3306/devilinf44551688"')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex(),
// Contact
FormField::addTab('Contact'),
FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextareaField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextareaField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextareaField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
// SMTP & SMS
FormField::addTab('SMTP & SMS'),
TextField::new('smtpServer')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
IntegerField::new('smtpPort')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('smtpLogin')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('smtpMdp')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('Email')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('smtpEmailApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('emailSender')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('emailRecipient')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
FormField::addPanel('SMS')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('smsApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('smsSender')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
//Google
FormField::addTab('Google'),
FormField::addPanel('Recaptcha')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('recaptchaSiteKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('recaptchaProjectId')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('recaptchaConfigFile')
->addCssClass('setrecaptchafile')
->setColumns('col-sm-12 col-lg-12 col-xxl-12')
->hideOnIndex()
->hideWhenCreating(),
FormField::addPanel('Analytics')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextareaField::new('googleAnalytics')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
];
} else {
return [
TextField::new('projet')
->stripTags()
->hideOnDetail()
->setColumns('col-sm-6 col-lg-5 col-xxl-6')
->onlyOnIndex(),
// Home
FormField::addTab('Home'),
TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6'),
FormField::addRow(),
TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
// Logo
FormField::addTab('Logo')->hideWhenCreating(),
TextField::new('logo')
->addCssClass('pe-3')
->addCssClass('projectLogoGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVertical')
->addCssClass('pe-3')
->addCssClass('projectLogoVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoVerticalDark')
->addCssClass('pe-3')
->addCssClass('projectLogoDarkVerticalGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoFavicon')
->setHelp('Logo FavIcon (icon)')
->addCssClass('pe-3')
->addCssClass('projectLogoFaviconGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoOpenGraph')
->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoOpenGraphGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
TextField::new('logoPdf')
// ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
->addCssClass('pe-3')
->addCssClass('projectLogoPdfGallery')
->setColumns('col-sm-6 col-lg-6 col-xxl-6')
->hideOnIndex()
->hideWhenCreating(),
// Contact
FormField::addTab('Contact'),
FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextareaField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextareaField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
TextareaField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
];
}
}
}
public function configureCrud(Crud $crud): Crud
{
return $crud
// the labels used to refer to this entity in titles, buttons, etc.
->overrideTemplate('crud/index', 'project/crud/indexv2.html.twig')
->overrideTemplate('crud/edit', 'project/crud/edit.html.twig')
->showEntityActionsInlined()
->setEntityLabelInSingular('Projet')
->setEntityLabelInPlural('Projets')
->renderContentMaximized()
->setPaginatorPageSize(1000);
}
public function configureActions(Actions $actions): Actions
{
$exportCSV = Action::new('exportCSV', 'Export')
->setIcon('fa fa-file-csv')
->linkToCrudAction('export')
->addCssClass('btn btn-info');
if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
return $actions
->add(Crud::PAGE_INDEX, $exportCSV)
->update(Crud::PAGE_INDEX, Action::EDIT, function (Action $action) {
return $action->setIcon('fa fa-pen')->addCssClass('btn crud-action-edit px-3 py-1 me-2');
})
->remove(Crud::PAGE_INDEX, Action::NEW)
->remove(Crud::PAGE_INDEX, Action::DELETE);
} else {
return $actions
->add(Crud::PAGE_INDEX, $exportCSV)
->update(Crud::PAGE_INDEX, Action::EDIT, function (Action $action) {
return $action->setIcon('fa fa-pen')->addCssClass('btn crud-action-edit px-3 py-1 me-2');
})
->update(Crud::PAGE_INDEX, Action::DELETE, function (Action $action) {
return $action->setIcon('fa fa-trash')->addCssClass('btn px-3 py-1');
});
}
}
public function export(AdminContext $context)
{
$data = [];
$data[] = $context->getEntity()->getInstance()->getExportData();
// dd($data);
$projet = $context->getEntity()->getInstance();
$res = $this->csvService->exportProjet($projet);
if ($res == 'probleme ftp') {
$this->flasher->addError('Probleme FTP verifier les parametrages');
} else if ($res == 'ok') {
$this->flasher->addSuccess('projet ' . $projet->getProjet() . ' exportée avec succès');
} else if ($res == 'no recaptcha no env') {
$this->flasher->addInfo('le fichier recaptcha et .env.local n\'est pas généré verifier les parametrages projet');
} else if ($res == 'no recaptcha') {
$this->flasher->addSuccess('le fichier recaptcha n\'est pas généré verifier les parametrages projet');
} else if ($res == 'no env') {
$this->flasher->addSuccess('le fichier .env.local n\'est pas généré verifier les parametrages projet');
} else {
$this->flasher->addError('Quelque chose s\'est mal passé');
}
$url = $this->adminUrlGenerator
->setController(ProjetCrudController::class)
->setAction(Action::INDEX)
->generateUrl();
return $this->redirect($url);
}
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
$queryBuilder = parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters);
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
if ($projet != null) {
$queryBuilder
->andWhere('entity.id = :val')->setParameter('val', $this->getUser()->getProjet()->getId());
}
}
return $queryBuilder;
}
}