src/Controller/Content/Page/PageCrudController.php line 243

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Content\Page;
  3. use App\Entity\Article;
  4. use App\Entity\Page;
  5. use App\Entity\PageContenu;
  6. use App\Entity\Projet;
  7. use App\Service\PageCSVService;
  8. use Doctrine\ORM\QueryBuilder;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  11. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  12. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  13. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  15. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  16. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  17. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  18. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  19. use EasyCorp\Bundle\EasyAdminBundle\Factory\FilterFactory;
  20. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  21. use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
  22. use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
  23. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  24. use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
  25. use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
  26. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  27. use EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
  28. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  29. use Flasher\SweetAlert\Prime\SweetAlertFactory;
  30. class PageCrudController extends AbstractCrudController
  31. {
  32.     private PageCSVService $csvService;
  33.     private ManagerRegistry $manager;
  34.     private AdminContextProvider $adminContextProvider;
  35.     private SweetAlertFactory $flasher;
  36.     public function __construct(
  37.         PageCSVService $csvService,
  38.         ManagerRegistry $manager,
  39.         AdminContextProvider $adminContextProvider,
  40.         AdminUrlGenerator $adminUrlGenerator,
  41.         SweetAlertFactory $flasher
  42.     ) {
  43.         $this->csvService $csvService;
  44.         $this->manager $manager;
  45.         $this->adminContextProvider $adminContextProvider;
  46.         $this->adminUrlGenerator $adminUrlGenerator;
  47.         $this->flasher $flasher;
  48.     }
  49.     public static function getEntityFqcn(): string
  50.     {
  51.         return Page::class;
  52.     }
  53.     public function configureFields(string $pageName): iterable
  54.     {
  55.         return [
  56.             TextField::new('permalink')->setLabel('Id')->setSortable(false)->onlyOnIndex(),
  57.             AssociationField::new('parent')->onlyOnIndex()->setSortable(false)
  58.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  59.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  60.                     $projet $this->adminContextProvider->getContext()->getEntity()->getInstance()->getProjet();
  61.                     $id $this->adminContextProvider->getContext()->getEntity()->getInstance()->getId();
  62.                     // $queryBuilder->where('entity.parent is null and entity.projet = :val and entity.id != :valid')->setParameter('val', $projet)->setParameter('valid', $id);
  63.                     $queryBuilder->andWhere('entity.projet = :val and entity.id != :valid')->setParameter('val'$projet)->setParameter('valid'$id);
  64.                 }),
  65.             FormField::addTab('Paramétrage'),
  66.             TextField::new('titreNav')->stripTags()
  67.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  68.                 ->setLabel('Titre du menu')
  69.                 ->setSortable(false),
  70.             // FormField::addPanel(''),
  71.             TextField::new('titre')->stripTags()->setSortable(false)->setLabel('Titre (H1)')->setColumns('col-sm-6 col-lg-4 col-xxl-4'),
  72.             TextField::new('sousTitre')->hideOnIndex()->stripTags()->setSortable(false)->setLabel('Sous-titre (H2)')->setColumns('col-sm-6 col-lg-4 col-xxl-4'),
  73.             AssociationField::new('parent')->hideWhenCreating()->setSortable(false)->hideOnIndex()
  74.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  75.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  76.                     $projet $this->adminContextProvider->getContext()->getEntity()->getInstance()->getProjet();
  77.                     $id $this->adminContextProvider->getContext()->getEntity()->getInstance()->getId();
  78.                     // $queryBuilder->where('entity.parent is null and entity.projet = :val and entity.id != :valid')->setParameter('val', $projet)->setParameter('valid', $id);
  79.                     $queryBuilder->andWhere('entity.projet = :val and entity.id != :valid')->setParameter('val'$projet)->setParameter('valid'$id);
  80.                 }),
  81.             AssociationField::new('parent')->onlyWhenCreating()->setSortable(false)
  82.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  83.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  84.                     $projet $this->manager->getRepository(Projet::class)->findOneBy(
  85.                         ['id' => $this->getUser()->getProjet()->getId()]
  86.                     );
  87.                     // $queryBuilder->where('entity.parent is null and entity.projet = :val')->setParameter('val', $projet);
  88.                     $queryBuilder->andWhere('entity.projet = :val')->setParameter('val'$projet);
  89.                 })->hideOnIndex(),
  90.             IntegerField::new('niveau')
  91.                 ->hideOnForm()
  92.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4'),
  93.             IntegerField::new('ordre')
  94.                 ->hideOnIndex()
  95.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4'),
  96.             // /[year]/[month]/[day]
  97.             // ->setUploadedFileNamePattern('[year]/[month]/[day]/[slug]-[contenthash].[extension]')
  98.             TextField::new('icon')->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  99.                 ->addCssClass('mimagefilepreviewPageicon')
  100.                 ->addCssClass('width-95')
  101.                 ->hideOnIndex(),
  102.             TextareaField::new('keywords')
  103.                 ->setColumns('col-sm-6 col-lg-5 col-xxl-6')
  104.                 ->setLabel('Mots clés')
  105.                 ->hideOnIndex(),
  106.             BooleanField::new('actif')->setSortable(false)
  107.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4'),
  108.             AssociationField::new('formulaire')->setSortable(false)
  109.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  110.                     $projet $this->manager->getRepository(Projet::class)->findOneBy(
  111.                         ['id' => $this->getUser()->getProjet()->getId()]
  112.                     );
  113.                     $queryBuilder
  114.                         ->andWhere('entity.projet = :val')
  115.                         ->setParameter('val'$projet);
  116.                 })->setColumns('col-sm-6 col-lg-6 col-xxl-6'),
  117.             /* CollectionField::new('pageContenus')
  118.                 ->allowDelete(false)
  119.                 ->onlyWhenUpdating()
  120.                 ->setEntryIsComplex(true), */
  121.                 AssociationField::new('combi')->setSortable(false)
  122.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  123.                     $projet $this->manager->getRepository(Projet::class)->findOneBy(
  124.                         ['id' => $this->getUser()->getProjet()->getId()]
  125.                     );
  126.                     $queryBuilder
  127.                         ->andWhere('entity.projet = :val')
  128.                         ->setParameter('val'$projet);
  129.                 })->setColumns('col-sm-6 col-lg-6 col-xxl-6'),
  130.            /* TextField::new('combi')->setSortable(false)
  131.                 ->setColumns('col-sm-6 col-lg-6 col-xxl-6'),
  132.                       */
  133.             FormField::addTab('Description'),
  134.             /* ImageField::new('image')
  135.                 ->setSortable(false)
  136.                 ->addCssClass('mimagefilepreview')
  137.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  138.                 ->setUploadedFileNamePattern('[year]-[month]-[day]-[slug]-[contenthash].[extension]')
  139.                 ->setUploadDir('public/uploads/project/page/images')
  140.                 ->setBasePath('uploads/project/page/images')
  141.                 ->addJsFiles('js/imagepreview.js'), */
  142.             TextField::new('image')->setSortable(false)
  143.                 ->addCssClass('mimagefilepreview')
  144.                 ->addCssClass('width-95')
  145.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  146.                 ->hideOnIndex()
  147.             // ->setTemplatePath('content/fields/imageftp.html.twig')
  148.             // ->addJsFiles('js/imagepreview.js')
  149.             // ->addJsFiles('js/imagepreview.js')
  150.             ,
  151.             FormField::addPanel('')->addCssClass('col-sm-12 col-lg-8 col-xxl-8'),
  152.             TextEditorField::new('description')->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  153.                 ->setTemplatePath('content/fields/description.html.twig')
  154.                 ->hideOnIndex(),
  155.             TextEditorField::new('descriptionCourte')->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  156.                 ->setTemplatePath('content/fields/description.html.twig')
  157.                 ->hideOnIndex(),
  158.             TextEditorField::new('descriptionFin')->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  159.                 ->setTemplatePath('content/fields/description.html.twig')
  160.                 ->hideOnIndex(),
  161.             FormField::addTab('Les paragraphes')->onlyWhenUpdating(),
  162.             // FormField::addPanel('Contenu')->addCssClass('col-sm-12 col-lg-12 col-xxl-12'),
  163.             FormField::addPanel('')->addCssClass('tablepageContentPanel')->addJsFiles('js/tablePageContent.js'),
  164.             AssociationField::new('projet')->setCssClass('d-none')
  165.                 ->setColumns('col-sm-6 col-lg-4 col-xxl-4')
  166.                 ->setQueryBuilder(function (QueryBuilder $queryBuilder) {
  167.                     $queryBuilder->andWhere('entity.id = :val')->setParameter('val'$this->getUser()->getProjet()->getId());
  168.                 })
  169.                 ->onlyWhenCreating(),
  170.         ];
  171.     }
  172.     public function configureCrud(Crud $crud): Crud
  173.     {
  174.         return $crud
  175.             // the labels used to refer to this entity in titles, buttons, etc.
  176.             ->overrideTemplate('crud/index''content/page/crud/index.html.twig')
  177.             ->overrideTemplate('crud/edit''content/page/crud/edit.html.twig')
  178.             ->overrideTemplate('crud/new''content/page/crud/new.html.twig')
  179.             ->setSearchFields(['titre''parent.titre''titreNav''parent.titreNav'])
  180.             ->showEntityActionsInlined()
  181.             ->setEntityLabelInSingular('Page')
  182.             ->setEntityLabelInPlural('Pages')
  183.             ->renderContentMaximized()
  184.             ->setPaginatorPageSize(100000);
  185.             //->setPaginatorPageSize(6)
  186.         ;
  187.     }
  188.     public function configureActions(Actions $actions): Actions
  189.     {
  190.         $exportCSV Action::new('exportCSV''Export CSV')
  191.             ->setIcon('fa fa-file-csv')
  192.             ->linkToCrudAction('export')
  193.             ->addCssClass('btn btn-info')
  194.             ->createAsGlobalAction();
  195.         $importCSV Action::new('importCSV''Import CSV')
  196.             ->setIcon('fa fa-file-import')
  197.             ->setHtmlAttributes(['data-bs-toggle' => 'modal''data-bs-target' => '#pageModal'])
  198.             ->linkToCrudAction('import')
  199.             ->addCssClass('btn btn-secondary')
  200.             //data-bs-toggle="modal" data-bs-target="#pageModal"
  201.             ->createAsGlobalAction();
  202.         $crudContenu Action::new('Page Contenu')
  203.             ->linkToCrudAction('toPageContentCrud')
  204.             ->addCssClass('btn crud-action-content px-2 py-1 ')
  205.             ->setIcon('fa fa-outdent');
  206.         $preview Action::new('Aperçu')
  207.             ->linkToRoute('app_content_preview', function (Page $page): array {
  208.                 return [
  209.                     'pageid' => $page->getId(),
  210.                     'projectid' => $this->getUser()->getProjet()->getId(),
  211.                     //'method' => $order->getUser()->getPreferredSendingMethod(),
  212.                 ];
  213.             })
  214.             ->addCssClass('btn crud-action-preview px-2 py-1 ')
  215.             ->setIcon('fa fa-binoculars')
  216.             ->setHtmlAttributes(['target' => '_blank']);
  217.         return $actions
  218.             ->add(Crud::PAGE_INDEX$importCSV)
  219.             ->add(Crud::PAGE_INDEX$exportCSV)
  220.             //->add(Crud::PAGE_INDEX, $crudContenu)
  221.             ->add(Crud::PAGE_INDEX$preview)
  222.             ->add(Crud::PAGE_EDIT$preview)
  223.             ->add(Crud::PAGE_NEWAction::SAVE_AND_CONTINUE)
  224.             ->update(Crud::PAGE_NEWAction::SAVE_AND_CONTINUE, function (Action $action) {
  225.                 return $action->setLabel('Créer et ajouter Contenu')->addCssClass('btn btn-info px-2 py-1 ');
  226.             })
  227.             /* ->update(Crud::PAGE_INDEX, Action::DETAIL, function (Action $action) {
  228.                 return $action->setIcon('fa fa-info')->addCssClass('btn crud-action-details px-2 py-1 ');
  229.             }) */
  230.             ->update(Crud::PAGE_INDEXAction::EDIT, function (Action $action) {
  231.                 return $action->setIcon('fa fa-pen')->addCssClass('btn crud-action-edit px-2 py-1 ');
  232.             })
  233.             ->update(Crud::PAGE_INDEXAction::DELETE, function (Action $action) {
  234.                 return $action->setIcon('fa fa-trash')->addCssClass('btn px-2 py-1');
  235.             });
  236.     }
  237.     public function toPageContentCrud(AdminContext $context)
  238.     {
  239.         $url $this->adminUrlGenerator
  240.             ->setController(PageContenuCrudController::class)
  241.             ->setAction(Action::INDEX)
  242.             ->set('parentmpage'$context->getEntity()->getInstance()->getId())
  243.             ->unset('entityId')
  244.             ->generateUrl();
  245.         return $this->redirect($url);
  246.     }
  247.     public function createIndexQueryBuilder(SearchDto $searchDtoEntityDto $entityDtoFieldCollection $fieldsFilterCollection $filters): QueryBuilder
  248.     {
  249.         $queryBuilder parent::createIndexQueryBuilder($searchDto$entityDto$fields$filters);
  250.         $projet $this->manager->getRepository(Projet::class)->findOneBy(
  251.             ['id' => $this->getUser()->getProjet()->getId()]
  252.         );
  253.         if ($projet != null) {
  254.             if (=== count($searchDto->getSort())) {
  255.                 $queryBuilder
  256.                     ->andWhere('entity.projet = :val')->setParameter('val'$projet)
  257.                     ->addOrderBy('entity.parent''ASC')
  258.                     ->addOrderBy('entity.ordre''ASC');
  259.             }
  260.         } else {
  261.             if (=== count($searchDto->getSort())) {
  262.                 $queryBuilder
  263.                     ->addOrderBy('entity.ordre''ASC');
  264.             }
  265.         }
  266.         return $queryBuilder;
  267.     }
  268.     public function export(AdminContext $context)
  269.     {
  270.         $fields FieldCollection::new($this->configureFields(Crud::PAGE_DETAIL));
  271.         $filters $this->get(FilterFactory::class)->create($context->getCrud()->getFiltersConfig(), $fields$context->getEntity());
  272.         $orders $this->createIndexQueryBuilder($context->getSearch(), $context->getEntity(), $fields$filters)
  273.             ->getQuery()
  274.             ->getResult();
  275.         $data = [];
  276.         foreach ($orders as $order) {
  277.             $data[] = $order->getExportData();
  278.         }
  279.         $projet $this->manager->getRepository(Projet::class)->findOneBy(
  280.             ['id' => $this->getUser()->getProjet()->getId()]
  281.         );
  282.         $res $this->csvService->exportPage($projet);
  283.         if ($res == 'probleme ftp') {
  284.             $this->flasher->addError('Probleme FTP verifier les parametrages');
  285.         } else if ($res == 'ok') {
  286.             $this->flasher->addSuccess('La liste des pages du projet ' $projet->getProjet() . ' a été exportée avec succès');
  287.         } else {
  288.             $this->flasher->addError('Quelque chose s\'est mal passé, Essayez de fermer les fichiers CSV ouverts');
  289.         }
  290.         $url $this->adminUrlGenerator
  291.             ->setController(PageCrudController::class)
  292.             ->setAction(Action::INDEX)
  293.             ->set('projet'$projet->getId())
  294.             ->set('nomprojet'$projet->getProjet())
  295.             ->generateUrl();
  296.         return $this->redirect($url);
  297.     }
  298.     public function import(AdminContext $context)
  299.     {
  300.         $fileToUpload $this->adminContextProvider->getContext()->getRequest()->request->get('mfileToUpload');
  301.         $nameFileToUpload $this->adminContextProvider->getContext()->getRequest()->request->get('mfileNameToUpload');
  302.         $projet $this->manager->getRepository(Projet::class)->findOneBy(
  303.             ['id' => $this->getUser()->getProjet()->getId()]
  304.         );
  305.         //var_dump($this->csvService->importPage('../csv/2022-05-18-16-49 devil app pro/page.csv', $projet));
  306.         $resultImport $this->csvService->importPage($fileToUpload$nameFileToUpload$projet->getId());
  307.         if ($resultImport) {
  308.             $this->flasher->addSuccess('La liste des pages du projet ' $projet ' a été importée avec succès');
  309.         } else {
  310.             $this->flasher->addError('vous avez choisi le mauvais fichier');
  311.         }
  312.         $url $this->adminUrlGenerator
  313.             ->setController(PageCrudController::class)
  314.             ->setAction(Action::INDEX)
  315.             ->set('projet'$projet->getId())
  316.             ->set('nomprojet'$projet)
  317.             ->generateUrl();
  318.         return $this->redirect($url);
  319.     }
  320.     public function preview(AdminContext $context)
  321.     {
  322.         $projet $this->manager->getRepository(Projet::class)->findOneBy(
  323.             ['id' => $this->getUser()->getProjet()->getId()]
  324.         );
  325.         $url $this->adminUrlGenerator
  326.             ->setController(PageCrudController::class)
  327.             ->setAction(Action::INDEX)
  328.             ->set('projet'$projet->getId())
  329.             ->set('nomprojet'$projet)
  330.             ->generateUrl();
  331.         return $this->redirect($url);
  332.     }
  333.     public function ajouterContenu(AdminContext $context)
  334.     {
  335.         $idPage $context->getEntity()->getInstance()->getId();
  336.         $titre $context->getRequest()->get('titre');
  337.         $ordre $context->getRequest()->get('ordre');
  338.         $objet $context->getRequest()->get('objet');
  339.         $paragraph $context->getRequest()->get('paragraph');
  340.         $position $context->getRequest()->get('position');
  341.         // $image = $context->getRequest()->request->get('image');
  342.         $image $context->getRequest()->get('imageContenu');
  343.         $file $context->getRequest()->get('mfileToUpload');
  344.         $createBtn $context->getRequest()->get('checkBtn');
  345.         $page $this->manager->getRepository(Page::class)->findOneBy(['id' => $idPage]);
  346.         $contenu = new PageContenu();
  347.         //$contenu = new PageContenu();
  348.         if ($titre != '') {
  349.             $contenu->setTitre($titre);
  350.         }
  351.         if ($image != '') {
  352.             $contenu->setImage($image);
  353.         }
  354.         if ($ordre != '' && $ordre != 0) {
  355.             $contenu->setOrdre($ordre);
  356.         }
  357.         if ($objet != '' && $objet != 0) {
  358.             $contenu->setObjet($objet);
  359.         }
  360.         if ($paragraph != '') {
  361.             $contenu->setParagraph(str_replace([
  362.                 '<div>''</div>',
  363.                 '<h1>''</h1>',
  364.                 '<h2>''</h2>',
  365.                 '<h3>''</h3>',
  366.                 '<h4>''</h4>',
  367.                 '<h5>''</h5>',
  368.                 '<h6>''</h6>',
  369.                 '<p>''</p>',
  370.                 '<pre>''</pre>',
  371.                 '<blockquote>''</blockquote>'
  372.             ], ""$paragraph));
  373.         }
  374.         if ($position != '') {
  375.             $contenu->setPosition($position);
  376.         } else {
  377.             $contenu->setPosition('Centre');
  378.         }
  379.         if ($createBtn) {
  380.             $btnLabel $context->getRequest()->get('btnLabel');
  381.             $btnType $context->getRequest()->get('btnType');
  382.             $btnValue '';
  383.             if ($btnType == 'Page') {
  384.                 $btnValue $context->getRequest()->get('selectPage');
  385.                 $ctaPage $this->manager->getRepository(Page::class)->findOneBy(['id' => $btnValue]);
  386.                 if ($ctaPage->getPermalink() != '') {
  387.                     $btnValue $ctaPage->getPermalink();
  388.                 } else {
  389.                     $btnValue $ctaPage->getId();
  390.                 }
  391.             } else if ($btnType == 'Article') {
  392.                 $btnValue $context->getRequest()->get('selectArticle');
  393.                 $ctaArticle $this->manager->getRepository(Article::class)->findOneBy(['id' => $btnValue]);
  394.                 if ($ctaArticle->getPermalink() != '') {
  395.                     $btnValue $ctaArticle->getPermalink();
  396.                 } else {
  397.                     $btnValue $ctaArticle->getId();
  398.                 }
  399.             } else if ($btnType == 'Form') {
  400.                 $btnValue $context->getRequest()->get('selectForm');
  401.             } else if ($btnType == 'Lien') {
  402.                 $btnValue $context->getRequest()->get('extrnLink');
  403.             }
  404.             $contenu->setButtonLabel($btnLabel);
  405.             $contenu->setButtonType($btnType);
  406.             $contenu->setButtonValue($btnValue);
  407.         }
  408.         $contenu->setPage($page);
  409.         if ($contenu->getIdImport() == null || $contenu->getIdImport() == '') {
  410.             $contenu->setIdImport(date('Y-m-d-H-i-s') . '-page-contenu-' $contenu->getId() . "-" $contenu->getPage()->getId() . $contenu->getPage()->getProjet()->getId());
  411.         }
  412.         $contenu->setIdImportPage($contenu->getPage()->getIdImport());
  413.         $entityManager $this->manager->getManager();
  414.         $entityManager->persist($contenu);
  415.         $entityManager->flush();
  416.         $url $this->adminUrlGenerator
  417.             ->setController(PageCrudController::class)
  418.             ->setAction(Action::EDIT)
  419.             ->set('tabactive''contenu')
  420.             ->generateUrl();
  421.         return $this->redirect($url);
  422.     }
  423.     public function editContenu(AdminContext $context)
  424.     {
  425.         $idPage $context->getEntity()->getInstance()->getId();
  426.         $idContenu $context->getRequest()->get('contentid');
  427.         $titre $context->getRequest()->get('titre');
  428.         $ordre $context->getRequest()->get('ordre');
  429.         $objet $context->getRequest()->get('objet');
  430.         $paragraph $context->getRequest()->get('paragraph');
  431.         $pos 'position' $idContenu;
  432.         $position $context->getRequest()->get($pos);
  433.         $image $context->getRequest()->get('image');
  434.         $file $context->getRequest()->get('mfileToUpload' $idContenu);
  435.         // var_dump('mfileToUpload' . $file);
  436.         $image $context->getRequest()->get('imageContenu');
  437.         $createBtn $context->getRequest()->get('checkBtn');
  438.         $page $this->manager->getRepository(Page::class)->findOneBy(['id' => $idPage]);
  439.         $contenu $this->manager->getRepository(PageContenu::class)->findOneBy(['id' => $idContenu]);
  440.         //$contenu = new PageContenu();
  441.         if ($titre != '') {
  442.             $contenu->setTitre($titre);
  443.         } else {
  444.             $contenu->setTitre(null);
  445.         }
  446.         if ($ordre != '' && $ordre != 0) {
  447.             $contenu->setOrdre($ordre);
  448.         } else {
  449.             $contenu->setOrdre(null);
  450.         }
  451.         if ($objet != '' && $objet != 0) {
  452.             $contenu->setObjet($objet);
  453.         } else {
  454.             $contenu->setObjet(null);
  455.         }
  456.         if ($paragraph != '') {
  457.             $contenu->setParagraph(str_replace([
  458.                 '<div>''</div>',
  459.                 '<h1>''</h1>',
  460.                 '<h2>''</h2>',
  461.                 '<h3>''</h3>',
  462.                 '<h4>''</h4>',
  463.                 '<h5>''</h5>',
  464.                 '<h6>''</h6>',
  465.                 '<p>''</p>',
  466.                 '<pre>''</pre>',
  467.                 '<blockquote>''</blockquote>'
  468.             ], ""$paragraph));
  469.         } else {
  470.             $contenu->setParagraph(null);
  471.         }
  472.         if ($position != '') {
  473.             $contenu->setPosition($position);
  474.         } else {
  475.             $contenu->setPosition('Centre');
  476.         }
  477.         if ($createBtn) {
  478.             $btnLabel $context->getRequest()->get('btnLabel');
  479.             $btnType $context->getRequest()->get('btnType' $idContenu);
  480.             $btnValue '';
  481.             if ($btnType == 'Page') {
  482.                 
  483.                 $btnValue $context->getRequest()->get('selectPage');
  484.                 $ctaPage $this->manager->getRepository(Page::class)->findOneBy(['id' => $btnValue]);
  485.                 if ($ctaPage->getPermalink() != '') {
  486.                     $btnValue $ctaPage->getPermalink();
  487.                 } else {
  488.                     $btnValue $ctaPage->getId();
  489.                 }
  490.             } else if ($btnType == 'Article') {
  491.                 $btnValue $context->getRequest()->get('selectArticle');
  492.                 $ctaArticle $this->manager->getRepository(Article::class)->findOneBy(['id' => $btnValue]);
  493.                 if ($ctaArticle->getPermalink() != '') {
  494.                     $btnValue $ctaArticle->getPermalink();
  495.                 } else {
  496.                     $btnValue $ctaArticle->getId();
  497.                 }
  498.             } else if ($btnType == 'Form') {
  499.                 $btnValue $context->getRequest()->get('selectForm');
  500.             } else if ($btnType == 'Lien') {
  501.                 $btnValue $context->getRequest()->get('extrnLink');
  502.             }
  503.             $contenu->setButtonLabel($btnLabel);
  504.             $contenu->setButtonType($btnType);
  505.             $contenu->setButtonValue($btnValue);
  506.         } else {
  507.             $contenu->setButtonLabel(null);
  508.             $contenu->setButtonType(null);
  509.             $contenu->setButtonValue(null);
  510.         }
  511.         $contenu->setPage($page);
  512.         if ($contenu->getIdImport() == null || $contenu->getIdImport() == '') {
  513.             $contenu->setIdImport(date('Y-m-d-H-i-s') . '-page-contenu-' $contenu->getId() . "-" $contenu->getPage()->getId() . $contenu->getPage()->getProjet()->getId());
  514.         }
  515.         $contenu->setIdImportPage($contenu->getPage()->getIdImport());
  516.         if ($image != "") {
  517.             /* $time = new \DateTime();
  518.             $day =  $time->format('Y-m-d');
  519.             $hour =  $time->format('H-i-s');
  520.             $path = 'uploads/project/pages-contenu/images/' . $day . "-" . $hour . "-" . $image;
  521.             $contenu->setImage($day . "-" . $hour . "-" . $image);
  522.             file_put_contents($path, file_get_contents($file)); */
  523.             $contenu->setImage($image);
  524.         } else {
  525.             $contenu->setImage(null);
  526.         }
  527.         $entityManager $this->manager->getManager();
  528.         $entityManager->flush();
  529.         $url $this->adminUrlGenerator
  530.             ->setController(PageCrudController::class)
  531.             ->setAction(Action::EDIT)
  532.             ->set('tabactive''contenu')
  533.             ->generateUrl();
  534.         //var_dump($context->getRequest()->get('mfileToUpload' . $idContenu));
  535.         //contentid
  536.         return $this->redirect($url);
  537.     }
  538.     public function supprimerContenu(AdminContext $context)
  539.     {
  540.         $entityManager $this->manager->getManager();
  541.         $idPageContent $context->getRequest()->get('contentId');
  542.         $pageContent $this->manager->getRepository(PageContenu::class)->findOneBy(['id' => $idPageContent]);
  543.         $entityManager->remove($pageContent);
  544.         $entityManager->flush();
  545.         $url $this->adminUrlGenerator
  546.             ->setController(PageCrudController::class)
  547.             ->setAction(Action::EDIT)
  548.             ->generateUrl();
  549.         return $this->redirect($url);
  550.     }
  551. }