Source of file ElementHasChildrenExtension.php
Size: 2,676 Bytes - Last Modified: 2021-12-24T07:07:03+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/ElementHasChildrenExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | <?php namespace NSWDPC\GridHelper\Extensions; use Silverstripe\ORM\DataExtension; use Silverstripe\Forms\FieldList; use SilverStripe\Forms\DropdownField; /** * Extension applied to Elements that can contain other elements * @author James Ellis * @author Mark Taylor */ class ElementHasChildrenExtension extends DataExtension { public function ElementHasChildren() { return true; } /** * DB fields for the list element * @var array */ private static $db = [ 'Subtype' => 'Varchar(64)', 'CardStyle' => 'Varchar(64)' ]; /** * Available types of listings * @var array */ private static $subtypes = [ 'accordion' => 'Accordion', 'cards' => 'Cards', 'content-blocks' => 'Content Blocks', 'grid' => 'Grid', 'linklist' => 'Link list', 'listitem' => 'List items', 'media-images' => 'Media (images)', 'tabs' => 'Tabs', ]; /** * Default values * @var array */ private static $defaults = [ 'Subtype' => '',// no default 'CardStyle' => 'title-abstract' ]; /** * Used to **hint* how list child elements are rendered. * A template can use a key value from here to determine how to render the child items * @var array */ private static $card_styles = [ 'title' => 'Title only', 'title-abstract' => 'Title and abstract', 'title-image-abstract' => 'Title, image, abstract', 'promo' => 'Promo' ]; public function updateCMSFields(FieldList $fields) { // the subtype $options = $this->owner->config()->get('subtypes'); $options = is_array($options) ? array_unique($options) : []; $subType = DropdownField::create( 'Subtype', _t('gridhelpers.LISTTYPE','List type'), $options ); $subType->setEmptyString('none'); // card style, if appropriate $options = $this->owner->config()->get('card_styles'); $options = is_array($options) ? array_unique($options) : []; $cardStyle = DropdownField::create( 'CardStyle', _t('gridhelpers.CARDSTYLE','Content style'), $options ); $cardStyle->setEmptyString('none'); $cardStyle->displayIf('Subtype') ->isEqualTo('cards') ->orIf("Subtype")->isEqualTo("content-blocks") ->orIf("Subtype")->isEqualTo("listitem"); $fields->addFieldsToTab( 'Root.Display', [ $subType, $cardStyle ] ); } } |