3 Commits

Author SHA1 Message Date
e02b7abb0a Merge branch 'master' into BenBack 2026-04-09 16:14:59 +00:00
edfa8c93b9 Merge remote-tracking branch 'origin/BenBack' into BenBack 2026-04-09 18:14:18 +02:00
f933065275 Ready for prod. 2026-04-09 18:14:09 +02:00
13 changed files with 84 additions and 19 deletions

View File

@@ -3,7 +3,7 @@
// Config
return [
'website_url' => 'http://127.0.0.1:8080/',
'website_name' => 'Les recettes des Papis',
'website_name' => 'Les recettes de Papis',
'website_path' => APP_ROOT,
];

View File

@@ -31,7 +31,7 @@ html, body{
#logo {
background-color: aqua;
background-image: url("Logo.jpg");
background-image: url("../images/Logo.jpg");
/*background:no-repeat;*/
height: 103px;
width: 141px;
@@ -131,6 +131,34 @@ body {
/*display:none;*/
}
.title-site {
text-align: center;
}
.title {
width: 100%;
height: 50%;
font-size: 100px;
}
.random-proposition {
gap: 5%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.recommandation img {
max-width: calc( 7vh + 7vw );
max-height: calc( 7vh + 7vw );
}
.line-acceuil {
color: #03be90;
box-shadow: 20px 6px 8px #007054;
}
.tag-selected-div {
flex: 4;
}
@@ -623,5 +651,9 @@ footer{
border-top: 1px solid black;
}
.meta-recettes {
text-align: left;
}

View File

@@ -40,7 +40,7 @@ document.addEventListener("DOMContentLoaded", function(){
if (data.success) {
let new_elem = document.createElement("option");
new_elem.setAttribute("value",document.getElementById('recette-form-ingr-nom').value);
new_elem.setAttribute("value",data.id);
new_elem.innerText = document.getElementById('recette-form-ingr-nom').value;
cible.appendChild(new_elem);
@@ -86,7 +86,7 @@ document.addEventListener("DOMContentLoaded", function(){
if (data.success) {
let new_elem = document.createElement("option");
new_elem.setAttribute("value",nomTag.value);
new_elem.setAttribute("value",data.id);
new_elem.innerText = nomTag.value;
cible.appendChild(new_elem);
@@ -146,7 +146,11 @@ document.addEventListener("DOMContentLoaded", function(){
else {
reponse.json().then( data => {
if (data.success) {
alert( "Envoyé" );
if( IS_EDIT )
alert( "Votre recette a été ajouté, vous allez être redirigé." );
else
alert( "Votre recette a été ajouté, vous allez être redirigé." );
window.location.href = data.route !== null ? data.route : window.location.origin;
} else {
alert( data.error || "" );
}

View File

@@ -15,7 +15,7 @@ class IngredientManagementController extends Controller {
public static function defineRoutes(): array
{
return [
self::Route( routeUrl: '/manage/ingredients', routeName: 'manage->ingredients', routeAction: 'index' ),
self::Route( routeUrl: '/manage/ingredients', routeName: 'manage->ingredients', routeAction: 'index', pageHeadTitle: 'Gestion des ingredients' ),
self::Route( routeUrl: '/ingredients/edit/{int}', routeName: 'ingredients->edit', routeAction: 'edit', routeMethods: [ 'POST' ] ),
self::Route( routeUrl: '/ingredients/delete/{int}', routeName: 'ingredients->delete', routeAction: 'delete' ),
];

View File

@@ -6,6 +6,7 @@ use App\Domain\Controller;
use App\Helpers\UploadFiles;
use App\Http\JSONResponse;
use App\Http\Request;
use App\Kernel;
class IngredientsAPIController extends Controller {
@@ -39,7 +40,7 @@ class IngredientsAPIController extends Controller {
if( !new IngredientRepository()->add( $ingredient ) )
JSONResponse::sendError( [ 'error' => 'An error occured while adding ingredient' ] );
JSONResponse::sendSuccess( [ 'image_url' => $urlOrError ] );
JSONResponse::sendSuccess( [ 'image_url' => $urlOrError, 'id' => Kernel::$DB->pdo->lastInsertId() ] );
}

View File

@@ -3,6 +3,7 @@
namespace App\Domain\Pages;
use App\Domain\Controller;
use App\Domain\Recettes\RecetteRepository;
use App\Infrastructure\View;
/**
@@ -28,7 +29,7 @@ class PagesController extends Controller {
* @return void
*/
public function index(): View {
return new View( 'home', [ 'ok' => 'bla' ] );
return new View( 'home', [ 'recettes' => new RecetteRepository()->getAllRecettesBrowse(1, 3 ) ] );
}
}

View File

@@ -9,6 +9,7 @@ use App\Helpers\UploadFiles;
use App\Http\JSONResponse;
use App\Http\Request;
use App\Http\Router;
use App\Kernel;
class RecettesAPIController extends Controller {
@@ -87,6 +88,7 @@ class RecettesAPIController extends Controller {
// Vérification d'une entrée qui existerait déjà.
$slug = strtolower( $name );
$slug = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $slug);
$slug = str_replace( ' ', '', $slug );
$recetteRepo = new RecetteRepository();
@@ -116,7 +118,7 @@ class RecettesAPIController extends Controller {
}
// Pour actualiser l'ID.
$recette = $recetteRepo->getBySlug( $slug );
$recette = $recetteRepo->getById( Kernel::$DB->pdo->lastInsertId() );
// Ajout du lien ingrédients recettes.
foreach( $ingredientsId as $ingredientId ){
@@ -136,7 +138,7 @@ class RecettesAPIController extends Controller {
}
}
JSONResponse::sendSuccess( [ 'recette' => $recette ] );
JSONResponse::sendSuccess( [ 'recette' => $recette, 'route' => Router::getRouteURL('recettes->show', $recette->slug ) ] );
}
public function edit(){
@@ -180,10 +182,11 @@ class RecettesAPIController extends Controller {
// Vérification d'une entrée qui existerait déjà.
$slug = strtolower( $name );
$slug = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $slug);
$slug = str_replace( ' ', '', $slug );
$recette->titre_recette = $name;
$recette->slug = $slug;
// $recette->slug = $slug;
$recette->temps_de_preparation = intval( $temps <= 0 ? 1 : $temps );
$recette->description_recette = $description;
@@ -273,7 +276,7 @@ class RecettesAPIController extends Controller {
}
}
JSONResponse::sendSuccess( [ 'recette' => $recette ] );
JSONResponse::sendSuccess( [ 'recette' => $recette, 'route' => Router::getRouteURL('recettes->show', $recette->slug ) ] );
}
public function delete(){

View File

@@ -15,8 +15,8 @@ class RecettesManagementController extends Controller {
public static function defineRoutes(): array
{
return [
self::Route( routeUrl: '/recettes/create', routeName: 'recettes->create', routeAction: 'create' ),
self::Route( routeUrl: '/recettes/edit/{int}', routeName: 'recettes->edit', routeAction: 'edit' ),
self::Route( routeUrl: '/recettes/create', routeName: 'recettes->create', routeAction: 'create', pageHeadTitle: 'Créer une recette' ),
self::Route( routeUrl: '/recettes/edit/{int}', routeName: 'recettes->edit', routeAction: 'edit', pageHeadTitle: 'Modifier une recette' ),
self::Route( routeUrl: '/recettes/delete/{int}', routeName: 'recettes->delete', routeAction: 'delete' ),
];

View File

@@ -15,7 +15,7 @@ class TagManagementController extends Controller {
public static function defineRoutes(): array
{
return [
self::Route( routeUrl: '/manage/tags', routeName: 'manage->tags', routeAction: 'index' ),
self::Route( routeUrl: '/manage/tags', routeName: 'manage->tags', routeAction: 'index', pageHeadTitle: 'Gestion des tags' ),
self::Route( routeUrl: '/tags/edit/{int}', routeName: 'tags->edit', routeAction: 'edit', routeMethods: [ 'POST' ] ),
self::Route( routeUrl: '/tags/delete/{int}', routeName: 'tags->delete', routeAction: 'delete' ),
];

View File

@@ -6,6 +6,7 @@ use App\Domain\Controller;
use App\Helpers\UploadFiles;
use App\Http\JSONResponse;
use App\Http\Request;
use App\Kernel;
class TagsAPIController extends Controller {
@@ -32,7 +33,7 @@ class TagsAPIController extends Controller {
if( !new TagRepository()->add( $tag ) )
JSONResponse::sendError( [ 'error' => 'An error occured while adding tag' ] );
JSONResponse::sendSuccess();
JSONResponse::sendSuccess( [ 'id' => Kernel::$DB->pdo->lastInsertId() ] );
}

View File

@@ -1 +1,23 @@
<h1>Coucou</h1>
<?php use App\Infrastructure\View as V; ?>
<div class="content">
<div class="title-site">
<h1 class="title">Les Recettes De Papis</h1>
<hr class="line-acceuil">
<h3>Proposition de recette :</h3>
</div>
<div class="random-proposition">
<?php foreach( V::arg( 'recettes' ) as $recette ): ?>
<a class="recette-icone" href="<?php V::routeUrl( 'recettes->show', $recette->slug ); ?>">
<img class="recette-preview-image" src="<?php echo $recette->photo; ?>">
<div class="recette-icone-content">
<h3><?php echo $recette->titre_recette; ?></h3>
<ul class="meta-recettes">
<li>Temps de préparation : <?php echo $recette->temps_de_preparation; ?> minutes</li>
<li>Nombre d'ingrédients : <?php echo $recette->getNumberOfIngredients(); ?></li>
</ul>
</div>
</a>
<?php endforeach; ?>
</div>
</div>

View File

@@ -6,6 +6,7 @@
<title><?php echo V::getHeadTitle(); ?></title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="<?php V::assetUrl( 'css/style.css' ); ?>" />
<link rel="icon" type="image/x-icon" href="<?php V::assetUrl( 'images/Logo.ico' ); ?>" />
</head>
<body>
<header id="header">

View File

@@ -8,8 +8,8 @@
<img class="recette-preview-image" src="<?php echo $recette->photo; ?>">
<div class="recette-icone-content">
<h3><?php echo $recette->titre_recette; ?></h3>
<ul>
<li>Temps de préparation : <?php echo $recette->temps_de_preparation; ?></li>
<ul class="meta-recettes">
<li>Temps de préparation : <?php echo $recette->temps_de_preparation; ?> minutes</li>
<li>Nombre d'ingrédients : <?php echo $recette->getNumberOfIngredients(); ?></li>
</ul>
</div>