'Text',
'Longitude' => 'Decimal(10, 8)',
'Latitude' => 'Decimal(11, 8)',
'MapZoom' => 'Int',
'Description' => 'Varchar(255)',
'Address' => 'Varchar(255)',
'Suburb' => 'Varchar(255)',
'State' => 'Varchar(255)',
'Country' => 'Varchar(255)',
'ZipCode' => 'Varchar(6)',
];
private static $has_one = [
'PrivacyPolicy' => SiteTree::class,
'Sitemap' => SiteTree::class,
];
private static $many_many = [
'Navigation' => SiteTree::class,
];
public function updateCMSFields(FieldList $fields)
{
$img = Image::get()->filter([
'ParentID' => 0,
'FileFilename' => 'qrcode.png',
])->first();
if ($img) {
$fields->addFieldsToTab('Root.Main', [
LiteralField::create('QRCode', ''),
]);
}
$fields->addFieldsToTab('Root.Main', [
TreeMultiselectField::create(
'Navigation',
'Navigation',
SiteTree::class
)->setDisableFunction(static function ($el) {
return $el->getField('ParentID') !== 0;
}),
TextareaField::create('Description', 'Website Description'),
TextareaField::create('ExtraCode', 'Extra site-wide HTML code'),
DropdownField::create(
'PrivacyPolicyID',
'Privacy Policy Page',
SiteTree::get()->map()->toArray()
)->setEmptyString('(Select one)'),
DropdownField::create(
'SitemapID',
'Sitemap Page',
SitemapPage::get()->map()->toArray()
)->setEmptyString('(Select one)'),
]);
$mapTab = $fields->findOrMakeTab('Root.Maps');
$mapTab->setTitle('Address / Map');
$addrFields =[
TextField::create('Address'),
TextField::create('ZipCode'),
TextField::create('Suburb', 'City'),
];
if (\class_exists(Addressable::class)) {
$addr = \singleton(Addressable::class);
$stateLabel = _t('Addressable.STATE', 'State');
$allowedStates = $addr->getAllowedStates();
if (count($allowedStates) >= 1) {
// If allowed states are restricted, only allow those
$addrFields[] = DropdownField::create('State', $stateLabel, $allowedStates);
} elseif (!$allowedStates) {
// If no allowed states defined, allow the user to type anything
$addrFields[] = TextField::create('State', $stateLabel);
}
// Get country field
$addrFields[] = DropdownField::create(
'Country',
_t('Addressable.COUNTRY', 'Country'),
$addr->getAllowedCountries()
);
} else {
$addrFields[] = TextField::create('State');
$addrFields[] = TextField::create('Country');
}
$fields->addFieldsToTab('Root.Maps', $addrFields);
if (MapboxField::getAccessToken()) {
$fields->addFieldsToTab('Root.Maps', [
//TextField::create('MapAPIKey'),
TextField::create('MapZoom'),
MapboxField::create('Map', 'Choose a location', 'Latitude', 'Longitude'),
]);
} else {
$fields->addFieldsToTab('Root.Maps', [
LiteralField::create('MapNotice', '
No Map API keys specified.
') ]); } /*GoogleMapField::create( $this->owner, 'Location', [ 'show_search_box' => true, ] )*/ } public function MapAPIKey() { return MapboxField::config()->get('access_token'); } public function MapStyle() { return MapboxField::config()->get('map_style'); } public function getGeoJSON() { return '{"type": "MarkerCollection","features": [{"type": "Feature","icon": "",' .'"properties": {"content": "'.$this->owner->getTitle().'"},"geometry": {"type": "Point",' .'"coordinates": ['.$this->owner->getField('Longitude').','.$this->owner->getField('Latitude').']}}]}'; } public function DirectionsLink() { return '' .' Get Directions'; } public function getLatestBlogPosts() { return BlogPost::get()->sort('PublishDate DESC'); } }