build(www): rename public directory to www

This commit is contained in:
Jason Dreyzehner 2016-10-06 00:26:57 -04:00
commit de6e8062d5
367 changed files with 1 additions and 1 deletions

View file

@ -0,0 +1,105 @@
<ion-modal-view ng-controller="amazonCardDetailsController">
<ion-header-bar align-title="center" class="bar-royal">
<button class="button button-back button-clear" ng-click="cancel()">
Close
</button>
<h1 class="title">Details</h1>
</ion-header-bar>
<ion-content>
<div class="header-modal text-center">
<img src="img/a_generic.jpg" alt="Amazon.com Gift Card" width="230" ng-click="refreshGiftCard()">
<div ng-show="card.claimCode">
<div class="m10t">
Gift Card Amount:
<span class="text-bold">
{{card.amount | currency : '$ ' : 2}}
</span>
</div>
<div ng-show="card.cardStatus !== 'Canceled'">
Claim code: <span class="text-bold" copy-to-clipboard="card.claimCode">{{card.claimCode}}</span>
</div>
<div class="m10t" ng-show="card.cardStatus == 'Fulfilled'">
<button class="button button-positive"
ng-click="openExternalLink('https://www.amazon.com/gc/redeem?claimCode=' + card.claimCode, '_system')">
Redeem Now
</button>
</div>
<div class="m10t" ng-show="card.cardStatus == 'Canceled'">
<div class="m10t">
Status:
<span class="text-bold">
CANCELED
</span>
</div>
</div>
</div>
<div ng-show="!card.claimCode">
<div class="m10t">
Status:
<span class="text-bold" ng-show="card.status == 'PENDING'">
PENDING
</span>
<span class="text-bold" ng-show="card.status == 'FAILURE' || card.status == 'RESEND'">
FAILURE
</span>
</div>
</div>
<div class="m10t text-center">
<a class="button button-clear button-calm" ng-click="openExternalLink(card.invoiceUrl)">See invoice</a>
</div>
</div>
<div class="box-notification warning" ng-show="card.status == 'FAILURE' || card.status == 'RESEND'">
There was a failure to the create gift card. Please, contact BitPay support.
</div>
<div class="oh m20t size-12 p15h" ng-show="card.claimCode && card.cardStatus == 'Fulfilled'">
To redeem your gift card, follow these steps:
<ol class="m10t size-12">
<li>1. Visit <a ng-click="openExternalLink('https://www.amazon.com/gc')">www.amazon.com/gc</a>
<li>2. Click Apply to Account and enter the Claim Code when prompted.
<li>3. Gift card funds will be applied automatically to eligible orders during the checkout process.
<li>4. You must pay for any remaining balance on your order with another payment method.
</ol>
<p class="size-12">
Your gift card claim code may also be entered when prompted during checkout. To redeem your gift card using
the Amazon.com 1-Click&reg; service, first add the gift card funds to Your Account.
</p>
<p class="size-12">
If you have questions about redeeming your gift card, please visit
<a ng-click="openExternalLink('https://www.amazon.com/gc-redeem')">www.amazon.com/gc-redeem</a>.
If you have questions regarding the BitPay Introductory offer, please contact BitPay.
</p>
</div>
<div class="size-12 p15 m30v">
* <a ng-click="openExternalLink('http://amazon.com')">Amazon.com</a> is not a sponsor of this promotion.
Except as required by law, <a ng-click="openExternalLink('http://amazon.com')">Amazon.com</a>
Gift Cards ("GCs") cannot be transferred for value or redeemed for cash. GCs may be used only for purchases of
eligible goods at <a ng-click="openExternalLink('http://amazon.com')">Amazon.com</a> or certain of its
affiliated websites. For complete terms and conditions, see
<a ng-click="openExternalLink('https://www.amazon.com/gc-legal')">www.amazon.com/gc-legal</a>.
GCs are issued by ACI Gift Cards, Inc., a Washington corporation. All Amazon &reg;, &trade; &amp; &copy; are IP
of <a ng-click="openExternalLink('http://amazon.com')">Amazon.com</a>, Inc. or its affiliates.
No expiration date or service fees.
</div>
<div class="list text-center">
<a class="item" ng-show="card.status == 'SUCCESS' && card.cardStatus == 'Fulfilled'" ng-click="cancelGiftCard()">
<span class="assertive">Cancel</span>
</a>
<a class="item" ng-show="card.status == 'FAILURE' || card.cardStatus == 'Canceled'
|| card.cardStatus == 'Expired'" ng-click="remove()">
<span class="assertive">Remove</span>
</a>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,20 @@
<ion-modal-view>
<ion-content ng-controller="bitpayCardConfirmationController">
<div class="text-center">
<h1 class="text-center m20b p20h">Are you sure you would like to log out of your Bitpay Card account?</h1>
<p class="text-gray p20h">You will need to log back for fill in your Bitpay Card.</p>
<div class="row">
<div class="col">
<button class="button button-block button-stable" ng-click="cancel()">
Cancel
</button>
</div>
<div class="col">
<button class="button button-block button-assertive" ng-click="ok()">
<span>Log out</span>
</button>
</div>
</div>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,18 @@
<ion-modal-view ng-controller="coinbaseConfirmationController">
<div class="m20tp text-center">
<div class="row">
<h1 class="text-center m20b p20h">Are you sure you would like to log out of your Coinbase account?</h1>
<p class="text-gray p20h">You will need to log back in to buy or sell bitcoin in Copay.</p>
<div class="large-6 medium-6 small-6 columns">
<button class="button light-gray expand outline round" ng-click="cancel()">
<i class="fi-arrow-left"></i> <span class="tu">Back</span>
</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<button class="button warning expand round" ng-click="ok()">
<span>Log out</span>
</button>
</div>
</div>
</div>
</ion-modal-view>

