Skip to content

Commit 8552302

Browse files
authored
Merge pull request #4 from wernerkrauss/fix-cmsfields
use beforeUpdateCMSFields
2 parents 0e58f06 + d578ded commit 8552302

File tree

2 files changed

+68
-63
lines changed

2 files changed

+68
-63
lines changed

src/Block/MapBlock.php

+47-44
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
use EdgarIndustries\ElementalMap\Provider\Here;
88
use EdgarIndustries\ElementalMap\Provider\HereHybrid;
99
use EdgarIndustries\ElementalMap\Provider\Mapbox;
10-
use SilverStripe\Control\Director;
1110
use SilverStripe\Core\Injector\Injector;
1211
use SilverStripe\Forms\DropdownField;
1312
use SilverStripe\Forms\FieldGroup;
13+
use SilverStripe\Forms\FieldList;
1414
use SilverStripe\Forms\GridField\GridField;
1515
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
1616
use SilverStripe\Forms\LiteralField;
@@ -56,51 +56,52 @@ class MapBlock extends BaseElement
5656

5757
public function getCMSFields()
5858
{
59-
$fields = parent::getCMSFields();
60-
61-
$fields->removeByName([
62-
'Provider',
63-
'ProviderVariant',
64-
'DefaultLatitude',
65-
'DefaultLongitude',
66-
'DefaultZoom',
67-
'LinkTracking',
68-
'FileTracking',
69-
'Markers',
70-
'Height',
71-
'Width',
72-
]);
73-
74-
$currentProvider = class_exists($this->Provider) ? Injector::inst()->create($this->Provider) : null;
59+
$this->beforeUpdateCMSFields(function (FieldList $fields) {
60+
61+
$fields->removeByName([
62+
'Provider',
63+
'ProviderVariant',
64+
'DefaultLatitude',
65+
'DefaultLongitude',
66+
'DefaultZoom',
67+
'LinkTracking',
68+
'FileTracking',
69+
'Markers',
70+
'Height',
71+
'Width',
72+
]);
7573

76-
$providers = ArrayList::create();
77-
foreach ($this->config()->get('providers') as $providerClass) {
78-
$provider = Injector::inst()->create($providerClass);
79-
$providers->push((object) ['ID' => $providerClass, 'Title' => $provider->getTitle()]);
80-
}
74+
$currentProvider = class_exists($this->Provider) ? Injector::inst()->create($this->Provider) : null;
8175

82-
$fields->addFieldsToTab('Root.Main', [
83-
DropdownField::create('Provider', 'Tiles', $providers->sort('Title')->map()),
84-
FieldGroup::create(
85-
'Centre',
86-
NumericField::create('DefaultLatitude', 'Latitude')->setScale(6),
87-
NumericField::create('DefaultLongitude', 'Longitude')->setScale(6),
88-
TextField::create('DefaultZoom', 'Zoom')
89-
),
90-
FieldGroup::create(
91-
'Size',
92-
NumericField::create('Height'),
93-
NumericField::create('Width', 'Width (optional)')
94-
),
95-
LiteralField::create('MarkersPadding', '<p style="height: 25px">&nbsp;</p>'),
96-
GridField::create(
97-
'Markers',
98-
'Markers',
99-
$this->Markers()
100-
)->setConfig(GridFieldConfig_RelationEditor::create()),
101-
]);
76+
$providers = ArrayList::create();
77+
foreach ($this->config()->get('providers') as $providerClass) {
78+
$provider = Injector::inst()->create($providerClass);
79+
$providers->push((object)['ID' => $providerClass, 'Title' => $provider->getTitle()]);
80+
}
10281

103-
return $fields;
82+
$fields->addFieldsToTab('Root.Main', [
83+
DropdownField::create('Provider', 'Tiles', $providers->sort('Title')->map()),
84+
FieldGroup::create(
85+
'Centre',
86+
NumericField::create('DefaultLatitude', 'Latitude')->setScale(6),
87+
NumericField::create('DefaultLongitude', 'Longitude')->setScale(6),
88+
TextField::create('DefaultZoom', 'Zoom')
89+
),
90+
FieldGroup::create(
91+
'Size',
92+
NumericField::create('Height'),
93+
NumericField::create('Width', 'Width (optional)')
94+
),
95+
LiteralField::create('MarkersPadding', '<p style="height: 25px">&nbsp;</p>'),
96+
GridField::create(
97+
'Markers',
98+
'Markers',
99+
$this->Markers()
100+
)->setConfig(GridFieldConfig_RelationEditor::create()),
101+
]);
102+
});
103+
104+
return parent::getCMSFields();
104105
}
105106

106107
public function getLeafletParams()
@@ -137,7 +138,9 @@ public function validate()
137138
$invalid = false;
138139

139140
foreach ($providerAuth as $key) {
140-
if (empty($siteconfig->$key)) $invalid = true;
141+
if (empty($siteconfig->$key)) {
142+
$invalid = true;
143+
}
141144
}
142145

143146
if ($invalid) {

src/Model/MapMarker.php

+21-19
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use EdgarIndustries\ElementalMap\Block\MapBlock;
66
use SilverStripe\Forms\FieldGroup;
7+
use SilverStripe\Forms\FieldList;
78
use SilverStripe\Forms\GridField\GridField;
89
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
910
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
@@ -35,28 +36,29 @@ class MapMarker extends DataObject
3536

3637
public function getCMSFields()
3738
{
38-
$fields = parent::getCMSFields();
39+
$this->beforeUpdateCMSFields(function (FieldList $fields) {
3940

40-
$fields->removeByName(['Latitude', 'Longitude', 'LinkTracking', 'FileTracking', 'Block']);
41+
$fields->removeByName(['Latitude', 'Longitude', 'LinkTracking', 'FileTracking', 'Block']);
4142

42-
$fields->dataFieldByName('Description')->setRows(4);
43+
$fields->dataFieldByName('Description')->setRows(4);
4344

44-
$fields->addFieldsToTab('Root.Main', [
45-
FieldGroup::create(
46-
'Position',
47-
TextField::create('Latitude'),
48-
TextField::create('Longitude')
49-
),
50-
LiteralField::create('BlocksPadding', '<p style="height: 25px">&nbsp;</p>'),
51-
GridField::create(
52-
'Block',
53-
'Show on Maps',
54-
$this->Block()
55-
)->setConfig(GridFieldConfig_RelationEditor::create()
56-
->removeComponentsByType(GridFieldAddNewButton::class))
57-
]);
58-
59-
return $fields;
45+
$fields->addFieldsToTab('Root.Main', [
46+
FieldGroup::create(
47+
'Position',
48+
TextField::create('Latitude'),
49+
TextField::create('Longitude')
50+
),
51+
LiteralField::create('BlocksPadding', '<p style="height: 25px">&nbsp;</p>'),
52+
GridField::create(
53+
'Block',
54+
'Show on Maps',
55+
$this->Block()
56+
)->setConfig(GridFieldConfig_RelationEditor::create()
57+
->removeComponentsByType(GridFieldAddNewButton::class))
58+
]);
59+
});
60+
61+
return parent::getCMSFields();
6062
}
6163

6264
public function getPopupContent()

0 commit comments

Comments
 (0)