public function updateCMSFields(FieldList $fields) { if ($this->owner->ID <= 0) { return; } $p = $this->owner->Parent(); $d = $this->owner->getParent(); if (!($allSchemas = DataObject::get('MetadataSchema'))) { return; } $tabName = 'Root.Metadata'; $rootTab = $fields->fieldByName('Root'); $newFields = array(new HeaderField('MetadataInfoHeader', 'Metadata Information'), new MetadataSetField($this->owner, 'MetadataRaw'), new HeaderField('MetadataSchemasHeader', 'Metadata Schemas'), $linkedSchemas = new CheckboxSetField('MetadataSchemas', '', $allSchemas)); $inherited = $this->getInheritedSchemas()->map('ID', 'ID'); $linkedSchemas->setValue($this->getAttachedSchemas()->map('ID', 'ID')); $linkedSchemas->setDefaultItems($inherited); $linkedSchemas->setDisabledItems($inherited); $canApply = $this->owner->extendedCan('canApplySchemas', Member::currentUser()); if ($canApply === false) { $linkedSchemas->setDisabled(true); } if ($this->owner->hasExtension('Hierarchy')) { $newFields[] = new LiteralField('SchemaAppliedToChildrenNote', '<p>Any metadata schemas selected will also be applied to this' . " item's children.</p>"); } if (!$rootTab) { foreach ($newFields as $f) { $fields->push($f); } } else { $fields->addFieldsToTab($tabName, $newFields); } }