Source of file LocationExtension.php
Size: 2,501 Bytes - Last Modified: 2021-12-24T06:46:23+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/LocationExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | <?php namespace Dynamic\Locator\React\Extensions; use Dynamic\Locator\Location; use SilverStripe\AssetAdmin\Forms\UploadField; use SilverStripe\Assets\Image; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldSortableHeader; use SilverStripe\ORM\DataExtension; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; use Symbiote\GridFieldExtensions\GridFieldTitleHeader; /** * Class LocationExtension * @package Dynamic\Locator\React\Extensions * * @property int MarkerIconImageID * @method Image MarkerIconImage() * * @property-read Location|LocationExtension $owner */ class LocationExtension extends DataExtension { /** * @var array */ private static $has_one = [ 'MarkerIconImage' => Image::class, ]; /** * @var array */ private static $owns = [ 'MarkerIconImage', ]; /** * @var array */ private static $many_many_extraFields = [ 'Categories' => [ 'Sort' => 'Int', ], ]; /** * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { parent::updateCMSFields($fields); if ($this->owner->ID) { /** @var GridField $categoryField */ $categoryField = $fields->dataFieldByName('Categories'); $categoryField->getConfig()->removeComponentsByType([ GridFieldSortableHeader::class, ])->addComponents([ new GridFieldOrderableRows(), new GridFieldTitleHeader(), ]); } } /** * @return Image|string */ public function getMarkerIcon() { if ($this->owner->MarkerIconImageID) { return $this->owner->MarkerIconImage()->getURL(); } if ($this->owner->Categories()->count()) { $icon = $this->owner->Categories()->sort('Sort')->first()->MarkerIconImage(); return $icon->getURL(); } $imageURL = ''; $this->owner->extend('updateMarkerIconURL', $imageURL); return $imageURL; } /** * @return array */ public function getCategoryData($json = true) { if ($this->owner->Categories()->count()) { $names = $this->owner->Categories()->map('ID', 'Name')->toArray(); return $json ? json_encode($names) : $names; } return $json ? json_encode([]) : []; } } |