| Current Path : /var/www/v3.cesa.co.za/src/ContentBundle/Admin/ |
| Current File : /var/www/v3.cesa.co.za/src/ContentBundle/Admin/FormAdmin.php |
<?php
namespace App\ContentBundle\Admin;
use Knp\Menu\ItemInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
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;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use App\CoreBundle\Form\DataTransformer\ArrayToStringTransformer;
use App\ContentBundle\Entity\Form;
/**
* Form Admin
*
* @author Otto Saayman <otto@igotafrica.com>
* @package ContentBundle
* @subpackage Admin
* @version 0.0.1
*/
class FormAdmin extends AbstractAdmin
{
/**
* Security Context
* @var \Symfony\Component\Security\Core\SecurityContextInterface
*/
protected $securityContext;
/**
* Container
* @var $container
*/
protected $container;
protected function generateBaseRouteName(bool $isChildAdmin = false): string
{
return 'form';
}
protected function generateBaseRoutePattern(bool $isChildAdmin = false): string
{
return 'form';
}
public function setSecurityContext(UsageTrackingTokenStorage $securityContext)
{
$this->securityContext = $securityContext;
}
/**
* @return null
*/
public function setContainer($container)
{
$this->container = $container;
}
protected function configureFormFields(FormMapper $formMapper): void
{
$arrayToStringTransformer = new ArrayToStringTransformer();
$formMapper
->add(
'department',
ChoiceType::class,
array('label' => 'Department', 'choices' => array('CESA' => 'cesa', 'Marketing' => 'marketing', 'SCE' => 'sce', 'BCE' => 'bce', 'CPD' => 'cpd'))
)
->add('bce_modules', ChoiceType::class, array('label' => 'BCE Modules', 'choices' => array('CEE' => 1, 'Project Delivery' => 2, 'Finance' => 3, 'Law' => 4, 'Interpersonal Skills' => 5), 'multiple' => true))
->add('to_name', null, array('label' => 'Send to Name'))
->add('to_e_mail', null, array('label' => 'Send to E-Mail'))
->add('title', null, array('label' => 'Title'))
->add('description', null, array('label' => 'Description'))
->add(
'start_date',
DateType::class,
array(
'required' => true,
'label' => 'Start Date',
'widget' => 'single_text',
'input_format' => 'd-m-Y',
'attr' => array('class' => 'datepicker', 'autocomplete' => 'off')
)
)
->add(
'end_date',
DateType::class,
array(
'required' => false,
'label' => 'End Date',
'widget' => 'single_text',
'input_format' => 'd-m-Y',
'attr' => array('class' => 'datepicker', 'autocomplete' => 'off')
)
)
->add('add_referral', null, array('label' => 'Add Referral Step'))
->add('survey', null, array('label' => 'Survey Form'))
;
$formMapper->get('bce_modules')->addModelTransformer($arrayToStringTransformer);
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('title', null, array('label' => 'Title'));
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->addIdentifier('title', null, array('label' => 'Title'))
->add('start_date', null, array('label' => 'Start date'))
->add('end_date', null, array('label' => 'End date'))
->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('title', null, array('label' => 'Title'))
->add('start_date', null, array('label' => 'Start date'))
->add('end_date', null, array('label' => 'End date'))
;
}
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->add(
'list_form_item',
'list_form_item',
array(
'_controller' => 'App\ContentBundle\Controller\FormItemAdminController::listAction',
'_sonata_admin' => 'content.admin.form_item'
)
);
$collection->add(
'list_form_completed',
'list_form_completed',
array(
'_controller' => 'App\ContentBundle\Controller\FormCompletedAdminController::listAction',
'_sonata_admin' => 'content.admin.form_completed'
)
);
$collection->add('copyForm', $this->getRouterIdParameter() . '/copyForm', array('_controller' => 'App\\ContentBundle\\Controller\\FormAdminController::copyForm'));
}
protected function configureTabMenu(ItemInterface $menu, string $action, ?AdminInterface $childAdmin = null): void
{
$admin = $this->isChild() ? $this->getParent() : $this;
$id = $admin->getRequest()->get('id');
if (!in_array($action, array('edit'))) {
return;
}
$menu->addChild(
'Form Items',
array(
'uri' => $admin->generateUrl('list_form_item', array('form_id' => $id))
)
);
$menu->addChild(
'Forms Completed',
array(
'uri' => $admin->generateUrl('list_form_completed', array('form_id' => $id))
)
);
$menu->addChild(
'Copy Form',
array('uri' => $admin->generateUrl('copyForm', array('id' => $id)))
);
}
}