query->has('idGroup')) {
$filters->addFilter(['id_ws_customhtml_group' => (int) $request->query->get('idGroup')]);
$filters->setNeedsToBePersisted(false);
}
$gridFactory = $this->get('websmid.customhtml.grid.customhtmlblock_grid_factory');
$grid = $gridFactory->getGrid($filters);
return $this->render('@Modules/ws_customhtml/views/templates/admin/grid/customhtmlblock.html.twig', [
'customHtmlBlockGrid' => $this->presentGrid($grid),
'layoutHeaderToolbarBtn' => $this->getToolbarButtons($request->get('_legacy_controller')),
]);
}
public function searchAction(Request $request): RedirectResponse
{
return $this->get('prestashop.bundle.grid.response_builder')->buildSearchResponse(
$this->get('websmid.customhtml.grid.definition.factory.customhtmlblock_definition_factory'),
$request,
CustomHtmlBlockGridDefinitionFactory::GRID_ID,
'customhtmlblock_index'
);
}
public function createAction(Request $request): Response
{
$formBuilder = $this->get('websmid.customhtml.form.customhtmlblock_data_form_builder');
$formHandler = $this->get('websmid.customhtml.form.customhtmlblock_form_handler');
$form = $formBuilder->getForm();
if ($request->isMethod('GET') && $request->query->has('idGroup')) {
$form->get('id_ws_customhtml_group')->setData((int) $request->query->get('idGroup'));
}
$form->handleRequest($request);
try {
$handlerResult = $formHandler->handle($form);
if (null !== $handlerResult->getIdentifiableObjectId()) {
$this->addFlash('success', $this->trans('Successful creation.', 'Admin.Notifications.Success'));
return $this->redirectToRoute('customhtmlblock_index');
}
} catch (Exception $e) {
$this->addFlash('error', $this->getErrorMessageForException($e, []));
}
return $this->render('@Modules/ws_customhtml/views/templates/admin/form/customhtmlblock_create.html.twig', [
'customHtmlBlockForm' => $form->createView(),
]);
}
public function editAction(Request $request, int $idCustomHtmlBlock): Response
{
$formBuilder = $this->get('websmid.customhtml.form.customhtmlblock_data_form_builder');
$formHandler = $this->get('websmid.customhtml.form.customhtmlblock_form_handler');
$form = $formBuilder->getFormFor($idCustomHtmlBlock);
try {
$form->handleRequest($request);
$handlerResult = $formHandler->handleFor($idCustomHtmlBlock, $form);
if ($handlerResult->isSubmitted() && $handlerResult->isValid()) {
$this->addFlash('success', $this->trans('Successful update.', 'Admin.Notifications.Success'));
return $this->redirectToRoute('customhtmlblock_index');
}
} catch (Exception $e) {
$this->addFlash('error', $this->getErrorMessageForException($e, []));
}
$block = new CustomHtmlBlock($idCustomHtmlBlock);
$currentImageUrl = Validate::isLoadedObject($block) ? CustomHtmlBlock::getBannerImageUrl($block->image) : '';
return $this->render('@Modules/ws_customhtml/views/templates/admin/form/customhtmlblock_edit.html.twig', [
'customHtmlBlockForm' => $form->createView(),
'idCustomHtmlBlock' => $idCustomHtmlBlock,
'currentImageUrl' => $currentImageUrl,
]);
}
public function deleteAction(Request $request, int $idCustomHtmlBlock): RedirectResponse
{
$block = new CustomHtmlBlock($idCustomHtmlBlock);
if (!Validate::isLoadedObject($block)) {
$this->addFlash('error', $this->trans('Unable to find the block.', 'Modules.Wscustomhtml.Admin'));
return $this->redirectToRoute('customhtmlblock_index');
}
CustomHtmlFaq::deleteByBlockId($idCustomHtmlBlock);
$block->delete();
$this->addFlash('success', $this->trans('Successful deletion.', 'Admin.Notifications.Success'));
return $this->redirectToRoute('customhtmlblock_index');
}
public function updatePositionAction(int $idGroup, Request $request): RedirectResponse
{
$positionDefinition = $this->get('websmid.customhtml.grid.position.customhtmlblock_position_definition');
try {
$positionUpdateFactory = $this->get(PositionUpdateFactoryInterface::class);
$positionUpdate = $positionUpdateFactory->buildPositionUpdate([
'positions' => $request->request->all('positions'),
'parentId' => $idGroup,
], $positionDefinition);
$updater = $this->get(GridPositionUpdaterInterface::class);
$updater->update($positionUpdate);
$this->addFlash('success', $this->trans('Successful update.', 'Admin.Notifications.Success'));
} catch (PositionUpdateException $e) {
$this->addFlash('error', $this->getErrorMessageForException($e, []));
}
return $this->redirectToRoute('customhtmlblock_index', ['idGroup' => $idGroup]);
}
private function getToolbarButtons(?string $securitySubject): array
{
$toolbarButtons = [];
if (!$securitySubject || !$this->isGranted(PageVoter::CREATE, $securitySubject)) {
return $toolbarButtons;
}
$toolbarButtons['customhtmlblock_create'] = [
'href' => $this->generateUrl('customhtmlblock_create'),
'desc' => $this->trans('New block', 'Admin.Actions'),
'icon' => 'add_circle_outline',
'class' => 'btn-primary',
'floating_class' => '',
];
return $toolbarButtons;
}
}