Création et modification des raccourcis, + modifs mineurs

This commit is contained in:
Erwann PHILIPPE 2026-03-06 17:23:04 +01:00
parent 9eda9ba64b
commit df41001821
11 changed files with 336 additions and 24 deletions

View file

@ -21,7 +21,7 @@ function connectBDD($domain, $user, $password, $db)
function getActus($bdd, $limit) function getActus($bdd, $limit)
{ {
$results = mysqli_query($bdd, "SELECT * FROM actus ORDER BY id DESC LIMIT ".$limit); $results = mysqli_query($bdd, "SELECT * FROM actus ORDER BY id DESC LIMIT " . $limit);
$actus = []; $actus = [];
while ($row = mysqli_fetch_assoc($results)) { while ($row = mysqli_fetch_assoc($results)) {
$actus[] = $row; $actus[] = $row;
@ -189,7 +189,8 @@ function getUserPerms($bdd, $username)
return $row ? $row['permissions'] : null; return $row ? $row['permissions'] : null;
} }
function verifyPoids($bdd, $username, $minPoids) { function verifyPoids($bdd, $username, $minPoids)
{
$sql = "SELECT p.poids $sql = "SELECT p.poids
FROM utilisateurs u FROM utilisateurs u
INNER JOIN permissions p ON u.permissions = p.nom INNER JOIN permissions p ON u.permissions = p.nom
@ -214,7 +215,8 @@ function verifyPoids($bdd, $username, $minPoids) {
return false; return false;
} }
function updateEventTitle($bdd, $eventid, $titre){ function updateEventTitle($bdd, $eventid, $titre)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
"UPDATE evenements SET titre = ? WHERE id = ?" "UPDATE evenements SET titre = ? WHERE id = ?"
@ -230,7 +232,8 @@ function updateEventTitle($bdd, $eventid, $titre){
return $success; return $success;
} }
function updateEventImage($bdd, $eventId, $image){ function updateEventImage($bdd, $eventId, $image)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
"UPDATE evenements SET couverture = ? WHERE id = ?" "UPDATE evenements SET couverture = ? WHERE id = ?"
@ -257,7 +260,8 @@ function getSpecificActus($bdd, $id)
return $return; return $return;
} }
function updateActuImage($bdd, $actuId, $image){ function updateActuImage($bdd, $actuId, $image)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
"UPDATE actus SET image = ? WHERE id = ?" "UPDATE actus SET image = ? WHERE id = ?"
@ -273,7 +277,8 @@ function updateActuImage($bdd, $actuId, $image){
return $success; return $success;
} }
function updateActuTitle($bdd, $actuId, $titre){ function updateActuTitle($bdd, $actuId, $titre)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
"UPDATE actus SET titre = ? WHERE id = ?" "UPDATE actus SET titre = ? WHERE id = ?"
@ -289,7 +294,8 @@ function updateActuTitle($bdd, $actuId, $titre){
return $success; return $success;
} }
function updateActuContent($bdd, $actuId, $content){ function updateActuContent($bdd, $actuId, $content)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
"UPDATE actus SET actu = ? WHERE id = ?" "UPDATE actus SET actu = ? WHERE id = ?"
@ -305,7 +311,8 @@ function updateActuContent($bdd, $actuId, $content){
return $success; return $success;
} }
function createEvent($bdd, $titre, $date, $site){ function createEvent($bdd, $titre, $date, $site)
{
$sql = "INSERT INTO evenements (date, titre, couverture, site_id) VALUES (?, ?, '', ?)"; $sql = "INSERT INTO evenements (date, titre, couverture, site_id) VALUES (?, ?, '', ?)";
$req = $bdd->prepare($sql); $req = $bdd->prepare($sql);
@ -314,7 +321,8 @@ function createEvent($bdd, $titre, $date, $site){
return $bdd->insert_id; return $bdd->insert_id;
} }
function deleteEvent($bdd, $eventId){ function deleteEvent($bdd, $eventId)
{
$sql = "DELETE FROM evenements WHERE id = ?"; $sql = "DELETE FROM evenements WHERE id = ?";
$req = $bdd->prepare($sql); $req = $bdd->prepare($sql);
$req->bind_param("i", $eventId); $req->bind_param("i", $eventId);
@ -322,7 +330,8 @@ function deleteEvent($bdd, $eventId){
return $req->affected_rows > 0; return $req->affected_rows > 0;
} }
function deleteActu($bdd, $eventId){ function deleteActu($bdd, $eventId)
{
$sql = "DELETE FROM actus WHERE id = ?"; $sql = "DELETE FROM actus WHERE id = ?";
$req = $bdd->prepare($sql); $req = $bdd->prepare($sql);
$req->bind_param("i", $eventId); $req->bind_param("i", $eventId);
@ -330,7 +339,8 @@ function deleteActu($bdd, $eventId){
return $req->affected_rows > 0; return $req->affected_rows > 0;
} }
function createActu($bdd, $titre, $actu, $date, $idSite){ function createActu($bdd, $titre, $actu, $date, $idSite)
{
$stmt = mysqli_prepare( $stmt = mysqli_prepare(
$bdd, $bdd,
@ -342,3 +352,41 @@ function createActu($bdd, $titre, $actu, $date, $idSite){
mysqli_stmt_close($stmt); mysqli_stmt_close($stmt);
return $actuId; return $actuId;
} }
function createShortcut($bdd, $nom, $image, $shortcut)
{
$stmt = mysqli_prepare(
$bdd,
"INSERT INTO raccourcis (nom, image, url) VALUES (?, ?, ?)"
);
mysqli_stmt_bind_param($stmt, "sss", $nom, $image, $shortcut);
mysqli_stmt_execute($stmt);
$actuId = mysqli_insert_id($bdd);
mysqli_stmt_close($stmt);
return $actuId;
}
function updateRaccourcis($bdd, $idRaccourcis, $nom, $image, $url)
{
$stmt = mysqli_prepare(
$bdd,
"UPDATE raccourcis SET nom = ?, image = ?, url = ? WHERE id = ?"
);
mysqli_stmt_bind_param($stmt, "sssi", $nom, $image, $url, $idRaccourcis);
mysqli_stmt_execute($stmt);
$success = mysqli_stmt_affected_rows($stmt) >= 0;
mysqli_stmt_close($stmt);
return $success;
}
function getSpecificRaccourcis($bdd, $id)
{
$results = mysqli_query($bdd, "SELECT * FROM `raccourcis` WHERE `id`=" . $id);
$return = [];
while ($row = mysqli_fetch_assoc($results)) {
$return[] = $row;
}
return $return;
}

156
admin/admin.php Normal file
View file

@ -0,0 +1,156 @@
<?php
include("../Assets/functions.php");
$config = json_decode(file_get_contents("../Assets/config.json"), true);
$bdd = connectBDD("localhost", $config["BDD_USER"], $config["BDD_PASSWD"], $config["BDD_NAME"]);
/* Gestion de la connexion */
session_start();
if (!isset($_SESSION['connected']) || $_SESSION['connected'] == false) {
header('location: ../login.php?redirect_to=./admin/');
}
$events = getEvenements($bdd, $_SESSION['site']);
/* Récupération des infos */
$permissions = $_SESSION['permission'];
$site = $_SESSION['site'];
/* Gestion de l'accès à la page */
$minPoids = 99;
if (!verifyPoids($bdd, $_SESSION['username'], $minPoids)) {
die("Vous n'avez pas l'autorisation");
header('location: ./index.php');
}
$uploadDir = "../Photos/INTRANET/";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_POST['nom']) && !empty($_POST['url']) && !empty($_POST['image'])) {
createShortcut(
$bdd,
$_POST['nom'],
$_POST['image'],
$_POST['url']
);
header("Location: " . $_SERVER['PHP_SELF']);
exit;
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Gestion Intranet</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../styles-scripts/index.admin.css">
</head>
<script>
function addShortcut() {
const container = document.getElementById("shortcutsContainer");
const block = document.createElement("div");
block.className = "";
block.innerHTML = `
<form method="post">
<div class="row">
<div class="col-md-4">
<label>Nom</label>
<input type="text" name="nom" class="form-control" required>
</div>
<div class="col-md-4">
<label>URL</label>
<input type="text" name="url" class="form-control" required>
</div>
<div class="col-md-4">
<label>Image</label>
<input type="text" name="image" class="form-control" required>
</div>
</div>
<button type="submit" class="btn btn-primary mt-2">
Créer le raccourci
</button>
</form>
`;
container.appendChild(block);
}
</script>
<body>
<h1>Gestion de l'intranet</h1>
<!-- navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a href="#" class="nav-link">Évènements</a>
</li>
<li class="nav-item">
<a href="modifyActuality.php" class="nav-link">Actualités</a>
</li>
<li class="nav-item">
<a href="admin.php" class="nav-link">Administration</a>
</li>
</ul>
</div>
</nav>
<!-- Partie création de raccourcis -->
<div class="">
<h3>Création de raccourcis</h3>
<div class="mb-4">
<?php $shortcuts = getRaccourcis($bdd); ?>
<?php foreach ($shortcuts as $shortcut): ?>
<div class="card p-3 mb-2 d-flex flex-row align-items-center shortcut"
data-id="<?= $shortcut['id'] ?>">
<img class="editable-image"
src="<?= (str_starts_with($shortcut['image'], 'http') || str_starts_with($shortcut['image'], 'data')) ? htmlspecialchars($shortcut['image']) : "." . htmlspecialchars($shortcut['image']) ?>"
style="width:40px;height:40px;margin-right:10px;cursor:pointer;">
<div>
<strong class="editable"
data-field="nom">
<?= htmlspecialchars($shortcut['nom']) ?>
</strong><br>
<small class="editable"
data-field="url">
<?= htmlspecialchars($shortcut['url']) ?>
</small>
</div>
</div>
<?php endforeach; ?>
</div>
<button class="btn btn-success mb-3" onclick="addShortcut()">
Ajouter un raccourci
</button>
<div id="shortcutsContainer"></div>
</div>
<script src="../styles-scripts/editableCards.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View file

@ -101,7 +101,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<a href="#" class="nav-link">Actualités</a> <a href="#" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -53,7 +53,7 @@ $uploadDir = "../Photos/INTRANET/";
<a href="modifyActuality.php" class="nav-link">Actualités</a> <a href="modifyActuality.php" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -51,7 +51,7 @@ $uploadDir = "../Photos/INTRANET/actus/";
<a href="#" class="nav-link">Actualités</a> <a href="#" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -127,7 +127,7 @@ if (!empty($_POST['new'])) {
<a href="#" class="nav-link">Actualités</a> <a href="#" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -121,7 +121,7 @@ while ($row = mysqli_fetch_assoc($result)) {
<a href="#" class="nav-link">Actualités</a> <a href="#" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -110,7 +110,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<a href="#" class="nav-link">Actualités</a> <a href="#" class="nav-link">Actualités</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a> <a href="admin.php" class="nav-link">Administration</a>
</li> </li>
</ul> </ul>
</div> </div>

35
admin/updateShortcut.php Normal file
View file

@ -0,0 +1,35 @@
<?php
include("../Assets/functions.php");
$config = json_decode(file_get_contents("../Assets/config.json"), true);
$bdd = connectBDD("localhost", $config["BDD_USER"], $config["BDD_PASSWD"], $config["BDD_NAME"]);
$data = json_decode(file_get_contents("php://input"), true);
$id = intval($data['id']);
$field = $data['field'];
$value = $data['value'];
/* récupérer le raccourci actuel */
$raccourci = getSpecificRaccourcis($bdd, $id);
$nom = $raccourci[0]['nom'];
$image = $raccourci[0]['image'];
$url = $raccourci[0]['url'];
/* modifier le champ concerné */
if ($field === "nom") {
$nom = $value;
}
if ($field === "url") {
$url = $value;
}
if ($field === "image") {
$image = $value;
}
/* appeler ta fonction */
updateRaccourcis($bdd, $id, $nom, $image, $url);

View file

@ -0,0 +1,73 @@
document.querySelectorAll(".editable").forEach(el => {
el.addEventListener("click", function () {
const oldValue = this.innerText;
const field = this.dataset.field;
const card = this.closest(".shortcut");
const id = card.dataset.id;
const input = document.createElement("input");
input.value = oldValue;
input.className = "form-control";
this.replaceWith(input);
input.focus();
input.addEventListener("blur", function () {
const newValue = this.value;
fetch("updateShortcut.php", {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: id,
field: field,
value: newValue
})
});
const span = document.createElement("span");
span.className = "editable";
span.dataset.field = field;
span.innerText = newValue;
input.replaceWith(span);
});
});
});
document.querySelectorAll(".editable-image").forEach(img => {
img.addEventListener("click", function () {
const url = prompt("Nouvelle image (URL ou chemin local):", this.src);
if (!url) return;
const card = this.closest(".shortcut");
const id = card.dataset.id;
fetch("updateShortcut.php", {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: id,
field: "image",
value: url
})
});
this.src = url;
});
});

View file

@ -9,6 +9,6 @@
background: #f0f0f0; background: #f0f0f0;
border: 2px solid #ccc; border: 2px solid #ccc;
padding: 20px; padding: 20px;
text-align: center; /* text-align: center; */
border-radius: 8px; border-radius: 8px;
} }