Source of file ProductDocDataExtension.php
Size: 3,483 Bytes - Last Modified: 2021-12-24T06:46:25+00:00
/var/www/docs.ssmods.com/process/src/src/docs/ProductDocDataExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?php namespace Dynamic\ProductCatalog\ORM; use Dynamic\ProductCatalog\Docs\ProductDoc; use SilverStripe\Core\ClassInfo; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldAddExistingAutocompleter; use SilverStripe\Forms\GridField\GridFieldAddNewButton; use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor; use SilverStripe\ORM\DataExtension; use Symbiote\GridFieldExtensions\GridFieldAddExistingSearchButton; class ProductDocDataExtension extends DataExtension { /** * @var array */ private static $belongs_many_many = array( 'Products' => CatalogProduct::class, ); /** * @var array */ private static $summary_fields = array( 'Name' => 'Name', 'Title' => 'Title', 'ProductsCt' => 'Products', ); /** * @var array */ private static $searchable_fields = array( 'Name', 'Title', 'Products.ID', ); /** * @return int */ public function getProductsCt() { if ($this->owner->Products()->exists()) { return $this->owner->Products()->count(); } return 0; } /** * @return string */ public function getProductsList() { $list = ''; if ($this->owner->Products()->exists()) { $i = 0; foreach ($this->owner->Products() as $product) { $list .= $product->Title; if (++$i !== $this->owner->Products()->Count()) { $list .= ', '; } } } return $list; } /** * @param FieldList $fields */ public function updateCMSFields(FieldList $fields) { $fields->removeByName(array( 'Link', 'SortOrder', 'Products', )); $classes = ClassInfo::subclassesFor(ProductDoc::class); unset($classes['ProductDoc']); $result = array(); foreach ($classes as $class) { $instance = singleton($class); $pageTypeName = $instance->i18n_singular_name(); $result[$class] = $pageTypeName; } $fields->addFieldToTab( 'Root.Main', DropdownField::create('SetClass', 'File type', $result, $this->owner->Classname) ->setEmptyString(''), 'Content' ); $fields->dataFieldByName('Image') ->setFolderName('Uploads/ProductDocs/Images'); if ($this->owner->ID) { // products /* $config = GridFieldConfig_RelationEditor::create(); $config->removeComponentsByType(GridFieldAddExistingAutocompleter::class); $config->addComponent(new GridFieldAddExistingSearchButton()); $config->removeComponentsByType(GridFieldAddNewButton::class); $products = $this->owner->Products(); $productsField = GridField::create('Products', 'Products', $products, $config); $fields->addFieldToTab('Root.Products', $productsField); */ } } /** * Link for searchable result set. * * @return mixed */ public function Link() { return $this->owner->Download()->URL; } /** * @return bool */ public function getIsProductDoc() { return true; } } |