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

16H26 - Nouvelle page des paramètres

parent b0625c41
No related branches found
No related tags found
No related merge requests found
......@@ -68,3 +68,8 @@ while (($lastPos = strpos($query, "?", $lastPos))!== false) {
foreach ($positions as $value) {
echo $value ."<br />";
}
echo "<br><br>";
unset($test);
$test['moduleName'] = "VBcms";
$test['parameters'] = "";
echo (json_encode($test));
\ No newline at end of file
......@@ -78,6 +78,43 @@ if (isset($_GET["getNotifications"])) {
$calledmodule->initModule($extensionInfos["name"], $extensionInfos["path"], $extensionInfos["adminAccess"], $extensionInfos["clientAccess"], $extensionInfos["compatible"], $extensionInfos["workshopId"]);
}
} elseif (isset($_GET["checkModulesAliases"])&&!empty($_GET["checkModulesAliases"])){
$aliases = json_decode($_GET["checkModulesAliases"],true);
$aliasesAlreadyUsed = array();
if(isset($aliases['adminAccess'])){
$response = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE adminAccess=?");
$response->execute([$aliases['adminAccess']]);
if(!empty($response->fetch())) $aliasesAlreadyUsed['adminAccess'] = true;
else $aliasesAlreadyUsed['adminAccess'] = false;
}
if(isset($aliases['clientAccess'])){
$response = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess=?");
$response->execute([$aliases['clientAccess']]);
if(!empty($response->fetch())) $aliasesAlreadyUsed['clientAccess'] = true;
else $aliasesAlreadyUsed['clientAccess'] = false;
}
echo json_encode($aliasesAlreadyUsed);
} 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";
getSettingsHTML($moduleToCall['parameters']);
} else {
$moduleExist = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE name=?");
$moduleExist->execute([$moduleToCall['moduleName']]);
$moduleExist=$moduleExist->fetch(PDO::FETCH_ASSOC);
if(!empty($moduleExist)){
$extensionsFolder = $GLOBALS['vbcmsRootPath'].'/vbcms-content/extensions/';
$calledModule = new VBcms\module($moduleToCall['moduleName']);
$calledModule->getSettingsPage($moduleToCall['parameters']);
}else{
echo "<h5>Impossible d'afficher la page</h5><p>L'extension <code>".$moduleToCall['moduleName']."</code> n'a pas été trouvée. 😢</p>";
}
}
} elseif(isset($_GET)&&!empty($_GET)){
echo "Commande \"".array_key_first($_GET)."(".$_GET[array_key_first($_GET)].")\" non reconnue.";
} else {?>
......
......@@ -655,3 +655,107 @@ header .menu-item{
display: block;
}
}
.settingsContainer .content{
padding: 0.5em;
}
.settingsContainer .tabs{
border-bottom: 1px solid #dadada;
}
.settingsContainer .tabs ul{
display:flex;
list-style-type:none;
margin: 0;
padding: 0;
}
.settingsContainer .tabs ul li{
margin-left: .5em;
padding: .25em;
}
.settingsContainer .tabs ul li:hover{
border-top: 1px solid var(--mainBrown);
border-left: 1px solid var(--mainBrown);
border-right: 1px solid var(--mainBrown);
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.settingsContainer .tabs ul li a{
color: var(--mainBrown);
}
.settingsContainer .tabs ul li a:link { text-decoration: none; }
.settingsContainer .tabs ul li a:visited { text-decoration: none; }
.settingsContainer .tabs ul li a:hover { text-decoration: none; }
.settingsContainer .tabs ul li a:active { text-decoration: none; }
.settingsContainer .tabs ul .active{
background-color: var(--mainBrown);
border-top: 1px solid var(--mainBrown);
border-left: 1px solid var(--mainBrown);
border-right: 1px solid var(--mainBrown);
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.settingsContainer .tabs ul .active a{
color:white;
}
.spinner {
animation: rotator 1.4s linear infinite;
}
@keyframes rotator {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(270deg);
}
}
.path {
stroke-dasharray: 187;
stroke-dashoffset: 0;
transform-origin: center;
/*animation: dash 1.4s ease-in-out infinite, colors 5.6s ease-in-out infinite;*/
animation: dash 1.4s ease-in-out infinite;
stroke:var(--mainBrown);
}
@keyframes colors {
0% {
stroke: #4285F4;
}
25% {
stroke: #DE3E35;
}
50% {
stroke: #F7C223;
}
75% {
stroke: #1B9A59;
}
100% {
stroke: #4285F4;
}
}
@keyframes dash {
0% {
stroke-dashoffset: 187;
}
50% {
stroke-dashoffset: 46.75;
transform: rotate(135deg);
}
100% {
stroke-dashoffset: 187;
transform: rotate(450deg);
}
}
.centerVerHori{
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
\ No newline at end of file
<?php
function getSettingsHTML($params){
global $bdd;
$curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn();
$steamApiKey = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='steamApiKey'")->fetchColumn();
?>
<div class="d-flex">
<div class="flex-grow-1">
<h5>Paramètres de mises à jour</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Canal de mise à jour</label>
<select class="form-control" name="updateCanal">
<?php
$updateCanals = ["release", "nightly", "dev"];
foreach($updateCanals as $updateCanal){
if($updateCanal == $curentUpdateCanal) $selected = 'selected';
else $selected = '';
echo '<option value="'.$updateCanal.'" '.$selected.'>'.$updateCanal.'</option>';
}
?>
</select>
</div>
</div>
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="autoUpdates">
<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>
</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>
</div>
</div>
</div>
<h5>Identité de l'installation <i class="fas fa-question-circle" data-toggle="tooltip" data-placement="top" title="Nom du site, sa méta-couleur, description, etc."></i></h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Nom du site internet</label>
<input required type="text" value="<?=$GLOBALS['websiteName']?>" class="form-control" name="websiteName">
</div>
<div class="form-group">
<label>Couleur globale du site</label>
<input required type="text" value="<?=$GLOBALS['websiteMetaColor']?>" name="websiteMetaColor" class="pick-a-color form-control">
</div>
</div>
<div class="col-sm">
<div class="form-group">
<label>Courte description du internet</label>
<input required type="text" class="form-control" value="<?=$GLOBALS['websiteDescription']?>" name="websiteDescription">
</div>
</div>
</div>
<h5>Autres paramètres</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Steam API Key</label>
<input type="text" value="<?=$steamApiKey?>" class="form-control" name="steamApiKey">
</div>
</div>
<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>
</div>
</div>
</div>
</div>
<div class="admin-tips" style="position: relative !important;">
<div class="tip">
<h5>À quoi servent ces paramètres?</h5>
<p><b>Ces paramètre permettent de donner une identité à votre site.</b> Ils permettent aux moteurs de recherches ainsi qu'aux applications de le reconnaître.<br><br>
<b>Il n'est pas primordial de les remplir si vous n'utilisez pas la fonction de site internet</b>, mais il reste préférable d'au moins renseigner le nom du serveur ainsi que son logo.</p>
</div>
<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>
</div>
<div class="tip">
<h5>Qu'est-ce que l'installation automatique de mises à jour critiques?</h5>
<p><b>VBcms dispose d'un système d'envoie de commande à distance sécurisé, permettant au serveur principal d'effectuer certaines opérations de maintenances d'extrême urgence.</b><br><br>
Cela signifie que si une faille de sécurité critique a été découvert dans le coeur du cms, VBcms sera en mesure d'automatiquement se mettre à jour dans les plus brefs délais.</p>
<p class="text-danger"><b>Il n'est pas pas recommandé de désactiver cette fonctionnalité, VBcms n'est pas encore à un stade de développement mature.</b></p>
</div>
</div>
</div>
<?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();
if (isset($_POST["submit"])) {
$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->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"]);
}
header("Refresh:0");
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?=$websiteName?> | <?=$translation["settings"]?></title>
<?php include 'includes/depedencies.php';?>
<link rel="stylesheet" href="<?=$websiteUrl?>vbcms-admin/vendors/pick-a-color/css/pick-a-color-1.2.3.min.css">
</head>
<body>
<?php
include ('includes/navbar.php');
?>
<!-- Contenu -->
<div class="page-content d-flex flex-column" leftSidebar="240" rightSidebar="0" style="min-height: calc(100% - 60px);">
<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>
</li>
<li>
<a href="#">VBcms Website System</a>
</li>
</ul>
</div>
<div id="settingsContent" class="content centerVerHori flex-grow-1">
</div>
</div>
</div>
<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">
$( document ).ready(function() {
let url = new URL(window.location.href);
let search_params = url.searchParams;
if(search_params.get('p')==null){
let array = {};
array.moduleName="VBcms";
array.parameters="";
search_params.append('p', JSON.stringify(array));
let newUrl = url.toString();
window.history.replaceState({}, '', newUrl);
}
setSettingsContent();
});
function setSettingsContent(){
$("#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>');
let url = new URL(window.location.href);
let search_params = url.searchParams;
console.log("Debug - call:<?=$websiteUrl?>vbcms-admin/backTasks/?getSettingsHTML="+encodeURIComponent(search_params.get('p')));
$.get("<?=$websiteUrl?>vbcms-admin/backTasks/?getSettingsHTML="+encodeURIComponent(search_params.get('p')), function(data) {
$("#settingsContent").removeClass("centerVerHori");
$("#settingsContent").html(data);
// Ici on active les différents éléments JS à chaque intégration de page
$('[data-toggle="tooltip"]').tooltip()
$(".pick-a-color").pickAColor();
});
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -7,3 +7,7 @@ function enable($name, $path){
function disable(){
}
function getSettingsHTML($params){
echo('<h5>C\'est bien la page du filemanager</h5>');
}
\ No newline at end of file
......@@ -6,3 +6,7 @@ function enable(){
function disable(){
}
function getSettingsHTML($params){
echo('<h5>C\'est bien la page du module de site internet</h5>');
}
\ No newline at end of file
......@@ -67,5 +67,11 @@ namespace VBcms{
include $GLOBALS['vbcmsRootPath'].'/vbcms-content/extensions/'.$this->path."/pageHandler.php"; // Le module appelé va se charger du reste
}
function getSettingsPage($parameters){
$bdd=$this->bdd;
include $GLOBALS['vbcmsRootPath'].'/vbcms-content/extensions/'.$this->path."/init.php";
getSettingsHTML($parameters);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment