<?php
namespace App\Controller;
use App\Controller\SecurityController;
Use App\Controller\FonctionsController;
use App\Entity\ModUser;
use App\Repository\ModUserRepository;
use App\Entity\ModImage;
use App\Repository\ModImageRepository;
use App\Entity\ModIdentite;
use App\Repository\ModIdentiteRepository;
use App\Entity\ModCharte;
use App\Repository\ModCharteRepository;
use App\Entity\ModPage;
use App\Repository\ModPageRepository;
use App\Entity\TypeImg;
use App\Repository\TypeImgRepository;
use App\Entity\ModElemDiv;
use App\Repository\ModElemDivRepository;
use App\Entity\ModElemDivType;
use App\Repository\ModElemDivTypeRepository;
use App\Entity\ModDiv;
use App\Repository\ModDivRepository;
use App\Entity\ModDivCol;
use App\Repository\ModDivColRepository;
use App\Entity\VarElement;
use App\Repository\VarElementRepository;
use App\Entity\VarImg;
use App\Repository\VarImgRepository;
use App\Entity\VarUrl;
use App\Repository\VarUrlRepository;
use App\Entity\VarModPage;
use App\Repository\VarModPageRepository;
use App\Entity\VarVarchar;
use App\Repository\VarVarcharRepository;
use App\Entity\VarTexte;
use App\Repository\VarTexteRepository;
use App\Form\ModElemDivFormType;
use App\Form\ModElemDivFormClass;
use App\Form\ModDivType;
use App\Form\ModDivColType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\RadioType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Validator\Constraints\File;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\RangeType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\RedirectResponse;
class ZFrontController extends AbstractController
{
public $from = "admin@webgiciel.com";
public $nomSite = "blog.webgiciel.com";
public $pathStats = "docs/Stats/";
public function __construct(ModElemDivTypeRepository $modElemDivTypeRep, VarTexteRepository $varTexteRep, VarVarcharRepository $varVarcharRep, VarElementRepository $varElementRep, VarModPageRepository $varModPageRep, VarUrlRepository $varUrlRep, VarImgRepository $varImgRep, ModDivColRepository $modDivColRep, ModElemDivRepository $modElemDivRep, ModDivRepository $modDivRep, TypeImgRepository $typeImgRep, ModPageRepository $modPageRep, ModCharteRepository $modCharteRep, ModIdentiteRepository $modIdentiteRep, ModImageRepository $modImgRep, ModUserRepository $modUserRep, EntityManagerInterface $em, FonctionsController $fnWebsite, SecurityController $secur)
{
$this->varTexteRep = $varTexteRep;
$this->varVarcharRep = $varVarcharRep;
$this->varElementRep = $varElementRep;
$this->varModPageRep = $varModPageRep;
$this->varUrlRep = $varUrlRep;
$this->varImgRep = $varImgRep;
$this->modDivColRep = $modDivColRep;
$this->modDivRep = $modDivRep;
$this->modElemDivRep = $modElemDivRep;
$this->modElemDivTypeRep = $modElemDivTypeRep;
$this->typeImgRep = $typeImgRep;
$this->modPageRep = $modPageRep;
$this->modCharteRep = $modCharteRep;
$this->modIdentiteRep = $modIdentiteRep;
$this->modImgRep = $modImgRep;
$this->modUserRep = $modUserRep;
$this->fnWebsite = $fnWebsite;
$this->em = $em;
$this->courcircuit = $secur->ifBanniUser();
if($this->courcircuit==""){
$this->courcircuit = $secur->ifNoAdmin();
}
}
// fonctions d'affichage des pages ---------------------------------------------------------------------------
/**
* @Route("/", name="front_index")
*/
public function front_index(TokenStorageInterface $tokenStorage, SecurityController $secur, Request $request): Response
{
// page d'accueil du site
// test si banni ou premier user
if($this->courcircuit!=""){
return $this->redirectToRoute($this->courcircuit);
}
// recupération du user s'il existe
$user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
// recupère l'identité du site
$idSite = $this->modIdentiteRep->find(1);
if ( !isset($idSite) ){
$idSite = new ModIdentite();
$idCharte = $this->modCharteRep->find(1);
if ( !isset($idCharte) ){
$idCharte = $this->initFirstCharte();
}
$idSite->setNom($_ENV['NOM_SITE']);
$idSite->setCharte($idCharte);
$idSite->setDomaine($_ENV['NOM_SITE']);
$idSite->setLogo("");
}
// recup page start (quel que soit l'etat)
$pageStart = $this->modPageRep->findFirstPageForAdmin();
// recup page start (avec un etat de 1)
$page = $this->modPageRep->findFirstPage();
// si une page start existe
if (count($pageStart) > 0)
{
// si la page est active
if($pageStart[0]->getEtat() == 1){
// gestion du contenu
// init les cases
$mesCases = [];
// recupère les elements de la page
$pageElems = $pageStart[0]->getModPageElements();
// boucle pour chaque div
foreach ($pageElems as &$pageElem) {
$myElem = $pageElem->getElement();
$tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
array_push($mesCases, $tabElem);
}
/*
// recupère les divs de la page
//$divs = $pageStart[0]->getModDivs();
// boucle pour chaque div
foreach ($divs as &$div) {
// recupere les colonnes de la div
$cols = $div->getModDivCols();
// boucle pour chaque colonne
foreach ($cols as &$col) {
// recupere les cases de la colonne
$cases = $col->getContCases();
// boucle pour chaque case
foreach ($cases as &$case) {
// remplace les variables
//$code = $case->getElement()->getCode();
$code = $this->remplaceVariables($case);
// rempli le tableau
array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
}
}
}
*/
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_index");
// affiche la page d accueil
return $this->render('front/index.html.twig', [
'controller_name' => $page[0]->getSlugcourt(),
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $page[0],
//'elements' => $page[0]->getModPageElements(),
'mesCases' => $mesCases,
]);
}
// sinon la page est inactive
else{
// si le visiteur est visiteur
if ($user == null){
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_construction");
// affiche en construction
return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => 'front_construction',
'user' => $user,
'idSite' => $idSite,
]);
}
// si le visiteur est un admin
else{
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_index_construction");
// affiche la page index en mode construction
return $this->render('/front/index.html.twig', [
'controller_name' => 'front_index_construction',
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $pageStart[0],
]);
}
}
}
// sinon il n'y a pas de page start
else{
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_construction");
// si le visiteur est visiteur
if ($user == null){
// affiche en construction
return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => 'front_construction',
'user' => $user,
'idSite' => $idSite,
]);
}
// si le visiteur est un admin
else{
return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => 'front_construction',
'user' => $user,
'idSite' => $idSite,
'login' => 'login',
]);
}
}
}
/**
* @Route("/{slug}", name="front_indexSlug")
*/
public function front_indexSlug($slug, TokenStorageInterface $tokenStorage, SecurityController $secur): Response
{
// test si banni ou premier user
if($this->courcircuit!=""){
return $this->redirectToRoute($this->courcircuit);
}
// recupération du user s'il existe
$user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
// recupère l'identité du site
$idSite = $this->modIdentiteRep->find(1);
// recup page start
$pageStart = $this->modPageRep->findFirstPageForAdmin();
// interroge la page du slug
$page = $this->modPageRep->findPageSlug("/".$slug);
/*
// recup les ModElemDivType
$allElemDivType = $this->modElemDivTypeRep->findAll();
*/
// si il existe une page du slug
if (count($page) > 0)
{
// si la page est active
if($page[0]->getEtat() == 1){
// gestion du contenu
// init les cases
$mesCases = [];
// recupère les elements de la page
$pageElems = $page[0]->getModPageElements();
// boucle pour chaque div
foreach ($pageElems as &$pageElem) {
$myElem = $pageElem->getElement();
$tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
array_push($mesCases, $tabElem);
}
/*
// recupère les divs de la page
$divs = $page[0]->getModDivs();
// boucle pour chaque div
foreach ($divs as &$div) {
// recupere les colonnes de la div
$cols = $div->getModDivCols();
// boucle pour chaque colonne
foreach ($cols as &$col) {
// recupere les cases de la colonne
$cases = $col->getContCases();
// boucle pour chaque case
foreach ($cases as &$case) {
// remplace les variables
//$code = $case->getElement()->getCode();
$code = $this->remplaceVariables($case);
//$code = $this->remplaceVariables($case);
// rempli le tableau
array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
}
}
}
*/
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_".$slug);
// affiche la page d accueil
return $this->render('front/index.html.twig', [
'controller_name' => $page[0]->getSlugcourt(),
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $page[0],
//'elements' => $page[0]->getModPageElements(),
'mesCases' => $mesCases,
//'allElemDivType' => $allElemDivType,
]);
}
// sinon la page est inactive
else{
// si le visiteur est visiteur
if ($user == null){
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_construction ".$slug);
// affiche en construction
return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => 'front_construction',
'user' => $user,
'idSite' => $idSite,
]);
}
// si le visiteur est un admin
else{
// init les cases
$mesElemDiv = [];
// recupère les elemDivs de la page
$elemDivs = $page[0]->getModElemDivs();
// init les cases
$mesCases = [];
// recupère les elements de la page
$pageElems = $page[0]->getModPageElements();
// boucle pour chaque div
foreach ($pageElems as &$pageElem) {
$myElem = $pageElem->getElement();
$tabElem = [$pageElem->getOrdre(), $myElem->getCode(), $myElem->getUrl(), $myElem->getCodeJS()];
array_push($mesCases, $tabElem);
}
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_construction admin ".$slug);
// affiche la page index en mode construction
return $this->render('front/index.html.twig', [
//return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => $page[0]->getSlugcourt(),
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $page[0],
'mesCases' => $mesCases,
//'allElemDivType' => $allElemDivType,
]);
}
}
// // affiche la page d accueil
// return $this->render('front/index.html.twig', [
// 'controller_name' => $page[0]->getSlugcourt(),
// 'user' => $user,
// 'idSite' => $idSite,
// 'page' => $page[0],
// 'pageStart' => $pageStart[0],
// ]);
}
// sinon il n'y a pas de page d'accueil
else{
// enregistre la visite de la page
$this->fnWebsite->visiteCompteur("front_erreur404 ".$slug);
// affiche en construction
return $this->render($idSite->getCharte()->getChemin().'/404.html.twig', [
'controller_name' => 'front_erreur404',
'user' => $user,
'idSite' => $idSite,
]);
}
}
/**
* @Route("/p/{doss}/{slug}", name="front_indexSlugParent")
*/
public function front_indexSlugParent($doss, $slug, TokenStorageInterface $tokenStorage, SecurityController $secur): Response
{
// test si banni ou premier user
if($this->courcircuit!=""){
return $this->redirectToRoute($this->courcircuit);
}
// recupération du user s'il existe
$user = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null;
// recupère l'identité du site
$idSite = $this->modIdentiteRep->find(1);
// recup page start
$pageStart = $this->modPageRep->findFirstPageForAdmin();
// interroge le slug
$page = $this->modPageRep->findPageSlug("/".$slug);
if (count($page) > 0)
{
// si la page est active
if($page[0]->getEtat() == 1){
// gestion du contenu
// init les cases
$mesCases = [];
// recupère les divs de la page
$divs = $page[0]->getModDivs();
// boucle pour chaque div
foreach ($divs as &$div) {
// recupere les colonnes de la div
$cols = $div->getModDivCols();
// boucle pour chaque colonne
foreach ($cols as &$col) {
// recupere les cases de la colonne
$cases = $col->getContCases();
// boucle pour chaque case
foreach ($cases as &$case) {
// remplace les variables
$code = $this->remplaceVariables($case);
// rempli le tableau
array_push($mesCases, [$case->getId(), $case->getElement()->getId(), $code]);
}
}
}
// affiche la page d accueil
return $this->render('front/index.html.twig', [
'controller_name' => $page[0]->getSlugcourt(),
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $page[0],
'elements' => $page[0]->getModPageElements(),
'mesCases' => $mesCases,
]);
}
// sinon la page est inactive
else{
// si le visiteur est visiteur
if ($user == null){
// affiche en construction
return $this->render($idSite->getCharte()->getChemin().'/construction.html.twig', [
'controller_name' => 'front_construction',
'user' => $user,
'idSite' => $idSite,
]);
}
// si le visiteur est un admin
else{
// affiche la page index en mode construction
return $this->render('/front/index.html.twig', [
'controller_name' => 'front_index_construction',
'user' => $user,
'idSite' => $idSite,
'pageStart' => $pageStart[0],
'page' => $pageStart[0],
]);
}
}
}
// sinon il n'y a pas de page d'accueil
else{
}
}
// fonctions globales ---------------------------------------------------------------------------
public function remplaceVariables($case){
$code = $case->getElement()->getCode();
$code = $this->remplaceElement($case, $case->getElement(), $code);
$code = $this->remplaceUrl($case, $case->getElement(), $code, 0);
$code = $this->remplaceImg($case, $case->getElement(), $code, 0);
$code = $this->remplaceModPage($case, $case->getElement(), $code);
$code = $this->remplaceVarchar($case, $case->getElement(), $code, 0);
$code = $this->remplaceTexte($case, $case->getElement(), $code, 0);
return $code;
}
public function remplaceVariablesElements($case, $element, $varelement, $code){
$code = $varelement->getVarElement()->getCode();
$code = $this->remplaceElement($case, $varelement, $code);
$code = $this->remplaceUrl($case, $varelement, $code, 1);
$code = $this->remplaceImg($case, $varelement, $code, 1);
//$code = $this->remplaceModPage($case->getContCase(), $case->getVarElement(), $code);
$code = $this->remplaceVarchar($case, $varelement, $code, 1);
$code = $this->remplaceTexte($case, $varelement, $code, 1);
return $code;
}
public function remplaceElement($case, $element, $code){
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [ELEMENT] present dans le code
$nbrElement = substr_count($code, '[ELEMENT]');
// 3. boucle pour chaque occurence
for ($i=0; $i<$nbrElement; $i++){
// recupère les elements de la base
$varelements = $this->varElementRep->findElements($case, $element);
$contenu = '';
$codeElement = '';
// recup premier resultat
for ($i=0; $i<count($varelements); $i++){
// recupèle l'élément a ajouter dans l element
$varelement = $varelements[$i];
// formatte le code à ajouter dans la page
$contenu .= $varelement->getVarElement()->getCode();
// remplace les variables de l'élément
$codeElement .= $this->remplaceVariablesElements($case, $element, $varelement, $contenu);
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[ELEMENT]', $codeElement);
// // incremente ordre
// $ordre++;
}
return $code;
}
public function remplaceUrl($case, $element, $code, $base){
if ($base == 0){
$monElement = $element;
$monOrdre = "";
}
else{
$monElement = $element->getVarElement();
$monOrdre = $element->getOrdre();
}
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [IMG] present dans le code
$nbrUrl = substr_count($code, '[URL]');
// 3. boucle pour chaque occurence
for ($i=1; $i<=$nbrUrl; $i++){
if ($monOrdre == ""){
$monOrdre = $i;
}
// recupère l image de la base
$urls = $this->varUrlRep->findUrl($case, $monElement, $monOrdre);
if (count($urls) == 0 ){
$codeUrl = "!!URL!!";
}
else{
// recup premier resultat
$url = $urls[0];
// init code image
$codeUrl = $url->getUrl();
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[URL]', $codeUrl);
// incremente ordre
$ordre++;
}
return $code;
}
public function remplaceImg($case, $element, $code, $base){
if ($base == 0){
$monElement = $element;
$monOrdre = "";
}
else{
$monElement = $element->getVarElement();
$monOrdre = $element->getOrdre();
}
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [IMG] present dans le code
$nbrImg = substr_count($code, '[IMG]');
// 3. boucle pour chaque occurence
for ($i=1; $i<=$nbrImg; $i++){
if ($monOrdre == ""){
$monOrdre = $i;
}
// recupère l image de la base
$imgs = $this->varImgRep->findImage($case, $monElement, $monOrdre);
if (count($imgs) == 0 ){
$codeImage = "!!IMG!!";
}
else{
// recup premier resultat
$img = $imgs[0];
// init code image
$codeImage = '<img src="'.$img->getUrl().'" alt="'.$img->getAlt().'"';
if ( $img->getClass() !== null && $img->getClass() !="" ){
$codeImage .= ' class="'.$img->getClass().'"';
}
if ( $img->getStyle() !== null && $img->getStyle() !="" ){
$codeImage .= ' style="'.$img->getStyle().'"';
}
if ( $img->getWidth() !== null && $img->getWidth() !=0 ){
$codeImage .= ' width="'.$img->getWidth().'"';
}
if ( $img->getHeight() !== null && $img->getHeight() !=0 ){
$codeImage .= ' height="'.$img->getHeight().'"';
}
$codeImage .= ' >';
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[IMG]', $codeImage);
// incremente ordre
$ordre++;
}
return $code;
}
public function remplaceModPage($case, $element, $code){
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [MODPAGE] present dans le code
$nbrModPage = substr_count($code, '[MODPAGE]');
$currentUrl = $_SERVER['REQUEST_URI'];
// 3. boucle pour chaque occurence de [MODPAGE]
for ($i=0; $i<$nbrModPage; $i++){
// recupère les infos de la base
$pages = $this->varModPageRep->findModPage($case, $element, $ordre);
// recup premier resultat
$page = $pages[0];
// init code modPage
if ($_SERVER['REQUEST_URI'] == "/"){ $active = ' active'; } else{ $active = ''; }
$codeModPage = '<a href="'.$page->getModPage()->getUrl().'" class="nav-item nav-link'.$active.'" >';
$codeModPage .= $page->getModPage()->getNomcourt();
$codeModPage .= '</a>';
$pagesEnfant = $page->getModPage()->getEnfant();
for ($j=1; $j<=count($pagesEnfant); $j++){
foreach ($pagesEnfant as &$enfant) {
if ($enfant->getOrdre() == $j){
// si l'enfant a des enfants
if (count($enfant->getEnfant()) > 0){
if ($enfant->getSlug() == $_SERVER['REQUEST_URI']){
$active = ' active';
}
else{
$active = '';
}
$codeModPage .= '<div class="nav-item dropdown">';
$codeModPage .= '<a href="'.$enfant->getUrl().'" class="nav-link dropdown-toggle '.$active.' data-bs-toggle="dropdown"">';
$codeModPage .= $enfant->getNomcourt();
$codeModPage .= '</a>';
$codeModPage .= '<div class="dropdown-menu fade-up m-0">';
$pagesSousEnfant = $enfant->getEnfant();
for ($k=1; $k<=count($pagesSousEnfant); $k++){
foreach ($pagesSousEnfant as &$sousEnfant) {
if ($sousEnfant->getOrdre() == $k){
$codeModPage .= '<a href="'.$sousEnfant->getUrl().'" class="dropdown-item">'.$sousEnfant->getNomcourt().'</a>';
}
}
}
$codeModPage .= '</div>';
$codeModPage .= '</div>';
}
// sinon
else{
if ($enfant->getSlug() == $_SERVER['REQUEST_URI']){
$active = ' active';
}
else{
$active = '';
}
$codeModPage .= '<a href="'.$enfant->getUrl().'" class="nav-item nav-link'.$active.'" >';
$codeModPage .= $enfant->getNomcourt();
$codeModPage .= '</a>';
}
}
}
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[MODPAGE]', $codeModPage);
// incremente ordre
$ordre++;
}
return $code;
}
public function remplaceVarchar($case, $element, $code, $base){
if ($base == 0){
$monElement = $element;
$monOrdre = "";
}
else{
$monElement = $element->getVarElement();
$monOrdre = $element->getOrdre();
}
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [IMG] present dans le code
$nbrVarchar = substr_count($code, '[VARCHAR]');
// 3. boucle pour chaque occurence
for ($i=1; $i<=$nbrVarchar; $i++){
if ($monOrdre == ""){
}
$monOrdre = $i;
if ($base == 0){
// recupère l image de la base
$contenus = $this->varVarcharRep->findVarchar($case, $monElement, $monOrdre);
}
else{
// recupère l image de la base
$contenus = $this->varVarcharRep->findVarcharElement($case, $monElement, $monOrdre, $i);
}
if (count($contenus) == 0 ){
$codeVarchar = "!!vide!!";
}
else{
// recup premier resultat
$contenu = $contenus[0];
// init code varchar
$codeVarchar = $contenu->getContenu();
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[VARCHAR]', $codeVarchar);
// incremente ordre
$ordre++;
}
return $code;
}
public function remplaceTexte($case, $element, $code, $base){
if ($base == 0){
$monElement = $element;
$monOrdre = "";
}
else{
$monElement = $element->getVarElement();
$monOrdre = $element->getOrdre();
}
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [IMG] present dans le code
$nbrTexte = substr_count($code, '[TEXTE]');
// 3. boucle pour chaque occurence
for ($i=1; $i<=$nbrTexte; $i++){
if ($monOrdre == ""){
}
$monOrdre = $i;
if ($base == 0){
// recupère l image de la base
$contenus = $this->varTexteRep->findTexte($case, $monElement, $monOrdre);
}
else{
// recupère l image de la base
$contenus = $this->varTexteRep->findTexteElement($case, $monElement, $monOrdre, $i);
}
if (count($contenus) == 0 ){
$codeTexte = "!!vide!!";
}
else{
// recup premier resultat
$contenu = $contenus[0];
// init code varchar
$codeTexte = $contenu->getTexte();
}
// remplacer la premiere occurence
$code = $this->left_replace($code, '[TEXTE]', $codeTexte);
// incremente ordre
$ordre++;
}
return $code;
}
public function remplaceImgElement($case, $varelement, $code){
// 1 init ordre
$ordre = 1;
// 2. compte le nombre de [IMG] present dans le code
$nbrImg = substr_count($code, '[IMG]');
// 3. boucle pour chaque occurence
for ($i=1; $i<=$nbrImg; $i++){
// recupère l image de la base
$imgs = $this->varImgRep->findImage($case, $varelement->getVarElement(), $varelement->getOrdre());
// recup premier resultat
$img = $imgs[0];
// init code image
$codeImage = '<img src="'.$img->getUrl().'" alt="'.$img->getAlt().'"';
if ( $img->getWidth() !== null && $img->getWidth() !=0 ){
$codeImage .= ' width="'.$img->getWidth().'"';
}
if ( $img->getHeight() !== null && $img->getHeight() !=0 ){
$codeImage .= ' height="'.$img->getHeight().'"';
}
$codeImage .= ' >';
// remplacer la premiere occurence
$code = $this->left_replace($code, '[IMG]', $codeImage);
// incremente ordre
$ordre++;
}
return $code;
}
public function left_replace($text, $find, $replace)
{
return implode($replace, explode($find, $text, 2));
}
// form ---------------------------------------------------------------------------
public function formNewDiv($task){
$form = $this->createFormBuilder($task)
->add('container', ChoiceType::class, [
'choices' => [
'container' => 1,
'container-fluid' => 2,
],
'multiple'=>false,
'expanded'=>true,
'label' => 'Type de container',
])
->add('hauteur', RangeType::class, [
'label' => 'Choisissez la hauteur de la div : ',
'attr' => [
'min' => 0,
'max' => 950,
'step' => 1,
],
])
->add('modDivCols', EntityType::class, [
'class' => ModDivCol::class,
'choice_label' => 'id',
'multiple' => true,
'expanded' => true,
])
->getForm();
/*
$form = '
<input class="form-control" type="file" id="fileInput">
<div id="preview"></div>
';
*/
return $form;
}
// ajax ModElemDiv ---------------------------------------------------------------------------
/**
* @Route("/afficheFormNewElemDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewElemDiv")
*/
public function front_afficheFormNewElemDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere idPage
$idPage = $_POST["idPage"];
// on recupere l'objet identiteSite
if (1 == 1){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// verifie les elements
$mesElemsType = $this->modElemDivTypeRep->findAll();
if( count($mesElemsType) == 0 ){
$this->initElemsType();
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// formatte le titre du modal
$htmlH1 = "Ajouter un élément sur la page <br>« ".$page->getNom()." »";
// nouvel objet Div
$newElemDiv = new ModElemDiv();
// on place le formulaire
$form = $this->createForm(ModElemDivFormType::class, $newElemDiv);
$form->handleRequest($request);
// affiche la page secur_firstUser
$html = $this->render('front/form/formNewElemDiv.html.twig', [
'form' => $form->createView(),
'idPage' => $idPage,
'htmlH1' => $htmlH1,
]);
// on place le formulaire
$form2 = $this->createForm(ModElemDivFormClass::class);
$form2->handleRequest($request);
// affiche le code html du formulaire
$html2 = $this->render('front/form/formNewElemDivClass.html.twig', [
'form2' => $form2->createView(),
'idPage' => $idPage,
]);
//
return $this->json([
'html' => $html,
'html2' => $html2,
'htmlH1' => $htmlH1,
'idPage' => $idPage,
'idElemDiv' => "",
]);
}
/**
* @Route("/enregistreFormNewElemDiv/gfd53g5fdgfd53fdg53g", name="front_enregistreFormNewElemDiv")
*/
public function front_enregistreFormNewElemDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere data
$idPage = $_POST["page"];
$idElemDiv = $_POST["elemDiv"];
$type = $_POST["type"];
$container = $_POST["container"];
$row = $_POST["row"];
$tabCol = $_POST["tabCol"];
$perso = $_POST["perso"];
$complement = $_POST["complement"];
$style = $_POST["style"];
// init données page
$page = $this->modPageRep->find($idPage);
// init données elemDiv
if ($idElemDiv != ""){
$elemDivAttach = $this->modElemDivRep->find($idElemDiv);
}
else{
$elemDivAttach = null;
}
// init données ordre
$allElemDiv = $this->modElemDivRep->findAllElemDivParPage($page);
$ordre = count($allElemDiv) + 1;
// init données class
$class = "";
if ($container != ""){
if ($container == 0){
$class = "container ";
}
else{
$class = "container-fluid ";
}
}
else if ($row != ""){
$class = "row ";
}
else if ($tabCol != ""){
$col = explode(",", $tabCol);
if ($col[0] != ""){
$class .= "col-".$col[0]." ";
}
if ($col[1] != ""){
$class .= "col-sm-".$col[1]." ";
}
if ($col[2] != ""){
$class .= "col-md-".$col[2]." ";
}
if ($col[3] != ""){
$class .= "col-lg-".$col[3]." ";
}
if ($col[4] != ""){
$class .= "col-xl-".$col[4]." ";
}
if ($col[5] != ""){
$class .= "col-xxl-".$col[5]." ";
}
}
else if ($perso != ""){
$class = $perso." ";
}
if ($complement != ""){
$class .= $complement." ";
}
// init données styles
$style = $style;
// init données type
$type = $this->modElemDivTypeRep->find($type);
// création de l'element elemDiv
$elemDiv = new ModElemDiv();
// renseigne l objet
$elemDiv->setPage($page);
$elemDiv->setElemDiv($elemDivAttach);
$elemDiv->setOrdre($ordre);
$elemDiv->setClass($class);
$elemDiv->setStyles($style);
$elemDiv->setType($type);
// enregistrement dans la base
$this->em->persist($elemDiv);
$this->em->flush();
// renvoi success
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/enregistreFormModifElemDiv/gfd53g5fdgfd53fdg53g", name="front_enregistreFormModifElemDiv")
*/
public function front_enregistreFormModifElemDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere data
$idPage = $_POST["page"];
$idElemDiv = $_POST["elemDiv"];
$type = $_POST["type"];
$container = $_POST["container"];
$row = $_POST["row"];
$tabCol = $_POST["tabCol"];
$perso = $_POST["perso"];
$complement = $_POST["complement"];
$style = $_POST["style"];
$idElemDiv = $_POST["idElemDiv"];
// init données page
$page = $this->modPageRep->find($idPage);
// init données elemDiv
if ($idElemDiv != ""){
$elemDivAttach = $this->modElemDivRep->find($idElemDiv);
}
else{
$elemDivAttach = null;
}
// init données ordre
// $allElemDiv = $this->modElemDivRep->findAllElemDivParPage($page);
// $ordre = count($allElemDiv) + 1;
// init données class
$class = "";
if ($container != ""){
if ($container == 0){
$class = "container ";
}
else{
$class = "container-fluid ";
}
}
else if ($row != ""){
$class = "row ";
}
else if ($tabCol != ""){
$col = explode(",", $tabCol);
if ($col[0] != ""){
$class .= "col-".$col[0]." ";
}
if ($col[1] != ""){
$class .= "col-sm-".$col[1]." ";
}
if ($col[2] != ""){
$class .= "col-md-".$col[2]." ";
}
if ($col[3] != ""){
$class .= "col-lg-".$col[3]." ";
}
if ($col[4] != ""){
$class .= "col-xl-".$col[4]." ";
}
if ($col[5] != ""){
$class .= "col-xxl-".$col[5]." ";
}
}
else if ($perso != ""){
$class = $perso." ";
}
if ($complement != ""){
$class .= $complement." ";
}
// init données styles
$style = $style;
// init données type
$type = $this->modElemDivTypeRep->find($type);
// création de l'element elemDiv
$elemDiv = $this->modElemDivRep->find($idElemDiv);
// renseigne l objet
$elemDiv->setPage($page);
$elemDiv->setElemDiv($elemDivAttach);
// $elemDiv->setOrdre($ordre);
$elemDiv->setClass($class);
$elemDiv->setStyles($style);
$elemDiv->setType($type);
// enregistrement dans la base
$this->em->persist($elemDiv);
$this->em->flush();
// renvoi success
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/afficheFormModifElemDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormModifElemDiv")
*/
public function front_afficheFormModifElemDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idElem = $_POST["idElem"];
// on recupere l'objet identiteSite
if ("site" == "site"){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$elemDiv = $this->modElemDivRep->find($idElem);
// formatte le titre
$htmlH1 = "Modifier la div ".$elemDiv->getId()." sur la page <br>« ".$page->getNom()." »";
// on place le formulaire
$form = $this->createForm(ModElemDivFormType::class, $elemDiv);
$form->handleRequest($request);
// affiche la page secur_firstUser
$html = $this->render('front/form/formNewElemDiv.html.twig', [
'form' => $form->createView(),
'idPage' => $idPage,
'htmlH1' => $htmlH1,
]);
// Créez le formulaire
$form2 = $this->createForm(ModElemDivFormClass::class);
// recupère les données de l'object
$tabClass = explode(" ", $elemDiv->getClass());
// gestion de container
$container = null;
foreach ($tabClass as $val) {
if ($val == "container-fluid"){
$container = 2;
}
elseif ($val == "container"){
$container = 1;
}
}
// gestion de xs
$xs = null;
foreach ($tabClass as $val) {
if ($val == "col-1"){
$xs = 1;
}
elseif ($val == "col-2"){
$xs = 2;
}
elseif ($val == "col-3"){
$xs = 3;
}
elseif ($val == "col-4"){
$xs = 4;
}
elseif ($val == "col-5"){
$xs = 5;
}
elseif ($val == "col-6"){
$xs = 6;
}
elseif ($val == "col-7"){
$xs = 7;
}
elseif ($val == "col-8"){
$xs = 8;
}
elseif ($val == "col-9"){
$xs = 9;
}
elseif ($val == "col-10"){
$xs = 10;
}
elseif ($val == "col-11"){
$xs = 11;
}
elseif ($val == "col-12"){
$xs = 12;
}
}
// gestion de sm
$sm = null;
foreach ($tabClass as $val) {
if ($val == "col-sm-1"){
$sm = 1;
}
elseif ($val == "col-sm-2"){
$sm = 2;
}
elseif ($val == "col-sm-3"){
$sm = 3;
}
elseif ($val == "col-sm-4"){
$sm = 4;
}
elseif ($val == "col-sm-5"){
$sm = 5;
}
elseif ($val == "col-sm-6"){
$sm = 6;
}
elseif ($val == "col-sm-7"){
$sm = 7;
}
elseif ($val == "col-sm-8"){
$sm = 8;
}
elseif ($val == "col-sm-9"){
$sm = 9;
}
elseif ($val == "col-sm-10"){
$sm = 10;
}
elseif ($val == "col-sm-11"){
$sm = 11;
}
elseif ($val == "col-sm-12"){
$sm = 12;
}
}
// gestion de md
$md = null;
foreach ($tabClass as $val) {
if ($val == "col-md-1"){
$md = 1;
}
elseif ($val == "col-md-2"){
$md = 2;
}
elseif ($val == "col-md-3"){
$md = 3;
}
elseif ($val == "col-md-4"){
$md = 4;
}
elseif ($val == "col-md-5"){
$md = 5;
}
elseif ($val == "col-md-6"){
$md = 6;
}
elseif ($val == "col-md-7"){
$md = 7;
}
elseif ($val == "col-md-8"){
$md = 8;
}
elseif ($val == "col-md-9"){
$md = 9;
}
elseif ($val == "col-md-10"){
$md = 10;
}
elseif ($val == "col-md-11"){
$md = 11;
}
elseif ($val == "col-md-12"){
$md = 12;
}
}
// gestion de lg
$lg = null;
foreach ($tabClass as $val) {
if ($val == "col-lg-1"){
$lg = 1;
}
elseif ($val == "col-lg-2"){
$lg = 2;
}
elseif ($val == "col-lg-3"){
$lg = 3;
}
elseif ($val == "col-lg-4"){
$lg = 4;
}
elseif ($val == "col-lg-5"){
$lg = 5;
}
elseif ($val == "col-lg-6"){
$lg = 6;
}
elseif ($val == "col-lg-7"){
$lg = 7;
}
elseif ($val == "col-lg-8"){
$lg = 8;
}
elseif ($val == "col-lg-9"){
$lg = 9;
}
elseif ($val == "col-lg-10"){
$lg = 10;
}
elseif ($val == "col-lg-11"){
$lg = 11;
}
elseif ($val == "col-lg-12"){
$lg = 12;
}
}
$xl = null;
foreach ($tabClass as $val) {
if ($val == "col-xl-1"){
$xl = 1;
}
elseif ($val == "col-xl-2"){
$xl = 2;
}
elseif ($val == "col-xl-3"){
$xl = 3;
}
elseif ($val == "col-xl-4"){
$xl = 4;
}
elseif ($val == "col-xl-5"){
$xl = 5;
}
elseif ($val == "col-xl-6"){
$xl = 6;
}
elseif ($val == "col-xl-7"){
$xl = 7;
}
elseif ($val == "col-xl-8"){
$xl = 8;
}
elseif ($val == "col-xl-9"){
$xl = 9;
}
elseif ($val == "col-xl-10"){
$xl = 10;
}
elseif ($val == "col-xl-11"){
$xl = 11;
}
elseif ($val == "col-xl-12"){
$xl = 12;
}
}
$xxl = null;
foreach ($tabClass as $val) {
if ($val == "col-xxl-1"){
$xxl = 1;
}
elseif ($val == "col-xxl-2"){
$xxl = 2;
}
elseif ($val == "col-xxxll-3"){
$xxl = 3;
}
elseif ($val == "col-xxl-4"){
$xxl = 4;
}
elseif ($val == "col-xxl-5"){
$xxl = 5;
}
elseif ($val == "col-xxl-6"){
$xxl = 6;
}
elseif ($val == "col-xxl-7"){
$xxl = 7;
}
elseif ($val == "col-xxl-8"){
$xxl = 8;
}
elseif ($val == "col-xxl-9"){
$xxl = 9;
}
elseif ($val == "col-xxl-10"){
$xxl = 10;
}
elseif ($val == "col-xxl-11"){
$xxl = 11;
}
elseif ($val == "col-xxl-12"){
$xxl = 12;
}
}
$row = null;
foreach ($tabClass as $val) {
if ($val == "row"){
$row = 1;
}
}
$perso = null;
if ($container == null && $xs == null && $sm == null && $md == null && $lg == null && $xl == null && $xxl == null && $row == null ){
foreach ($tabClass as $val) {
$perso .= $val." ";
}
}
$complement = null;
foreach ($tabClass as $val) {
if ( $val != 'container' && $val != 'container-fluid' && $val != 'row' && $val != 'col-1' && $val != 'col-2' && $val != 'col-3' && $val != 'col-4' && $val != 'col-5' && $val != 'col-6' && $val != 'col-7' && $val != 'col-8' && $val != 'col-9' && $val != 'col-10' && $val != 'col-11' && $val != 'col-12' && $val != 'col-sm-1' && $val != 'col-sm-2' && $val != 'col-sm-3' && $val != 'col-sm-4' && $val != 'col-sm-5' && $val != 'col-sm-6' && $val != 'col-sm-7' && $val != 'col-sm-8' && $val != 'col-sm-9' && $val != 'col-sm-10' && $val != 'col-sm-11' && $val != 'col-sm-12' && $val != 'col-md-1' && $val != 'col-md-2' && $val != 'col-md-3' && $val != 'col-md-4' && $val != 'col-md-5' && $val != 'col-md-6' && $val != 'col-md-7' && $val != 'col-md-8' && $val != 'col-md-9' && $val != 'col-md-10' && $val != 'col-md-11' && $val != 'col-md-12' && $val != 'col-lg-1' && $val != 'col-lg-2' && $val != 'col-lg-3' && $val != 'col-lg-4' && $val != 'col-lg-5' && $val != 'col-lg-6' && $val != 'col-lg-7' && $val != 'col-lg-8' && $val != 'col-lg-9' && $val != 'col-lg-10' && $val != 'col-lg-11' && $val != 'col-lg-12' && $val != 'col-xl-1' && $val != 'col-xl-2' && $val != 'col-xl-3' && $val != 'col-xl-4' && $val != 'col-xl-5' && $val != 'col-xl-6' && $val != 'col-xl-7' && $val != 'col-xl-8' && $val != 'col-xl-9' && $val != 'col-xl-10' && $val != 'col-xl-11' && $val != 'col-xl-12' && $val != 'col-xxl-1' && $val != 'col-xxl-2' && $val != 'col-xxl-3' && $val != 'col-xxl-4' && $val != 'col-xxl-5' && $val != 'col-xxl-6' && $val != 'col-xxl-7' && $val != 'col-xxl-8' && $val != 'col-xxl-9' && $val != 'col-xxl-10' && $val != 'col-xxl-11' && $val != 'col-xxl-12' && $val != $perso ){
$complement .= $val." ";
}
}
$perso = null;
// stock Données à préremplir
$donneesPreremplies = [
'container' => $container,
"xs" => $xs,
"sm" => $sm,
"md" => $md,
"lg" => $lg,
"xl" => $xl,
"xxl" => $xxl,
"perso" => $perso,
"complement" => $complement,
"style" => $elemDiv->getStyles(),
];
// Préremplir le formulaire avec les données
$form2->setData($donneesPreremplies);
// on place le formulaire
// $form2 = $this->createForm(ModElemDivFormClass::class);
$form2->handleRequest($request);
// affiche le code html du formulaire
$html2 = $this->render('front/form/formModifElemDivClass.html.twig', [
'form2' => $form2->createView(),
'idPage' => $idPage,
'elemDiv' => $elemDiv,
]);
//
return $this->json([
'html' => $html,
'html2' => $html2,
'htmlH1' => $htmlH1,
'idPage' => $idPage,
'idElemDiv' => "",
]);
}
/**
* @Route("/descendElem/gfd53g5fdgfd53fdg53g", name="front_descendElem")
*/
public function front_descendElem(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idElem = $_POST["idElem"];
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet ModElemDiv
$elem = $this->modElemDivRep->find($idElem);
// capte l'ordre
$oldOrdre = $elem->getOrdre();
$newOrdre = $oldOrdre + 1;
// on recupere l'objet elem à monter
$elemMonte = $this->modElemDivRep->findByOrdre($page->getId(), $newOrdre);
// gestion de l ordre des elem de la page
$elem->setOrdre($newOrdre);
$this->em->persist($elem);
$this->em->flush();
$elemMonte[0]->setOrdre($oldOrdre);
$this->em->persist($elemMonte[0]);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/monteElem/gfd53g5fdgfd53fdg53g", name="front_monteElem")
*/
public function front_monteElem(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idElem = $_POST["idElem"];
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$elem = $this->modElemDivRep->find($idElem);
// capte l'ordre
$oldOrdre = $elem->getOrdre();
$newOrdre = $oldOrdre - 1;
// on recupere l'objet div à descendre
$elemDecend = $this->modElemDivRep->findByOrdre($page->getId(), $newOrdre);
// gestion de l ordre des div de la page
$elem->setOrdre($newOrdre);
$this->em->persist($elem);
$this->em->flush();
$elemDecend[0]->setOrdre($oldOrdre);
$this->em->persist($elemDecend[0]);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/supprimeElem/gfd53g5fdgfd53fdg53g", name="front_supprimeElem")
*/
public function front_supprimeElem(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idElem = $_POST["idElem"];
// on recupere l'objet identiteSite
if ("site" == "site"){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$elem = $this->modElemDivRep->find($idElem);
// // supprime le contenu de la div
// $cols = $div->getModDivCols();
// foreach ($cols as &$col) {
// // enregistre dans la base
// $this->em->remove($col);
// $this->em->flush();
// }
// enregistre la valeur de l'ordre de la div ) supprimer
$supprOrdre = $elem->getOrdre();
// supprime la div
// enregistre dans la base
$this->em->remove($elem);
$this->em->flush();
// gestion de l ordre des div de la page
$divMoins = $this->modElemDivRep->findDivOrdrePlus($supprOrdre);
foreach ($divMoins as &$elem) {
$elem->setOrdre($supprOrdre);
$this->em->persist($elem);
$this->em->flush();
$supprOrdre++;
}
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/afficheFormNewElemDivInElem/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewElemDivInElem")
*/
public function front_afficheFormNewElemDivInElem(UserInterface $user, Request $request): JsonResponse
{
// recupere idPage
$idElem = $_POST["idElem"];
// on recupere l'objet identiteSite
if (1 == 1){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// on recupère l'objet Elem
$elem = $this->modElemDivRep->find($idElem);
// on recupère l'objet Page
$page = $this->modPageRep->find($elem->getPage());
// formatte le titre du modal
$htmlH1 = "Ajouter un élément dans l'élément ".$elem->getId()." sur la page <br>« ".$page->getNom()." »";
// nouvel objet Div
$newElemDiv = new ModElemDiv();
// on place le formulaire
$form = $this->createForm(ModElemDivFormType::class, $newElemDiv);
$form->handleRequest($request);
// affiche la page secur_firstUser
$html = $this->render('front/form/formNewElemDiv.html.twig', [
'form' => $form->createView(),
'idPage' => $page->getId(),
'htmlH1' => $htmlH1,
]);
// on place le formulaire
$form2 = $this->createForm(ModElemDivFormClass::class);
$form2->handleRequest($request);
// affiche le code html du formulaire
$html2 = $this->render('front/form/formNewElemDivClass.html.twig', [
'form2' => $form2->createView(),
'idPage' => $page->getId(),
]);
//
return $this->json([
'html' => $html,
'html2' => $html2,
'htmlH1' => $htmlH1,
'idPage' => $page->getId(),
'idElemDiv' => $elem->getId(),
]);
}
// ajax ---------------------------------------------------------------------------
/**
* @Route("/construction/saveEmail/gfd53g5fdgfd53fdg53g", name="front_construction_saveEmail")
*/
public function front_construction_saveEmail(UserInterface $user, Request $request, MailerInterface $mailer): JsonResponse
{
// recupère les datas
$emailVisiteur = $request->request->get('emailVisiteur');
// recupère les admins
$admins = $this->modUserRep->findAdmin();
foreach ($admins as &$admin) {
// 2.2 - envoi un mail
$email = (new TemplatedEmail())
->from($this->from)
->to(new Address($admin->getEmail()))
->subject('Un visiteur vous envoi son mail depuis le site '.$this->nomSite.'!')
->text($this->nomSite.' ! '.$emailVisiteur.' .')
->htmlTemplate('front/mails/mail_construction.html.twig')
->context([
'expiration_date' => new \DateTime('+7 days'),
'emailVisiteur' => $emailVisiteur,
])
;
$mailer->send($email);
}
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/afficheFormNewDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormNewDiv")
*/
public function front_afficheFormNewDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
// on recupere l'objet identiteSite
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// formatte le titre
$htmlH1 = "Ajouter une div sur la page <br>« ".$page->getNom()." »";
// nouvel objet Div
$newDiv = new ModDiv();
// on place le formulaire
$form = $this->createForm(ModDivType::class, $newDiv);
$form->handleRequest($request);
// affiche la page secur_firstUser
$html = $this->render('front/form/formNewDiv.html.twig', [
'form' => $form->createView(),
'idPage' => $idPage,
'htmlH1' => $htmlH1,
]);
//
return $this->json([
'html' => $html,
'htmlH1' => $htmlH1,
]);
}
/**
* @Route("/enregistrementDiv/gfd53g5fdgfd53fdg53g", name="front_enregistrementDiv")
*/
public function front_enregistrementDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere datas
$container = $_POST["container"];
$hauteur = $_POST["hauteur"];
$idPage = $_POST["idPage"];
$tabCol = $_POST["tabCol"];
// init
$page = $this->modPageRep->find($idPage);
$nbrDivs = $page->getModDivs();
if ($container == "container"){
$container = 1;
}
else{
$container = 2;
}
// nouvel objet Div
$newDiv = new ModDiv();
// // remplissage des données
$newDiv->setAttache($page);
$newDiv->setOrdre( count($nbrDivs) + 1 );
$newDiv->setContainer($container);
$newDiv->setHauteur($hauteur);
foreach ($tabCol as &$col) {
$newDivCol = new ModDivCol();
$newDivCol->setOrdre($col[0]);
$newDivCol->setLargeur(intval($col[1]));
$newDivCol->setSm(intval($col[2]));
$newDivCol->setMd(intval($col[3]));
$newDivCol->setLg(intval($col[4]));
$newDivCol->setXl(intval($col[5]));
$newDivCol->setXxl(intval($col[6]));
$this->em->persist($newDivCol);
$this->em->flush();
$newDiv->addModDivCol($newDivCol);
}
// enregistrement dans la base
$this->em->persist($newDiv);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/afficheFormModifDiv/gfd53g5fdgfd53fdg53g", name="front_afficheFormModifDiv")
*/
public function front_afficheFormModifDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idDiv = $_POST["idDiv"];
// on recupere l'objet identiteSite
if ("site" == "site"){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$div = $this->modDivRep->find($idDiv);
// formatte le titre
$htmlH1 = "Modifier la div ".$div->getId()." sur la page <br>« ".$page->getNom()." »";
// on place le formulaire
$form = $this->createForm(ModDivType::class, $div);
$form->handleRequest($request);
// affiche la page secur_firstUser
$html = $this->render('front/form/formModifDiv.html.twig', [
'form' => $form->createView(),
'idPage' => $idPage,
'htmlH1' => $htmlH1,
]);
//
return $this->json([
'html' => $html,
'htmlH1' => $htmlH1,
]);
}
/**
* @Route("/modificationDiv/gfd53g5fdgfd53fdg53g", name="front_modificationDiv")
*/
public function front_modificationDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere datas
$container = $_POST["container"];
$hauteur = $_POST["hauteur"];
$idPage = $_POST["idPage"];
$idDiv = $_POST["idDiv"];
$tabCol = $_POST["tabCol"];
// init
$page = $this->modPageRep->find($idPage);
$nbrDivs = $page->getModDivs();
if ($container == "container"){
$container = 1;
}
else{
$container = 2;
}
// nouvel objet Div
$div = $this->modDivRep->find($idDiv);
// // remplissage des données
$div->setAttache($page);
//$div->setOrdre( count($nbrDivs) + 1 );
$div->setContainer($container);
$div->setHauteur($hauteur);
$nbrOldCols = count($div->getModDivCols());
$nbrModifCols = count($tabCol);
// cas 1 . il y a autant de oldcol que de modifcol ou si il y a de nouvelles colonnes
// if ($nbrOldCols == $nbrModifCols || $nbrOldCols < $nbrModifCols){
// // boucle le tableau des colonnes
// foreach ($tabCol as &$col) {
// // test l'existence de la colonne
// $newDivCol = $this->modDivColRep->recupColparDivEtOrdre($div->getId(), $col[0]);
// if ( count($newDivCol) > 0){
// $newDivCol = $newDivCol[0];
// }
// else{
// $newDivCol = new ModDivCol();
// }
// $newDivCol->setOrdre($col[0]);
// $newDivCol->setLargeur(intval($col[1]));
// $newDivCol->setSm(intval($col[2]));
// $newDivCol->setMd(intval($col[3]));
// $newDivCol->setLg(intval($col[4]));
// $newDivCol->setXl(intval($col[5]));
// $newDivCol->setXxl(intval($col[6]));
// $this->em->persist($newDivCol);
// $this->em->flush();
// $div->addModDivCol($newDivCol);
// }
// }
// // cas 2 . il y a plus de oldcol que de modifcol
// else {
// determine et supprime les col disparues
// boucle pour chaque colonne de la div
foreach ($div->getModDivCols() as &$oldcol) {
// init suppr à 1
$isSuppr = 1;
// boucle pour chaque col de la tab
foreach ($tabCol as &$col) {
if (!isset($col[7])){
$myid = 0;
}
else{
$myid = substr($col[7], 3);
}
// si il existe la col dans la tab
if ($oldcol->getId() == $myid){
// configure suppr à 0
$isSuppr = 0;
}
}
// si suppr est à 1
if ($isSuppr == 1){
$oldOrdre = $oldcol->getOrdre();
// supprime la cal de la div
$div->removeModDivCol($oldcol);
// supprime la col de la base
$this->em->remove($oldcol);
$this->em->flush();
}
}
// boucle le tableau des colonnes
$ordreA = 0;
foreach ($tabCol as &$col) {
// test l'existence de la colonne
//$newDivCol = $this->modDivColRep->recupColparDivEtOrdre($div->getId(), $col[0]);
if (!isset($col[7])){
$myid = 0;
$newDivCol = new ModDivCol();
}
else{
$myid = substr($col[7], 3);
$newDivCol = $this->modDivColRep->find(substr($col[7], 3));
}
// if ( count($newDivCol) > 0){
// $newDivCol = $newDivCol[0];
// }
// else{
// $newDivCol = new ModDivCol();
// }
if ( !isset($newDivCol) ){
$newDivCol = new ModDivCol();
}
$newDivCol->setOrdre($col[0]);
$newDivCol->setLargeur(intval($col[1]));
$newDivCol->setSm(intval($col[2]));
$newDivCol->setMd(intval($col[3]));
$newDivCol->setLg(intval($col[4]));
$newDivCol->setXl(intval($col[5]));
$newDivCol->setXxl(intval($col[6]));
$this->em->persist($newDivCol);
$this->em->flush();
$div->addModDivCol($newDivCol);
$ordreA++;
}
// }
// enregistrement dans la base
$this->em->persist($div);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/supprimeDiv/gfd53g5fdgfd53fdg53g", name="front_supprimeDiv")
*/
public function front_supprimeDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idDiv = $_POST["idDiv"];
// on recupere l'objet identiteSite
if ("site" == "site"){
$identiteSiteRecup = $this->modIdentiteRep->find(1);
if ($identiteSiteRecup){
$identiteSite = $identiteSiteRecup;
}
else{
// on instancie l'objet identiteSite
$identiteSite = new ModIdentite();
}
}
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$div = $this->modDivRep->find($idDiv);
// supprime le contenu de la div
$cols = $div->getModDivCols();
foreach ($cols as &$col) {
// enregistre dans la base
$this->em->remove($col);
$this->em->flush();
}
// enregistre la valeur de l'ordre de la div ) supprimer
$supprOrdre = $div->getOrdre();
// supprime la div
// enregistre dans la base
$this->em->remove($div);
$this->em->flush();
// gestion de l ordre des div de la page
$divMoins = $this->modDivRep->findDivOrdrePlus($supprOrdre);
foreach ($divMoins as &$div) {
$div->setOrdre($supprOrdre);
$this->em->persist($div);
$this->em->flush();
$supprOrdre++;
}
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/descendDiv/gfd53g5fdgfd53fdg53g", name="front_descendDiv")
*/
public function front_descendDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idDiv = $_POST["idDiv"];
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$div = $this->modDivRep->find($idDiv);
// capte l'ordre
$oldOrdre = $div->getOrdre();
$newOrdre = $oldOrdre + 1;
// on recupere l'objet div à monter
$divMonte = $this->modDivRep->findByOrdre($page->getId(), $newOrdre);
// gestion de l ordre des div de la page
$div->setOrdre($newOrdre);
$this->em->persist($div);
$this->em->flush();
$divMonte[0]->setOrdre($oldOrdre);
$this->em->persist($divMonte[0]);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
/**
* @Route("/monteDiv/gfd53g5fdgfd53fdg53g", name="front_monteDiv")
*/
public function front_monteDiv(UserInterface $user, Request $request): JsonResponse
{
// recupere le nomDuSite
$idPage = $_POST["idPage"];
$idDiv = $_POST["idDiv"];
// on recupère l'objet Page
$page = $this->modPageRep->find($idPage);
// on recupère l'objet Div
$div = $this->modDivRep->find($idDiv);
// capte l'ordre
$oldOrdre = $div->getOrdre();
$newOrdre = $oldOrdre - 1;
// on recupere l'objet div à descendre
$divDecend = $this->modDivRep->findByOrdre($page->getId(), $newOrdre);
// gestion de l ordre des div de la page
$div->setOrdre($newOrdre);
$this->em->persist($div);
$this->em->flush();
$divDecend[0]->setOrdre($oldOrdre);
$this->em->persist($divDecend[0]);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
// initFirstCharte
function initFirstCharte(){
$idCharte = new ModCharte();
$idCharte->setNom("Woody");
$idCharte->setChemin("charte/woody/");
$idCharte->setActif(1);
$myHead = '
<!-- favicons -->
<link href="/docs/logo/favicon.ico" rel="icon">
<link href="/docs/logo/apple-touch-icon.png" rel="apple-touch-icon">
<!-- Google Web Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500&family=Roboto:wght@500;700;900&display=swap" rel="stylesheet">
<!-- Icon Font Stylesheet -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.4.1/font/bootstrap-icons.css" rel="stylesheet">
<!-- Libraries Stylesheet -->
<link href="/Modules/Templates/woody-1.0.0/lib/animate/animate.min.css" rel="stylesheet">
<link href="/Modules/Templates/woody-1.0.0/lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
<link href="/Modules/Templates/woody-1.0.0/lib/lightbox/css/lightbox.min.css" rel="stylesheet">
<!-- Customized Bootstrap Stylesheet -->
<link href="/Modules/Templates/woody-1.0.0/css/bootstrap.min.css" rel="stylesheet">
<!-- Template Stylesheet -->
<link href="/Modules/Templates/woody-1.0.0/css/style.css" rel="stylesheet">
<!-- Hover-master -->
<link href="/Modules/js/hover/css/hover-min.css" rel="stylesheet">
';
$idCharte->setHeadHtml($myHead);
$myJs = '
<!-- JavaScript Libraries -->
<script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/wow/wow.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/easing/easing.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/waypoints/waypoints.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/counterup/counterup.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/owlcarousel/owl.carousel.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/isotope/isotope.pkgd.min.js"></script>
<script src="/Modules/Templates/woody-1.0.0/lib/lightbox/js/lightbox.min.js"></script>
<!-- Template Javascript -->
<script src="/Modules/Templates/woody-1.0.0/js/main.js"></script>
';
$idCharte->setJsHtml($myJs);
$myLoading = '
<!-- Spinner Start -->
<div id="spinner" class="show bg-white position-fixed translate-middle w-100 vh-100 top-50 start-50 d-flex align-items-center justify-content-center">
<div class="spinner-grow text-primary" style="width: 3rem; height: 3rem;" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
<!-- Spinner End -->
';
$idCharte->setLoadingHtml($myLoading);
// enregistrement
$this->em->persist($idCharte);
$this->em->flush();
return $idCharte;
}
/**
* @Route("/emailConstruction/gfd53g5fdgfd53fdg53g", name="save_emailConstruction")
*/
public function save_emailConstruction(Request $request): JsonResponse
{
// recupere contact
$contact = $_POST["contact"];
// enregistre le mail
$inscrit = new ModUser();
$inscrit->setUsername("");
$inscrit->setRoles(['ROLE_CONSTRUCTION']);
$inscrit->setPassword("");
$inscrit->setEmail($contact);
$inscrit->setTelephone("");
$inscrit->setActif(0);
$inscrit->setCgu(0);
$inscrit->setDateCrea(new \DateTime());
$inscrit->setDateModif(new \DateTime());
// 3. inscription dans la base
$this->em->persist($inscrit);
$this->em->flush();
//
return $this->json([
'msg' => 1,
]);
}
// initElemsType
function initElemsType(){
$elem1 = new ModElemDivType();
$elem1->setNom('Div');
$elem1->setOuverture('<div id class style >');
$elem1->setFermeture('</div>');
// enregistrement dans la base
$this->em->persist($elem1);
$this->em->flush();
$elem2 = new ModElemDivType();
$elem2->setNom('Span');
$elem2->setOuverture('<span id class style >');
$elem2->setFermeture('</span>');
// enregistrement dans la base
$this->em->persist($elem2);
$this->em->flush();
$elem3 = new ModElemDivType();
$elem3->setNom('Header');
$elem3->setOuverture('<header id class style >');
$elem3->setFermeture('</header>');
// enregistrement dans la base
$this->em->persist($elem3);
$this->em->flush();
$elem4 = new ModElemDivType();
$elem4->setNom('Nav');
$elem4->setOuverture('<nav id class style >');
$elem4->setFermeture('</nav>');
// enregistrement dans la base
$this->em->persist($elem4);
$this->em->flush();
$elem5 = new ModElemDivType();
$elem5->setNom('Footer');
$elem5->setOuverture('<footer id class style >');
$elem5->setFermeture('</footer>');
// enregistrement dans la base
$this->em->persist($elem5);
$this->em->flush();
$elem6 = new ModElemDivType();
$elem6->setNom('Section');
$elem6->setOuverture('<section id class style >');
$elem6->setFermeture('</section>');
// enregistrement dans la base
$this->em->persist($elem6);
$this->em->flush();
$elem7 = new ModElemDivType();
$elem7->setNom('Article');
$elem7->setOuverture('<article id class style >');
$elem7->setFermeture('</article>');
// enregistrement dans la base
$this->em->persist($elem7);
$this->em->flush();
$elem8 = new ModElemDivType();
$elem8->setNom('Aside');
$elem8->setOuverture('<aside id class style >');
$elem8->setFermeture('</aside>');
// enregistrement dans la base
$this->em->persist($elem8);
$this->em->flush();
}
}