diff --git a/_config/asset-admin.yml b/_config/asset-admin.yml new file mode 100644 index 00000000..f5c57ced --- /dev/null +++ b/_config/asset-admin.yml @@ -0,0 +1,8 @@ +--- +Name: cms-asset-admin +OnlyIf: + ModuleExists: silverstripe/asset-admin +--- +SilverStripe\AssetAdmin\Forms\FileFormFactory: + extensions: + - SilverStripe\CMS\Model\SiteTreeFileFormFactoryExtension diff --git a/_config/config.yml b/_config/config.yml index 8b740f48..bf63d66a 100644 --- a/_config/config.yml +++ b/_config/config.yml @@ -7,9 +7,6 @@ SilverStripe\Admin\LeftAndMain: SilverStripe\Assets\File: extensions: - SilverStripe\CMS\Model\SiteTreeFileExtension -SilverStripe\AssetAdmin\Forms\FileFormFactory: - extensions: - - SilverStripe\CMS\Model\SiteTreeFileFormFactoryExtension --- Name: cmsmodals --- diff --git a/code/Model/SiteTreeFileFormFactoryExtension.php b/code/Model/SiteTreeFileFormFactoryExtension.php index e6065ea5..4b8a9f77 100644 --- a/code/Model/SiteTreeFileFormFactoryExtension.php +++ b/code/Model/SiteTreeFileFormFactoryExtension.php @@ -3,36 +3,44 @@ namespace SilverStripe\CMS\Model; use SilverStripe\Assets\File; +use SilverStripe\Forms\FieldList; use SilverStripe\Forms\ReadonlyField; +use SilverStripe\Forms\Tab; +use SilverStripe\Forms\TabSet; use SilverStripe\ORM\DataExtension; -use SilverStripe\Versioned\Versioned; +use SilverStripe\ORM\FieldType\DBHTMLText; /** - * Extension applied to {@see FileFormFactoryExtension} object to track links to {@see SiteTree} records. - * - * {@see SiteTreeLinkTracking} for the extension applied to {@see SiteTree} - * - * Note that since both SiteTree and File are versioned, LinkTracking and ImageTracking will - * only be enabled for the Stage record. + * Extension applied to {@see FileFormFactory} to decorate with a "Used on:" information area. + * Uses tracking provided by {@see SiteTreeFileExtension} to generate this. * * @property File $owner */ class SiteTreeFileFormFactoryExtension extends DataExtension { - public function updateForm($form, $controller, $name, $context) + public function updateFormFields(FieldList $fields, $controller, $formName, $context) { + // Create field + /** @var File|SiteTreeFileExtension $record */ $record = $context['Record']; - $fields = $form->Fields(); + $usedOnField = ReadonlyField::create( + 'BackLinkCount', + _t(__CLASS__.'.BACKLINKCOUNT', 'Used on:'), + $record->BackLinkTrackingCount() . ' ' . _t(__CLASS__.'.PAGES', 'page(s)') + ) + ->addExtraClass('cms-description-toggle'); - $fields->insertAfter( - 'LastEdited', - ReadonlyField::create( - 'BackLinkCount', - _t(__CLASS__.'.BACKLINKCOUNT', 'Used on:'), - $record->BackLinkTrackingCount() . ' ' . _t(__CLASS__.'.PAGES', 'page(s)') - ) - ->addExtraClass('cms-description-toggle') - ->setDescription($record->BackLinkHTMLList()) - ); + // Add table + /** @var DBHTMLText $backlinkHTML */ + $backlinkHTML = $record->BackLinkHTMLList(); + if (trim($backlinkHTML->forTemplate())) { + $usedOnField->setDescription($backlinkHTML); + } + + // Add field to new tab + $tab = Tab::create('Usage', _t(__CLASS__.'.USAGE', 'Usage'), $usedOnField); + /** @var TabSet $tabset */ + $tabset = $fields->fieldByName('Editor'); + $tabset->push($tab); } }