Skip to content

Commit 445e4e5

Browse files
committed
Merge remote-tracking branch 'mpi/MAGETWO-51768' into pr-mpi-200416
2 parents 9d70111 + cefb54b commit 445e4e5

File tree

5 files changed

+56
-45
lines changed

5 files changed

+56
-45
lines changed

app/code/Magento/CheckoutAgreements/view/frontend/templates/additional_agreements.phtml

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,45 @@
66

77
// @codingStandardsIgnoreFile
88

9-
?>
10-
<?php
119
/**
1210
* @var $block \Magento\CheckoutAgreements\Block\Agreements
1311
*/
14-
?>
15-
<?php if (!$block->getAgreements()) {
12+
if (!$block->getAgreements()) {
1613
return;
17-
} ?>
18-
<ol id="checkout-agreements" class="agreements checkout items">
19-
<?php /** @var \Magento\CheckoutAgreements\Api\Data\AgreementInterface $agreement */ ?>
20-
<?php foreach ($block->getAgreements() as $agreement): ?>
21-
<li class="item">
22-
<div class="checkout-agreement-item-content"<?php echo($agreement->getContentHeight() ? ' style="height:' . $agreement->getContentHeight() . '"' : '')?>>
23-
<?php if ($agreement->getIsHtml()):?>
24-
<?php /* @escapeNotVerified */ echo $agreement->getContent() ?>
25-
<?php else:?>
26-
<?php echo nl2br($block->escapeHtml($agreement->getContent())) ?>
27-
<?php endif; ?>
28-
</div>
29-
<?php if($agreement->getMode() == \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_MANUAL): ?>
30-
<div id="checkout-agreements-form-<?php /* @escapeNotVerified */ echo $agreement->getAgreementId()?>" class="field choice agree required">
31-
<input type="checkbox"
32-
id="agreement-<?php /* @escapeNotVerified */ echo $agreement->getAgreementId()?>"
33-
name="agreement[<?php /* @escapeNotVerified */ echo $agreement->getAgreementId()?>]"
34-
value="1"
35-
title="<?php echo $block->escapeHtml($agreement->getCheckboxText()) ?>"
36-
class="checkbox"
37-
data-validate="{required:true}"/>
38-
<label class="label" for="agreement-<?php /* @escapeNotVerified */ echo $agreement->getAgreementId()?>">
39-
<span><?php echo $agreement->getIsHtml() ? $agreement->getCheckboxText() : $block->escapeHtml($agreement->getCheckboxText()) ?></span>
40-
</label>
41-
</div>
42-
<?php elseif($agreement->getMode() == \Magento\CheckoutAgreements\Model\AgreementModeOptions::MODE_AUTO): ?>
43-
<div id="checkout-agreements-form-<?php /* @escapeNotVerified */ echo $agreement->getAgreementId()?>" class="field choice agree">
44-
<span><?php echo $agreement->getIsHtml() ? $agreement->getCheckboxText() : $block->escapeHtml($agreement->getCheckboxText()) ?></span>
45-
</div>
46-
<?php endif; ?>
47-
</li>
48-
<?php endforeach ?>
49-
</ol>
14+
}
15+
16+
/** @var \Magento\CheckoutAgreements\Model\ResourceModel\Agreement\Collection $argeementsCollection */
17+
$argeementsCollection = $block->getAgreements();
18+
$agreementMappedArray = [];
19+
/** @var \Magento\CheckoutAgreements\Model\Agreement $agreement */
20+
foreach ($argeementsCollection as $agreement) {
21+
if ($agreement->getIsActive()) {
22+
$agreementMappedArray[] = [
23+
'mode' => $agreement->getMode(),
24+
'agreementId' => $agreement->getAgreementId(),
25+
'checkboxText' => $agreement->getCheckboxText(),
26+
'content' => $agreement->getContent()
27+
];
28+
}
29+
}
30+
$agreementJson = json_encode($agreementMappedArray);
31+
?>
32+
33+
<div data-bind="scope: 'checkout-agreements-component-scope'" class="checkout-agreements-block">
34+
<!-- ko template: getTemplate() --><!-- /ko -->
35+
</div>
36+
<script type="text/x-magento-init">
37+
{
38+
"*": {
39+
"Magento_Ui/js/core/app": {
40+
"components": {
41+
"checkout-agreements-component-scope": {
42+
"component": "Magento_CheckoutAgreements/js/view/checkout-agreements",
43+
"agreements": <?php /* @noEscape */ echo $agreementJson; ?>,
44+
"isVisible": true
45+
}
46+
}
47+
}
48+
}
49+
}
50+
</script>

