recupe quote

pull/21/head
brongniart 5 months ago
commit 7b98ca54a8

@ -32,5 +32,5 @@ $style['accueil'] = 'public/styles/styleAccueil.css';
//Images
$image['default'] = 'public/images/default.jpg';
?>

@ -1,108 +1,109 @@
<?php
namespace Controleur;
use Gateway\Connection;
Class FrontControler{
private $listAction;
private string $role = 'admin'; //Mettre en admin le temps de créer les comptes
private Connection $co;
public function __construct($co){
global $twig;
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin'),
'user' => array('quiz','commentary','favorite','logout'),
'admin' => array('null')];
$dVueEreur = [];
$router = new \AltoRouter();
$router->setBasePath('/~kekentin/WF/WF-Website');
$router->map('GET', '/', 'VisitorControler','accueil');
/*
'i' => '[0-9]++'
'a' => '[0-9A-Za-z]++'
'h' => '[0-9A-Fa-f]++'
'*' => '.+?'
'**' => '.++'
'' => '[^/\.]++'
*/
$router->map('GET|POST', '/quote/[i:idQuote]?', 'VisitorControler','quote');
$router->map('GET|POST', '/login', 'VisitorControler','login');
$router->map('GET|POST', '/signin', 'VisitorControler','signin');
$router->map('GET|POST', '/quiz/[i:id]?', 'QuizControler','quiz');
$router->map('GET|POST', '/search/[a:type]?', 'VisitorControler','search');
$match = $router->match();
$action = NULL;
if(!$match){
$dVueEreur[] = "Requête introuvable";
$this->vueErreur($dVueEreur);
}
else{
$controller=$match['target'] ?? null;
$action = $match['name'];
//Si existe, on lappelle
if(!$this->ifExisteAction($action)){
$dVueEreur[] = "Action introuvable";
$this->vueErreur($dVueEreur);
}
else if(!$this->verifDroit($action)){
$action='login';
$controller='VisitorControler';
}
else {
$controller = '\\Controleur\\' . $controller;
$controller = new $controller($co);
if (is_callable(array($controller, $action))) {
call_user_func_array(array($controller, $action),
array($match['params']));
}
}
}
}
private function ifExisteAction(string $action):bool {
if( in_array($action , $this->listAction['admin']) ||
in_array($action , $this->listAction['user']) ||
in_array($action , $this->listAction['visitor']) ) {
return true;
}
return false;
}
private function verifDroit(string $action):bool {
if( in_array($action , $this->listAction['admin']) && $this->role == 'admin') return true;
elseif( in_array($action , $this->listAction['user']) && ($this->role == 'admin' || $this->role == 'user') ) return true;
elseif(in_array($action , $this->listAction['visitor']) && ($this->role == 'admin'|| $this->role == 'user'|| $this->role == 'visitor')) return true;
return false;
}
private function vueErreur(array $dVueErreur){
global $vues;
echo "{$dVueErreur[0]}";
require_once $vues['erreur'];
}
}
<?php
namespace Controleur;
use Gateway\Connection;
Class FrontControler{
private $listAction;
private string $role = 'admin'; //Mettre en admin le temps de créer les comptes
private Connection $co;
public function __construct($co){
global $twig;
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin'),
'user' => array('quiz','commentary','favorite','logout'),
'admin' => array('null')];
$dVueEreur = [];
$router = new \AltoRouter();
$router->setBasePath('/~kekentin/WF/WF-Website');
$router->map('GET', '/', 'VisitorControler','accueil');
/*
'i' => '[0-9]++'
'a' => '[0-9A-Za-z]++'
'h' => '[0-9A-Fa-f]++'
'*' => '.+?'
'**' => '.++'
'' => '[^/\.]++'
*/
$router->map('GET|POST', '/quote/[i:idQuote]?', 'VisitorControler','quote');
$router->map('GET|POST', '/login', 'VisitorControler','login');
$router->map('GET|POST', '/signin', 'VisitorControler','signin');
$router->map('GET|POST', '/quiz/[i:id]?', 'QuizControler','quiz');
$router->map('GET|POST', '/search/[a:type]?', 'VisitorControler','search');
$match = $router->match();
$action = NULL;
if(!$match){
$dVueEreur[] = "Requête introuvable";
$this->vueErreur($dVueEreur);
}
else{
$controller=$match['target'] ?? null;
$action = $match['name'];
//Si existe, on lappelle
if(!$this->ifExisteAction($action)){
$dVueEreur[] = "Action introuvable";
$this->vueErreur($dVueEreur);
}
else if(!$this->verifDroit($action)){
$action='login';
$controller='VisitorControler';
}
else {
$controller = '\\Controleur\\' . $controller;
$controller = new $controller($co);
if (is_callable(array($controller, $action))) {
call_user_func_array(array($controller, $action),
array($match['params']));
}
}
}
}
private function ifExisteAction(string $action):bool {
if( in_array($action , $this->listAction['admin']) ||
in_array($action , $this->listAction['user']) ||
in_array($action , $this->listAction['visitor']) ) {
return true;
}
return false;
}
private function verifDroit(string $action):bool {
if( in_array($action , $this->listAction['admin']) && $this->role == 'admin') return true;
elseif( in_array($action , $this->listAction['user']) && ($this->role == 'admin' || $this->role == 'user') ) return true;
elseif(in_array($action , $this->listAction['visitor']) && ($this->role == 'admin'|| $this->role == 'user'|| $this->role == 'visitor')) return true;
return false;
}
private function vueErreur(array $dVueErreur){
global $vues;
echo "{$dVueErreur[0]}";
require_once $vues['erreur'];
}
}

