Skip to content
This repository has been archived by the owner on Oct 8, 2019. It is now read-only.

Commit

Permalink
feat(Cream): #578 + new translations
Browse files Browse the repository at this point in the history
  • Loading branch information
Sjors authored Aug 29, 2016
1 parent 7a317a6 commit 441176d
Show file tree
Hide file tree
Showing 99 changed files with 3,448 additions and 196 deletions.
27 changes: 27 additions & 0 deletions Gruntfile.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,29 @@ module.exports = (grunt) ->
prefix = "ws://"
'customWebSocketURL = "' + prefix + @rootDomain + '/inv"'
}]
buy_sell_debug:
src: ['build/js/app.js'],
overwrite: true,
replacements: [{
from: 'buySellDebug = true'
to: () =>
if @rootDomain == null || @rootDomain == 'blockchain.info'
'buySellDebug = false'
else
'buySellDebug = true'
}]
buy_sell_coinify:
src: ['build/js/wallet.js'],
overwrite: true,
replacements: [{
from: 'partnerId = 18'
to: () =>
partnerId = 18
if @rootDomain == null || @rootDomain == 'blockchain.info'
partnerId = 19
console.log "Coinify partner ID: #{ partnerId }"
"partnerId = #{ partnerId }"
}]
api_domain:
src: ['build/js/wallet.js'],
overwrite: true,
Expand Down Expand Up @@ -564,6 +587,8 @@ module.exports = (grunt) ->
# Web socket URL will default to wss://blockchain.info/inv
# Web sockets currently don't work on our Tor site
# "replace:web_socket_url"
"replace:buy_sell_debug"
"replace:buy_sell_coinify"
]
else
console.log("Root domain: " + rootDomain)
Expand All @@ -572,6 +597,8 @@ module.exports = (grunt) ->
grunt.task.run [
"replace:root_url"
"replace:web_socket_url"
"replace:buy_sell_debug"
"replace:buy_sell_coinify"
]