View file

@ -0,0 +1,104 @@
<ion-modal-view ng-controller="coinbaseTxDetailsController">
<ion-header-bar align-title="center" class="tab-bar" ng-style="{'background-color': '#2b71b1'}">
<div class="left-small">
<a ng-click="cancel()">
<i class="icon-arrow-left3 icon-back"></i>
<span class="text-back">Back</span>
</a>
</div>
<h1 class="title ellipsis" translate>Details</h1>
</ion-header-bar>
<ion-content>
<div class="fix-modals-touch">
<div class="header-modal bg-gray text-center">
<div class="p20">
<img src="img/bought.svg" alt="bought" width="65" ng-show="(tx.type == 'buy' || (tx.type == 'send' && tx.to)) && tx.status == 'completed'">
<img src="img/bought-pending.svg" alt="bought" width="65"
ng-show="(tx.type == 'buy' || (tx.type == 'send' && tx.to)) && tx.status != 'completed'">
<img src="img/sold.svg" alt="bought" width="65" ng-show="tx.type == 'sell' && tx.status == 'completed'">
<img src="img/sold-pending.svg" alt="bought" width="65"
ng-show="(tx.type == 'sell' || (tx.type == 'send' && tx.from)) && tx.status != 'completed'">
</div>
<div ng-show="tx.status == 'completed'">
<span ng-show="tx.type == 'buy' || tx.type == 'send'">Bought</span>
<span ng-show="tx.type == 'sell'">Sold</span>
</div>
<div ng-show="tx.type == 'send' && (tx.to || tx.from) && tx.status != 'completed'">
<span ng-show="tx.to">Receiving purchased bitcoin</span>
<span ng-show="tx.from">Sending bitcoin to sell</span>
</div>
<div ng-show="(tx.type == 'sell' || tx.type == 'buy') && tx.status != 'completed'">
<span ng-show="tx.type == 'buy'">Buying bitcoin</span>
<span ng-show="tx.type == 'sell'">Selling bitcoin</span>
</div>
<div class="size-24 text-bold">
<span ng-if="tx.type == 'sell' || (tx.type == 'send' && tx.from)">-</span>{{tx.amount.amount.replace('-','')}}
{{tx.amount.currency}}
</div>
<div class="label gray radius m10b">
<span ng-if="tx.type == 'sell' || (tx.type == 'send' && tx.from)">-</span>{{tx.native_amount.amount.replace('-','')}}
{{tx.native_amount.currency}}
</div>
</div>
<div class="m20b box-notification" ng-show="tx.error">
<ul class="no-bullet m0 text-warning size-12">
<li ng-repeat="err in tx.error.errors" ng-bind-html="err.message"></li>
</ul>
</div>
<ul class="no-bullet size-14">
<li ng-show="tx.details && tx.status != 'pending'" class="line-b p10 oh">
<span class="text-gray">{{tx.details.title}}</span>
<span class="right">{{tx.details.subtitle}}</span>
</li>
<li class="line-b p10 oh">
<span class="text-gray">Status</span>
<span class="text-success right" ng-if="tx.status == 'completed'">Completed</span>
<span class="text-info right" ng-if="tx.status == 'pending'">Pending</span>
<span class="text-warning right" ng-if="tx.status == 'error'">Error</span>
</li>
<li ng-show="tx.created_at" class="line-b p10 oh">
<span class="text-gray">Date</span>
<span class="right">{{tx.created_at | amCalendar}}</span>
</li>
<li ng-show="tx.price_sensitivity" class="line-b p10 oh">
<span class="text-gray">Price Sensitivity</span>
<span class="right">{{tx.price_sensitivity.name}}</span>
</li>
<li ng-show="tx.sell_price_amount" class="line-b p10 oh">
<span class="text-gray">Sell Price</span>
<span class="right">{{tx.sell_price_amount}} {{tx.sell_price_currency}}</span>
</li>
<li ng-show="tx.description" class="line-b p10 oh">
<span class="text-gray" ng-show="tx.from && tx.type == 'send'">Sent bitcoin from</span>
<span class="text-gray" ng-show="tx.to && tx.type == 'send'">Receive bitcoin in</span>
<span class="right text-bold">{{tx.description}}</span>
</li>
</ul>
<div class="row m20t" ng-show="tx.status == 'error'">
<div class="columns">
<p class="text-center size-12 text-gray">
This action will remove the transaction.
</p>
<button class="button outline round dark-gray expand tiny"
ng-click="remove()">
<i class="fi-x"></i>
Remove
</button>
</div>
</div>
<div class="extra-margin-bottom"></div>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,18 @@
<ion-modal-view ng-controller="confirmationController">
<div class="m20tp text-center">
<div class="row">
<h1 class="text-center m20b p20">{{title|translate}}</h1>
<div class="large-6 medium-6 small-6 columns">
<button class="button warning expand round" ng-disabled="loading" ng-click="ok()">
<i class="fi-trash"></i> <span translate>Yes</span>
</button>
</div>
<div class="large-6 medium-6 small-6 columns">
<button class="button light-gray expand outline round" ng-disabled="loading"
ng-click="cancel()">
<i class="fi-x"></i> <span class="tu" translate>Cancel</span>
</button>
</div>
</div>
</div>
</ion-modal-view>

