Skip to content

Commit df7c9e9

Browse files
committed
Merge branch 'ACP2E-222' of https://github.com/magento-l3/magento2ce into PR-2022-02-15-CE2
2 parents ff550ea + ecb1e02 commit df7c9e9

File tree

8 files changed

+96
-28
lines changed

8 files changed

+96
-28
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\ViewModel;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
/**
13+
* Custom Create Account button view model
14+
*/
15+
class CreateAccountButton implements ArgumentInterface
16+
{
17+
/**
18+
* If Create Account button should be disabled
19+
*
20+
* @return bool
21+
*/
22+
public function disabled(): bool
23+
{
24+
return false;
25+
}
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\ViewModel;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
/**
13+
* Custom Login button view model
14+
*/
15+
class LoginButton implements ArgumentInterface
16+
{
17+
/**
18+
* If Login button should be disabled
19+
*
20+
* @return bool
21+
*/
22+
public function disabled(): bool
23+
{
24+
return false;
25+
}
26+
}

app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<arguments>
1919
<argument name="attribute_data" xsi:type="object">Magento\Customer\Block\DataProviders\AddressAttributeData</argument>
2020
<argument name="region_provider" xsi:type="object">Magento\Customer\ViewModel\Address\RegionProvider</argument>
21+
<argument name="create_account_button_view_model" xsi:type="object">Magento\Customer\ViewModel\CreateAccountButton</argument>
2122
</arguments>
2223
<container name="form.additional.info" as="form_additional_info"/>
2324
<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>

app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
<container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login-container">
1616
<block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="Magento_Customer::form/login.phtml">
1717
<container name="form.additional.info" as="form_additional_info"/>
18+
<arguments>
19+
<argument name="login_button_view_model" xsi:type="object">Magento\Customer\ViewModel\LoginButton</argument>
20+
</arguments>
1821
</block>
1922
<block class="Magento\Customer\Block\Form\Login\Info" name="customer.new" template="Magento_Customer::newcustomer.phtml"/>
2023
</container>

app/code/Magento/Customer/view/frontend/templates/form/login.phtml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
// phpcs:disable Generic.Files.LineLength.TooLong
88

99
/** @var \Magento\Customer\Block\Form\Login $block */
10+
/** @var \Magento\Customer\ViewModel\LoginButton $loginButtonViewModel */
11+
$loginButtonViewModel = $block->getData('login_button_view_model');
1012
?>
1113
<div class="block block-customer-login">
1214
<div class="block-title">
@@ -47,12 +49,13 @@
4749
</div>
4850
<?= $block->getChildHtml('form_additional_info') ?>
4951
<div class="actions-toolbar">
50-
<div class="primary"><button type="submit" class="action login primary" name="send" id="send2"><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
52+
<div class="primary"><button type="submit" class="action login primary" name="send" id="send2" <?php if ($loginButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>><span><?= $block->escapeHtml(__('Sign In')) ?></span></button></div>
5153
<div class="secondary"><a class="action remind" href="<?= $block->escapeUrl($block->getForgotPasswordUrl()) ?>"><span><?= $block->escapeHtml(__('Forgot Your Password?')) ?></span></a></div>
5254
</div>
5355
</fieldset>
5456
</form>
5557
</div>
58+
<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
5659
<script type="text/x-magento-init">
5760
{
5861
"*": {

app/code/Magento/Customer/view/frontend/templates/form/register.phtml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ $directoryHelper = $block->getData('directoryHelper');
1717
/** @var \Magento\Customer\ViewModel\Address\RegionProvider $regionProvider */
1818
$regionProvider = $block->getRegionProvider();
1919
$formData = $block->getFormData();
20+
/** @var \Magento\Customer\ViewModel\CreateAccountButton $createAccountButtonViewModel */
21+
$createAccountButtonViewModel = $block->getData('create_account_button_view_model');
2022
?>
2123
<?php $displayAll = $block->getConfig('general/region/display_all'); ?>
2224
<?= $block->getChildHtml('form_fields_before') ?>
@@ -291,7 +293,9 @@ $formData = $block->getFormData();
291293
<div class="primary">
292294
<button type="submit"
293295
class="action submit primary"
294-
title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>">
296+
title="<?= $escaper->escapeHtmlAttr(__('Create an Account')) ?>"
297+
id="send2"
298+
<?php if ($createAccountButtonViewModel->disabled()): ?> disabled="disabled" <?php endif; ?>>
295299
<span><?= $escaper->escapeHtml(__('Create an Account')) ?></span>
296300
</button>
297301
</div>
@@ -348,6 +352,7 @@ script;
348352
$regionId = (int) $formData->getRegionId();
349353
$countriesWithOptionalZip = /* @noEscape */ $directoryHelper->getCountriesWithOptionalZip(true);
350354
?>
355+
<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
351356
<script type="text/x-magento-init">
352357
{
353358
"#country": {
@@ -365,7 +370,7 @@ script;
365370
}
366371
</script>
367372
<?php endif; ?>
368-
373+
<?php // phpcs:ignore Magento2.Legacy.PhtmlTemplate ?>
369374
<script type="text/x-magento-init">
370375
{
371376
".field.password": {

dev/tests/integration/testsuite/Magento/Customer/Block/Form/LoginTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\TestFramework\Helper\Bootstrap;
1313
use Magento\TestFramework\Helper\Xpath;
1414
use PHPUnit\Framework\TestCase;
15+
use Magento\Customer\ViewModel\LoginButton;
1516

1617
/**
1718
* Class checks login form view
@@ -48,6 +49,7 @@ protected function setUp(): void
4849
$this->layout = $this->objectManager->get(LayoutInterface::class);
4950
$this->block = $this->layout->createBlock(Login::class);
5051
$this->block->setTemplate('Magento_Customer::form/login.phtml');
52+
$this->block->setLoginButtonViewModel($this->objectManager->get(LoginButton::class));
5153

5254
parent::setUp();
5355
}

dev/tests/integration/testsuite/Magento/Customer/Block/Form/RegisterTest.php

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Magento\Customer\ViewModel\Address\RegionProvider;
1010
use Magento\Framework\View\Element\Template;
1111
use Magento\TestFramework\Helper\Bootstrap;
12+
use Magento\Customer\ViewModel\CreateAccountButton;
1213

1314
/**
1415
* Test class for \Magento\Customer\Block\Form\Register
@@ -27,7 +28,8 @@ public function testCompanyDefault(): void
2728
/** @var \Magento\Customer\Block\Widget\Company $block */
2829
$block = Bootstrap::getObjectManager()->create(Register::class)
2930
->setTemplate('Magento_Customer::form/register.phtml')
30-
->setShowAddressFields(true);
31+
->setShowAddressFields(true)
32+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
3133
$this->setAttributeDataProvider($block);
3234
$this->setRegionProvider($block);
3335

@@ -42,10 +44,10 @@ public function testCompanyDefault(): void
4244
public function testTelephoneDefault(): void
4345
{
4446
/** @var \Magento\Customer\Block\Widget\Company $block */
45-
$block = Bootstrap::getObjectManager()->create(
46-
Register::class
47-
)->setTemplate('Magento_Customer::form/register.phtml')
48-
->setShowAddressFields(true);
47+
$block = Bootstrap::getObjectManager()->create(Register::class)
48+
->setTemplate('Magento_Customer::form/register.phtml')
49+
->setShowAddressFields(true)
50+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
4951
$this->setAttributeDataProvider($block);
5052
$this->setRegionProvider($block);
5153

@@ -60,10 +62,10 @@ public function testTelephoneDefault(): void
6062
public function testFaxDefault(): void
6163
{
6264
/** @var \Magento\Customer\Block\Widget\Company $block */
63-
$block = Bootstrap::getObjectManager()->create(
64-
Register::class
65-
)->setTemplate('Magento_Customer::form/register.phtml')
66-
->setShowAddressFields(true);
65+
$block = Bootstrap::getObjectManager()->create(Register::class)
66+
->setTemplate('Magento_Customer::form/register.phtml')
67+
->setShowAddressFields(true)
68+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
6769
$this->setAttributeDataProvider($block);
6870
$this->setRegionProvider($block);
6971

@@ -85,10 +87,10 @@ public function testCompanyDisabled(): void
8587
$model->save();
8688

8789
/** @var \Magento\Customer\Block\Widget\Company $block */
88-
$block = Bootstrap::getObjectManager()->create(
89-
Register::class
90-
)->setTemplate('Magento_Customer::form/register.phtml')
91-
->setShowAddressFields(true);
90+
$block = Bootstrap::getObjectManager()->create(Register::class)
91+
->setTemplate('Magento_Customer::form/register.phtml')
92+
->setShowAddressFields(true)
93+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
9294
$this->setAttributeDataProvider($block);
9395
$this->setRegionProvider($block);
9496

@@ -110,10 +112,10 @@ public function testTelephoneDisabled(): void
110112
$model->save();
111113

112114
/** @var \Magento\Customer\Block\Widget\Company $block */
113-
$block = Bootstrap::getObjectManager()->create(
114-
Register::class
115-
)->setTemplate('Magento_Customer::form/register.phtml')
116-
->setShowAddressFields(true);
115+
$block = Bootstrap::getObjectManager()->create(Register::class)
116+
->setTemplate('Magento_Customer::form/register.phtml')
117+
->setShowAddressFields(true)
118+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
117119
$this->setAttributeDataProvider($block);
118120
$this->setRegionProvider($block);
119121

@@ -135,10 +137,10 @@ public function testFaxEnabled(): void
135137
$model->save();
136138

137139
/** @var \Magento\Customer\Block\Widget\Company $block */
138-
$block = Bootstrap::getObjectManager()->create(
139-
Register::class
140-
)->setTemplate('Magento_Customer::form/register.phtml')
141-
->setShowAddressFields(true);
140+
$block = Bootstrap::getObjectManager()->create(Register::class)
141+
->setTemplate('Magento_Customer::form/register.phtml')
142+
->setShowAddressFields(true)
143+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
142144
$this->setAttributeDataProvider($block);
143145
$this->setRegionProvider($block);
144146

@@ -151,10 +153,10 @@ public function testFaxEnabled(): void
151153
public function testCityWithStoreLabel(): void
152154
{
153155
/** @var \Magento\Customer\Block\Form\Register $block */
154-
$block = Bootstrap::getObjectManager()->create(
155-
Register::class
156-
)->setTemplate('Magento_Customer::form/register.phtml')
157-
->setShowAddressFields(true);
156+
$block = Bootstrap::getObjectManager()->create(Register::class)
157+
->setTemplate('Magento_Customer::form/register.phtml')
158+
->setShowAddressFields(true)
159+
->setCreateAccountButtonViewModel(Bootstrap::getObjectManager()->create(CreateAccountButton::class));
158160
$this->setAttributeDataProvider($block);
159161
$this->setRegionProvider($block);
160162

0 commit comments

Comments
 (0)