PostcodeNl_Api - Version 1.1.2.0

Version Notes

Fixes:
- Better support IWD One Step Checkout
- Better support for updates in admin
Features:
- Detection of checkout type, for better future checkout extension support

Download this release

Release Info

Developer Postcode.nl Technical Support
Extension PostcodeNl_Api
Version 1.1.2.0
Comparing to
See all releases


Code changes from version 1.1.1.0 to 1.1.2.0

app/code/community/PostcodeNl/Api/Helper/Data.php CHANGED
@@ -6,6 +6,8 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
6
 
7
  protected $_modules;
8
 
 
 
9
  protected function _getMagentoVersion()
10
  {
11
  if ($this->_getModuleInfo('Enterprise_CatalogPermissions') !== null)
@@ -100,6 +102,13 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
100
  return $html;
101
  }
102
 
 
 
 
 
 
 
 
103
  public function lookupAddress($postcode, $houseNumber, $houseNumberAddition)
104
  {
105
  if (!Mage::getStoreConfig('postcodenl_api/config/enabled'))
@@ -148,14 +157,15 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
148
  return $sendResponse;
149
  }
150
 
151
- $url = $serviceUrl . '/rest/addresses/' . urlencode($postcode). '/'. urlencode($houseNumber) . '/'. urlencode($houseNumberAddition);
 
152
  $ch = curl_init();
153
  curl_setopt($ch, CURLOPT_URL, $url);
154
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
155
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
156
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
157
  curl_setopt($ch, CURLOPT_USERPWD, $serviceKey .':'. $serviceSecret);
158
- curl_setopt($ch, CURLOPT_USERAGENT, 'PostcodeNl_Api_MagentoPlugin/' . $extensionVersion .' '. $this->_getMagentoVersion() .' PHP/'. phpversion());
159
  $jsonResponse = curl_exec($ch);
160
  $curlError = curl_error($ch);
161
  curl_close($ch);
6
 
7
  protected $_modules;
8
 
9
+ protected $_enrichType = 0;
10
+
11
  protected function _getMagentoVersion()
12
  {
13
  if ($this->_getModuleInfo('Enterprise_CatalogPermissions') !== null)
102
  return $html;
103
  }
104
 
105
+ public function setEnrichType($enrichType)
106
+ {
107
+ $this->_enrichType = preg_replace('~[^0-9a-z\-_,]~i', '', $enrichType);
108
+ if (strlen($this->_enrichType) > 40)
109
+ $this->_enrichType = substr($this->_enrichType, 0, 40);
110
+ }
111
+
112
  public function lookupAddress($postcode, $houseNumber, $houseNumberAddition)
113
  {
114
  if (!Mage::getStoreConfig('postcodenl_api/config/enabled'))
157
  return $sendResponse;
158
  }
159
 
160
+ $url = $serviceUrl . '/rest/addresses/' . rawurlencode($postcode). '/'. rawurlencode($houseNumber) . '/'. rawurlencode($houseNumberAddition);
161
+
162
  $ch = curl_init();
163
  curl_setopt($ch, CURLOPT_URL, $url);
164
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
165
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
166
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
167
  curl_setopt($ch, CURLOPT_USERPWD, $serviceKey .':'. $serviceSecret);
168
+ curl_setopt($ch, CURLOPT_USERAGENT, 'PostcodeNl_Api_MagentoPlugin/' . $extensionVersion .' '. $this->_getMagentoVersion() .' PHP/'. phpversion() .' EnrichType/'. $this->_enrichType);
169
  $jsonResponse = curl_exec($ch);
170
  $curlError = curl_error($ch);
171
  curl_close($ch);
