Source of file CheckboxSetFieldWithLinks.php
Size: 2,406 Bytes - Last Modified: 2021-12-23T10:39:07+00:00
/var/www/docs.ssmods.com/process/src/src/Forms/CheckboxSetFieldWithLinks.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <?php namespace Sunnysideup\CMSNiceties\Forms; use SilverStripe\Forms\CheckboxSetField; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\FieldType\DBField; class CheckboxSetFieldWithLinks extends CheckboxSetField { protected $classNameForLinks = ''; protected $isReact = ''; protected $linksPerOption = []; public function getTemplate() { return self::class; } public function setClassNameForLinks(string $s): self { $this->classNameForLinks = $s; return $this; } public function getClassNameForLinks(): string { return $this->classNameForLinks; } public function setIsReact(bool $b): self { $this->isReact = $b; return $this; } public function getIsReact(): bool { return $this->isReact; } /** * Gets the list of options to render in this formfield. * * @return ArrayList */ public function getOptions() { $options = parent::getOptions(); $className = $this->getClassNameForLinks(); if ($className) { foreach ($options as $key => $option) { $obj = $className::get_by_id($option->Value); if ($obj && $obj->hasMethod('CMSEditLink')) { $link = $obj->CMSEditLink(); if ($option->isChecked) { $this->linksPerOption[] = '<a href="' . $link . '">' . $option->Title . '</a>'; } $option->setField('Link', $link); $option->setField( 'Title', DBField::create_field('HTMLText', '<a href="' . $link . '">' . $option->Title . '</a>') ); } } } return $options; } public function getLinksPerOption(): array { return $this->linksPerOption; } public function getLinksPerOptionAsString(): string { return implode(', ', $this->linksPerOption); } public function Type() { return 'optionset checkboxset checkboxsetwithlinks'; } public function getDescription() { $this->getOptions(); if ($this->isReact) { $this->description .= 'Quick Edit: <br />' . $this->getLinksPerOptionAsString(); } return $this->description; } } |