PHP WebShell
Текущая директория: /var/www/bitcardoApp/user/data
Просмотр файла: transactions_old.php
<? include '../common/header.php'; ?>
<!-- Main Container -->
<div class="container mt-3">
<div class="row">
<? include '../common/nav.php'; ?>
<!-- Main Content -->
<main class="col-md-9 col-lg-10 px-md-5 mb-5">
<? include '../common/page-header.php'; ?>
<div class="container my-5 px-md-5">
<div class="row justify-content-between align-items-center mb-4">
<h3 class="col-sm-12 col-md-6">Transactions</h3>
<div class="d-flex col-sm-12 col-md-6 gap-2">
<input id="searchInput" type="text" class="form-control" placeholder="Search">
<button id="filterBtn" class="btn btn-secondary btn-sm">Filters</button>
<button id="downloadBtn" class="btn btn-secondary btn-sm">Download</button>
</div>
</div>
<div id="transactionList">
<!-- Group: May 14 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 14</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-danger bi bi-box-arrow-in-up-right"></i></div>
<div>
<strong>Elijah Bello</strong><br>
<small class="text-muted">Sent</small>
</div>
</div>
<div class="text-end">
<strong>521,173.48 NGN</strong><br>
<small class="text-muted">291.19 EUR</small>
</div>
</div>
</div>
</div>
<!-- Group: May 14 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 14</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-danger bi bi-box-arrow-in-up-right"></i></div>
<div>
<strong>Elijah Bello</strong><br>
<small class="text-muted">Sent</small>
</div>
</div>
<div class="text-end">
<strong>521,173.48 NGN</strong><br>
<small class="text-muted">291.19 EUR</small>
</div>
</div>
</div>
</div>
<!-- Group: May 13 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 13</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-danger bi bi-box-arrow-in-up-right"></i></div>
<div>
<strong>Elijah Bello</strong><br>
<small class="text-muted">Sent</small>
</div>
</div>
<div class="text-end">
<strong>800,000 NGN</strong><br>
<small class="text-muted">445.22 EUR</small>
</div>
</div>
</div>
</div>
<!-- Group: May 13 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 12</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-info bi bi-shuffle"></i></div>
<div>
<strong>Elijah Bello</strong><br>
<small class="text-muted">Sent</small>
</div>
</div>
<div class="text-end">
<strong>800,000 NGN</strong><br>
<small class="text-muted">445.22 EUR</small>
</div>
</div>
</div>
</div>
<!-- Group: May 9 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 9</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-success bi bi-box-arrow-in-down-right"></i></div>
<div>
<strong>Stripe Technology Europe Ltd</strong><br>
<small class="text-muted">Received</small>
</div>
</div>
<div class="text-end text-success">
<strong>+836.41 EUR</strong>
</div>
</div>
</div>
</div>
<!-- Group: May 9 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 9</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-success bi bi-box-arrow-in-down-right"></i></div>
<div>
<strong>Stripe Technology Europe Ltd</strong><br>
<small class="text-muted">Received</small>
</div>
</div>
<div class="text-end text-success">
<strong>+836.41 EUR</strong>
</div>
</div>
</div>
</div>
<!-- Group: May 9 -->
<div class="transaction-group mb-3">
<h6 class="text-muted">May 9</h6>
<div class="bg-white p-3 rounded shadow-sm mb-2 transaction-item">
<div class="d-flex justify-content-between">
<div class="d-flex align-items-center gap-3">
<div class="transaction-icon"><i class="text-success bi bi-box-arrow-in-down-right"></i></div>
<div>
<strong>Stripe Technology Europe Ltd</strong><br>
<small class="text-muted">Received</small>
</div>
</div>
<div class="text-end text-success">
<strong>+836.41 EUR</strong>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<? include '../common/footer.php'; ?>
<script>
// Filter logic with grouped hiding
document.getElementById('searchInput').addEventListener('input', function () {
const query = this.value.toLowerCase();
document.querySelectorAll('.transaction-group').forEach(group => {
const transactions = group.querySelectorAll('.transaction-item');
let visibleCount = 0;
transactions.forEach(item => {
const text = item.innerText.toLowerCase();
const isVisible = text.includes(query);
item.style.display = isVisible ? 'block' : 'none';
if (isVisible) visibleCount++;
});
group.style.display = visibleCount > 0 ? 'block' : 'none';
});
});
// Download as CSV
document.getElementById('downloadBtn').addEventListener('click', function () {
let csv = 'Name,Type,Amount\n';
document.querySelectorAll('.transaction-group').forEach(group => {
group.querySelectorAll('.transaction-item').forEach(item => {
if (item.style.display !== 'none') {
const name = item.querySelector('strong')?.innerText ?? '';
const type = item.querySelector('small')?.innerText ?? '';
const amount = item.querySelector('.text-end strong')?.innerText ?? '';
csv += `"${name}","${type}","${amount}"\n`;
}
});
});
const blob = new Blob([csv], {type: 'text/csv'});
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'transactions.csv';
link.click();
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>Выполнить команду
Для локальной разработки. Не используйте в интернете!