/** * Gets the form fields as defined through the metadata * on {@link $obj} and the custom parameters passed to FormScaffolder. * Depending on those parameters, the fields can be used in ajax-context, * contain {@link TabSet}s etc. * * Uses SilvercartGridFieldConfig_RelationEditor and * SilvercartGridFieldConfig_ExclusiveRelationEditor instead of * GridFieldConfig_RelationEditor. * * @return FieldList */ public function getFieldList() { $fields = new FieldList(); $excludeFromScaffolding = array(); if ($this->obj->hasMethod('excludeFromScaffolding')) { $excludeFromScaffolding = $this->obj->excludeFromScaffolding(); } // tabbed or untabbed if ($this->tabbed) { $fields->push(new TabSet("Root", $mainTab = new Tab("Main"))); $mainTab->setTitle(_t('SiteTree.TABMAIN', "Main")); } // add database fields foreach ($this->obj->db() as $fieldName => $fieldType) { if (in_array($fieldName, $excludeFromScaffolding) || $this->restrictFields && !in_array($fieldName, $this->restrictFields)) { continue; } // @todo Pass localized title if ($this->fieldClasses && isset($this->fieldClasses[$fieldName])) { $fieldClass = $this->fieldClasses[$fieldName]; $fieldObject = new $fieldClass($fieldName); } else { $fieldObject = $this->obj->dbObject($fieldName)->scaffoldFormField(null, $this->getParamsArray()); } $fieldObject->setTitle($this->obj->fieldLabel($fieldName)); if ($this->tabbed) { $fields->addFieldToTab("Root.Main", $fieldObject); } else { $fields->push($fieldObject); } } // add has_one relation fields if ($this->obj->has_one()) { foreach ($this->obj->has_one() as $relationship => $component) { if (in_array($relationship, $excludeFromScaffolding) || $this->restrictFields && !in_array($relationship, $this->restrictFields)) { continue; } $fieldName = "{$relationship}ID"; if ($this->fieldClasses && isset($this->fieldClasses[$fieldName])) { $fieldClass = $this->fieldClasses[$fieldName]; $hasOneField = new $fieldClass($fieldName); } else { $hasOneField = $this->obj->dbObject($fieldName)->scaffoldFormField(null, $this->getParamsArray()); } $hasOneField->setTitle($this->obj->fieldLabel($relationship)); if ($this->tabbed) { $fields->addFieldToTab("Root.Main", $hasOneField); } else { $fields->push($hasOneField); } } } // only add relational fields if an ID is present if ($this->obj->ID) { // add has_many relation fields if ($this->obj->has_many() && ($this->includeRelations === true || isset($this->includeRelations['has_many']))) { foreach ($this->obj->has_many() as $relationship => $component) { if (in_array($relationship, $excludeFromScaffolding)) { continue; } if ($this->tabbed) { $relationTab = $fields->findOrMakeTab("Root.{$relationship}", $this->obj->fieldLabel($relationship)); } $fieldClass = isset($this->fieldClasses[$relationship]) ? $this->fieldClasses[$relationship] : 'GridField'; if (singleton($component) instanceof SilvercartModelAdmin_ReadonlyInterface) { $config = SilvercartGridFieldConfig_Readonly::create(); } elseif (singleton($component) instanceof SilvercartModelAdmin_ExclusiveRelationInterface || $this->obj->has_extension($this->obj->{$relationship}()->dataClass(), 'SilvercartLanguageDecorator')) { $config = SilvercartGridFieldConfig_ExclusiveRelationEditor::create(); } else { $config = SilvercartGridFieldConfig_RelationEditor::create(); } $grid = Object::create($fieldClass, $relationship, $this->obj->fieldLabel($relationship), $this->obj->{$relationship}(), $config); if ($this->tabbed) { $fields->addFieldToTab("Root.{$relationship}", $grid); } else { $fields->push($grid); } } } if ($this->obj->many_many() && ($this->includeRelations === true || isset($this->includeRelations['many_many']))) { foreach ($this->obj->many_many() as $relationship => $component) { if (in_array($relationship, $excludeFromScaffolding)) { continue; } if ($this->tabbed) { $relationTab = $fields->findOrMakeTab("Root.{$relationship}", $this->obj->fieldLabel($relationship)); } $fieldClass = isset($this->fieldClasses[$relationship]) ? $this->fieldClasses[$relationship] : 'GridField'; $grid = Object::create($fieldClass, $relationship, $this->obj->fieldLabel($relationship), $this->obj->{$relationship}(), SilvercartGridFieldConfig_RelationEditor::create()); if ($this->tabbed) { $fields->addFieldToTab("Root.{$relationship}", $grid); } else { $fields->push($grid); } } } } return $fields; }
/** * input fields for editing * * @param mixed $params optional * * @return FieldList */ public function getCMSFields($params = null) { $fields = parent::getCMSFieldsForModules($params); $fields->removeByName('InvoiceInfo'); $fields->removeByName('TextBankAccountInfo'); // Add fields to default tab ------------------------------------------ $channelField = new ReadonlyField('DisplayPaymentChannel', _t('SilvercartPaymentPrepayment.PAYMENT_CHANNEL'), $this->getPaymentChannelName($this->PaymentChannel)); $fields->addFieldToTab('Root.Basic', $channelField, 'mode'); // Additional tabs and fields ----------------------------------------- $tabTextTemplates = new Tab(_t('SilvercartPaymentPrepayment.TEXT_TEMPLATES', 'text templates', null, 'Textvorlagen')); $fields->fieldByName('Root')->push($tabTextTemplates); // text templates for tab fields // Textvorlagen Tab Felder -------------------------------------------- $languageFields = SilvercartLanguageHelper::prepareCMSFields($this->getLanguageClassName()); switch ($this->PaymentChannel) { case 'invoice': $tabTextTemplates->setChildren(new FieldList($languageFields->fieldByName('InvoiceInfo'))); break; case 'prepayment': default: $tabTextTemplates->setChildren(new FieldList($languageFields->fieldByName('TextBankAccountInfo'))); } $translations = new GridField('SilvercartPaymentPrepaymentLanguages', $this->fieldLabel('SilvercartPaymentPrepaymentLanguages'), $this->SilvercartPaymentPrepaymentLanguages(), SilvercartGridFieldConfig_ExclusiveRelationEditor::create()); $fields->addFieldToTab('Root.Translations', $translations); return $fields; }
/** * Returns the input fields for this widget without scaffolding * * @return FieldList * * @author Sascha Koehler <*****@*****.**>, Sebastian Diel <*****@*****.**> * @since 03.09.2012 */ public function getCMSFields() { $fields = new FieldList(); $rootTabSet = new TabSet('Root'); $basicTab = new Tab('Basic', $this->fieldLabel('BasicTab')); $translationTab = new Tab('Translations', $this->fieldLabel('TranslationsTab')); $titleField = new TextField('FrontTitle', $this->fieldLabel('FrontTitle')); $contentField = new TextareaField('FrontContent', $this->fieldLabel('FrontContent'), 10); $imageTable = new GridField('SilvercartImages', $this->fieldLabel('Images'), $this->SilvercartImages()->sort('Sort'), SilvercartGridFieldConfig_RelationEditor::create()); $imageTable->getConfig()->removeComponentsByType('GridFieldAddNewButton'); $imageTable->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter'); $imageTable->getConfig()->addComponent(new GridFieldDeleteAction()); $imageTable->getConfig()->addComponent(new GridFieldSortableRows('Sort')); $imagesUploadDescription = sprintf($this->fieldLabel('SilvercartImagesDescription'), $this->getSliderHeight()); $imagesUploadField = new SilvercartImageUploadField('UploadSilvercartImages', $this->fieldLabel('AddImage')); $imagesUploadField->setFolderName('Uploads/silvercart-images'); $imagesUploadField->setDescription($imagesUploadDescription); $translationsTableField = new GridField('SilvercartSlidorionProductGroupWidgetLanguages', $this->fieldLabel('translations'), $this->SilvercartSlidorionProductGroupWidgetLanguages(), SilvercartGridFieldConfig_ExclusiveRelationEditor::create()); $widgetHeightField = new TextField('widgetHeight', $this->fieldLabel('widgetHeight')); $speedField = new TextField('speed', $this->fieldLabel('speed')); $intervalField = new TextField('interval', $this->fieldLabel('interval')); $effectField = new DropdownField('effect', $this->fieldLabel('effect'), singleton('SilvercartSlidorionProductGroupWidget')->dbObject('effect')->enumValues(), $this->effect); $hoverPauseField = new CheckboxField('hoverPause', $this->fieldLabel('hoverPause')); $autoPlayField = new CheckboxField('autoPlay', $this->fieldLabel('autoPlay')); $advancedToggle = ToggleCompositeField::create('AdvancedToggle', $this->fieldLabel('AdvancedTab'), array($widgetHeightField, $speedField, $intervalField, $effectField, $hoverPauseField, $autoPlayField))->setHeadingLevel(4); $basicTab->push($titleField); $basicTab->push($contentField); $basicTab->push($imagesUploadField); $basicTab->push($imageTable); $basicTab->push($advancedToggle); $translationTab->push($translationsTableField); $fields->push($rootTabSet); $rootTabSet->push($basicTab); $rootTabSet->push($translationTab); return $fields; }