ajouts finaux 1
This commit is contained in:
parent
634e58c507
commit
623e2d249a
11 changed files with 280 additions and 32 deletions
|
|
@ -674,3 +674,25 @@ function deleteGuide($bdd, $id)
|
|||
$req->execute();
|
||||
return $req->affected_rows > 0;
|
||||
}
|
||||
|
||||
function updatePratiques($contenu, $bdd) {
|
||||
$content = htmlspecialchars($contenu, ENT_QUOTES, 'UTF-8');
|
||||
$stmt = $bdd->prepare("UPDATE `pratique` SET `content` = ? WHERE `id` = 1 LIMIT 1");
|
||||
$stmt->bind_param("s", $content);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getPratiques($bdd){
|
||||
$results = mysqli_query($bdd, "SELECT * FROM `pratique` WHERE `id`=1");
|
||||
if ($results && mysqli_num_rows($results) > 0) {
|
||||
$row = mysqli_fetch_assoc($results);
|
||||
return $row['content'];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -159,6 +159,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./pratiques.php">
|
||||
Bonnes pratiques
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-4">
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
|||
<li class="nav-item">
|
||||
<a href="admin.php" class="nav-link">Administration</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
@ -114,6 +113,11 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
|||
Guides
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./pratiques.php">
|
||||
Bonnes pratiques
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
118
admin/pratiques.php
Normal file
118
admin/pratiques.php
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
<?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"]);
|
||||
|
||||
session_start();
|
||||
if (!isset($_SESSION['connected']) || $_SESSION['connected'] == false) {
|
||||
header('location: ../login.php?redirect_to=./admin/pratiques.php');
|
||||
}
|
||||
|
||||
$permission = $_SESSION["permission"];
|
||||
if ($permission == "admin") {
|
||||
$evenements = getEvenements($bdd, $_SESSION['site'], true);
|
||||
} else {
|
||||
$evenements = 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');
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Modifier les bonnes pratiques</title>
|
||||
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
#editor-container {
|
||||
height: 300px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Gestion de l'intranet</h1>
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
|
||||
<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="index.php" 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>
|
||||
|
||||
<ul class="nav nav-tabs" id="adminTabs" role="tablist">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./admin.php">
|
||||
Raccourcis / Utilisateurs
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./gestionGuides.php">
|
||||
Guides
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="./pratiques.php">
|
||||
Bonnes pratiques
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<script>
|
||||
const initialContent = `<?= html_entity_decode(getPratiques($bdd)) ?>`;
|
||||
</script>
|
||||
|
||||
<!-- Toolbar -->
|
||||
<div id="toolbar">
|
||||
<select class="ql-font"></select>
|
||||
<select class="ql-size"></select>
|
||||
<button class="ql-bold"></button>
|
||||
<button class="ql-italic"></button>
|
||||
<button class="ql-image"></button>
|
||||
</div>
|
||||
|
||||
<!-- Editor -->
|
||||
<div id="editor-container"></div>
|
||||
|
||||
<button id="save-button">Sauvegarder</button>
|
||||
|
||||
<script src="https://cdn.quilljs.com/1.3.6/quill.min.js"></script>
|
||||
<script src="../styles-scripts/pratiques.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
22
admin/save-article.php
Normal file
22
admin/save-article.php
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
session_start();
|
||||
header('Content-Type: application/json'); // Important pour fetch().json()
|
||||
|
||||
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);
|
||||
|
||||
if (isset($data['content'])) {
|
||||
$content = $data['content'];
|
||||
error_log("Contenu reçu pour mise à jour : " . $content);
|
||||
|
||||
$success = updatePratiques($content, $bdd);
|
||||
error_log('Résultat de updatePratiques: ' . var_export($success, true));
|
||||
|
||||
echo json_encode(['success' => $success]);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Contenu manquant']);
|
||||
}
|
||||
?>
|
||||
|
|
@ -21,6 +21,7 @@ if(isset($_POST['user']) && isset($_POST['password']) && isset($_GET['redirect_t
|
|||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
|
@ -28,6 +29,7 @@ if(isset($_POST['user']) && isset($_POST['password']) && isset($_GET['redirect_t
|
|||
<link rel="stylesheet" href="./styles-scripts/login.css">
|
||||
<title>Se connecter !</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<form method="POST">
|
||||
<div class="form-group">
|
||||
|
|
@ -38,10 +40,13 @@ if(isset($_POST['user']) && isset($_POST['password']) && isset($_GET['redirect_t
|
|||
<label for="password">Password</label>
|
||||
<input type="password" class="form-control" id="password" name="password" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="csrf" value="<?= $csrf ?>">
|
||||
<button type="submit" class="btn btn-primary">Connexion</button>
|
||||
<button type="submit" class="btn btn-primary" id="button">Connexion</button>
|
||||
</div>
|
||||
</form>
|
||||
<a href="./activate.php">Activer mon compte</a>
|
||||
<h3>En cas d'oubli de votre mot de passe, veuillez contacter Blandine Lemaire au <a href="tel:20117">20117</a></h3>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -11,11 +11,14 @@ $page = "bonnes pratiques";
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Intranet de l'APEI</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="./styles-scripts/pratiques.css">
|
||||
<link rel="shortcut icon" href="./Assets/Icones/APEIMBGE.jpg" type="image/x-icon">
|
||||
</head>
|
||||
<body>
|
||||
<?php include('./Assets/navbar.php');?>
|
||||
|
||||
<?=html_entity_decode(getPratiques($bdd), ENT_QUOTES, 'UTF-8');?>
|
||||
|
||||
<!-- footer pas toucher -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -172,3 +172,7 @@ li.carousel .carouselContent p {
|
|||
.nav-link{
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
p{
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
|
@ -2,3 +2,7 @@ body
|
|||
{
|
||||
padding: 1rem;
|
||||
}
|
||||
#button
|
||||
{
|
||||
margin-top: 2px;
|
||||
}
|
||||
4
styles-scripts/pratiques.css
Normal file
4
styles-scripts/pratiques.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
p
|
||||
{
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
56
styles-scripts/pratiques.js
Normal file
56
styles-scripts/pratiques.js
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
const quill = new Quill('#editor-container', {
|
||||
theme: 'snow',
|
||||
modules: {
|
||||
toolbar: {
|
||||
container: '#toolbar',
|
||||
handlers: {
|
||||
image: function() {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute('type', 'file');
|
||||
input.setAttribute('accept', 'image/*');
|
||||
input.click();
|
||||
input.onchange = () => {
|
||||
const file = input.files[0];
|
||||
const reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
const range = quill.getSelection();
|
||||
quill.insertEmbed(range.index, 'image', e.target.result);
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Préremplir le contenu de Quill avec les données de la base de données
|
||||
quill.root.innerHTML = initialContent;
|
||||
|
||||
// Sauvegarder le contenu uniquement lorsque le bouton est cliqué
|
||||
document.getElementById('save-button').addEventListener('click', () => {
|
||||
const html = quill.root.innerHTML; // Contenu HTML, y compris les images en base64
|
||||
console.log("Contenu HTML sauvegardé :", html); // Affiche ce que l'on va envoyer au serveur
|
||||
|
||||
// Envoi du contenu au serveur uniquement au clic
|
||||
fetch('save-article.php', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({ content: html }) // Le contenu de l'éditeur Quill
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
alert("Données sauvegardées !");
|
||||
window.location.href = "admin.php"; // Redirection après la sauvegarde
|
||||
} else {
|
||||
alert("Erreur lors de la sauvegarde.");
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erreur:', error);
|
||||
alert("Une erreur s'est produite.");
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue