-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGalleryBlock.php
More file actions
159 lines (141 loc) · 3.12 KB
/
GalleryBlock.php
File metadata and controls
159 lines (141 loc) · 3.12 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
namespace Syntro\ElementalBootstrapBlocks\Element;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Assets\Image;
use DNADesign\Elemental\Models\BaseElement;
use Syntro\SilverStripeElementalBaseitem\Forms\GridFieldConfig_ElementalChildren;
use Syntro\ElementalBootstrapBlocks\Model\GalleryItem;
/**
* An element which renders an image / video gallery
*
* @author Matthias Leutenegger
*/
class GalleryBlock extends BaseElement
{
/**
* Defines the database table name
* @config
* @var string
*/
private static $table_name = 'BlockGallery';
/**
* Singular name for CMS
* @config
* @var string
*/
private static $singular_name = 'Gallery Block';
/**
* Plural name for CMS
* @config
* @var string
*/
private static $plural_name = 'Gallery Blocks';
/**
* @config
* @var bool
*/
private static $inline_editable = false;
/**
* @config
* @var bool
*/
private static $enable_youtube_links = true;
/**
* Display a show title button
*
* @config
* @var boolean
*/
private static $displays_title_in_template = false;
/**
* @config
* @var string
*/
private static $icon = 'font-icon-block-layout-4';
/**
* available holder styles
* @config
* @var array
*/
private static $holder_styles = [
'colored' => 'Slight color'
];
/**
* available styles
* @config
* @var array
*/
private static $styles = [];
/**
* Database fields
* @config
* @var array
*/
private static $db = [];
/**
* Add default values to database
* @config
* @var array
*/
private static $defaults = [];
/**
* Has_one relationship
* @config
* @var array
*/
private static $has_one = [];
/**
* Has_many relationship
* @config
* @var array
*/
private static $has_many = [
'Items' => GalleryItem::class,
];
/**
* Relationship version ownership
* @config
* @var array
*/
private static $owns = [
'Items'
];
/**
* CMS Fields
* @return FieldList
*/
public function getCMSFields()
{
$fields = parent::getCMSFields();
if ($this->ID) {
/** @var GridField $griditems */
$griditems = $fields->fieldByName('Root.Items.Items');
$griditems->setConfig(GridFieldConfig_ElementalChildren::create());
$fields->removeByName([
'Items',
'Root.Items.Items'
]);
$fields->addFieldToTab(
'Root.Main',
$griditems
);
} else {
$fields->removeByName([
'Items',
'Root.Items.Items'
]);
}
return $fields;
}
/**
* getType
*
* @return string
*/
public function getType()
{
return _t(__CLASS__ . '.BlockType', 'Gallery');
}
}