Skip to content

Instantly share code, notes, and snippets.

@gterrill
Last active August 29, 2015 14:13
Show Gist options
  • Save gterrill/1d2d770b72af66d6fefd to your computer and use it in GitHub Desktop.
Save gterrill/1d2d770b72af66d6fefd to your computer and use it in GitHub Desktop.
Updated Shipping Calculator
{% unless settings.shipping_calculator == 'Disabled' %}
<div id="shipping-calculator-container" class="clearfix">
<div id="shipping-calculator" class="fl">
<h3>{{ settings.shipping_calculator_heading }}</h3>
<div>
<p>
<label for="address_country">Country</label>
<select id="address_country" name="address[country]" data-default="{% if shop.customer_accounts_enabled and customer %}{{ customer.default_address.country }}{% elsif settings.shipping_calculator_default_country != '' %}{{ settings.shipping_calculator_default_country }}{% endif %}">{{ country_option_tags }}</select>
</p>
<p id="address_province_container" style="display:none;">
<label for="address_province" id="address_province_label">Province</label>
<select id="address_province" class="address_form" name="address[province]" data-default="{% if shop.customer_accounts_enabled and customer and customer.default_address.province != '' %}{{ customer.default_address.province }}{% endif %}"></select>
</p>
</div>
<p>
<label for="address_zip">Zip/Postal Code</label>
<input type="text" id="address_zip" name="address[zip]"{% if shop.customer_accounts_enabled and customer %} value="{{ customer.default_address.zip }}"{% endif %} />
</p>
<p>
<input type="submit" class="awesome get_rates" value="{{ settings.shipping_calculator_submit_button_label }}" />
</p>
</div>
<div id="wrapper-response" class="fr"></div>
</div>
<script id="shipping-calculator-response-template" type="text/x-jquery-tmpl">
{% raw %}
<p id="shipping-rates-feedback" class="{{if success}}success{{else}}error{{/if}}">
{{if success}}
{{if rates.length > 1}}
There are ${rates.length} shipping rates available for ${address}, starting at {{html Shopify.formatMoney(rates[0].price)}}.
{{else}}
{{if rates.length == 1}}
There is one shipping rate available for ${address}.
{{else}}
We do not ship to this destination.
{{/if}}
{{/if}}
{{else}}
${errorFeedback}
{{/if}}
</p>
<ul id="shipping-rates">
{{each( index, rate ) rates}}
<li>${rate.name} at {{html Shopify.formatMoney(rate.price)}}</li>
{{/each}}
</ul>
{% endraw %}
</script>
<script type="text/javascript" charset="utf-8">
//<![CDATA[
Shopify.pollForCartShippingRatesForDestination = function(shippingAddress, callback, errback) {
var poller = function() {
$.get('/cart/async_shipping_rates', function(data) {
if (data) {
Shopify.onCartShippingRatesUpdate(data.shipping_rates, shippingAddress)
} else {
setTimeout(poller, 500)
}
});
}
return poller;
}
Shopify.Cart.ShippingCalculator.show( {
submitButton: '{{ settings.shipping_calculator_submit_button_label }}',
submitButtonDisabled: '{{ settings.shipping_calculator_submit_button_label_disabled }}'{% if shop.customer_accounts_enabled and customer %},
customerIsLoggedIn: true{% endif %}
} );
//]]>
</script>
{% endunless %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment