-
Notifications
You must be signed in to change notification settings - Fork 28
/
BlockArchiveExtension.php
70 lines (62 loc) · 2.13 KB
/
BlockArchiveExtension.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
namespace SilverStripe\VersionedAdmin\Extensions;
use DNADesign\Elemental\Models\BaseElement;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\Security\Member;
use SilverStripe\VersionedAdmin\ArchiveAdmin;
use SilverStripe\VersionedAdmin\Interfaces\ArchiveViewProvider;
/**
* Adds a archive view for Elemental blocks
*
* @extends DataExtension<BaseElement>
*/
class BlockArchiveExtension extends DataExtension implements ArchiveViewProvider
{
/**
* @inheritDoc
*/
public function getArchiveFieldClass()
{
return BaseElement::class;
}
/**
* @inheritDoc
*/
public function getArchiveField()
{
$listField = ArchiveAdmin::createArchiveGridField('Blocks', BaseElement::class);
$listColumns = $listField->getConfig()->getComponentByType(GridFieldDataColumns::class);
$listColumns->setDisplayFields([
'Title' => BaseElement::singleton()->fieldLabel('Title'),
'Type' => _t('SilverStripe\\VersionedAdmin\\ArchiveAdmin.COLUMN_TYPE', 'Type'),
'Versions.first.LastEdited' => _t(
'SilverStripe\\VersionedAdmin\\ArchiveAdmin.COLUMN_DATEARCHIVED',
'Date Archived'
),
'Breadcrumbs' => _t('SilverStripe\\VersionedAdmin\\ArchiveAdmin.COLUMN_ORIGIN', 'Origin'),
'Versions.first.Author.Name' => _t(
'SilverStripe\\VersionedAdmin\\ArchiveAdmin.COLUMN_ARCHIVEDBY',
'Archived By'
)
]);
$listColumns->setFieldFormatting([
'Breadcrumbs' => function ($val, $item) {
$parent = $item->Page;
return ($parent && $parent->hasMethod('Breadcrumbs')) ? $parent->Breadcrumbs() : null;
},
'Versions.first.LastEdited' => function ($val, $item) {
return DBDatetime::create_field('Datetime', $val)->Ago();
},
]);
return $listField;
}
/**
* @inheritDoc
*/
public function isArchiveFieldEnabled()
{
return true;
}
}