spree_frontend 3.6.6 → 3.7.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/app/assets/javascripts/spree/frontend.js +8 -0
 - data/app/assets/javascripts/spree/frontend/api_tokens.js +17 -0
 - data/app/assets/javascripts/spree/frontend/cart.js +59 -0
 - data/app/assets/javascripts/spree/frontend/checkout.js +19 -0
 - data/app/assets/javascripts/spree/frontend/checkout/address.js +102 -0
 - data/app/assets/javascripts/spree/frontend/checkout/payment.js +57 -0
 - data/app/assets/javascripts/spree/frontend/checkout/shipment.js +47 -0
 - data/app/assets/javascripts/spree/frontend/coupon_manager.js +45 -0
 - data/app/assets/javascripts/spree/frontend/product.js +104 -51
 - data/app/controllers/spree/checkout_controller.rb +7 -13
 - data/app/controllers/spree/locale_controller.rb +1 -3
 - data/app/controllers/spree/orders_controller.rb +25 -10
 - data/app/controllers/spree/store_controller.rb +12 -0
 - data/app/helpers/spree/frontend_helper.rb +8 -12
 - data/app/views/spree/checkout/_payment.html.erb +3 -3
 - data/app/views/spree/checkout/edit.html.erb +1 -1
 - data/app/views/spree/orders/edit.html.erb +1 -2
 - data/app/views/spree/products/_cart_form.html.erb +10 -4
 - data/app/views/spree/products/_properties.html.erb +1 -1
 - data/app/views/spree/products/_thumbnails.html.erb +4 -2
 - data/config/routes.rb +3 -0
 - data/lib/generators/spree/frontend/copy_views/copy_views_generator.rb +1 -1
 - data/spree_frontend.gemspec +2 -2
 - metadata +18 -23
 - data/app/assets/javascripts/spree/frontend/cart.js.coffee +0 -28
 - data/app/assets/javascripts/spree/frontend/checkout.js.coffee +0 -16
 - data/app/assets/javascripts/spree/frontend/checkout/address.js.coffee +0 -81
 - data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +0 -57
 - data/app/assets/javascripts/spree/frontend/checkout/shipment.js.coffee +0 -41
 - data/app/assets/javascripts/spree/frontend/coupon_manager.js.coffee +0 -37
 
| 
         @@ -1,28 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #= require spree/frontend/coupon_manager
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            Spree.ready ($) ->
         
     | 
| 
       4 
     | 
    
         
            -
              if ($ 'form#update-cart').length
         
     | 
| 
       5 
     | 
    
         
            -
                ($ 'form#update-cart a.delete').show().one 'click', ->
         
     | 
| 
       6 
     | 
    
         
            -
                  ($ this).parents('.line-item').first().find('input.line_item_quantity').val 0
         
     | 
| 
       7 
     | 
    
         
            -
                  ($ this).parents('form').first().submit()
         
     | 
| 
       8 
     | 
    
         
            -
                  false
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              ($ 'form#update-cart').submit (event) ->
         
     | 
| 
       11 
     | 
    
         
            -
                ($ 'form#update-cart #update-button').attr('disabled', true)
         
     | 
| 
       12 
     | 
    
         
            -
                input =
         
     | 
| 
       13 
     | 
    
         
            -
                  couponCodeField: $('#order_coupon_code')
         
     | 
| 
       14 
     | 
    
         
            -
                  couponStatus: $('#coupon_status')
         
     | 
| 
       15 
     | 
    
         
            -
                if $.trim(input.couponCodeField.val()).length > 0
         
     | 
| 
       16 
     | 
    
         
            -
                  if new CouponManager(input).applyCoupon()
         
     | 
| 
       17 
     | 
    
         
            -
                    @submit()
         
     | 
| 
       18 
     | 
    
         
            -
                    return true
         
     | 
| 
       19 
     | 
    
         
            -
                  else
         
     | 
| 
       20 
     | 
    
         
            -
                    ($ 'form#update-cart #update-button').attr('disabled', false)
         
     | 
| 
       21 
     | 
    
         
            -
                    event.preventDefault()
         
     | 
| 
       22 
     | 
    
         
            -
                    return false
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            Spree.fetch_cart = ->
         
     | 
| 
       25 
     | 
    
         
            -
              $.ajax
         
     | 
| 
       26 
     | 
    
         
            -
                url: Spree.pathFor("cart_link"),
         
     | 
| 
       27 
     | 
    
         
            -
                success: (data) ->
         
     | 
| 
       28 
     | 
    
         
            -
                  $('#link-to-cart').html data
         
     | 
| 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            Spree.disableSaveOnClick = ->
         
     | 
