From defd169737a5872781e1fe2ec8b8d366de1df18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Apr 2019 12:50:35 +0200 Subject: [PATCH] Added a admin page for storelocations. --- src/Controller/StorelocationController.php | 112 ++++++++++++++++++ src/Form/CategoryAdminForm.php | 16 +-- src/Form/CompanyForm.php | 12 +- src/Form/StorelocationAdminForm.php | 50 ++++++++ src/Services/EntityURLGenerator.php | 14 +++ src/Services/ToolsTreeBuilder.php | 7 +- .../AdminPages/StorelocationAdmin.html.twig | 9 ++ 7 files changed, 205 insertions(+), 15 deletions(-) create mode 100644 src/Controller/StorelocationController.php create mode 100644 src/Form/StorelocationAdminForm.php create mode 100644 templates/AdminPages/StorelocationAdmin.html.twig diff --git a/src/Controller/StorelocationController.php b/src/Controller/StorelocationController.php new file mode 100644 index 00000000..9df7f140 --- /dev/null +++ b/src/Controller/StorelocationController.php @@ -0,0 +1,112 @@ +_edit($entity, $request, $em); + } + + /** + * @Route("/new", name="store_location_new") + * @Route("/") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function new(Request $request, EntityManagerInterface $em, EntityImporter $importer) + { + return $this->_new($request, $em, $importer); + } + + /** + * @Route("/{id}", name="store_location_delete", methods={"DELETE"}) + */ + public function delete(Request $request, Storelocation $entity, StructuralElementRecursionHelper $recursionHelper) + { + return $this->_delete($request, $entity, $recursionHelper); + } + + /** + * @Route("/export", name="store_location_export_all") + * @param Request $request + * @param SerializerInterface $serializer + * @param EntityManagerInterface $em + * @return Response + */ + public function exportAll(EntityManagerInterface $em, EntityExporter $exporter, Request $request) + { + return $this->_exportAll($em, $exporter, $request); + } + + /** + * @Route("/{id}/export", name="store_location_export") + * @param Request $request + * @param AttachmentType $entity + */ + public function exportEntity(Storelocation $entity, EntityExporter $exporter, Request $request) + { + return $this->_exportEntity($entity, $exporter, $request); + } + +} \ No newline at end of file diff --git a/src/Form/CategoryAdminForm.php b/src/Form/CategoryAdminForm.php index d508c2ad..6e2ecdbd 100644 --- a/src/Form/CategoryAdminForm.php +++ b/src/Form/CategoryAdminForm.php @@ -45,34 +45,34 @@ class CategoryAdminForm extends BaseEntityAdminForm $builder->add('disable_footprints', CheckboxType::class, ['required' => false, 'label' => 'disable_footprints.label', 'help' => 'disable_footprints.help', 'label_attr'=> ['class' => 'checkbox-custom'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('disable_manufacturers', CheckboxType::class, ['required' => false, 'label' => 'disable_manufacturers.label', 'help' => 'disable_manufacturers.help', 'label_attr'=> ['class' => 'checkbox-custom'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('disable_autodatasheets', CheckboxType::class, ['required' => false, 'label' => 'disable_autodatasheets.label', 'help' => 'disable_autodatasheets.help', 'label_attr'=> ['class' => 'checkbox-custom'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('disable_properties', CheckboxType::class, ['required' => false, 'label' => 'disable_properties.label', 'help' => 'disable_properties.help', 'label_attr'=> ['class' => 'checkbox-custom'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('partname_hint', TextType::class, ['required' => false, 'empty_data' => '', 'label' => 'disable_manufacturers.label', 'attr' => ['placeholder' => 'disable_manufacturers.placeholder'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('partname_regex', TextType::class, ['required' => false, 'empty_data' => '', 'label' => 'partname_regex.label', 'attr' => ['placeholder' => 'partname_regex.placeholder'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('default_description', TextType::class, ['required' => false, 'empty_data' => '', 'label' => 'default_description.label', 'attr' => ['placeholder' => 'default_description.placeholder'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); $builder->add('default_comment', TextType::class, ['required' => false, 'empty_data' => '', 'label' => 'default_description.label', 'attr' => ['placeholder' => 'default_comment.placeholder'], - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity)]); } } \ No newline at end of file diff --git a/src/Form/CompanyForm.php b/src/Form/CompanyForm.php index 60fbcda1..c3867d19 100644 --- a/src/Form/CompanyForm.php +++ b/src/Form/CompanyForm.php @@ -48,37 +48,37 @@ class CompanyForm extends BaseEntityAdminForm $is_new = $entity->getID() === null; $builder->add('address', TextareaType::class, ['label' => 'company.address.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.address.placeholder'], 'required' => false, 'empty_data' => '' ]); $builder->add('phone_number', TelType::class, ['label' => 'company.phone_number.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.phone_number.placeholder'], 'required' => false, 'empty_data' => '' ]); $builder->add('fax_number', TelType::class, ['label' => 'company.fax_number.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.fax_number.placeholder'], 'required' => false, 'empty_data' => '' ]); $builder->add('email_address', EmailType::class, ['label' => 'company.email.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.email.placeholder'], 'required' => false, 'empty_data' => '' ]); $builder->add('website', UrlType::class, ['label' => 'company.website.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.website.placeholder'], 'required' => false, 'empty_data' => '' ]); $builder->add('auto_product_url', UrlType::class, ['label' => 'company.auto_product_url.label', - 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity), + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), 'attr' => ['placeholder' => 'company.auto_product_url.placeholder'], 'required' => false, 'empty_data' => '' ]); diff --git a/src/Form/StorelocationAdminForm.php b/src/Form/StorelocationAdminForm.php new file mode 100644 index 00000000..7608a800 --- /dev/null +++ b/src/Form/StorelocationAdminForm.php @@ -0,0 +1,50 @@ +getID() === null; + + $builder->add('is_full', CheckboxType::class, ['required' => false, + 'label' => 'is_full.label', 'help' => 'is_full.help', 'label_attr'=> ['class' => 'checkbox-custom'], + 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'move', $entity)]); + } +} \ No newline at end of file diff --git a/src/Services/EntityURLGenerator.php b/src/Services/EntityURLGenerator.php index 9e56e471..bc1b8f56 100644 --- a/src/Services/EntityURLGenerator.php +++ b/src/Services/EntityURLGenerator.php @@ -35,8 +35,10 @@ use App\Entity\Device; use App\Entity\Manufacturer; use App\Entity\NamedDBElement; use App\Entity\Part; +use App\Entity\Storelocation; use App\Entity\Supplier; use App\Exceptions\EntityNotSupported; +use Symfony\Component\HttpKernel\HttpCache\Store; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; class EntityURLGenerator @@ -133,6 +135,10 @@ class EntityURLGenerator return $this->urlGenerator->generate("manufacturer_edit", ['id' => $entity->getID()]); } + if ($entity instanceof Storelocation) { + return $this->urlGenerator->generate("store_location_edit", ['id' => $entity->getID()]); + } + //Otherwise throw an error throw new EntityNotSupported('The given entity is not supported yet!'); } @@ -170,6 +176,10 @@ class EntityURLGenerator return $this->urlGenerator->generate('manufacturer_new'); } + if ($entity instanceof Storelocation) { + return $this->urlGenerator->generate('store_location_new'); + } + throw new EntityNotSupported('The given entity is not supported yet!'); } @@ -228,6 +238,10 @@ class EntityURLGenerator return $this->urlGenerator->generate('manufacturer_new', ['id' => $entity->getID()]); } + if ($entity instanceof Storelocation) { + return $this->urlGenerator->generate('store_location_new', ['id' => $entity->getID()]); + } + throw new EntityNotSupported('The given entity is not supported yet!'); } diff --git a/src/Services/ToolsTreeBuilder.php b/src/Services/ToolsTreeBuilder.php index b5542680..91875449 100644 --- a/src/Services/ToolsTreeBuilder.php +++ b/src/Services/ToolsTreeBuilder.php @@ -69,7 +69,12 @@ class ToolsTreeBuilder $this->urlGenerator->generate('supplier_new')); $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.manufacturer'), $this->urlGenerator->generate('manufacturer_new')); - + + $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.storelocation'), + $this->urlGenerator->generate('store_location_new')); + + $nodes[] = new TreeViewNode($this->translator->trans('tree.tools.edit.part'), + $this->urlGenerator->generate('part_new')); $tree[] = new TreeViewNode($this->translator->trans('tree.tools.edit'), null, $nodes); diff --git a/templates/AdminPages/StorelocationAdmin.html.twig b/templates/AdminPages/StorelocationAdmin.html.twig new file mode 100644 index 00000000..dfa4cf55 --- /dev/null +++ b/templates/AdminPages/StorelocationAdmin.html.twig @@ -0,0 +1,9 @@ +{% extends "AdminPages/EntityAdminBase.html.twig" %} + +{% block card_title %} + {% trans %}storelocation.labelp{% endtrans %} +{% endblock %} + +{% block additional_controls %} + {{ form_row(form.is_full) }} +{% endblock %} \ No newline at end of file