protected function readNodeTypeConfiguration($nodeTypeName, NodeType $nodeType)
{
$nodeTypeConfiguration = $nodeType->getFullConfiguration();
$this->superTypeConfiguration['typo3:' . $nodeTypeName] = array();
/** @var NodeType $superType */
foreach ($nodeType->getDeclaredSuperTypes() as $superType) {
$this->superTypeConfiguration['typo3:' . $nodeTypeName][] = 'typo3:' . $superType->getName();
}
$nodeTypeProperties = array();
if (isset($nodeTypeConfiguration['properties'])) {
foreach ($nodeTypeConfiguration['properties'] as $property => $propertyConfiguration) {
// TODO Make sure we can configure the range for all multi column elements to define what types a column may contain
$this->addProperty('typo3:' . $nodeTypeName, 'typo3:' . $property, $propertyConfiguration);
$nodeTypeProperties[] = 'typo3:' . $property;
}
}
$metadata = array();
$metaDataPropertyIndexes = array('ui');
foreach ($metaDataPropertyIndexes as $propertyName) {
if (isset($nodeTypeConfiguration[$propertyName])) {
$metadata[$propertyName] = $nodeTypeConfiguration[$propertyName];
}
}
if ($nodeType->isAbstract()) {
$metadata['abstract'] = true;
}
$this->types['typo3:' . $nodeTypeName] = (object) array('label' => $nodeType->getLabel() ?: $nodeTypeName, 'id' => 'typo3:' . $nodeTypeName, 'properties' => array(), 'specific_properties' => $nodeTypeProperties, 'subtypes' => array(), 'metadata' => (object) $metadata, 'supertypes' => $this->superTypeConfiguration['typo3:' . $nodeTypeName], 'url' => 'http://www.typo3.org/ns/2012/Flow/Packages/Neos/Content/', 'ancestors' => array(), 'comment' => '', 'comment_plain' => '');
}