/**
  * adds a Files Tab to the page with a GridField
  * 
  * @return FieldList
  */
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $silvercartFileField = new GridField('SilvercartFiles', $this->fieldLabel('SilvercartFiles'), $this->SilvercartFiles(), SilvercartGridFieldConfig_RelationEditor::create());
     $silvercartFileField->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter');
     $fields->findOrMakeTab('Root.SilvercartFiles', $this->fieldLabel('SilvercartFiles'));
     $fields->addFieldToTab('Root.SilvercartFiles', $silvercartFileField);
     return $fields;
 }
 /**
  * Returns the input fields for this widget.
  * 
  * @return FieldList
  * 
  * @author Sebastian Diel <*****@*****.**>
  * @since 23.02.2016
  */
 public function getCMSFields()
 {
     $fields = SilvercartDataObject::getCMSFields($this, 'ExtraCssClasses', false);
     $slideImagesTable = new GridField('slideImages', $this->fieldLabel('slideImages'), $this->slideImages(), SilvercartGridFieldConfig_RelationEditor::create());
     $slideImagesTable->getConfig()->removeComponentsByType('GridFieldAddNewButton');
     $slideImagesTable->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter');
     $slideImagesTable->getConfig()->addComponent(new GridFieldDeleteAction());
     $slideImagesUploadField = new SilvercartImageUploadField('UploadslideImages', $this->fieldLabel('AddImage'));
     $slideImagesUploadField->setFolderName('Uploads/slider-images');
     $slideImagesUploadField->setRelationClassName('SilvercartImageSliderImage');
     $fields->findOrMakeTab('Root.slideImages', $this->fieldLabel('slideImages'));
     $fields->addFieldToTab('Root.slideImages', $slideImagesUploadField);
     $fields->addFieldToTab('Root.slideImages', $slideImagesTable);
     $this->getCMSFieldsSliderTab($fields);
     return $fields;
 }
 /**
  * Adds or removes GUI elements for the backend editing mask.
  *
  * @param FieldList $fields The original FieldList
  *
  * @return void
  * 
  * @author Sebastian Diel <*****@*****.**>,
  *         Sascha Koehler <*****@*****.**>
  * @since 03.03.2014
  */
 public function updateCMSFields(FieldList $fields)
 {
     $fields->addFieldToTab('Root.Members', new TextField('Code', _t('Group.CODE')));
     if ($this->owner->ID) {
         $gridFieldConfig = SilvercartGridFieldConfig_RelationEditor::create();
         $shippingMethodsTable = new GridField('SilvercartShippingMethods', $this->owner->fieldLabel('SilvercartShippingMethods'), $this->owner->SilvercartShippingMethods(), $gridFieldConfig);
         $fields->findOrMakeTab('Root.SilvercartShippingMethod', $this->owner->fieldLabel('SilvercartShippingMethods'));
         $fields->addFieldToTab("Root.SilvercartShippingMethod", $shippingMethodsTable);
     }
     $enumValues = $this->owner->dbObject('Pricetype')->enumValues();
     $i18nSource = array();
     foreach ($enumValues as $value => $label) {
         $i18nSource[$value] = _t('SilvercartCustomer.' . strtoupper($label), $label);
     }
     $pricetypeField = new DropdownField('Pricetype', $this->owner->fieldLabel('Pricetype'), $i18nSource, $this->owner->Pricetype);
     $fields->addFieldToTab("Root.Members", $pricetypeField, 'Members');
 }
