diff --git a/README.md b/README.md index e7c48fb..5fc9e3e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # silverstripe-elemental-basics + +[![Silverstripe Version](https://img.shields.io/badge/Silverstripe-5.1-005ae1.svg?labelColor=white&logoColor=ffffff&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDEuMDkxIDU4LjU1NSIgZmlsbD0iIzAwNWFlMSIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNNTAuMDE1IDUuODU4bC0yMS4yODMgMTQuOWE2LjUgNi41IDAgMCAwIDcuNDQ4IDEwLjY1NGwyMS4yODMtMTQuOWM4LjgxMy02LjE3IDIwLjk2LTQuMDI4IDI3LjEzIDQuNzg2czQuMDI4IDIwLjk2LTQuNzg1IDI3LjEzbC02LjY5MSA0LjY3NmM1LjU0MiA5LjQxOCAxOC4wNzggNS40NTUgMjMuNzczLTQuNjU0QTMyLjQ3IDMyLjQ3IDAgMCAwIDUwLjAxNSA1Ljg2MnptMS4wNTggNDYuODI3bDIxLjI4NC0xNC45YTYuNSA2LjUgMCAxIDAtNy40NDktMTAuNjUzTDQzLjYyMyA0Mi4wMjhjLTguODEzIDYuMTctMjAuOTU5IDQuMDI5LTI3LjEyOS00Ljc4NHMtNC4wMjktMjAuOTU5IDQuNzg0LTI3LjEyOWw2LjY5MS00LjY3NkMyMi40My0zLjk3NiA5Ljg5NC0uMDEzIDQuMTk4IDEwLjA5NmEzMi40NyAzMi40NyAwIDAgMCA0Ni44NzUgNDIuNTkyeiIvPjwvc3ZnPg==)](https://packagist.org/packages/goldfinch/google-maps) + Some useful elemental blocks ## Usefull UNIX console utilities @@ -20,4 +23,4 @@ https://github.com/ogham/exa ### git diff tool with bat code hightlighting (git show) -https://github.com/dandavison/delta \ No newline at end of file +https://github.com/dandavison/delta diff --git a/composer.json b/composer.json index 22e989c..a46d004 100644 --- a/composer.json +++ b/composer.json @@ -13,15 +13,13 @@ }], "minimum-stability": "dev", "require": { - "silverstripe/cms": "^4", + "silverstripe/cms": "^5", "dnadesign/silverstripe-elemental": "*", "dnadesign/silverstripe-elemental-list": "*", - "betterbrief/silverstripe-googlemapfield": "*", "symbiote/silverstripe-gridfieldextensions": "*", "dynamic/silverstripe-elemental-image": "*", "gorriecoe/silverstripe-linkfield": "*", - "a2nt/silverstripe-mapboxfield": "dev-master", - "lekoala/silverstripe-filepond": "*" + "lekoala/silverstripe-filepond": "*" }, "autoload": { "psr-4": { diff --git a/src/Elements/AccordionElement.php b/src/Elements/AccordionElement.php index 95fdaba..6da4783 100755 --- a/src/Elements/AccordionElement.php +++ b/src/Elements/AccordionElement.php @@ -28,14 +28,14 @@ class AccordionElement extends ElementList private static $table_name = 'AccordionElement'; - private static $db = [ - 'OpenFirst' => 'Boolean(0)', - 'KeepOpenned' => 'Boolean(0)', - ]; + private static $db = [ + 'OpenFirst' => 'Boolean(0)', + 'KeepOpenned' => 'Boolean(0)', + ]; - public function getType() + public function getType(): string { - return self::$singular_name; + return _t(__CLASS__ . '.BlockType', self::$singular_name); } public function Accordion() @@ -43,15 +43,15 @@ class AccordionElement extends ElementList return $this->Elements()->renderWith(static::class.'_AccordionArea'); } - public function getCMSFields() - { - $fields = parent::getCMSFields(); + public function getCMSFields() + { + $fields = parent::getCMSFields(); - $fields->addFieldsToTab('Root.Main', [ - CheckboxField::create('OpenFirst', 'Open first accordion element on page load'), - CheckboxField::create('KeepOpenned', 'Keep elements open'), - ]); + $fields->addFieldsToTab('Root.Main', [ + CheckboxField::create('OpenFirst', 'Open first accordion element on page load'), + CheckboxField::create('KeepOpenned', 'Keep elements open'), + ]); - return $fields; - } + return $fields; + } } diff --git a/src/Elements/CustomSnippetElement.php b/src/Elements/CustomSnippetElement.php index 5ec85f2..856936e 100755 --- a/src/Elements/CustomSnippetElement.php +++ b/src/Elements/CustomSnippetElement.php @@ -28,9 +28,9 @@ class CustomSnippetElement extends ElementContent private static $table_name = 'CustomSnippetElement'; - public function getType() + public function getType(): string { - return self::$singular_name; + return _t(__CLASS__ . '.BlockType', self::$singular_name); } public function getCMSFields() diff --git a/src/Elements/InstagramElement.php b/src/Elements/InstagramElement.php index b45998b..e1bf98a 100755 --- a/src/Elements/InstagramElement.php +++ b/src/Elements/InstagramElement.php @@ -45,9 +45,9 @@ class InstagramElement extends BaseElement 'DisplayGallery' => true, ]; - public function getType() + public function getType(): string { - return self::$singular_name; + return _t(__CLASS__ . '.BlockType', self::$singular_name); } /** @@ -89,7 +89,7 @@ class InstagramElement extends BaseElement foreach ($attributes as $name => $value) { if ($value === true) { $value = $name; - } else if (is_scalar($value)) { + } elseif (is_scalar($value)) { $value = (string) $value; } else { $value = json_encode($value); diff --git a/src/Elements/MapElement.php b/src/Elements/MapElement.php deleted file mode 100755 index b3c9d2a..0000000 --- a/src/Elements/MapElement.php +++ /dev/null @@ -1,105 +0,0 @@ -remove('HTML'); - - $tab = $fields->findOrMakeTab('Root.MapPins'); - $tab->setTitle('Description'); - $tab->push(HTMLEditorField::create('HTML', 'Content')); - - $fields->addFieldsToTab('Root.Main', [ - NumericField::create('MapZoom', 'Initial Map Zoom (enter a number from 0 to 24)'), - GridField::create( - 'Locations', - 'Locations', - $this->Locations(), - $cfg = GridFieldConfig_RelationEditor::create(100) - ) - ]); - - $cfg->getComponentByType(GridFieldDataColumns::class)->setFieldFormatting([ - 'ShowAtMap' => static function ($v, $obj) { - return $v ? 'YES' : 'NO'; - } - ]); - $cfg->addComponent(new BulkManager()); - - return $fields; - } - - public static function MapAPIKey(): string - { - $type = self::config()->get('map_type'); - - switch ($type) { - case 'mapbox': - $key = MapboxField::getAccessToken(); - break; - case 'google-maps': - $cfg = Config::inst()->get(GoogleMapField::class, 'default_options'); - $key = $cfg['api_key']; - break; - default: - $key = ''; - break; - } - - return $key; - } -} diff --git a/src/Elements/SidebarElement.php b/src/Elements/SidebarElement.php index a216ef9..c780c66 100755 --- a/src/Elements/SidebarElement.php +++ b/src/Elements/SidebarElement.php @@ -29,6 +29,6 @@ class SidebarElement extends BaseElement public function getType(): string { - return self::$singular_name; + return _t(__CLASS__ . '.BlockType', self::$singular_name); } } diff --git a/src/Elements/TeamMembersElement.php b/src/Elements/TeamMembersElement.php index 3ba2f6b..f9f73b8 100755 --- a/src/Elements/TeamMembersElement.php +++ b/src/Elements/TeamMembersElement.php @@ -25,9 +25,9 @@ class TeamMembersElement extends BaseElement private static $description = 'Displays random Team Members'; - public function getType() + public function getType(): string { - return self::$singular_name; + return _t(__CLASS__ . '.BlockType', self::$singular_name); } public function Members() diff --git a/src/Extensions/BaseElementEx.php b/src/Extensions/BaseElementEx.php index e0977f1..ca5e80e 100755 --- a/src/Extensions/BaseElementEx.php +++ b/src/Extensions/BaseElementEx.php @@ -31,12 +31,15 @@ class BaseElementEx extends DataExtension parent::updateCMSFields($fields); if ($obj->ID) { - $fields->insertBefore(LiteralField::create( - 'AnchorName', - '
' - .'Element Anchor name: #e'.$obj->ID.'' - .'
' - ), 'Title'); + $fields->insertBefore( + 'Title', + LiteralField::create( + 'AnchorName', + '
' + .'Element Anchor name: #e'.$obj->ID.'' + .'
' + ) + ); } $tab = $fields->findOrMakeTab('Root.Settings'); @@ -74,7 +77,7 @@ class BaseElementEx extends DataExtension public function updateCMSEditLink(&$link): void { - if(!method_exists($this->owner, 'inlineEditable')) { + if (!method_exists($this->owner, 'inlineEditable')) { return; } diff --git a/src/Models/MapPin.php b/src/Models/MapPin.php deleted file mode 100755 index d0c560d..0000000 --- a/src/Models/MapPin.php +++ /dev/null @@ -1,172 +0,0 @@ - 'Varchar(255)', - 'ShowAtMap' => 'Boolean(1)', - ]; - - private static $has_one = [ - 'PhoneNumber' => Link::class, - 'Fax' => Link::class, - ]; - - private static $extensions = [ - Addressable::class, - MarkerExtension::class, - Versioned::class, - ]; - - private static $belongs_many_many = [ - 'MapElements' => MapElement::class, - ]; - - private static $default_sort = 'Title ASC, ID DESC'; - - private static $summary_fields = [ - 'Title', - 'Address', - 'ShowAtMap', - ]; - - private static $defaults = [ - 'ShowAtMap' => '1', - 'Suburb' => 'Syracuse', - 'State' => 'NY', - 'Postcode' => '13210', - 'Country' => 'US', - ]; - - public function getCMSFields() - { - $fields = parent::getCMSFields(); - - $fields->removeByName('MapElements'); - - $fields->replaceField( - 'PhoneNumberID', - LinkField::create('PhoneNumber', 'Phone Number', $this, [ - 'types' => ['Phone'] - ]) - ); - - $fields->replaceField( - 'Fax', - LinkField::create('Fax', 'FAX', $this, [ - 'types' => ['Phone'] - ]) - ); - $fields->removeByName(['Map', 'LatLngOverride', 'Lng','Lat']); - - $fields->addFieldsToTab('Root.Main', [ - CheckboxField::create('ShowAtMap', 'Show at the map?'), - CheckboxField::create('LatLngOverride', 'Override Latitude and Longitude?') - ->setDescription('Check this box and save to be able to edit the latitude and longitude manually.'), - MapboxField::create('Map', 'Choose a location', 'Lat', 'Lng'), - ]); - - $this->extend('updateMapPinFields', $fields); - - return $fields; - } - - public function onBeforeWrite() - { - parent::onBeforeWrite(); - - $lng = $this->getField('Lng'); - $lat = $this->getField('Lat'); - - - if (!$this->getField('Country')) { - $this->setField('Country', 'us'); - } - - // geocode - try { - // reverse geocoding get address - if (!$this->hasAddress() && $lng && $lat) { - require_once BASE_PATH . '/app/thirdparty/geocoding-example/php/Mapbox.php'; - $mapbox = new \Mapbox(MapboxField::getAccessToken()); - - // GET Address - $res = $mapbox->reverseGeocode($lng, $lat); - if ($res->success() && $res->getCount()) { - $res = $res->getData(); - if (count($res) && isset($res[0]['place_name'])) { - $details = explode(',', $res[0]['place_name']); - $fields = [ - 'Address', - 'City', - 'State', - //'Country', - ]; - - $n = count($fields); - for ($i = 0; $i < $n; $i++) { - if (!isset($details[$i])) { - continue; - } - - $name = $fields[$i]; - $val = $details[$i]; - - // get postal code - if ($name === 'State') { - $this->setField('PostalCode', substr($val, strrpos($val, ' ')+1)); - } - - $this->setField($name, $val); - } - } - } - } - } catch (\Exception $e) { - } - } -}