Map: organization popup links and backend page selector
This commit is contained in:
@@ -31,7 +31,7 @@ class MapModuleDataProvider
|
||||
/**
|
||||
* @return list<array{type:string,markerType:string,id:int,title:string,latitude:float,longitude:float,extra:array<string,mixed>}>
|
||||
*/
|
||||
public function getMapItems(bool $includeOrganizations = true, bool $includeEvents = true, bool $includeExternalOrganizations = false, array $selectedOrganizationTagIds = []): array
|
||||
public function getMapItems(bool $includeOrganizations = true, bool $includeEvents = true, bool $includeExternalOrganizations = false, array $selectedOrganizationTagIds = [], string $organizationListBaseUrl = ''): array
|
||||
{
|
||||
if (!$includeOrganizations && !$includeEvents) {
|
||||
return [];
|
||||
@@ -102,6 +102,7 @@ class MapModuleDataProvider
|
||||
'extra' => [
|
||||
'organizationTagIds' => $tagData['ids'],
|
||||
'organizationTagLabels' => $tagData['labels'],
|
||||
'detailUrl' => $this->buildOrganizationDetailUrl($organizationListBaseUrl, $id),
|
||||
],
|
||||
];
|
||||
}
|
||||
@@ -498,6 +499,19 @@ class MapModuleDataProvider
|
||||
}
|
||||
}
|
||||
|
||||
private function buildOrganizationDetailUrl(string $baseUrl, int $organizationId): string
|
||||
{
|
||||
$normalizedBaseUrl = trim($baseUrl);
|
||||
|
||||
if ('' === $normalizedBaseUrl || $organizationId <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$separator = str_contains($normalizedBaseUrl, '?') ? '&' : '?';
|
||||
|
||||
return sprintf('%s%sshow=%d', $normalizedBaseUrl, $separator, $organizationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list<string> $candidates
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user