View file

@ -0,0 +1,88 @@
<ion-modal-view ng-controller="customAmountController">
<ion-header-bar align-title="center" class="tab-bar" ng-style="{'background-color':color}">
<div class="left-small">
<a ng-click="cancel()" class="p10">
<span class="text-close" translate>Close</span>
</a>
</div>
<h1 class="title ellipsis" translate>Request a specific amount</h1>
</ion-header-bar>
<ion-content ng-style="{'background-color': '#f6f7f9'}">
<div class="fix-modals-touch">
<div class="m20b" ng-show="customizedAmountBtc">
<h4 class="title m0" translate>QR Code</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10 oh text-center">
<qrcode size="220" data="bitcoin:{{addr + '?amount=' + customizedAmountBtc}}"></qrcode>
<div class="m10t text-center" ng-show="isCordova">
<span class="button outline dark-gray tiny round"
ng-click="shareAddress('bitcoin:' + addr + '?amount=' + customizedAmountBtc)">
<i class="fi-share"></i>
<span translate>Share address</span>
</span>
</div>
</li>
</ul>
<h4 class="title m0" translate>Details</h4>
<ul class="no-bullet size-14 m0">
<li class="line-b p10 oh">
<span class="text-gray" translate>Address</span>:
<span class="right">
<span class="text-gray enable_text_select">{{addr}}</span>
</span>
</li>
<li class="line-b p10 oh">
<span class="text-gray" translate>Amount</span>:
<span class="right">
{{customizedAmountUnit}}
<span class="label gray radius">{{customizedAlternativeUnit}}</span>
</span>
</li>
</ul>
</div>
<div ng-show="!customizedAmountBtc" class="row m20t">
<div class="large-12 large-centered columns">
<form name="amountForm" ng-submit="submitForm(amountForm)" novalidate>
<div class="right" ng-hide="amountForm.amount.$pristine && !amountForm.amount.$modelValue ">
<span class="has-error right size-12" ng-if="amountForm.amount.$invalid">
<i class="icon-close-circle size-14"></i>
<span clas="vm" translate>Not valid</span>
</span>
<small class="text-primary right" ng-if="!amountForm.amount.$invalid">
<i class="icon-checkmark-circle size-14"></i>
</small>
</div>
<div ng-show="!showAlternative">
<label for="amount">
<span translate>Amount</span>
</label>
<div class="input">
<input type="number" id="amount" name="amount" ng-attr-placeholder="{{'Amount in'|translate}} {{unitName}}" ignore-mouse-wheel
ng-model="_customAmount" ng-minlength="0.00000001" ng-maxlength="10000000000" valid-amount required autocomplete="off">
<input type="number" id="alternative" name="alternative" ng-model="_customAlternative" style="display:none">
<a class="postfix button" ng-style="{'background-color':color}" ng-click="toggleAlternative()">{{unitName}}</a>
</div>
</div>
<div ng-show="showAlternative">
<label for="alternative"><span translate>Amount</span> [{{ alternativeIsoCode }}]
</label>
<div class="input">
<input type="number" id="alternative" name="alternative" ng-attr-placeholder="{{'Amount in'|translate}} {{alternativeName}}" ignore-mouse-wheel
ng-model="_customAlternative" required autocomplete="off" required>
<input type="number" id="amount" name="amount" ng-model="_customAmount" style="display:none">
<a class="postfix button black" ng-click="toggleAlternative()"> {{ alternativeIsoCode }}</a>
</div>
</div>
<button type="submit" class="button black round expand" ng-disabled="amountForm.$invalid" ng-style="{'background-color':color}" translate>
Generate QR Code
</button>
</form>
</div>
</div>
</div>
</ion-content>
</ion-view-modal>

View file

