= escapeHtml($flag['text']) ?>
Progress
= projectProgressHtml($stats) ?>
Time= floatval($project['project_budget_hours']) > 0 ? ' / budget' : '' ?>
= projectTimeHtml($project, $stats) ?>
= projectHoursText($stats['unbilled_seconds']) ?> billable, not invoiced
- Manager
- = formatAssignee($project['project_manager'], $project['user_name'], $project['user_avatar'], false, 'No manager') ?>
- Contact
-
= contactLink($project_client_id, $project['project_contact_id'], $project['contact_name'], $project['contact_photo'] ?? '') ?>
- Start
- = escapeHtml(date('D M j, Y', strtotime($project['project_start']))) ?>
- Due
- = $project['project_due'] ? escapeHtml(date('D M j, Y', strtotime($project['project_due']))) : '-' ?>
- Completed
- = escapeHtml(date('D M j, Y', strtotime($project['project_completed_at']))) ?>
Scope
= nl2br(escapeHtml(mb_strlen($description) > 600 ? mb_substr($description, 0, 600) . '…' : $description)) ?>
Open tickets count($open_tickets)) { ?> - = count($open_tickets) ?> of = $stats['open'] ?>
= ticketTableHtml($open_tickets, ['compact' => true]) ?>
= $stats['tickets'] ? 'None - every ticket is resolved or closed.' : 'No tickets on it yet.' ?>