Networking\InitCmsBundle\Controller\LayoutBlockController::updateLayoutBlockSortAction PHP Method

updateLayoutBlockSortAction() public method

public updateLayoutBlockSortAction ( Request $request ) : Symfony\Component\HttpFoundation\JsonResponse
$request Symfony\Component\HttpFoundation\Request
return Symfony\Component\HttpFoundation\JsonResponse
    public function updateLayoutBlockSortAction(Request $request)
    {
        $zones = $request->get('zones', array());
        $objectId = $request->get('objectId');
        $pageAdmin = $this->container->get('networking_init_cms.admin.page');
        foreach ($zones as $zone) {
            $zoneName = $zone['zone'];
            if (array_key_exists('layoutBlocks', $zone) && is_array($zone['layoutBlocks'])) {
                foreach ($zone['layoutBlocks'] as $key => $layoutBlockStr) {
                    $sort = ++$key;
                    $blockId = str_replace('layoutBlock_', '', $layoutBlockStr);
                    if ($blockId) {
                        try {
                            /** @var \Networking\InitCmsBundle\Model\LayoutBlockInterface $layoutBlock */
                            $layoutBlock = $this->admin->getObject($blockId);
                            if ($layoutBlock) {
                                $layoutBlock->setSortOrder($sort);
                                $layoutBlock->setZone($zoneName);
                            }
                            $this->admin->update($layoutBlock);
                        } catch (\Exception $e) {
                            $message = $e->getMessage();
                            return new JsonResponse(array('messageStatus' => 'error', 'message' => $message));
                        }
                    }
                }
            }
        }
        $data = array('messageStatus' => 'success', 'message' => $this->translate('message.layout_blocks_sorted', array('zone' => '')));
        $page = $pageAdmin->getModelManager()->find($pageAdmin->getClass(), $objectId);
        $pageAdmin->setSubject($page);
        if ($page) {
            $pageStatus = $this->renderView('NetworkingInitCmsBundle:PageAdmin:page_status_settings.html.twig', array('admin' => $pageAdmin, 'object' => $page));
            $data['pageStatusSettings'] = $pageStatus;
            $data['pageStatus'] = $this->translate($page->getStatus());
        }
        return new JsonResponse($data);
    }