Source of file ElementTypeReport.php
Size: 2,995 Bytes - Last Modified: 2021-12-24T06:44:48+00:00
/var/www/docs.ssmods.com/process/src/src/Reports/ElementTypeReport.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | <?php namespace DNADesign\Elemental\Reports; use DNADesign\Elemental\Models\BaseElement; use SilverStripe\Core\ClassInfo; use SilverStripe\Core\Injector\Injector; use SilverStripe\Forms\GridField\GridField; use SilverStripe\ORM\ArrayList; use SilverStripe\Reports\Report; use SilverStripe\View\ArrayData; use SilverStripe\View\Requirements; class ElementTypeReport extends Report { public function title() { return _t(__CLASS__ . '.Title', 'Content block types'); } public function sourceRecords($params = []) { $classes = $this->getElementTypes(); $output = ArrayList::create(); foreach ($classes as $class) { /** @var BaseElement $element */ $element = Injector::inst()->create($class); $output->push(ArrayData::create([ 'Icon' => $element->getIcon(), 'Type' => $element->getType(), 'TypeNice' => $element->getTypeNice(), 'ClassName' => $element->sanitiseClassName($class), 'Total' => $class::get()->count(), ])); } return $output; } /** * Return an array of all valid classes that extend BaseElement * * @return string[] */ protected function getElementTypes() { $classes = ClassInfo::subclassesFor(BaseElement::class); $output = []; foreach ($classes as $className) { if ($className === BaseElement::class) { continue; } $output[] = $className; } return $output; } public function columns() { // Get from Injector so substitutions are used... $inUseReport = ElementsInUseReport::singleton(); return [ 'Icon' => [ 'title' => '', ], 'Type' => [ 'title' => _t(__CLASS__ . '.Type', 'Content Type'), 'formatting' => function ($value, $item) use ($inUseReport) { return sprintf( '<a class="grid-field__link" href="%s" title="%s">%s</a>', $inUseReport->getLink( '?filters[' . $inUseReport::CLASS_NAME_FILTER_KEY . ']=' . $item->ClassName ), $item->Type, $item->TypeNice ); }, ], 'Total' => [ 'title' => _t(__CLASS__ . '.Total', 'Total'), ], ]; } /** * Add elemental CSS and a unique class name to the GridField * * @return GridField */ public function getReportField() { Requirements::css('dnadesign/silverstripe-elemental:client/dist/styles/bundle.css'); /** @var GridField $field */ $field = parent::getReportField(); $field->addExtraClass('elemental-report__grid-field'); return $field; } } |