/** * @Route("/view") * @Theme("admin") * @Template * * View all blocks. * * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response symfony response object * * @throws AccessDeniedException Thrown if the user doesn't have edit permissions to the module */ public function viewAction(Request $request) { if (!$this->hasPermission('ZikulaBlocksModule::', '::', ACCESS_EDIT)) { throw new AccessDeniedException(); } $clear = $request->request->get('clear', 0); if ($clear) { $request->getSession()->set('zikulablocksmodule.filter', []); } $sessionFilterData = $request->getSession()->get('zikulablocksmodule.filter', []); $sortField = $request->query->get('sort-field', isset($sessionFilterData['sort-field']) ? $sessionFilterData['sort-field'] : 'bid'); $currentSortDirection = $request->query->get('sort-direction', isset($sessionFilterData['sort-direction']) ? $sessionFilterData['sort-direction'] : Column::DIRECTION_ASCENDING); $filterForm = $this->createForm('Zikula\\BlocksModule\\Form\\Type\\AdminViewFilterType', $sessionFilterData, ['action' => $this->generateUrl('zikulablocksmodule_admin_view'), 'method' => 'POST', 'translator' => $this->get('translator'), 'moduleChoices' => $this->get('zikula_blocks_module.api.block')->getModulesContainingBlocks(), 'positionChoices' => $this->getDoctrine()->getRepository('ZikulaBlocksModule:BlockPositionEntity')->getPositionChoiceArray()]); $filterFormClone = clone $filterForm; $filterForm->handleRequest($request); $filterData = $sessionFilterData; if ($filterForm->isSubmitted()) { if ($filterForm->get('filterButton')->isClicked()) { $filterData = $filterForm->getData(); } else { $filterForm = $filterFormClone; // set to empty form on 'clear' submission. } } $filterData['sort-field'] = $sortField; $filterData['sort-direction'] = $currentSortDirection; $request->getSession()->set('zikulablocksmodule.filter', $filterData); // remember $sortableColumns = new SortableColumns($this->get('router'), 'zikulablocksmodule_admin_view'); $sortableColumns->addColumn(new Column('bid')); // first added is automatically the default $sortableColumns->addColumn(new Column('title')); $sortableColumns->addColumn(new Column('blocktype')); $sortableColumns->addColumn(new Column('language')); $sortableColumns->addColumn(new Column('state')); $sortableColumns->setOrderBy($sortableColumns->getColumn($sortField), $currentSortDirection); $sortableColumns->setAdditionalUrlParameters(array('position' => isset($filterData['position']) ? $filterData['position'] : null, 'module' => isset($filterData['module']) ? $filterData['module'] : null, 'language' => isset($filterData['language']) ? $filterData['language'] : null, 'status' => isset($filterData['status']) ? $filterData['status'] : null)); $templateParameters = []; $templateParameters['blocks'] = $this->getDoctrine()->getManager()->getRepository('ZikulaBlocksModule:BlockEntity')->getFilteredBlocks($filterData); $templateParameters['positions'] = $this->getDoctrine()->getManager()->getRepository('ZikulaBlocksModule:BlockPositionEntity')->findAll(); $templateParameters['filter_active'] = !empty($filterData['position']) || !empty($filterData['module']) || !empty($filterData['language']) || !empty($filterData['active']) && in_array($filterData['active'], [0, 1]); $templateParameters['sort'] = $sortableColumns->generateSortableColumns(); $templateParameters['filterForm'] = $filterForm->createView(); return $templateParameters; }
/** * @Route("") * @Theme("admin") * * view items * * @param Request $request * * @return Response HTML output */ public function indexAction(Request $request) { // Get parameters $startnum = $request->query->get('startnum', 1); $orderBy = $request->query->get('orderby', 'pageid'); $currentSortDirection = $request->query->get('sdir', Column::DIRECTION_DESCENDING); $filterForm = $this->createForm(new FilterType(), $request->query->all(), array('action' => $this->generateUrl('zikulapagesmodule_admin_index'), 'method' => 'POST', 'entityCategoryRegistries' => CategoryRegistryUtil::getRegisteredModuleCategories($this->name, 'PageEntity', 'id'))); $filterForm->handleRequest($request); $filterData = $filterForm->isSubmitted() ? $filterForm->getData() : $request->query->all(); $sortableColumns = new SortableColumns($this->get('router'), 'zikulapagesmodule_admin_index', 'orderby', 'sdir'); $sortableColumns->addColumn(new Column('pageid')); // first added is automatically the default $sortableColumns->addColumn(new Column('title')); $sortableColumns->addColumn(new Column('cr_date')); $sortableColumns->setOrderBy($sortableColumns->getColumn($orderBy), $currentSortDirection); $sortableColumns->setAdditionalUrlParameters(array('language' => isset($filterData['language']) ? $filterData['language'] : null, 'filtercats_serialized' => isset($filterData['categories']) ? serialize($filterData['categories']) : null)); $pages = new PageCollectionManager($this->container->get('doctrine.entitymanager')); $pages->setStartNumber($startnum); $pages->setItemsPerPage(\ModUtil::getVar($this->name, 'itemsperpage')); $pages->setOrder($orderBy, $currentSortDirection); $pages->enablePager(); $pages->setFilterBy($filterData); $templateParameters = array(); $templateParameters['filter_active'] = isset($filterData['category']) && count($filterData['category']) > 0 || !empty($filterData['language']); $templateParameters['sort'] = $sortableColumns->generateSortableColumns(); $templateParameters['pages'] = $pages->get(); $templateParameters['lang'] = ZLanguage::getLanguageCode(); $templateParameters['pager'] = $pages->getPager(); $templateParameters['modvars'] = \ModUtil::getModvars(); // temporary solution $templateParameters['filterForm'] = $filterForm->createView(); // attempt to disable caching for this only $response = new Response(); $response->expire(); return $this->render('ZikulaPagesModule:Admin:view.html.twig', $templateParameters, $response); }
/** * @covers SortableColumns::addColumn */ public function testAddColumn() { $d = new Column('d'); $this->sortableColumns->addColumn($d); $this->assertEquals($d, $this->sortableColumns->getColumn('d')); }