Fix backend pitch visibility and tag marker mapping

This commit is contained in:
Jürgen Mummert
2026-02-26 21:46:27 +01:00
parent fc2508af22
commit 1a4811cb02
2 changed files with 22 additions and 6 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ use Contao\StringUtil;
$GLOBALS['TL_DCA']['tl_module']['palettes']['member_organizations'] = '{title_legend},name,headline,type;{eventmanager_legend},editPage;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['member_organizations'] = '{title_legend},name,headline,type;{eventmanager_legend},editPage;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['member_events'] = '{title_legend},name,headline,type;{eventmanager_legend},editPage;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['member_events'] = '{title_legend},name,headline,type;{eventmanager_legend},editPage;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['event_filter'] = '{title_legend},name,headline,type;{eventmanager_legend},cal_calendar,eventListDomId;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['event_filter'] = '{title_legend},name,headline,type;{eventmanager_legend},cal_calendar,eventListDomId;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['eventmanager_map'] = '{title_legend},name,headline,type;{eventmanager_legend},mapShowOrganizations,organizationTypeTags,mapShowExternalOrganizations,mapShowEvents,mapInitialDisplay,mapEventColor,mapOrganizationColor,mapCenterMode;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['eventmanager_map'] = '{title_legend},name,headline,type;{eventmanager_legend},mapShowOrganizations,organizationTypeTags,mapShowExternalOrganizations,mapShowEvents,mapInitialDisplay,mapEventColor,mapOrganizationColor,mapPitch,mapCenterMode;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['organization_edit'] = '{title_legend},name,headline,type;{eventmanager_legend},listPage,logoFolder,organizationTypeTags;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['organization_edit'] = '{title_legend},name,headline,type;{eventmanager_legend},listPage,logoFolder,organizationTypeTags;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['event_edit'] = '{title_legend},name,headline,type;{eventmanager_legend},listPage,eventFolder,termsPage,frontendAuthorId,frontendArchiveId,eventTypeTags;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID'; $GLOBALS['TL_DCA']['tl_module']['palettes']['event_edit'] = '{title_legend},name,headline,type;{eventmanager_legend},listPage,eventFolder,termsPage,frontendAuthorId,frontendArchiveId,eventTypeTags;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
@@ -162,7 +162,7 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['eventListDomId'] = [
$GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'mapCenterMode'; $GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'mapCenterMode';
$GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'mapInitialDisplay'; $GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'mapInitialDisplay';
$GLOBALS['TL_DCA']['tl_module']['subpalettes']['mapCenterMode_custom'] = 'mapCenterLat,mapCenterLng,mapCenterZoom,mapPitch'; $GLOBALS['TL_DCA']['tl_module']['subpalettes']['mapCenterMode_custom'] = 'mapCenterLat,mapCenterLng,mapCenterZoom';
$GLOBALS['TL_DCA']['tl_module']['subpalettes']['mapInitialDisplay_organization_tag'] = 'mapInitialOrganizationTagId'; $GLOBALS['TL_DCA']['tl_module']['subpalettes']['mapInitialDisplay_organization_tag'] = 'mapInitialOrganizationTagId';
$GLOBALS['TL_DCA']['tl_module']['fields']['mapShowOrganizations'] = [ $GLOBALS['TL_DCA']['tl_module']['fields']['mapShowOrganizations'] = [
+19 -3
View File
@@ -216,23 +216,36 @@ class MapModuleDataProvider
return []; return [];
} }
$tagColumns = $this->getColumnMap('tl_tags');
$tagLabelColumn = isset($tagColumns['title']) ? 'title' : (isset($tagColumns['tag']) ? 'tag' : null);
if (null === $tagLabelColumn) {
return [];
}
$rows = $this->connection->executeQuery( $rows = $this->connection->executeQuery(
'SELECT r.pid AS organization_id, r.tag_id, t.tag AS label sprintf(
'SELECT r.pid AS organization_id, r.tag_id, t.%s AS label
FROM tl_tags_rel r FROM tl_tags_rel r
INNER JOIN tl_tags t ON t.id = r.tag_id INNER JOIN tl_tags t ON t.id = r.tag_id
WHERE r.ptable = ? AND r.field = ? AND r.pid IN (?) WHERE r.ptable = ? AND r.field = ? AND r.pid IN (?)
ORDER BY r.pid ASC, r.tag_id ASC', ORDER BY r.pid ASC, r.tag_id ASC',
$tagLabelColumn,
),
['tl_organization', 'tags', $organizationIds], ['tl_organization', 'tags', $organizationIds],
[ParameterType::STRING, ParameterType::STRING, ArrayParameterType::INTEGER], [ParameterType::STRING, ParameterType::STRING, ArrayParameterType::INTEGER],
)->fetchAllAssociative(); )->fetchAllAssociative();
if ([] === $rows) { if ([] === $rows) {
$rows = $this->connection->executeQuery( $rows = $this->connection->executeQuery(
'SELECT r.pid AS organization_id, r.tag_id, t.tag AS label sprintf(
'SELECT r.pid AS organization_id, r.tag_id, t.%s AS label
FROM tl_tags_rel r FROM tl_tags_rel r
INNER JOIN tl_tags t ON t.id = r.tag_id INNER JOIN tl_tags t ON t.id = r.tag_id
WHERE r.ptable = ? AND r.pid IN (?) WHERE r.ptable = ? AND r.pid IN (?)
ORDER BY r.pid ASC, r.tag_id ASC', ORDER BY r.pid ASC, r.tag_id ASC',
$tagLabelColumn,
),
['tl_organization', $organizationIds], ['tl_organization', $organizationIds],
[ParameterType::STRING, ArrayParameterType::INTEGER], [ParameterType::STRING, ArrayParameterType::INTEGER],
)->fetchAllAssociative(); )->fetchAllAssociative();
@@ -246,14 +259,17 @@ class MapModuleDataProvider
$tagId = (int) ($row['tag_id'] ?? 0); $tagId = (int) ($row['tag_id'] ?? 0);
$label = trim((string) ($row['label'] ?? '')); $label = trim((string) ($row['label'] ?? ''));
if ($organizationId <= 0 || $tagId <= 0 || '' === $label || isset($seen[$organizationId][$tagId])) { if ($organizationId <= 0 || $tagId <= 0 || isset($seen[$organizationId][$tagId])) {
continue; continue;
} }
$seen[$organizationId][$tagId] = true; $seen[$organizationId][$tagId] = true;
$map[$organizationId]['ids'][] = (string) $tagId; $map[$organizationId]['ids'][] = (string) $tagId;
if ('' !== $label) {
$map[$organizationId]['labels'][] = $label; $map[$organizationId]['labels'][] = $label;
} }
}
foreach ($map as $organizationId => $tagData) { foreach ($map as $organizationId => $tagData) {
$map[$organizationId]['ids'] = array_values(array_unique($tagData['ids'] ?? [])); $map[$organizationId]['ids'] = array_values(array_unique($tagData['ids'] ?? []));