| 
       2 
     | 
    
         
            -
              ($ 'form.edit_order').on('submit', (e) ->
         
     | 
| 
       3 
     | 
    
         
            -
                if (($ this).data('submitted') == true)
         
     | 
| 
       4 
     | 
    
         
            -
                  # Previously submitted, don't submit again
         
     | 
| 
       5 
     | 
    
         
            -
                  e.preventDefault()
         
     | 
| 
       6 
     | 
    
         
            -
                else
         
     | 
| 
       7 
     | 
    
         
            -
                  # Mark it so that the next submit gets ignored
         
     | 
| 
       8 
     | 
    
         
            -
                  ($ this).data('submitted', true)
         
     | 
| 
       9 
     | 
    
         
            -
                  ($ this).find(':submit, :image').removeClass('primary').addClass 'disabled'
         
     | 
| 
       10 
     | 
    
         
            -
              )
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            Spree.enableSave = ->
         
     | 
| 
       13 
     | 
    
         
            -
              ($ 'form.edit_order').data('submitted', false).find(':submit, :image').attr('disabled', false).addClass('primary').removeClass 'disabled'
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            Spree.ready ($) ->
         
     | 
| 
       16 
     | 
    
         
            -
              Spree.Checkout = {}
         
     | 
| 
         @@ -1,81 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            Spree.ready ($) ->
         
     | 
| 
       2 
     | 
    
         
            -
              Spree.onAddress = () ->
         
     | 
| 
       3 
     | 
    
         
            -
                if ($ '#checkout_form_address').length
         
     | 
| 
       4 
     | 
    
         
            -
                  getCountryId = (region) ->
         
     | 
| 
       5 
     | 
    
         
            -
                    $('#' + region + 'country select').val()
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                  Spree.updateState = (region) ->
         
     | 
| 
       8 
     | 
    
         
            -
                    countryId = getCountryId(region)
         
     | 
| 
       9 
     | 
    
         
            -
                    if countryId?
         
     | 
| 
       10 
     | 
    
         
            -
                      unless Spree.Checkout[countryId]?
         
     | 
| 
       11 
     | 
    
         
            -
                        $.get Spree.routes.states_search, {country_id: countryId}, (data) ->
         
     | 
| 
       12 
     | 
    
         
            -
                          Spree.Checkout[countryId] =
         
     | 
| 
       13 
     | 
    
         
            -
                            states: data.states
         
     | 
| 
       14 
     | 
    
         
            -
                            states_required: data.states_required
         
     | 
| 
       15 
     | 
    
         
            -
                          Spree.fillStates(Spree.Checkout[countryId], region)
         
     | 
| 
       16 
     | 
    
         
            -
                      else
         
     | 
| 
       17 
     | 
    
         
            -
                        Spree.fillStates(Spree.Checkout[countryId], region)
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  Spree.fillStates = (data, region) ->
         
     | 
| 
       20 
     | 
    
         
            -
                    statesRequired = data.states_required
         
     | 
| 
       21 
     | 
    
         
            -
                    states = data.states
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                    statePara = ($ '#' + region + 'state')
         
     | 
| 
       24 
     | 
    
         
            -
                    stateSelect = statePara.find('select')
         
     | 
| 
       25 
     | 
    
         
            -
                    stateInput = statePara.find('input')
         
     | 
| 
       26 
     | 
    
         
            -
                    stateSpanRequired = statePara.find('[id$="state-required"]')
         
     | 
| 
       27 
     | 
    
         
            -
                    if states.length > 0
         
     | 
| 
       28 
     | 
    
         
            -
                      selected = parseInt stateSelect.val()
         
     | 
| 
       29 
     | 
    
         
            -
                      stateSelect.html ''
         
     | 
| 
       30 
     | 
    
         
            -
                      statesWithBlank = [{ name: '', id: ''}].concat(states)
         
     | 
| 
       31 
     | 
    
         
            -
                      $.each statesWithBlank, (idx, state) ->
         
     | 
| 
       32 
     | 
    
         
            -
                        opt = ($ document.createElement('option')).attr('value', state.id).html(state.name)
         
     | 
| 
       33 
     | 
    
         
            -
                        opt.prop 'selected', true if selected is state.id
         
     | 
| 
       34 
     | 
    
         
            -
                        stateSelect.append opt
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                      stateSelect.prop('disabled', false).show()
         
     | 
| 
       37 
     | 
    
         
            -
                      stateInput.hide().prop 'disabled', true
         
     | 
| 
       38 
     | 
    
         
            -
                      statePara.show()
         
     | 
