Source of file DiffTransformation.php
Size: 1,624 Bytes - Last Modified: 2021-12-23T10:36:08+00:00
/var/www/docs.ssmods.com/process/src/src/Forms/DiffTransformation.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | <?php namespace SilverStripe\VersionedAdmin\Forms; use BadMethodCallException; use SilverStripe\Forms\CompositeField; use SilverStripe\Forms\FormField; use SilverStripe\Forms\FormTransformation; use SilverStripe\Forms\LiteralField; class DiffTransformation extends FormTransformation { public function transform(FormField $field) { if ($field->isComposite()) { /** @var CompositeField $field */ // There isn't an interface for child fields so this is unfortunately just a best guess. $newKids = $field->getChildren()->transform($this); $newField = clone $field; $newField->setChildren($newKids); return $newField; } if (!$field->hasData()) { // No data; no value. return clone $field; } $name = $field->getName(); // Do not compare generated security data if (($form = $field->getForm()) && ($securityToken = $form->getSecurityToken()) && ($securityTokenName = $securityToken->getName()) && $securityTokenName === $name ) { return LiteralField::create($name, ''); } try { // First check if a field implements performDiffTransformation() $diffField = parent::transform($field); } catch (BadMethodCallException $e) { $diffField = $field->castedCopy(DiffField::class); $diffField->addExtraClass("history-viewer__version-detail-diff"); $diffField->setComparisonField($field); } return $diffField; } } |