forked from statamic/cms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSearchedAssetsCollection.php
More file actions
111 lines (90 loc) · 2.81 KB
/
SearchedAssetsCollection.php
File metadata and controls
111 lines (90 loc) · 2.81 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace Statamic\Http\Resources\CP\Assets;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Statamic\CP\Column;
use Statamic\Http\Resources\CP\Concerns\HasRequestedColumns;
class SearchedAssetsCollection extends ResourceCollection
{
use HasRequestedColumns;
public $collects = FolderAsset::class;
protected $blueprint;
protected $columns;
protected $columnPreferenceKey;
public function blueprint($blueprint)
{
$this->blueprint = $blueprint;
return $this;
}
public function columnPreferenceKey($key)
{
$this->columnPreferenceKey = $key;
return $this;
}
public function setColumns()
{
$columns = $this->blueprint->columns();
$basename = Column::make('basename')
->label(__('File'))
->visible(true)
->defaultVisibility(true)
->sortable(true)
->required(true);
$size = Column::make('size')
->label(__('Size'))
->value('size_formatted')
->visible(true)
->defaultVisibility(true)
->sortable(true);
$lastModified = Column::make('last_modified')
->label(__('Last Modified'))
->value('last_modified_relative')
->visible(true)
->defaultVisibility(true)
->sortable(true);
$width = Column::make('width')
->label(__('Width'))
->value('width')
->visible(true)
->defaultVisibility(false)
->sortable(true);
$height = Column::make('height')
->label(__('Height'))
->value('height')
->visible(true)
->defaultVisibility(false)
->sortable(true);
$duration = Column::make('duration')
->label(__('Duration'))
->value('duration_formatted')
->visible(true)
->defaultVisibility(false)
->sortable(true);
$columns->put('basename', $basename);
$columns->put('size', $size);
$columns->put('last_modified', $lastModified);
$columns->put('width', $width);
$columns->put('height', $height);
$columns->put('duration', $duration);
if ($key = $this->columnPreferenceKey) {
$columns->setPreferred($key);
}
$this->columns = $columns->rejectUnlisted()->values();
}
public function toArray($request)
{
$this->setColumns();
return $this->collection->each(function ($asset) {
$asset
->blueprint($this->blueprint)
->columns($this->columns);
});
}
public function with($request)
{
return [
'meta' => [
'columns' => $this->visibleColumns(),
],
];
}
}