Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add missing field type DNI in brand address form #16153

Merged
merged 5 commits into from Oct 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -0,0 +1,72 @@
/**
* 2007-2019 PrestaShop and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2019 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/

const $ = window.$;

/**
* Toggle DNI input requirement on country selection
*
* Usage:
*
* <!-- Country select options must have need_dni attribute when needed -->
* <select name="id_country" id="id_country" states-url="path/to/states/api">
* ...
* <option value="6" need_dni="1">Spain</value>
* ...
* </select>
*
* In JS:
*
* new CountryDniRequiredToggler('#id_country', '#id_country_dni', 'label[for="id_country_dni"]');
*/
export default class CountryDniRequiredToggler {
constructor(countryInputSelector, countryDniInput, countryDniInputLabel) {
this.$countryDniInput = $(countryDniInput);
this.$countryDniInputLabel = $(countryDniInputLabel);
this.$countryInput = $(countryInputSelector);
this.countryInputSelectedSelector = `${countryInputSelector}>option:selected`;
this.countryDniInputLabelDangerSelector = `${countryDniInputLabel}>span.text-danger`;

this.$countryInput.on('change', () => this._toggle());

// toggle on page load
this._toggle();
}

/**
* Toggles DNI input required
*
* @private
*/
_toggle() {
const $countrySelectedOption = $(this.countryInputSelectedSelector);
$(this.countryDniInputLabelDangerSelector).remove();
this.$countryDniInput.attr('required', false);
if (1 === parseInt($countrySelectedOption.attr('need_dni'), 10)) {
this.$countryDniInput.attr('required', true);
this.$countryDniInputLabel.prepend($('<span class="text-danger">*</span>'));
}
}
}
Expand Up @@ -27,4 +27,6 @@ export default {
manufacturerAddressCountrySelect: '#manufacturer_address_id_country',
manufacturerAddressStateSelect: '#manufacturer_address_id_state',
manufacturerAddressStateBlock: '.js-manufacturer-address-state',
manufacturerAddressDniInput: '#manufacturer_address_dni',
manufacturerAddressDniInputLabel: 'label[for="manufacturer_address_dni"]',
};
Expand Up @@ -25,6 +25,7 @@

import CountryStateSelectionToggler from '../../components/country-state-selection-toggler';
import ManufacturerAddressMap from './manufacturer-address-map';
import CountryDniRequiredToggler from '../../components/country-dni-required-toggler';

const $ = window.$;

Expand All @@ -34,4 +35,9 @@ $(document).ready(() => {
ManufacturerAddressMap.manufacturerAddressStateSelect,
ManufacturerAddressMap.manufacturerAddressStateBlock
);
new CountryDniRequiredToggler(
ManufacturerAddressMap.manufacturerAddressCountrySelect,
ManufacturerAddressMap.manufacturerAddressDniInput,
ManufacturerAddressMap.manufacturerAddressDniInputLabel
);
});
41 changes: 11 additions & 30 deletions admin-dev/themes/new-theme/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -30,6 +30,7 @@
use PrestaShop\PrestaShop\Core\Domain\Address\Command\AddManufacturerAddressCommand;
use PrestaShop\PrestaShop\Core\Domain\Address\CommandHandler\AddManufacturerAddressHandlerInterface;
use PrestaShop\PrestaShop\Core\Domain\Address\Exception\AddressException;
use PrestaShop\PrestaShop\Core\Domain\Address\Exception\InvalidAddressFieldException;
use PrestaShop\PrestaShop\Core\Domain\Address\ValueObject\AddressId;
use PrestaShopException;

Expand All @@ -51,7 +52,7 @@ public function handle(AddManufacturerAddressCommand $command)

try {
if (false === $address->validateFields(false) || false === $address->validateFieldsLang(false)) {
throw new AddressException('Address contains invalid field values');
throw new InvalidAddressFieldException('Address contains invalid field values');
}
if (false === $address->add()) {
throw new AddressException(
Expand Down Expand Up @@ -87,6 +88,7 @@ private function createAddressFromCommand(AddManufacturerAddressCommand $command
$address->phone = $command->getHomePhone();
$address->phone_mobile = $command->getMobilePhone();
$address->other = $command->getOther();
$address->dni = $command->getDni();
$address->alias = 'manufacturer';

return $address;
Expand Down
Expand Up @@ -31,6 +31,7 @@
use PrestaShop\PrestaShop\Core\Domain\Address\Command\EditManufacturerAddressCommand;
use PrestaShop\PrestaShop\Core\Domain\Address\CommandHandler\EditManufacturerAddressHandlerInterface;
use PrestaShop\PrestaShop\Core\Domain\Address\Exception\AddressException;
use PrestaShop\PrestaShop\Core\Domain\Address\Exception\InvalidAddressFieldException;
use PrestaShopException;

/**
Expand All @@ -49,7 +50,7 @@ public function handle(EditManufacturerAddressCommand $command)

try {
if (false === $address->validateFields(false) || false === $address->validateFieldsLang(false)) {
throw new AddressException('Address contains invalid field values');
throw new InvalidAddressFieldException('Address contains invalid field values');
}
if (!$address->update()) {
throw new AddressException(
Expand Down Expand Up @@ -107,5 +108,8 @@ private function populateAddressWithData(Address $address, $command)
if (null !== $command->getOther()) {
$address->other = $command->getOther();
}
if (null !== $command->getDni()) {
$address->dni = $command->getDni();
}
}
}
Expand Up @@ -58,7 +58,8 @@ public function handle(GetManufacturerAddressForEditing $query)
(int) $address->id_state,
$address->phone,
$address->phone_mobile,
$address->other
$address->other,
$address->dni
);
}
}