Commit e6d12607 by Juan Montilla

Foto de perfil y recetas asociadas a usuarios

parent b09851d8
...@@ -37,23 +37,38 @@ $routes->match(['get', 'post'], '/loginAjax', [User::class, 'loginAjax']); ...@@ -37,23 +37,38 @@ $routes->match(['get', 'post'], '/loginAjax', [User::class, 'loginAjax']);
$routes->match(['get', 'post'], '/registerAjax', [User::class, 'registerAjax']); $routes->match(['get', 'post'], '/registerAjax', [User::class, 'registerAjax']);
$routes->match(['get'], '/home', [User::class, 'user_ok']); $routes->match(['get'], '/home', [User::class, 'user_ok']);
// Ruta para boorar una receta dada un id
$routes->get('/recipes/delete/(:num)', 'RecipesController::delete/$1');
// Ruta cuando se cierra la sesión
$routes->get('/logout', 'User::logout');
// Ruta para ver una receta
$routes->get('/recipe/(:num)', 'RecipesController::view_recipe/$1'); $routes->get('/recipe/(:num)', 'RecipesController::view_recipe/$1');
// Ruta para obtener una imagen de una receta dado un id // Ruta para obtener una imagen de una receta dado un id
$routes->get('recipe/image/(:num)', 'RecipesController::show_image/$1'); $routes->get('recipe/image/(:num)', 'RecipesController::show_image/$1');
// Ruta para obtener un nombre de usuario dado un email
$routes->get('username/(:any)', 'User::show_name/$1');
// Rutas para formulario de ingresar recetas // Rutas para formulario de ingresar recetas
$routes->get('/insert_recipe', 'InsertRecipeController::index'); $routes->get('/insert_recipe', 'InsertRecipeController::index', ['filter' => 'user_auth']);
$routes->match(['get', 'post'], '/search_ingredient', 'InsertRecipeController::search_ingredient'); $routes->match(['get', 'post'], '/search_ingredient', 'InsertRecipeController::search_ingredient');
$routes->post('/insert_recipe', 'InsertRecipeController::insert_recipe'); $routes->post('/insert_recipe', 'InsertRecipeController::insert_recipe');
// Ruta para la búsqueda de recetas // Ruta para la búsqueda de recetas
$routes->match(['get', 'post'], '/search_recipe', 'RecipesController::search_recipe'); $routes->match(['get', 'post'], '/search_recipe', 'RecipesController::search_recipe');
// Ruta para vista "Mis recetas"
$routes->get('/myrecipes', 'User::personalRecipes', ['filter' => 'user_auth']);
// Ruta para vista "Mi perfil"
$routes->get('/profile', 'User::myprofile', ['filter' => 'user_auth']);
$routes->post('/cambiarFoto', 'User::changeProfilePhoto');
$routes->get('login','Pages::viewLogin'); $routes->get('login','Pages::viewLogin');
$routes->get('users','User::list'); $routes->get('users', 'User::list', ['filter' => 'admin_auth']);
$routes->get('home','Pages::prueba'); $routes->get('home','Pages::prueba');
$routes->get('(:segment)', 'Home::index'); $routes->get('(:segment)', 'Home::index');
......
...@@ -28,7 +28,7 @@ class InsertRecipeController extends Controller ...@@ -28,7 +28,7 @@ class InsertRecipeController extends Controller
} }
public function insert_recipe() public function insert_recipe()
{ {
// Cargar los modelos necesarios // Cargar los modelos necesarios
$recipeModel = new \App\Models\RecipesModel(); $recipeModel = new \App\Models\RecipesModel();
$recipesIngredientModel = new \App\Models\RecipesIngredientModel(); $recipesIngredientModel = new \App\Models\RecipesIngredientModel();
...@@ -47,6 +47,13 @@ class InsertRecipeController extends Controller ...@@ -47,6 +47,13 @@ class InsertRecipeController extends Controller
$recipeData['photo'] = $photoBlob; $recipeData['photo'] = $photoBlob;
} }
// Obtener el email del usuario de la sesión
$session = session();
$userEmail = $session->get('user')->email;
// Agregar el email del usuario a los datos de la receta
$recipeData['email_user'] = $userEmail;
// Insertar la receta en la tabla 'recipes' // Insertar la receta en la tabla 'recipes'
$recipeId = $recipeModel->insert($recipeData); $recipeId = $recipeModel->insert($recipeData);
...@@ -59,8 +66,9 @@ class InsertRecipeController extends Controller ...@@ -59,8 +66,9 @@ class InsertRecipeController extends Controller
]); ]);
} }
// Redireccionar a la página principal (o cualquier otra página que desees) // Redireccionar a la página principal
return redirect()->to('/home'); return redirect()->to('/home');
} }
} }
...@@ -14,6 +14,13 @@ class RecipesController extends Controller ...@@ -14,6 +14,13 @@ class RecipesController extends Controller
$recipe = $recipesModel->find($recipe_id); $recipe = $recipesModel->find($recipe_id);
$ingredients = $recipesModel->get_recipe_ingredients($recipe_id); $ingredients = $recipesModel->get_recipe_ingredients($recipe_id);
// Obtén el nombre de usuario a partir del correo electrónico
$userModel = new \App\Models\UserModel();
$email = $recipe->email_user;
$user = $userModel->where('email', $email)->first();
$username = $user->username;
$photo = $user->photo;
if ($recipe == null) { if ($recipe == null) {
// Mostrar un mensaje de error si no se encuentra la receta // Mostrar un mensaje de error si no se encuentra la receta
return redirect()->to('/'); return redirect()->to('/');
...@@ -22,6 +29,8 @@ class RecipesController extends Controller ...@@ -22,6 +29,8 @@ class RecipesController extends Controller
$data = [ $data = [
'recipe' => $recipe, 'recipe' => $recipe,
'ingredients' => $ingredients, 'ingredients' => $ingredients,
'username' => $username,
'photoUser' => $photo,
]; ];
return view('templates/header', $data) return view('templates/header', $data)
...@@ -52,4 +61,27 @@ class RecipesController extends Controller ...@@ -52,4 +61,27 @@ class RecipesController extends Controller
$recipes = $recipesModel->searchRecipe($query); $recipes = $recipesModel->searchRecipe($query);
return $this->response->setJSON($recipes); return $this->response->setJSON($recipes);
} }
public function delete($id)
{
$recipeModel = new RecipesModel();
$recipeIngredientModel = new RecipesIngredientModel();
// Primero, borra todas las entradas de la tabla recipes_ingredient
if ($recipeIngredientModel->deleteRelation($id)) {
// Si se eliminaron las relaciones correctamente, borra la receta
if ($recipeModel->deleteRecipe($id)) {
// La receta se eliminó correctamente
return redirect()->to('/users')->with('message', 'Receta eliminada correctamente');
} else {
// Hubo un error al eliminar la receta
return redirect()->back()->with('error', 'No se pudo eliminar la receta');
}
} else {
// Hubo un error al eliminar las relaciones
return redirect()->back()->with('error', 'No se pudieron eliminar las relaciones de ingredientes de la receta');
}
}
} }
\ No newline at end of file
...@@ -27,7 +27,8 @@ class User extends BaseController ...@@ -27,7 +27,8 @@ class User extends BaseController
} }
public function loginAjax(){ public function loginAjax()
{
$validation = \Config\Services::validation(); $validation = \Config\Services::validation();
$rules = [ $rules = [
"email" => [ "email" => [
...@@ -77,12 +78,7 @@ class User extends BaseController ...@@ -77,12 +78,7 @@ class User extends BaseController
} }
public function user_ok() public function user_ok()
{ {
$session = session(); return view('templates/header')
$usuario = $session->__get('user');
$data['usuario'] = $usuario;
$userModel = model('UserModel');
return view('templates/header',$data)
. view('pages/home') . view('pages/home')
. view('templates/footer'); . view('templates/footer');
} }
...@@ -90,7 +86,10 @@ class User extends BaseController ...@@ -90,7 +86,10 @@ class User extends BaseController
public function logout() public function logout()
{ {
# To Do. $session = session();
$session->destroy();
return redirect()->to('/login');
} }
public function unauthorized() public function unauthorized()
...@@ -128,10 +127,13 @@ class User extends BaseController ...@@ -128,10 +127,13 @@ class User extends BaseController
$name = $this->request->getVar('username'); $name = $this->request->getVar('username');
$email = $this->request->getVar('email'); $email = $this->request->getVar('email');
$password = $this->request->getVar('password'); $password = $this->request->getVar('password');
$role = $this->request->getVar('rol');
$userData = [ $userData = [
'username' => $name, 'username' => $name,
'email' => $email, 'email' => $email,
'password' => password_hash($password, PASSWORD_DEFAULT), 'password' => password_hash($password, PASSWORD_DEFAULT),
'rol' => $role,
'photo' => null
]; ];
$userModel->saveUser($email, $name, $password); $userModel->saveUser($email, $name, $password);
$newUser = $userModel->authenticate($email, $password); $newUser = $userModel->authenticate($email, $password);
...@@ -164,5 +166,49 @@ class User extends BaseController ...@@ -164,5 +166,49 @@ class User extends BaseController
} }
public function show_name($email)
{
$userModel = new \App\Models\UserModel();
$user = $userModel->find($email);
if ($user) {
return $user->username;
}
return false;
}
public function personalRecipes()
{
return view('templates/header')
. view('pages/userRecipes')
. view('templates/footer');
}
public function myprofile()
{
return view('templates/header')
. view('pages/profile_view')
. view('templates/footer');
}
public function changeProfilePhoto()
{
$session = \Config\Services::session();
$email = $session->get('user')->email;
$userModel = new UserModel();
$photo = $this->request->getFile('photo');
if ($photo->isValid() && !$photo->hasMoved()) {
$photoBlob = file_get_contents($photo->getRealPath());
$data['photo'] = $photoBlob;
$userModel->update($email, $data);
}
return redirect()->to('/perfil');
}
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ class AdminAuth implements FilterInterface ...@@ -11,7 +11,7 @@ class AdminAuth implements FilterInterface
{ {
if (!session('logged_in')) if (!session('logged_in'))
return redirect()->to(site_url('/login')); return redirect()->to(site_url('/login'));
elseif ((session('user')->role & 2) == 0) elseif ((session('user')->rol & 2) == 0)
return redirect()->to(site_url('/unauthorized')); return redirect()->to(site_url('/unauthorized'));
} }
public function after( public function after(
......
...@@ -11,8 +11,6 @@ class UserAuth implements FilterInterface ...@@ -11,8 +11,6 @@ class UserAuth implements FilterInterface
{ {
if (!session('logged_in')) if (!session('logged_in'))
return redirect()->to(site_url('/login')); return redirect()->to(site_url('/login'));
else if ((session('user')->role & 1) == 0)
return redirect()->to(site_url('/unauthorized'));
} }
public function after( public function after(
RequestInterface $request, ResponseInterface $response, RequestInterface $request, ResponseInterface $response,
......
...@@ -30,5 +30,10 @@ class RecipesIngredientModel extends Model ...@@ -30,5 +30,10 @@ class RecipesIngredientModel extends Model
return $this->insert($data); return $this->insert($data);
} }
public function deleteRelation($id_recipe) {
return $this->where('id_recipe', $id_recipe)->delete();
}
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ class RecipesModel extends Model ...@@ -11,7 +11,7 @@ class RecipesModel extends Model
protected $returnType = 'object'; # 'object' or 'array' protected $returnType = 'object'; # 'object' or 'array'
protected $useSoftDeletes = false; # true if you expect to recover data protected $useSoftDeletes = false; # true if you expect to recover data
# Fields that can be set during save, insert, or update methods # Fields that can be set during save, insert, or update methods
protected $allowedFields = ['id', 'name', 'season', 'origin', 'photo', 'is_vegan', 'description', 'instructions', 'link']; protected $allowedFields = ['id', 'name', 'season', 'origin', 'photo', 'is_vegan', 'description', 'instructions', 'link', 'email_user'];
protected $useTimestamps = false; # no timestamps on inserts and updates protected $useTimestamps = false; # no timestamps on inserts and updates
# Do not use validations rules (for the time being...) # Do not use validations rules (for the time being...)
protected $validationRules = []; protected $validationRules = [];
...@@ -19,7 +19,7 @@ class RecipesModel extends Model ...@@ -19,7 +19,7 @@ class RecipesModel extends Model
protected $skipValidation = false; protected $skipValidation = false;
public function saveRecipe($id, $name, $season, $origin, $photo, $is_vegan, $description, $instructions, $link) public function saveRecipe($id, $name, $season, $origin, $photo, $is_vegan, $description, $instructions, $link, $email_user)
{ {
$data = [ $data = [
'id' => $id, 'id' => $id,
...@@ -31,6 +31,7 @@ class RecipesModel extends Model ...@@ -31,6 +31,7 @@ class RecipesModel extends Model
'description' => $description, 'description' => $description,
'instructions' => $instructions, 'instructions' => $instructions,
'link' => $link, 'link' => $link,
'email_user' => $email_user
]; ];
return $this->insert($data); return $this->insert($data);
} }
...@@ -57,9 +58,9 @@ class RecipesModel extends Model ...@@ -57,9 +58,9 @@ class RecipesModel extends Model
return []; return [];
} }
public function deleteRecipe($id) {
return $this->delete($id);
}
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ class UserModel extends Model ...@@ -11,7 +11,7 @@ class UserModel extends Model
protected $returnType = 'object'; # 'object' or 'array' protected $returnType = 'object'; # 'object' or 'array'
protected $useSoftDeletes = false; # true if you expect to recover data protected $useSoftDeletes = false; # true if you expect to recover data
# Fields that can be set during save, insert, or update methods # Fields that can be set during save, insert, or update methods
protected $allowedFields = ['email', 'username', 'password']; protected $allowedFields = ['email', 'username', 'password','photo'];
protected $useTimestamps = false; # no timestamps on inserts and updates protected $useTimestamps = false; # no timestamps on inserts and updates
# Do not use validations rules (for the time being...) # Do not use validations rules (for the time being...)
protected $validationRules = []; protected $validationRules = [];
......
...@@ -62,7 +62,6 @@ ...@@ -62,7 +62,6 @@
</select> </select>
</div> </div>
</div>
<!-- Opción vegana --> <!-- Opción vegana -->
<div class="form-group col-md-4"> <div class="form-group col-md-4">
...@@ -73,6 +72,9 @@ ...@@ -73,6 +72,9 @@
</div> </div>
</div> </div>
</div>
<!-- Seleccionar ingredientes --> <!-- Seleccionar ingredientes -->
<label>Ingredientes:</label> <label>Ingredientes:</label>
<div class="input-group my-form"> <div class="input-group my-form">
...@@ -112,6 +114,10 @@ ...@@ -112,6 +114,10 @@
</div> </div>
</div> </div>
<!-- Añadir ingrediente -->
<h5>¿No ves tu ingrediente en la lista?
<!-- Seleccionar enlace de video-->
<div class="form-group"> <div class="form-group">
<label for="link">Ingrese el enlace del video:</label> <label for="link">Ingrese el enlace del video:</label>
<input type="text" id="link" name="link" class="form-control" <input type="text" id="link" name="link" class="form-control"
......
<main id="main" class="main">
<section class="section dashboard">
<?php $session = session(); ?>
<div style="display: flex; flex-direction: row; align-items: center;">
<?php if ($session->has('user') && !is_null($session->get('user')->photo)): ?>
<img src="data:image/jpeg;base64,<?= base64_encode($session->get('user')->photo) ?>" alt="Profile"
style="width: 100px; height: 100px; object-fit: cover; border-radius: 50%;">
<?php else: ?>
<img src="<?= base_url("imagenes/profile.png") ?>"
style="width: 100px; height: 100px; object-fit: cover; border-radius: 50%;">
<?php endif; ?>
<div style="display: flex; flex-direction: column; margin-left: 20px;">
<span style="font-size: 18px; font-weight: bold;">Nombre de usuario:</span>
<span style="font-size: 16px;">
<?= $session->get('user')->username ?>
</span>
<span style="font-size: 18px; font-weight: bold;">Correo:</span>
<span style="font-size: 16px;">
<?= $session->get('user')->email ?>
</span>
</div>
</div>
<a href="#" id="cambiar-foto-btn" class="btn btn-primary">Cambiar foto de perfil</a>
<div class="modal fade" id="cambiar-foto-modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cambiar foto de perfil</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="cambiar-foto-form" enctype="multipart/form-data">
<div class="form-group">
<label for="foto">Selecciona una foto:</label>
<input type="file" class="form-control-file" id="foto" name="foto">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="button" class="btn btn-primary" id="guardar-foto-btn">Guardar</button>
</div>
</div>
</div>
</div>
</section>
</main><!-- End #main -->
<script>
$(document).ready(function () {
$('#cambiar-foto-btn').click(function () {
$('#cambiar-foto-modal').modal('show');
});
});
</script>
<script>
$(document).ready(function() {
$('#guardar-foto-btn').click(function() {
var formData = new FormData($('#cambiar-foto-form')[0]);
$.ajax({
url: '/cambiarFoto',
type: 'POST',
data: formData,
contentType: false,
processData: false,
success: function(data) {
window.location.href = '/perfil';
}
});
});
});
</script>
...@@ -76,6 +76,12 @@ function getYoutubeVideoId($url) ...@@ -76,6 +76,12 @@ function getYoutubeVideoId($url)
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
#profile-pic {
border-radius: 10px;
width: 25px;
height: 25px;
}
</style> </style>
<main id="main" class="main"> <main id="main" class="main">
...@@ -94,6 +100,22 @@ function getYoutubeVideoId($url) ...@@ -94,6 +100,22 @@ function getYoutubeVideoId($url)
<?php echo $recipe->description; ?> <?php echo $recipe->description; ?>
</p> </p>
<div class="recipe-header">
<p>Receta subida por:
<b>
<?= $username ?>
<?php if (empty($photoUser)): ?>
<img src="<?= base_url("imagenes/profile.png") ?>" alt="Profile" id="profile-pic">
<?php else: ?>
<img src="data:image/jpeg;base64,<?= base64_encode($photoUser) ?>" alt="Profile"
id="profile-pic">
<?php endif; ?>
</b>
</p>
</div>
<h2>Ingredientes</h2> <h2>Ingredientes</h2>
<ul class="ingredient-list"> <ul class="ingredient-list">
<?php foreach ($ingredients as $ingredient) { ?> <?php foreach ($ingredients as $ingredient) { ?>
......
<main id="main" class="main">
<section class="section dashboard">
<h1>Vista por hacer🤠</h1>
</section>
</main><!-- End #main -->
\ No newline at end of file
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
<html lang="en"> <html lang="en">
<head> <head>
<!-- Sesión -->
<?php $session = session(); ?>
<meta charset="utf-8"> <meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport"> <meta content="width=device-width, initial-scale=1.0" name="viewport">
...@@ -59,7 +62,7 @@ ...@@ -59,7 +62,7 @@
<div class="search-bar"> <div class="search-bar">
<form class="search-form d-flex align-items-center" method="POST" action="#"> <form class="search-form d-flex align-items-center" method="POST" action="#">
<input type="text" id="search-query" name="query" placeholder="Buscar por receta..." <input type="text" id="search-query" name="query" placeholder="Buscar por receta..."
title="Enter search keyword" > title="Enter search keyword">
</form> </form>
<ul id="recipe_list" class="ingredients-list list-unstyled"></ul> <ul id="recipe_list" class="ingredients-list list-unstyled"></ul>
</div> </div>
...@@ -86,8 +89,12 @@ ...@@ -86,8 +89,12 @@
<li class="nav-item dropdown pe-3"> <li class="nav-item dropdown pe-3">
<a class="nav-link nav-profile d-flex align-items-center pe-0" href="#" data-bs-toggle="dropdown"> <a class="nav-link nav-profile d-flex align-items-center pe-0" href="#" data-bs-toggle="dropdown">
<img src="<?= base_url("imagenes/profile.png") ?>" alt="Profile" class="rounded-circle">
<?php if ($session->has('user') && !is_null($session->get('user')->photo)): ?>
<img src="data:image/jpeg;base64,<?= base64_encode($session->get('user')->photo) ?>" alt="Profile" class="rounded-circle">
<?php else: ?>
<img src="<?= base_url("imagenes/profile.png") ?>" alt="Profile" class="rounded-circle">
<?php endif; ?>
<span class="d-none d-md-block dropdown-toggle ps-2"> <span class="d-none d-md-block dropdown-toggle ps-2">
...@@ -98,55 +105,67 @@ ...@@ -98,55 +105,67 @@
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow profile"> <ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow profile">
<li class="dropdown-header"> <li class="dropdown-header">
<h6> <h6>
<?php <!-- Comprobar inicio de sesión-->
if (isset($usuario)) { <?php if ($session->has('logged_in')): ?>
echo $usuario->username; <!-- Si usuario logueado -->
} else { <p>
echo "Usuario sin registrar"; <?= $session->get('user')->username; ?>
} </p>
?> <?php else: ?>
<!-- Si usuario no logueado -->
<p>Usuario sin registrar</p>
<?php endif; ?>
</h6> </h6>
</li> </li>
<li> <li>
<hr class="dropdown-divider"> <hr class="dropdown-divider">
</li> </li>
<?php if ($session->has('logged_in')): ?>
<!-- OPCIONES USUARIOS LOGUEADOS -->
<!-- COMPROBAR ADMIN -->
<?php if ($session->get('user')->rol == 2): ?>
<li> <li>
<a class="dropdown-item d-flex align-items-center" href="users-profile.html"> <a class="dropdown-item d-flex align-items-center" href="/users">
<i class="bi bi-person"></i> <i class="bi bi-gear"></i>
<span>Mi perfil</span> <span>Panel Administrador</span>
</a> </a>
</li> </li>
<li> <li>
<hr class="dropdown-divider"> <hr class="dropdown-divider">
</li> </li>
<?php endif; ?>
<!-- FIN OPCIÓN ADMIN -->
<li> <li>
<a class="dropdown-item d-flex align-items-center" href="users-profile.html"> <a class="dropdown-item d-flex align-items-center" href="/profile">
<i class="bi bi-gear"></i> <i class="bi bi-person"></i>
<span>Ajustes de cuenta</span> <span>Mi perfil</span>
</a> </a>
</li> </li>
<li> <li>
<li>
<hr class="dropdown-divider"> <hr class="dropdown-divider">
</li> </li>
<li> <li>
<a class="dropdown-item d-flex align-items-center" href="pages-faq.html"> <a class="dropdown-item d-flex align-items-center" href="/logout">
<i class="bi bi-question-circle"></i> <i class="bi bi-box-arrow-right"></i>
<span>¿Necesitas ayuda?</span> <span>Cerrar sesion</span>
</a> </a>
</li> </li>
<li> <li>
<hr class="dropdown-divider"> <hr class="dropdown-divider">
</li> </li>
<?php else: ?>
<!-- OPCIONES USUARIOS SIN REGISTRAR -->
<li> <li>
<a class="dropdown-item d-flex align-items-center" href="#"> <a class="dropdown-item d-flex align-items-center" href="login">
<i class="bi bi-box-arrow-right"></i> <i class="bi bi-question-circle"></i>
<span>Cerrar sesión</span> <span>Registro/Login</span>
</a> </a>
</li> </li>
<?php endif; ?>
</ul><!-- End Profile Dropdown Items --> </ul><!-- End Profile Dropdown Items -->
</li><!-- End Profile Nav --> </li><!-- End Profile Nav -->
...@@ -157,12 +176,12 @@ ...@@ -157,12 +176,12 @@
</header><!-- End Header --> </header><!-- End Header -->
<!-- ======= Sidebar ======= --> <!-- ======= Sidebar ======= -->
<aside id="sidebar" class="sidebar"> <aside id="sidebar" class="sidebar">
<ul class="sidebar-nav" id="sidebar-nav"> <ul class="sidebar-nav" id="sidebar-nav">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link " href="index.html"> <a class="nav-link " href="/home">
<i class="bi bi-grid"></i> <i class="bi bi-grid"></i>
<span>Recetas</span> <span>Recetas</span>
</a> </a>
...@@ -182,7 +201,6 @@ ...@@ -182,7 +201,6 @@
<input type="checkbox" id="checkboxOne" value="Order one"> <input type="checkbox" id="checkboxOne" value="Order one">
<label for="checkboxOne">Recetas Veganas </label> <label for="checkboxOne">Recetas Veganas </label>
</li> </li>
</ul> </ul>
</ul> </ul>
</li><!-- Fin Filtro 1 --> </li><!-- Fin Filtro 1 -->
...@@ -190,7 +208,7 @@ ...@@ -190,7 +208,7 @@
<!-- Filtro 1--> <!-- Filtro 1-->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" data-bs-target="#tables-nav2" data-bs-toggle="collapse" href="#"> <a class="nav-link collapsed" data-bs-target="#tables-nav2" data-bs-toggle="collapse" href="#">
<i class="bi bi-layout-text-window-reverse"></i><span>Filtro 2</span><i <i class="bi bi-layout-text-window-reverse"></i><span>Filtro Origen</span><i
class="bi bi-chevron-down ms-auto"></i> class="bi bi-chevron-down ms-auto"></i>
</a> </a>
<ul id="tables-nav2" class="nav-content collapse " data-bs-parent="#sidebar-nav"> <ul id="tables-nav2" class="nav-content collapse " data-bs-parent="#sidebar-nav">
...@@ -238,12 +256,12 @@ ...@@ -238,12 +256,12 @@
</ul> </ul>
</li><!-- Fin Filtro 1 --> </li><!-- Fin Filtro Origen -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" data-bs-target="#tables-nav3" data-bs-toggle="collapse" href="#"> <a class="nav-link collapsed" data-bs-target="#tables-nav3" data-bs-toggle="collapse" href="#">
<i class="bi bi-layout-text-window-reverse"></i><span>Estaciones</span><i <i class="bi bi-layout-text-window-reverse"></i><span>Filtro Temporada</span><i
class="bi bi-chevron-down ms-auto"></i> class="bi bi-chevron-down ms-auto"></i>
</a> </a>
<ul id="tables-nav3" class="nav-content collapse " data-bs-parent="#sidebar-nav"> <ul id="tables-nav3" class="nav-content collapse " data-bs-parent="#sidebar-nav">
...@@ -276,41 +294,37 @@ ...@@ -276,41 +294,37 @@
</ul> </ul>
</ul> </ul>
</li><!-- Fin Filtro 1 --> </li><!-- Fin Filtro Estaciones -->
<?php if ($session->has('logged_in')): ?>
<!-- Si usuario logueado -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="/insert_recipe"> <a class="nav-link collapsed" href="/insert_recipe">
<i class="bi bi-file-earmark"></i> <i class="bi bi-file-earmark"></i>
<span>Subir receta</span> <span>Subir receta</span>
</a> </a>
</li><!-- End Profile Page Nav --> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="https://www.instagram.com/salvaperfectti/"> <a class="nav-link collapsed" href="/myrecipes">
<i class="bi bi-envelope"></i> <i class="bi bi-card-list"></i>
<span>Contacto</span> <span>Mis recetas</span>
</a> </a>
</li><!-- End Contact Page Nav --> </li>
<?php else: ?>
<!-- Si usuario no logueado -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="/login"> <a class="nav-link collapsed" href="/login">
<i class="bi bi-box-arrow-in-right"></i> <i class="bi bi-box-arrow-in-right"></i>
<span>Registro/Login</span> <span>Registro/Login</span>
</a>
</li><!-- End Login Page Nav -->
<li class="nav-item">
<a class="nav-link collapsed" href="http://www.homerswebpage.com/">
<i class="bi bi-dash-circle"></i>
<span>Error 404</span>
</a> </a>
</li><!-- End Error 404 Page Nav --> </li>
<?php endif; ?>
</ul> </ul>
</aside><!-- End Sidebar--> </aside><!-- End Sidebar-->
\ No newline at end of file \ No newline at end of file
<h1>Admin Page</h1> <main id="main" class="main">
<h2>Lista de usuarios</h2>
<!-- LISTA DE USUARIOS --> <section class="section dashboard">
<?php <h2>Usuarios</h2>
if (sizeof($users) > 0) { <!-- LISTA DE USUARIOS -->
<?php
if (sizeof($users) > 0) {
foreach ($users as $row) { foreach ($users as $row) {
echo $row->email . " - "; echo $row->email . " - ";
echo $row->username . " - "; echo $row->username . " - ";
echo $row->password . " "; echo $row->password . " ";
echo "<br/>"; echo "<br/>";
} }
} else { } else {
echo "No user"; echo "No user";
} }
?> ?>
<h2> Recetas </h2> <h2> Recetas </h2>
<!-- LISTA DE RECETAS --> <!-- LISTA DE RECETAS -->
<?php <?php
$recipesModel = new \App\Models\RecipesModel(); $recipesModel = new \App\Models\RecipesModel();
$recipes = $recipesModel->findAll(); $recipes = $recipesModel->findAll();
?> ?>
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
...@@ -66,20 +68,23 @@ $recipes = $recipesModel->findAll(); ...@@ -66,20 +68,23 @@ $recipes = $recipesModel->findAll();
<?= mb_strimwidth($row->instructions, 0, 10, "..."); ?> <?= mb_strimwidth($row->instructions, 0, 10, "..."); ?>
</td> </td>
<td> <td>
<?= $row->link; ?> <?= mb_strimwidth($row->link, 0, 50, "..."); ?>
</td> </td>
<td> <td>
<button class="btn btn-danger" onclick="deleteRecipe(<?= $row->id; ?>)">Borrar</button> <button class="btn btn-danger" onclick="window.location.href='<?php echo base_url('/recipes/delete/' . $row->id); ?>'">Borrar</button>
</td> </td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
<script> <script>
function borrarReceta(recipeId) { function borrarReceta(recipeId) {
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa
} }
</script> </script>
\ No newline at end of file </section>
</main><!-- End #main -->
\ No newline at end of file
...@@ -266,6 +266,38 @@ body { ...@@ -266,6 +266,38 @@ body {
width: 32%; width: 32%;
} }
.form-group {
margin-bottom: 20px;
}
.form-row {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
margin-bottom: 20px;
}
.form-row > .form-group {
flex: 1;
padding: 0 15px;
}
.form-row > .form-group:first-child {
padding-left: 0;
}
.form-row > .form-group:last-child {
padding-right: 0;
}
.label-centered {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
/* Estilos para el chip vegano */ /* Estilos para el chip vegano */
.vegan-chip { .vegan-chip {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment