mirror of
https://github.com/a2nt/silverstripe-webpack.git
synced 2024-10-22 17:05:31 +02:00
IMPROVEMETS: Map and Widgets functionality
This commit is contained in:
parent
a4adb0ab1d
commit
ee112280e8
@ -49,7 +49,7 @@ DNADesign\ElementalUserForms\Model\ElementForm:
|
|||||||
# Blog + Widgets module extensions
|
# Blog + Widgets module extensions
|
||||||
Page:
|
Page:
|
||||||
extensions:
|
extensions:
|
||||||
- SilverStripe\Widgets\Extensions\WidgetPageExtension
|
- Site\Widgets\WidgetPageExtension
|
||||||
|
|
||||||
SilverStripe\Blog\Model\Blog:
|
SilverStripe\Blog\Model\Blog:
|
||||||
extensions:
|
extensions:
|
||||||
@ -57,3 +57,20 @@ SilverStripe\Blog\Model\Blog:
|
|||||||
SilverStripe\Blog\Model\BlogPost:
|
SilverStripe\Blog\Model\BlogPost:
|
||||||
extensions:
|
extensions:
|
||||||
- Site\Extensions\BlogPostExtension
|
- Site\Extensions\BlogPostExtension
|
||||||
|
|
||||||
|
SilverStripe\Widgets\Model\Widget:
|
||||||
|
icon: '<i class="icon font-icon-p-document"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogArchiveWidget:
|
||||||
|
icon: '<i class="icon font-icon-p-archive"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogCategoriesWidget:
|
||||||
|
icon: '<i class="icon font-icon-page-multiple"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogFeaturedPostsWidget:
|
||||||
|
icon: '<i class="icon font-icon-chart-line"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogRecentPostsWidget:
|
||||||
|
icon: '<i class="icon font-icon-back-in-time"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogTagsCloudWidget:
|
||||||
|
icon: '<i class="icon font-icon-tags"></i>'
|
||||||
|
SilverStripe\Blog\Widgets\BlogTagsWidget:
|
||||||
|
icon: '<i class="icon font-icon-tags"></i>'
|
||||||
|
only_available_in:
|
||||||
|
- CMSMain_HiddenClass
|
||||||
|
@ -11,7 +11,15 @@ SilverStripe\Core\Injector\Injector:
|
|||||||
Symbiote\Addressable\GeocodeServiceInterface:
|
Symbiote\Addressable\GeocodeServiceInterface:
|
||||||
class: Symbiote\Addressable\MapboxGeocodeService
|
class: Symbiote\Addressable\MapboxGeocodeService
|
||||||
|
|
||||||
Symbiote\Addressable\MapboxGeocodeService:
|
|
||||||
mapbox_api_key: ''
|
|
||||||
A2nt\SilverStripeMapboxField\MapboxField:
|
A2nt\SilverStripeMapboxField\MapboxField:
|
||||||
map_style: 'mapbox://styles/mapbox/streets-v9' #'mapbox://styles/mapbox/light-v10'
|
map_style: 'mapbox://styles/mapbox/streets-v9' #'mapbox://styles/mapbox/light-v10'
|
||||||
|
|
||||||
|
Site\Elements\MapElement:
|
||||||
|
map_type: 'google-maps'
|
||||||
|
|
||||||
|
BetterBrief\GoogleMapField:
|
||||||
|
default_options:
|
||||||
|
api_key: ''
|
||||||
|
|
||||||
|
Symbiote\Addressable\MapboxGeocodeService:
|
||||||
|
mapbox_api_key: ''
|
||||||
|
@ -9,7 +9,14 @@
|
|||||||
namespace Site\Elements;
|
namespace Site\Elements;
|
||||||
|
|
||||||
use A2nt\SilverStripeMapboxField\MapboxField;
|
use A2nt\SilverStripeMapboxField\MapboxField;
|
||||||
|
use BetterBrief\GoogleMapField;
|
||||||
use DNADesign\Elemental\Models\ElementContent;
|
use DNADesign\Elemental\Models\ElementContent;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
|
||||||
|
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
|
||||||
|
use SilverStripe\Forms\NumericField;
|
||||||
use Site\Controllers\MapElementController;
|
use Site\Controllers\MapElementController;
|
||||||
use Site\Extensions\MapExtension;
|
use Site\Extensions\MapExtension;
|
||||||
|
|
||||||
@ -26,27 +33,57 @@ class MapElement extends ElementContent
|
|||||||
private static $table_name = 'MapElement';
|
private static $table_name = 'MapElement';
|
||||||
|
|
||||||
private static $controller_class = MapElementController::class;
|
private static $controller_class = MapElementController::class;
|
||||||
|
private static $map_type = 'mapbox';
|
||||||
|
|
||||||
private static $extensions = [
|
private static $extensions = [
|
||||||
MapExtension::class,
|
MapExtension::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
public function getType()
|
public function getType():string
|
||||||
{
|
{
|
||||||
return self::$singular_name;
|
return self::$singular_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCMSFields()
|
public function getCMSFields(): FieldList
|
||||||
{
|
{
|
||||||
$fields = parent::getCMSFields();
|
$fields = parent::getCMSFields();
|
||||||
|
|
||||||
$fields->removeByName('Locations');
|
$fields->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->owner->Locations(),
|
||||||
|
GridFieldConfig_RelationEditor::create(100)
|
||||||
|
)
|
||||||
|
]);
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function MapAPIKey()
|
public function MapAPIKey(): string
|
||||||
{
|
{
|
||||||
return MapboxField::getAccessToken();
|
$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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
namespace Site\Extensions;
|
namespace Site\Extensions;
|
||||||
|
|
||||||
|
|
||||||
use SilverStripe\Core\Extension;
|
use SilverStripe\Core\Extension;
|
||||||
use SilverStripe\Forms\CompositeField;
|
use SilverStripe\Forms\CompositeField;
|
||||||
use SilverStripe\Forms\FieldList;
|
use SilverStripe\Forms\FieldList;
|
||||||
@ -32,11 +31,12 @@ class MapExtension extends DataExtension
|
|||||||
'Locations',
|
'Locations',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function updateCMSFields(FieldList $fields)
|
public function updateCMSFields(FieldList $fields): void
|
||||||
{
|
{
|
||||||
parent::updateCMSFields($fields);
|
parent::updateCMSFields($fields);
|
||||||
|
|
||||||
$fields->addFieldsToTab('Root.Map', [
|
$fields->removeByName('Locations');
|
||||||
|
$fields->addFieldsToTab('Root.MapPins', [
|
||||||
NumericField::create('MapZoom', 'Initial Map Zoom (enter a number from 0 to 24)'),
|
NumericField::create('MapZoom', 'Initial Map Zoom (enter a number from 0 to 24)'),
|
||||||
GridField::create(
|
GridField::create(
|
||||||
'Locations',
|
'Locations',
|
||||||
@ -45,6 +45,8 @@ class MapExtension extends DataExtension
|
|||||||
GridFieldConfig_RelationEditor::create(100)
|
GridFieldConfig_RelationEditor::create(100)
|
||||||
)
|
)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$fields->findOrMakeTab('Root.MapPins')->setTitle('Locations');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getGeoJSON(): string
|
public function getGeoJSON(): string
|
||||||
|
@ -12,6 +12,7 @@ use A2nt\SilverStripeMapboxField\MapboxField;
|
|||||||
use A2nt\SilverStripeMapboxField\MarkerExtension;
|
use A2nt\SilverStripeMapboxField\MarkerExtension;
|
||||||
use Sheadawson\Linkable\Forms\LinkField;
|
use Sheadawson\Linkable\Forms\LinkField;
|
||||||
use Sheadawson\Linkable\Models\Link;
|
use Sheadawson\Linkable\Models\Link;
|
||||||
|
use SilverStripe\Forms\CheckboxField;
|
||||||
use SilverStripe\ORM\DataObject;
|
use SilverStripe\ORM\DataObject;
|
||||||
use SilverStripe\Versioned\Versioned;
|
use SilverStripe\Versioned\Versioned;
|
||||||
use Site\Elements\MapElement;
|
use Site\Elements\MapElement;
|
||||||
@ -46,6 +47,8 @@ class MapPin extends DataObject
|
|||||||
{
|
{
|
||||||
$fields = parent::getCMSFields();
|
$fields = parent::getCMSFields();
|
||||||
|
|
||||||
|
$fields->removeByName('MapElements');
|
||||||
|
|
||||||
$fields->replaceField(
|
$fields->replaceField(
|
||||||
'PhoneNumberID',
|
'PhoneNumberID',
|
||||||
LinkField::create('PhoneNumberID', 'Phone Number')
|
LinkField::create('PhoneNumberID', 'Phone Number')
|
||||||
@ -57,8 +60,11 @@ class MapPin extends DataObject
|
|||||||
LinkField::create('FaxID', 'FAX')
|
LinkField::create('FaxID', 'FAX')
|
||||||
->setAllowedTypes(['Phone'])
|
->setAllowedTypes(['Phone'])
|
||||||
);
|
);
|
||||||
|
$fields->removeByName(['Map', 'LatLngOverride', 'Lng','Lat']);
|
||||||
|
|
||||||
$fields->addFieldsToTab('Root.Map', [
|
$fields->addFieldsToTab('Root.Main', [
|
||||||
|
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'),
|
MapboxField::create('Map', 'Choose a location', 'Lat', 'Lng'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -89,12 +95,12 @@ class MapPin extends DataObject
|
|||||||
'Address',
|
'Address',
|
||||||
'City',
|
'City',
|
||||||
'State',
|
'State',
|
||||||
'Country',
|
//'Country',
|
||||||
];
|
];
|
||||||
|
|
||||||
$n = count($fields);
|
$n = count($fields);
|
||||||
for($i = 0; $i < $n; $i++) {
|
for ($i = 0; $i < $n; $i++) {
|
||||||
if(!isset($details[$i])){
|
if (!isset($details[$i])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,7 +109,7 @@ class MapPin extends DataObject
|
|||||||
|
|
||||||
// get postal code
|
// get postal code
|
||||||
if ($name === 'State') {
|
if ($name === 'State') {
|
||||||
$this->setField('PostalCode',substr($val ,strrpos($val, ' ')+1));
|
$this->setField('PostalCode', substr($val, strrpos($val, ' ')+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setField($name, $val);
|
$this->setField($name, $val);
|
||||||
@ -111,7 +117,7 @@ class MapPin extends DataObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
49
app/src/Widgets/BannerWidget.php
Normal file
49
app/src/Widgets/BannerWidget.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Site\Widgets;
|
||||||
|
|
||||||
|
use Sheadawson\Linkable\Forms\LinkField;
|
||||||
|
use Sheadawson\Linkable\Models\Link;
|
||||||
|
use SilverStripe\AssetAdmin\Forms\UploadField;
|
||||||
|
use SilverStripe\Assets\Image;
|
||||||
|
use SilverStripe\Widgets\Model\Widget;
|
||||||
|
|
||||||
|
if (!class_exists(Widget::class)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BannerWidget extends Widget
|
||||||
|
{
|
||||||
|
private static $title = 'Banner';
|
||||||
|
private static $cmsTitle = 'Banner';
|
||||||
|
private static $description = 'Shows banner with image and link.';
|
||||||
|
private static $icon = '<i class="icon font-icon-block-banner"></i>';
|
||||||
|
private static $table_name = 'BannerWidget';
|
||||||
|
|
||||||
|
private static $db = [
|
||||||
|
'Title' => 'Varchar(255)',
|
||||||
|
];
|
||||||
|
|
||||||
|
private static $has_one = [
|
||||||
|
'Image' => Image::class,
|
||||||
|
'Link' => Link::class,
|
||||||
|
];
|
||||||
|
|
||||||
|
private static $owns = [
|
||||||
|
'Image',
|
||||||
|
'Link',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function getCMSFields()
|
||||||
|
{
|
||||||
|
$fields = parent::getCMSFields();
|
||||||
|
|
||||||
|
$fields->push(UploadField::create('Image')
|
||||||
|
->setAllowedFileCategories(['image/supported']));
|
||||||
|
|
||||||
|
$fields->push(LinkField::create('LinkID', 'Link'));
|
||||||
|
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
}
|
155
app/src/Widgets/WidgetAreaField.php
Normal file
155
app/src/Widgets/WidgetAreaField.php
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Site\Widgets;
|
||||||
|
|
||||||
|
|
||||||
|
use DNADesign\Elemental\Controllers\ElementalAreaController;
|
||||||
|
use DNADesign\Elemental\Forms\ElementalAreaConfig;
|
||||||
|
use DNADesign\Elemental\Forms\ElementalAreaField;
|
||||||
|
use DNADesign\Elemental\Models\BaseElement;
|
||||||
|
use DNADesign\Elemental\Models\ElementalArea;
|
||||||
|
use SilverStripe\Control\Controller;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
|
use SilverStripe\Forms\CompositeField;
|
||||||
|
use SilverStripe\Forms\FieldGroup;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Forms\FormField;
|
||||||
|
use SilverStripe\Forms\GridField\GridField;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldAddExistingAutocompleter;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldAddNewButton;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig_Base;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldDataColumns;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldDeleteAction;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldDetailForm;
|
||||||
|
use SilverStripe\Forms\GridField\GridFieldEditButton;
|
||||||
|
use SilverStripe\Forms\TabSet;
|
||||||
|
use SilverStripe\ORM\DataObjectInterface;
|
||||||
|
use SilverStripe\Widgets\Model\Widget;
|
||||||
|
use SilverStripe\Widgets\Model\WidgetArea;
|
||||||
|
use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass;
|
||||||
|
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;
|
||||||
|
|
||||||
|
class WidgetAreaField extends GridField
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ElementalArea $area
|
||||||
|
*/
|
||||||
|
protected $area;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array $type
|
||||||
|
*/
|
||||||
|
protected $types = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var null
|
||||||
|
*/
|
||||||
|
protected $inputType = null;
|
||||||
|
|
||||||
|
protected $modelClassName = Widget::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $name
|
||||||
|
* @param ElementalArea $area
|
||||||
|
* @param string[] $blockTypes
|
||||||
|
*/
|
||||||
|
public function __construct($name, WidgetArea $area, array $blockTypes)
|
||||||
|
{
|
||||||
|
$this->setTypes($blockTypes);
|
||||||
|
|
||||||
|
$config = GridFieldConfig_Base::create();
|
||||||
|
|
||||||
|
$config->getComponentByType(GridFieldDataColumns::class)->setDisplayFields([
|
||||||
|
'Icon' => '',
|
||||||
|
'Title' => 'Title',
|
||||||
|
'LastEdited' => 'Changed',
|
||||||
|
])->setFieldFormatting([
|
||||||
|
'Icon' => static function($v, Widget $item) {
|
||||||
|
return '<span style="font-size:2rem">'.$item::config()->get('icon').'</span>';
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
$config->addComponent(new GridFieldEditButton());
|
||||||
|
$config->addComponent(new GridFieldDeleteAction(false));
|
||||||
|
$config->addComponent(new GridFieldDetailForm(null, false, false));
|
||||||
|
$config->addComponent(new GridFieldSortableRows('Sort'));
|
||||||
|
|
||||||
|
if (!empty($blockTypes)) {
|
||||||
|
/** @var GridFieldAddNewMultiClass $adder */
|
||||||
|
$adder = Injector::inst()->create(GridFieldAddNewMultiClass::class);
|
||||||
|
$adder->setClasses($blockTypes);
|
||||||
|
$config->addComponent($adder);
|
||||||
|
}
|
||||||
|
|
||||||
|
// By default, no need for a title on the editor. If there is more than one area then use `setTitle` to describe
|
||||||
|
parent::__construct($name, '', $area->Widgets(), $config);
|
||||||
|
|
||||||
|
$this->area = $area;
|
||||||
|
$this->addExtraClass('element-editor__container no-change-track');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $types
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setTypes($types)
|
||||||
|
{
|
||||||
|
$this->types = $types;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getTypes()
|
||||||
|
{
|
||||||
|
$types = $this->types;
|
||||||
|
|
||||||
|
$this->extend('updateGetTypes', $types);
|
||||||
|
|
||||||
|
return $types;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ElementalArea
|
||||||
|
*/
|
||||||
|
public function getArea()
|
||||||
|
{
|
||||||
|
return $this->area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveInto(DataObjectInterface $dataObject)
|
||||||
|
{
|
||||||
|
parent::saveInto($dataObject);
|
||||||
|
|
||||||
|
$elementData = $this->Value();
|
||||||
|
$idPrefixLength = strlen(sprintf(ElementalAreaController::FORM_NAME_TEMPLATE, ''));
|
||||||
|
|
||||||
|
if (!$elementData) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($elementData as $form => $data) {
|
||||||
|
// Extract the ID
|
||||||
|
$elementId = (int) substr($form, $idPrefixLength);
|
||||||
|
|
||||||
|
/** @var BaseElement $element */
|
||||||
|
$element = $this->getArea()->Widgets()->byID($elementId);
|
||||||
|
|
||||||
|
if (!$element) {
|
||||||
|
// Ignore invalid elements
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = ElementalAreaController::removeNamespacesFromFields($data, $element->ID);
|
||||||
|
|
||||||
|
$element->updateFromFormData($data);
|
||||||
|
$element->write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
37
app/src/Widgets/WidgetPageExtension.php
Normal file
37
app/src/Widgets/WidgetPageExtension.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Site\Widgets;
|
||||||
|
|
||||||
|
|
||||||
|
use DNADesign\Elemental\Forms\ElementalAreaField;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\Widgets\Forms\WidgetAreaEditor;
|
||||||
|
use SilverStripe\Widgets\Model\Widget;
|
||||||
|
|
||||||
|
class WidgetPageExtension extends \SilverStripe\Widgets\Extensions\WidgetPageExtension
|
||||||
|
{
|
||||||
|
public function updateCMSFields(FieldList $fields)
|
||||||
|
{
|
||||||
|
parent::updateCMSFields($fields);
|
||||||
|
|
||||||
|
$tab = $fields->findOrMakeTab('Root.Widgets');
|
||||||
|
|
||||||
|
$tab->setTitle('Sidebar');
|
||||||
|
|
||||||
|
$tab->removeByName('SideBar');
|
||||||
|
|
||||||
|
$widgetTypes = WidgetAreaEditor::create('Sidebar')->AvailableWidgets();
|
||||||
|
$available = [];
|
||||||
|
/** @var Widget $type */
|
||||||
|
foreach ($widgetTypes as $type) {
|
||||||
|
$available[get_class($type)] = $type->getCMSTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
$tab->push(WidgetAreaField::create(
|
||||||
|
'SideBar',
|
||||||
|
$this->owner->Sidebar(),
|
||||||
|
$available
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
<div
|
<div
|
||||||
class="mapAPI-map-container"
|
class="mapAPI-map-container"
|
||||||
data-map-zoom="$MapZoom"
|
data-map-zoom="$MapZoom"
|
||||||
data-key="<% if $MapAPIKey %>$MapAPIKey<% else %>$SiteConfig.MapAPIKey<% end_if %>"
|
data-key="$MapAPIKey"
|
||||||
data-map-style="<% if $MapStyle %>$MapStyle<% else %>$SiteConfig.MapStyle<% end_if %>"
|
data-map-style="<% if $MapStyle %>$MapStyle<% else %>$SiteConfig.MapStyle<% end_if %>"
|
||||||
data-geojson="$GeoJSON.XML"
|
data-geojson="$GeoJSON.XML"
|
||||||
data-fly-to-marker="true"
|
data-fly-to-marker="true"
|
||||||
|
Loading…
Reference in New Issue
Block a user