@ -1,37 +1,46 @@
<?php
namespace Controleur;
Class VisitorControler{
public function accueil(){
global $vues;
require_once $vues['accueil'];
}
public function quote(array $arg){
global $vues;
$id=$arg['idQuote'] ?? 1;
//echo "{$id}";
require_once $vues['quote'];
}
public function login(){
global $vues;
require_once $vues['login'];
}
public function signin(){
global $vues;
require_once $vues['signin'];
}
public function search(){
global $vues;
require_once $vues['search'];
}
}
<?php
namespace Controleur;
use Model\QuoteModel;
use Gateway\Connection;
use Gateway\QuoteGateway;
Class VisitorControler{
private QuoteModel $qMod;
public function __construct(){
global $co;
$this->qMod = new QuoteModel(new QuoteGateway($co));
}
public function accueil(){
global $vues;
require_once $vues['accueil'];
}
public function quote(array $arg){
global $vues;
$id=$arg['idQuote'] ?? 1;
$q = $this->qMod->searchId($id);
//echo "{$id}";
require_once $vues['quote'];
}
public function login(){
global $vues;
require_once $vues['login'];
}
public function signin(){
global $vues;
require_once $vues['signin'];
}
public function search(){
global $vues;
require_once $vues['search'];
}
}

@ -1,135 +1,134 @@
<?php
namespace Gateway;
use Connection;
Class QuoteGateway{
private Connection $con;
public function __construct(Connection $con){
$this->con=$con;
}
public function searchQuote(string $quote,int $numpage,string $language):array{
//recherche par citation
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE content LIKE '%:quote%' AND isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':quote' => array($quote,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchSource(string $source,int $numpage,string $language):array{
//recherche par source
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE s.title LIKE '%:source%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':source' => array($source,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchPers(string $Carac,int $numpage,string $language):array{
//recherche par personnage
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE c.caracter LIKE '%:pers%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':pers' => array($Pers,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchId(string $id):array{
//recherche par id
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE q.id_quote = '%:id%' AND q.isValid = true;";
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
//======================== PARTI ADMIN ========================
//Probablement à déplacer dans un autre fichier
public function getQuoteIsValide():array{
//obtenir les quotes en attentes de validation par l'admin
$query = 'SELECT * FROM Quote WHERE isValid=:bool';
$this->con->executeQuery($query,array(':bool' => array(false, PDO::PARAM_BOOL)));
$result=$this->con->getResults();
return $result;
}
public function validQuote(int $id){
//Valider la quote par l'admin
$query ='UPDATE Quote SET isValid=:newValide WHERE id_Quote=:id';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
}
public function invalidQuote(int $id){
//Invalide la quote par l'admin (suppression)
$query ='DELETE FROM Quote WHERE id_Quote=:id';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
}
public function updateContent(int $id, string $newContent):array{
//Update le contexte de quote passé en paramètre
$queryUpdate = 'UPDATE Quote SET content=:newContent WHERE id_quote=:idQuote';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newContent'=> array($newContent, PDO::PARAM_STR)));
//Renvoie le nouveau contexte de quote
$queryReponse = 'SELECT content FROM Quote WHERE id_quote=:idQuote';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateTimeCode(int $id, string $newTimeCode):array{
//Update le time code de quote passé en paramètre
$queryUpdate = 'UPDATE Quote SET timecode=:newTimeCode WHERE id_quote=:idQuote';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newTimeCode'=> array($newTimeCode, PDO::PARAM_STR)));
//Renvoie le nouveau contexte de quote
$queryReponse = 'SELECT timecode FROM Quote WHERE id_quote=:idQuote';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateDate(int $id, int $newDate):array{
//Update la date de quote passé en paramètre
$queryUpdate = 'UPDATE Source SET dateSource =:newdate WHERE idSource = (SELECT idSource FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newDate'=> array($newDate, PDO::PARAM_INT)));
//Renvoie la nouvelle date de quote
$queryReponse = 'SELECT s.dateSource FROM Source s, Quote q WHERE id_quote=:idQuote AND s.idSource = q.idSource';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateTitle(int $id, string $newTitle):array{
//Update le titre de l'oeuvre de quote passé en paramètre
$queryUpdate = 'UPDATE Source SET title =:newTitle WHERE idSource = (SELECT idSource FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newTitle'=> array($newTitle, PDO::PARAM_STR)));
//Renvoie le nouveau titre de quote
$queryReponse = 'SELECT s.title FROM Source s, Quote q WHERE id_quote=:idQuote AND s.idSource = q.idSource';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateNameCharacter(int $id, string $newNameCharacter):array{
//Update le personnage de l'oeuvre de quote passé en paramètre
$queryUpdate = 'UPDATE Character SET name =:newNameCharacter WHERE idCharacter = (SELECT idCharacter FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newNameCharacter'=> array($newNameCharacter, PDO::PARAM_STR)));
//Renvoie le nouveau personnage de quote
$queryReponse = 'SELECT c.title FROM Character c, Quote q WHERE id_quote=:idQuote AND c.idCharacter = q.idCharacter';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
}
?>
<?php
namespace Gateway;
use PDO;
Class QuoteGateway{
private Connection $con;
public function __construct(Connection $con){
$this->con=$con;
}
public function searchQuote(string $quote,int $numpage,string $language):array{
//recherche par citation
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE content LIKE '%:quote%' AND isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':quote' => array($quote,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchSource(string $source,int $numpage,string $language):array{
//recherche par source
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE s.title LIKE '%:source%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':source' => array($source,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchPers(string $Carac,int $numpage,string $language):array{
//recherche par personnage
$query="SELECT q.id_quote, q.content, c.caracter, c.img_path, s.title, s.date, q.like, q.language FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source WHERE c.caracter LIKE '%:pers%' AND q.isValid = true AND language = :language LIMIT 20 OFFSET :page*20;";
$this->con->executeQuery($query,array(':pers' => array($Pers,PDO::PARAM_STR),':page' => array($numpage,PDO::PARAM_INT),':language' => array($language,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
public function searchId(string $id):array{
//recherche par id
$query="SELECT q.id_quote, q.content, c.caracter, i.imgPath, s.title, s.dates, q.likes, q.langue FROM Quote q JOIN Caracter c ON c.id_caracter = q.id_caracter JOIN Source s ON s.id_source = q.id_source JOIN Image i ON c.id_img = i.id_img WHERE q.id_quote = :id AND q.isvalide = true;";
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_STR)));
$result=$this->con->getResults();
return $result;
}
//======================== PARTI ADMIN ========================
//Probablement à déplacer dans un autre fichier
public function getQuoteIsValide():array{
//obtenir les quotes en attentes de validation par l'admin
$query = 'SELECT * FROM Quote WHERE isValid=:bool';
$this->con->executeQuery($query,array(':bool' => array(false, PDO::PARAM_BOOL)));
$result=$this->con->getResults();
return $result;
}
public function validQuote(int $id){
//Valider la quote par l'admin
$query ='UPDATE Quote SET isValid=:newValide WHERE id_Quote=:id';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
}
public function invalidQuote(int $id){
//Invalide la quote par l'admin (suppression)
$query ='DELETE FROM Quote WHERE id_Quote=:id';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT)));
}
public function updateContent(int $id, string $newContent):array{
//Update le contexte de quote passé en paramètre
$queryUpdate = 'UPDATE Quote SET content=:newContent WHERE id_quote=:idQuote';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newContent'=> array($newContent, PDO::PARAM_STR)));
//Renvoie le nouveau contexte de quote
$queryReponse = 'SELECT content FROM Quote WHERE id_quote=:idQuote';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateTimeCode(int $id, string $newTimeCode):array{
//Update le time code de quote passé en paramètre
$queryUpdate = 'UPDATE Quote SET timecode=:newTimeCode WHERE id_quote=:idQuote';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newTimeCode'=> array($newTimeCode, PDO::PARAM_STR)));
//Renvoie le nouveau contexte de quote
$queryReponse = 'SELECT timecode FROM Quote WHERE id_quote=:idQuote';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateDate(int $id, int $newDate):array{
//Update la date de quote passé en paramètre
$queryUpdate = 'UPDATE Source SET dateSource =:newdate WHERE idSource = (SELECT idSource FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newDate'=> array($newDate, PDO::PARAM_INT)));
//Renvoie la nouvelle date de quote
$queryReponse = 'SELECT s.dateSource FROM Source s, Quote q WHERE id_quote=:idQuote AND s.idSource = q.idSource';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateTitle(int $id, string $newTitle):array{
//Update le titre de l'oeuvre de quote passé en paramètre
$queryUpdate = 'UPDATE Source SET title =:newTitle WHERE idSource = (SELECT idSource FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newTitle'=> array($newTitle, PDO::PARAM_STR)));
//Renvoie le nouveau titre de quote
$queryReponse = 'SELECT s.title FROM Source s, Quote q WHERE id_quote=:idQuote AND s.idSource = q.idSource';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
public function updateNameCharacter(int $id, string $newNameCharacter):array{
//Update le personnage de l'oeuvre de quote passé en paramètre
$queryUpdate = 'UPDATE Character SET name =:newNameCharacter WHERE idCharacter = (SELECT idCharacter FROM Quote WHERE idQuote =:idQuote)';
$con->executeQuery($queryUpdate, array(':idQuote'=>array($id, PDO::PARAM_STR), ':newNameCharacter'=> array($newNameCharacter, PDO::PARAM_STR)));
//Renvoie le nouveau personnage de quote
$queryReponse = 'SELECT c.title FROM Character c, Quote q WHERE id_quote=:idQuote AND c.idCharacter = q.idCharacter';
$con->executeQuery($queryReponse, array(':idQuote'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
}
}
?>

@ -0,0 +1,23 @@
<?php
namespace Model;
use Entity\Quote;
use Gateway\QuoteGateway;
class QuoteModel
{
private QuoteGateway $gateway;
public function __construct(QuoteGateway $gate){
$this->gateway = $gate;
}
public function searchId(int $id): Quote{
$res = $this->gateway->searchId($id);
if( count($res) == 0)
return new Quote(-1,"NULL","NULL","NULL","NULL","NULL",0,"Default");
else
return new Quote($res[0]["id_quote"],$res[0]["content"],$res[0]["caracter"],$res[0]["imgpath"],$res[0]["title"],$res[0]["dates"],$res[0]["likes"],$res[0]["langue"]);
}
}
?>

@ -1,20 +0,0 @@
<?php
namespace Model;
use Entity\Quote;
use Gateway\QuoteGateway;
class QuoteModel
{
private QuoteGateway $gateway;
public function __construct(QuoteGateway $gate){
$this->gateway = $gate;
}
public function searchId(int $id): Quote{
$res = $this->gate->searchId($id)[0];
return new Quote($res["q.id_quote"],$res["q.content"],$res["c.caracter"],$res["c.img_path"],$res["s.title"],$res["s.date"],$res["q.like"],$res["q.language"]);
}
}
?>

@ -1,12 +1,12 @@
<?php
global $twig;
echo $twig->render('head.html.twig', array(
'title' => "Login",
'style' => "public/styles/styleLogin.css",
));
echo $twig->render('bandeau.html.twig');
echo $twig->render('login.html');
<?php
global $twig;
echo $twig->render('head.html.twig', array(
'title' => "Login",
'style' => "public/styles/styleLogin.css",
));
echo $twig->render('bandeau.html.twig');
echo $twig->render('login.html');
?>

@ -1,21 +1,20 @@
<?php
global $twig;
echo $twig->render('head.html.twig', array(
'title' => "Quote",
'style' => "public/styles/styleQuote.css",
));
echo $twig->render('bandeau.html.twig');
echo $twig->render('quote.html', array(
'srcImg' => "public/images/Dark_Vador.jpg",
'nameCarac' => "Dark Vador",
'quoteContent' => "Je suis ton père",
'sourceName' => "Star Wars V : LEmpire contre-attaque",
'dateSortie' => "1980",
'nbLike' => "173000",
'timeCode' =>"1h45",
));
<?php
global $twig;
echo $twig->render('head.html.twig', array(
'title' => "Quote",
'style' => "../public/styles/styleQuote.css",
));
echo $twig->render('bandeau.html.twig');
echo $twig->render('quote.html', array(
'srcImg' => $q->getImgPath(),
'nameCarac' => $q->getCarac(),
'quoteContent' => $q->getContent(),
'sourceName' => $q->getTitleSrc(),
'dateSortie' => $q->getDateSrc(),
'nbLike' => $q->getLike(),
'timeCode' =>"1h45",
));
?>

@ -1,37 +1,38 @@
<div class="container">
<div class="header">
<div class="nav">
<img src="images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="/~kekentin/WF/WF-Website/"><img src="images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ Connexion ◀</h1>
<div class="login">
<p> <strong>Identifiant *</strong></p>
<input type="text" class="connexion" name="name" required />
<p> <strong> Mot de passe *</strong></p>
<input type="password" class="connexion" name="passwd" required />
<div class="createAccount">
<p class="createAccount">Vous n'avez pas de compte?</p>
<a href="/~kekentin/WF/WF-Website/signin" class="createAccount">S'incrire</a>
</div>
<div class="buttonSudmiteDiv">
<button class="buttonSudmite">Connexion</button>
</div>
</div>
</body>
<div class="container">
<div class="header">
<div class="nav">
<img src="images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="{{racine}}/"><img src="images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ Connexion ◀</h1>
<div class="login">
<p> <strong>Identifiant *</strong></p>
<input type="text" class="connexion" name="name" required />
<p> <strong> Mot de passe *</strong></p>
<input type="password" class="connexion" name="passwd" required />
<div class="createAccount">
<p class="createAccount">Vous n'avez pas de compte?</p>
<a href="{{racine}}/signin" class="createAccount">S'incrire</a>
</div>
<div class="buttonSudmiteDiv">
<button class="buttonSudmite">Connexion</button>
</div>
</div>
</body>
</html>
Loading…
Cancel
Save