app/code/Magento/CheckoutAgreements/view/frontend/web/js/model/agreement-validator.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ define(
1111
],
1212
function ($) {
1313
'use strict';
14-
var agreementsConfig = window.checkoutConfig.checkoutAgreements;
14+
var checkoutConfig = window.checkoutConfig,
15+
agreementsConfig = checkoutConfig ? checkoutConfig.checkoutAgreements : {};
16+
1517
return {
1618
/**
1719
* Validate checkout agreements

app/code/Magento/CheckoutAgreements/view/frontend/web/js/view/checkout-agreements.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ define(
1111
],
1212
function (ko, $, Component, agreementsModal) {
1313
'use strict';
14-
var agreementsConfig = window.checkoutConfig.checkoutAgreements,
15-
agreementManualMode = 1;
14+
var checkoutConfig = window.checkoutConfig,
15+
agreementManualMode = 1,
16+
agreementsConfig = checkoutConfig ? checkoutConfig.checkoutAgreements : {};
1617

1718
return Component.extend({
1819
defaults: {

app/code/Magento/CheckoutAgreements/view/frontend/web/template/checkout/checkout-agreements.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* See COPYING.txt for license details.
55
*/
66
-->
7-
<form data-role="checkout-agreements" method="post">
7+
<div data-role="checkout-agreements">
88
<div class="checkout-agreements" data-bind="visible: isVisible">
99
<!-- ko foreach: agreements -->
1010
<!-- ko if: ($parent.isAgreementRequired($data)) -->
@@ -15,8 +15,7 @@
1515
'name': 'agreement[' + agreementId + ']',
1616
'value': agreementId
1717
}"
18-
data-validate="{required:true}"
19-
>
18+
data-validate="{required:true}" />
2019
<label data-bind="attr: {'for': 'agreement_' + agreementId}">
2120
<button type="button"
2221
class="action action-show"
@@ -40,4 +39,4 @@
4039
<div class="checkout-agreements-item-content" data-bind="html: modalContent"></div>
4140
</div>
4241
</div>
43-
</form>
42+
</div>

app/code/Magento/Paypal/view/frontend/web/order-review.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ define([
2424
updateContainerSelector: '#details-reload',
2525
waitLoadingContainer: '#review-please-wait',
2626
shippingMethodContainer: '#shipping-method-container',
27+
agreementSelector: 'div.checkout-agreements input',
2728
isAjax: false,
2829
updateShippingMethodSubmitSelector: "#update-shipping-method-submit",
2930
reviewSubmitSelector: "#review-submit",
@@ -162,6 +163,11 @@ define([
162163
* Validate Order form
163164
*/
164165
_validateForm: function () {
166+
this.element.find(this.options.agreementSelector).off('change').on('change', $.proxy(function (e) {
167+
var isValid = this._validateForm();
168+
this._updateOrderSubmit(!isValid);
169+
}, this));
170+
165171
if (this.element.data('mageValidation')) {
166172
return this.element.validation().valid();
167173
}
@@ -235,9 +241,11 @@ define([
235241
callBackResponseHandler = null,
236242
shippingMethod = $.trim($(this.options.shippingSelector).val());
237243
this._shippingTobilling();
244+
238245
if (url && resultId && shippingMethod) {
239246
this._updateOrderSubmit(true);
240247
this._toggleButton(this.options.updateOrderSelector, true);
248+
241249
// form data and callBack updated based on the shippping Form element
242250
if (this.isShippingSubmitForm) {
243251
formData = $(this.options.shippingSubmitFormSelector).serialize() + "&isAjax=true";
@@ -299,4 +307,4 @@ define([
299307
});
300308

301309
return $.mage.orderReview;
302-
});
310+
});

0 commit comments

Comments
 (0)