Ejemplo n.º 4
0
 /**
  * customizes the backends fields, mainly for ModelAdmin
  *
  * @return FieldList the fields for the backend
  *
  * @author Roland Lehmann <*****@*****.**>, Sebastian Diel <*****@*****.**>
  * @since 13.02.2013
  */
 public function getCMSFields()
 {
     $fields = SilvercartDataObject::getCMSFields($this);
     $paymentMethodsTable = $fields->dataFieldByName('SilvercartPaymentMethods');
     $paymentMethodsTable->setConfig(SilvercartGridFieldConfig_RelationEditor::create());
     $languageFields = SilvercartLanguageHelper::prepareCMSFields($this->getLanguageClassName());
     foreach ($languageFields as $languageField) {
         $fields->insertBefore($languageField, 'ISO2');
     }
     $displayPositionMap = array('0' => _t('SilvercartOrderSearchForm.PLEASECHOOSE'));
     for ($x = 1; $x <= self::getPrioritiveCountryCount(false) + 1; $x++) {
         $displayPositionMap[$x] = $x;
     }
     $displayPositionField = new DropdownField('DisplayPosition', $this->fieldLabel('DisplayPosition'), $displayPositionMap);
     $fields->insertAfter($displayPositionField, 'IsPrioritive');
     return $fields;
 }
 /**
  * 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;
 }
 /**
  * Returns modified CMS fields for the payment modules
  *
  * @return FieldList
  */
 public function getCMSFieldsForModules()
 {
     $this->getCMSFieldsIsCalled = true;
     $tabset = new TabSet('Root');
     $fields = new FieldList($tabset);
     // --------------------------------------------------------------------
     // Common GUI elements for all payment methods
     // --------------------------------------------------------------------
     $tabBasic = new Tab('Basic', _t('SilvercartPaymentMethod.BASIC_SETTINGS', 'basic settings'));
     $translationsTab = new Tab('Translations');
     $translationsTab->setTitle(_t('SilvercartConfig.TRANSLATIONS'));
     $tabset->push($tabBasic);
     $tabset->push($translationsTab);
     $tabBasicFieldList = new FieldList();
     $tabBasic->setChildren($tabBasicFieldList);
     //multilingual fields
     $tabBasicFieldList->push(new CheckboxField('isActive', _t('SilvercartShopAdmin.PAYMENT_ISACTIVE', 'activated')));
     $tabBasicFieldList->push(new DropdownField('mode', _t('SilvercartPaymentMethod.MODE', 'mode'), array('Live' => $this->fieldLabel('modeLive'), 'Dev' => $this->fieldLabel('modeDev')), $this->mode));
     if ($this->isExtendingSilvercartPaymentMethod()) {
         $languageFields = SilvercartLanguageHelper::prepareCMSFields($this->getLanguageClassName());
         foreach ($languageFields as $languageField) {
             $tabBasicFieldList->push($languageField);
         }
     }
     $tabBasicFieldList->push(new TextField('minAmountForActivation', _t('SilvercartShopAdmin.PAYMENT_MINAMOUNTFORACTIVATION')));
     $tabBasicFieldList->push(new TextField('maxAmountForActivation', _t('SilvercartShopAdmin.PAYMENT_MAXAMOUNTFORACTIVATION')));
     $tabBasicFieldList->push(new DropdownField('orderStatus', _t('SilvercartPaymentMethod.STANDARD_ORDER_STATUS', 'standard order status for this payment method'), SilvercartOrderStatus::getStatusList()->map('Code', 'Title')->toArray()));
     $tabBasicFieldList->dataFieldByName('orderStatus')->setEmptyString(_t("SilvercartEditAddressForm.EMPTYSTRING_PLEASECHOOSE"));
     // --------------------------------------------------------------------
     // Handling cost table
     // --------------------------------------------------------------------
     $tabHandlingCosts = new Tab('HandlingCosts', _t('SilvercartPaymentMethod.HANDLINGCOSTS_SETTINGS'));
     $tabset->push($tabHandlingCosts);
     $handlingCostField = new GridField('SilvercartHandlingCosts', $this->fieldLabel('SilvercartHandlingCosts'), $this->SilvercartHandlingCosts(), SilvercartGridFieldConfig_RelationEditor::create(50));
     $tabHandlingCosts->setChildren(new FieldList($handlingCostField));
     // --------------------------------------------------------------------
     // GUI for management of logo images
     // --------------------------------------------------------------------
     $tabLogos = new Tab('Logos', _t('SilvercartPaymentMethod.PAYMENT_LOGOS', 'Payment Logos'));
     $tabset->push($tabLogos);
     $paymentLogosTable = new GridField('PaymentLogos', $this->fieldLabel('PaymentLogos'), $this->PaymentLogos(), SilvercartGridFieldConfig_RelationEditor::create());
     $paymentLogosTable->getConfig()->removeComponentsByType('GridFieldAddNewButton');
     $paymentLogosTable->getConfig()->removeComponentsByType('GridFieldAddExistingAutocompleter');
     $paymentLogosTable->getConfig()->addComponent(new GridFieldDeleteAction());
     $paymentLogosUploadField = new SilvercartImageUploadField('UploadPaymentLogos', $this->fieldLabel('AddPaymentLogos'));
     $paymentLogosUploadField->setFolderName('Uploads/payment-images');
     $tabLogos->setChildren(new FieldList(new CheckboxField('showPaymentLogos', _t('SilvercartShopAdmin.SHOW_PAYMENT_LOGOS')), $paymentLogosUploadField, $paymentLogosTable));
     // --------------------------------------------------------------------
     // GUI for access management
     // --------------------------------------------------------------------
     $tabAccessManagement = new Tab('AccessManagement', _t('SilvercartPaymentMethod.ACCESS_SETTINGS', 'Access management'));
     $tabset->push($tabAccessManagement);
     $tabsetAccessManagement = new TabSet('AccessManagementSection');
     $tabAccessManagement->push($tabsetAccessManagement);
     $tabAccessManagementBasic = new Tab('AccessManagementBasic', _t('SilvercartPaymentMethod.ACCESS_MANAGEMENT_BASIC_LABEL', 'General'));
     $tabAccessManagementGroup = new Tab('AccessManagementGroup', _t('SilvercartPaymentMethod.ACCESS_MANAGEMENT_GROUP_LABEL', 'By group(s)'));
     $tabAccessManagementUser = new Tab('AccessManagementUser', _t('SilvercartPaymentMethod.ACCESS_MANAGEMENT_USER_LABEL', 'By user(s)'));
     $tabsetAccessManagement->push($tabAccessManagementBasic);
     $tabsetAccessManagement->push($tabAccessManagementGroup);
     $tabsetAccessManagement->push($tabAccessManagementUser);
     $showOnlyForGroupsTable = new GridField('ShowOnlyForGroups', $this->fieldLabel('ShowOnlyForGroups'), $this->ShowOnlyForGroups(), SilvercartGridFieldConfig_RelationEditor::create());
     $showNotForGroupsTable = new GridField('ShowNotForGroups', $this->fieldLabel('ShowNotForGroups'), $this->ShowNotForGroups(), SilvercartGridFieldConfig_RelationEditor::create());
     $showOnlyForUsersTable = new GridField('ShowOnlyForUsers', $this->fieldLabel('ShowOnlyForUsers'), $this->ShowOnlyForUsers(), SilvercartGridFieldConfig_RelationEditor::create());
     $showNotForUsersTable = new GridField('ShowNotForUsers', $this->fieldLabel('ShowNotForUsers'), $this->ShowNotForUsers(), SilvercartGridFieldConfig_RelationEditor::create());
     $restrictionByOrderQuantityField = new TextField('orderRestrictionMinQuantity', '');
     $restrictionByOrderStatusField = new GridField('OrderRestrictionStatus', $this->fieldLabel('SilvercartOrderStatus'), $this->OrderRestrictionStatus(), SilvercartGridFieldConfig_RelationEditor::create());
     // Access management basic --------------------------------------------
     $tabAccessManagementBasic->push(new HeaderField('RestrictionLabel', _t('SilvercartPaymentMethod.RESTRICTION_LABEL') . ':', 2));
     $tabAccessManagementBasic->push(new LiteralField('separatorForActivationByOrderRestrictions', '<hr />'));
     $tabAccessManagementBasic->push(new CheckboxField('enableActivationByOrderRestrictions', _t('SilvercartPaymentMethod.ENABLE_RESTRICTION_BY_ORDER_LABEL')));
     $tabAccessManagementBasic->push(new LiteralField('RestrictionByOrderQuantityLabel', '<p>' . _t('SilvercartPaymentMethod.RESTRICT_BY_ORDER_QUANTITY') . ':</p>'));
     $tabAccessManagementBasic->push($restrictionByOrderQuantityField);
     $tabAccessManagementBasic->push(new LiteralField('RestrictionByOrderStatusLabel', '<p>' . _t('SilvercartPaymentMethod.RESTRICT_BY_ORDER_STATUS') . ':</p>'));
     $tabAccessManagementBasic->push($restrictionByOrderStatusField);
     // Access management for groups ---------------------------------------
     $tabAccessManagementGroup->push(new HeaderField('ShowOnlyForGroupsLabel', _t('SilvercartPaymentMethod.SHOW_ONLY_FOR_GROUPS_LABEL') . ':', 2));
     $tabAccessManagementGroup->push($showOnlyForGroupsTable);
     $tabAccessManagementGroup->push(new HeaderField('ShowNotForGroupsLabel', _t('SilvercartPaymentMethod.SHOW_NOT_FOR_GROUPS_LABEL') . ':', 2));
     $tabAccessManagementGroup->push($showNotForGroupsTable);
     // Access management for users ----------------------------------------
     $tabAccessManagementUser->push(new HeaderField('ShowOnlyForUsersLabel', _t('SilvercartPaymentMethod.SHOW_ONLY_FOR_USERS_LABEL') . ':', 2));
     $tabAccessManagementUser->push($showOnlyForUsersTable);
     $tabAccessManagementUser->push(new HeaderField('ShowNotForUsersLabel', _t('SilvercartPaymentMethod.SHOW_NOT_FOR_USERS_LABEL') . ':', 2));
     $tabAccessManagementUser->push($showNotForUsersTable);
     // --------------------------------------------------------------------
     // Countries
     // --------------------------------------------------------------------
     $countriesTab = new Tab('SilvercartCountries', $this->fieldLabel('SilvercartCountries'));
     $tabset->push($countriesTab);
     $countriesTable = new GridField('SilvercartCountries', $this->fieldLabel('SilvercartCountries'), $this->SilvercartCountries(), SilvercartGridFieldConfig_RelationEditor::create());
     $countriesTab->push($countriesTable);
     // --------------------------------------------------------------------
     // shipping methods
     // --------------------------------------------------------------------
     $shippingMethodsTab = new Tab('SilvercartShippingMethods', $this->fieldLabel('SilvercartShippingMethods'));
     $shippingMethodsDesc = new HeaderField('SilvercartShippingMethodsDesc', _t('SilvercartPaymentMethod.SHIPPINGMETHOD_DESC'));
     $shippingMethodsTable = new GridField('SilvercartShippingMethods', _t('SilvercartPaymentMethod.SHIPPINGMETHOD', 'shipping method'), $this->SilvercartShippingMethods(), SilvercartGridFieldConfig_RelationEditor::create(50));
     $tabset->push($shippingMethodsTab);
     $shippingMethodsTab->push($shippingMethodsDesc);
     $shippingMethodsTab->push($shippingMethodsTable);
     $this->getFieldsForChargesAndDiscounts($fields);
     $this->extend('updateCMSFields', $fields);
     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;
 }