if apiDomain
Expand Down
2 changes: 1 addition & 1 deletion app/index.jade
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
doctype
<!-- @if !PRODUCTION --><html lang='en' ng-app='walletApp' ng-init="autoReload=#{ process.env.AUTO_RELOAD || false }; rootURL='#{ process.env.ROOT_URL }/'; webSocketURL='#{ process.env.WEBSOCKET_URL }'; apiDomain='#{ process.env.API_DOMAIN }/';" ng-csp ng-class="{'not-fixed': outOfApp}"><!-- @endif -->
<!-- @if !PRODUCTION --><html lang='en' ng-app='walletApp' ng-init="autoCreate='#{ process.env.AUTO_CREATE || false }'; autoReload=#{ process.env.AUTO_RELOAD || false }; rootURL='#{ process.env.ROOT_URL }/'; webSocketURL='#{ process.env.WEBSOCKET_URL }'; apiDomain='#{ process.env.API_DOMAIN }/';" ng-csp ng-class="{'not-fixed': outOfApp}"><!-- @endif -->
<!-- @if PRODUCTION !><html lang='en' ng-app='walletApp' ng-csp ng-class="{'not-fixed': outOfApp}"><!-- @endif -->
head
meta(charset='utf-8')
Expand Down
10 changes: 10 additions & 0 deletions app/partials/buy-accept-terms.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
form.clearfix(name="signupForm" role="form" novalidate)
label.em-500.flex-start.pts Coinify account terms:
p.mvl(translate="PARTNER" translate-values="{partner: partner, email: user.email}")
div
input(type="checkbox" checked id="tos" name="tos" ng-model="fields.acceptTOS" ng-disabled="rejectedEmail" required)
label.mlm.em-400(translate="ACCEPT_PARTNER_TOS_PRIVACY" translate-values="{partner: partner}" for="tos")
.flex-baseline.mtl(ng-show="rejectedEmail")
i.ti-alert.sent.mrs.type-h4
span.sent.mrs(translate="EMAIL_IN_USE" translate-values="{email: user.email}")
span.blue.pointer(translate="CLICK_TO_CHANGE" ng-click="nextStep();")
30 changes: 30 additions & 0 deletions app/partials/buy-amount.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
form(name="buyAmount")
div
label.em-500.flex-start.pts Choose amount to exchange:
.flex-1.mvl
section.input-group
input.form-control(
type="number"
ng-model="transaction.fiat"
name="fiat"
tabindex="1"
focus-when="onStep('amount')"
ng-model-options="{debounce: 250}"
ng-change="changeCurrency(transaction.currency)"
placeholder="0"
min="0"
max="2100000000000000"
required
)
div.input-group-btn(uib-dropdown uib-keyboard-nav-style)
button.btn.btn-default.dropdown-toggle(type="button" uib-dropdown-toggle aria-haspopup="true")
span {{ transaction.currency.code }}
span.caret
ul.uib-dropdown-menu.dropdown-menu.currency-dropdown(role="menu")
li(ng-repeat="currency in currencies"
role="menuitem"
ng-click="changeCurrency(currency);"
ng-class="{active: isCurrencySelected(currency)}")
a(ng-click="$event.preventDefault()") {{ currency.code }}
.clearfix.mtm
span.display-inline-block.pull-right.mbn.mts.pointer.blue.type-sm.underline(translate="CANT_FIND_CURRENCY" uib-tooltip="{{'CURRENCY_COMING_SOON' | translate}}" tooltip-placement="top")
17 changes: 17 additions & 0 deletions app/partials/buy-email.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
div
div(ng-hide="editEmail || rejectedEmail")
label.em-500.flex-start.pts Verify email:
p.mvl
span(translate="SENT_VERIFICATION" translate-values="{email: user.email}")
.flex-column
div
span.flex-center.pointer(translate="CHANGE_EMAIL" ng-click="toggleEmail()")
form.clearfix(name="emailForm" ng-show="editEmail || rejectedEmail")
bc-async-input(type="email"
is-required
ng-model="user.email"
on-cancel="toggleEmail"
on-save="changeEmail"
action-title="'CHANGE' | translate"
inline
editing="true")
92 changes: 92 additions & 0 deletions app/partials/buy-modal.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#buy(ng-class="{rendered:rendered}")
.modal-header.bc-modal-header.flex-between.flex-center
.flex-column.flex-1
.flex-row.flex-between.flex-center
h3(translate="BUY_BITCOIN")
.flex-column.flex-align-end(ng-show="status.gettingQuote")
img(src="img/spinner.gif")
.flex-column.flex-align-end(ng-hide="status.gettingQuote")
span.type-h5.em-400(ng-show="transaction.btc !== 0 && !trade") {{ transaction.btc }}
span.type-h5.em-400(ng-show="trade") {{ expiredQuote ? btcExpected : trade.outAmountExpected }} BTC
quote-countdown(quote="quote" trade-created-at="trade.createdAt" expired-quote="expiredQuote" ng-class="{'fade': afterStep('trade-complete') || getMethod().inMedium === 'bank' || expiredQuote || (!trade && !quote.id) }")
p.security-red.pointer(ng-show="buySellDebug && quote.id")
i.ti-search.mrm.right-align(ng-click="expireQuote()") QA: Now
buy-steps(transaction="transaction"
on-step="onStep"
get-method="getMethod"
after-step="afterStep"
before-step="beforeStep"
payment-info="paymentInfo"
exchange-acct="userHasExchangeAcct"
currency-symbol="currencySymbol"
trade-error="formattedTrade.error"
exchange="exchange"
trade-obj="trade"
partner="partner"
fields="fields"
step="step")
.modal-body.fade.flex-center.flex-justify(class="{{isxStep}}" ng-class="{'summary': onStep('summary'),'isx': onStep('trade-formatted', 'trade-complete') && (trade.medium === 'card' || !trade.medium), 'bank-account': onStep('trade-formatted', 'trade-complete') && trade.medium === 'bank'}")
.alert-in-app
alerts(context="alerts")
div.width-80(ng-show="onStep('amount')")
include ./buy-amount
div.width-80(ng-show="onStep('select-country')" ng-controller="BuySelectCountryCtrl")
include ./buy-select-country
div.width-80(ng-show="onStep('email')")
include ./buy-email
div.width-80(ng-show="onStep('accept-terms')")
include ./buy-accept-terms
div.width-80(ng-show="onStep('select-payment-method')")
include ./buy-select-payment-method
div.width-80(ng-show="onStep('summary')" ng-controller="BuySummaryCtrl")
include ./buy-summary
div(ng-show="onStep('trade-formatted', 'trade-complete')")
div.iframe(ng-if="!trade.medium || trade.medium === 'card'")
isignthis(transaction-id='trade.iSignThisID' on-load="loadPayment()" on-declined="declinedTx(tx)" on-pending="pendingTx(tx)" on-review="reviewTx(tx)" on-expired="expiredTx(tx)" on-failed="failedTx(tx)" payment-info="paymentInfo" on-resize="onResize(step)")
div.width-80.margin-0-auto(ng-if="trade.medium === 'bank'")
bank-account(transaction="trade" on-load="loadPayment()" pending-tx="pendingTx")
div.width-80(ng-if="onStep('pending')")
include ./trade-summary
div.width-80(ng-if="onStep('success')")
include ./trade-summary
.flex-end.flex-center.mtl.coinify-logo(ng-hide="afterStep('summary')")
span.pos-rel
span.mrs.type-sm Powered by
a(href="https://www.coinify.com/" target="_blank" rel="noopener noreferrer")
img(src="img/coinify-logo.svg")
span.pos-abs.fade.height-100.width-100(ng-show="onStep('summary')" uib-tooltip="{{'PROCESSED_BY_EXCHANGE' | translate}}" translate="placeholder" tooltip-append-to-body="true")
//- needs directive
.modal-footer.flex-end.flex-row
button.button-muted(ng-show="afterStep('amount') && beforeStep('trade-formatted')" ng-click="prevStep()") Go Back

