|
29 | 29 | use ContaoCommunityAlliance\UrlBuilder\UrlBuilderFactoryInterface;
|
30 | 30 | use Doctrine\DBAL\Connection;
|
31 | 31 | use Doctrine\DBAL\Exception;
|
| 32 | +use MetaModels\Attribute\IInternal; |
32 | 33 | use MetaModels\BackendIntegration\TemplateList;
|
33 | 34 | use MetaModels\CoreBundle\Assets\IconBuilder;
|
34 | 35 | use MetaModels\Filter\Setting\FilterSettingFactory;
|
@@ -249,37 +250,51 @@ public function editRenderSettingButton(DC_Table $dataContainer)
|
249 | 250 | *
|
250 | 251 | * @param DC_Table $objDc The data container calling this method.
|
251 | 252 | *
|
252 |
| - * @return string[] array of all attributes as colName => human name |
| 253 | + * @return array<string, array<string, string>> array of all attributes as colName => human name |
253 | 254 | *
|
254 | 255 | * @SuppressWarnings(PHPMD.Superglobals)
|
255 | 256 | * @SuppressWarnings(PHPMD.CamelCaseVariableName)
|
256 | 257 | */
|
257 | 258 | public function getAttributeNames(DC_Table $objDc)
|
258 | 259 | {
|
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 |
| - |
265 | 260 | /** @psalm-suppress UndefinedMagicPropertyFetch */
|
266 | 261 | assert(null !== $objDc->activeRecord);
|
267 | 262 |
|
268 | 263 | try {
|
269 | 264 | $metaModelName = $this->factory->translateIdToMetaModelName($objDc->activeRecord->metamodel);
|
270 | 265 | } catch (RuntimeException $exception) {
|
271 | 266 | // 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 []; |
273 | 272 | }
|
274 |
| - $metaModel = $this->factory->getMetaModel($metaModelName); |
275 | 273 |
|
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; |
279 | 286 | }
|
| 287 | + |
| 288 | + $colName = $attribute->getColName(); |
| 289 | + $result['attributes'][$colName] = sprintf( |
| 290 | + '%s [%s, "%s"]', |
| 291 | + $attribute->getName(), |
| 292 | + $attribute->get('type'), |
| 293 | + $colName, |
| 294 | + ); |
280 | 295 | }
|
281 | 296 |
|
282 |
| - return $attributeNames; |
| 297 | + return $result; |
283 | 298 | }
|
284 | 299 |
|
285 | 300 | /**
|
|
0 commit comments