Files
root 9e2f858343
Deploy to Shared Hosting / Shared hosting deploy (push) Failing after 48s
Tests / PHPUnit (push) Successful in 1m22s
fix job positions
2026-09-03 13:01:36 -04:00

416 lines
15 KiB
PHP

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Careers | Al Rahma Sunday School</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="Volunteer careers and openings at Al Rahma Sunday School" name="description">
<link href="<?= base_url('assets/images/favicon.ico') ?>" rel="icon">
<link href="<?= base_url('assets/boot_css/bootstrap.min.css') ?>" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Amiri:wght@400;700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.4.1/font/bootstrap-icons.css" rel="stylesheet">
<link href="<?= base_url('css/style.css') ?>" rel="stylesheet">
<style>
:root {
--ink: #16262B;
--ink-soft: #3E4E51;
--paper: #F3EFE3;
--paper-deep: #E9E3D2;
--sage: #E7EEE6;
--primary: #0B5D52;
--primary-dark: #073F38;
--accent: #C6963C;
--accent-soft: #EFE1BC;
--line: rgba(22, 38, 43, 0.12);
}
* {
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
color: var(--ink);
background-color: var(--paper);
overflow-x: hidden;
line-height: 1.6;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Amiri', serif;
font-weight: 700;
color: var(--ink);
line-height: 1.2;
}
p {
color: var(--ink-soft);
}
.rule {
width: 56px;
height: 3px;
background-color: var(--accent);
border: none;
margin: 0 0 1.25rem;
}
.btn-brand {
display: inline-flex;
align-items: center;
gap: 0.6rem;
background-color: var(--primary);
color: #fff;
border: none;
border-radius: 2px;
padding: 0.85rem 1.75rem;
font-weight: 600;
font-size: 0.95rem;
text-decoration: none;
transition: background-color 0.2s ease;
}
.btn-brand:hover {
background-color: var(--primary-dark);
color: #fff;
}
.btn-brand-sm {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background-color: var(--primary);
color: #fff;
border: none;
border-radius: 2px;
padding: 0.6rem 1.25rem;
font-weight: 600;
font-size: 0.9rem;
text-decoration: none;
}
.btn-brand-sm:hover {
background-color: var(--primary-dark);
color: #fff;
}
.btn-brand-outline {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border: 1.5px solid var(--ink);
color: var(--ink);
border-radius: 999px;
padding: 0.5rem 1.25rem;
font-weight: 600;
font-size: 0.9rem;
text-decoration: none;
}
.btn-brand-outline:hover {
background-color: var(--ink);
color: var(--paper);
}
.btn-brand-danger {
display: inline-flex;
align-items: center;
gap: 0.5rem;
border: 1.5px solid #a33;
color: #a33;
border-radius: 999px;
padding: 0.5rem 1.25rem;
font-weight: 600;
font-size: 0.9rem;
text-decoration: none;
}
.btn-brand-danger:hover {
background-color: #a33;
color: #fff;
}
/* Navbar */
.navbar {
background-color: var(--paper) !important;
border-bottom: 1px solid var(--line);
padding-top: 0.6rem;
padding-bottom: 0.6rem;
}
.navbar .nav-link {
color: var(--ink-soft);
font-weight: 500;
}
.navbar .nav-link:hover {
color: var(--primary);
}
.navbar-text {
color: var(--ink-soft);
font-size: 0.9rem;
}
/* Hero */
.careers-hero {
position: relative;
background: linear-gradient(rgba(7, 63, 56, .88), rgba(7, 63, 56, .88)), url("<?= base_url('images/call-to-action.jpg') ?>") center center / cover no-repeat;
min-height: 320px;
display: flex;
align-items: center;
color: var(--paper);
overflow: hidden;
}
.careers-hero::before {
content: "";
position: absolute;
inset: 0;
opacity: 0.14;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 84 84'%3E%3Cg fill='none' stroke='%23C6963C' stroke-width='1'%3E%3Cpath d='M42 2 L62 22 L42 42 L22 22 Z'/%3E%3Cpath d='M0 42 L20 22 L40 42 L20 62 Z'/%3E%3Cpath d='M42 42 L62 22 L84 42 L62 62 Z'/%3E%3Cpath d='M42 42 L62 62 L42 84 L22 62 Z'/%3E%3C/g%3E%3C/svg%3E");
background-size: 84px 84px;
pointer-events: none;
}
.careers-hero .container {
position: relative;
}
.careers-hero h1 {
color: var(--paper);
font-size: 2.6rem;
margin-bottom: 1rem;
}
.careers-hero p.lead {
color: #DCE6DD;
font-size: 1.1rem;
max-width: 56ch;
}
/* Culture strip */
.culture-item {
background: #ffffff;
border-top: 3px solid var(--accent);
padding: 1.75rem 1.5rem;
height: 100%;
}
.culture-item h3 {
font-size: 1.25rem;
margin-bottom: 0.6rem;
}
.culture-item p {
margin-bottom: 0;
}
/* Openings */
.openings-section {
background-color: var(--sage);
}
.openings-intro h2 {
font-size: 2rem;
}
.opening-card {
border: 1px solid var(--line);
background: #ffffff;
height: 100%;
padding: 1.75rem 1.75rem 3rem;
position: relative;
}
.opening-new-badge {
position: absolute;
top: 0;
right: 0;
display: inline-flex;
align-items: center;
gap: 0.35rem;
border-radius: 0 0 0 8px;
background: var(--accent-soft);
color: var(--primary-dark);
border: 1px solid rgba(198, 150, 60, 0.45);
padding: 0.25rem 0.65rem;
font-size: 0.78rem;
font-weight: 700;
line-height: 1;
}
.opening-new-badge i {
color: var(--accent);
font-size: 0.75rem;
}
.opening-card h3 {
color: var(--ink);
font-size: 1.3rem;
margin-bottom: 0.4rem;
}
.opening-meta {
color: var(--primary);
font-weight: 600;
font-size: 0.85rem;
letter-spacing: 0.01em;
margin-bottom: 1rem;
}
.opening-clicks {
position: absolute;
right: 1.25rem;
bottom: 1rem;
color: var(--ink-soft);
font-size: 0.85rem;
font-weight: 600;
line-height: 1;
}
.opening-list {
padding-left: 1.1rem;
margin-bottom: 1.5rem;
color: var(--ink-soft);
}
.opening-list li {
margin-bottom: 0.4rem;
}
.opening-list li::marker {
color: var(--accent);
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light sticky-top px-4 px-lg-5">
<a href="<?= base_url('/') ?>" class="navbar-brand d-flex align-items-center">
<img src="<?= base_url('images/logo.png') ?>" alt="Al Rahma Sunday School" style="height: 56px; width: 56px; border-radius: 50%; object-fit: contain; background-color: #fff;">
</a>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarCollapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<div class="navbar-nav mx-auto"></div>
<div class="d-flex align-items-center">
<?php if (session()->get('is_logged_in')): ?>
<span class="navbar-text me-3">Welcome, <?= esc(session()->get('user_name')) ?></span>
<a href="<?= base_url('/dashboard') ?>" class="btn-brand-outline me-2">Dashboard <i class="fa fa-tachometer-alt"></i></a>
<a href="<?= base_url('/logout') ?>" class="btn-brand-danger">Logout <i class="fa fa-sign-out-alt"></i></a>
<?php else: ?>
<a href="<?= base_url('/login') ?>" class="btn-brand-outline me-2">Login <i class="fa fa-arrow-right"></i></a>
<a href="<?= base_url('/register') ?>" class="btn-brand-sm">Register <i class="fa fa-arrow-right"></i></a>
<?php endif; ?>
</div>
</div>
</nav>
<header class="careers-hero">
<div class="container py-5">
<div class="col-lg-8">
<h1>Open Positions</h1>
<p class="lead mb-4">Serve with Al Rahma Sunday School and help students grow in Quran, Arabic, Islamic Studies and character.</p>
<a class="btn-brand" href="#openings">View Openings <i class="fa fa-arrow-down"></i></a>
</div>
</div>
</header>
<main>
<section class="container-xxl py-5">
<div class="container">
<div class="row g-4">
<div class="col-md-4">
<div class="culture-item">
<h3>Faith-Centered Work</h3>
<p>Support a school community focused on Islamic learning, strong character and service.</p>
</div>
</div>
<div class="col-md-4">
<div class="culture-item">
<h3>Supportive Team</h3>
<p>Collaborate with teachers, assistants and administrators committed to student success.</p>
</div>
</div>
<div class="col-md-4">
<div class="culture-item">
<h3>Sunday Schedule</h3>
<p>Volunteer in a structured weekend program serving families in the Greater Lowell community.</p>
</div>
</div>
</div>
</div>
</section>
<section id="openings" class="openings-section py-5">
<div class="container">
<div class="text-center openings-intro mb-5">
<hr class="rule mx-auto">
<h2>Current Open Positions</h2>
<p class="mb-0">Review the available roles below and apply by creating an account.</p>
<p class="mb-0 fw-bold">All positions are non-paid and take place at ISGL: 5 Courthouse Lane, Chelmsford, MA 01824</p>
</div>
<div class="row g-4">
<?php if (!empty($positions)): ?>
<?php foreach ($positions as $position): ?>
<?php
$postedAt = !empty($position['posted_at']) ? strtotime((string) $position['posted_at']) : false;
$isNewPosition = $postedAt !== false && $postedAt >= strtotime('-14 days');
?>
<div class="col-lg-4">
<article class="opening-card">
<?php if ($isNewPosition): ?>
<span class="opening-new-badge"><i class="fa fa-star" aria-hidden="true"></i> New</span>
<?php endif; ?>
<h3><?= esc($position['title']) ?></h3>
<div class="opening-meta">
<?= esc($position['department'] ?? '') ?>
<?php if (!empty($position['location'])): ?> &middot; <?= esc($position['location']) ?><?php endif; ?>
<?php if (!empty($position['employment_type'])): ?> &middot; <?= esc($position['employment_type']) ?><?php endif; ?>
<?php if (!empty($position['posted_at'])): ?><br><?= esc(date('M j, Y', strtotime((string) $position['posted_at']))) ?><?php endif; ?>
</div>
<?php if (!empty($position['description'])): ?>
<?php
$descriptionPreview = trim(preg_replace('/\s+/', ' ', (string) $position['description']));
$descriptionWords = preg_split('/\s+/', $descriptionPreview) ?: [];
if (count($descriptionWords) > 32) {
$descriptionPreview = implode(' ', array_slice($descriptionWords, 0, 32)) . '...';
}
?>
<p class="mb-4"><?= esc($descriptionPreview) ?></p>
<?php endif; ?>
<a class="btn-brand-sm" href="<?= site_url('careers/' . $position['position_id'] . '/details') ?>">View Details <i class="fa fa-arrow-right"></i></a>
<div class="opening-clicks"><?= esc(number_format((int) ($position['details_click_count'] ?? 0))) ?> views</div>
</article>
</div>
<?php endforeach; ?>
<?php else: ?>
<div class="col-lg-8 mx-auto">
<article class="opening-card text-center">
<h3>No open positions right now</h3>
<p class="mb-0">Please check back for future opportunities to serve with Al Rahma Sunday School.</p>
</article>
</div>
<?php endif; ?>
</div>
</div>
</section>
</main>
<?php include(__DIR__ . '/partials/footer.php'); ?>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>