Created Complete Tab System: - header.php: Shared navigation between Asset Submission and Global to Local tabs - global-to-local.php: Upload page with drag & drop, progress tracker, preview - global-to-local.js: Frontend logic for upload, processing, preview, and Box upload Visual Progress System: - 6-stage progress tracker with icons and status (⏸️ pending, 🔄 processing, ✅ success, ⚠️ warning, ❌ error) - Real-time status updates for each stage - Detailed error cards with actionable messages - Warning cards for data quality issues - Success cards with completion info Features: - Drag & drop CSV upload with file size validation - Step-by-step progress visualization - Error reporting at each stage (upload, parse, campaign, OMG API, business unit, transform) - CSV preview table (first 50 rows) before Box upload - Download preview CSV before committing - User approval required before Box upload - Summary cards showing input/output counts, campaign, business unit Error Handling: - File validation errors (wrong type, too large, empty) - CSV parsing errors (malformed, wrong columns) - Campaign extraction errors (invalid filename) - OMG API errors (404, timeout, auth failure) - Business unit mapping errors (unrecognized brands) - Date transformation errors (invalid formats) - Box upload errors (permissions, folder issues) UI Enhancements: - Tab navigation with active state highlighting - Professional error cards with details and actions - Responsive design for mobile/desktop - Maintains black/yellow L'Oréal brand colors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
34 lines
1.2 KiB
PHP
34 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* Shared Header and Navigation
|
|
*/
|
|
|
|
// Get current page
|
|
$currentPage = basename($_SERVER['PHP_SELF'], '.php');
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title><?php echo $pageTitle ?? 'L\'Oréal Box Asset Submission'; ?></title>
|
|
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="css/styles.css">
|
|
</head>
|
|
<body>
|
|
<div class="page-header">
|
|
<div class="header-content">
|
|
<h1>L'Oréal Box Asset Submission</h1>
|
|
<div class="user-info">
|
|
<span><?php echo htmlspecialchars($user['email']); ?></span>
|
|
</div>
|
|
</div>
|
|
<nav class="tab-navigation">
|
|
<a href="index.php" class="tab <?php echo $currentPage === 'index' ? 'active' : ''; ?>">
|
|
Asset Submission
|
|
</a>
|
|
<a href="global-to-local.php" class="tab <?php echo $currentPage === 'global-to-local' ? 'active' : ''; ?>">
|
|
Global to Local
|
|
</a>
|
|
</nav>
|
|
</div>
|