Map: organization popup links and backend page selector
This commit is contained in:
@@ -8,6 +8,7 @@ use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController
|
||||
use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule;
|
||||
use Contao\CoreBundle\Twig\FragmentTemplate;
|
||||
use Contao\ModuleModel;
|
||||
use Contao\PageModel;
|
||||
use Contao\StringUtil;
|
||||
use MummertMedia\EventManagerBundle\Service\MapModuleDataProvider;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@@ -52,6 +53,8 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
$selectedOrganizationTagIds = [] === $selectedOrganizationTagIds
|
||||
? []
|
||||
: array_values(array_intersect($selectedOrganizationTagIds, $availableOrganizationTagIds));
|
||||
$organizationListPageId = (int) ($model->mapOrganizationListPage ?? 0);
|
||||
$organizationListBaseUrl = $this->buildOrganizationListBaseUrl($organizationListPageId, $request);
|
||||
$initialDisplay = (string) ($model->mapInitialDisplay ?? self::DEFAULT_INITIAL_DISPLAY);
|
||||
$initialOrganizationTagId = (int) ($model->mapInitialOrganizationTagId ?? 0);
|
||||
$centerMode = (string) ($model->mapCenterMode ?? self::DEFAULT_CENTER_MODE);
|
||||
@@ -88,7 +91,7 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
$template->set('mapCenterZoom', (int) ($model->mapCenterZoom ?? 12));
|
||||
$template->set('mapPitch', $mapPitch);
|
||||
$template->set('mapItemsJson', json_encode(
|
||||
$this->mapModuleDataProvider->getMapItems($showOrganizations, $showEvents, $showExternalOrganizations, $selectedOrganizationTagIds),
|
||||
$this->mapModuleDataProvider->getMapItems($showOrganizations, $showEvents, $showExternalOrganizations, $selectedOrganizationTagIds, $organizationListBaseUrl),
|
||||
\JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_APOS | \JSON_HEX_QUOT | \JSON_UNESCAPED_UNICODE | \JSON_THROW_ON_ERROR,
|
||||
));
|
||||
$template->set('mapOrganizationTags', $this->mapModuleDataProvider->getOrganizationTags($selectedOrganizationTagIds));
|
||||
@@ -147,4 +150,29 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
|
||||
return $parsedPitch;
|
||||
}
|
||||
|
||||
private function buildOrganizationListBaseUrl(int $pageId, Request $request): string
|
||||
{
|
||||
if ($pageId <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$pageModel = PageModel::findById($pageId);
|
||||
|
||||
if (null === $pageModel) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$frontendUrl = trim((string) $pageModel->getFrontendUrl());
|
||||
|
||||
if ('' === $frontendUrl) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (preg_match('#^https?://#i', $frontendUrl)) {
|
||||
return $frontendUrl;
|
||||
}
|
||||
|
||||
return rtrim($request->getSchemeAndHttpHost(), '/').'/'.ltrim($frontendUrl, '/');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user