mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* Adding this class to a {@link GridFieldConfig} of a {@link GridField} adds a header title to that field.
|
|
* The header serves double duty of displaying the name of the data the GridField is showing and
|
|
* providing an "add new" button to create new object instances.
|
|
*
|
|
* The reason for making "add new" part of the title component is to make it easier for the user to tell
|
|
* which "add new" button belongs to which datagrid, in the case where multiple datagrids are on a single
|
|
* page. It is also a more efficient use of screen space.
|
|
*
|
|
* The default DataGrid includes the add button. You can hide the button by setting a boolean using the
|
|
* setNewEnabled() method
|
|
*
|
|
* @package sapphire
|
|
* @subpackage gridfield
|
|
*/
|
|
class GridFieldToolbarHeader implements GridField_HTMLProvider {
|
|
|
|
/**
|
|
*
|
|
* @var bool
|
|
*/
|
|
protected $newEnabled = true;
|
|
|
|
/**
|
|
*
|
|
* @var type
|
|
*/
|
|
protected $gridField = null;
|
|
|
|
public function getHTMLFragments( $gridField) {
|
|
$this->gridField = $gridField;
|
|
return array(
|
|
'header' => $gridField->customise(array(
|
|
'NewLink' => Controller::join_links($gridField->Link('item'), 'new'),
|
|
'NewEnabled' => $this->getNewEnabled()
|
|
))->renderWith('GridFieldToolbarHeader')
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Returns whether or not the "add new" button will appear when rendering this DataGrid title
|
|
* @return bool
|
|
*/
|
|
public function getNewEnabled() {
|
|
if($this->gridField) {
|
|
$model = singleton($this->gridField->getModelClass());
|
|
if(!$model->canCreate()) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return $this->newEnabled;
|
|
}
|
|
|
|
/**
|
|
* Enable or disable the "add new" button to add new DataGrid object instances
|
|
* @param $enabled
|
|
*/
|
|
public function setNewEnabled($enabled) {
|
|
$this->newEnabled = $enabled;
|
|
}
|
|
}
|