.flex-1.flex-end(ng-hide="status.loading")
button.button-muted.mrm(ng-click="close()" translate="CANCEL_ORDER" ng-hide="afterStep('summary')")
button.button-muted.mrm(ng-click="close(true)" translate="FINISH_LATER" ng-show="onStep('trade-formatted', 'trade-complete')")
button.button-muted.mrm(ng-click="cancel()" translate="CANCEL" ng-show="afterStep('pending')")
div(ng-hide="afterStep('summary')")
button.button-primary(
ladda-translate="CONTINUE"
ng-click="nextStep()"
data-style="expand-left"
ui-ladda="status.waiting"
ng-disabled="isDisabled() || onStep('email')"
ng-hide="afterStep('select-payment-method') || onStep('accept-terms')")
button.button-primary(
ladda-translate="CONTINUE"
ng-click="signup()"
data-style="expand-left"
ui-ladda="status.waiting"
ng-disabled="isDisabled()"
ng-show="onStep('accept-terms')")
button.button-primary(
ladda-translate="CONFIRM"
ng-click="buy()"
data-style="expand-left"
ui-ladda="status.waiting"
ng-disabled="isDisabled() || fiatFormInvalid"
ng-show="onStep('summary')")
div(ng-show="onStep('pending')")
button.button-danger(translate="TRY_AGAIN" ng-click="initBuy()" ng-show="formattedTrade.error")
button.button-success(translate="CLOSE" ng-click="cancel()" ng-hide="formattedTrade.error")
div(ng-show="onStep('success')")
button.button-success(translate="SEE_BITCOIN" ng-click="cancel()" ui-sref="wallet.common.transactions")
15 changes: 15 additions & 0 deletions app/partials/buy-select-country.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.phvl.ph-form
.form-group.row.flex-justify
label.em-500.flex-start.pts(translate="Select country of residence:")
.flex-1.mvl
ui-select(ng-model="fields.countryCode" tagging)
ui-select-match(placeholder="{{'SEARCH' | translate}}...")
span {{ $select.selected['Name'] }}
ui-select-choices(repeat="country['Code'] as country in countries.countryCodes | filter: $select.search")
span(ng-bind-html="country['Name']")
.clearfix.mtm
span.display-inline-block.pull-right.pointer.blue.type-sm.underline(translate="CANT_FIND_COUNTRY" uib-tooltip="{{'COUNTRY_COMING_SOON' | translate}}" tooltip-placement="top")

