forked from vergnet/site-accueil-insa
Moved map descriptions in database and added admin interface to edit them
This commit is contained in:
parent
71c578aea4
commit
5f0a0ecf53
38 changed files with 454 additions and 433 deletions
|
@ -3,11 +3,14 @@ require_once '../classes/dao.php';
|
|||
|
||||
|
||||
if (isset($_GET['function'])) {
|
||||
if ($_GET['function'] == "save_scores") {
|
||||
if ($_GET['function'] == "save_scores")
|
||||
save_scores();
|
||||
} elseif ($_GET['function'] == "get_scores") {
|
||||
elseif ($_GET['function'] == "get_scores")
|
||||
get_scores();
|
||||
}
|
||||
elseif ($_GET['function'] == "get_map_info")
|
||||
get_map_info();
|
||||
elseif ($_GET['function'] == "save_map_info")
|
||||
save_map_info();
|
||||
} else
|
||||
show_error();
|
||||
|
||||
|
@ -25,14 +28,33 @@ function get_scores() {
|
|||
if (isset($_GET['team'])) {
|
||||
header('Content-Type: application/json');
|
||||
$dao = new Dao('../');
|
||||
|
||||
echo json_encode($dao->get_score_team($_GET['team']));
|
||||
} else {
|
||||
show_error();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function get_map_info() {
|
||||
if (isset($_GET['selector'])) {
|
||||
header('Content-Type: application/json');
|
||||
$dao = new Dao('../');
|
||||
echo json_encode($dao->get_map_info($_GET['selector']));
|
||||
} else {
|
||||
show_error();
|
||||
}
|
||||
}
|
||||
|
||||
function save_map_info() {
|
||||
if (isset($_GET['selector']) && isset($_GET['info'])) {
|
||||
$dao = new Dao('../');
|
||||
$dao->save_map_info($_GET['selector'], $_GET['info']);
|
||||
echo "Réussite";
|
||||
} else {
|
||||
show_error();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function show_error() {
|
||||
echo "Échec : ";
|
||||
var_dump($_GET);
|
||||
|
|
|
@ -3,61 +3,15 @@ ob_start(); // Start reading html
|
|||
$relativePath = "../";
|
||||
?>
|
||||
<h1>ADMIN</h1>
|
||||
<h2>Editer Score</h2>
|
||||
<h2>Bienvenue sur la page d'administration</h2>
|
||||
|
||||
|
||||
<select id="teamSelect">
|
||||
<option value="gli">Glissefondor</option>
|
||||
<option value="pek">Peksentard</option>
|
||||
<option value="boo">Boomsouffle</option>
|
||||
<option value="ver">Verredaigle</option>
|
||||
</select>
|
||||
|
||||
<div class="add-line">
|
||||
<i class="fas fa-plus"></i>
|
||||
</div>
|
||||
<div class="edit-header">
|
||||
<div class="stat-log">Log</div>
|
||||
<div class="stat-points">Points</div>
|
||||
<div class="stat-trash"><i class='fas fa-trash'></i></div>
|
||||
</div>
|
||||
<table class="stats-table edit-stats">
|
||||
</table>
|
||||
|
||||
<div class="save-score">
|
||||
<i class="fas fa-save"></i> Enregistrer
|
||||
</div>
|
||||
<a href="scores.php">Editer les scores</a>
|
||||
<br>
|
||||
<div class="stats-button-container">
|
||||
<a href="<?= $relativePath ?>stats.php" class="stats-button">
|
||||
Retour sur le site
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="<?= $relativePath ?>assets/css/stats.css"/>
|
||||
<a href="map.php">Editer le texte de la carte</a>
|
||||
|
||||
<?php
|
||||
$pageContent = ob_get_clean(); // Store html content in variable
|
||||
$pageTitle = "ADMIN";
|
||||
|
||||
$pageScripts = "<script type=\"text/javascript\" src=\"../assets/js/statsManager.js\"></script>";
|
||||
|
||||
include($relativePath . "includes/template.php"); // Display template with variable content
|
||||
|
||||
function get_stats($team, $path)
|
||||
{
|
||||
$dao = new Dao($path);
|
||||
foreach ($dao->get_score_team($team) as $row) {
|
||||
$text = $row['text'];
|
||||
$points = $row['points'];
|
||||
?>
|
||||
<tr class="entry">
|
||||
<td class="edit-text"><input type='text' value="<?= $text ?>"/></td>
|
||||
<td class="edit-points"><input type='number' value="<?= $points ?>"/></td>
|
||||
<td class='remove-line'><i class="fas fa-trash"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
52
admin/map.php
Normal file
52
admin/map.php
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
ob_start(); // Start reading html
|
||||
$relativePath = "../";
|
||||
require_once $relativePath.'classes/dao.php';
|
||||
?>
|
||||
<h1>ADMIN</h1>
|
||||
<h2>Edition de la carte</h2>
|
||||
|
||||
|
||||
<select id="mapSelect">
|
||||
<?php setup_map_dropdown() ?>
|
||||
</select>
|
||||
|
||||
<br>
|
||||
|
||||
<label for="titleInput">Title</label>
|
||||
<input type="text" id="titleInput">
|
||||
|
||||
<label for="descriptionInput">Description</label>
|
||||
<textarea rows="15" id="descriptionInput"></textarea>
|
||||
|
||||
<div class="save">
|
||||
<i class="fas fa-save"></i> Enregistrer
|
||||
</div>
|
||||
<br>
|
||||
<div class="buttons-container">
|
||||
<a href="index.php" class="admin-back-button">
|
||||
Retour sur la page admin
|
||||
</a>
|
||||
<a href="<?= $relativePath ?>map.php" class="website-back-button">
|
||||
Retour sur le site
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="<?= $relativePath ?>assets/css/adminEdit.css"/>
|
||||
|
||||
<?php
|
||||
$pageContent = ob_get_clean(); // Store html content in variable
|
||||
$pageTitle = "Édition carte";
|
||||
|
||||
$pageScripts = "<script type=\"text/javascript\" src=\"../assets/js/mapManager.js\"></script>";
|
||||
|
||||
include($relativePath . "includes/template.php"); // Display template with variable content
|
||||
|
||||
function setup_map_dropdown() {
|
||||
$dao = new Dao('../');
|
||||
foreach ($dao->get_map_selectors() as $row) {
|
||||
echo "<option value='" . $row['selector'] . "'>" . $row['selector'] . "</option>";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
66
admin/scores.php
Normal file
66
admin/scores.php
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
ob_start(); // Start reading html
|
||||
$relativePath = "../";
|
||||
?>
|
||||
<h1>ADMIN</h1>
|
||||
<h2>Edition des scores</h2>
|
||||
|
||||
|
||||
<select id="teamSelect">
|
||||
<option value="gli">Glissefondor</option>
|
||||
<option value="pek">Peksentard</option>
|
||||
<option value="boo">Boomsouffle</option>
|
||||
<option value="ver">Verredaigle</option>
|
||||
</select>
|
||||
|
||||
<div class="add-line">
|
||||
<i class="fas fa-plus"></i>
|
||||
</div>
|
||||
<div class="edit-header">
|
||||
<div class="stat-log">Log</div>
|
||||
<div class="stat-points">Points</div>
|
||||
<div class="stat-trash"><i class='fas fa-trash'></i></div>
|
||||
</div>
|
||||
<table class="stats-table edit-stats">
|
||||
</table>
|
||||
|
||||
<div class="save">
|
||||
<i class="fas fa-save"></i> Enregistrer
|
||||
</div>
|
||||
<br>
|
||||
<div class="buttons-container">
|
||||
<a href="index.php" class="admin-back-button">
|
||||
Retour sur la page admin
|
||||
</a>
|
||||
<a href="<?= $relativePath ?>stats.php" class="website-back-button">
|
||||
Retour sur le site
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="<?= $relativePath ?>assets/css/adminEdit.css"/>
|
||||
|
||||
<?php
|
||||
$pageContent = ob_get_clean(); // Store html content in variable
|
||||
$pageTitle = "Édition scores";
|
||||
|
||||
$pageScripts = "<script type=\"text/javascript\" src=\"../assets/js/statsManager.js\"></script>";
|
||||
|
||||
include($relativePath . "includes/template.php"); // Display template with variable content
|
||||
|
||||
function get_stats($team, $path)
|
||||
{
|
||||
$dao = new Dao($path);
|
||||
foreach ($dao->get_score_team($team) as $row) {
|
||||
$text = $row['text'];
|
||||
$points = $row['points'];
|
||||
?>
|
||||
<tr class="entry">
|
||||
<td class="edit-text"><input type='text' value="<?= $text ?>"/></td>
|
||||
<td class="edit-points"><input type='number' value="<?= $points ?>"/></td>
|
||||
<td class='remove-line'><i class="fas fa-trash"></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
160
assets/css/adminEdit.css
Normal file
160
assets/css/adminEdit.css
Normal file
|
@ -0,0 +1,160 @@
|
|||
|
||||
.edit-header .stat-log {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.stat-points {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.edit-header .stat-points {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.edit-button-container {
|
||||
border: none;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.edit-header {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
background-color: #61605e;
|
||||
color: #fefefe;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.edit-header .stat-trash {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.edit-text {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.edit-points{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
.buttons-container {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.admin-back-button {
|
||||
width: auto;
|
||||
background: #fafafa;
|
||||
color: #000;
|
||||
border-radius: 5px;
|
||||
padding: 15px;
|
||||
box-shadow: 0 0 5px #000000;
|
||||
}
|
||||
|
||||
.admin-back-button:hover {
|
||||
color: #fafafa;
|
||||
background: #1a1a1a;
|
||||
}
|
||||
|
||||
.website-back-button {
|
||||
width: auto;
|
||||
background: #fafafa;
|
||||
color: #000;
|
||||
border-radius: 5px;
|
||||
padding: 15px;
|
||||
box-shadow: 0 0 5px #000000;
|
||||
}
|
||||
|
||||
.website-back-button:hover {
|
||||
color: #fafafa;
|
||||
background: #1a1a1a;
|
||||
}
|
||||
|
||||
|
||||
.edit-stats {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
text-align: center;
|
||||
background: #484848;
|
||||
color: #fafafa;
|
||||
width: 100%;
|
||||
border: none;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.remove-line {
|
||||
color: #ff1200;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
.remove-line svg {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.remove-line:hover {
|
||||
color: #ff5e00;
|
||||
text-shadow: 0 0 5px #ff4000;
|
||||
}
|
||||
|
||||
.add-line{
|
||||
font-size: 30px;
|
||||
color: #fafafa;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
margin: 30px 0 20px 0;
|
||||
}
|
||||
|
||||
#addLine_gli {
|
||||
background: #f02800;
|
||||
}
|
||||
|
||||
#addLine_pek {
|
||||
background: #21f022;
|
||||
}
|
||||
|
||||
#addLine_boo {
|
||||
background: #F0BA00;
|
||||
}
|
||||
|
||||
#addLine_ver {
|
||||
background: #5aa4f0;
|
||||
}
|
||||
|
||||
|
||||
#editHeader_gli {
|
||||
background: #9c1a00;
|
||||
}
|
||||
|
||||
#editHeader_pek {
|
||||
background: #138a14;
|
||||
}
|
||||
|
||||
#editHeader_boo {
|
||||
background: #6b5300;
|
||||
}
|
||||
|
||||
#editHeader_ver {
|
||||
background: #264565;
|
||||
}
|
||||
|
||||
|
||||
.save {
|
||||
background: #21aa08;
|
||||
font-size: 30px;
|
||||
color: #fafafa;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
margin: 40px 0 0 0;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.save:hover {
|
||||
background: #2ce20b;
|
||||
box-shadow: 0 0 5px #2ce20b;
|
||||
}
|
|
@ -16,158 +16,17 @@ margin-right: 20px;
|
|||
}
|
||||
|
||||
.negative {
|
||||
color: #1a1a1a;
|
||||
color: #bf021c;
|
||||
}
|
||||
|
||||
|
||||
.stat-log, .edit-header.stat-log {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.edit-header .stat-log {
|
||||
width: 70%;
|
||||
.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title {
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.stat-points {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.edit-header .stat-points {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.edit-button-container {
|
||||
border: none;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.edit-header {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
background-color: #61605e;
|
||||
color: #fefefe;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.edit-header .stat-trash {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.edit-text {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.edit-points{
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
.stats-button-container {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.stats-button {
|
||||
width: auto;
|
||||
background: #fafafa;
|
||||
color: #000;
|
||||
border-radius: 5px;
|
||||
padding: 15px;
|
||||
box-shadow: 0 0 5px #000000;
|
||||
}
|
||||
|
||||
.stats-button:hover {
|
||||
color: #fafafa;
|
||||
background: #1a1a1a;
|
||||
}
|
||||
|
||||
.edit-stats {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input {
|
||||
text-align: center;
|
||||
background: #484848;
|
||||
color: #fafafa;
|
||||
width: 100%;
|
||||
border: none;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.remove-line {
|
||||
color: #ff1200;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
.remove-line svg {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.remove-line:hover {
|
||||
color: #ff5e00;
|
||||
text-shadow: 0 0 5px #ff4000;
|
||||
}
|
||||
|
||||
.add-line{
|
||||
font-size: 30px;
|
||||
color: #fafafa;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
margin: 30px 0 20px 0;
|
||||
}
|
||||
|
||||
#addLine_gli {
|
||||
background: #f02800;
|
||||
}
|
||||
|
||||
#addLine_pek {
|
||||
background: #21f022;
|
||||
}
|
||||
|
||||
#addLine_boo {
|
||||
background: #F0BA00;
|
||||
}
|
||||
|
||||
#addLine_ver {
|
||||
background: #5aa4f0;
|
||||
}
|
||||
|
||||
|
||||
#editHeader_gli {
|
||||
background: #9c1a00;
|
||||
}
|
||||
|
||||
#editHeader_pek {
|
||||
background: #138a14;
|
||||
}
|
||||
|
||||
#editHeader_boo {
|
||||
background: #6b5300;
|
||||
}
|
||||
|
||||
#editHeader_ver {
|
||||
background: #264565;
|
||||
}
|
||||
|
||||
|
||||
.save-score {
|
||||
background: #21aa08;
|
||||
font-size: 30px;
|
||||
color: #fafafa;
|
||||
cursor: pointer;
|
||||
transition: 0.3s;
|
||||
margin: 40px 0 0 0;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.save-score:hover {
|
||||
background: #2ce20b;
|
||||
box-shadow: 0 0 5px #2ce20b;
|
||||
}
|
||||
|
||||
.score-nav{
|
||||
width: auto;
|
||||
|
|
|
@ -55,24 +55,23 @@ h1 {
|
|||
}
|
||||
|
||||
h2 {
|
||||
padding-bottom: 3rem;
|
||||
font-size: 32px;
|
||||
font-size: 3.5rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2.5rem;
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 2.3rem;
|
||||
font-size: 2.6rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 2rem;
|
||||
font-size: 2.2rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1.8rem;
|
||||
font-size: 1.9rem;
|
||||
}
|
||||
|
||||
p {
|
||||
|
@ -283,15 +282,6 @@ Full-Width Styles
|
|||
|
||||
.index-background {
|
||||
background: url("../images/bg_index.jpg") no-repeat center fixed;
|
||||
}
|
||||
|
||||
#bg_ussr {
|
||||
background: url("../images/urss.png") no-repeat center fixed;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
#bg_usa {
|
||||
background: url("../images/usa.png") no-repeat center fixed;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
|
@ -526,6 +516,29 @@ transition: 0.3s;
|
|||
box-shadow: 0 0 10px #1f6fce;
|
||||
}
|
||||
|
||||
/* Popup background */
|
||||
.jconfirm-bg {
|
||||
background-color: rgba(26, 26, 26, 0.8) !important;
|
||||
}
|
||||
|
||||
.jconfirm .jconfirm-box.loading {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.jconfirm .jconfirm-box.loading::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Color of the spinning icon */
|
||||
.jconfirm .jconfirm-box.loading::after {
|
||||
border-bottom-color: #ed0223;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.jconfirm .jconfirm-box div.jconfirm-content {
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
Small Device Styles
|
||||
*******************************************************************************/
|
||||
|
|
|
@ -10,18 +10,40 @@ function get_name(id){
|
|||
}
|
||||
|
||||
function clicked(elem){
|
||||
set_element_active(elem)
|
||||
$("#infoBox").load("includes/map_descriptions/" + get_name(elem.id) + ".html");
|
||||
$('html, body').animate({
|
||||
scrollTop: $("#info-box-top").offset().top
|
||||
}, 300);
|
||||
set_element_active(elem);
|
||||
$.alert({
|
||||
title: 'Chargement...',
|
||||
theme: 'supervan',
|
||||
content: function () {
|
||||
let self = this;
|
||||
let object = {
|
||||
"function": 'get_map_info',
|
||||
'selector': get_name(elem.id),
|
||||
};
|
||||
return $.ajax({
|
||||
url: 'admin/ajax_load.php',
|
||||
data: object,
|
||||
method: 'get'
|
||||
}).done(function (data) {
|
||||
if (data.length > 0) {
|
||||
self.setTitle(data[0]['title']);
|
||||
self.setContent(data[0]['description']);
|
||||
} else {
|
||||
self.setTitle('Erreur');
|
||||
self.setContent('Une erreur est survenue')
|
||||
}
|
||||
}).fail(function(){
|
||||
self.setContent('Something went wrong.');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function set_element_active(elem){
|
||||
selected = elem;
|
||||
var elements = document.querySelectorAll('*[id^="map-"]');
|
||||
let elements = document.querySelectorAll('*[id^="map-"]');
|
||||
|
||||
for (var i = 0; i < elements.length; i++){
|
||||
for (let i = 0; i < elements.length; i++){
|
||||
$(elements[i]).css("fill", normalColor);
|
||||
}
|
||||
$(elem).css("fill", clickedColor);
|
||||
|
|
45
assets/js/mapManager.js
Normal file
45
assets/js/mapManager.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
let ajaxurl = 'ajax_load.php';
|
||||
|
||||
$(document).ready(function () {
|
||||
getMapInfo(getSelectedMap());
|
||||
$(".save").click(function () {
|
||||
let info = {};
|
||||
info['title'] = $('#titleInput').val();
|
||||
info['description'] = $('#descriptionInput').val();
|
||||
let object = {
|
||||
"function": 'save_map_info',
|
||||
'selector': getSelectedMap(),
|
||||
'info': info,
|
||||
};
|
||||
$.get(
|
||||
ajaxurl,
|
||||
object,
|
||||
function (data) {
|
||||
alert(data);
|
||||
}
|
||||
);
|
||||
});
|
||||
$('#mapSelect').on('change', function () {
|
||||
getMapInfo(getSelectedMap());
|
||||
});
|
||||
});
|
||||
|
||||
function getSelectedMap() {
|
||||
return $('#mapSelect').val();
|
||||
}
|
||||
|
||||
function getMapInfo(selector) {
|
||||
let object = {
|
||||
"function": 'get_map_info',
|
||||
'selector': selector,
|
||||
};
|
||||
$.get(
|
||||
ajaxurl,
|
||||
object,
|
||||
function (data) {
|
||||
console.log(data);
|
||||
$('#titleInput').val(data[0]['title']);
|
||||
$('#descriptionInput').val(data[0]['description']);
|
||||
}
|
||||
);
|
||||
}
|
|
@ -6,9 +6,23 @@ let entryTemplate =
|
|||
'</div>';
|
||||
|
||||
function showScores(team) {
|
||||
console.log(team);
|
||||
let title = '';
|
||||
switch (team) {
|
||||
case 'gli':
|
||||
title = 'Glissefondor';
|
||||
break;
|
||||
case 'pek':
|
||||
title = 'Peksentard';
|
||||
break;
|
||||
case 'boo':
|
||||
title = 'Boomsouffle';
|
||||
break;
|
||||
case 'ver':
|
||||
title = 'Verredaigle';
|
||||
break;
|
||||
}
|
||||
$.alert({
|
||||
title: team,
|
||||
title: title,
|
||||
theme: 'supervan',
|
||||
content: function () {
|
||||
let self = this;
|
||||
|
|
|
@ -16,7 +16,7 @@ $(document).ready(function () {
|
|||
$(".add-line").click(function () {
|
||||
addLine();
|
||||
});
|
||||
$(".save-score").click(function () {
|
||||
$(".save").click(function () {
|
||||
let lines = getLine();
|
||||
let object = {
|
||||
"function": 'save_scores',
|
||||
|
|
|
@ -57,6 +57,29 @@ class Dao
|
|||
}
|
||||
}
|
||||
|
||||
public function get_map_info($selector) {
|
||||
$sql = 'SELECT title, description FROM map_insa WHERE selector = ?';
|
||||
$cursor = $this->conn->prepare($sql);
|
||||
$cursor->execute([$selector]);
|
||||
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
public function get_map_selectors() {
|
||||
$sql = 'SELECT selector FROM map_insa';
|
||||
$cursor = $this->conn->prepare($sql);
|
||||
$cursor->execute();
|
||||
return $cursor->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
public function save_map_info($selector, $info_json) {
|
||||
$sql = 'DELETE FROM map_insa WHERE selector = ?';
|
||||
$cursor = $this->conn->prepare($sql);
|
||||
$cursor->execute([$selector]);
|
||||
$sql = 'INSERT INTO map_insa (title, description, selector) VALUES (?, ?, ?)';
|
||||
$cursor = $this->conn->prepare($sql);
|
||||
$cursor->execute([$info_json['title'], $info_json['description'], $selector]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
<h3>L'Amicale</h3>
|
||||
<p>
|
||||
Deux petits bâtiments qui regroupent quelques clubs, peut-être que t'y trouveras ton bonheur. C'est aussi ici que tu
|
||||
pourras trouver l'Amicale des élèves, qui organise différents événements tout au long de l'année, comme ta semaine
|
||||
d'accueil.
|
||||
</p>
|
|
@ -1,20 +0,0 @@
|
|||
<h3>La BIB et la Cafet</h3>
|
||||
<p>
|
||||
Oui je sais sur le plan ya juste marqué BIB, mais ya aussi la cafet juste en dessous !
|
||||
</p>
|
||||
<h4>La BIB</h4>
|
||||
<p>
|
||||
Si t'es hors campus, tu vas passer du temps là bas. Tu peux travailler sans (trop de) bruit, lire, et aller sur des
|
||||
ordis (pour faire de l'algo, direction GEI). Si t'aimes lire, que ce soit des romans ou des livres scientifiques, tu
|
||||
seras servi : en plus des livres disponibles à la BIB, il est possible d'en emprunter venant de toute l'Université
|
||||
Paul Sabatier, et ça fait beaucoup de livres. Un gros plus est la possibilité de réserver des box (des boîtes pour
|
||||
ceux fâchés avec l'anglais). C'est des salles de travail, où tu pourras bosser sur des projets avec ton groupe sans
|
||||
déranger et ni être dérangé. Quand la date limite des projets arrive, ya souvent plus de place, donc direction le
|
||||
STPI pour trouver une salle vide.
|
||||
</p>
|
||||
<h4>La Cafet</h4>
|
||||
<p>
|
||||
La petite cafet se cache sous la BIB, avec l'entrée juste à côté du RU. C'est un peu plus cher, mais ya
|
||||
des pizzas, donc c'est bon. C'est un endroit convivial, avec du personnel très accueillant, toujours avec le sourire.
|
||||
Y aller avec ses potes de temps en temps est plutôt sympa pour casser la monotonie du RU.
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le CSH</h3>
|
||||
<p>
|
||||
Ah, le CSH, le Centre des Sciences Humaines. Un endroit merveilleux où tu feras de l'anglais, de la LV2, de
|
||||
l'expression et du PPI, les matières préférées des élèves. Mais bon, ya un distributeur de boissons et
|
||||
des ventes de crêpes, donc ça va.
|
||||
</p>
|
|
@ -1,16 +0,0 @@
|
|||
<h3>Le bâtiment des exams</h3>
|
||||
<p>
|
||||
Le bâtiment des examens. En tout cas pour certains. En 1A, tu feras tes contrôles (les CC) en même temps que toute
|
||||
ta
|
||||
promo. Autant dire que ya pas assez de place dans ce petit bâtiment. Certains feront donc leurs CC ici, d'autres
|
||||
dans les amphis (en vrai les amphis c'est bien t'as de la place).
|
||||
</p>
|
||||
<h3>Le labo AIME</h3>
|
||||
<p>
|
||||
J’ai dit tout à l’heure que la salle des exams est petite, alors que sur le plan le bâtiment est super grand ! Mais
|
||||
en fait c’est très simple, le reste du bâtiment est occupé par un labo : AIME. C'est vraiment son nom, mais aucun
|
||||
rapport avec ce que tu penses, ça veut juste dire "Atelier Interuniversitaire de Micro-nano Électronique". Mais
|
||||
qu'est-ce donc que ce bâtiment mystérieux ? Bah c’est un atelier partagé entre plusieurs écoles pour faire de la
|
||||
micro et nano électronique. Vraiment, t’as pas besoin d’en savoir plus (en tout cas je sais que ça), tu vas jamais y
|
||||
aller.
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le GC</h3>
|
||||
<p>
|
||||
D'après la légende, ce bâtiment serait la maison des futurs ingés en construction ! Situé au fin fond de l'INSA, ce
|
||||
bâtiment est presque inconnu des 1A. Peut-être feras tu quelques TD dans les salles de cet endroit plein de mystères,
|
||||
à condition que tu trouves ta salle...
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le GEI</h3>
|
||||
<p>
|
||||
La maison des futurs électroniciens ou informaticiens ! Un endroit où tu vas passer du temps si t'as du mal en algo (et
|
||||
oui, ya de l'algo en 1A), car du tutorat est organisé par les membres du club info. En fait, c'est le seul endroit
|
||||
où tu peux avoir des salles en libre accès pour faire de l'Ada (le langage de programmation que t'apprends en 1A).
|
||||
Si t'es gentil, peut être que les gars du club pourront te montrer comment faire de l'aglo directement sur ton ordi,
|
||||
pour éviter d'aller au GEI dès que tu veux réviser (t'as pas intérêt à critiquer ma machine virtuelle !).
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le GM</h3>
|
||||
<p>
|
||||
La maison des futurs mécanos, les GM ! Tu vas passer un bon bout de temps ici, que ce soit pour les TP de TI, ou des
|
||||
TD de différentes matières. Tu vas avoir ici une matière que tu ne connais pas du tout : les Techniques
|
||||
Industrielles (sauf si tu viens de S.SI, là tu vas revoir ta première et terminale). Tu vas au premier semestre
|
||||
réaliser un petit projet, et au second, tu vas faire de nombreux TP, des manips sympas, comme de la trempe d'acier, de
|
||||
l'impression 3D, de la découpe, ... Bref, la TI c'est bien.
|
||||
</p>
|
|
@ -1,10 +0,0 @@
|
|||
<h3>Le GMM</h3>
|
||||
<p>
|
||||
La maison des futurs matheux, les GMM ! Ya aussi l'amphi Fourier, mais tu vas pas vraiment y aller. Comme dans tout
|
||||
le reste du bâtiment en fait. C'est le repère des profs de maths, et les élèves en 1A sont rarement invités...
|
||||
</p>
|
||||
<h3>Le CRI</h3>
|
||||
<p>
|
||||
Le Centre de Ressources Informatiques, encore un bâtiment où tu n’iras jamais. C’est le repère des admins de l’INSA,
|
||||
l'endroit où est géré l’informatique de l’école. Ya pas vraiment besoin de savoir plus.
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le GP</h3>
|
||||
<p>
|
||||
La maison des futurs physiciens, les GP ! Tu vas pas aller très souvent ici, car contrairement à la chimie et la
|
||||
thermo, tu vas pas faire tes TPs dans l'antre des physiciens, mais dans un bâtiment spécial, le bâtiment des TPs
|
||||
(un nom original je sais). Qui sait, peut être iras tu dans cet endroit merveilleux lors d'un TD.
|
||||
</p>
|
|
@ -1,7 +0,0 @@
|
|||
<h3>Le GPE</h3>
|
||||
<p>
|
||||
La maison des futurs chimistes, les ICBE ! Et ta maison pendant les TP de chimie et de thermo. Si manipuler des
|
||||
solutions et des réservoirs adiabatiques c'est ton truc, tu vas te régaler. Sinon si t'es comme moi et que tu
|
||||
comprends pas pourquoi quand t'as mis de la soude dans ton bécher c'est devenu bleu, beh bonne chance pour survivre
|
||||
aux 4 heures de TP...
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le Gymnase</h3>
|
||||
<p>
|
||||
Le sport, obligatoire en 1A, avec au menu de la course au premier semestre, et d'autres sports au second. Tu
|
||||
commenceras avec un test de performance, pour savoir si t'es dans le groupe des mauvais (marche nordique ou
|
||||
endurance) ou dans le groupe des bons (2000m vitesse). Ce test ne change pas le sport que tu peux faire au second
|
||||
semestre, donc pas de stress. Au second semestre, plusieurs sports te seront proposés, comme le rugby, le volley, la
|
||||
lutte, la danse, ou encore le meilleur, le golf (en vrai c'est sympa, faut pas discriminer les gens comme ça).
|
||||
</p>
|
|
@ -1,5 +0,0 @@
|
|||
<h3>La laverie</h3>
|
||||
<p>
|
||||
C'est un endroit que tu vas apprendre à connaître si tu rentres pas chez tes parents tous les week-ends. Si tu es au
|
||||
R5 ou R6, pense bien à ta lessive, c'est quand même gênant de faire 3 fois l'aller-retour avec ton linge.
|
||||
</p>
|
|
@ -1,4 +0,0 @@
|
|||
<h3>La Loge</h3>
|
||||
<p>
|
||||
Le lieu de rencontre pour récupérer les commandes de pizza. Ya aussi la sécurité et un plan de l'INSA.
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le PK</h3>
|
||||
<p>
|
||||
Le Ptit Kawa, appelé par certains le foyer étudiant. Mais PK ça sonne mieux. C'est LE lieu des soirées, avec la
|
||||
salle de Boom juste à côté. Tu peux y aller un peu quand tu veux, ya presque tout le temps quelqu'un. Certains
|
||||
aiment bien se retrouver là bas le midi. Des soirées sont régulièrement organisées pour décompresser des cours,
|
||||
surtout le mercredi ou le jeudi. Il est maintenu par les étudiants, et il peut fonctionner que si tout le monde est
|
||||
respectueux, donc fais la fête, mais sans tout casser stp.
|
||||
</p>
|
|
@ -1,13 +0,0 @@
|
|||
<h3>Le R1</h3>
|
||||
<p>
|
||||
C'est la seule résidence du Crous à l'INSA. Elle est directement sur le campus, à 2 minutes des cours, du RU, de la
|
||||
Cafet, du PK, bref c'est la mieux placée si t'aimes l'ambiance !
|
||||
</p>
|
||||
<p>
|
||||
Il y a 6 étages, avec des appartements de 11, 15 et 18 mètres carrés avec pour la majorité la cuisine et les WC
|
||||
communs. Mais il y a aussi un étage spécial : le 3ème. En effet, c'est l'étage des colocs, avec une cuisine et salle
|
||||
de bain communes à deux appartements.
|
||||
</p>
|
||||
<p>
|
||||
PS : pense à un frigo si t'as un 11 m²
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le R2</h3>
|
||||
<p>
|
||||
Située à 20 mètres du R1, cette résidence est elle aussi très bien placée si t'aimes l'ambiance et te lever tard.
|
||||
Mais le R2 a un avantage écrasant sur toutes les autres résidences : la laverie. Et oui, tu n'as qu'à faire 2 pas
|
||||
dehors pour aller laver ton linge, imagine un peu les pauvres du R5 et R6...
|
||||
</p>
|
|
@ -1,7 +0,0 @@
|
|||
<h3>Le R3</h3>
|
||||
<p>
|
||||
Un endroit merveilleux pour pouvoir profiter du PK sans en entendre le bruit. Tout comme le R7, ils ont un
|
||||
distributeur de pain, utile si t'as oublié d'acheter du ptit dej. Certains te diront que c'est l'endroit le plus
|
||||
gazif de l'INSA, qu'ils ont des ascenseurs qui marchent et tout, mais je pense plutôt que c'est parce que ya le Prez
|
||||
de ta semaine là bas, ils trichent un peu dans la plaquette (chuut, leur dit pas...).
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le R4</h3>
|
||||
<p>
|
||||
Tout le monde te dira que le R4 c'est le bout du monde (sauf ceux du R4), et je suis d'accord. Imagine un peu, tu
|
||||
mets 1 minute de plus pour aller en cours que depuis le R7, inadmissible !
|
||||
</p>
|
||||
<p>
|
||||
Si on oublie ce petit point négatif, le R4 est un endroit tranquille où tu pourras bosser et dormir en paix.
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le R5</h3>
|
||||
<p>
|
||||
C'est à coté du R6, mais c'est pas le R6 (attention, ils mordent quand tu les confonds). Le R5, c'est le coin des
|
||||
sportifs, avec une salle de muscu et de danse au rez-de-chaussée, et le gymnase juste à côté. Ça reste loin des
|
||||
bâtiments de cours (sauf celui du GC mais t'y vas presque jamais), mais ils vont te dire que c'est des sportifs. Ça
|
||||
leur donne une excuse pour se balader en skate toute la journée. Quand toute ta classe habite là bas, ça devient
|
||||
presque une maison familiale, avec chacun qui squatte dans les apparts des autres.
|
||||
</p>
|
|
@ -1,8 +0,0 @@
|
|||
<h3>Le R6</h3>
|
||||
<p>
|
||||
C'est à coté du R5, mais c'est pas le R5 (attention, ils mordent quand tu les confonds). Le R6, c'est le coin des
|
||||
sportifs, avec une salle de muscu et de danse au rez-de-chaussée, et le gymnase juste à côté. Ça reste loin des
|
||||
bâtiments de cours (sauf celui du GC mais t'y vas presque jamais), mais ils vont te dire que c'est des sportifs. Ça
|
||||
leur donne une excuse pour se balader en skate toute la journée. Quand toute ta classe habite là bas, ça devient
|
||||
presque une maison familiale, avec chacun qui squatte dans les apparts des autres.
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le R7</h3>
|
||||
<p>
|
||||
Ah, le R7, c'est LA résidence de l'INSA ! Assez proche pour être à moins de 5 min de tous les endroits les plus
|
||||
intéressants de l'INSA, et juste assez loin pour ne pas être dérangé par les bruits, même avec la fenêtre ouverte !
|
||||
De plus, comme le R3, on a un distributeur de pain et de choco pour les gourmands (ou les étourdis).
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le RU</h3>
|
||||
<p>
|
||||
C'est le self, le Restaurant Universitaire. Tu vas apprendre à quelle vitesse une file d'attente peu grandir. Si
|
||||
t'es là à 12h14, ya personne, mais à 12h16, ya 20 minutes d'attente. Autrement dit, dépêche-toi quand tu sors des cours.
|
||||
Sinon, ya toujours la cafet sous la BIB quand t'as la flemme t'attendre.
|
||||
</p>
|
|
@ -1,10 +0,0 @@
|
|||
<h3>Le STPI</h3>
|
||||
<p>
|
||||
Le bâtiment des 1A (toi) et les 2A (nous), aussi appelé le bâtiment des Amphis. C'est là dedans que tu vas passer la
|
||||
majeure partie de ton temps. STPI ça
|
||||
veut dire Sciences et Techniques Pour l'Ingénieur. En gros, c'est l'administration qui gère les 1A et 2A. Après
|
||||
chaque spécialité (ou presque) a son bâtiment (GM, GC, GPE, GEI, GMM, ...) et son administration.
|
||||
</p>
|
||||
<p>
|
||||
Si tu cherches l'Amphi Riquet et Vinci (je pense ils sont quand même assez bien indiqués), c'est là dedans.
|
||||
</p>
|
|
@ -1,6 +0,0 @@
|
|||
<h3>Le bâtiment des TPs</h3>
|
||||
<p>
|
||||
Tu vas passer des heures dans ces salles de TPs, à faire de l'élec et de l'optique avec ton fameux binôme. C'est
|
||||
l'occasion de mettre en pratique ce que t'as vu en cours. Et ça n'a rien à voir avec ce que tu faisais au lycée, ici
|
||||
c'est intéressant.
|
||||
</p>
|
|
@ -1,5 +0,0 @@
|
|||
<h3>Le Trou</h3>
|
||||
<p>
|
||||
C'est pas un bâtiment, c'est un trou. C'est LE lieu de rencontre des élèves avant les soirées, ou
|
||||
pendant, ou après. Bref, c'est un trou devant les apparts, on peut s'asseoir, c'est cool.
|
||||
</p>
|
10
map.php
10
map.php
|
@ -4,8 +4,7 @@ ob_start(); // Start reading html
|
|||
<h1>Le Plan</h1>
|
||||
<p>
|
||||
Voici le plan de ton nouveau campus, que tu vas connaître par cœur en quelques jours (fond de carte issu du site
|
||||
<a
|
||||
href="https://www.openstreetmap.org/#map=17/43.57103/1.46591">Open Street Map</a>).
|
||||
<a href="https://www.openstreetmap.org/#map=17/43.57103/1.46591">Open Street Map</a>).
|
||||
</p>
|
||||
<p>
|
||||
<strong>Clique sur un bâtiment pour voir les infos.</strong>
|
||||
|
@ -20,13 +19,6 @@ ob_start(); // Start reading html
|
|||
<?php echo file_get_contents("assets/images/map.svg"); ?>
|
||||
</div>
|
||||
|
||||
|
||||
<h1 id="info-box-top">Informations</h1>
|
||||
<div id="infoBox">
|
||||
<p>Clique sur un bâtiment pour afficher ses informations</p>
|
||||
</div>
|
||||
|
||||
|
||||
<?php
|
||||
$pageContent = ob_get_clean(); // Store html content in variable
|
||||
$pageTitle = "Plan";
|
||||
|
|
Loading…
Reference in a new issue