Skip to content

Commit dfd4375

Browse files
committed
Fix list of attributes in MM List as CE and Module
1 parent ef5824e commit dfd4375

File tree

7 files changed

+256
-149
lines changed

7 files changed

+256
-149
lines changed

src/CoreBundle/Contao/Hooks/AbstractContentElementAndModuleCallback.php

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
use ContaoCommunityAlliance\UrlBuilder\UrlBuilderFactoryInterface;
3030
use Doctrine\DBAL\Connection;
3131
use Doctrine\DBAL\Exception;
32+
use MetaModels\Attribute\IInternal;
3233
use MetaModels\BackendIntegration\TemplateList;
3334
use MetaModels\CoreBundle\Assets\IconBuilder;
3435
use MetaModels\Filter\Setting\FilterSettingFactory;
@@ -256,30 +257,44 @@ public function editRenderSettingButton(DC_Table $dataContainer)
256257
*/
257258
public function getAttributeNames(DC_Table $objDc)
258259
{
259-
$attributeNames = [
260-
'sorting' => $this->translator->trans('metamodels_sorting', [], 'metamodels_list'),
261-
'random' => $this->translator->trans('random', [], 'metamodels_list'),
262-
'id' => $this->translator->trans('id', [], 'metamodels_list')
263-
];
264-
265260
/** @psalm-suppress UndefinedMagicPropertyFetch */
266261
assert(null !== $objDc->activeRecord);
267262

268263
try {
269264
$metaModelName = $this->factory->translateIdToMetaModelName($objDc->activeRecord->metamodel);
270265
} catch (RuntimeException $exception) {
271266
// No valid MetaModel selected, can not add attributes of it.
272-
return $attributeNames;
267+
return [];
268+
}
269+
$metaModel = $this->factory->getMetaModel($metaModelName);
270+
if (null === $metaModel) {
271+
return [];
273272
}
274-
$metaModel = $this->factory->getMetaModel($metaModelName);
275273

276-
if ($metaModel) {
277-
foreach ($metaModel->getAttributes() as $objAttribute) {
278-
$attributeNames[$objAttribute->getColName()] = $objAttribute->getName();
274+
$result = [];
275+
// Add meta fields.
276+
$result['meta'] = [
277+
'sorting' => $this->translator->trans('metamodels_sorting', [], 'metamodels_list'),
278+
'random' => $this->translator->trans('random', [], 'metamodels_list'),
279+
'id' => $this->translator->trans('id', [], 'metamodels_list'),
280+
];
281+
282+
foreach ($metaModel->getAttributes() as $attribute) {
283+
// Hide virtual types.
284+
if ($attribute instanceof IInternal) {
285+
continue;
279286
}
287+
288+
$colName = $attribute->getColName();
289+
$result['attributes'][$colName] = sprintf(
290+
'%s [%s, "%s"]',
291+
$attribute->getName(),
292+
$attribute->get('type'),
293+
$colName,
294+
);
280295
}
281296

282-
return $attributeNames;
297+
return $result;
283298
}
284299

285300
/**

src/CoreBundle/Resources/contao/dca/tl_content.php

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* This file is part of MetaModels/core.
55
*
6-
* (c) 2012-2024 The MetaModels team.
6+
* (c) 2012-2025 The MetaModels team.
77
*
88
* For the full copyright and license information, please view the LICENSE
99
* file that was distributed with this source code.
@@ -18,7 +18,7 @@
1818
* @author Ingolf Steinhardt <[email protected]>
1919
* @author Richard Henkenjohann <[email protected]>
2020
* @author Sven Baumann <[email protected]>
21-
* @copyright 2012-2024 The MetaModels team.
21+
* @copyright 2012-2025 The MetaModels team.
2222
* @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later
2323
* @filesource
2424
*/
@@ -79,7 +79,7 @@
7979
$GLOBALS['TL_DCA']['tl_content']['fields'],
8080
1,
8181
[
82-
'metamodel' => [
82+
'metamodel' => [
8383
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel'],
8484
'exclude' => true,
8585
'inputType' => 'select',
@@ -96,7 +96,7 @@
9696
],
9797
'sql' => "int(10) unsigned NOT NULL default '0'"
9898
],
99-
'metamodel_layout' => [
99+
'metamodel_layout' => [
100100
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_layout'],
101101
'exclude' => true,
102102
'inputType' => 'select',
@@ -107,7 +107,7 @@
107107
],
108108
'sql' => "varchar(64) NOT NULL default ''"
109109
],
110-
'metamodel_noparsing' => [
110+
'metamodel_noparsing' => [
111111
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_noparsing'],
112112
'exclude' => true,
113113
'inputType' => 'checkbox',
@@ -116,7 +116,7 @@
116116
],
117117
'sql' => "char(1) NOT NULL default ''"
118118
],
119-
'metamodel_page_param_type' => [
119+
'metamodel_page_param_type' => [
120120
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_page_param_type'],
121121
'exclude' => true,
122122
'inputType' => 'select',
@@ -128,7 +128,7 @@
128128
],
129129
'sql' => "varchar(64) NOT NULL default 'slugNget'"
130130
],
131-
'metamodel_page_param' => [
131+
'metamodel_page_param' => [
132132
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_page_param'],
133133
'exclude' => true,
134134
'inputType' => 'text',
@@ -138,7 +138,7 @@
138138
],
139139
'sql' => "varchar(64) NOT NULL default ''"
140140
],
141-
'metamodel_maxpaginationlinks' => [
141+
'metamodel_maxpaginationlinks' => [
142142
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_maxpaginationlinks'],
143143
'exclude' => true,
144144
'inputType' => 'text',
@@ -148,7 +148,7 @@
148148
],
149149
'sql' => "smallint(5) NOT NULL default '0'"
150150
],
151-
'metamodel_pagination' => [
151+
'metamodel_pagination' => [
152152
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_pagination'],
153153
'exclude' => true,
154154
'inputType' => 'select',
@@ -159,7 +159,7 @@
159159
],
160160
'sql' => "varchar(64) NOT NULL default ''"
161161
],
162-
'metamodel_pagination_urlfragment' => [
162+
'metamodel_pagination_urlfragment' => [
163163
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_pagination_urlfragment'],
164164
'exclude' => true,
165165
'inputType' => 'text',
@@ -169,7 +169,7 @@
169169
],
170170
'sql' => "char(255) NOT NULL default ''"
171171
],
172-
'metamodel_use_limit' => [
172+
'metamodel_use_limit' => [
173173
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_use_limit'],
174174
'exclude' => true,
175175
'inputType' => 'checkbox',
@@ -179,7 +179,7 @@
179179
],
180180
'sql' => "char(1) NOT NULL default ''"
181181
],
182-
'metamodel_limit' => [
182+
'metamodel_limit' => [
183183
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_limit'],
184184
'exclude' => true,
185185
'inputType' => 'text',
@@ -189,7 +189,7 @@
189189
],
190190
'sql' => "smallint(5) NOT NULL default '0'"
191191
],
192-
'metamodel_offset' => [
192+
'metamodel_offset' => [
193193
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_offset'],
194194
'exclude' => true,
195195
'inputType' => 'text',
@@ -199,19 +199,20 @@
199199
],
200200
'sql' => "smallint(5) NOT NULL default '0'"
201201
],
202-
'metamodel_sortby' => [
202+
'metamodel_sortby' => [
203203
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_sortby'],
204204
'exclude' => true,
205205
'inputType' => 'select',
206206
'options_callback' => [ContentElementCallback::class, 'getAttributeNames'],
207+
'reference' => &$GLOBALS['TL_LANG']['tl_content']['select_values'],
207208
'eval' => [
208209
'includeBlankOption' => true,
209210
'chosen' => true,
210211
'tl_class' => 'clr w50'
211212
],
212213
'sql' => "varchar(64) NOT NULL default ''"
213214
],
214-
'metamodel_sortby_direction' => [
215+
'metamodel_sortby_direction' => [
215216
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_sortby_direction'],
216217
'exclude' => true,
217218
'inputType' => 'select',
@@ -224,7 +225,7 @@
224225
],
225226
'sql' => "varchar(4) NOT NULL default ''"
226227
],
227-
'metamodel_sort_override' => [
228+
'metamodel_sort_override' => [
228229
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_sort_override'],
229230
'exclude' => true,
230231
'inputType' => 'checkbox',
@@ -234,7 +235,7 @@
234235
],
235236
'sql' => "char(1) NOT NULL default ''"
236237
],
237-
'metamodel_sort_param_type' => [
238+
'metamodel_sort_param_type' => [
238239
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_sort_param_type'],
239240
'exclude' => true,
240241
'inputType' => 'select',
@@ -246,7 +247,7 @@
246247
],
247248
'sql' => "varchar(64) NOT NULL default 'slug'"
248249
],
249-
'metamodel_order_by_param' => [
250+
'metamodel_order_by_param' => [
250251
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_order_by_param'],
251252
'exclude' => true,
252253
'inputType' => 'text',
@@ -256,7 +257,7 @@
256257
],
257258
'sql' => "varchar(64) NOT NULL default ''"
258259
],
259-
'metamodel_order_dir_param' => [
260+
'metamodel_order_dir_param' => [
260261
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_order_dir_param'],
261262
'exclude' => true,
262263
'inputType' => 'text',
@@ -266,7 +267,7 @@
266267
],
267268
'sql' => "varchar(64) NOT NULL default ''"
268269
],
269-
'metamodel_sort_urlfragment' => [
270+
'metamodel_sort_urlfragment' => [
270271
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_sort_urlfragment'],
271272
'exclude' => true,
272273
'inputType' => 'text',
@@ -276,7 +277,7 @@
276277
],
277278
'sql' => "char(255) NOT NULL default ''"
278279
],
279-
'metamodel_filtering' =>
280+
'metamodel_filtering' =>
280281
[
281282
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_filtering'],
282283
'exclude' => true,
@@ -294,7 +295,7 @@
294295
],
295296
'sql' => "int(10) NOT NULL default '0'"
296297
],
297-
'metamodel_rendersettings' => [
298+
'metamodel_rendersettings' => [
298299
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_rendersettings'],
299300
'exclude' => true,
300301
'inputType' => 'select',
@@ -311,7 +312,7 @@
311312
],
312313
'sql' => "int(10) NOT NULL default '0'"
313314
],
314-
'metamodel_donotindex' => [
315+
'metamodel_donotindex' => [
315316
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_donotindex'],
316317
'exclude' => true,
317318
'inputType' => 'checkbox',
@@ -320,7 +321,7 @@
320321
],
321322
'sql' => "char(1) NOT NULL default ''"
322323
],
323-
'metamodel_available_values' => [
324+
'metamodel_available_values' => [
324325
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_available_values'],
325326
'exclude' => true,
326327
'inputType' => 'checkbox',
@@ -329,7 +330,7 @@
329330
],
330331
'sql' => "char(1) NOT NULL default ''"
331332
],
332-
'metamodel_filterparams' => [
333+
'metamodel_filterparams' => [
333334
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_filterparams'],
334335
'exclude' => true,
335336
'inputType' => 'mm_subdca',
@@ -345,7 +346,7 @@
345346
],
346347
'sql' => 'longblob NULL'
347348
],
348-
'metamodel_jumpTo' => [
349+
'metamodel_jumpTo' => [
349350
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_jumpTo'],
350351
'exclude' => true,
351352
'inputType' => 'pageTree',
@@ -355,7 +356,7 @@
355356
],
356357
'sql' => "int(10) unsigned NOT NULL default '0'"
357358
],
358-
'metamodel_fef_id' => [
359+
'metamodel_fef_id' => [
359360
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_id'],
360361
'exclude' => true,
361362
'inputType' => 'text',
@@ -365,7 +366,7 @@
365366
],
366367
'sql' => "char(255) NOT NULL default ''"
367368
],
368-
'metamodel_fef_urlfragment' => [
369+
'metamodel_fef_urlfragment' => [
369370
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_urlfragment'],
370371
'exclude' => true,
371372
'inputType' => 'text',
@@ -375,7 +376,7 @@
375376
],
376377
'sql' => "char(255) NOT NULL default ''"
377378
],
378-
'metamodel_fef_params' => [
379+
'metamodel_fef_params' => [
379380
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_params'],
380381
'exclude' => true,
381382
'inputType' => 'checkboxWizard',
@@ -386,7 +387,7 @@
386387
],
387388
'sql' => 'blob NULL'
388389
],
389-
'metamodel_fef_autosubmit' => [
390+
'metamodel_fef_autosubmit' => [
390391
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_autosubmit'],
391392
'exclude' => true,
392393
'default' => '1',
@@ -396,7 +397,7 @@
396397
],
397398
'sql' => "char(1) NOT NULL default ''"
398399
],
399-
'metamodel_fef_hideclearfilter' => [
400+
'metamodel_fef_hideclearfilter' => [
400401
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_hideclearfilter'],
401402
'exclude' => true,
402403
'inputType' => 'checkbox',
@@ -405,7 +406,7 @@
405406
],
406407
'sql' => "char(1) NOT NULL default ''"
407408
],
408-
'metamodel_fef_template' => [
409+
'metamodel_fef_template' => [
409410
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_fef_template'],
410411
'exclude' => true,
411412
'inputType' => 'select',
@@ -416,7 +417,7 @@
416417
],
417418
'sql' => "varchar(64) NOT NULL default ''"
418419
],
419-
'metamodel_meta_title' => [
420+
'metamodel_meta_title' => [
420421
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_meta_title'],
421422
'exclude' => true,
422423
'inputType' => 'select',
@@ -428,7 +429,7 @@
428429
],
429430
'sql' => "varchar(64) NOT NULL default ''"
430431
],
431-
'metamodel_meta_description' => [
432+
'metamodel_meta_description' => [
432433
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_meta_description'],
433434
'exclude' => true,
434435
'inputType' => 'select',
@@ -440,7 +441,7 @@
440441
],
441442
'sql' => "varchar(64) NOT NULL default ''"
442443
],
443-
'metamodel_use_parameters' => [
444+
'metamodel_use_parameters' => [
444445
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_use_parameters'],
445446
'exclude' => true,
446447
'inputType' => 'checkbox',
@@ -450,7 +451,7 @@
450451
],
451452
'sql' => "char(1) NOT NULL default ''"
452453
],
453-
'metamodel_parameters' => [
454+
'metamodel_parameters' => [
454455
'label' => &$GLOBALS['TL_LANG']['tl_content']['metamodel_parameters'],
455456
'exclude' => true,
456457
'inputType' => 'multiColumnWizard',

0 commit comments

Comments
 (0)