- Introduced a new workspace for FaceAI in package.json. - Implemented FaceAI handoff logic in faceai_handoff.php, including identity verification and token signing. - Created faceai_return.php to handle return requests from FaceAI, validating tokens and forwarding results. - Developed faceai_simulator.php and faceai_simulator_view.php for simulating the FaceAI interface with demo photos. - Enhanced rus-ecom-240621.js to support new FaceAI features, including dynamic URL building and button integration. - Added faceai_config.php for configuration management, including environment variable handling and utility functions. - Updated HTML structure and styles in simulator view for better user experience.
184 lines
8.5 KiB
PHP
184 lines
8.5 KiB
PHP
<?php
|
|
|
|
function faceai_sim_html($value)
|
|
{
|
|
return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
|
|
}
|
|
|
|
function faceai_sim_render_page(array $options)
|
|
{
|
|
$raceId = $options['raceId'];
|
|
$lang = $options['lang'];
|
|
$raceSlug = $options['raceSlug'];
|
|
$raceName = $options['raceName'];
|
|
$returnUrl = $options['returnUrl'];
|
|
$banner = $options['banner'];
|
|
$totalLabel = $options['totalLabel'];
|
|
$photos = $options['photos'];
|
|
$showSimulatorBootstrap = !empty($options['showSimulatorBootstrap']);
|
|
|
|
?><!doctype html>
|
|
<html lang="<?php echo faceai_sim_html($lang); ?>">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<title>FaceAI Legacy Simulator</title>
|
|
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
|
<link rel="stylesheet" href="css/font-awesome.min.css">
|
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i" rel="stylesheet">
|
|
<link href="css/custom-style.css" rel="stylesheet">
|
|
<style>
|
|
.page-shell {
|
|
max-width: 1120px;
|
|
margin: 32px auto;
|
|
padding: 0 16px;
|
|
}
|
|
.sim-banner {
|
|
background: #efe4d2;
|
|
border: 1px solid #c9ab83;
|
|
padding: 14px 16px;
|
|
margin-bottom: 24px;
|
|
}
|
|
.gallery-grid {
|
|
display: grid;
|
|
gap: 16px;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
}
|
|
.gallery-card {
|
|
background: #fff;
|
|
border: 1px solid #decbb5;
|
|
padding: 16px;
|
|
}
|
|
.gallery-thumb {
|
|
min-height: 120px;
|
|
background: #efe4d2;
|
|
display: grid;
|
|
place-items: center;
|
|
margin-bottom: 12px;
|
|
color: #6d5a46;
|
|
overflow: hidden;
|
|
}
|
|
.gallery-thumb img {
|
|
max-width: 100%;
|
|
max-height: 120px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a id="top"></a>
|
|
<nav class="navbar fixed-top navbar-expand-lg navbar-light bg-white fixed-top">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="faceai_simulator.php?raceId=<?php echo faceai_sim_html($raceId); ?>&lang=<?php echo faceai_sim_html($lang); ?>"><img src="images/layout/regalami-un-sorriso-ets-640.png" alt="Regalami Un Sorriso Ets" width="100"></a>
|
|
<button class="navbar-toggler navbar-toggler-right" type="button"><span class="navbar-toggler-icon"></span></button>
|
|
<div class="collapse navbar-collapse show" id="navbarResponsive">
|
|
<ul class="navbar-nav">
|
|
<li class="nav-item"><a class="nav-link" href="index.jsp">Home</a></li>
|
|
<li class="nav-item"><a class="nav-link" href="associazione.jsp">Associazione</a></li>
|
|
<li class="nav-item"><a class="nav-link active" href="faceai_simulator.php?raceId=<?php echo faceai_sim_html($raceId); ?>&lang=<?php echo faceai_sim_html($lang); ?>">Foto</a></li>
|
|
<li class="nav-item dropdown show"><a class="nav-link btn btn-sm btn-warning dropdown-toggle" href="#">Archivio</a></li>
|
|
<li class="nav-item"><a href="#"><img src="images/btn_donateCC_LG.gif" border="0" alt="PayPal"></a></li>
|
|
</ul>
|
|
<ul class="navbar-nav ml-auto">
|
|
<li class="nav-item dropdown"><a class="nav-link dropdown-toggle active" href="#"><i class="fa fa-user" aria-hidden="true"></i> Il mio account</a></li>
|
|
<li class="nav-item"><a class="nav-link" href="https://it-it.facebook.com/pg/Regalami-un-sorriso-ETS-189377806523/community/"><img src="images/FB-f-Logo__blue_29.png" class="img-fluid" alt="Facebook"></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="container my-3 page-shell">
|
|
<div class="row mb-5">
|
|
<div class="col-lg-12">
|
|
<h1 class="my-4"><?php echo faceai_sim_html($raceName); ?></h1>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<img src="images/layout/Logo_RUS_ETS_tricolore_3-1.jpg" class="img-fluid border border-warning" alt="Gara">
|
|
</div>
|
|
<div class="col-md-10">
|
|
<div class="row riepilogo">
|
|
<div class="col-md-3"><p><i class="fa fa-map-marker fa-lg text-warning" aria-hidden="true"></i> Firenze</p></div>
|
|
<div class="col-md-3"><p><i class="fa fa-calendar fa-lg text-warning" aria-hidden="true"></i> 07/04/2026</p></div>
|
|
<div class="col"><p><i class="fa fa-camera-retro fa-lg text-warning"></i> <?php echo faceai_sim_html($totalLabel); ?></p></div>
|
|
</div>
|
|
<div class="sim-banner"><?php echo $banner; ?></div>
|
|
|
|
<form class="bg-light p-3 border" onsubmit="return searching()">
|
|
<input name="id_gara" id="id_gara" type="hidden" value="<?php echo faceai_sim_html($raceId); ?>">
|
|
<input name="id_foto" id="id_foto" type="hidden">
|
|
<input name="garaDesc" id="garaDesc" type="hidden" value="<?php echo faceai_sim_html($raceSlug); ?>">
|
|
<input name="lang" id="lang" type="hidden" value="<?php echo faceai_sim_html($lang); ?>">
|
|
<input name="pageNumber" id="pageNumber" type="hidden" value="1">
|
|
<input name="actionPage" id="actionPage" type="hidden" value="Foto.abl">
|
|
<input name="totPageNumber" id="totPageNumber" type="hidden" value="5">
|
|
<div class="row align-items-end">
|
|
<div class="form-group col-12 col-md-4">
|
|
<label for="id_puntoFoto">Punti Foto</label>
|
|
<select name="id_puntoFoto" id="id_puntoFoto" onchange="searchingPF()" class="custom-select form-control form-control-sm mb-2 mb-sm-0">
|
|
<option value="">-- Punti Foto --</option>
|
|
<option value="arrivo">Arrivo</option>
|
|
<option value="centro">Centro</option>
|
|
<option value="ponte">Ponte</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group col-12 col-md-4">
|
|
<label for="tipoPuntoFoto">Descrizione/Orario</label>
|
|
<select name="tipoPuntoFoto" id="tipoPuntoFoto" onchange="searchingTPF()" class="custom-select form-control form-control-sm mb-2 mb-sm-0">
|
|
<option value="">-- Descrizione/Orario --</option>
|
|
<option value="arrivo-09-15">Arrivo 09:15</option>
|
|
<option value="centro-08-45">Centro 08:45</option>
|
|
<option value="ponte-08-10">Ponte 08:10</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group col-12 col-md-2">
|
|
<label for="pageRow">Foto per pagina</label>
|
|
<select name="pageRow" id="pageRow" class="custom-select form-control form-control-sm mb-2 mb-sm-0">
|
|
<option value="24">24</option>
|
|
<option value="36">36</option>
|
|
<option value="48">48</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group col-12 col-md-2">
|
|
<label for="pettorale">Pettorale</label>
|
|
<input name="pettorale" id="pettorale" value="245" class="form-control form-control-sm mb-2 mb-sm-0">
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="gallery-grid">
|
|
<?php foreach ($photos as $photo): ?>
|
|
<div class="gallery-card">
|
|
<div class="gallery-thumb">
|
|
<?php if (!empty($photo['previewUrl'])): ?>
|
|
<img src="<?php echo faceai_sim_html($photo['previewUrl']); ?>" alt="<?php echo faceai_sim_html($photo['label']); ?>">
|
|
<?php else: ?>
|
|
<?php echo faceai_sim_html($photo['thumb'] ?? $photo['id']); ?>
|
|
<?php endif; ?>
|
|
</div>
|
|
<strong><?php echo faceai_sim_html($photo['label'] ?? $photo['id']); ?></strong><br>
|
|
<small>ID foto: <?php echo faceai_sim_html($photo['id'] ?? ''); ?></small><br>
|
|
<small>Punto foto: <?php echo faceai_sim_html($photo['checkpoint'] ?? '-'); ?></small>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if ($showSimulatorBootstrap): ?>
|
|
<script>
|
|
window.faceAiSimulator = {
|
|
handoffUrl: 'faceai_handoff.php',
|
|
returnUrl: <?php echo json_encode($returnUrl); ?>,
|
|
devUserId: '1',
|
|
devDisplayName: 'Mario Rossi',
|
|
devEmail: 'mario.rossi@example.test',
|
|
devMembershipStatus: 'active'
|
|
};
|
|
</script>
|
|
<?php endif; ?>
|
|
<script src="vendor/jquery/jquery.min.js"></script>
|
|
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>
|
|
<script src="_js/rus-ecom-240621.js"></script>
|
|
</body>
|
|
</html>
|
|
<?php
|
|
}
|