GridFieldOrderableRows::handleReorder PHP Method

handleReorder() public method

Handles requests to reorder a set of IDs in a specific order.
public handleReorder ( GridField $grid, SS_HTTPRequest $request ) : SS_HTTPResponse
$grid GridField
$request SS_HTTPRequest
return SS_HTTPResponse
    public function handleReorder($grid, $request)
    {
        if (!$this->immediateUpdate) {
            $this->httpError(400);
        }
        $list = $grid->getList();
        $modelClass = $grid->getModelClass();
        if ($list instanceof ManyManyList && !singleton($modelClass)->canView()) {
            $this->httpError(403);
        } else {
            if (!$list instanceof ManyManyList && !singleton($modelClass)->canEdit()) {
                $this->httpError(403);
            }
        }
        // Save any un-committed changes to the gridfield
        if (($form = $grid->getForm()) && ($record = $form->getRecord())) {
            $form->loadDataFrom($request->requestVars(), true);
            $grid->saveInto($record);
        }
        // Get records from the `GridFieldEditableColumns` column
        $data = $request->postVar($grid->getName());
        $sortedIDs = $this->getSortedIDs($data);
        if (!$this->executeReorder($grid, $sortedIDs)) {
            $this->httpError(400);
        }
        Controller::curr()->getResponse()->addHeader('X-Status', rawurlencode('Records reordered.'));
        return $grid->FieldHolder();
    }