/** * Save newly POSTed sort order for the listing. * * @param ResponseHelper $responseHelper */ public function process(ResponseHelper $responseHelper) { if (!$this->request->isPost()) { $this->error = ['result' => 'error', 'message' => 'Must be POST.']; return; } if (!is_array($this->request->getPost('sort_order'))) { $this->error = ['result' => 'error', 'message' => 'sort_order array not available.']; return; } $listing = $this->component->getListing(); $primaryKey = $listing->getPrimaryKey(); $model = $primaryKey->getTable(); $dbAdapter = $model->getAdapter(); $sortField = $this->component->getSortField(); foreach ($this->request->getPost('sort_order') as $index => $id) { try { $model->update(array($sortField->getName() => $index), $dbAdapter->quoteInto("{$primaryKey->getName()} = ?", $id)); } catch (Exception $e) { $this->error = ['result' => 'error', 'message' => 'Failed to save.']; } } }
/** * Ensure the user is allowed to view the listing in this component. */ public function init() { $this->component->getPermissions()->haltIfNotAllowed('view-listing'); $this->session = new Session(); $this->session->set($this->component->getListingQueryParamsSessionName(), $this->request->getQuery()); if ($this->component instanceof SortableListingInterface) { $fields = $this->component->getFields(); $sortField = $this->component->getSortField(); if (!$fields->has($sortField)) { $fields->add($sortField); } /* @var $sorter \Dewdrop\Fields\Helper\SelectSort */ $sorter = $this->component->getListing()->getSelectModifierByName('SelectSort'); $sorter->setDefaultField($sortField); } }