Refactor type handling to contao-tags and add module tag filters
This commit is contained in:
@@ -22,7 +22,7 @@ $GLOBALS['TL_DCA']['tl_calendar_events']['config']['onload_callback'][] = static
|
||||
|
||||
PaletteManipulator::create()
|
||||
->addLegend('organization_legend', 'details_legend', PaletteManipulator::POSITION_AFTER)
|
||||
->addField(['location_id', 'type', 'organizations'], 'organization_legend', PaletteManipulator::POSITION_APPEND)
|
||||
->addField(['location_id', 'tags', 'organizations'], 'organization_legend', PaletteManipulator::POSITION_APPEND)
|
||||
->applyToPalette((string) $paletteName, 'tl_calendar_events');
|
||||
|
||||
PaletteManipulator::create()
|
||||
@@ -71,14 +71,18 @@ $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['location_id'] = [
|
||||
'sql' => ['type' => 'integer', 'unsigned' => true, 'default' => 0],
|
||||
];
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['type'] = [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['type'],
|
||||
$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['tags'] = [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['tags'],
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'inputType' => 'select',
|
||||
'options' => ['accommodation', 'shopping', 'culture'],
|
||||
'reference' => &$GLOBALS['TL_LANG']['tl_calendar_events']['type_options'],
|
||||
'eval' => ['multiple' => true, 'chosen' => true, 'includeBlankOption' => false, 'tl_class' => 'w50'],
|
||||
'foreignKey' => 'tl_tags.tag',
|
||||
'options_callback' => ['numero2_tags.listener.data_container.tags', 'getTagOptions'],
|
||||
'load_callback' => [['numero2_tags.listener.data_container.tags', 'loadTags']],
|
||||
'save_callback' => [['numero2_tags.listener.data_container.tags', 'saveTags']],
|
||||
'eval' => ['multiple' => true, 'size' => 8, 'tl_class' => 'w50 tags', 'chosen' => true, 'groupTagsByField' => true, 'tagGroup' => 'event_type'],
|
||||
'sql' => ['type' => 'blob', 'notnull' => false],
|
||||
'relation' => ['type' => 'hasMany', 'load' => 'eager'],
|
||||
];
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['organizations'] = [
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Contao\Database;
|
||||
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_events'] = '{title_legend},name,headline,type;{eventmanager_legend},editPage;{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;{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;{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']['fields']['editPage'] = [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['editPage'],
|
||||
@@ -62,3 +65,57 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['frontendArchiveId'] = [
|
||||
'eval' => ['mandatory' => true, 'rgxp' => 'digit', 'maxlength' => 10, 'tl_class' => 'w50'],
|
||||
'sql' => ['type' => 'integer', 'unsigned' => true, 'default' => 0],
|
||||
];
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_module']['fields']['organizationTypeTags'] = [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['organizationTypeTags'],
|
||||
'exclude' => true,
|
||||
'inputType' => 'checkbox',
|
||||
'options_callback' => static function () {
|
||||
$rows = Database::getInstance()
|
||||
->prepare('SELECT DISTINCT t.id, t.tag FROM tl_tags t LEFT JOIN tl_tags_rel r ON r.tag_id=t.id AND r.ptable=? AND r.field=? ORDER BY t.tag ASC')
|
||||
->execute('tl_organization', 'tags')
|
||||
->fetchAllAssoc();
|
||||
|
||||
$options = [];
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$options[(int) $row['id']] = (string) $row['tag'];
|
||||
}
|
||||
|
||||
return $options;
|
||||
},
|
||||
'eval' => ['multiple' => true, 'tl_class' => 'clr'],
|
||||
'sql' => ['type' => 'blob', 'notnull' => false],
|
||||
'save_callback' => [
|
||||
static function ($value): array {
|
||||
return array_values(array_unique(array_map('intval', StringUtil::deserialize($value, true))));
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_module']['fields']['eventTypeTags'] = [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['eventTypeTags'],
|
||||
'exclude' => true,
|
||||
'inputType' => 'checkbox',
|
||||
'options_callback' => static function () {
|
||||
$rows = Database::getInstance()
|
||||
->prepare('SELECT DISTINCT t.id, t.tag FROM tl_tags t LEFT JOIN tl_tags_rel r ON r.tag_id=t.id AND r.ptable=? AND r.field=? ORDER BY t.tag ASC')
|
||||
->execute('tl_calendar_events', 'tags')
|
||||
->fetchAllAssoc();
|
||||
|
||||
$options = [];
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$options[(int) $row['id']] = (string) $row['tag'];
|
||||
}
|
||||
|
||||
return $options;
|
||||
},
|
||||
'eval' => ['multiple' => true, 'tl_class' => 'clr'],
|
||||
'sql' => ['type' => 'blob', 'notnull' => false],
|
||||
'save_callback' => [
|
||||
static function ($value): array {
|
||||
return array_values(array_unique(array_map('intval', StringUtil::deserialize($value, true))));
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
@@ -70,7 +70,7 @@ $GLOBALS['TL_DCA']['tl_organization'] = [
|
||||
],
|
||||
'palettes' => [
|
||||
'__selector__' => [],
|
||||
'default' => '{title_legend},title,alias,type,isExternal,logo;{address_legend},street,street2,postal,city,state,country;{contact_legend},phone,email,website;{geo_legend},lat,lng;{description_legend},description;{relation_legend},members;{publish_legend},published',
|
||||
'default' => '{title_legend},title,alias,tags,isExternal,logo;{address_legend},street,street2,postal,city,state,country;{contact_legend},phone,email,website;{geo_legend},lat,lng;{description_legend},description;{relation_legend},members;{publish_legend},published',
|
||||
],
|
||||
'fields' => [
|
||||
'id' => [
|
||||
@@ -211,14 +211,17 @@ $GLOBALS['TL_DCA']['tl_organization'] = [
|
||||
'eval' => ['tl_class' => 'w50'],
|
||||
'sql' => ['type' => 'string', 'length' => 1, 'fixed' => true, 'default' => ''],
|
||||
],
|
||||
'type' => [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_organization']['type'],
|
||||
'tags' => [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_organization']['tags'],
|
||||
'exclude' => true,
|
||||
'inputType' => 'select',
|
||||
'options' => ['accommodation', 'shopping', 'culture'],
|
||||
'reference' => &$GLOBALS['TL_LANG']['tl_organization']['type_options'],
|
||||
'eval' => ['multiple' => true, 'chosen' => true, 'includeBlankOption' => false, 'tl_class' => 'w50'],
|
||||
'foreignKey' => 'tl_tags.tag',
|
||||
'options_callback' => ['numero2_tags.listener.data_container.tags', 'getTagOptions'],
|
||||
'load_callback' => [['numero2_tags.listener.data_container.tags', 'loadTags']],
|
||||
'save_callback' => [['numero2_tags.listener.data_container.tags', 'saveTags']],
|
||||
'eval' => ['multiple' => true, 'size' => 8, 'tl_class' => 'w50 tags', 'chosen' => true, 'groupTagsByField' => true, 'tagGroup' => 'organization_type'],
|
||||
'sql' => ['type' => 'blob', 'notnull' => false],
|
||||
'relation' => ['type' => 'hasMany', 'load' => 'eager'],
|
||||
],
|
||||
'members' => [
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_organization']['members'],
|
||||
|
||||
Reference in New Issue
Block a user