| 
       39 
     | 
    
         
            -
                      stateSpanRequired.show()
         
     | 
| 
       40 
     | 
    
         
            -
                      stateSelect.addClass('required') if statesRequired
         
     | 
| 
       41 
     | 
    
         
            -
                      stateSelect.removeClass('hidden')
         
     | 
| 
       42 
     | 
    
         
            -
                      stateInput.removeClass('required')
         
     | 
| 
       43 
     | 
    
         
            -
                    else
         
     | 
| 
       44 
     | 
    
         
            -
                      stateSelect.hide().prop 'disabled', true
         
     | 
| 
       45 
     | 
    
         
            -
                      stateInput.show()
         
     | 
| 
       46 
     | 
    
         
            -
                      if statesRequired
         
     | 
| 
       47 
     | 
    
         
            -
                        stateSpanRequired.show()
         
     | 
| 
       48 
     | 
    
         
            -
                        stateInput.addClass('required')
         
     | 
| 
       49 
     | 
    
         
            -
                      else
         
     | 
| 
       50 
     | 
    
         
            -
                        stateInput.val ''
         
     | 
| 
       51 
     | 
    
         
            -
                        stateSpanRequired.hide()
         
     | 
| 
       52 
     | 
    
         
            -
                        stateInput.removeClass('required')
         
     | 
| 
       53 
     | 
    
         
            -
                      statePara.toggle(!!statesRequired)
         
     | 
| 
       54 
     | 
    
         
            -
                      stateInput.prop('disabled', !statesRequired)
         
     | 
| 
       55 
     | 
    
         
            -
                      stateInput.removeClass('hidden')
         
     | 
| 
       56 
     | 
    
         
            -
                      stateSelect.removeClass('required')
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  ($ '#bcountry select').change ->
         
     | 
| 
       59 
     | 
    
         
            -
                    Spree.updateState 'b'
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                  ($ '#scountry select').change ->
         
     | 
| 
       62 
     | 
    
         
            -
                    Spree.updateState 's'
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                  Spree.updateState 'b'
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                  order_use_billing = ($ 'input#order_use_billing')
         
     | 
| 
       67 
     | 
    
         
            -
                  order_use_billing.change ->
         
     | 
| 
       68 
     | 
    
         
            -
                    update_shipping_form_state order_use_billing
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                  update_shipping_form_state = (order_use_billing) ->
         
     | 
| 
       71 
     | 
    
         
            -
                    if order_use_billing.is(':checked')
         
     | 
| 
       72 
     | 
    
         
            -
                      ($ '#shipping .inner').hide()
         
     | 
| 
       73 
     | 
    
         
            -
                      ($ '#shipping .inner input, #shipping .inner select').prop 'disabled', true
         
     | 
| 
       74 
     | 
    
         
            -
                    else
         
     | 
| 
       75 
     | 
    
         
            -
                      ($ '#shipping .inner').show()
         
     | 
| 
       76 
     | 
    
         
            -
                      ($ '#shipping .inner input, #shipping .inner select').prop 'disabled', false
         
     | 
| 
       77 
     | 
    
         
            -
                      Spree.updateState('s')
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                  update_shipping_form_state order_use_billing
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
              Spree.onAddress()
         
     | 
| 
         @@ -1,57 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #= require spree/frontend/coupon_manager
         
     | 
| 
       2 
     | 
    
         
            -
            Spree.ready ($) ->
         
     | 
| 
       3 
     | 
    
         
            -
              Spree.onPayment = () ->
         
     | 
| 
       4 
     | 
    
         
            -
                if ($ '#checkout_form_payment').length
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                  if ($ '#existing_cards').length
         
     | 
| 
       7 
     | 
    
         
            -
                    ($ '#payment-method-fields').hide()
         
     | 
| 
       8 
     | 
    
         
            -
                    ($ '#payment-methods').hide()
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                    ($ '#use_existing_card_yes').click ->
         
     | 
| 
       11 
     | 
    
         
            -
                      ($ '#payment-method-fields').hide()
         
     | 
| 
       12 
     | 
    
         
            -
                      ($ '#payment-methods').hide()
         
     | 
| 
       13 
     | 
    
         
            -
                      ($ '.existing-cc-radio').prop("disabled", false)
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                    ($ '#use_existing_card_no').click ->
         
     | 
| 
       16 
     | 
    
         
            -
                      ($ '#payment-method-fields').show()
         
     | 
| 
       17 
     | 
    
         
            -
                      ($ '#payment-methods').show()
         
     | 
| 
       18 
     | 
    
         
            -
                      ($ '.existing-cc-radio').prop("disabled", true)
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  $(".cardNumber").payment('formatCardNumber')
         
     | 
