/**
*
* @param array $classname Name of class who's subclasses will be added to form
* @param int $itemsPerPage - How many items per page should show up
* @param boolean | string $sorting Allow sorting of rows, either false or the name of the sort column
*/
public function __construct($classname, $itemsPerPage = null, $sort_col = false)
{
parent::__construct();
// Setup Bulk manager
$manager = new GridFieldBulkManager();
$manager->removeBulkAction("unLink");
$manager->addBulkAction('disable', 'Disable', 'CatalogueProductBulkAction');
$manager->addBulkAction('enable', 'Enable', 'CatalogueProductBulkAction');
/// Setup add new button
$add_button = new GridFieldAddNewMultiClass("buttons-before-left");
$add_button->setClasses($this->get_subclasses($classname));
$this->addComponent(new GridFieldButtonRow('before'));
$this->addComponent(new GridFieldToolbarHeader());
$this->addComponent($sort = new GridFieldSortableHeader());
$this->addComponent($filter = new GridFieldFilterHeader());
$this->addComponent(new GridFieldDataColumns());
$this->addComponent(new GridFieldEditButton());
$this->addComponent(new GridFieldDeleteAction());
$this->addComponent(new GridFieldPageCount('toolbar-header-right'));
$this->addComponent($pagination = new GridFieldPaginator($itemsPerPage));
$this->addComponent(new GridFieldExportButton("buttons-before-right"));
// If we are manageing a category, use the relevent field, else use
// product
if ($classname == "Category") {
$this->addComponent(new CatalogueCategoryDetailForm());
$add_button->setItemRequestClass("CatalogueCategoryDetailForm_ItemRequest");
} else {
$this->addComponent(new CatalogueEnableDisableDetailForm());
$add_button->setItemRequestClass("CatalogueEnableDisableDetailForm_ItemRequest");
}
$this->addComponent($add_button);
if ($sort_col) {
$this->addComponent(GridFieldOrderableRows::create($sort_col));
}
$sort->setThrowExceptionOnBadDataType(false);
$filter->setThrowExceptionOnBadDataType(false);
$pagination->setThrowExceptionOnBadDataType(false);
}