@ -0,0 +1,63 @@
<ion-modal-view ng-controller="glideraTxDetailsController">
<ion-header-bar class="bar-royal">
<button class="button button-back button-clear"
ng-click="cancel()">
Close
</button>
<h1 class="title">Details</h1>
</ion-header-bar>
<ion-content>
<div class="text-center">
<div class="p20">
<img src="img/bought.svg" alt="bought" width="80" ng-show="tx.type == 'BUY' && tx.status == 'COMPLETE'">
<img src="img/bought-pending.svg" alt="bought" width="65" ng-show="tx.type == 'BUY' && tx.status == 'PROCESSING'">
<img src="img/sold.svg" alt="bought" width="80" ng-show="tx.type == 'SELL' && tx.status == 'COMPLETE'">
<img src="img/sold-pending.svg" alt="bought" width="65" ng-show="tx.type == 'SELL' && tx.status == 'PROCESSING'">
</div>
<span ng-show="tx.type == 'BUY'">Bought</span>
<span ng-show="tx.type == 'SELL'">Sold</span>
<b>{{tx.qty}}</b> BTC
<div class="size-36 m20v">
{{tx.subtotal|currency:'':2}} {{tx.currency}}
</div>
</div>
<ul class="list">
<li class="item">
Status
<span class="item-note">
<span class="text-success" ng-if="tx.status == 'COMPLETE'">Completed</span>
<span class="text-info" ng-if="tx.status == 'PROCESSING'">Processing</span>
<span class="text-warning" ng-if="tx.status == 'ERROR'">Error</span>
</span>
</li>
<li ng-show="tx.transactionDate" class="item">
Date
<span class="item-note">{{tx.transactionDate | amCalendar}}</span>
</li>
<li ng-show="tx.price" class="item">
Exchange rate
<span class="item-note">{{tx.price|currency:'':2}} {{tx.currency}}/BTC</span>
</li>
<li ng-show="tx.subtotal" class="item">
Subtotal
<span class="item-note">{{tx.subtotal|currency:'':2}} {{tx.currency}}</span>
</li>
<li ng-show="tx.fees" class="item">
Fees
<span class="item-note">{{tx.fees|currency:'':2}} {{tx.currency}}</span>
</li>
<li ng-show="tx.total" class="item">
Total
<span class="item-note">{{tx.total|currency:'':2}} {{tx.currency}}</span>
</li>
</ul>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,57 @@
<ion-modal-view ng-controller="payproController">
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color': color}">
<button class="button button-clear" ng-click="cancel()">
{{'Close' | translate}}
</button>
<div class="title" translate>
Payment request
</div>
</ion-header-bar>
<ion-content>
<div class="header-modal text-center size-42">
{{amountStr}}
</div>
<div class="list">
<div class="item item-divider" translate>
Details
</div>
<div class="item">
{{'Pay To'|translate}}
<span class="item-note">{{_paypro.domain}}</span>
</div>
<div class="item" ng-if="_paypro.toAddress">
{{'Address'|translate}}
<span class="item-note">{{_paypro.toAddress}}</span>
</div>
<div class="item">
{{'Certified by'|translate}}
<span class="item-note">
<span ng-show="_paypro.caTrusted">
<i class="ion-locked" style="color:green"></i>
{{_paypro.caName}}<br>
<span translate>(Trusted)</span>
</span>
<span ng-show="!_paypro.caTrusted">
<span ng-show="_paypro.selfSigned">
<i class="ion-unlocked" style="color:red"></i> <span translate>Self-signed Certificate</span>
</span>
<span ng-show="!_paypro.selfSigned">
<i class="ion-locked" style="color:yellow"></i>{{_paypro.caName}}<br>
<span translate>WARNING: UNTRUSTED CERTIFICATE</span>
</span>
</span>
</span>
</div>
<div class="item" ng-if="_paypro.memo">
{{'Memo'|translate}}
<span class="item-note wrapword">{{_paypro.memo}}</span>
</div>
<div class="item" ng-if="_paypro.expires">
{{'Expires'|translate}}
<span class="item-note">{{_paypro.expires * 1000 | amTimeAgo }}</span>
</div>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,15 @@
<ion-modal-view ng-style="{opacity: '0.9'}" ng-controller="receiveTipsController">
<ion-nav-bar class="bar-ligt">
<ion-nav-buttons side="secondary">
<button class="button" ng-click="close()">
X
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-content class="has-header">
<div class="text-center">
<h2>Receive bitcoin by sharing your address</h2>
<h3>Other bitcoin users can scan this code to send you money</h3>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,15 @@
<ion-modal-view ng-style="{opacity: '0.9'}" ng-controller="scanTipsController">
<ion-nav-bar class="bar-ligt">
<ion-nav-buttons side="secondary">
<button class="button" ng-click="close()">
X
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-content class="has-header">
<div class="text-center">
<h2>Scan the code to pay with bitcoin</h2>
<h3>QR codes could also contain a bitcoin wallet invitation, or an URL</h3>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,12 @@
<ion-modal-view ng-controller="scannerController" ng-init="init()">
<ion-header-bar align-title="center" class="bar-royal">
<button ng-click="cancel()" class="button button-back button-clear" translate>
Close
</button>
<h1 class="title ellipsis" translate>QR-Scanner</h1>
</ion-header-bar>
<ion-content >
<canvas id="qr-canvas" width="200" height="150"></canvas>
<video id="qrcode-scanner-video" width="300" height="225"></video>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,86 @@
<ion-modal-view>
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color':color}">
<button class="button button-clear" ng-click="close()">
Close
</button>
<div class="title" translate>
Search Transactions
</div>
</ion-header-bar>
<ion-content ng-controller="searchController" ng-init="search = ''">
<div class="bar bar-header item-input-inset">
<label class="item-input-wrapper">
<i class="icon ion-ios-search placeholder-icon"></i>
<input type="search" ng-model="search" ng-init="search = ''" ng-change="updateSearchInput(search)"
placeholder="{{'Search transactions' | translate}}">
</label>
</div>
<div class="list">
<div class="item" ng-repeat="btx in txHistorySearchResults track by btx.txid" ng-click="openTxModal(btx)">
<span class="item-note text-right">
<span class="size-16" ng-class="{'text-bold': btx.recent}">
<span ng-if="btx.action == 'received'">+</span>
<span ng-if="btx.action == 'sent'">-</span>
<span class="size-12" ng-if="btx.action == 'invalid'" translate>
(possible double spend)
</span>
<span ng-if="btx.action != 'invalid'">
{{btx.amountStr}}
</span>
</span>
<p>
<time ng-if="btx.time">{{btx.time * 1000 | amTimeAgo}}</time>
<span translate class="text-warning"
ng-show="!btx.time && (!btx.confirmations || btx.confirmations == 0)" translate>
Unconfirmed
</span>
</p>
</span>
<img class="left m10r" src="img/icon-receive-history.svg" alt="sync" width="40" ng-if="btx.action == 'received'">
<img class="left m10r" src="img/icon-sent-history.svg" alt="sync" width="40" ng-if="btx.action == 'sent'">
<img class="left m10r" src="img/icon-moved.svg" alt="sync" width="40" ng-if="btx.action == 'moved'">
<h2>
<div class="padding" ng-if="btx.action == 'received'">
<span class="ellipsis">
<h2 ng-if="btx.note.body">{{btx.note.body}}</h2>
<h2 ng-if="!btx.note.body" translate> Received</h2>
</span>
</div>
<div class="padding" ng-if="btx.action == 'sent'">
<span class="ellipsis">
<h2 ng-if="btx.message">{{btx.message}}</h2>
<h2 ng-if="!btx.message && btx.note.body">{{btx.note.body}}</h2>
<h2 ng-if="!btx.message && !btx.note.body && wallet.addressbook[btx.addressTo]">{{wallet.addressbook[btx.addressTo]}}</h2>
<h2 ng-if="!btx.message && !btx.note.body && !wallet.addressbook[btx.addressTo]" translate> Sent</h2>
</span>
</div>
<div class="padding" ng-if="btx.action == 'moved'">
<span class="ellipsis">
<h2 ng-if="btx.note.body">{{btx.note.body}}</h2>
<h2 ng-if="!btx.note.body" translate>Moved</h2>
</span>
</div>
<span class="label tu warning radius" ng-if="btx.action == 'invalid'" translate>Invalid</span>
</h2>
</div>
<div class="text-gray text-center size-12 p10t" ng-if="txHistoryShowMore">
<span class="size-12" translate>{{filteredTxHistory.length - txHistorySearchResults.length}} more</span>
&nbsp;
<i class="icon-arrow-down4"></i>
</div>
<ion-infinite-scroll
ng-if="txHistoryShowMore"
on-infinite="moreSearchResults()"
distance="1%">
</ion-infinite-scroll>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,19 @@
<ion-modal-view id="terms-of-use">
<ion-nav-bar class="bar-ligt">
<ion-nav-title>{{'Terms of Use' | translate}}</ion-nav-title>
<ion-nav-buttons side="primary">
<button class="button no-border" ng-click="termsModal.hide()">
<i class="ion-ios-arrow-thin-left"></i>
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-content class="has-header" scroll="false">
<ion-scroll ng-include="'views/includes/terms.html'" direction="y" ng-style="{'height': '60%'}"></ion-scroll>
<div id="agree-to-terms">
<a ng-click="openExternalLink('https://copay.io/disclaimer')" ng-show="lang != 'en'" translate>Official English Disclaimer</a>
<ion-checkbox ng-model="terms.accept3"></ion-checkbox>
<p translate>I have read, understood, and agree with the Terms of use.</p>
<button ng-disabled="!terms.accept3" class="button button-block button-positive" ng-click="termsModal.hide(); confirm()" translate>Confirm & Finish</button>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,178 @@
<ion-modal-view ng-controller="txDetailsController" ng-init="init()" id="tx-details">
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color': color}">
<button class="button button-clear" ng-click="cancel()">
{{'Close' | translate}}
</button>
<div class="title">
{{title}}
</div>
</ion-header-bar>
<ion-content>
<div class="header-modal text-center" ng-init="showRate = false">
<div ng-show="btx.action != 'invalid'">
<i class="icon big-icon-svg">
<img src="img/icon-wallet.svg" ng-style="{'background-color': color}" class="bg"/>
</i>
<div class="size-36 m20t" copy-to-clipboard="btx.amountStr">
{{btx.amountStr}}
</div>
<div class="m10t" style="height:20px;" ng-click="showRate =! showRate">
<span ng-show="!showRate && alternativeAmountStr">
{{alternativeAmountStr}}
</span>
<span ng-show="showRate && alternativeAmountStr">
{{rateStr}} ({{rateDate | amDateFormat:'MM/DD/YYYY HH:mm a'}})
</span>
</div>
</div>
<div ng-show="btx.action == 'sent'">
<div>
<span translate>Sent from</span>
<strong ng-style="{'color': color}">{{wallet.credentials.walletName}}</strong>
</div>
<i class="icon ion-ios-arrow-thin-down size-24"></i>
</div>
<div ng-show="btx.action == 'received'">
<div class="padding-vertical">
<i class="icon ion-ios-arrow-thin-up size-24"></i>
</div>
<span translate>Received Funds</span>
</div>
<div ng-show="btx.action == 'moved'">
<span translate>Moved Funds</span>
</div>
<div ng-show="btx.action == 'invalid'">
-
</div>
</div>
<div class="list">
<div class="item item-icon-left" ng-show="btx.action == 'sent'">
<i class="icon ion-social-bitcoin-outline"></i>
<div ng-if="!btx.hasMultiplesOutputs && btx.addressTo && btx.addressTo != 'N/A'" copy-to-clipboard="btx.addressTo">
<span ng-if="btx.merchant">
<span ng-show="btx.merchant.pr.ca"><i class="fi-lock color-greeni"></i> {{btx.merchant.domain}}</span>
<span ng-show="!btx.merchant.pr.ca"><i class="fi-unlock color-yellowi"></i> {{btx.merchant.domain}}</span>
</span>
<span ng-if="!btx.merchant">
<span ng-show="btx.labelTo">{{btx.labelTo}}</span>
<contact ng-show="!btx.labelTo" address="{{btx.addressTo}}"></contact>
</span>
</div>
</div>
<div class="item item-icon-left"
ng-click="openExternalLink('https://' + (getShortNetworkName() == 'test' ? 'test-' : '') + 'insight.bitpay.com/tx/' + btx.txid)">
<i class="icon ion-ios-upload-outline"></i>
<span class="text-gray" translate>View transaction on the blockchain</span>
</div>
<div class="item">
<div ng-if="btx.action == 'received' || btx.action == 'moved'">
{{'Date'|translate}}
<span class="item-note">
<time>{{ btx.time * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
</span>
</div>
<div ng-if="btx.action == 'sent'">
{{'Created by'|translate}} <strong>{{btx.creatorName}}</strong>
<span class="item-note">
<time>{{ btx.createdOn * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
</span>
</div>
</div>
<div class="item" ng-if="btx.action != 'received' && btx.feeLevel" copy-to-clipboard="btx.feeStr">
{{'Fee'|translate}}: {{btx.feeStr}}
<span class="item-note">
<span class="text-warning" ng-show="!btx.confirmations || btx.confirmations == 0" translate>
Unconfirmed
</span>
<span class="label gray radius" ng-show="btx.confirmations>0 && !btx.safeConfirmed">
{{btx.confirmations}}
</span>
<span class="label gray radius" ng-show="btx.safeConfirmed">
{{btx.safeConfirmed}}
</span>
<span translate>Confirmations</span>
</span>
</div>
<div class="item" ng-if="btx.message && btx.action != 'received'" copy-to-clipboard="btx.message">
{{'Description'|translate}}
<span class="item-note">
{{btx.message}}
</span>
</div>
<div ng-if="btx.merchant" class="item" copy-to-clipboard="btx.merchant.pr.pd.memo">
{{'Merchant message'|translate}}
<span class="item-note">
{{btx.merchant.pr.pd.memo}}
</span>
</div>
<div ng-show="btx.hasMultiplesOutputs" class="item" ng-click="showMultiplesOutputs = !showMultiplesOutputs">
{{'Recipients'|translate}}
<span class="item-note">
{{btx.recipientCount}}
<i ng-show="showMultiplesOutputs" class="icon-arrow-up3 size-24"></i>
<i ng-show="!showMultiplesOutputs" class="icon-arrow-down3 size-24"></i>
</span>
</div>
<div class="item" ng-show="btx.hasMultiplesOutputs && showMultiplesOutputs"
ng-repeat="output in btx.outputs"
ng-include="'views/includes/output.html'">
</div>
<div ng-if="btx.action == 'invalid'" class="item">
<span class="right" translate>
This transaction has become invalid; possibly due to a double spend attempt.
</span>
</div>
<div class="item" ng-click="showCommentPopup()">
{{'Memo'|translate}}
<span class="item-note" translate ng-if="!btx.note">
<i class="icon ion-ios-plus-empty"></i>
</span>
<span class="item-note" ng-if="btx.note && btx.note.body">
{{btx.note.body}}
<div>
<span translate>Edited by</span> {{btx.note.editedByName}},
<time>{{btx.note.editedOn * 1000 | amTimeAgo}}</time>
</div>
</span>
</div>
<div ng-if="actionList[0]">
<div class="item item-divider" translate>Timeline</div>
<div class="item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList track by $index">
<div class="row">
<div class="col col-10">
<span id="timeline-icon">{{$index + 1}}</span>
</div>
<div class="col">
<div>{{a.description}}</div>
<div>
<span>{{a.by}}</span>
<span class="item-note">
<time>{{ a.time * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</ion-content>
</ion-modal-view>

View file

@ -0,0 +1,73 @@
<ion-modal-view id="tx-status" ng-controller="txStatusController">
<div ng-if="type == 'broadcasted'" class="popup-txsent text-center m30tp">
<i class="icon ion-checkmark-round"></i>
<div ng-show="tx.amountStr" class="m20t size-36">
{{tx.amountStr}}
</div>
<div class="size-24 text-gray m20v">
<span ng-if="!fromBitPayCard" translate>Sent</span>
<span ng-if="fromBitPayCard" translate>Funds sent</span>
</div>
<div class="text-center m20t" ng-if="entryExist || !fromSendTab || fromPayPro">
<a class="button button-positive" ng-click="cancel()" translate>OKAY</a>
</div>
<div class="collect-address" ng-if="!entryExist && fromSendTab && !fromPayPro">
<div class="row">
<p translate class="col">Would you like to add this address to your address book?</p>
</div>
<div class="row">
<div class="col">
<span class="address">
<i class="icon ion-social-bitcoin"></i>
<contact class="enable_text_select ellipsis" address="{{tx.toAddress}}"></contact>
</span>
</div>
</div>
<div class="row">
<div class="col col-50">
<button class="button button-block button-stable" ng-click="cancel()">
{{'Skip' | translate}}
</button>
</div>
<div class="col col-50">
<button class="button button-block button-stable" ng-click="save(tx.toAddress)">
{{'Add Address' | translate}}
</button>
</div>
</div>
</div>
</div>
<div ng-if="type == 'created'" class="popup-txsigned text-center m30tp">
<i class="icon ion-checkmark-round"></i>
<div class="text-center size-24 tu text-bold m20v">
<span translate>Payment Proposal Created</span>
</div>
<div class="text-center">
<a class="button button-positive" ng-click="cancel()" translate>OKAY</a>
</div>
</div>
<div ng-if="type == 'accepted'" class="popup-txsigned text-center m30tp">
<i class="icon ion-checkmark-round"></i>
<div class="text-center size-24 tu text-bold m20v">
<span translate>Payment Accepted</span>
</div>
<div class="text-center">
<a class="button button-positive" ng-click="cancel()" translate>OKAY</a>
</div>
</div>
<div ng-if="type=='rejected'" class="popup-txrejected text-center m30tp">
<i class="icon ion-close-round"></i>
<div class="text-center size-24 tu text-bold m20v">
<span translate>Payment Rejected</span>
</div>
<div class="text-center">
<a class="button button-positive" ng-click="cancel()" translate>OKAY</a>
</div>
</div>
</ion-modal-view>

View file

@ -0,0 +1,168 @@
<ion-modal-view id="txp-details" ng-controller="txpDetailsController" ng-init="init()">
<ion-header-bar align-title="center" class="bar-royal" ng-style="{'background-color': wallet.color}">
<button class="button button-clear" ng-click="close()">
Close
</button>
<div class="title" translate>
Payment Proposal
</div>
<button class="button button-clear" ng-click="reject()" ng-disabled="loading" ng-if="isShared && tx.pendingForUs">
Reject
</button>
</ion-header-bar>
<ion-content ng-init="updateCopayerList()" ng-class="{'slide-to-pay': tx.pendingForUs && canSign && isCordova}">
<div class="list">
<div class="item head">
<div class="sending-label">
<i class="icon ion-arrow-up-c"></i>
<span translate>Sending</span>
</div>
<div class="amount-label">
<div class="amount">{{tx.amountStr}}</div>
<div class="alternative" ng-show="tx.alternativeAmountStr">{{tx.alternativeAmountStr}}</div>
</div>
<div class="text-center m10t assertive" ng-if="tx.removed" translate>
The payment was removed by creator
</div>
<div class="text-center m10t" ng-show="tx.status != 'pending'">
<div ng-show="tx.status == 'accepted' && !tx.isGlidera">
<div class="m10b positive" translate>Payment accepted, but not yet broadcasted</div>
<button class="button button-positive button-block" ng-click="broadcast(tx)" ng-disabled="loading">
<i class="icon ion-ios-cloud-upload-outline"></i>
<span translate>Broadcast Payment</span>
</button>
</div>
<div ng-show="tx.status == 'accepted' && tx.isGlidera" >
<div class="m10h" translate>Payment accepted. It will be broadcasted by Glidera. In case there is a problem, it can be deleted 6 hours after it was created.</div>
</div>
<div class="balanced" ng-show="tx.status == 'broadcasted'" translate>Payment Sent</div>
<div class="assertive" ng-show="tx.status=='rejected'" translate>Payment Rejected</div>
</div>
</div>
<div class="item assertive text-center" ng-show="!currentSpendUnconfirmed && tx.hasUnconfirmedInputs" translate>
Warning: this transaction has unconfirmed inputs
</div>
<div class="info">
<div class="item">
<span translate>To</span>
<span class="payment-proposal-to" copy-to-clipboard="tx.toAddress">
<i class="icon ion-social-bitcoin"></i>
<contact ng-if="!tx.hasMultiplesOutputs" class="ellipsis" address="{{tx.toAddress}}"></contact>
<span ng-if="tx.hasMultiplesOutputs" translate>Multiple recipients</span>
</span>
</div>
<div ng-show="tx.hasMultiplesOutputs" class="item" ng-click="showMultiplesOutputs = !showMultiplesOutputs">
<span class="text-gray" translate>Recipients</span>
<span class="right">{{tx.recipientCount}}
<i ng-show="showMultiplesOutputs" class="icon ion-ios-arrow-up"></i>
<i ng-show="!showMultiplesOutputs" class="icon ion-ios-arrow-up"></i>
</span>
</div>
<div class="item" ng-show="tx.hasMultiplesOutputs && showMultiplesOutputs"
ng-repeat="output in tx.outputs" ng-include="'views/includes/output.html'">
</div>
<div class="item">
{{'From'|translate}}
<span class="item-note">
<i class="icon big-icon-svg right">
<img src="img/icon-wallet.svg" ng-style="{'background-color': wallet.color}" class="bg"/>
</i>
<div class="m10t m55r">{{wallet.name}}</div>
</span>
</div>
<div class="item">
{{'Created by'|translate}}
<span class="item-note">
{{tx.creatorName}} <time>{{ (tx.ts || tx.createdOn ) * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
</span>
</div>
<div class="item" ng-show="tx.message">
{{'Memo'|translate}}
<span class="item-note">
{{tx.message}}
</span>
</div>
<div class="item">
{{'Fee'|translate}}
<span class="item-note">
{{tx.feeStr}}
</span>
</div>
<div ng-if="tx.paypro">
<div class="item item-divider" translate>Payment details</div>
<div class="item">
{{'To'|translate}}
<span class="item-note">
<span>
<span ng-show="tx.merchant.pr.ca"><i class="fi-lock"></i> {{tx.paypro.domain}}</span>
<span ng-show="!tx.merchant.pr.ca"><i class="fi-unlock"></i> {{tx.paypro.domain}}</span>
</span>
<contact address="{{tx.toAddress}}" ng-hide="tx.merchant"></contact>
</span>
</div>
<div class="item" ng-if="paymentExpired">
{{'Expired'|translate}}
<span class="item-note">
<time>{{tx.paypro.expires * 1000 | amTimeAgo }}</time>
</span>
</div>
<div class="item" ng-if="!paymentExpired">
{{'Expires'|translate}}
<span class="item-note">
<time>{{expires}}</time>
</span>
</div>
<div class="item">
{{'Merchant Message'|translate}}
<span class="item-note">{{tx.paypro.pr.pd.memo}}</span>
</div>
</div>
<div ng-if="actionList[0]">
<div class="item item-divider" translate>Timeline</div>
<div class="item" ng-class="{'action-created' : a.type == 'created' || a.type == 'accept', 'action-rejected' : a.type == 'reject'}" ng-repeat="a in actionList track by $index">
<div class="row">
<div class="col col-10">
<span id="timeline-icon">{{$index + 1}}</span>
</div>
<div class="col">
<div>{{a.description}}</div>
<div>
<span>{{a.by}}</span>
<span class="item-note">
<time>{{ a.time * 1000 | amDateFormat:'MM/DD/YYYY HH:mm a'}}</time>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<button class="button button-block button-positive"
ng-click="sign()"
ng-if="tx.pendingForUs && canSign && !loading && !paymentExpired && !isCordova" translate>
Click to accept
</button>
<div class="m30t text-center" ng-if="tx.canBeRemoved || (tx.status == 'accepted' && !tx.broadcastedOn)">
<div class="size-12 padding" ng-show="!tx.isGlidera && isShared" translate>
* A payment proposal can be deleted if 1) you are the creator, and no other copayer has signed, or 2) 24 hours have passed since the proposal was created.
</div>
<button class="button button-assertive button-clear" ng-click="remove()" ng-disabled="loading">
<i class="fi-trash size-14 m5r"></i>
<span translate>Delete Payment Proposal</span>
</button>
</div>
</ion-content>
<accept class="accept-slide" ng-if="tx.pendingForUs && canSign && !loading && !paymentExpired && isCordova"></accept>
</ion-modal-view>

View file

@ -0,0 +1,57 @@
<ion-modal-view ng-controller="walletsController">
<ion-header-bar align-title="center" class="tab-bar">
<div class="left-small">
<a ng-click="cancel()" class="p10">
<span class="text-close" translate>Close</span>
</a>
</div>
<h1 class="title ellipsis">
<span ng-show="type == 'BUY' || type == 'RECEIVE'" translate>Choose your destination wallet</span>
<span ng-show="type == 'SELL' || type == 'SEND'" translate>Choose your source wallet</span>
</h1>
</ion-header-bar>
<ion-content ng-style="{'background-color': '#F6F7F9'}">
<div>
<div class="box-notification text-center size-12 text-warning m10t" ng-show="error">
<i class="fi-error"></i> {{error}}
</div>
<div ng-show="type == 'SELL'">
<h4 class="title m0 oh">
<div class="left">
<i class="fi-info size-18 m10r"></i>
</div>
<div class="size-10 m5t" translate>
Notice: only 1-1 (single signature) wallets can be used for sell bitcoin
</div>
</h4>
</div>
<div ng-show="type != 'SELL'">
<h4 class="title m0 oh">
</h4>
</div>
<ul class="no-bullet">
<li class="line-b" ng-repeat="w in wallets">
<a ng-click="selectWallet(w.id)" class="db oh">
<div class="avatar-wallet"
ng-style="{'background-color':w.color}">
<i class="icon-wallet size-21"></i>
</div>
<div class="ellipsis name-wallet text-bold">
{{w.name || w.id}}
<span class="has-error right text-light size-12" ng-show="errorSelectedWallet[w.id]">
<i class="icon-close-circle size-14"></i>
<span class="vm">{{errorSelectedWallet[w.id]}}</span>
</span>
</div>
<div class="size-12">{{w.m}} of {{w.n}}
<span ng-show="w.network=='testnet'">[Testnet]</span>
</div>
</a>
</li>
</ul>
<div class="extra-margin-bottom"></div>
</div>
</ion-content>
</ion-modal-view>