2012-05-11 09:44:39 +02:00
|
|
|
<?php
|
2016-08-19 00:51:35 +02:00
|
|
|
|
|
|
|
namespace SilverStripe\Forms\GridField;
|
|
|
|
|
|
|
|
use SilverStripe\Control\Controller;
|
|
|
|
use SilverStripe\View\ArrayData;
|
|
|
|
use SilverStripe\View\SSViewer;
|
|
|
|
|
2012-05-11 09:44:39 +02:00
|
|
|
/**
|
|
|
|
* A button that allows a user to view readonly details of a record. This is
|
2013-05-20 12:18:07 +02:00
|
|
|
* disabled by default and intended for use in readonly {@link GridField}
|
|
|
|
* instances.
|
2012-05-11 09:44:39 +02:00
|
|
|
*/
|
2022-02-01 23:14:33 +01:00
|
|
|
class GridFieldViewButton extends AbstractGridFieldComponent implements GridField_ColumnProvider, GridField_ActionMenuLink
|
2016-11-29 00:31:16 +01:00
|
|
|
{
|
2018-07-13 00:45:13 +02:00
|
|
|
/**
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
|
|
|
public function getTitle($gridField, $record, $columnName)
|
|
|
|
{
|
|
|
|
return _t(__CLASS__ . '.VIEW', "View");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
|
|
|
public function getGroup($gridField, $record, $columnName)
|
|
|
|
{
|
|
|
|
return GridField_ActionMenuItem::DEFAULT_GROUP;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
|
|
|
public function getExtraData($gridField, $record, $columnName)
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
"classNames" => "font-icon-eye action-detail view-link"
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
|
|
|
public function getUrl($gridField, $record, $columnName)
|
|
|
|
{
|
|
|
|
return Controller::join_links($gridField->Link('item'), $record->ID, 'view');
|
|
|
|
}
|
2016-11-29 00:31:16 +01:00
|
|
|
|
2018-05-29 06:10:52 +02:00
|
|
|
public function augmentColumns($field, &$columns)
|
2016-11-29 00:31:16 +01:00
|
|
|
{
|
2022-04-14 03:12:59 +02:00
|
|
|
if (!in_array('Actions', $columns ?? [])) {
|
2018-05-29 06:10:52 +02:00
|
|
|
$columns[] = 'Actions';
|
2016-11-29 00:31:16 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getColumnsHandled($field)
|
|
|
|
{
|
2018-05-29 06:10:52 +02:00
|
|
|
return ['Actions'];
|
2016-11-29 00:31:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getColumnContent($field, $record, $col)
|
|
|
|
{
|
|
|
|
if (!$record->canView()) {
|
|
|
|
return null;
|
|
|
|
}
|
2018-05-29 06:10:52 +02:00
|
|
|
$data = new ArrayData([
|
2021-07-18 17:54:22 +02:00
|
|
|
'Link' => $this->getURL($field, $record, $col),
|
2018-05-29 06:10:52 +02:00
|
|
|
]);
|
2016-11-29 00:31:16 +01:00
|
|
|
$template = SSViewer::get_templates_by_class($this, '', __CLASS__);
|
|
|
|
return $data->renderWith($template);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getColumnAttributes($field, $record, $col)
|
|
|
|
{
|
2018-05-29 06:10:52 +02:00
|
|
|
return ['class' => 'grid-field__col-compact'];
|
2016-11-29 00:31:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getColumnMetadata($gridField, $col)
|
|
|
|
{
|
2018-05-29 06:10:52 +02:00
|
|
|
return ['title' => null];
|
2016-11-29 00:31:16 +01:00
|
|
|
}
|
2012-05-11 09:44:39 +02:00
|
|
|
}
|