gridField = $gridField; $this->component = $component; $this->controller = $controller; parent::__construct(); } /** * Returns the URL for this RequestHandler. * * @author SilverStripe * * @see GridFieldDetailForm_ItemRequest * * @param string $action * * @return string */ public function Link($action = null) { return Controller::join_links($this->gridField->Link(), 'bulkAction', $action); } /** * Traverse up nested requests until we reach the first that's not a GridFieldDetailForm or GridFieldDetailForm_ItemRequest. * The opposite of {@link Controller::curr()}, required because * Controller::$controller_stack is not directly accessible. * * @return Controller */ protected function getToplevelController() { $c = $this->controller; while ($c && ($c instanceof GridFieldDetailForm_ItemRequest || $c instanceof GridFieldDetailForm)) { $c = $c->getController(); } return $c; } /** * Edited version of the GridFieldEditForm function * adds the 'Bulk Upload' at the end of the crums. * * CMS-specific functionality: Passes through navigation breadcrumbs * to the template, and includes the currently edited record (if any). * see {@link LeftAndMain->Breadcrumbs()} for details. * * @author SilverStripe original Breadcrumbs() method * * @see GridFieldDetailForm_ItemRequest * * @param bool $unlinked * * @return ArrayData */ public function Breadcrumbs($unlinked = false) { if (!$this->controller->hasMethod('Breadcrumbs')) { return; } $items = $this->controller->Breadcrumbs($unlinked); $items->push(new ArrayData(array( 'Title' => 'Bulk Editing', 'Link' => false, ))); return $items; } /** * Returns the list of record IDs selected in the front-end. * * @return array List of IDs */ public function getRecordIDList() { $vars = $this->request->requestVars(); return $vars['records']; } /** * Returns a DataList of the records selected in the front-end. * * @return DataList List of records */ public function getRecords() { $ids = $this->getRecordIDList(); if ($ids) { $class = $this->gridField->list->dataClass; return DataList::create($class)->byIDs($ids); } else { return false; } } }