Skip to content

Commit

Permalink
Link BaseElements to parent Page for file used on table
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Sep 29, 2020
1 parent 49fc132 commit ac09b07
Showing 1 changed file with 36 additions and 4 deletions.
40 changes: 36 additions & 4 deletions src/Extensions/ElementalAreaUsedOnTableExtension.php
Expand Up @@ -3,24 +3,56 @@
namespace DNADesign\Elemental\Extensions;

use SilverStripe\Admin\Forms\UsedOnTable;
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Core\ClassInfo;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use DNADesign\Elemental\Models\ElementalArea;
use DNADesign\Elemental\Models\BaseElement;

class ElementalAreaUsedOnTableExtension extends DataExtension
{

/**
* Hides ElementalArea's from the "Used On" tab when viewing files
*
* @var array $excludedClasses
*/
public function updateUsageExcludedClasses(array &$excludedClasses)
{
$excludedClasses[] = ElementalArea::class;
}

/**
* Legacy function kept for semver, replaced with updateUsageExcludedClasses above
*
* @return void
* @var ArrayList $dataObjects
* @var ArrayList $usage
* @var DataObject $record
* @see UsedOnTable::updateUsage
* @deprecated 4.5.0 Use self::updateUsageExcludedClasses instead
*/
public function updateUsage(ArrayList &$usage, DataObject &$record)
{
// noop
}

/**
* Link BaseElement's to their parent page
*
* @param array $ancestorDataObjects
* @param DataObject $dataObject
* @throws \ReflectionException
*/
public function updateUsage(ArrayList &$dataObjects, DataObject &$record)
public function updateUsageAncestorDataObjects(array &$ancestorDataObjects, DataObject $dataObject)
{
$usage = $dataObjects->exclude('ClassName', ElementalArea::class);
$subClasses = ClassInfo::subclassesFor(BaseElement::class);
if (!in_array(get_class($dataObject), $subClasses)) {
return;
}
/** @var SiteTree $page */
if ($page = $dataObject->getPage()) {
$ancestorDataObjects[] = $page;
}
}
}

0 comments on commit ac09b07

Please sign in to comment.