<?php
namespace AdminBundle\Admin;
use DcSiteBundle\Form\Transformer\SeoArrayToStringTransformer;
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\Route\RouteCollectionInterface;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
/**
* Class SeoMetaTagAdmin
* @package AdminBundle\Admin
*/
class SeoMetaTagAdmin extends AbstractAdmin
{
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->add('cloneSeoMetaTag', $this->getRouterIdParameter().'/clone');
$collection->add('import');
}
/**
* @param object $object
*/
public function prePersist($object): void
{
$urn = $object->getUrn();
$urn = preg_replace('/^(\/?ua\/|\/?ru\/)/', '/', $urn);
$object->setUrn($urn);
}
/**
* @param object $object
*/
public function preUpdate($object): void
{
$urn = $object->getUrn();
$urn = preg_replace('/^(\/?ua\/|\/?ru\/)/', '/', $urn);
$object->setUrn($urn);
parent::preUpdate($object);
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper->add('urn');
}
/**
* @param array $buttonList
* @param string $action
* @param null $object
* @return array
*/
public function configureActionButtons(array $buttonList, string $action, $object = null): array
{
$list = parent::configureActionButtons($buttonList, $action, $object);
$list['import']['template'] = '@AdminBundle/admin/import_dashboard_button.html.twig';
return $list;
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->with('Контент', ['class' => 'col-lg-6'])
->add('state', CheckboxType::class, ['label' => 'Отображать на сайте','required' => false])
->add('domain',null, ['label' => 'Доменное имя'])
->add('urn',null, ['label' => ' URN (Uniform Resource Name)'])
->add('title_ua',null, ['label' => 'Название UA', 'required' => false])
->add('title_ru',null, ['label' => 'Название RU'])
->add('description_ua',null, ['label' => 'Описание UA'])
->add('description_ru',null, ['label' => 'Описание RU'])
->add('h1_ua',null, ['label' => 'Заголовок(h1) UA'])
->add('h1_ru',null, ['label' => 'Заголовок(h1) RU'])
->add('description_all_ua', CKEditorType::class, ['label' => 'Полное описание UA','config_name' => 'default','required' => false])
->add('description_all_ru', CKEditorType::class, ['label' => 'Полное описание RU','config_name' => 'default','required' => false])
->add('robots',ChoiceType::class, [
'choices' => [
'index' => 'index',
'noindex' => 'noindex',
'follow' => 'follow',
'nofollow' => 'nofollow',
],
'expanded' => true,
'multiple' => true,
])
->end()
;
$formMapper->get('robots')->addModelTransformer(new SeoArrayToStringTransformer());
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('domain',null, ['label' => 'Доменное имя'])
->add('urn',null, ['label' => 'URN (Uniform Resource Name)'])
->add('title_ru',null, ['label' => 'Название'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
'delete' => [],
]
])
;
}
}