.flex-baseline.row.mtl(ng-show="isCountryBlacklisted")
i.ti-alert.sent.mrs.type-h4
span.sent.mrs(translate="BLACKLISTED_COUNTRY")
32 changes: 32 additions & 0 deletions app/partials/buy-select-payment-method.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
.payment-methods.ptl
label.em-500.flex-start.pts Select your preferred payment method:
.flex-row.flex-center.pbs.pointer.mtml
input.man(type="radio" name="inMedium" id="card" ng-model="method" value="card" ng-disabled="status.waiting")
.flex-column.flex-1.mlm.pointer
label.mts.pointer.em-400(for="card")
.flex-row.flex-center
span
img.mrm(src="img/credit-card.png")
img.mrm.checked(src="img/credit-card-blue.png")
.flex-column
span.type-h5.em-400(translate="Credit/Debit Card")
span.flex-row
span.em-300(translate="CARD_TRANSFER.TITLE")
helper-button(content="CARD_TRANSFER.COPY")
.flex-row.flex-center.pvs.pointer
input.man(type="radio" name="inMedium" id="bank" ng-model="method" value="bank" ng-disabled="status.waiting")
.flex-column.flex-1.mlm.pointer
label.mts.pointer.em-400(for="bank")
.flex-row.flex-center
span
img.mrm(src="img/bank.png")
img.mrm.checked(src="img/bank-blue.png")
.flex-column
span.type-h5.em-400(translate="Bank Transfer")
span.flex-row
span.em-300(translate="BANK_TRANSFER.TITLE")
helper-button(content="BANK_TRANSFER.COPY")
.flex-row.mbl.pvs
.mam
.mlm.blue.width-70.type-sm(ng-hide="exchange.profile.level.name >= 2 || method !== 'bank'")
label.em-400(translate="VERIFY_ID_NOTE")
30 changes: 30 additions & 0 deletions app/partials/buy-sell.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#buysell.buy-sell(ng-class="{'height-100': status.loading}")
.flex-column.flex-justify.flex-center.height-100(ng-if="status.loading")
span.type-h4.center Getting information from your exchange partner. This could take a few seconds.
img.width-60.width-60-mobile.mtl(src="img/money.gif")
div(ng-if="!status.loading")
.flex-row
span.type-h5.pointer(translate="Buy Bitcoin" ng-class="{'underline-blue': state.buy}" ng-click="state.buy = true")
span.type-h5.mlml.o-3.pointer(translate="Sell Bitcoin" ng-class="{'underline-blue': !state.buy}" uib-tooltip="Coming Soon!" tooltip-append-to-body="true")
.flex-row.flex-column-tablet
.width-50.mrl(ng-show="state.buy")
buy-quick-start(transaction="transaction"
currency-symbol="currencySymbol"
change-currency="changeCurrency(currency)"
limits="limits"
buy="buy(amt)")
.flex-column.width-50.mlvl.mtml
div(ng-hide="trades.pending.length || trades.completed.length || (kyc && kyc.state !== 'completed')")
.font-2.blue.em-300.lh1(translate="Simple. Secure. Seamless.")
.type-h4.em-300.mtm.basic-grey(translate="The world's most popular bitcoin wallet <br> now lets you buy bitcoin securely in 4 <br> easy steps.")
kyc-status(ng-if="showKycStatus()" state="kyc.state" on-trigger="openKyc()" limits="limits")
.flex-column.mtl(ng-show="trades.pending.length || trades.completed.length")
.flex-row.flex-between.flex-center
h4.type-h4(translate="Order History")
span Coinify Account: {{ exchange.profile.email }}
table.width-100.mbvl
tr.border.bg-light-blue
th.phml.pvs Status
th.phml.pvs Date
th.phml.right-align.pvs Amount
tr(ng-repeat="trade in trades.pending.concat(trades.completed) | orderBy:'createdAt':true" trade="trade" buy="buy(amt, trade, 'active-tx')")
57 changes: 57 additions & 0 deletions app/partials/buy-summary.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
.flex-column.mbvl
label.em-500.flex-start.pts Confirm your order:
p.mvm
span(translate="ORDER_CONFIRMATION_COPY")
.flex-center.mtl(ng-show="(tempFiatForm.fiat.$error.max || tempFiatForm.fiat.$error.min) && !needsKyc()")
i.ti-alert.state-danger-text.mrs.type-h4
span.state-danger-text.mrs(ng-show="tempFiatForm.fiat.$error.max" translate="MAX_LIMIT_EXCEEDED" translate-values="{code: tempCurrency.code, available: limits.available}")
span.state-danger-text.mrs(ng-show="tempFiatForm.fiat.$error.min" translate="BELOW_MIN_LIMIT" translate-values="{code: tempCurrency.code, min: limits.min}")
.flex-end.mbs
span.type-sm.blue.underline.pointer(ng-click="toggleEditAmount()" ng-hide="editAmount") Edit Order
span.type-sm.blue.underline.pointer(ng-click="cancel()" ng-show="editAmount") Cancel
.border.pam(ng-class="{'bg-light-grey': editAmount}")
.flex-row.flex-between.pam.border-bottom-light
span(translate="BTC Order:")
span.success(uib-tooltip="{{'RECEIVE_BITCOIN_TO' | translate:{label: label} }}") {{ transaction.btc }}
.flex-row.flex-between.pam.pos-rel
span(translate="AMOUNT")
span(ng-hide="editAmount") {{ transaction.fiat | format }} {{ transaction.currency.code }}
form.input-group.width-60.flex-row.flex-center.amount-input(
name="tempFiatForm"
ng-submit="commitValues()"
ng-show="editAmount")
span.type-sm.blue.underline.pointer.mrm(
ng-disabled="tempFiatForm.$invalid"
ng-show="editAmount"
ng-class="{'o-3': tempFiatForm.fiat.$invalid}"
ng-click="commitValues()"
translate="Update")
.flex-row.flex-center.width-100
input.form-control(
type="number"
ng-model="tempFiat"
ng-change="setParentError()"
name="fiat"
tabindex="1"
focus-when="editAmount"
placeholder="Enter an amount"
min="{{!needsKyc() ? limits.min : 1}}"
max="{{!needsKyc() ? limits.available : 1000}}"
step="0.01"
required)
div.input-group-btn(uib-dropdown uib-keyboard-nav-style)
button.btn.btn-default.dropdown-toggle(type="button" uib-dropdown-toggle aria-haspopup="true")
span {{ tempCurrency.code }}
span.caret
ul.uib-dropdown-menu.dropdown-menu.currency-dropdown(role="menu")
li(ng-repeat="currency in currencies"
role="menuitem"
ng-click="changeTempCurrency(currency);"
ng-class="{active: isCurrencySelected(currency)}")
a(ng-click="$event.preventDefault()") {{ currency.code }}
.flex-row.flex-between.pam.border-bottom-light
span Fee:
span {{ transaction.methodFee | format }} {{ transaction.currency.code }}
.flex-row.flex-between.pam
span.em-500 Total Cost:
span {{ currencySymbol.symbol }}{{ transaction.total | format }} {{ transaction.currency.code }}
19 changes: 19 additions & 0 deletions app/partials/isignthis-modal.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.modal-header.bc-modal-header.flex-between.flex-center
.flex-column.width-100
.flex-row.flex-between.flex-center
h3(translate="Buy Bitcoin")
quote-countdown(quote="quote" get-quote="cancel()")
div(ng-click="back()")
buy-steps(exchange-acct="userHasExchangeAcct"
transaction="transaction"
step="step"
currency-symbol="currencySymbol"
profile="profile"
exchange="exchange"
partner="partner"
method="method")
.modal-body
isignthis(transaction-id='trade.iSignThisID')
.modal-footer.flex-between
span(ng-show="showReceiveAddress") Receive Address: {{ receiveAddress }}
button.button-muted.mrm(ng-click="close(true)" translate="CLOSE")
6 changes: 3 additions & 3 deletions app/partials/modal-confirm.jade
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.modal-body(translate-namespace="{{::namespace}}")
h4
i.ti-alert.security-red.mrs
i.security-red.mrs(ng-class="{'{{iconClass}}': iconClass, 'ti-alert': !iconClass, success: success}")
span(translate=".TITLE")
p.em-300.ptm(translate=".BODY" translate-values="::values")
ul.em-300(ng-if="props")
Expand All @@ -9,8 +9,8 @@
| :&nbsp;
b(ng-bind="::val")
.modal-footer
button.button-muted(ng-click="$dismiss('cancelled')" translate="CANCEL")
button.button-muted(ng-click="$dismiss('cancelled')" translate="{{::cancel || 'CANCEL'}}")
button.btn(
ng-class="::'button-' + (friendly ? 'primary' : 'danger')"
ng-class="{'button-primary': friendly, 'button-success': success, 'button-danger': !friendly && !success}"
ng-click="$close()"
translate="{{::action || 'OK'}}")
Loading

0 comments on commit 441176d

Please sign in to comment.