| 
       22 
     | 
    
         
            -
                  $(".cardExpiry").payment('formatCardExpiry')
         
     | 
| 
       23 
     | 
    
         
            -
                  $(".cardCode").payment('formatCardCVC')
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  $(".cardNumber").change ->
         
     | 
| 
       26 
     | 
    
         
            -
                    $(this).parent().siblings(".ccType").val($.payment.cardType(@value))
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  ($ 'input[type="radio"][name="order[payments_attributes][][payment_method_id]"]').click(->
         
     | 
| 
       29 
     | 
    
         
            -
                    ($ '#payment-methods li').hide()
         
     | 
| 
       30 
     | 
    
         
            -
                    ($ '#payment_method_' + @value).show() if @checked
         
     | 
| 
       31 
     | 
    
         
            -
                  )
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  ($ document).on('click', '#cvv_link', (event) ->
         
     | 
| 
       34 
     | 
    
         
            -
                    windowName = 'cvv_info'
         
     | 
| 
       35 
     | 
    
         
            -
                    windowOptions = 'left=20,top=20,width=500,height=500,toolbar=0,resizable=0,scrollbars=1'
         
     | 
| 
       36 
     | 
    
         
            -
                    window.open(($ this).attr('href'), windowName, windowOptions)
         
     | 
| 
       37 
     | 
    
         
            -
                    event.preventDefault()
         
     | 
| 
       38 
     | 
    
         
            -
                  )
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                  # Activate already checked payment method if form is re-rendered
         
     | 
| 
       41 
     | 
    
         
            -
                  # i.e. if user enters invalid data
         
     | 
| 
       42 
     | 
    
         
            -
                  ($ 'input[type="radio"]:checked').click()
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  $('#checkout_form_payment').submit (event) ->
         
     | 
| 
       45 
     | 
    
         
            -
                    input =
         
     | 
| 
       46 
     | 
    
         
            -
                      couponCodeField: $('#order_coupon_code')
         
     | 
| 
       47 
     | 
    
         
            -
                      couponStatus: $('#coupon_status')
         
     | 
| 
       48 
     | 
    
         
            -
                    if $.trim(input.couponCodeField.val()).length > 0
         
     | 
| 
       49 
     | 
    
         
            -
                      if new CouponManager(input).applyCoupon()
         
     | 
| 
       50 
     | 
    
         
            -
                        @submit()
         
     | 
| 
       51 
     | 
    
         
            -
                        return true
         
     | 
| 
       52 
     | 
    
         
            -
                      else
         
     | 
| 
       53 
     | 
    
         
            -
                        Spree.enableSave()
         
     | 
| 
       54 
     | 
    
         
            -
                        event.preventDefault()
         
     | 
| 
       55 
     | 
    
         
            -
                        return false
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
              Spree.onPayment()
         
     | 
| 
         @@ -1,41 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class @ShippingTotalManager
         
     | 
| 
       2 
     | 
    
         
            -
              constructor: (@input) ->
         
     | 
| 
       3 
     | 
    
         
            -
                @shippingMethods = @input.shippingMethods
         
     | 
| 
       4 
     | 
    
         
            -
                @shipmentTotal = @input.shipmentTotal
         
     | 
| 
       5 
     | 
    
         
            -
                @orderTotal = @input.orderTotal
         
     | 
| 
       6 
     | 
    
         
            -
                @formatOptions = {
         
     | 
| 
       7 
     | 
    
         
            -
                  symbol : @shipmentTotal.data('currency'),
         
     | 
| 
       8 
     | 
    
         
            -
                  decimal : @shipmentTotal.attr('decimal-mark'),
         
     | 
| 
       9 
     | 
    
         
            -
                  thousand: @shipmentTotal.attr('thousands-separator'),
         
     | 
| 
       10 
     | 
    
         
            -
                  precision : 2 }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              calculateShipmentTotal: ->
         
     | 
| 
       13 
     | 
    
         
            -
                @sum = 0
         
     | 
| 
       14 
     | 
    
         
            -
                $.each ($(@shippingMethods).filter(':checked')), (idx, shippingMethod) =>
         
     | 
| 
       15 
     | 
    
         
            -
                  @sum += @parseCurrencyToFloat($(shippingMethod).data('cost'))
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                @readjustSummarySection(
         
     | 
| 
       18 
     | 
    
         
            -
                  @parseCurrencyToFloat(@orderTotal.html()),
         
     | 
| 
       19 
     | 
    
         
            -
                  @sum,
         
     | 
| 
       20 
     | 
    
         
            -
                  @parseCurrencyToFloat(@shipmentTotal.html())
         
     | 
| 
       21 
     | 
    
         
            -
                )
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              parseCurrencyToFloat: (input) ->
         
     | 
| 
       24 
     | 
    
         
            -
                accounting.unformat(input, @formatOptions.decimal)
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              readjustSummarySection: (orderTotal, newShipmentTotal, oldShipmentTotal) ->
         
     | 
| 
       27 
     | 
    
         
            -
                newOrderTotal = orderTotal + (newShipmentTotal - oldShipmentTotal)
         
     | 
| 
       28 
     | 
    
         
            -
                @shipmentTotal.html(accounting.formatMoney(newShipmentTotal, @formatOptions))
         
     | 
| 
       29 
     | 
    
         
            -
                @orderTotal.html(accounting.formatMoney(newOrderTotal, @formatOptions))
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              bindEvent: ->
         
     | 
| 
       32 
     | 
    
         
            -
                @shippingMethods.change =>
         
     | 
| 
       33 
     | 
    
         
            -
                  @calculateShipmentTotal()
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            Spree.ready ($) ->
         
     | 
| 
       36 
     | 
    
         
            -
              input =
         
     | 
| 
       37 
     | 
    
         
            -
                orderTotal: $('#summary-order-total')
         
     | 
| 
       38 
     | 
    
         
            -
                shipmentTotal: $("[data-hook='shipping-total']")
         
     | 
| 
       39 
     | 
    
         
            -
                shippingMethods: $("input[data-behavior='shipping-method-selector']")
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              new ShippingTotalManager(input).bindEvent()
         
     | 
| 
         @@ -1,37 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class @CouponManager
         
     | 
| 
       2 
     | 
    
         
            -
              constructor: (@input) ->
         
     | 
| 
       3 
     | 
    
         
            -
                @couponCodeField = @input.couponCodeField
         
     | 
| 
       4 
     | 
    
         
            -
                @couponApplied = false
         
     | 
| 
       5 
     | 
    
         
            -
                @couponStatus = @input.couponStatus
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              applyCoupon: ->
         
     | 
| 
       8 
     | 
    
         
            -
                @couponCode = $.trim($(@couponCodeField).val())
         
     | 
| 
       9 
     | 
    
         
            -
                if @couponCode != ''
         
     | 
| 
       10 
     | 
    
         
            -
                  if @couponStatus.length == 0
         
     | 
| 
       11 
     | 
    
         
            -
                    @couponStatus = $('<div/>', { id: 'coupon_status' })
         
     | 
| 
       12 
     | 
    
         
            -
                    @couponCodeField.parent().append @couponStatus
         
     | 
| 
       13 
     | 
    
         
            -
                  @createUrl()
         
     | 
| 
       14 
     | 
    
         
            -
                  @couponStatus.removeClass()
         
     | 
| 
       15 
     | 
    
         
            -
                  @sendRequest()
         
     | 
| 
       16 
     | 
    
         
            -
                  @couponApplied
         
     | 
| 
       17 
     | 
    
         
            -
                else
         
     | 
| 
       18 
     | 
    
         
            -
                  true
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              createUrl: ->
         
     | 
| 
       21 
     | 
    
         
            -
                @url = Spree.url(Spree.routes.apply_coupon_code(Spree.current_order_id),
         
     | 
| 
       22 
     | 
    
         
            -
                  order_token: Spree.current_order_token
         
     | 
| 
       23 
     | 
    
         
            -
                  coupon_code: @couponCode)
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              sendRequest: ->
         
     | 
| 
       26 
     | 
    
         
            -
                $.ajax
         
     | 
| 
       27 
     | 
    
         
            -
                  async: false
         
     | 
| 
       28 
     | 
    
         
            -
                  method: 'PUT'
         
     | 
| 
       29 
     | 
    
         
            -
                  url: @url
         
     | 
| 
       30 
     | 
    
         
            -
                  success: =>
         
     | 
| 
       31 
     | 
    
         
            -
                    @couponCodeField.val ''
         
     | 
| 
       32 
     | 
    
         
            -
                    @couponStatus.addClass('alert-success')
         
     | 
| 
       33 
     | 
    
         
            -
                                 .html Spree.translations.coupon_code_applied
         
     | 
| 
       34 
     | 
    
         
            -
                    @couponApplied = true
         
     | 
| 
       35 
     | 
    
         
            -
                  error: (xhr) =>
         
     | 
| 
       36 
     | 
    
         
            -
                    handler = JSON.parse(xhr.responseText)
         
     | 
| 
       37 
     | 
    
         
            -
                    @couponStatus.addClass('alert-error').html handler['error']
         
     |