diff --git a/web/app/assets/javascripts/checkout_payment.js b/web/app/assets/javascripts/checkout_payment.js
index e69de29bb..e8085c018 100644
--- a/web/app/assets/javascripts/checkout_payment.js
+++ b/web/app/assets/javascripts/checkout_payment.js
@@ -0,0 +1,499 @@
+(function(context,$) {
+
+ "use strict";
+ context.JK = context.JK || {};
+ context.JK.CheckoutPaymentScreen = function(app) {
+
+ var EVENTS = context.JK.EVENTS;
+ var logger = context.JK.logger;
+
+ var $screen = null;
+ var $navigation = null;
+ var $billingInfo = null;
+ var $shippingInfo = null;
+ var $paymentMethod = null;
+ var $shippingAddress = null;
+ var $shippingAsBilling = null;
+ var $paymentInfoPanel = null;
+ var $orderPanel = null;
+ var $orderContent = null;
+ var userDetail = null;
+ var step = null;
+ var billing_info = null;
+ var shipping_info = null;
+ var shipping_as_billing = null;
+
+ function beforeShow() {
+ beforeShowPaymentInfo();
+ }
+
+ function beforeShowPaymentInfo() {
+ step = 2;
+ renderNavigation();
+ renderAccountInfo();
+ }
+
+
+ function renderAccountInfo() {
+ rest.getUserDetail()
+ .done(populateAccountInfo)
+ .error(app.ajaxError);
+ }
+
+ function populateAccountInfo(user) {
+ userDetail = user;
+
+ if (userDetail.has_recurly_account) {
+ rest.getBillingInfo()
+ .done(function(response) {
+ $billingInfo.find("#billing-first-name").val(response.first_name);
+ $billingInfo.find("#billing-last-name").val(response.last_name);
+ $billingInfo.find("#billing-address1").val(response.address1);
+ $billingInfo.find("#billing-address2").val(response.address2);
+ $billingInfo.find("#billing-city").val(response.city);
+ $billingInfo.find("#billing-state").val(response.state);
+ $billingInfo.find("#billing-zip").val(response.zip);
+ $billingInfo.find("#billing-country").val(response.country);
+
+ $shippingAddress.find("#shipping-first-name").val(response.first_name);
+ $shippingAddress.find("#shipping-last-name").val(response.last_name);
+ $shippingAddress.find("#shipping-address1").val(response.address1);
+ $shippingAddress.find("#shipping-address2").val(response.address2);
+ $shippingAddress.find("#shipping-city").val(response.city);
+ $shippingAddress.find("#shipping-state").val(response.state);
+ $shippingAddress.find("#shipping-zip").val(response.zip);
+ $shippingAddress.find("#shipping-country").val(response.country);
+ })
+ .error(app.ajaxError);
+ }
+ else {
+ $billingInfo.find("#billing-first-name").val(userDetail.first_name);
+ $billingInfo.find("#billing-last-name").val(userDetail.last_name);
+ $billingInfo.find("#billing-city").val(userDetail.city);
+ $billingInfo.find("#billing-state").val(userDetail.state);
+ $billingInfo.find("#billing-country").val(userDetail.country);
+
+ $shippingAddress.find("#shipping-first-name").val(userDetail.first_name);
+ $shippingAddress.find("#shipping-last-name").val(userDetail.last_name);
+ $shippingAddress.find("#shipping-city").val(userDetail.city);
+ $shippingAddress.find("#shipping-state").val(userDetail.state);
+ $shippingAddress.find("#shipping-country").val(userDetail.country);
+ }
+ }
+
+ function afterShow(data) {
+ // XXX : style-test code
+ // moveToThanks({jam_tracks: [{id: 14, jam_track_right_id: 11, name: 'Back in Black'}, {id: 15, jam_track_right_id: 11, name: 'In Bloom'}, {id: 16, jam_track_right_id: 11, name: 'Love Bird Supreme'}]});
+ }
+
+ function beforeHide() {
+
+ }
+
+ function beforeHide() {
+
+ }
+
+ // TODO: Refactor: this function is long and fraught with many return points.
+ function next(e) {
+ e.preventDefault();
+ $("#order_error").addClass("hidden")
+
+ // validation
+ var billing_first_name = $billingInfo.find("#billing-first-name").val();
+ var billing_last_name = $billingInfo.find("#billing-last-name").val();
+ var billing_address1 = $billingInfo.find("#billing-address1").val();
+ var billing_address2 = $billingInfo.find("#billing-address2").val();
+ var billing_city = $billingInfo.find("#billing-city").val();
+ var billing_state = $billingInfo.find("#billing-state").val();
+ var billing_zip = $billingInfo.find("#billing-zip").val();
+ var billing_country = $billingInfo.find("#billing-country").val();
+
+ if (!billing_first_name) {
+ $billingInfo.find('#divBillingFirstName .error-text').remove();
+ $billingInfo.find('#divBillingFirstName').addClass("error");
+ $billingInfo.find('#billing-first-name').after("
");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingFirstName').removeClass("error");
+ }
+
+ if (!billing_last_name) {
+ $billingInfo.find('#divBillingLastName .error-text').remove();
+ $billingInfo.find('#divBillingLastName').addClass("error");
+ $billingInfo.find('#billing-last-name').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingLastName').removeClass("error");
+ }
+
+ if (!billing_address1) {
+ $billingInfo.find('#divBillingAddress1 .error-text').remove();
+ $billingInfo.find('#divBillingAddress1').addClass("error");
+ $billingInfo.find('#billing-address1').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingAddress1').removeClass("error");
+ }
+
+ if (!billing_zip) {
+ $billingInfo.find('#divBillingZip .error-text').remove();
+ $billingInfo.find('#divBillingZip').addClass("error");
+ $billingInfo.find('#billing-zip').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingZip').removeClass("error");
+ }
+
+ if (!billing_state) {
+ $billingInfo.find('#divBillingState .error-text').remove();
+ $billingInfo.find('#divBillingState').addClass("error");
+ $billingInfo.find('#billing-zip').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingState').removeClass("error");
+ }
+
+ if (!billing_city) {
+ $billingInfo.find('#divBillingCity .error-text').remove();
+ $billingInfo.find('#divBillingCity').addClass("error");
+ $billingInfo.find('#billing-city').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingCity').removeClass("error");
+ }
+
+ if (!billing_country) {
+ $billingInfo.find('#divBillingCountry .error-text').remove();
+ $billingInfo.find('#divBillingCountry').addClass("error");
+ $billingInfo.find('#billing-country').after("");
+
+ return false;
+ }
+ else {
+ $billingInfo.find('#divBillingCountry').removeClass("error");
+ }
+
+ shipping_as_billing = $shippingAsBilling.is(":checked");
+ var shipping_first_name, shipping_last_name, shipping_address1, shipping_address2;
+ var shipping_city, shipping_state, shipping_zip, shipping_country;
+
+ if (!shipping_as_billing) {
+ shipping_first_name = $shippingAddress.find("#shipping-first-name").val();
+ shipping_last_name = $shippingAddress.find("#shipping-last-name").val();
+ shipping_address1 = $shippingAddress.find("#shipping-address1").val();
+ shipping_address2 = $shippingAddress.find("#shipping-address2").val();
+ shipping_city = $shippingAddress.find("#shipping-city").val();
+ shipping_state = $shippingAddress.find("#shipping-state").val();
+ shipping_zip = $shippingAddress.find("#shipping-zip").val();
+ shipping_country = $shippingAddress.find("#shipping-country").val();
+
+ if (!shipping_first_name) {
+ $shippingAddress.find('#divShippingFirstName .error-text').remove();
+ $shippingAddress.find('#divShippingFirstName').addClass("error");
+ $shippingAddress.find('#shipping-first-name').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingFirstName').removeClass("error");
+ }
+
+ if (!shipping_last_name) {
+ $shippingAddress.find('#divShippingLastName .error-text').remove();
+ $shippingAddress.find('#divShippingLastName').addClass("error");
+ $shippingAddress.find('#shipping-last-name').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingLastName').removeClass("error");
+ }
+
+ if (!shipping_address1) {
+ $shippingAddress.find('#divShippingAddress1 .error-text').remove();
+ $shippingAddress.find('#divShippingAddress1').addClass("error");
+ $shippingAddress.find('#shipping-address1').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingAddress1').removeClass("error");
+ }
+
+ if (!shipping_zip) {
+ $shippingAddress.find('#divShippingZip .error-text').remove();
+ $shippingAddress.find('#divShippingZip').addClass("error");
+ $shippingAddress.find('#shipping-zip').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingZip').removeClass("error");
+ }
+
+ if (!shipping_state) {
+ $shippingAddress.find('#divShippingState .error-text').remove();
+ $shippingAddress.find('#divShippingState').addClass("error");
+ $shippingAddress.find('#shipping-zip').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingState').removeClass("error");
+ }
+
+ if (!shipping_city) {
+ $shippingAddress.find('#divShippingCity .error-text').remove();
+ $shippingAddress.find('#divShippingCity').addClass("error");
+ $shippingAddress.find('#shipping-city').after("");
+
+ return false;
+ }
+ else {
+ $shippingInfo.find('#divShippingCity').removeClass("error");
+ }
+
+ if (!shipping_country) {
+ $shippingAddress.find('#divShippingCountry .error-text').remove();
+ $shippingAddress.find('#divShippingCountry').addClass("error");
+ $shippingAddress.find('#shipping-country').after("");
+
+ return false;
+ }
+ else {
+ $shippingAddress.find('#divShippingCountry').removeClass("error");
+ }
+ }
+
+ var card_name = $paymentMethod.find("#card-name").val();
+ var card_number = $paymentMethod.find("#card-number").val();
+ var card_year = $paymentMethod.find("#card_expire-date_1i").val();
+ var card_month = $paymentMethod.find("#card_expire-date_2i").val();
+ var card_verify = $paymentMethod.find("#card-verify").val();
+
+ if (!card_name) {
+ $paymentMethod.find('#divCardName .error-text').remove();
+ $paymentMethod.find('#divCardName').addClass("error");
+ $paymentMethod.find('#card-name').after("");
+ return false;
+ } else {
+ $paymentMethod.find('#divCardName').removeClass("error");
+ }
+
+ if (!card_number) {
+ $paymentMethod.find('#divCardNumber .error-text').remove();
+ $paymentMethod.find('#divCardNumber').addClass("error");
+ $paymentMethod.find('#card-number').after("");
+ return false;
+ } else if (!$.payment.validateCardNumber(card_number)) {
+ $paymentMethod.find('#divCardNumber .error-text').remove();
+ $paymentMethod.find('#divCardNumber').addClass("error");
+ $paymentMethod.find('#card-number').after("");
+ return false;
+ } else {
+ $paymentMethod.find('#divCardNumber').removeClass("error");
+ }
+
+ if (!$.payment.validateCardExpiry(card_month, card_year)) {
+ $paymentMethod.find('#divCardExpiry .error-text').remove();
+ $paymentMethod.find('#divCardExpiry').addClass("error");
+ $paymentMethod.find('#card-expiry').after("");
+ } else {
+ $paymentMethod.find('#divCardExpiry').removeClass("error");
+ }
+
+ if (!card_verify) {
+ $paymentMethod.find('#divCardVerify .error-text').remove();
+ $paymentMethod.find('#divCardVerify').addClass("error");
+ $paymentMethod.find('#card-verify').after("- Card Verification Value is required
");
+
+ return false;
+ } else if(!$.payment.validateCardCVC(card_verify)) {
+ $paymentMethod.find('#divCardVerify .error-text').remove();
+ $paymentMethod.find('#divCardVerify').addClass("error");
+ $paymentMethod.find('#card-verify').after("- Card Verification Value is not valid.
");
+
+ return false;
+ } else {
+ $paymentMethod.find('#divCardVerify').removeClass("error");
+ }
+
+ billing_info = {};
+ shipping_info = {};
+ billing_info.first_name = billing_first_name;
+ billing_info.last_name = billing_last_name;
+ billing_info.address1 = billing_address1;
+ billing_info.address2 = billing_address2;
+ billing_info.city = billing_city;
+ billing_info.state = billing_state;
+ billing_info.country = billing_country;
+ billing_info.zip = billing_zip;
+ billing_info.number = card_number;
+ billing_info.month = card_month;
+ billing_info.year = card_year;
+ billing_info.verification_value = card_verify;
+
+ if (shipping_as_billing) {
+ shipping_info = $.extend({},billing_info);
+ delete shipping_info.number;
+ delete shipping_info.month;
+ delete shipping_info.year;
+ delete shipping_info.verification_value;
+ } else {
+ shipping_info.first_name = shipping_first_name;
+ shipping_info.last_name = shipping_last_name;
+ shipping_info.address1 = shipping_address1;
+ shipping_info.address2 = shipping_address2;
+ shipping_info.city = shipping_city;
+ shipping_info.state = shipping_state;
+ shipping_info.country = shipping_country;
+ shipping_info.zip = shipping_zip;
+ }
+
+ $paymentInfoPanel.find("#payment-info-next").addClass("disabled");
+ $paymentInfoPanel.find("#payment-info-next").off("click");
+
+ rest.createRecurlyAccount({billing_info: billing_info})
+ .done(function() {
+ moveToOrder();
+ $paymentInfoPanel.find("#payment-info-next").removeClass("disabled");
+ $paymentInfoPanel.find("#payment-info-next").on("click", next);
+ })
+ .fail(errorHandling);
+ }
+
+ function errorHandling(xhr, ajaxOptions, thrownError) {
+ $.each(xhr.responseJSON.errors, function(key, error) {
+ if (key == 'number') {
+ $paymentMethod.find('#divCardNumber .error-text').remove();
+ $paymentMethod.find('#divCardNumber').addClass("error");
+ $paymentMethod.find('#card-number').after("");
+ }
+ else if (key == 'verification_value') {
+ $paymentMethod.find('#divCardVerify .error-text').remove();
+ $paymentMethod.find('#divCardVerify').addClass("error");
+ $paymentMethod.find('#card-verify').after("");
+ }
+ });
+
+ $paymentInfoPanel.find("#payment-info-next").addClass("disabled");
+ $paymentInfoPanel.find("#payment-info-next").on('click', next);
+ }
+
+ function beforeShowOrder() {
+ step = 3;
+ renderNavigation();
+ populateOrderPage();
+ }
+
+ function clearOrderPage() {
+ $orderContent.empty();
+ }
+
+ function populateOrderPage() {
+ clearOrderPage();
+
+ rest.getShoppingCarts()
+ .done(renderOrderPage)
+ .fail(app.ajaxError);
+ }
+
+ function moveToOrder() {
+ window.location = '/client#/checkout_order';
+ }
+
+
+
+
+ function toggleShippingAsBilling(e) {
+ e.preventDefault();
+
+ var shipping_as_billing = $(e.target).is(':checked');
+
+ if (!shipping_as_billing) {
+ $shippingAddress.removeClass("hidden");
+ }
+ else {
+ $shippingAddress.addClass("hidden");
+ }
+ }
+
+ function events() {
+ $paymentInfoPanel.find("#payment-info-next").on('click', next);
+ $shippingAsBilling.on('ifChanged', toggleShippingAsBilling);
+ }
+
+ function reset() {
+
+ }
+
+ function renderNavigation() {
+ $navigation.html("");
+ var navigationHtml = $(
+ context._.template(
+ $('#template-checkout-navigation').html(),
+ {current: step},
+ {variable: 'data'}
+ )
+ );
+
+ $navigation.append(navigationHtml);
+ }
+
+ function initializeControls() {
+ $("form.payment-info").iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ inheritClass: true
+ });
+
+ // Use jquery.payment to limit characters and length:
+ $paymentMethod.find("#card-number").payment('formatCardNumber');
+ $paymentMethod.find("#card-verify").payment('formatCardCVC');
+ }
+
+ function initialize() {
+ var screenBindings = {
+ 'beforeShow': beforeShow,
+ 'afterShow': afterShow,
+ 'beforeHide' : beforeHide
+ };
+ app.bindScreen('checkout_payment', screenBindings);
+
+ $screen = $("#checkoutPaymentScreen");
+ $paymentInfoPanel = $screen.find(".checkout-payment-info");
+ $orderPanel = $screen.find(".order-panel");
+ $navigation = $screen.find(".checkout-navigation-bar");
+ $billingInfo = $paymentInfoPanel.find(".billing-address");
+ $shippingInfo = $paymentInfoPanel.find(".shipping-address");
+ $paymentMethod = $paymentInfoPanel.find(".payment-method");
+ $shippingAddress = $paymentInfoPanel.find(".shipping-address-detail");
+ $shippingAsBilling = $paymentInfoPanel.find("#shipping-as-billing");
+ $orderContent = $orderPanel.find(".order-content");
+
+ if($screen.length == 0) throw "$screen must be specified";
+ if($navigation.length == 0) throw "$navigation must be specified";
+
+ initializeControls();
+
+ events();
+ }
+
+ this.initialize = initialize;
+
+ return this;
+ }
+})(window,jQuery);
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/client/checkout.css.scss b/web/app/assets/stylesheets/client/checkout.css.scss
index df6c71c1e..5e3128cf1 100644
--- a/web/app/assets/stylesheets/client/checkout.css.scss
+++ b/web/app/assets/stylesheets/client/checkout.css.scss
@@ -8,7 +8,7 @@
}
.nav-signin {
- margin-left: 5%;
+ margin-left: 30px;
}
.nav-text {
@@ -27,105 +27,6 @@
}
}
-.checkout-payment-info, .checkout-place-order {
-
- form.payment-info {
- width: 100%;
-
- input[type="text"] {
- width: 90%;
- }
-
- .billing-address {
- float: left;
- width: 50%;
-
- h2.billing-caption {
- margin: 20px 5px;
- font-size: 16px;
- }
-
- .billing-label {
- padding-top: 8px;
- width: 30%;
- float: left;
- text-align: right;
- margin-right: 5px;
- }
-
- .billing-value {
- width: 65%;
- text-align: left;
- float: left;
- }
- }
-
- .payment-method {
- float: left;
- width: 50%;
-
- h2.payment-method-caption {
- margin: 20px 5px;
- font-size: 16px;
- }
-
- .card-label {
- padding-top: 8px;
- width: 35%;
- float: left;
- text-align: right;
- margin-right: 5px;
- }
-
- .card-value {
- width: 60%;
- text-align: left;
- float: left;
- }
-
- .save-card-checkbox {
- float:left;
- display:block;
- margin-right:5px;
- }
- }
-
- .shipping-address {
- float: left;
- width: 50%;
-
- h2.shipping-address-label {
- margin: 20px 5px;
- font-size: 16px;
- }
-
- .shipping-as-billing {
- float:left;
- display:block;
- margin-right:5px;
- }
-
- .divBillingHelper {
- padding-top: 2px;
- }
-
- .shipping-label {
- padding-top: 8px;
- width: 30%;
- float: left;
- text-align: right;
- margin-right: 5px;
- }
-
- .shipping-value {
- width: 65%;
- text-align: left;
- float: left;
- }
- }
- }
-}
-
.thanks-panel {
padding: 30px;
diff --git a/web/app/assets/stylesheets/client/checkout_payment.css.scss b/web/app/assets/stylesheets/client/checkout_payment.css.scss
index e69de29bb..70c735815 100644
--- a/web/app/assets/stylesheets/client/checkout_payment.css.scss
+++ b/web/app/assets/stylesheets/client/checkout_payment.css.scss
@@ -0,0 +1,156 @@
+@import "client/common.css.scss";
+#checkoutPaymentScreen {
+
+ .payment-wrapper {
+ padding:10px 30px;
+ }
+
+ p {
+ font-size:12px;
+ margin:0;
+ }
+
+ .payment-prompt {
+ color:white;
+ line-height:125%;
+ }
+
+ h2 {
+ color:white;
+ background-color:#4d4d4d;
+ font-weight:normal;
+ margin: 0 0 30px 0;
+ font-size:14px;
+ padding-left:10px;
+
+ &.shipping-address-label {
+ //margin-top:10px;
+ }
+ }
+
+ .field {
+ margin-bottom:5px;
+ }
+
+ form.payment-info {
+ width: 100%;
+ display:block;
+ background-color:#262626;
+
+ input[type="text"] {
+ width: 90%;
+ }
+
+ .row {
+
+ margin-top:20px;
+ width:100%;
+ clear:both;
+ }
+ .left-side, .right-side {
+ float: left;
+ width: 50%;
+ @include border_box_sizing;
+ }
+
+ .left-side {
+ border-width:0 1px 0 0;
+ border-style:solid;
+ border-color:#333;
+ }
+
+ .jamkazam-account-signup {
+ .account-label {
+ padding-top: 4px;
+ width: 30%;
+ float: left;
+ text-align: left;
+ padding-left: 5px;
+ @include border_box_sizing;
+ }
+
+ .account-value {
+ width: 70%;
+ text-align: left;
+ float: left;
+ @include border_box_sizing;
+ }
+ }
+
+ .hint {
+ font-size:12px;
+ }
+ .billing-address {
+
+ .billing-label {
+ padding-top: 4px;
+ width: 35%;
+ float: left;
+ text-align: left;
+ padding-left: 5px;
+ @include border_box_sizing;
+ }
+
+ .billing-value {
+ width: 65%;
+ text-align: left;
+ float: left;
+ @include border_box_sizing;
+ }
+ }
+
+ .payment-method {
+
+
+ .card-label {
+ padding-top: 4px;
+ width: 35%;
+ float: left;
+ text-align: left;
+ padding-left: 5px;
+ @include border_box_sizing;
+ position:relative;
+ }
+
+ .card-value {
+ width: 65%;
+ text-align: left;
+ float: left;
+ @include border_box_sizing;
+ }
+
+ .save-card-checkbox {
+ float:left;
+ display:block;
+ margin-right:5px;
+ }
+ }
+
+ .shipping-address {
+
+ .shipping-as-billing {
+ float:left;
+ display:block;
+ margin-right:5px;
+ }
+
+ .divBillingHelper {
+ padding-top: 2px;
+ }
+
+ .shipping-label {
+ padding-top: 8px;
+ width: 30%;
+ float: left;
+ text-align: right;
+ margin-right: 5px;
+ }
+
+ .shipping-value {
+ width: 65%;
+ text-align: left;
+ float: left;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/client/client.css b/web/app/assets/stylesheets/client/client.css
index b43f7454f..73fbaf592 100644
--- a/web/app/assets/stylesheets/client/client.css
+++ b/web/app/assets/stylesheets/client/client.css
@@ -54,6 +54,7 @@
*= require ./shoppingCart
*= require ./checkout
*= require ./checkout_signin
+ *= require ./checkout_payment
*= require ./genreSelector
*= require ./sessionList
*= require ./searchResults
diff --git a/web/app/views/clients/_checkout_payment.html.slim b/web/app/views/clients/_checkout_payment.html.slim
index 9490df73c..6554a1564 100644
--- a/web/app/views/clients/_checkout_payment.html.slim
+++ b/web/app/views/clients/_checkout_payment.html.slim
@@ -5,88 +5,185 @@ div layout="screen" layout-id="checkout_payment" id="checkoutPaymentScreen" clas
h1 check out
= render "screen_navigation"
.content-body
+ #order_error.error.hidden
.content-body-scroller
- .checkout-signin
+ .content-wrapper
.checkout-navigation-bar
+ .payment-wrapper
+ p.payment-prompt
+ | Please enter you billing address and payment information below. You will not be billed for your first JamTrack, which is 100% free.
+ | But we need this data to prevent fraud/abuse of those who would create multiple accounts to collect multiple free JamTracks.
+ | You will not be billed for any charges of any kind without your explicit authorization.
+ | There are no "hidden" charges or fees, thank you!
- .content-holder
- .already-signed-in
- h3 YOU ARE ALREADY LOGGED IN
- p.carry-on-prompt
- | You can move on to the next step of checkout.
- .actions
- a.btnNext.button-orange NEXT
-
- .left-side
- h3 ALREADY A MEMBER OF THE JAMKAZAM COMMUNITY?
- .left-side-content
- .signin-form
- .signin-prompt Sign in using your email address:
- .clearall
- form.signin-form
- .input-elements
- .out
- label.inline Email:
- .email.field
- input name='email' autofocus="true" type="text"
- .out
- label.inline Password:
- .password.field
- input name='password' autofocus="true" type="password"
- .login-error-msg Invalid login
+ form class="payment-info" id="checkout-payment-info"
+ .row
+ .left-side
+ .billing-address
+ h2.billing-caption BILLING ADDRESS
+ #divBillingFirstName.field
+ .billing-label
+ label for="billing-first-name" First Name:
+ .billing-value
+ input type="text" id="billing-first-name"
+ .clearall
+ #divBillingLastName.field
+ .billing-label
+ label for="billing-last-name" Last Name:
+ .billing-value
+ input type="text" id="billing-last-name"
+ .clearall
+ #divBillingAddress1.field
+ .billing-label
+ label for="billing-address1" Address 1:
+ .billing-value
+ input type="text" id="billing-address1"
+ .clearall
+ #divBillingAddress2.field
+ .billing-label
+ label for="billing-address2" Address 2:
+ .billing-value
+ input type="text" id="billing-address2"
+ .clearall
+ #divBillingCity.field
+ .billing-label
+ label for="billing-city" City:
+ .billing-value
+ input type="text" id="billing-city"
+ .clearall
+ #divBillingState.field
+ .billing-label
+ label for="billing-state" State/Region:
+ .billing-value
+ input type="text" id="billing-state"
+ .clearall
+ #divBillingZip.field
+ .billing-label
+ label for="billing-zip" Zip:
+ .billing-value
+ input type="text" id="billing-zip"
+ .clearall
+ #divBillingCountry.field
+ .billing-label
+ label for="billing-country" Country:
+ .billing-value
+ input type="text" id="billing-country"
+ .clearall
+ .right-side
+ .payment-method
+ h2.payment-method-caption PAYMENT METHOD
+ #divCardName.field
+ .card-label
+ label for="card-name" Name of Card:
+ .card-value
+ input type="text" id="card-name"
+ .clearall
+ #divCardNumber.field
+ .card-label
+ label for="card-number" Card Number:
+ .card-value
+ input type="text" id="card-number"
+ .clearall
+ #divCardExpiry.field
+ .card-label Expiration Date:
+ .card-value
+ =date_select("card", "expire-date", use_two_digit_numbers: true, discard_day: true, :start_year => Time.now.year, :end_year => Time.now.year + 18, :order => [:month, :day, :year], :default => -25.years.from_now, :html => {:class => "account-profile-birthdate", :id => "card-expiry"})
+ .clearall
+ #divCardVerify.field
+ .card-label
+ label for="card-verify"
+ | CVV Code:
+ .hint.cvv
+ | (back-of-card)
+ .card-value
+ input type="text" id="card-verify"
+ .clearall
+ .card-label
+ .card-value
+ .save-card-checkbox.ichecbuttons
+ input type="checkbox" id="save-card" name="save-card" checked="checked"
+ .divSaveCardHelper
+ label for="save-card" Save card for future use
+ .clearall
+ .clearall
+ .clearall
+ .row
+ .left-side
+ .shipping-address
+ h2.shipping-address-label SHIPPING ADDRESS
+ .shipping-as-billing.ichecbuttons
+ input type="checkbox" id="shipping-as-billing" name="shipping-as-billing" checked="checked"
+ .divBillingHelper
+ label for="shipping-as-billing" Same as billing address
+ .clearall
+ .shipping-address-detail.hidden
+ #divShippingFirstName
+ .shipping-label
+ label for="shipping-first-name" First Name:
+ .shipping-value
+ input type="text" id="shipping-first-name"
+ .clearall
+ #divShippingLastName
+ .shipping-label
+ label for="shipping-last-name" Last Name:
+ .shipping-value
+ input type="text" id="shipping-last-name"
+ .clearall
+ #divShippingAddress1
+ .shipping-label
+ label for="shipping-address1" Address 1:
+ .shipping-value
+ input type="text" id="shipping-address1"
+ .clearall
+ .shipping-label
+ label for="shipping-address2" Address 2:
+ .shipping-value
+ input type="text" id="shipping-address2"
+ .clearall
+ #divShippingCity
+ .shipping-label
+ label for="shipping-city" City:
+ .shipping-value
+ input type="text" id="shipping-city"
+ .clearall
+ #divShippingState
+ .shipping-label
+ label for="shipping-state" State/Region:
+ .shipping-value
+ input type="text" id="shipping-state"
+ .clearall
+ #divShippingZip
+ .shipping-label
+ label for="shipping-zip" Zip:
+ .shipping-value
+ input type="text" id="shipping-zip"
+ .clearall
+ #divShippingCountry
+ .shipping-label
+ label for="shipping-country" Country:
+ .shipping-value
+ input type="text" id="shipping-country"
+ .clearall
+ .right-side
+ .jamkazam-account-signup
+ h2.jamkazam-account-caption JAMKAZAM ACCOUNT
+ #divJamKazamEmail.field
+ .account-label
+ label.account-label for="email" Email:
+ .account-value
+ input name="email" type="text"
+ #divJamKazamPassword.field
+ .account-label
+ label for="email" Password:
+ .account-value
+ input name="password" type="password"
+ .clearall
- br clear='all'
+ .clearall
+ .action-bar
- .actions
- small
- a.forgot-password href='/request_reset_password' Forgot Password?
- = link_to "SIGN IN", '#', class: 'button-orange signin-submit'
-
-
- p.facebook-prompt Or sign in using Facebook:
- = link_to image_tag("content/button_facebook_signin.png", {:width => 249, :height => 46}), '/auth/facebook', class: "signin-facebook"
- .right-side
- h3 NOT A MEMBER YET?
-
- p.signup-later-prompt
- | Thousands of musicians are now registered members of JamKazam. Click the NEXT button below to join us, and welcome!
-
- .actions
- a.btnNext.button-orange NEXT
-
-script type='text/template' id='template-checkout-navigation'
- .checkout-navigation
- .nav-signin
- = "{% if (data.current == 1) { %}"
- .nav-text.selected
- .badge-number 1
- | Sign In
- = "{% } else { %}"
- .nav-text
- .badge-number.disabled 1
- | Sign In
- = "{% } %}"
- .clearall
- .nav-payment-info
- = "{% if (data.current == 2) { %}"
- .nav-text.selected
- .badge-number 2
- | Address & Payment
- = "{% } else { %}"
- .nav-text
- .badge-number.disabled 2
- | Address & Payment
- = "{% } %}"
- .clearall
- .nav-place-order
- = "{% if (data.current == 3) { %}"
- .nav-text.selected
- .badge-number 3
- | Place Order
- = "{% } else { %}"
- .nav-text
- .badge-number.disabled 3
- | Place Order
- = "{% } %}"
- .clearall
+ .right
+ a href="#" id="payment-info-help" class="button-grey" HELP
+ a href="#" id="payment-info-next" class="button-orange" NEXT
+ .clearall
diff --git a/web/app/views/clients/index.html.erb b/web/app/views/clients/index.html.erb
index 7306acd61..82e1d18ba 100644
--- a/web/app/views/clients/index.html.erb
+++ b/web/app/views/clients/index.html.erb
@@ -40,6 +40,7 @@
<%= render "jamtrack" %>
<%= render "shopping_cart" %>
<%= render "checkout_signin" %>
+<%= render "checkout_payment" %>
<%= render "order" %>
<%= render "feed" %>
<%= render "bands" %>
@@ -239,8 +240,11 @@
var checkoutSignInScreen = new JK.CheckoutSignInScreen(JK.app);
checkoutSignInScreen.initialize();
- var OrderScreen = new JK.OrderScreen(JK.app);
- OrderScreen.initialize();
+ var checkoutPaymentScreen = new JK.CheckoutPaymentScreen(JK.app);
+ checkoutPaymentScreen.initialize();
+
+ // var OrderScreen = new JK.OrderScreen(JK.app);
+ // OrderScreen.initialize();
var findMusicianScreen = new JK.FindMusicianScreen(JK.app);
findMusicianScreen.initialize(JK.TextMessageDialogInstance);