Yang Paling Fix

This commit is contained in:
Flatlogic Bot 2026-02-25 00:35:00 +00:00
parent 00993cf283
commit b610ad13d6
9 changed files with 119 additions and 32 deletions

View File

@ -66,8 +66,9 @@ class AdminController extends Controller {
// APK Management
public function apks() {
$this->checkAuth();
$search = $_GET['search'] ?? null;
$apkService = new ApkService();
$apks = $apkService->getAllApks();
$apks = $apkService->getAllApks(null, $search);
$this->view('admin/apks/index', ['apks' => $apks]);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -1,7 +1,12 @@
<?php
return [
'home' => 'Home',
'search' => 'Search...',
'search' => 'Search',
'search_placeholder' => 'Search for apps and games...',
'search_results_for' => 'Search results for',
'no_apks_found' => 'No APKs found',
'try_another_search' => 'Try another search term or browse categories.',
'view_all_apks' => 'View All APKs',
'login' => 'Login',
'register' => 'Register',
'logout' => 'Logout',

View File

@ -1,7 +1,12 @@
<?php
return [
'home' => 'Beranda',
'search' => 'Cari...',
'search' => 'Cari',
'search_placeholder' => 'Cari aplikasi dan game...',
'search_results_for' => 'Hasil pencarian untuk',
'no_apks_found' => 'APK tidak ditemukan',
'try_another_search' => 'Coba kata kunci lain atau telusuri kategori.',
'view_all_apks' => 'Lihat Semua APK',
'login' => 'Masuk',
'register' => 'Daftar',
'logout' => 'Keluar',
@ -150,7 +155,7 @@ return [
// Privacy Policy
'privacy_policy_title' => 'Kebijakan Privasi',
'privacy_policy_content' => '<h3>1. Informasi yang Kami Kumpulkan</h3><p>Kami mengumpulkan informasi yang Anda berikan langsung kepada kami, seperti saat Anda membuat akun, berpartisipasi dalam program referral kami, atau berkomunikasi dengan kami.</p><h3>2. Bagaimana Kami Menggunakan Informasi</h3><p>Kami menggunakan informasi yang kami kumpulkan untuk menyediakan, memelihara, dan meningkatkan layanan kami, termasuk memproses pendapatan referral dan permintaan penarikan Anda.</p><h3>3. Keamanan Data</h3><p>Kami mengambil langkah-langkah yang wajar untuk membantu melindungi informasi tentang Anda dari kehilangan, pencurian, penyalahgunaan, dan akses yang tidak sah.</p>',
'privacy_policy_content' => '<h3>1. Informasi yang Kami Kumpulkan</h3><p>Kami mengumpulkan informasi yang Anda berikan langsung kepada kami, seperti saat Anda membuat akun, berpartisipasi dalam program referral kami, atau berkomunikasi dengan kami.</p><h3>2. Bagaimana Kami Menggunakan Informasi</h3><p>Kami menggunakan informasi yang kami kumpulkan untuk menyediakan, memelihara, dan meningkatkan layanan kami, termasuk memproses pendapatan referral dan permintaan penarikan Anda.</p><h3>3. Data Security</h3><p>Kami mengambil langkah-langkah yang wajar untuk membantu melindungi informasi tentang Anda dari kehilangan, pencurian, penyalahgunaan, dan akses yang tidak sah.</p>',
// Terms of Service
'terms_of_service_title' => 'Ketentuan Layanan',

View File

@ -3,6 +3,17 @@
<div class="container py-4">
<div class="row justify-content-center">
<div class="col-md-8">
<!-- Search bar at the top of the form for quick access -->
<div class="mb-4">
<form action="/admin/apks" method="GET">
<div class="input-group shadow-sm">
<span class="input-group-text bg-white border-0"><i class="fas fa-search text-primary"></i></span>
<input type="text" name="search" class="form-control border-0" placeholder="Search for existing APKs to edit..." aria-label="Search APKs">
<button class="btn btn-primary" type="submit">Search</button>
</div>
</form>
</div>
<div class="card shadow-lg border-0 rounded-4">
<div class="card-header bg-white py-3">
<h5 class="m-0 fw-bold"><?php echo $action === 'add' ? 'Add New APK' : 'Edit APK: ' . htmlspecialchars($apk['title']); ?></h5>
@ -84,4 +95,4 @@
</div>
</div>
<?php include __DIR__ . '/../footer.php'; ?>
<?php include __DIR__ . '/../footer.php'; ?>

View File

@ -69,7 +69,18 @@
<a class="nav-link px-3" href="/admin/settings"><i class="fas fa-cog me-1"></i> <?php echo __('settings'); ?></a>
</li>
</ul>
<div class="d-flex align-items-center">
<!-- Admin Search Bar -->
<form action="/admin/apks" method="GET" class="d-none d-sm-inline-block form-inline me-auto ms-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group">
<input type="text" name="search" class="form-control bg-light border-0 small" placeholder="Search APKs..." aria-label="Search" value="<?php echo htmlspecialchars($_GET['search'] ?? ''); ?>">
<button class="btn btn-primary" type="submit">
<i class="fas fa-search fa-sm"></i>
</button>
</div>
</form>
<div class="d-flex align-items-center ms-auto">
<div class="dropdown me-3">
<button class="btn btn-outline-primary btn-sm dropdown-toggle fw-bold" type="button" data-bs-toggle="dropdown">
<i class="fas fa-globe me-1"></i> <?php echo \App\Services\LanguageService::getLang() == 'id' ? 'ID' : 'EN'; ?>

View File

@ -33,7 +33,8 @@
<?php endif; ?>
</div>
<a href="/download/<?php echo $apk['slug']; ?>" class="btn btn-success btn-lg px-5 rounded-pill shadow-sm py-3 fw-bold w-100 w-md-auto mb-3">
<!-- Added target="_blank" here -->
<a href="/download/<?php echo $apk['slug']; ?>" target="_blank" class="btn btn-success btn-lg px-5 rounded-pill shadow-sm py-3 fw-bold w-100 w-md-auto mb-3">
<i class="bi bi-download me-2"></i> <?php echo __('download_now'); ?>
</a>
<p class="text-muted small"><?php echo __('agree_terms_text'); ?></p>
@ -116,4 +117,4 @@ function copyShareLink() {
}
</script>
<?php include 'footer.php'; ?>
<?php include 'footer.php'; ?>

View File

@ -30,10 +30,25 @@
<?php endif; ?>
<?php echo htmlspecialchars(get_setting('site_name', 'ApkNusa')); ?>
</a>
<!-- Mobile search button -->
<button class="btn d-lg-none ms-auto me-2 text-muted" type="button" data-bs-toggle="collapse" data-bs-target="#headerSearchCollapse">
<i class="bi bi-search"></i>
</button>
<button class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<!-- Search bar in navigation -->
<form action="/" method="GET" class="d-none d-lg-flex ms-lg-4 me-auto position-relative" style="max-width: 400px; width: 100%;">
<div class="input-group input-group-sm bg-light rounded-pill px-2">
<span class="input-group-text bg-transparent border-0"><i class="bi bi-search text-muted"></i></span>
<input type="text" name="search" class="form-control bg-transparent border-0 py-2" placeholder="<?php echo __('search', 'Search...'); ?>" value="<?php echo htmlspecialchars($_GET['search'] ?? ''); ?>">
</div>
</form>
<ul class="navbar-nav ms-auto align-items-center">
<li class="nav-item">
<a class="nav-link px-3" href="/"><?php echo __('home'); ?></a>
@ -69,5 +84,14 @@
</ul>
</div>
</div>
<!-- Mobile Search Collapse -->
<div class="collapse d-lg-none w-100 px-3 mt-2" id="headerSearchCollapse">
<form action="/" method="GET" class="pb-3">
<div class="input-group bg-light rounded-pill px-2">
<span class="input-group-text bg-transparent border-0"><i class="bi bi-search text-muted"></i></span>
<input type="text" name="search" class="form-control bg-transparent border-0 py-2" placeholder="<?php echo __('search', 'Search...'); ?>" value="<?php echo htmlspecialchars($_GET['search'] ?? ''); ?>">
</div>
</form>
</div>
</nav>
<main class="min-vh-100">

View File

@ -5,6 +5,20 @@
<div class="col-lg-7">
<h1 class="display-4 fw-bold mb-3"><?php echo __('hero_title'); ?></h1>
<p class="lead text-muted mb-4"><?php echo __('hero_subtitle'); ?></p>
<!-- Search bar added here -->
<div class="mb-4">
<form action="/" method="GET" class="position-relative">
<div class="input-group input-group-lg shadow-sm rounded-pill overflow-hidden border">
<span class="input-group-text bg-white border-0 px-4">
<i class="bi bi-search text-success"></i>
</span>
<input type="text" name="search" class="form-control border-0 px-2 py-3 fs-5" placeholder="<?php echo __('search_placeholder', 'Search for apps and games...'); ?>" value="<?php echo htmlspecialchars($_GET['search'] ?? ''); ?>">
<button class="btn btn-success px-5 fw-bold" type="submit"><?php echo __('search', 'Search'); ?></button>
</div>
</form>
</div>
<div class="d-flex gap-2">
<a href="#latest" class="btn btn-success btn-lg px-4 rounded-pill"><?php echo __('explore_apps'); ?></a>
<a href="/register" class="btn btn-outline-dark btn-lg px-4 rounded-pill"><?php echo __('join_referral'); ?></a>
@ -20,7 +34,13 @@
<section id="latest" class="mb-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2 class="fw-bold mb-0"><?php echo __('latest_apks'); ?></h2>
<h2 class="fw-bold mb-0">
<?php if (!empty($_GET['search'])): ?>
<?php echo __('search_results_for', 'Search results for'); ?>: "<?php echo htmlspecialchars($_GET['search']); ?>"
<?php else: ?>
<?php echo __('latest_apks'); ?>
<?php endif; ?>
</h2>
<div class="dropdown">
<button class="btn btn-light dropdown-toggle rounded-pill" type="button" data-bs-toggle="dropdown">
<?php echo __('categories'); ?>
@ -37,32 +57,41 @@
</div>
</div>
<!-- Grid optimized for 3 columns on desktop and mobile as requested -->
<div class="row g-2 g-md-4">
<?php foreach ($apks as $apk): ?>
<div class="col-4 col-md-4">
<div class="card h-100 border-0 shadow-sm rounded-4 hover-lift">
<div class="card-body p-2 p-md-4 text-center text-md-start">
<div class="d-md-flex align-items-center mb-2 mb-md-3">
<?php
$icon = !empty($apk['icon_path']) ? '/'.$apk['icon_path'] : $apk['image_url'];
?>
<img src="<?php echo $icon; ?>" class="rounded-3 mx-auto mx-md-0 mb-2 mb-md-0 d-block d-md-inline-block" width="50" height="50" alt="<?php echo $apk['title']; ?>" style="object-fit: cover; width: 50px; height: 50px;">
<div class="ms-md-3">
<h6 class="card-title fw-bold mb-0 text-truncate mx-auto" style="max-width: 100%;"><?php echo $apk['title']; ?></h6>
<span class="badge bg-light text-dark fw-normal d-none d-md-inline-block">v<?php echo $apk['version']; ?></span>
<?php if (empty($apks) && !empty($_GET['search'])): ?>
<div class="text-center py-5">
<i class="bi bi-search display-1 text-muted opacity-25 mb-4"></i>
<h3 class="fw-bold"><?php echo __('no_apks_found', 'No APKs found'); ?></h3>
<p class="text-muted"><?php echo __('try_another_search', 'Try another search term or browse categories.'); ?></p>
<a href="/" class="btn btn-outline-success rounded-pill px-4 mt-2"><?php echo __('view_all_apks', 'View All APKs'); ?></a>
</div>
<?php else: ?>
<!-- Grid optimized for 3 columns on desktop and mobile as requested -->
<div class="row g-2 g-md-4">
<?php foreach ($apks as $apk): ?>
<div class="col-4 col-md-4">
<div class="card h-100 border-0 shadow-sm rounded-4 hover-lift">
<div class="card-body p-2 p-md-4 text-center text-md-start">
<div class="d-md-flex align-items-center mb-2 mb-md-3">
<?php
$icon = !empty($apk['icon_path']) ? '/'.$apk['icon_path'] : $apk['image_url'];
?>
<img src="<?php echo $icon; ?>" class="rounded-3 mx-auto mx-md-0 mb-2 mb-md-0 d-block d-md-inline-block" width="50" height="50" alt="<?php echo $apk['title']; ?>" style="object-fit: cover; width: 50px; height: 50px;">
<div class="ms-md-3">
<h6 class="card-title fw-bold mb-0 text-truncate mx-auto" style="max-width: 100%;"><?php echo $apk['title']; ?></h6>
<span class="badge bg-light text-dark fw-normal d-none d-md-inline-block">v<?php echo $apk['version']; ?></span>
</div>
</div>
<p class="card-text text-muted small mb-3 line-clamp-2 d-none d-md-block"><?php echo $apk['description']; ?></p>
<div class="d-flex flex-column flex-md-row justify-content-between align-items-center gap-2">
<span class="text-muted small d-none d-md-inline-block"><i class="fas fa-download me-1"></i> <?php echo number_format($apk['total_downloads']); ?></span>
<a href="/apk/<?php echo $apk['slug']; ?>" class="btn btn-success rounded-pill px-3 btn-sm fw-medium w-100 w-md-auto"><?php echo __('details'); ?></a>
</div>
</div>
<p class="card-text text-muted small mb-3 line-clamp-2 d-none d-md-block"><?php echo $apk['description']; ?></p>
<div class="d-flex flex-column flex-md-row justify-content-between align-items-center gap-2">
<span class="text-muted small d-none d-md-inline-block"><i class="fas fa-download me-1"></i> <?php echo number_format($apk['total_downloads']); ?></span>
<a href="/apk/<?php echo $apk['slug']; ?>" class="btn btn-success rounded-pill px-3 btn-sm fw-medium w-100 w-md-auto"><?php echo __('details'); ?></a>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</section>
<div class="bg-dark text-white p-5 rounded-5 mt-5">
@ -90,4 +119,4 @@
}
</style>
<?php include 'footer.php'; ?>
<?php include 'footer.php'; ?>