Skip to content
Snippets Groups Projects
Commit d5fae7e8 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

11H58 - Base de la page des paramètres terminée fx

parent 376a94d1
No related branches found
No related tags found
No related merge requests found
......@@ -98,7 +98,7 @@ if (isset($_GET["getNotifications"])) {
} elseif (isset($_GET["getSettingsHTML"])&&!empty($_GET["getSettingsHTML"])){
$moduleToCall = json_decode($_GET["getSettingsHTML"],true);
if($moduleToCall['moduleName']=="VBcms"){
include $GLOBALS['vbcmsRootPath']."/vbcms-admin/includes/settingsPage.php";
require_once $GLOBALS['vbcmsRootPath']."/vbcms-admin/includes/settingsPage.php";
getSettingsHTML($moduleToCall['parameters']);
} else {
$moduleExist = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE name=?");
......@@ -115,6 +115,35 @@ if (isset($_GET["getNotifications"])) {
}
} elseif (isset($_GET["saveSettings"])&& (isset($_POST)&&!empty($_POST))){
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteName'");
$response->execute([$_POST["websiteName"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteDescription'");
$response->execute([$_POST["websiteDescription"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteMetaColor'");
$response->execute([$_POST["websiteMetaColor"]]);
//$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteLogo'");
//$response->execute([$_POST["websiteLogo"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='steamApiKey'");
$response->execute([$_POST["steamApiKey"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='updateCanal'");
$response->execute([$_POST["updateCanal"]]);
if (isset($_POST["debugMode"])) $response = $bdd->query("UPDATE `vbcms-settings` SET value='1' WHERE name='debugMode'");
else $response = $bdd->query("UPDATE `vbcms-settings` SET value='0' WHERE name='debugMode'");
if (isset($_POST["autoUpdatesSearch"])) $response = $bdd->query("UPDATE `vbcms-settings` SET value='1' WHERE name='autoUpdatesSearch'");
else $response = $bdd->query("UPDATE `vbcms-settings` SET value='0' WHERE name='autoUpdatesSearch'");
if (isset($_POST["autoUpdatesInstall"])) $response = $bdd->query("UPDATE `vbcms-settings` SET value='1' WHERE name='autoUpdatesInstall'");
else $response = $bdd->query("UPDATE `vbcms-settings` SET value='0' WHERE name='autoUpdatesInstall'");
if (isset($_POST["autoInstallCriticalUpdates"])) $response = $bdd->query("UPDATE `vbcms-settings` SET value='1' WHERE name='autoInstallCriticalUpdates'");
else $response = $bdd->query("UPDATE `vbcms-settings` SET value='0' WHERE name='autoInstallCriticalUpdates'");
} elseif(isset($_GET)&&!empty($_GET)){
echo "Commande \"".array_key_first($_GET)."(".$_GET[array_key_first($_GET)].")\" non reconnue.";
} else {?>
......
<?php
function getSettingsHTML($params){
global $bdd;
global $bdd, $translation;
$curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn();
$steamApiKey = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='steamApiKey'")->fetchColumn();
$autoUpdatesSearch = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='autoUpdatesSearch'")->fetchColumn();
$autoUpdatesInstall = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='autoUpdatesInstall'")->fetchColumn();
$autoInstallCriticalUpdates = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='autoInstallCriticalUpdates'")->fetchColumn();
$debugMode = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='debugMode'")->fetchColumn();
if($autoUpdatesSearch == 1) $autoUpdatesSearch = "checked";
else $autoUpdatesSearch = null;
if($autoUpdatesInstall == 1) $autoUpdatesInstall = "checked";
else $autoUpdatesInstall = null;
if($autoInstallCriticalUpdates == 1) $autoInstallCriticalUpdates = "checked";
else $autoInstallCriticalUpdates = null;
if($debugMode == 1) $debugMode = "checked";
else $debugMode = null;
?>
<div class="d-flex">
<div class="flex-grow-1">
<h5>Paramètres de mises à jour</h5>
<form id="form" method="post">
<div class="row">
<div class="col-sm">
<div class="form-group">
......@@ -26,16 +43,16 @@ function getSettingsHTML($params){
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="autoUpdates">
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesSearch" <?=$autoUpdatesSearch?>>
<label class="form-check-label">Recherche de mises à jour automatiques</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="autoUpdates">
<label class="form-check-label">Mises à jour automatiques</label>
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesInstall" <?=$autoUpdatesInstall?>>
<label class="form-check-label">Installation automatique des mises à jour</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="autoUpdates">
<label class="form-check-label text-danger" data-toggle="tooltip" data-placement="top" title="⚠️Désactiver cette option n'est pas recommandé!⚠️"><i class="fas fa-exclamation-triangle"></i> <strong>Désactiver l'installation automatique de mises à jour critiques</strong></label>
<input class="form-check-input" type="checkbox" value="" name="autoInstallCriticalUpdates" <?=$autoInstallCriticalUpdates?>>
<label class="form-check-label text-danger" data-toggle="tooltip" data-placement="top" title="⚠️Désactiver cette option n'est pas recommandé!⚠️"><i class="fas fa-exclamation-triangle"></i> <strong>Installation automatique de mises à jour critiques</strong></label>
</div>
</div>
......@@ -74,14 +91,15 @@ function getSettingsHTML($params){
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="debugMode">
<label class="form-check-label">Debug mode</label>
<input class="form-check-input" type="checkbox" name="debugMode" <?=$debugMode?>>
<label class="form-check-label"><i class="fas fa-bug"></i> Debug mode</label>
</div>
</div>
</div>
</form>
<button type="button" class="btn btn-brown" onclick="saveChanges()">Sauvegarder</button>
</div>
<div class="admin-tips" style="position: relative !important;">
<div class="tip">
......@@ -92,7 +110,7 @@ function getSettingsHTML($params){
<div class="tip">
<h5>À quoi sert la clé Steam API?</h5>
<p>La clé API Steam permet à certains addons de communiquer avec votre serveur, mais également à certaines interractions la nécessitant.<br><br>
<b>Vous pouvez l'obtenir ici:</b> <a href="https://steamcommunity.com/dev/apikey" class="text-brown">Clé API Steam Web</a></p>
<b>Vous pouvez l'obtenir ici:</b> <a href="https://steamcommunity.com/dev/apikey" class="text-brown" target="_blank">Clé API Steam Web</a></p>
</div>
<div class="tip">
<h5>Qu'est-ce que l'installation automatique de mises à jour critiques?</h5>
......@@ -103,5 +121,26 @@ function getSettingsHTML($params){
</div>
</div>
<script type="text/javascript">
function saveChanges(){
$.post( "<?=$GLOBALS['websiteUrl']?>vbcms-admin/backTasks?saveSettings", $( "#form" ).serialize() )
.done(function( data ) {
if(data!=""){
SnackBar({
message: data,
status: "danger",
timeout: false
});
} else {
SnackBar({
message: '<?=$translation["success-saving"]?>',
status: "success"
});
// On peut reload le contenu de la page avec cette fonction
setSettingsContent();
}
});
}
</script>
<?php
}
\ No newline at end of file
<?php
$curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn();
$steamApiKey = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='steamApiKey'")->fetchColumn();
$activatedExtensions = $bdd->query("SELECT * FROM `vbcms-activatedExtensions`")->fetchAll(PDO::FETCH_ASSOC);
$extensionsFolder = $GLOBALS['vbcmsRootPath'].'/vbcms-content/extensions/';
if (isset($_POST["submit"])) {
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteName'");
$response->execute([$_POST["websiteName"]]);
foreach ($activatedExtensions as $activatedExtension){
$extJsonPath = $extensionsFolder.$activatedExtension['path'].'/extensionInfos.json';
if(file_exists($extJsonPath)){
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteDescription'");
$response->execute([$_POST["websiteDescription"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteMetaColor'");
$response->execute([$_POST["websiteMetaColor"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='websiteLogo'");
$response->execute([$_POST["websiteLogo"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='steamApiKey'");
$response->execute([$_POST["steamApiKey"]]);
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='updateCanal'");
$response->execute([$_POST["updateCanal"]]);
if (isset($_POST["debugMode"])) {
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='debugMode'");
$response->execute(["1"]);
} else {
$response = $bdd->prepare("UPDATE `vbcms-settings` SET value=? WHERE name='debugMode'");
$response->execute(["0"]);
$error = "<b>ERREUR:</b> Le fichier <code>".$extJsonPath.'/extensionInfos.json</code> n\'existe pas!';
}
header("Refresh:0");
}
?>
<!DOCTYPE html>
<html>
......@@ -50,18 +27,34 @@ if (isset($_POST["submit"])) {
<!-- Contenu -->
<div class="page-content d-flex flex-column" leftSidebar="240" rightSidebar="0" style="min-height: calc(100% - 60px);">
<?php
if(isset($error) && !empty($error)){
echo '<div class="alert alert-danger" role="alert">'.$error.'</div>';
}
?>
<h3><?=$translation["settings"]?></h3>
<p>C'est ici que sont regroupés les paramètres de VBcms, mais également des différentes extensions.</p>
<div class="settingsContainer flex-grow-1 d-flex flex-column">
<div class="tabs">
<ul>
<li class="active">
<a href="#">Paramètres généraux</a>
<ul id="tabExtSettingsLinks">
<li id="ext-VBcms">
<a href="#" onclick="change('VBcms')">Paramètres généraux</a>
</li>
<li>
<a href="#">VBcms Website System</a>
<?php
foreach ($activatedExtensions as $activatedExtension){
$extJsonPath = $extensionsFolder.$activatedExtension['path'].'/extensionInfos.json';
if(file_exists($extJsonPath)){
$extInfos = json_decode(file_get_contents($extJsonPath), true);
echo "<li id=\"ext-".$activatedExtension["name"]."\"><a href=\"#\" onclick=\"change('".$activatedExtension["name"]."')\">".$extInfos['showname']."</a></li>";
}
}
?>
<!-- Modèle
<li id="nomExt">
<a href="#" class="active">VBcms Website System</a>
</li>
-->
</ul>
</div>
<div id="settingsContent" class="content centerVerHori flex-grow-1">
......@@ -73,11 +66,15 @@ if (isset($_POST["submit"])) {
<script src="<?=$websiteUrl?>vbcms-admin/vendors/pick-a-color/js/tinycolor-0.9.15.min.js"></script>
<script src="<?=$websiteUrl?>vbcms-admin/vendors/pick-a-color/js/pick-a-color-1.2.3.min.js"></script>
<script type="text/javascript">
// S'éxecute une fois la page chargée
$( document ).ready(function() {
// On va récupérer l'url et ses paramètres
let url = new URL(window.location.href);
let search_params = url.searchParams;
// On check si le paramètre p existe
if(search_params.get('p')==null){
// S'il n'existe pas, on va le créer
let array = {};
array.moduleName="VBcms";
array.parameters="";
......@@ -86,27 +83,62 @@ if (isset($_POST["submit"])) {
let newUrl = url.toString();
window.history.replaceState({}, '', newUrl);
}
// Et on lance la fonction qui affiche la page
setSettingsContent();
});
function setSettingsContent(){
// On ajoute l'animation de chargement
$("#settingsContent").addClass("centerVerHori");
$("#settingsContent").html('<svg class="spinner" width="65px" height="65px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">\
<circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>\
</svg>');
// On récupère l'url ainsi que ses paramètres
// Pas besoin de vérifier que p existe, on l'a déjà fait juste en haut
let url = new URL(window.location.href);
let search_params = url.searchParams;
// On récupère les infos de la requête
var extSettingsQuery = JSON.parse(search_params.get('p'));
// Et on surligne le lien qui correspond à l'extension souhaitée
$("#tabExtSettingsLinks").find('.active').removeClass('active');
$("#ext-"+extSettingsQuery.moduleName).addClass("active");
// Pour le debug
console.log("Debug - call:<?=$websiteUrl?>vbcms-admin/backTasks/?getSettingsHTML="+encodeURIComponent(search_params.get('p')));
// On récupère le contenu de la page
$.get("<?=$websiteUrl?>vbcms-admin/backTasks/?getSettingsHTML="+encodeURIComponent(search_params.get('p')), function(data) {
// On supprime l'animation de chargement
$("#settingsContent").removeClass("centerVerHori");
// Et on insère le contenu
$("#settingsContent").html(data);
// Ici on active les différents éléments JS à chaque intégration de page
// Enfin, on active les différents éléments JS à chaque intégration de page, même si ce n'est pas toujours utile
$('[data-toggle="tooltip"]').tooltip()
$(".pick-a-color").pickAColor();
});
}
function change(extensionName){
// Cette fonction permet de charger une autre page
// On va récupérer l'url et ses paramètres
let url = new URL(window.location.href);
let search_params = url.searchParams;
// On recréé la requête
let array = {};
array.moduleName=extensionName;
array.parameters="";
// Et on modifie le paramètre p
search_params.set('p', JSON.stringify(array));
let newUrl = url.toString();
window.history.replaceState({}, '', newUrl);
// Enfin on lance la fonction qui affiche la page
setSettingsContent();
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -3,7 +3,7 @@
"requiredModules" : [],
"type" : "module",
"name": "vbcms-filemanager",
"showname": "Gestionnaire de fichiers de base",
"showname": "Gestionnaire de fichiers",
"version": "1.0",
"compatible": "48",
"author": "1",
......
......@@ -3,7 +3,7 @@
"requiredModules" : ["vbcms-filemanager"],
"type" : "module",
"name": "vbcms-websiteSystem",
"showname": "Système de site internet de base",
"showname": "Système de site internet",
"version": "1.0",
"compatible": "48",
"author": "1",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment