strHTML += _("<b>To:</b> ");
strHTML += HtmlEscape(address.ToString());
if (!wallet->mapAddressBook[address].empty())
- strHTML += _(" (yours, label: ") + wallet->mapAddressBook[address] + ")";
+ strHTML += _(" (yours, label: ") + HtmlEscape(wallet->mapAddressBook[address]) + ")";
else
strHTML += _(" (yours)");
strHTML += "<br>";
strAddress = wtx.mapValue["to"];
strHTML += _("<b>To:</b> ");
if (wallet->mapAddressBook.count(strAddress) && !wallet->mapAddressBook[strAddress].empty())
- strHTML += wallet->mapAddressBook[strAddress] + " ";
+ strHTML += HtmlEscape(wallet->mapAddressBook[strAddress]) + " ";
strHTML += HtmlEscape(strAddress) + "<br>";
}
{
strHTML += _("<b>To:</b> ");
if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty())
- strHTML += wallet->mapAddressBook[address] + " ";
- strHTML += address.ToString();
+ strHTML += HtmlEscape(wallet->mapAddressBook[address]) + " ";
+ strHTML += HtmlEscape(address.ToString());
strHTML += "<br>";
}
}
//
if (fDebug)
{
- strHTML += "<hr><br>debug print<br><br>";
+ strHTML += "<hr><br>Debug information<br><br>";
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
if(wallet->IsMine(txin))
- strHTML += "<b>Debit:</b> " + FormatMoney(-wallet->IsMine(txin)) + "<br>";
+ strHTML += "<b>Debit:</b> " + FormatMoney(-wallet->GetDebit(txin)) + "<br>";
BOOST_FOREACH(const CTxOut& txout, wtx.vout)
if(wallet->IsMine(txout))
- strHTML += "<b>Credit:</b> " + FormatMoney(wallet->IsMine(txout)) + "<br>";
+ strHTML += "<b>Credit:</b> " + FormatMoney(wallet->GetCredit(txout)) + "<br>";
strHTML += "<br><b>Transaction:</b><br>";
strHTML += HtmlEscape(wtx.ToString(), true);
- strHTML += "<br><b>Inputs:</b><br>";
+ CTxDB txdb("r"); // To fetch source txouts
+
+ strHTML += "<br><b>Inputs:</b>";
+ strHTML += "<ul>";
CRITICAL_BLOCK(wallet->cs_mapWallet)
{
BOOST_FOREACH(const CTxIn& txin, wtx.vin)
{
COutPoint prevout = txin.prevout;
- map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(prevout.hash);
- if (mi != wallet->mapWallet.end())
+
+ CTransaction prev;
+ if(txdb.ReadDiskTx(prevout.hash, prev))
{
- const CWalletTx& prev = (*mi).second;
if (prevout.n < prev.vout.size())
{
- strHTML += HtmlEscape(prev.ToString(), true);
- strHTML += " " + FormatTxStatus(prev) + ", ";
- strHTML = strHTML + "IsMine=" + (wallet->IsMine(prev.vout[prevout.n]) ? "true" : "false") + "<br>";
+ strHTML += "<li>";
+ const CTxOut &vout = prev.vout[prevout.n];
+ CBitcoinAddress address;
+ if (ExtractAddress(vout.scriptPubKey, 0, address))
+ {
+ if (wallet->mapAddressBook.count(address) && !wallet->mapAddressBook[address].empty())
+ strHTML += HtmlEscape(wallet->mapAddressBook[address]) + " ";
+ strHTML += address.ToString();
+ }
+ strHTML = strHTML + " Amount=" + FormatMoney(vout.nValue);
+ strHTML = strHTML + " IsMine=" + (wallet->IsMine(vout) ? "true" : "false") + "</li>";
}
}
}
}
+ strHTML += "</ul>";
}