Création et modification des raccourcis, + modifs mineurs
This commit is contained in:
parent
9eda9ba64b
commit
df41001821
11 changed files with 336 additions and 24 deletions
|
|
@ -21,7 +21,7 @@ function connectBDD($domain, $user, $password, $db)
|
|||
|
||||
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 = [];
|
||||
while ($row = mysqli_fetch_assoc($results)) {
|
||||
$actus[] = $row;
|
||||
|
|
@ -189,32 +189,34 @@ function getUserPerms($bdd, $username)
|
|||
return $row ? $row['permissions'] : null;
|
||||
}
|
||||
|
||||
function verifyPoids($bdd, $username, $minPoids) {
|
||||
function verifyPoids($bdd, $username, $minPoids)
|
||||
{
|
||||
$sql = "SELECT p.poids
|
||||
FROM utilisateurs u
|
||||
INNER JOIN permissions p ON u.permissions = p.nom
|
||||
WHERE u.username = ?";
|
||||
|
||||
|
||||
$stmt = mysqli_prepare($bdd, $sql);
|
||||
|
||||
|
||||
if ($stmt) {
|
||||
mysqli_stmt_bind_param($stmt, "s", $username);
|
||||
mysqli_stmt_execute($stmt);
|
||||
|
||||
|
||||
$result = mysqli_stmt_get_result($stmt);
|
||||
$row = mysqli_fetch_assoc($result);
|
||||
|
||||
|
||||
mysqli_stmt_close($stmt);
|
||||
|
||||
if ($row) {
|
||||
return (int)$row['poids'] >= (int)$minPoids;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function updateEventTitle($bdd, $eventid, $titre){
|
||||
function updateEventTitle($bdd, $eventid, $titre)
|
||||
{
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
"UPDATE evenements SET titre = ? WHERE id = ?"
|
||||
|
|
@ -230,7 +232,8 @@ function updateEventTitle($bdd, $eventid, $titre){
|
|||
return $success;
|
||||
}
|
||||
|
||||
function updateEventImage($bdd, $eventId, $image){
|
||||
function updateEventImage($bdd, $eventId, $image)
|
||||
{
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
"UPDATE evenements SET couverture = ? WHERE id = ?"
|
||||
|
|
@ -257,7 +260,8 @@ function getSpecificActus($bdd, $id)
|
|||
return $return;
|
||||
}
|
||||
|
||||
function updateActuImage($bdd, $actuId, $image){
|
||||
function updateActuImage($bdd, $actuId, $image)
|
||||
{
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
"UPDATE actus SET image = ? WHERE id = ?"
|
||||
|
|
@ -273,7 +277,8 @@ function updateActuImage($bdd, $actuId, $image){
|
|||
return $success;
|
||||
}
|
||||
|
||||
function updateActuTitle($bdd, $actuId, $titre){
|
||||
function updateActuTitle($bdd, $actuId, $titre)
|
||||
{
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
"UPDATE actus SET titre = ? WHERE id = ?"
|
||||
|
|
@ -289,7 +294,8 @@ function updateActuTitle($bdd, $actuId, $titre){
|
|||
return $success;
|
||||
}
|
||||
|
||||
function updateActuContent($bdd, $actuId, $content){
|
||||
function updateActuContent($bdd, $actuId, $content)
|
||||
{
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
"UPDATE actus SET actu = ? WHERE id = ?"
|
||||
|
|
@ -305,7 +311,8 @@ function updateActuContent($bdd, $actuId, $content){
|
|||
return $success;
|
||||
}
|
||||
|
||||
function createEvent($bdd, $titre, $date, $site){
|
||||
function createEvent($bdd, $titre, $date, $site)
|
||||
{
|
||||
|
||||
$sql = "INSERT INTO evenements (date, titre, couverture, site_id) VALUES (?, ?, '', ?)";
|
||||
$req = $bdd->prepare($sql);
|
||||
|
|
@ -314,7 +321,8 @@ function createEvent($bdd, $titre, $date, $site){
|
|||
return $bdd->insert_id;
|
||||
}
|
||||
|
||||
function deleteEvent($bdd, $eventId){
|
||||
function deleteEvent($bdd, $eventId)
|
||||
{
|
||||
$sql = "DELETE FROM evenements WHERE id = ?";
|
||||
$req = $bdd->prepare($sql);
|
||||
$req->bind_param("i", $eventId);
|
||||
|
|
@ -322,7 +330,8 @@ function deleteEvent($bdd, $eventId){
|
|||
return $req->affected_rows > 0;
|
||||
}
|
||||
|
||||
function deleteActu($bdd, $eventId){
|
||||
function deleteActu($bdd, $eventId)
|
||||
{
|
||||
$sql = "DELETE FROM actus WHERE id = ?";
|
||||
$req = $bdd->prepare($sql);
|
||||
$req->bind_param("i", $eventId);
|
||||
|
|
@ -330,7 +339,8 @@ function deleteActu($bdd, $eventId){
|
|||
return $req->affected_rows > 0;
|
||||
}
|
||||
|
||||
function createActu($bdd, $titre, $actu, $date, $idSite){
|
||||
function createActu($bdd, $titre, $actu, $date, $idSite)
|
||||
{
|
||||
|
||||
$stmt = mysqli_prepare(
|
||||
$bdd,
|
||||
|
|
@ -341,4 +351,42 @@ function createActu($bdd, $titre, $actu, $date, $idSite){
|
|||
$actuId = mysqli_insert_id($bdd);
|
||||
mysqli_stmt_close($stmt);
|
||||
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
156
admin/admin.php
Normal 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>
|
||||
|
|
@ -101,7 +101,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||
<a href="#" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ $uploadDir = "../Photos/INTRANET/";
|
|||
<a href="modifyActuality.php" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ $uploadDir = "../Photos/INTRANET/actus/";
|
|||
<a href="#" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ if (!empty($_POST['new'])) {
|
|||
<a href="#" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ while ($row = mysqli_fetch_assoc($result)) {
|
|||
<a href="#" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||
<a href="#" class="nav-link">Actualités</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#" class="nav-link disabled">Administration</a>
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
35
admin/updateShortcut.php
Normal file
35
admin/updateShortcut.php
Normal 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);
|
||||
73
styles-scripts/editableCards.js
Normal file
73
styles-scripts/editableCards.js
Normal 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;
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
|
@ -9,6 +9,6 @@
|
|||
background: #f0f0f0;
|
||||
border: 2px solid #ccc;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
/* text-align: center; */
|
||||
border-radius: 8px;
|
||||
}
|
||||
Loading…
Reference in a new issue