Source of file AccordionPageExtension.php
Size: 2,545 Bytes - Last Modified: 2021-12-23T10:06:28+00:00
/var/www/docs.ssmods.com/process/src/src/extensions/AccordionPageExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | <?php namespace NinjaUnicorns\WysiwygAccordion\Extensions; use SilverStripe\ORM\DataExtension; use SilverStripe\Forms\FieldList; use SilverStripe\View\Requirements; use SilverStripe\Core\Config\Config; use SilverStripe\Forms\LiteralField; use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; use SilverStripe\Lumberjack\Forms\GridFieldSiteTreeState; use SilverStripe\Forms\GridField\GridField; use NinjaUnicorns\WysiwygAccordion\Models\AccordionItem; /** * Class AccordionPageExtension * * @property Page|AccordionPageExtension $owner * @method DataList|AccordionItem[] AccordionItems() */ class AccordionPageExtension extends DataExtension { private static $helpDescription = '<p><h4>Note</h4>Create Accordion items here, the title will be the header and the content will show on click.<br />To add the accordion in the content, put <strong>[accordion,id=1]</strong> in the WYSIWYG editor at the place where you want the accordion to appear.<br /><u>Replace the 1 with the actual set you want to render.</u></p>'; private static $has_many = [ 'AccordionItems' => AccordionItem::class ]; public function updateCMSFields(FieldList $fields) { if (class_exists('GridFieldSiteTreeState')) { Requirements::css(LUMBERJACK_DIR . "/css/lumberjack.css"); } $blacklistedPages = Config::inst()->get(self::class, 'PageBlacklist') ?: []; if (!count($blacklistedPages) || !in_array($this->owner->ClassName, $blacklistedPages, true)) { $helptext = _t('Accordion.HELP', self::$helpDescription); $helpField = LiteralField::create('Help', $helptext); $gridFieldConfig = GridFieldConfig_RecordEditor::create(); $gridFieldConfig->addComponent(new GridFieldOrderableRows('SortOrder')); if (class_exists('GridFieldSiteTreeState')) { $gridFieldConfig->addComponent(new GridFieldSiteTreeState()); } $accordionGrid = GridField::create( 'AccordionItems', 'AccordionItems', $this->owner->AccordionItems(), $gridFieldConfig ); $gridFieldConfig->removeComponentsByType('GridFieldAddExistingAutocompleter'); $fields->addFieldsToTab( 'Root.Accordion', [ $helpField, $accordionGrid ] ); } } } |