Source of file ElementCtaFlexImage.php
Size: 3,743 Bytes - Last Modified: 2021-12-24T06:43:46+00:00
/var/www/docs.ssmods.com/process/src/src/Element/ElementCtaFlexImage.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | <?php namespace Derralf\Elements\CtaFlexImage\Element; use DNADesign\Elemental\Models\BaseElement; use Sheadawson\Linkable\Forms\LinkField; use Sheadawson\Linkable\Models\Link; use SilverStripe\Assets\Image; use SilverStripe\Core\Config\Config; use SilverStripe\Forms\DropdownField; class ElementCtaFlexImage extends BaseElement { public function getType() { return self::$singular_name; } private static $icon = 'ctafleximage-icon'; // 'font-icon-link'; private static $table_name = 'ElementCtaFlexImage'; private static $singular_name = 'CTA-Element mit Flex-Bild'; private static $plural_name = 'CTA-Elemente mit Flex-Bild'; private static $description = ''; private static $db = [ 'HTML' => 'HTMLText', 'Color' => 'Varchar(255)', 'ImagePositionHorizontal' => "Enum('left,center,right','center')", 'ImagePositionVertical' => "Enum('top,center,bottom','center')", ]; private static $has_one = [ 'Image' => Image::class, 'ReadMoreLink' => Link::Class ]; private static $has_many = [ ]; private static $many_many = []; private static $belongs_many_many = []; private static $owns = [ 'Image' ]; private static $defaults = [ 'ImagePositionHorizontal' => 'center', 'ImagePositionVertical' => 'center' ]; private static $colors = []; private static $field_labels = [ 'Title' => 'Titel', 'Sort' => 'Sortierung' ]; public function updateFieldLabels(&$labels) { parent::updateFieldLabels($labels); $labels['HTML'] = _t(__CLASS__ . '.ContentLabel', 'Inhalt'); $labels['Image'] = _t(__CLASS__ . '.ImageLabel', 'Bild'); $labels['ImagePositionHorizontal'] = _t(__CLASS__ . '.ImageLabel', 'Bildausrichtung horizontal'); $labels['ImagePositionVertical'] = _t(__CLASS__ . '.ImageLabel', 'Bildausrichtung vertikal'); } public function getCMSFields() { $this->beforeUpdateCMSFields(function ($fields) { // Style: Description for default style (describes Layout thats used, when no special style is selected) $Style = $fields->dataFieldByName('Style'); $StyleDefaultDescription = $this->owner->config()->get('styles_default_description', Config::UNINHERITED); if ($Style && $StyleDefaultDescription) { $Style->setDescription($StyleDefaultDescription); } // ReadMoreLink: use Linkfield $ReadMoreLink = LinkField::create('ReadMoreLinkID', 'Link'); $fields->replaceField('ReadMoreLinkID', $ReadMoreLink); // Image $Image = $fields->dataFieldByName('Image'); $Image -> setFolderName('content-cta-images'); $colors = $this->config()->get('colors'); if ($colors && count($colors) > 0) { $colorDropdown = DropdownField::create('Color', _t(__CLASS__.'.COLOR', 'Color variation'), $colors); $fields->insertBefore($colorDropdown, 'HTML'); $colorDropdown->setEmptyString(_t(__CLASS__.'.CUSTOM_COLORS', 'Select a color...')); } else { $fields->removeByName('Color'); } }); $fields = parent::getCMSFields(); return $fields; } public function ImageBgPosition() { $h = $this->ImagePositionHorizontal; $v = $this->ImagePositionVertical; $pos = $h . " " . $v; return "background-position:{$pos};"; } public function ReadmoreLinkClass() { return $this->config()->get('readmore_link_class'); } } |