2121
2222namespace Experius \Postcode \Block \Checkout ;
2323
24- use Magento \Framework \View \Element \AbstractBlock ;
2524use Magento \Checkout \Block \Checkout \LayoutProcessorInterface ;
25+ use Magento \Framework \View \Element \AbstractBlock ;
2626
2727class LayoutProcessor extends AbstractBlock implements LayoutProcessorInterface
2828{
29-
3029 protected $ scopeConfig ;
3130
3231 protected $ logger ;
@@ -43,14 +42,21 @@ public function __construct(
4342 parent ::__construct ($ context , $ data );
4443 }
4544
45+ /**
46+ * Process js Layout of block
47+ *
48+ * @param array $result ($jsLayout)
49+ * @return array
50+ */
4651 public function process ($ result )
4752 {
48- if ($ this ->scopeConfig ->getValue (
49- 'postcodenl_api/general/enabled ' ,
50- \Magento \Store \Model \ScopeInterface::SCOPE_STORE
51- )
52- && isset ($ result ['components ' ]['checkout ' ]['children ' ]['steps ' ]['children ' ]['shipping-step ' ]['children ' ]
53- ['shippingAddress ' ]['children ' ]['shipping-address-fieldset ' ])
53+ if (
54+ $ this ->scopeConfig ->getValue (
55+ 'postcodenl_api/general/enabled ' ,
56+ \Magento \Store \Model \ScopeInterface::SCOPE_STORE
57+ )
58+ && isset ($ result ['components ' ]['checkout ' ]['children ' ]['steps ' ]['children ' ]['shipping-step ' ]['children ' ]
59+ ['shippingAddress ' ]['children ' ]['shipping-address-fieldset ' ])
5460 ) {
5561 $ this ->changeFieldPositions = $ this ->scopeConfig ->getValue (
5662 'postcodenl_api/advanced_config/change_sort_order ' ,
@@ -61,11 +67,6 @@ public function process($result)
6167 ['shipping-step ' ]['children ' ]['shippingAddress ' ]['children ' ]
6268 ['shipping-address-fieldset ' ]['children ' ];
6369
64- /*if(isset($shippingFields['street'])){
65- unset($shippingFields['street']['children'][1]['validation']);
66- unset($shippingFields['street']['children'][2]['validation']);
67- }*/
68-
6970 $ shippingFields = array_merge ($ shippingFields , $ this ->getPostcodeFieldSet ('shippingAddress ' , 'shipping ' ));
7071
7172 if ($ this ->changeFieldPositions ) {
@@ -83,6 +84,12 @@ public function process($result)
8384 return $ result ;
8485 }
8586
87+ /**
88+ * Get billing form fields
89+ *
90+ * @param array $result
91+ * @return array
92+ */
8693 public function getBillingFormFields ($ result )
8794 {
8895 if (isset (
@@ -124,27 +131,40 @@ public function getBillingFormFields($result)
124131 return $ result ;
125132 }
126133
134+ /**
135+ * Get postcode fieldset
136+ *
137+ * @param $scope
138+ * @param $addressType
139+ * @return array[]
140+ */
127141 public function getPostcodeFieldSet ($ scope , $ addressType )
128142 {
129143 return [
130- 'experius_postcode_fieldset ' =>
131- [
132- 'component ' => 'Experius_Postcode/js/view/form/postcode ' ,
133- 'type ' => 'group ' ,
134- 'config ' => [
135- "customScope " => $ scope ,
136- "template " => 'Experius_Postcode/form/group ' ,
137- "additionalClasses " => "experius_postcode_fieldset " ,
138- "loaderImageHref " => $ this ->getViewFileUrl ('images/loader-1.gif ' )
139- ],
140- 'sortOrder ' => '905 ' ,
141- 'children ' => $ this ->getPostcodeFields ($ scope , $ addressType ),
142- 'provider ' => 'checkoutProvider ' ,
143- 'addressType ' => $ addressType ,
144- ]
144+ 'experius_postcode_fieldset ' => [
145+ 'component ' => 'Experius_Postcode/js/view/form/postcode ' ,
146+ 'type ' => 'group ' ,
147+ 'config ' => [
148+ "customScope " => $ scope ,
149+ "template " => 'Experius_Postcode/form/group ' ,
150+ "additionalClasses " => "experius_postcode_fieldset " ,
151+ "loaderImageHref " => $ this ->getViewFileUrl ('images/loader-1.gif ' )
152+ ],
153+ 'sortOrder ' => (string )($ this ->getStartSortOrder () + 5 ),
154+ 'children ' => $ this ->getPostcodeFields ($ scope , $ addressType ),
155+ 'provider ' => 'checkoutProvider ' ,
156+ 'addressType ' => $ addressType ,
157+ ]
145158 ];
146159 }
147160
161+ /**
162+ * Get postcode fields
163+ *
164+ * @param $scope
165+ * @param $addressType
166+ * @return array[]
167+ */
148168 public function getPostcodeFields ($ scope , $ addressType )
149169 {
150170 $ postcodeFields =
@@ -159,7 +179,7 @@ public function getPostcodeFields($scope, $addressType)
159179 'provider ' => 'checkoutProvider ' ,
160180 'dataScope ' => $ scope . '.experius_postcode_postcode ' ,
161181 'label ' => __ ('Postcode ' ),
162- 'sortOrder ' => ' 915 ' ,
182+ 'sortOrder ' => ( string )( $ this -> getStartSortOrder () + 15 ) ,
163183 'validation ' => [
164184 'required-entry ' => true ,
165185 'min_text_length ' => 6 ,
@@ -175,7 +195,7 @@ public function getPostcodeFields($scope, $addressType)
175195 'provider ' => 'checkoutProvider ' ,
176196 'dataScope ' => $ scope . '.experius_postcode_housenumber ' ,
177197 'label ' => __ ('Housenr. ' ),
178- 'sortOrder ' => ' 925 ' ,
198+ 'sortOrder ' => ( string )( $ this -> getStartSortOrder () + 25 ) ,
179199 'validation ' => [
180200 'required-entry ' => true ,
181201 ],
@@ -190,7 +210,7 @@ public function getPostcodeFields($scope, $addressType)
190210 'provider ' => 'checkoutProvider ' ,
191211 'dataScope ' => $ scope . '.experius_postcode_housenumber_addition ' ,
192212 'label ' => __ ('Addition ' ),
193- 'sortOrder ' => ' 927 ' ,
213+ 'sortOrder ' => ( string )( $ this -> getStartSortOrder () + 30 ) ,
194214 'validation ' => [
195215 'required-entry ' => false ,
196216 ],
@@ -207,7 +227,7 @@ public function getPostcodeFields($scope, $addressType)
207227 'provider ' => 'checkoutProvider ' ,
208228 'dataScope ' => $ scope . '.experius_postcode_housenumber_addition_manual ' ,
209229 'label ' => __ ('Addition ' ),
210- 'sortOrder ' => ' 927 ' ,
230+ 'sortOrder ' => ( string )( $ this -> getStartSortOrder () + 30 ) ,
211231 'validation ' => [
212232 'required-entry ' => false ,
213233 ],
@@ -224,7 +244,7 @@ public function getPostcodeFields($scope, $addressType)
224244 'provider ' => 'checkoutProvider ' ,
225245 'dataScope ' => $ scope . '.experius_postcode_disable ' ,
226246 'description ' => __ ('Enter address manually ' ),
227- 'sortOrder ' => ' 1004 ' ,
247+ 'sortOrder ' => ( string )( $ this -> getStartSortOrder () + 50 ) ,
228248 'validation ' => [
229249 'required-entry ' => false ,
230250 ],
@@ -235,39 +255,71 @@ public function getPostcodeFields($scope, $addressType)
235255 return $ postcodeFields ;
236256 }
237257
258+ /**
259+ * Change address fields position(s)
260+ *
261+ * @param $addressFields
262+ * @return mixed
263+ */
238264 public function changeAddressFieldPosition ($ addressFields )
239265 {
266+ if (isset ($ addressFields ['country_id ' ])) {
267+ $ addressFields ['country_id ' ]['sortOrder ' ] = (string )($ this ->getStartSortOrder ());
268+ }
269+
270+ // 'experius_postcode_fieldset' is $this->getStartSortOrder() + 5
240271
241272 if (isset ($ addressFields ['street ' ])) {
242- $ addressFields ['street ' ]['sortOrder ' ] = ' 910 ' ;
273+ $ addressFields ['street ' ]['sortOrder ' ] = ( string )( $ this -> getStartSortOrder () + 10 ) ;
243274 }
244275
245- if (isset ($ addressFields ['postcode ' ])) {
246- $ addressFields ['postcode ' ]['sortOrder ' ] = '930 ' ;
247- }
276+ // 'experius_postcode_postcode' field default is + 15
248277
249278 if (isset ($ addressFields ['city ' ])) {
250- $ addressFields ['city ' ]['sortOrder ' ] = '920 ' ;
279+ $ addressFields ['city ' ]['sortOrder ' ] = (string )($ this ->getStartSortOrder () + 20 );
280+ }
281+
282+ // 'experius_postcode_housenumber' is + 25
283+ // 'experius_postcode_housenumber_addition' and 'experius_postcode_housenumber_addition_manual' are + 30
284+
285+ if (isset ($ addressFields ['postcode ' ])) {
286+ $ addressFields ['postcode ' ]['sortOrder ' ] = (string )($ this ->getStartSortOrder () + 35 );
251287 }
252288
253289 if (isset ($ addressFields ['region ' ])) {
254- $ addressFields ['region ' ]['sortOrder ' ] = ' 940 ' ;
290+ $ addressFields ['region ' ]['sortOrder ' ] = ( string )( $ this -> getStartSortOrder () + 40 ) ;
255291 }
256292
257293 if (isset ($ addressFields ['region_id ' ])) {
258- $ addressFields ['region_id ' ]['sortOrder ' ] = ' 945 ' ;
294+ $ addressFields ['region_id ' ]['sortOrder ' ] = ( string )( $ this -> getStartSortOrder () + 45 ) ;
259295 }
260296
261- if (isset ($ addressFields ['country_id ' ])) {
262- $ addressFields ['country_id ' ]['sortOrder ' ] = '900 ' ;
263- }
297+ // 'experius_postcode_disable' is + 50
264298
265299 return $ addressFields ;
266300 }
267301
268- public function addClasses ($ scope , $ addressFields )
302+ /**
303+ * Get start sort order
304+ * Hook for plugins to alter it's default: 900
305+ *
306+ * @TODO: Introduce system configuration to alter this value
307+ * @return int
308+ */
309+ public function getStartSortOrder ()
269310 {
311+ return 900 ;
312+ }
270313
314+ /**
315+ * Add classes to address fields
316+ *
317+ * @param $scope
318+ * @param $addressFields
319+ * @return mixed
320+ */
321+ public function addClasses ($ scope , $ addressFields )
322+ {
271323 foreach (['street ' , 'region_id ' , 'region ' , 'country_id ' , 'city ' , 'postcode ' ] as $ field ) {
272324 if (isset ($ addressFields [$ field ])) {
273325 $ configAdditionalClasses = null ;
0 commit comments