<?php
namespace App\Admin;
use App\Entity\Seo;
use Doctrine\ORM\EntityManagerInterface;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelListType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
class HomePageAdmin extends AbstractAdmin
{
protected $datagridValues = array(
'_page' => 1,
'_sort_order' => 'ASC',
'_sort_by' => 'id',
);
private $entityManager;
public function __construct(?string $code = null, ?string $class = null, ?string $baseControllerName = null, EntityManagerInterface $entityManager = null)
{
$this->entityManager = $entityManager;
parent::__construct($code, $class, $baseControllerName);
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('name', null, ['label' => 'Nombre']);
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->add('id')
->addIdentifier('name', null, ['label' => 'Nombre'])
->addIdentifier('create_at', null, ['label' => 'Creado el']);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->tab('General')
->with('')
->add('name', null, ['label' => 'Nombre'])
->add('video', ModelListType::class, ['label' => 'Video'], ['link_parameters' => ['context' => 'video']])
->add('video_image', ModelListType::class, ['label' => 'Video imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->end()
->end()
->tab('Sliders')
->with('')
->add('sliders', CollectionType::class, array(
'by_reference' => false,
'label' => 'Sliders',
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'order' => 'ASC'
))
->end()
->end()
->tab('Nosotros')
->with('')
->add('about_us_description', CKEditorType::class, ['label' => 'Descripción', 'required' => false])
->add('about_us_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->end()
->end()
->tab('Whatsapp')
->with('')
->add('wsp_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('wsp_image_mobile', ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('wsp_url', null, ['label' => 'Enlace'])
->end()
->end()
->tab('Comunidad')
->with('')
->add('community_link', null, ['label' => 'Link'])
->add('community_banner', ModelListType::class, ['label' => 'Banner'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('community_banner_mobile', ModelListType::class, ['label' => 'Banner Mobile'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->end()
->end()
->tab('Grandes Obras')
->with('')
->add('big_work_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('big_work_image_mobile', ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
// ->add('big_work_url', null, ['label' => 'Enlace'])
->end()
->end()
->tab('CEAP')
->with('')
->add('ceap_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('ceap_image_mobile', ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
// ->add('big_work_url', null, ['label' => 'Enlace'])
->end()
->end()
/*->tab('MarketPlace')
->with('')
->add('mkp_products', CollectionType::class, array(
'by_reference' => false,
'label' => 'Productos',
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'order' => 'ASC'
))
->end()
->end()
->tab('¿Tienes dudas?')
->with('')
->add('doubts_url', null, ['label' => 'URL'])
->add('doubts_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->end()
->end()*/
;
if ($this->isCurrentRoute('edit')) {
$formMapper
->tab('Seo')
->with('')
->add('seo.title', null, ['label' => 'Titulo'])
->add('seo.keywords', null, ['label' => 'Palabras claves'])
->add('seo.description', TextareaType::class, ['label' => 'Descripción', 'required' => false])
->add('seo.share_image', ModelListType::class, ['label' => 'Imagen para compartir', 'required' => false], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image',]])
->end()
->end();
}
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id')
->add('name', null, ['label' => 'Nombre'])
->add('create_at', null, ['label' => 'Creado el']);
}
/*public function getExportFields()
{
return array(
'Nombre' => 'name',
'Acción' => 'action',
'Usuario' => 'user',
'Categoría' => 'kind',
'Creado el' => 'create_at',
);
}*/
public function prePersist($entity): void
{
$em = $this->entityManager;
$seo = new Seo();
$seo->setTitle($entity->getName());
$em->persist($seo);
$em->flush($seo);
$entity->setSeo($seo);
}
}