Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions Block/Checkout/LayoutProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,12 @@ public function modifyStreetUiComponents($addressResult)
$lineCount = 0;

while($lineCount < 4){

$lineNumber = $lineCount+1;

if(isset($addressResult['street']['children'][$lineCount])){
$label = $this->addressLineHelper->getLineLabel($lineNumber);

if ( $this->addressLineHelper->isLineEnabled($lineNumber)) {
$addressResult['street']['children'][$lineCount]['label'] = $label;
$addressResult['street']['children'][$lineCount]['additionalClasses'] = 'experius-address-line-one';
Expand All @@ -125,6 +125,4 @@ public function modifyStreetUiComponents($addressResult)

return $addressResult;
}


}
22 changes: 21 additions & 1 deletion Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public function getValidationClassesForLine($lineNumber)
return $validationClassesString;
}

public function getValidationClassesAsArrayForLine($lineNumber)
public function getValidationClassesAsArrayForLine($lineNumber)
{
$group = "experius_address_lines/experius_address_line{$lineNumber}";

Expand All @@ -102,9 +102,29 @@ public function getValidationClassesAsArrayForLine($lineNumber)
if($this->isLineRequired($lineNumber)){
$validationClassesArray['required-entry'] = 1;
}
if ($this->getEnablePOBoxRule()) {
$validationClassesArray = $this->getPOBoxRule($validationClassesArray);
}
$this->_logger->debug(print_r($validationClassesArray, true));
return $validationClassesArray;
}

public function getEnablePOBoxRule()
{
return !$this->getModuleConfig("shipping_po_box", "experius_address_lines");
}

public function getPOValidationRegex()
{
return '/^parcel.*|^locker.*|^box.*|.*po\s*box.*|.*p[\.\s]o\.?\sbox.*/i';
}

public function getPOBoxRule($existingClasses)
{
$existingClasses['po-box-validation'] = true;
return $existingClasses;
}

/**
* Return form attribute IDs by form code
*
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
**Experius Address Lines,**
**Experius Address Lines**

Adds labels to address lines and adds configuration per address line.

Expand All @@ -8,6 +8,8 @@ Configuration Per Line
- Label
- Validation Classes

Also has an option for disabling PO Boxes in the address

Stores > Configuration > Customers > Customer Configuration > Address Lines

**Screenshots**
Expand Down
4 changes: 4 additions & 0 deletions etc/adminhtml/system.xml
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@
<comment>Necessary for registrion page and address edit.</comment>
</field>
</group>
<field id="shipping_po_box" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="1000" translate="label" type="select">
<label>Allow PO Boxes in the Addresss lines?</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
</group>
</section>
</system>
Expand Down
4 changes: 3 additions & 1 deletion etc/config.xml
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<customer>
<experius_address_lines>
Expand Down Expand Up @@ -31,6 +32,7 @@
<line_required></line_required>
<line_validation_classes></line_validation_classes>
</experius_address_line4>
<shipping_po_box>1</shipping_po_box>
</experius_address_lines>
</customer>
</default>
Expand Down
Empty file modified etc/module.xml
100755 → 100644
Empty file.
Empty file modified view/frontend/layout/customer_account_create.xml
100755 → 100644
Empty file.
Empty file modified view/frontend/layout/customer_address_form.xml
100755 → 100644
Empty file.
9 changes: 9 additions & 0 deletions view/frontend/requirejs-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
var config = {
config: {
mixins: {
'Magento_Ui/js/lib/validation/validator': {
'Experius_AddressLines/js/validator-mixin': true
}
}
}
};
22 changes: 21 additions & 1 deletion view/frontend/templates/experius/customer/address/edit.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@
<?php endif; ?>
<div class="field street required">
<label for="street" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
<div class="control">
<?php if ($this->helper('Experius\AddressLines\Helper\Data')->getEnablePOBoxRule()): ?>
<div class="info">PO Boxes not allowed</div>
<?php endif; ?>
<div class="control">
<label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
<span><?php /* @escapeNotVerified */ echo $this->helper('Experius\AddressLines\Helper\Data')->getLineLabel($_i) ?></span>
</label>
Expand Down Expand Up @@ -178,3 +181,20 @@
}
}
</script>

<?php if ($this->helper('Experius\AddressLines\Helper\Data')->getEnablePOBoxRule()): ?>
<script type="text/javascript">
require([
'jquery',
'jquery/validate',
'mage/translate'
], function ($) {
$.validator.addMethod(
'po-box-validation', function (value) {
var re = <?php echo $this->helper('Experius\AddressLines\Helper\Data')->getPOValidationRegex(); ?>;
return !re.test(value);
}, $.mage.__("We don't ship to PO Boxes, Parcel Lockers, or any postal service. Courier only.")
);
});
</script>
<?php endif; ?>
18 changes: 16 additions & 2 deletions view/frontend/templates/experius/customer/form/register.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@
<?php endif; ?>
<div class="field street required">
<label for="street" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
<div class="control">
<?php if ($this->helper('Experius\AddressLines\Helper\Data')->getEnablePOBoxRule()): ?>
<div class="info">PO Boxes not allowed</div>
<?php endif; ?>
<div class="control">
<label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
<span><?php /* @escapeNotVerified */ echo $this->helper('Experius\AddressLines\Helper\Data')->getLineLabel($_i) ?></span>
</label>
Expand Down Expand Up @@ -194,7 +197,9 @@
<script>
require([
'jquery',
'mage/mage'
'jquery/validate',
'mage/mage',
'mage/translate'
], function($){

var dataForm = $('#form-validate');
Expand All @@ -220,8 +225,17 @@ require([
<?php endif ?>
}).find('input:text').attr('autocomplete', 'off');

<?php if ($this->helper('Experius\AddressLines\Helper\Data')->getEnablePOBoxRule()): ?>
$.validator.addMethod(
'po-box-validation', function (value) {
var re = <?php echo $this->helper('Experius\AddressLines\Helper\Data')->getPOValidationRegex(); ?>;
return !re.test(value);
}, $.mage.__("We don't ship to PO Boxes, Parcel Lockers, or any postal service. Courier only.")
);
<?php endif; ?>
});
</script>

<?php if ($block->getShowAddressFields()): ?>
<script type="text/x-magento-init">
{
Expand Down
9 changes: 8 additions & 1 deletion view/frontend/web/css/source/_module.less
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,20 @@
& when (@media-common = true) {
.experius-address-lines {

.field{
.field {
margin: 0 0 20px;
}

legend.label {
display: none !important;
}

label + .info {
font-weight: normal;
font-style: italic;
margin-bottom: 1em;
}

}

}
19 changes: 19 additions & 0 deletions view/frontend/web/js/validator-mixin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
define([
'jquery',
'moment'
], function ($, moment) {
'use strict';

return function (validator) {

validator.addRule(
'po-box-validation',
function (value) {
var re = /^parcel.*|^locker.*|^box.*|.*po\s*box.*|.*p[\.\s]o\.?\sbox.*/i
return !re.test(value);
}, $.mage.__("We don't ship to PO Boxes, Parcel Lockers, or any postal service. Courier only.")
);

return validator;
};
})