Modius22

CampgroundAdmin

Jun 24th, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.24 KB | None | 0 0
  1. <?php
  2.  
  3. namespace AppBundle\Admin;
  4.  
  5. use Ivory\CKEditorBundle\Form\Type\CKEditorType;
  6. use Sonata\AdminBundle\Admin\AbstractAdmin;
  7. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  8. use Sonata\AdminBundle\Datagrid\ListMapper;
  9. use Sonata\AdminBundle\Form\FormMapper;
  10. use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
  11. use Sonata\AdminBundle\Form\Type\ModelType;
  12. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  13. use Symfony\Component\Form\Extension\Core\Type\FileType;
  14. #use UserBundle\Entity\User;
  15. use AppBundle\Form\AreaType;
  16. use AppBundle\Entity\Picture;
  17. #use Sonata\AdminBundle\Controller\CRUDController;
  18.  
  19.  
  20. class CampgroundAdmin extends AbstractAdmin
  21. {
  22.  
  23.  
  24.     protected function configureFormFields(FormMapper $form)
  25.     {
  26.       //$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Unable to access this page!');
  27.           $form
  28.             ->tab('label.campground.admin.tab.campground')
  29.                 ->with('label.campground.admin.tab.campground', array('class' => 'col-md-9'))
  30.                     ->add('name', null, array(
  31.                         'label' => 'label.campground.admin.name',
  32.                     ))
  33.                     ->add('street', null, array(
  34.                         'label' => 'label.campground.admin.street',
  35.                     ))
  36.                     ->add('zip', null, array(
  37.                         'label' => 'label.campground.admin.zip',
  38.                     ))
  39.                     ->add('town', null, array(
  40.                         'label' => 'label.campground.admin.town',
  41.                     ))
  42.                     ->add('country', null, array(
  43.                         'label' => 'label.campground.admin.country',
  44.                     ))
  45.                     ->add('land', null, array(
  46.                         'label' => 'label.campground.admin.land',
  47.                     ))
  48.                     ->add('longitude', null, array(
  49.                         'label' => 'label.campground.admin.longitude',
  50.                     ))
  51.                     ->add('latitude', null, array(
  52.                         'label' => 'label.campground.admin.latitude',
  53.                     ))
  54.                     ->add('description', CKEditorType::class, array(
  55.                         'label' => 'label.campground.admin.description',
  56.                     ))
  57.                     ->add('picture', 'sonata_type_collection', array(
  58.                       'by_reference' => true,
  59.                       'label' => false,
  60.                       'type_options' => array(
  61.                         'delete' => true),
  62.                         'btn_add' => 'Add new Images',
  63.                         "required" => false
  64.                       ))
  65.                     #->add('pictures', null, array (                          'label' => 'lable.campground.admin.image_'))
  66.                ->end()
  67.                 ->with('label.campground.admin.meta', array('class' => 'col-md-3'))
  68.             /*
  69.                     ->add('user', 'sonata_type_model_autocomplete', array(
  70.                         'label' => 'label.campground.admin.user',
  71.                         'property' => 'username',
  72.                         'to_string_callback' => function($entity, $property)  {
  73.                             return $entity->getUsername();
  74.                         },
  75.                     ))
  76.             */
  77.                     ->add('homepage', null, array(
  78.                         'label' => 'label.campground.admin.homepage',
  79.                     ))
  80.                     ->add('priceAdults', null, array(
  81.                         'label' => 'label.campground.admin.priceAdults',
  82.                     ))
  83.                     ->add('priceChilds', null, array(
  84.                         'label' => 'label.campground.admin.priceChilds',
  85.                     ))
  86.                     ->add('deposit', null, array(
  87.                         'label' => 'label.campground.admin.deposit',
  88.                     ))
  89.                     ->add('maxPersons', null, array(
  90.                         'label' => 'label.campground.admin.maxPersons',
  91.                     ))
  92.                     ->add('size', null, array(
  93.                         'label' => 'label.campground.admin.size',
  94.                     ))
  95.  
  96.                     ->add('area', AreaType::class, array(
  97.                       'label' => 'lable.campground.admin.area'
  98.                     ))
  99.                     ->add('fireplace', null, array(
  100.                         'label' => 'label.campground.admin.fireplace',
  101.                     ))
  102.                     ->add('parking', null, array(
  103.                         'label' => 'label.campground.admin.parking',
  104.                     ))
  105.                     ->add('house', null, array(
  106.                         'label' => 'label.campground.admin.house',
  107.                     ))
  108.                     ->add('kitchen', null, array(
  109.                         'label' => 'label.campground.admin.kitchen',
  110.                     ))
  111.                     ->add('sanitary', null, array(
  112.                         'label' => 'label.campground.admin.sanitary',
  113.                     ))
  114.                     ->add('lounge', null, array(
  115.                         'label' => 'label.campground.admin.lounge',
  116.                     ))
  117.                     ->add('water', null, array(
  118.                         'label' => 'label.campground.admin.water',
  119.                     ))
  120.                     ->add('energy', null, array(
  121.                         'label' => 'label.campground.admin.energy',
  122.                     ))
  123.                 ->end()
  124.             ->end()
  125.             ->tab('label.campground.admin.tab.contact')
  126.             ->with('label.campground.admin.tab.contact')
  127.                 ->add('contactNameAffix', null, array(
  128.                     'label' => 'label.campground.admin.contactNameAffix',
  129.                 ))
  130.                 ->add('contactName', null, array(
  131.                     'label' => 'label.campground.admin.contactName',
  132.                 ))
  133.                 ->add('contactStreet', null, array(
  134.                     'label' => 'label.campground.admin.contactStreet',
  135.                 ))
  136.                 ->add('contactZip', null, array(
  137.                     'label' => 'label.campground.admin.contactZip',
  138.                 ))
  139.                 ->add('contactTown', null, array(
  140.                     'label' => 'label.campground.admin.contactTown',
  141.                 ))
  142.                 ->add('contactPhone', null, array(
  143.                     'label' => 'label.campground.admin.contactPhone',
  144.                 ))
  145.                 ->add('contactMail', null, array(
  146.                     'label' => 'label.campground.admin.contactMail',
  147.                 ))
  148.                 ->end()
  149.             ->end()
  150.             ->tab('label.campground.admin.tab.comments')
  151.             ->with('label.campground.admin.tab.comments')
  152.                 ->add('comments', null, array(
  153.                     'label' => 'label.campground.admin.comments',
  154.                 ))
  155.             ->end()
  156.         ;
  157.     }
  158.  
  159.     protected function configureDatagridFilters(DatagridMapper $filter)
  160.     {
  161.       //  parent::configureDatagridFilters($filter); // TODO: Change the autogenerated stub
  162.       $filter
  163.         ->add('name')
  164.       ;
  165.     }
  166.  
  167.     protected function configureListFields(ListMapper $list)
  168.     {
  169.         $list
  170.             ->addIdentifier('name', null, array(
  171.                 'label' => 'label.campground.admin.name',
  172.             ))
  173.             ->add('street', null, array(
  174.                 'label' => 'label.campground.admin.street',
  175.             ))
  176.             ->add('zip', null, array(
  177.                 'label' => 'label.campground.admin.zip',
  178.             ))
  179.             ->add('town', null, array(
  180.                 'label' => 'label.campground.admin.town',
  181.             ))
  182.             ->add('country', null, array(
  183.                 'label' => 'label.campground.admin.country',
  184.             ))
  185.         ;
  186.     }
  187.  
  188.         public function prePersist($page) {
  189.             $this->manageEmbeddedImageAdmins($page);
  190.         }
  191.         public function preUpdate($page) {
  192.             $this->manageEmbeddedImageAdmins($page);
  193.         }
  194.         private function manageEmbeddedImageAdmins($page) {
  195.             // Cycle through each field
  196.             foreach ($this->getFormFieldDescriptions() as $fieldName => $fieldDescription) {
  197.                 // detect embedded Admins that manage Images
  198.                 if ($fieldDescription->getType() === 'sonata_type_admin' &&
  199.                     ($associationMapping = $fieldDescription->getAssociationMapping()) &&
  200.                     $associationMapping['targetEntity'] === 'AppBundle\Entity\Picture'
  201.                 ) {
  202.                     $getter = 'get' . $fieldName;
  203.                     $setter = 'set' . $fieldName;
  204.  
  205.                     /** @var Image $image */
  206.                     $image = $page->$getter();
  207.                     if ($image) {
  208.                         if ($image->getFile()) {
  209.                             // update the Image to trigger file management
  210.                             $image->refreshUpdated();
  211.                         } elseif (!$image->getFile() && !$image->getImage()) {
  212.                             // prevent Sf/Sonata trying to create and persist an empty Image
  213.                             $page->$setter(null);
  214.                         }
  215.                     }
  216.                 }
  217.             }
  218.         }
  219.  
  220. }
Add Comment
Please, Sign In to add comment