37970-vm/collaboration.php
Flatlogic Bot 7a517224e6 v5
2026-01-30 15:02:53 +00:00

245 lines
12 KiB
PHP

<?php
session_start();
require_once 'db/config.php';
if (!isset($_SESSION['user_id']) || !in_array($_SESSION['role'], ['Admin', 'Teacher', 'Super Admin'])) {
header('Location: login.php');
exit;
}
$user_id = $_SESSION['user_id'];
$school_id = $_SESSION['school_id'];
$success = '';
$error = '';
// Handle Resource Upload
if (isset($_POST['upload_resource'])) {
$title = $_POST['title'];
$description = $_POST['description'];
$grade = $_POST['grade'];
$subject = $_POST['subject'];
// In a real app, we'd handle file uploads. For this demo, we'll just store the metadata.
try {
$stmt = db()->prepare("INSERT INTO resources (title, description, teacher_id, school_id, grade, subject) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->execute([$title, $description, $user_id, $school_id, $grade, $subject]);
$success = "Resource shared successfully!";
} catch (PDOException $e) {
$error = "Failed to share resource: " . $e->getMessage();
}
}
// Handle Forum Post
if (isset($_POST['create_post'])) {
$title = $_POST['title'];
$content = $_POST['content'];
try {
$stmt = db()->prepare("INSERT INTO forum_posts (title, content, author_id, school_id) VALUES (?, ?, ?, ?)");
$stmt->execute([$title, $content, $user_id, $school_id]);
$success = "Topic posted successfully!";
} catch (PDOException $e) {
$error = "Failed to post topic: " . $e->getMessage();
}
}
// Fetch Resources
$resources = db()->prepare("SELECT r.*, u.email as teacher_email FROM resources r JOIN users u ON r.teacher_id = u.id WHERE r.school_id = ? ORDER BY r.created_at DESC");
$resources->execute([$school_id]);
$resources = $resources->fetchAll();
// Fetch Forum Posts
$posts = db()->prepare("SELECT p.*, u.email as author_email, (SELECT COUNT(*) FROM forum_comments WHERE post_id = p.id) as comment_count FROM forum_posts p JOIN users u ON p.author_id = u.id WHERE p.school_id = ? ORDER BY p.created_at DESC");
$posts->execute([$school_id]);
$posts = $posts->fetchAll();
$pageTitle = "Teacher Collaboration Hub";
include 'includes/header.php';
?>
<div class="container mt-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2><i class="bi bi-people-fill me-2"></i>Collaboration Hub</h2>
<div class="btn-group">
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#uploadModal">
<i class="bi bi-upload me-2"></i>Share Resource
</button>
<button class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#postModal">
<i class="bi bi-chat-dots me-2"></i>New Topic
</button>
</div>
</div>
<?php if ($success): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<?php echo $success; ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<ul class="nav nav-tabs mb-4" id="hubTabs" role="tablist">
<li class="nav-item">
<button class="nav-link active" id="resources-tab" data-bs-toggle="tab" data-bs-target="#resources" type="button" role="tab">Resources</button>
</li>
<li class="nav-item">
<button class="nav-link" id="forum-tab" data-bs-toggle="tab" data-bs-target="#forum" type="button" role="tab">Discussion Forum</button>
</li>
</ul>
<div class="tab-content" id="hubTabsContent">
<!-- Resources Tab -->
<div class="tab-pane fade show active" id="resources" role="tabpanel">
<div class="row">
<?php if (empty($resources)): ?>
<div class="col-12 text-center py-5">
<i class="bi bi-folder2-open display-1 text-light"></i>
<p class="mt-3 text-muted">No resources shared yet. Be the first!</p>
</div>
<?php else: ?>
<?php foreach ($resources as $res): ?>
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm border-0">
<div class="card-body">
<div class="d-flex justify-content-between mb-2">
<span class="badge bg-light text-dark"><?php echo htmlspecialchars($res['subject']); ?></span>
<span class="badge bg-light text-dark">Grade <?php echo htmlspecialchars($res['grade']); ?></span>
</div>
<h5 class="card-title"><?php echo htmlspecialchars($res['title']); ?></h5>
<p class="card-text text-muted small"><?php echo htmlspecialchars($res['description']); ?></p>
</div>
<div class="card-footer bg-white border-0 py-3">
<div class="d-flex align-items-center mb-3">
<div class="flex-shrink-0">
<i class="bi bi-person-circle fs-4 text-primary"></i>
</div>
<div class="flex-grow-1 ms-2">
<div class="small fw-bold"><?php echo explode('@', $res['teacher_email'])[0]; ?></div>
<div class="text-muted smaller"><?php echo date('M d, Y', strtotime($res['created_at'])); ?></div>
</div>
</div>
<button class="btn btn-sm btn-outline-primary w-100">
<i class="bi bi-download me-2"></i>Download Resource
</button>
</div>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
<!-- Forum Tab -->
<div class="tab-pane fade" id="forum" role="tabpanel">
<div class="card shadow-sm border-0">
<div class="list-group list-group-flush">
<?php if (empty($posts)): ?>
<div class="text-center py-5">
<i class="bi bi-chat-left-dots display-1 text-light"></i>
<p class="mt-3 text-muted">Start a conversation with your colleagues.</p>
</div>
<?php else: ?>
<?php foreach ($posts as $post): ?>
<a href="#" class="list-group-item list-group-item-action py-4 border-0 border-bottom">
<div class="d-flex w-100 justify-content-between align-items-start">
<div class="me-3">
<h5 class="mb-1"><?php echo htmlspecialchars($post['title']); ?></h5>
<p class="mb-1 text-muted"><?php echo htmlspecialchars(substr($post['content'], 0, 150)) . '...'; ?></p>
<div class="small mt-2">
<span class="text-primary fw-bold"><?php echo explode('@', $post['author_email'])[0]; ?></span>
<span class="text-muted ms-2">• <?php echo date('M d, Y', strtotime($post['created_at'])); ?></span>
</div>
</div>
<div class="text-end">
<span class="badge rounded-pill bg-light text-primary px-3 py-2">
<i class="bi bi-chat-fill me-1"></i> <?php echo $post['comment_count']; ?>
</span>
</div>
</div>
</a>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
<!-- Upload Modal -->
<div class="modal fade" id="uploadModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content border-0 shadow">
<div class="modal-header border-0">
<h5 class="modal-title">Share Learning Resource</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Resource Title</label>
<input type="text" name="title" class="form-control" required placeholder="e.g. Grade 10 Math Exam Prep">
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">Grade</label>
<select name="grade" class="form-select" required>
<option value="8">Grade 8</option>
<option value="9">Grade 9</option>
<option value="10">Grade 10</option>
<option value="11">Grade 11</option>
<option value="12">Grade 12</option>
</select>
</div>
<div class="col-md-6 mb-3">
<label class="form-label">Subject</label>
<input type="text" name="subject" class="form-control" required placeholder="e.g. Mathematics">
</div>
</div>
<div class="mb-3">
<label class="form-label">Description</label>
<textarea name="description" class="form-control" rows="3" placeholder="Briefly describe the resource..."></textarea>
</div>
<div class="mb-3">
<label class="form-label">File (Placeholder)</label>
<input type="file" class="form-control" disabled>
<small class="text-muted">File upload disabled for prototype.</small>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Cancel</button>
<button type="submit" name="upload_resource" class="btn btn-primary">Upload & Share</button>
</div>
</form>
</div>
</div>
</div>
<!-- Post Modal -->
<div class="modal fade" id="postModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content border-0 shadow">
<div class="modal-header border-0">
<h5 class="modal-title">Start Discussion Topic</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<form method="POST">
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Topic Title</label>
<input type="text" name="title" class="form-control" required placeholder="What do you want to discuss?">
</div>
<div class="mb-3">
<label class="form-label">Content</label>
<textarea name="content" class="form-control" rows="5" required placeholder="Share your thoughts or ask a question..."></textarea>
</div>
</div>
<div class="modal-footer border-0">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Cancel</button>
<button type="submit" name="create_post" class="btn btn-primary">Post Topic</button>
</div>
</form>
</div>
</div>
</div>
<?php include 'includes/footer.php'; ?>