app/code/community/PostcodeNl/Api/controllers/Adminhtml/PcnlController.php CHANGED
@@ -5,6 +5,9 @@ class PostcodeNl_Api_Adminhtml_PcnlController extends Mage_Adminhtml_Controller_
5
  {
6
  $helper = Mage::helper('postcodenl_api');
7
 
 
 
 
8
  $this->getResponse()->setHeader('Content-type', 'application/json');
9
  $this->getResponse()->setBody(json_encode($helper->lookupAddress(
10
  $this->getRequest()->getParam('postcode'),
5
  {
6
  $helper = Mage::helper('postcodenl_api');
7
 
8
+ if ($this->getRequest()->getParam('et'))
9
+ $helper->setEnrichType($this->getRequest()->getParam('et'));
10
+
11
  $this->getResponse()->setHeader('Content-type', 'application/json');
12
  $this->getResponse()->setBody(json_encode($helper->lookupAddress(
13
  $this->getRequest()->getParam('postcode'),
app/code/community/PostcodeNl/Api/controllers/JsonController.php CHANGED
@@ -5,6 +5,9 @@ class PostcodeNl_Api_JsonController extends Mage_Core_Controller_Front_Action
5
  {
6
  $helper = Mage::helper('postcodenl_api');
7
 
 
 
 
8
  $this->getResponse()->setHeader('Content-type', 'application/json');
9
  $this->getResponse()->setBody(json_encode($helper->lookupAddress(
10
  $this->getRequest()->getParam('postcode'),
5
  {
6
  $helper = Mage::helper('postcodenl_api');
7
 
8
+ if ($this->getRequest()->getParam('et'))
9
+ $helper->setEnrichType($this->getRequest()->getParam('et'));
10
+
11
  $this->getResponse()->setHeader('Content-type', 'application/json');
12
  $this->getResponse()->setBody(json_encode($helper->lookupAddress(
13
  $this->getRequest()->getParam('postcode'),
js/postcodenl/api/lookup.js CHANGED
@@ -53,6 +53,34 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
53
  */
54
  enrichType: 'Unknown',
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  /**
57
  * Hide multiple field-rows in forms
58
  */
@@ -259,7 +287,9 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
259
  // Make uppercase to prevent double, but identical, requests
260
  postcode = postcode.toUpperCase();
261
 
262
- var url = PCNLAPI_CONFIG.baseUrl +'lookup?postcode=' + postcode + '&houseNumber=' + housenumber + '&houseNumberAddition=' + housenumber_addition;
 
 
263
  if (this.requestCache[url] === undefined)
264
  {
265
  new Ajax.Request(url,
@@ -457,8 +487,6 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
457
  this.removeHousenumberAddition(prefix);
458
  }
459
 
460
- $(prefix + postcodeFieldId).fire('postcode:updated');
461
-
462
  // Add support for syncing Billing & Shipping
463
  if (prefix == 'billing:' && $('shipping:' + postcodeFieldId)) {
464
  // 'shipping' is a global object created on most checkout pages
@@ -488,6 +516,7 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
488
  if ($(prefix + countryFieldId).getValue() == 'NL')
489
  {
490
  // The Netherlands is selected - add our own validated inputs.
 
491
 
492
  if (!$(prefix +'postcode_input:wrapper'))
493
  {
@@ -857,13 +886,30 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
857
  $(prefix + 'telephone-moved').insert(clone);
858
  }
859
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
860
  else
861
  {
862
  // Support for regular Magento 'one page' checkout
863
  // + Fire Checkout
864
  // + Quick One Page Checkout (by KAM)
865
  // + MAGExtended MasterCheckout
866
- // + IWD Free One Page / Step Checkout v3
867
 
868
  if ($(document.body).hasClassName('firecheckout-index-index'))
869
  this.enrichType = 'Fire Checkout';
@@ -871,20 +917,18 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
871
  this.enrichType = 'Quick One Page Checkout (by KAM)';
872
  else if ($(document.body).hasClassName('mastercheckout-index-index'))
873
  this.enrichType = 'MAGExtended MasterCheckout';
874
- else if ($(document.body).hasClassName('opc-index-index'))
875
- this.enrichType = 'IWD Free One Page / Step Checkout v3';
876
  else if ($(document.body).hasClassName('checkout-onepage-index'))
877
  this.enrichType = 'Basic';
878
  else if ($(document.body).hasClassName('customer-address-form'))
879
  this.enrichType = 'Customer Address Form';
880
  else
881
- this.enrichType = 'Unknown: Body class `'+ $(document.body).className +'`';
882
 
883
  if (!$(prefix +'postcode_input:info'))
884
  {
885
  $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:info" class="wide pcnl-info"><div><label class="pcnl-info-label">'+ PCNLAPI_CONFIG.translations.infoLabel +'</label><div class="pcnl-info-text" id="' + prefix + 'postcode_input:info-text">'+ PCNLAPI_CONFIG.translations.infoText +'</div></div></li>'});
886
  }
887
- $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:wrapper" class="fields"><div class="field input-postcode"><label for="' + prefix + 'postcode_input" class="required">'+ PCNLAPI_CONFIG.translations.postcodeInputLabel +'<em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" id="' + prefix + 'postcode_input" value="" class="input-text required-entry" /></div></div></div><div class="field input-postcode pcnl-input-housenumber"><label for="' + prefix + 'postcode_housenumber" class="required">'+ PCNLAPI_CONFIG.translations.houseNumberLabel +' <em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.houseNumberTitle +'" name="billing[postcode_housenumber]" id="' + prefix + 'postcode_housenumber" value="" class="input-text pcnl-input-text-half required-entry" /></div></div></div></li>'});
888
  if (!$(prefix +'postcode_input:checkbox'))
889
  {
890
  $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:checkbox" class="wide control pcnl-manual-checkbox"><div class="fields"><div class="input-box"><input type="checkbox" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" id="' + prefix + 'postcode_input_checkbox" value="" class="checkbox " /><label for="' + prefix + 'postcode_input_checkbox">'+ PCNLAPI_CONFIG.translations.manualInputText +'</label></div></div></li>'});
@@ -990,6 +1034,10 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
990
  */
991
  toggleAddressFields: function(prefix, postcodeFieldId, countryFieldId, street1, street2, street3, street4, values)
992
  {
 
 
 
 
993
  if (!$(prefix + 'postcode_input_checkbox').checked)
994
  {
995
  this.setFieldsReadonly([
@@ -1130,6 +1178,25 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
1130
  this.toggleCountryPostcode('shipping:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1131
  }
1132
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1133
  }
1134
  if ($('shipping:country_id'))
1135
  {
@@ -1210,14 +1277,25 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
1210
  // Admin 'create order' & 'edit order' address editting
1211
  if ($('order-billing_address'))
1212
  {
1213
- this.observeBillingAddress();
1214
- this.observeShippingAddress();
1215
-
1216
- // Re-observe blocks after they have been changed
1217
- if ($('order-billing_address'))
1218
- $('order-billing_address').observe('DOMNodeInserted', function(e) { pcnlapi.observeBillingAddress(); });
1219
- if ($('order-shipping_address'))
1220
- $('order-shipping_address').observe('DOMNodeInserted', function(e) { pcnlapi.observeShippingAddress(); });
 
 
 
 
 
 
 
 
 
 
 
1221
  }
1222
  },
1223
  observeAdminCustomerAddress: function ()
@@ -1246,7 +1324,7 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
1246
  }
1247
  }
1248
  },
1249
- observeBillingAddress: function ()
1250
  {
1251
  var pcnlapi = this;
1252
  // Billing
@@ -1262,19 +1340,15 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
1262
  });
1263
  if ($('order-billing_address_country_id').getValue() == 'NL')
1264
  this.toggleCountryPostcode('order-billing_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
1265
- $('order-billing_address_postcode').observe('postcode:updated', function(e)
 
 
1266
  {
1267
- // Custom poke Magento billing-to-shipping copy order logic.
1268
- var event = {
1269
- type: e.type,
1270
- currentTarget: $('order-billing_address_street0'),
1271
- target: $('order-billing_address_street0')
1272
- };
1273
- order.changeAddressField(event);
1274
- });
1275
  }
1276
  },
1277
- observeShippingAddress: function ()
1278
  {
1279
  var pcnlapi = this;
1280
  // Shipping
@@ -1287,6 +1361,12 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
1287
  $('order-shipping_address_country_id').observe('change', function () { pcnlapi.toggleCountryPostcode('order-shipping_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3'); });
1288
  if ($('order-shipping_address_country_id').getValue() == 'NL')
1289
  pcnlapi.toggleCountryPostcode('order-shipping_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
 
 
 
 
 
 
1290
  }
1291
  }
1292
  };
53
  */
54
  enrichType: 'Unknown',
55
 
56
+ /*
57
+ * List of supported / recognized checkout extensions.
58
+ */
59
+ enrichTypes: {
60
+ 'Unknown': 0,
61
+ 'Basic': 1,
62
+ 'Admin': 2,
63
+ 'OneStepCheckout.com': 3,
64
+ 'Apptha One Step Checkout': 4,
65
+ 'MageStore One Step Checkout': 5,
66
+ 'GoMage LightCheckout': 6,
67
+ 'MageWorld One Step Checkout Pro': 7,
68
+ 'AheadWorks One Step Checkout': 8,
69
+ 'J2T OneCheckout': 9,
70
+ 'Aitoc One Step Checkout Manager': 10,
71
+ 'Magento Templates - OnePage Magento Checkout': 11,
72
+ 'EcommerceTeam Easy Checkout 2': 12,
73
+ 'GrafischDirect One Step Checkout': 13,
74
+ 'FME One Step Checkout': 14,
75
+ 'IWD Free One Page / Step Checkout v2': 15,
76
+ 'IWD Free One Page / Step Checkout v3': 16,
77
+ 'Fire Checkout': 17,
78
+ 'Quick One Page Checkout (by KAM)': 18,
79
+ 'MAGExtended MasterCheckout': 19,
80
+ 'Customer Address Form': 20,
81
+ },
82
+ enrichHint: null,
83
+
84
  /**
85
  * Hide multiple field-rows in forms
86
  */
287
  // Make uppercase to prevent double, but identical, requests
288
  postcode = postcode.toUpperCase();
289
 
290
+ var et = this.enrichTypes[this.enrichType] ? this.enrichTypes[this.enrichType] : this.enrichHint;
291
+
292
+ var url = PCNLAPI_CONFIG.baseUrl +'lookup?postcode=' + postcode + '&houseNumber=' + housenumber + '&houseNumberAddition=' + housenumber_addition + '&et=' + encodeURIComponent(et);
293
  if (this.requestCache[url] === undefined)
294
  {
295
  new Ajax.Request(url,
487
  this.removeHousenumberAddition(prefix);
488
  }
489
 
 
 
490
  // Add support for syncing Billing & Shipping
491
  if (prefix == 'billing:' && $('shipping:' + postcodeFieldId)) {
492
  // 'shipping' is a global object created on most checkout pages
516
  if ($(prefix + countryFieldId).getValue() == 'NL')
517
  {
518
  // The Netherlands is selected - add our own validated inputs.
519
+ this.enrichHint = $(document.body).className.trim().replace(' ', ',');
520
 
521
  if (!$(prefix +'postcode_input:wrapper'))
522
  {
886
  $(prefix + 'telephone-moved').insert(clone);
887
  }
888
  }
889
+ else if ($(document.body).hasClassName('opc-index-index'))
890
+ {
891
+ // IWD Free One Page / Step Checkout v3
892
+ this.enrichType = 'IWD Free One Page / Step Checkout v3';
893
+
894
+ if (!$(prefix +'postcode_input:info'))
895
+ {
896
+ $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:info" class="wide pcnl-info"><div><label class="pcnl-info-label">'+ PCNLAPI_CONFIG.translations.infoLabel +'</label><div class="pcnl-info-text" id="' + prefix + 'postcode_input:info-text">'+ PCNLAPI_CONFIG.translations.infoText +'</div></div></li>'});
897
+ }
898
+ $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:wrapper" class="fields"><div class="field input-postcode"><label for="' + prefix + 'postcode_input" class="required">'+ PCNLAPI_CONFIG.translations.postcodeInputLabel +'<em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" name="' + prefix + 'postcode_input" id="' + prefix + 'postcode_input" value="" class="input-text required-entry" /></div></div></div><div class="field input-postcode pcnl-input-housenumber"><label for="' + prefix + 'postcode_housenumber" class="required">'+ PCNLAPI_CONFIG.translations.houseNumberLabel +' <em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.houseNumberTitle +'" name="' + prefix + 'postcode_housenumber" id="' + prefix + 'postcode_housenumber" value="" class="input-text pcnl-input-text-half required-entry" /></div></div></div></li>'});
899
+ if (!$(prefix +'postcode_input:checkbox'))
900
+ {
901
+ $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:checkbox" class="wide control pcnl-manual-checkbox"><div class="fields"><div class="input-box"><input type="checkbox" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" id="' + prefix + 'postcode_input_checkbox" value="" class="checkbox " /><label for="' + prefix + 'postcode_input_checkbox">'+ PCNLAPI_CONFIG.translations.manualInputText +'</label></div></div></li>'});
902
+
903
+ $(prefix + 'postcode_input_checkbox').observe('click', function () { pcnlapi.toggleCountryPostcode(prefix, postcodeFieldId, countryFieldId, street1, street2, street3, street4); });
904
+ }
905
+ $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:output" class="wide pcnl-hidden-field"><div><label>'+ PCNLAPI_CONFIG.translations.outputLabel +'</label><div id="' + prefix + 'postcode_output" class="pcnl-address-text"></div></div></li>'});
906
+ }
907
  else
908
  {
909
  // Support for regular Magento 'one page' checkout
910
  // + Fire Checkout
911
  // + Quick One Page Checkout (by KAM)
912
  // + MAGExtended MasterCheckout
 
913
 
914
  if ($(document.body).hasClassName('firecheckout-index-index'))
915
  this.enrichType = 'Fire Checkout';
917
  this.enrichType = 'Quick One Page Checkout (by KAM)';
918
  else if ($(document.body).hasClassName('mastercheckout-index-index'))
919
  this.enrichType = 'MAGExtended MasterCheckout';
 
 
920
  else if ($(document.body).hasClassName('checkout-onepage-index'))
921
  this.enrichType = 'Basic';
922
  else if ($(document.body).hasClassName('customer-address-form'))
923
  this.enrichType = 'Customer Address Form';
924
  else
925
+ this.enrichType = 'Unknown';
926
 
927
  if (!$(prefix +'postcode_input:info'))
928
  {
929
  $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:info" class="wide pcnl-info"><div><label class="pcnl-info-label">'+ PCNLAPI_CONFIG.translations.infoLabel +'</label><div class="pcnl-info-text" id="' + prefix + 'postcode_input:info-text">'+ PCNLAPI_CONFIG.translations.infoText +'</div></div></li>'});
930
  }
931
+ $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:wrapper" class="fields"><div class="field input-postcode"><label for="' + prefix + 'postcode_input" class="required">'+ PCNLAPI_CONFIG.translations.postcodeInputLabel +'<em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" id="' + prefix + 'postcode_input" value="" class="input-text required-entry" /></div></div></div><div class="field input-postcode pcnl-input-housenumber"><label for="' + prefix + 'postcode_housenumber" class="required">'+ PCNLAPI_CONFIG.translations.houseNumberLabel +' <em class="required">*</em></label><div class="input-box"><div class="field-wrapper"><input type="text" title="'+ PCNLAPI_CONFIG.translations.houseNumberTitle +'" name="' + prefix + 'postcode_housenumber" id="' + prefix + 'postcode_housenumber" value="" class="input-text pcnl-input-text-half required-entry" /></div></div></div></li>'});
932
  if (!$(prefix +'postcode_input:checkbox'))
933
  {
934
  $(prefix + street1).up('li').insert({before: '<li id="' + prefix + 'postcode_input:checkbox" class="wide control pcnl-manual-checkbox"><div class="fields"><div class="input-box"><input type="checkbox" title="'+ PCNLAPI_CONFIG.translations.postcodeInputTitle +'" id="' + prefix + 'postcode_input_checkbox" value="" class="checkbox " /><label for="' + prefix + 'postcode_input_checkbox">'+ PCNLAPI_CONFIG.translations.manualInputText +'</label></div></div></li>'});
1034
  */
1035
  toggleAddressFields: function(prefix, postcodeFieldId, countryFieldId, street1, street2, street3, street4, values)
1036
  {
1037
+ // Should not happen, but may occur if things go half-awry
1038
+ if (!$(prefix + 'postcode_input_checkbox'))
1039
+ return;
1040
+
1041
  if (!$(prefix + 'postcode_input_checkbox').checked)
1042
  {
1043
  this.setFieldsReadonly([
1178
  this.toggleCountryPostcode('shipping:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1179
  }
1180
  }
1181
+
1182
+ // Some extensions evade 'observe' by setting directly on elements when toggling shipping
1183
+ if ($('billing:country_id') && $('shipping:country_id'))
1184
+ {
1185
+ if ($('billing:use_for_shipping_yes'))
1186
+ {
1187
+ $('billing:use_for_shipping_yes').observe('click', function () {
1188
+ pcnlapi.toggleCountryPostcode('billing:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1189
+ pcnlapi.toggleCountryPostcode('shipping:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1190
+ });
1191
+ }
1192
+ if ($('billing:use_for_shipping_no'))
1193
+ {
1194
+ $('billing:use_for_shipping_no').observe('click', function () {
1195
+ pcnlapi.toggleCountryPostcode('billing:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1196
+ pcnlapi.toggleCountryPostcode('shipping:', 'postcode', 'country_id', 'street1', 'street2', 'street3', 'street4');
1197
+ });
1198
+ }
1199
+ }
1200
  }
1201
  if ($('shipping:country_id'))
1202
  {
1277
  // Admin 'create order' & 'edit order' address editting
1278
  if ($('order-billing_address'))
1279
  {
1280
+ var recursionDetection = false;
1281
+ this.observeAdminBillingAddress();
1282
+ this.observeAdminShippingAddress();
1283
+
1284
+ if ($('order-data'))
1285
+ {
1286
+ $('order-data').observe('DOMNodeInserted', function(e) {
1287
+ if (event.target.nodeName == 'DIV')
1288
+ {
1289
+ if (!recursionDetection)
1290
+ {
1291
+ recursionDetection = true;
1292
+ pcnlapi.observeAdminBillingAddress();
1293
+ pcnlapi.observeAdminShippingAddress();
1294
+ recursionDetection = false;
1295
+ }
1296
+ }
1297
+ });
1298
+ }
1299
  }
1300
  },
1301
  observeAdminCustomerAddress: function ()
1324
  }
1325
  }
1326
  },
1327
+ observeAdminBillingAddress: function ()
1328
  {
1329
  var pcnlapi = this;
1330
  // Billing
1340
  });
1341
  if ($('order-billing_address_country_id').getValue() == 'NL')
1342
  this.toggleCountryPostcode('order-billing_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
1343
+
1344
+ // Use custom Magento 'changeUpdater' hook as well, because 'change' observe sometimes is not called...
1345
+ $('order-billing_address_country_id').changeUpdater = function ()
1346
  {
1347
+ pcnlapi.toggleCountryPostcode('order-billing_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
1348
+ };
 
 
 
 
 
 
1349
  }
1350
  },
1351
+ observeAdminShippingAddress: function ()
1352
  {
1353
  var pcnlapi = this;
1354
  // Shipping
1361
  $('order-shipping_address_country_id').observe('change', function () { pcnlapi.toggleCountryPostcode('order-shipping_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3'); });
1362
  if ($('order-shipping_address_country_id').getValue() == 'NL')
1363
  pcnlapi.toggleCountryPostcode('order-shipping_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
1364
+
1365
+ // Use custom Magento 'changeUpdater' hook as well, because 'change' observe sometimes is not called...
1366
+ $('order-shipping_address_country_id').changeUpdater = function ()
1367
+ {
1368
+ pcnlapi.toggleCountryPostcode('order-shipping_address_', 'postcode', 'country_id', 'street0', 'street1', 'street2', 'street3');
1369
+ };
1370
  }
1371
  }
1372
  };
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PostcodeNl_Api</name>
4
- <version>1.1.1.0</version>
5
  <stability>stable</stability>
6
  <license>Simplified BSD License</license>
7
  <channel>community</channel>
@@ -16,20 +16,15 @@
16
  &#xD;
17
  The postcode Magento plugin from Postcode.nl is free of charge, based on a Fair-Use policy. The use of the Postcode.nl Magento plugin is subject to our Terms and Conditions.</description>
18
  <notes>Fixes:&#xD;
19
- - Support more MageStore OneStepCheckout versions&#xD;
20
- - Support newest IWD One Step Checkout version&#xD;
21
- - Corrected some checkout extension detection&#xD;
22
- - Editing roles/rights in admin would fail&#xD;
23
- Added provisional support for the following checkout modules:&#xD;
24
- - MAGExtentended MasterCheckout&#xD;
25
  Features:&#xD;
26
- - If error message mentions 'use manual', manual checkbox is toggled automatically&#xD;
27
- - Tweaked compatibility with Magento 1.9&#xD;
28
  </notes>
29
  <authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
30
- <date>2014-06-17</date>
31
- <time>16:15:52</time>
32
- <contents><target name="magecommunity"><dir name="PostcodeNl"><dir name="Api"><dir name="Block"><file name="Jsinit.php" hash="79bb826a50ce0cf4f87cc2f958bfafa1"/></dir><dir name="Helper"><file name="Data.php" hash="fd77a5f3296a0d164a103964ca913b96"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="PcnlController.php" hash="a72395c695188f3a1aff9eb7dba4091d"/></dir><file name="JsonController.php" hash="180f25dccbe40710fea4bbe2a4c4ee8a"/></dir><dir name="data"><dir name="postcodenl_api_setup"><file name="data-upgrade-1.0.8.0-1.1.0.0.php" hash="e0acdb124cf735198c021f0c827c82bc"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="5d518aeaeae028b6299c7cf3d6e54f60"/><file name="config.xml" hash="a4c135d9cc949f452aac80d59522945b"/><file name="system.xml" hash="b92863ff806bd444125e4a829ecdc24c"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="e8f6295a91c9c5bfd116ae1048a5445d"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="8623676f4c6f4068d0b51e31dcfa08e9"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="88c6556ea3cc3b3c6746021e8636a24c"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="ff32e12bbc26e4414dd8ca76edc4ed0f"/></dir></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="88c6556ea3cc3b3c6746021e8636a24c"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="ff32e12bbc26e4414dd8ca76edc4ed0f"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="PostcodeNl_Api.csv" hash="0f85a94e876ec148734c556d9cf363a3"/></dir><dir name="nl_NL"><file name="PostcodeNl_Api.csv" hash="51fa45866ef7461769058d9c83d21766"/></dir></target><target name="mageweb"><dir name="js"><dir name="postcodenl"><dir name="api"><file name="lookup.js" hash="660610166fed083bbca274eb6110d458"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c58103b505f8bcdf55cea1159ca21e27"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c6ffbeceb6907b2e8463d1ff30810304"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c6ffbeceb6907b2e8463d1ff30810304"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PostcodeNl_Api.xml" hash="feeaf95128ffe4ad109ed8b0b8bc85ab"/></dir></target></contents>
33
  <compatible/>
34
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.10.5</min><max>7.99.0</max></extension></required></dependencies>
35
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PostcodeNl_Api</name>
4
+ <version>1.1.2.0</version>
5
  <stability>stable</stability>
6
  <license>Simplified BSD License</license>
7
  <channel>community</channel>
16
  &#xD;
17
  The postcode Magento plugin from Postcode.nl is free of charge, based on a Fair-Use policy. The use of the Postcode.nl Magento plugin is subject to our Terms and Conditions.</description>
18
  <notes>Fixes:&#xD;
19
+ - Better support IWD One Step Checkout&#xD;
20
+ - Better support for updates in admin&#xD;
 
 
 
 
21
  Features:&#xD;
22
+ - Detection of checkout type, for better future checkout extension support&#xD;
 
23
  </notes>
24
  <authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
25
+ <date>2014-10-09</date>
26
+ <time>13:13:10</time>
27
+ <contents><target name="magecommunity"><dir name="PostcodeNl"><dir name="Api"><dir name="Block"><file name="Jsinit.php" hash="79bb826a50ce0cf4f87cc2f958bfafa1"/></dir><dir name="Helper"><file name="Data.php" hash="08fc025ba86655de3de7c69ad1d1c68d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="PcnlController.php" hash="1a8eaf87ed60481f51f3f74eab3ab63f"/></dir><file name="JsonController.php" hash="6a3bff054e3229faaae2aa55f9a3cf3c"/></dir><dir name="data"><dir name="postcodenl_api_setup"><file name="data-upgrade-1.0.8.0-1.1.0.0.php" hash="e0acdb124cf735198c021f0c827c82bc"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="5d518aeaeae028b6299c7cf3d6e54f60"/><file name="config.xml" hash="a4c135d9cc949f452aac80d59522945b"/><file name="system.xml" hash="b92863ff806bd444125e4a829ecdc24c"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="e8f6295a91c9c5bfd116ae1048a5445d"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="8623676f4c6f4068d0b51e31dcfa08e9"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="88c6556ea3cc3b3c6746021e8636a24c"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="ff32e12bbc26e4414dd8ca76edc4ed0f"/></dir></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="88c6556ea3cc3b3c6746021e8636a24c"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="ff32e12bbc26e4414dd8ca76edc4ed0f"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="PostcodeNl_Api.csv" hash="0f85a94e876ec148734c556d9cf363a3"/></dir><dir name="nl_NL"><file name="PostcodeNl_Api.csv" hash="51fa45866ef7461769058d9c83d21766"/></dir></target><target name="mageweb"><dir name="js"><dir name="postcodenl"><dir name="api"><file name="lookup.js" hash="892ba29a3403c12f499ba109331bd52d"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c58103b505f8bcdf55cea1159ca21e27"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c6ffbeceb6907b2e8463d1ff30810304"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir><dir name="base"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c6ffbeceb6907b2e8463d1ff30810304"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PostcodeNl_Api.xml" hash="feeaf95128ffe4ad109ed8b0b8bc85ab"/></dir></target></contents>
28
  <compatible/>
29
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.10.5</min><max>7.99.0</max></extension></required></dependencies>
30
  </package>