public function getFormFields(Order $order) { $member = Member::currentUser() ?: $order->Member(); if (!$member || !$member->exists() || !$member->AddressBook()->exists()) { return parent::getFormFields($order); } $options = []; $default = $this->getDefaultAddress($member); $params = ['addfielddescriptions' => $this->formfielddescriptions]; $addressFields = $default->getFrontEndFields($params); if ($this->allowSaveAsNew) { $addressFields->push(CheckboxField::create('saveAsNew', _t('AlternateAddressBookCheckoutComponent.SAVE_AS_NEW', 'Save as new address'))); } $options[] = SelectionGroup_Item::create('address-' . $default->ID, HasOneCompositeField::create('address-' . $default->ID, $default, $addressFields), _t('AlternateAddressBookCheckoutComponent.USE_DEFAULT', '{address}', ['address' => $default->Title])); if ($member->AddressBook()->exclude('ID', $default->ID)->exists()) { foreach ($member->AddressBook()->exclude('ID', $default->ID) as $address) { $addressFields = $address->getFrontEndFields($params); $addressFields->push(CheckboxField::create('saveAsNew', _t('AlternateAddressBookCheckoutComponent.SAVE_AS_NEW', 'Save as new address'))); if ($member->DefaultShippingAddressID != $address->ID) { $addressFields->push(CheckboxField::create('useAsDefaultShipping', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_SHIPPING', 'Use as default shipping address'))); } if ($member->DefaultBillingAddressID != $address->ID) { $addressFields->push(CheckboxField::create('useAsDefaultBilling', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_BILLING', 'Use as default billing address'))); } $options[] = SelectionGroup_Item::create('address-' . $address->ID, HasOneCompositeField::create('address-' . $address->ID, $address, $addressFields), _t('AlternateAddressBookCheckoutComponent.SHIP_TO_SELECTED_ADDRESS', '{address}', ['address' => $address->Title])); } } if ($this->allowNew) { $addressFields = parent::getFormFields($order); $addressFields->push(CheckboxField::create('useAsDefaultShipping', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_SHIPPING', 'Use as default shipping address'))); $addressFields->push(CheckboxField::create('useAsDefaultBilling', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_BILLING', 'Use as default billing address'))); $options[] = SelectionGroup_Item::create('new', HasOneCompositeField::create('new', Address::create(), $addressFields), _t('AlternateAddressBookCheckoutComponent.' . $this->addresstype . '_TO_NEW_ADDRESS', 'New ' . ucfirst($this->addresstype) . ' Address')); } return FieldList::create(TabbedSelectionGroup::create('Use', $options)->setTitle(_t('ShippingDetails.' . $this->addresstype . '_ADDRESS', ucfirst($this->addresstype) . ' Address'))->setLabelTab(true)->showAsDropdown(true)); }
public function getFormFields(Order $order) { $fields = parent::getFormFields($order); if ($existingaddressfields = $this->getExistingAddressFields()) { Requirements::javascript('shop/javascript/CheckoutPage.js'); // add the fields for a new address after the dropdown field $existingaddressfields->merge($fields); // group under a composite field (invisible by default) so we // easily know which fields to show/hide $label = _t("AddressBookCheckkoutComponent.{$this->addresstype}Address", "{$this->addresstype} Address"); return new FieldList(CompositeField::create($existingaddressfields)->addExtraClass('hasExistingValues')->setLegend($label)->setTag(Config::inst()->get('AddressBookCheckoutComponent', 'composite_field_tag'))); } return $fields; }
public function getFormFields(Order $order) { $field = $this->addresstype . 'ToSameAddress'; $checkbox = CheckboxField::create($field, _t('Dependant' . $this->addresstype . 'AddressCheckoutComponent.SAME_AS_' . $this->useAddressType, 'Use ' . $this->useAddressType . ' address'), true); return FieldList::create($checkbox, CompositeField::create(parent::getFormFields($order))->setName($this->addresstype . 'Address')->setAttribute('data-hide-if', '[name=' . $this->name() . '_' . $field . ']:checked')); }