Début de la fonctionnalité de dépôt de Img dans le projet
This commit is contained in:
parent
4e9b27772b
commit
1df2ed36a5
35 changed files with 2014 additions and 168 deletions
|
|
@ -8,6 +8,8 @@
|
|||
require("./entities/image_entity.php");
|
||||
require("./models/user_model.php");
|
||||
require("./entities/user_entity.php");
|
||||
require("./models/authorisation_model.php");
|
||||
require("./entities/authorisation_entity.php");
|
||||
require("mother_controller.php");
|
||||
|
||||
/**
|
||||
|
|
@ -18,33 +20,33 @@
|
|||
class AdminCtrl extends MotherCtrl{
|
||||
|
||||
public function admin(){
|
||||
/*accès à la page admin
|
||||
|
||||
if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){
|
||||
header("Location:index.php?ctrl=error&action=error_403");
|
||||
exit;
|
||||
}*/
|
||||
}
|
||||
|
||||
//gestion de l'user
|
||||
$objCategoryModel = new CategoryModel;
|
||||
|
||||
if (!empty($_POST['new_category'])) {
|
||||
$objNewCategory = new Category;
|
||||
if (!empty($objNewCategory->getName())) {
|
||||
$objNewCategory = $_POST['new_category'];
|
||||
$objCategoryModel->insertCategory($objNewCategory);
|
||||
header("Location:index.php?ctrl=admin&action=admin");
|
||||
exit;
|
||||
}
|
||||
$newCat = new Category();
|
||||
$newCat->setName($_POST['new_category']);
|
||||
$objCategoryModel->insertCategory($newCat);
|
||||
header('Location: index.php?ctrl=admin&action=admin');
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!empty($_POST['edit_category'])) {
|
||||
$objEditCategory = new Category;
|
||||
if ($objEditCategory->getId() > 0) {
|
||||
$objEditCategory = $_POST['edit_category'];
|
||||
$objCategoryModel->editCategory($objEditCategory);
|
||||
header("Location:index.php?ctrl=admin&action=admin");
|
||||
exit;
|
||||
}
|
||||
if (!empty($_POST['id_to_edit']) && !empty($_POST['new_name'])) {
|
||||
$editCat = new Category();
|
||||
$editCat->setId($_POST['id_to_edit']);
|
||||
$editCat->setName($_POST['new_name']);
|
||||
$objCategoryModel->editCategory($editCat);
|
||||
header('Location: index.php?ctrl=admin&action=admin');
|
||||
exit;
|
||||
}
|
||||
|
||||
//affichage select des catégories
|
||||
$arrCategory = $objCategoryModel->findAllCategory();
|
||||
$arrCategoryToDisplay = array();
|
||||
|
||||
|
|
@ -54,9 +56,55 @@
|
|||
$arrCategoryToDisplay[] = $objCategory;
|
||||
}
|
||||
|
||||
// Il faudra donner à maman et gérer l'affichage quand Smarty sera prêt
|
||||
$this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay;
|
||||
//$this->_arrData['intCategory'] = $objCategoryModel->;
|
||||
//gestion de l'user
|
||||
$objUserModel = new UserModel;
|
||||
|
||||
if (!empty($_POST['action'])) {
|
||||
$intUserId = (int)$_POST['user_id'];
|
||||
|
||||
if ($intUserId > 0) {
|
||||
if ($_POST['action'] === 'update_status' && !empty($_POST['new_status'])) {
|
||||
$objUser = new User();
|
||||
$objUser->setId($intUserId);
|
||||
$objUser->setStatus((int)$_POST['new_status']);
|
||||
if ($objUserModel->editStatus($objUser)) {
|
||||
$_SESSION['message_success'] = "Le statut a bien été modifié !";
|
||||
}
|
||||
}
|
||||
elseif ($_POST['action'] === 'delete_user') {
|
||||
$objUserModel->delete_soft($intUserId);
|
||||
$_SESSION['message_success'] = "L'utilisateur a été supprimé.";
|
||||
}
|
||||
header("Location: index.php?ctrl=admin&action=admin");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//affichage select des users
|
||||
$arrUser = $objUserModel->findAllUsers();
|
||||
$arrUserToDisplay = array();
|
||||
|
||||
foreach($arrUser as $arrDetUser){
|
||||
$objUser = new User;
|
||||
$objUser->hydrate($arrDetUser);
|
||||
$arrUserToDisplay[] = $objUser;
|
||||
}
|
||||
|
||||
//affichage select des authorisations
|
||||
$objAuthorisationModel = new AuthorisationModel;
|
||||
$arrAuthorisation = $objAuthorisationModel->findAllAuthorisation();
|
||||
$arrAuthorisationToDisplay = array();
|
||||
|
||||
foreach($arrAuthorisation as $arrDetAuthorisation){
|
||||
$objAuthorisation = new Authorisation;
|
||||
$objAuthorisation->hydrate($arrDetAuthorisation);
|
||||
$arrAuthorisationToDisplay[] = $objAuthorisation;
|
||||
}
|
||||
|
||||
//gérer l'affichage
|
||||
$this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay;
|
||||
$this->_arrData['arrUserToDisplay'] = $arrUserToDisplay;
|
||||
$this->_arrData['arrAuthorisationToDisplay'] = $arrAuthorisationToDisplay;
|
||||
$this->_display("admin");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,19 @@
|
|||
|
||||
public function home(){
|
||||
|
||||
|
||||
$intCategory = 0;
|
||||
if (!empty($_GET['filter_cat'])) {
|
||||
$intCategory = (int) $_GET['filter_cat'];
|
||||
}
|
||||
|
||||
$boolOld = false;
|
||||
if (!empty($_GET['filter_old']) && $_GET['filter_old'] == 'true') {
|
||||
$boolOld = true;
|
||||
}
|
||||
|
||||
$objProjectModel = new ProjectModel;
|
||||
$arrProject = $objProjectModel->findAll();
|
||||
$arrProject = $objProjectModel->findAll(0,'',0,0,'','','',$intCategory,$boolOld);
|
||||
$arrProjectToDisplay = array();
|
||||
foreach($arrProject as $arrDetProject){
|
||||
$objProject = new Project;
|
||||
|
|
@ -34,8 +45,6 @@
|
|||
}
|
||||
|
||||
$this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay;
|
||||
|
||||
|
||||
$this->_display("home");
|
||||
|
||||
}
|
||||
|
|
@ -43,8 +52,8 @@
|
|||
/**
|
||||
* Fonction d'affichage de la barre de recherche
|
||||
*/
|
||||
|
||||
public function search(){
|
||||
|
||||
//Récupérer les informations du formulaire
|
||||
$strKeywords = $_POST['keywords']??'';
|
||||
$intAuthor = $_POST['author']??0;
|
||||
|
|
@ -87,8 +96,6 @@
|
|||
/**
|
||||
* Fonction d'affichage de la page projet
|
||||
*/
|
||||
|
||||
|
||||
public function project (){
|
||||
|
||||
$objProjectModel = new ProjectModel;
|
||||
|
|
@ -112,33 +119,33 @@
|
|||
$_SESSION['title'] = $_POST['titleProject']??"";
|
||||
$_SESSION['description'] = $_POST['descProject']??"";
|
||||
$_SESSION['content'] = $_POST['textProject']??"";
|
||||
$_SESSION['thumbnail'] = $_FILES['imageProject']['name']??"";
|
||||
$_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??"";
|
||||
$_SESSION['status'] = 'en_attente';
|
||||
|
||||
|
||||
$objProject = new Project();
|
||||
|
||||
/**
|
||||
/* Créer par Besnik le GOAT et l'autre GOAT de Guillaume
|
||||
/*
|
||||
/* @return bool pour savoir si le fichier existe,
|
||||
/* puis déplace vers le fichier uploads avec les images projet des utilisateurs
|
||||
/* Communication avec la BDD
|
||||
* Créer par Besnik le GOAT et l'autre GOAT de Guillaume
|
||||
*
|
||||
* @return bool pour savoir si le fichier existe,
|
||||
* puis déplace vers le fichier uploads avec les images projet des utilisateurs
|
||||
* Communication avec la BDD
|
||||
*/
|
||||
if (($_SESSION['thumbnail'] != null)){
|
||||
$strDest = "";
|
||||
if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){
|
||||
$strDest = '../public/uploads/projects/'.$_FILES['imageProject']['name'];
|
||||
$strDest = 'uploads/projects/'.$_FILES['imageProject']['name'];
|
||||
var_dump($strDest);
|
||||
move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest);
|
||||
}
|
||||
}
|
||||
|
||||
/** En cas d'appuis sur le bouton d'envoie ou celui de remettre a plus tard
|
||||
/* 1. Changement de status
|
||||
/* 2. Hydratation avec les informations récupéré de l'utilisateur
|
||||
/* 3. Envoie des données à la BDD
|
||||
*/
|
||||
* 1. Changement de status
|
||||
* 2. Hydratation avec les informations récupéré de l'utilisateur
|
||||
* 3. Envoie des données à la BDD
|
||||
*/
|
||||
if (isset($_POST['sendMessage'])) {
|
||||
$_SESSION['status'] = 'publié';
|
||||
$objProject->hydrate($_SESSION);
|
||||
|
|
@ -151,14 +158,12 @@
|
|||
$objProjectModel->insert($objProject);
|
||||
}
|
||||
|
||||
//Débuggage
|
||||
var_dump($_SESSION);
|
||||
var_dump($objProject);
|
||||
$this->_arrData['arrProjectToDiplay'] = $arrProjectToDiplay;
|
||||
$this->_arrData['arrImageToDiplay'] = $arrImageToDiplay;
|
||||
|
||||
$this->_display("project");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -41,12 +41,8 @@ class UserCtrl extends MotherCtrl {
|
|||
}
|
||||
}
|
||||
$this->_arrData['arrError'] = $arrError;
|
||||
|
||||
|
||||
|
||||
$this->_display("login");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
24
entities/authorisation_entity.php
Normal file
24
entities/authorisation_entity.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
require_once("mother_entity.php");
|
||||
|
||||
class Authorisation extends Entity{
|
||||
|
||||
private int $_id;
|
||||
private string $_name = '';
|
||||
|
||||
public function __construct(){
|
||||
$this->_prefix = 'authorisation_';
|
||||
}
|
||||
|
||||
public function getId():int{
|
||||
return $this->_id;
|
||||
}
|
||||
public function setId(int $id){
|
||||
$this->_id = $id;
|
||||
}
|
||||
|
||||
public function getName():string{
|
||||
return $this->_name;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -200,6 +200,7 @@ class Project extends Entity{
|
|||
public function setCreatorName($creatorname){
|
||||
$this->_creatorname = $creatorname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupération du chemin photo profil
|
||||
* @return string nom du chemin photo profil
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@
|
|||
public function getAccountCreation():string{
|
||||
return $this->_account_creation;
|
||||
}
|
||||
|
||||
public function setAccountCreation(string $account_creation){
|
||||
$this->_account_creation = $account_creation;
|
||||
}
|
||||
|
|
|
|||
28
models/authorisation_model.php
Normal file
28
models/authorisation_model.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
require_once('mother_model.php');
|
||||
|
||||
|
||||
/**
|
||||
* Traitement des requêtes pour le status de l'utilisateur
|
||||
* @author : Laura
|
||||
*/
|
||||
|
||||
class AuthorisationModel extends Connect{
|
||||
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* fonction de récupération des infos d'authorisation
|
||||
* @return array
|
||||
*/
|
||||
public function findAllAuthorisation():array{
|
||||
|
||||
$strRq = "SELECT *
|
||||
FROM authorisation";
|
||||
|
||||
return $this->_db->query($strRq)->fetchAll();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
/**
|
||||
* Fonction de récupération des catégories
|
||||
* @param int $intLimit
|
||||
* @return array
|
||||
*/
|
||||
|
||||
|
|
@ -27,21 +28,56 @@
|
|||
|
||||
/**
|
||||
* fonction d'insertion d'une nouvelle catégorie dans la bdd
|
||||
* @param object $objUser L'objet utilisateur
|
||||
* @return bool Est-ce que la requête s'est bien passée (true/false)
|
||||
* @param object $objCategory l'objet catégorie
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function insertCategory(object $objCategory):bool{
|
||||
|
||||
public function insert(object $objCategory):bool{
|
||||
|
||||
$strRq = "INSERT INTO category (category_name, category_parent)
|
||||
VALUES (:name, :parent)";
|
||||
$strRq = "INSERT INTO category (category_name)
|
||||
VALUES (:name)";
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
|
||||
$rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":parent", $objCategory->getParent(), PDO::PARAM_STR);
|
||||
|
||||
return $rqPrep->execute();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* fonction de suppression d'une catégorie dans la bdd
|
||||
* @param object $objCategory l'objet catégorie
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function deleteCategory(object $objCategory):bool{
|
||||
|
||||
$strRq = "DELETE FROM category
|
||||
WHERE category_id= :id";
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
|
||||
$rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT);
|
||||
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* fonction de modification d'une catégorie dans la bdd
|
||||
* @param object $objCategory l'objet catégorie
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function editCategory(object $objCategory):bool{
|
||||
|
||||
$strRq = "UPDATE category
|
||||
SET category_name = :name
|
||||
WHERE category_id = :id";
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
|
||||
$rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT);
|
||||
$rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR);
|
||||
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
/**
|
||||
* Fonction de récupération des images
|
||||
* @param int $intLimit
|
||||
* @return array
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
try{
|
||||
// Connexion à la base de données
|
||||
$this->_db = new PDO(
|
||||
"mysql:host=boulayoune.com;dbname=projet_folliow", // Serveur et BDD
|
||||
"projet_user", //Nom d'utilisateur de la base de données
|
||||
"F0lliowRules!",// Mot de passe de la base de données
|
||||
"mysql:host=localhost;dbname=projet_folliow", // Serveur et BDD mysql:host=boulayoune.com;dbname=projet_folliow
|
||||
"root", //Nom d'utilisateur de la base de données projet_user
|
||||
"",// Mot de passe de la base de données F0lliowRules!
|
||||
array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC) // Mode de renvoi
|
||||
);
|
||||
// Pour résoudre les problèmes d’encodage
|
||||
|
|
|
|||
|
|
@ -9,11 +9,16 @@
|
|||
|
||||
class ProjectModel extends Connect{
|
||||
|
||||
|
||||
/**
|
||||
* Fonction de recherche des projets
|
||||
* @param type string, int et bool
|
||||
* @return array
|
||||
*/
|
||||
public function findAll(int $intLimit=0, string $strKeywords='', int $intAuthor=0,
|
||||
int $intPeriod=0, string $strDate='', string $strStartDate='',
|
||||
string $strEndDate='', int $intCategory=0):array{
|
||||
string $strEndDate='', int $intCategory=0, bool $bool6Months=false):array{
|
||||
|
||||
// Ecrire la requête
|
||||
$strRq = "SELECT project.*,
|
||||
CONCAT(user_firstname, ' ', user_name) AS 'project_creatorname',
|
||||
user_image
|
||||
|
|
@ -21,6 +26,7 @@
|
|||
INNER JOIN users ON user_id = project_user";
|
||||
|
||||
$strWhere = " WHERE ";
|
||||
|
||||
// Recherche par mot clé
|
||||
if ($strKeywords != '') {
|
||||
$strRq .= " WHERE (project_title LIKE '%".$strKeywords."%'
|
||||
|
|
@ -42,22 +48,24 @@
|
|||
$strWhere = " AND ";
|
||||
}
|
||||
|
||||
//recherche par ancienneté
|
||||
if ($bool6Months === true) {
|
||||
$strRq .= $strWhere . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) ";
|
||||
$strWhere = " AND ";
|
||||
}
|
||||
|
||||
// Recherche par dates
|
||||
if ($intPeriod == 0){
|
||||
// Par date exacte
|
||||
if ($strDate != ''){
|
||||
$strRq .= $strWhere." project_creation_date = '".$strDate."'";
|
||||
}
|
||||
}else{
|
||||
// Par période de dates
|
||||
if ($strStartDate != '' && $strEndDate != ''){
|
||||
$strRq .= $strWhere." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'";
|
||||
}else{
|
||||
if ($strStartDate != ''){
|
||||
// A partir de
|
||||
$strRq .= $strWhere." project_creation_date >= '".$strStartDate."'";
|
||||
}else if ($strEndDate != ''){
|
||||
// Avant le
|
||||
$strRq .= $strWhere." project_creation_date <= '".$strEndDate."'";
|
||||
}
|
||||
}
|
||||
|
|
@ -65,37 +73,39 @@
|
|||
|
||||
$strRq .= " ORDER BY project_creation_date DESC";
|
||||
|
||||
|
||||
if ($intLimit > 0){
|
||||
$strRq .= " LIMIT ".$intLimit;
|
||||
}
|
||||
|
||||
// Lancer la requête et récupérer les résultats
|
||||
return $this->_db->query($strRq)->fetchAll();
|
||||
}
|
||||
|
||||
//Fonction d'insertion d'information dans la BDD (Repris de la partie BLOG vu en cours..)
|
||||
/**
|
||||
* Fonction d'insertion d'un nouveau projet dans la bdd
|
||||
* @param object $objProject l'objet projet
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function insert(object $objProject):bool{
|
||||
|
||||
//Construire la requête
|
||||
$strRq = "INSERT INTO project (project_title, project_description, project_thumbnail, project_content, project_status, project_creation_date)
|
||||
VALUES (:title, :description, :thumbnail, :content, :status, DATE(NOW()))";
|
||||
|
||||
// Préparer la requête
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
// Donne les informations
|
||||
|
||||
$rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":status", $objProject->getStatus(), PDO::PARAM_STR);
|
||||
|
||||
//Executer la requête
|
||||
//var_dump($strRq);die;
|
||||
//return $db->exec($strRq);
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction de recherche d'un seul projet
|
||||
* @param int $intId
|
||||
* @return
|
||||
*/
|
||||
public function findOne(int $intId) {
|
||||
$strRq = "SELECT project.*,
|
||||
CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname',
|
||||
|
|
|
|||
|
|
@ -5,66 +5,58 @@
|
|||
/**
|
||||
* Traitement des requêtes pour les utilisateurs
|
||||
* @author : meilleurGroup
|
||||
* @version : V0.5
|
||||
*/
|
||||
|
||||
class UserModel extends Connect{
|
||||
// Attributs
|
||||
|
||||
|
||||
// Méthodes
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction de recherche des utilisateurs et leur niveau d'autorisation
|
||||
* @return array
|
||||
*/
|
||||
public function findAllUsers():array{
|
||||
// Ecrire la requête
|
||||
$strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name
|
||||
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status";
|
||||
// Lancer la requête et récupérer les résultats
|
||||
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
|
||||
WHERE user_deleted_at IS NULL";
|
||||
return $this->_db->query($strRq)->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction de vérification des utilisateurs
|
||||
* @param string $strMail
|
||||
* @param string $strPwd
|
||||
* @return array|bool
|
||||
*/
|
||||
public function verifUser(string $strMail, string $strPwd):array|bool{
|
||||
// 2. Construire la requête
|
||||
|
||||
$strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name
|
||||
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
|
||||
WHERE user_mail = '".$strMail."'";
|
||||
// Récupère mon utilisateur
|
||||
// Executer la requête et récupérer les résultats
|
||||
|
||||
$arrUser = $this->_db->query($strRq)->fetch();
|
||||
// Vérification du mot de passe haché
|
||||
if (password_verify($strPwd, $arrUser['user_password'])){
|
||||
// Renvoi l'utilisateur
|
||||
unset($arrUser['user_password']); // on enlève le pwd
|
||||
unset($arrUser['user_password']);
|
||||
return $arrUser;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//public function insert(string $strName, string $strFirstname, string $strMail, string $strPwd):int{
|
||||
/**
|
||||
* Fonction d'insertion d'un utilisateur en BDD
|
||||
* @param object $objUser L'objet utilisateur
|
||||
* @return bool Est-ce que la requête s'est bien passée (true/false)
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function insert(object $objUser):bool{
|
||||
|
||||
// 2. Construire la requête
|
||||
|
||||
$strRq = "INSERT INTO users (user_name, user_firstname, user_pseudo, user_mail, user_password, user_phone, user_work, user_location, user_description)
|
||||
VALUES (:name, :firstname, :pseudo,:mail, :pwd, :phone, :work, :location,:description)";
|
||||
// Préparer la requête
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
// Donne les informations
|
||||
|
||||
$rqPrep->bindValue(":name", $objUser->getName(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":firstname", $objUser->getFirstname(), PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(":pseudo", $objUser->getPseudo(), PDO::PARAM_STR);
|
||||
|
|
@ -75,19 +67,54 @@
|
|||
$rqPrep->bindValue(':location', $objUser->getLocation() ?? "", PDO::PARAM_STR);
|
||||
$rqPrep->bindValue(':description', $objUser->getDescription() ?? "", PDO::PARAM_STR);
|
||||
|
||||
|
||||
|
||||
// 3. Executer la requête
|
||||
//var_dump($strRq);die;
|
||||
//return $db->exec($strRq);
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
public function mailExists(string $mail): bool
|
||||
{
|
||||
|
||||
/**
|
||||
* Fonction de vérification de mail
|
||||
* @param string $mail
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function mailExists(string $mail): bool{
|
||||
|
||||
$rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1");
|
||||
$rq->bindValue(":mail", $mail);
|
||||
$rq->execute();
|
||||
|
||||
return (bool)$rq->fetchColumn();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction de changement de status d'un utilisateur
|
||||
* @param object $objUser L'objet utilisateur
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
|
||||
public function editStatus(object $objUser):bool{
|
||||
|
||||
$strRq = "UPDATE users
|
||||
SET user_status = :status
|
||||
WHERE user_id = :id";
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
$rqPrep->bindValue(":id", $objUser->getId(), PDO::PARAM_INT);
|
||||
$rqPrep->bindValue(":status", $objUser->getStatus(), PDO::PARAM_INT);
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction permettant de supprimer un utilisateur avec une date de suppression
|
||||
* @param int $intId L'identifiant de l'utilisateur
|
||||
* @return bool Est-ce que la requête s'est bien passée
|
||||
*/
|
||||
public function delete_soft(int $intId):bool{
|
||||
|
||||
$strRq = "UPDATE users
|
||||
SET user_deleted_at = NOW()
|
||||
WHERE user_id = :id";
|
||||
|
||||
$rqPrep = $this->_db->prepare($strRq);
|
||||
$rqPrep->bindValue(":id", $intId, PDO::PARAM_INT);
|
||||
return $rqPrep->execute();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:03:02
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 15:07:18
|
||||
from 'file:views/_partial/header.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f726978651_30802796',
|
||||
'unifunc' => 'content_698b49a6a94424_69678291',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
|
|
@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
array (
|
||||
),
|
||||
))) {
|
||||
function content_6989f726978651_30802796 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b49a6a94424_69678291 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial';
|
||||
?><!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:17:39
|
||||
from 'file:views/project.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ae9a3ee5104_18468093',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'3309f8a981537e6cbbf8869c67d6dd307aa06ae3' =>
|
||||
array (
|
||||
0 => 'views/project.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
'file:../app/views/partials/preview.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_698ae9a3ee5104_18468093 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_2126029828698ae9a3edc808_29541958', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_2126029828698ae9a3edc808_29541958 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center">
|
||||
<div>
|
||||
<h2>Alimenter votre projet</h2>
|
||||
<form method="post">
|
||||
<button type="submit" class="btn btn-primary btn-lg" name="showForm">+</button>
|
||||
<?php if ((true && (true && null !== ($_POST['toContinue'] ?? null)))) {?>
|
||||
<button type="submit" class="btn btn-warning btn-lg" name="showFormContinue">Reprendre</button>
|
||||
<?php }?>
|
||||
</form>
|
||||
|
||||
<?php if ((true && (true && null !== ($_POST['showForm'] ?? null))) || (true && (true && null !== ($_POST['showFormContinue'] ?? null)))) {?>
|
||||
<form method="post" enctype="multipart/form-data" onsubmit="return confirm('Voulez-vous vraiment envoyer le formulaire ?')">
|
||||
<div>
|
||||
<label>Titre</label>
|
||||
<input type="text" name="titleProject">
|
||||
</div>
|
||||
<div>
|
||||
<label>Description</label>
|
||||
<input type="text" name="descProject">
|
||||
</div>
|
||||
<div>
|
||||
<label>Texte Portfolio</label>
|
||||
<input type="text" name="textProject">
|
||||
</div>
|
||||
<div>
|
||||
<input name="imageProject" class="form-control" type="file">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-md" name="sendMessage">Envoyer</button>
|
||||
<button type="submit" class="btn btn-warning btn-md" name="toContinue">Remettre à plus tard</button>
|
||||
</form>
|
||||
<?php }?>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
||||
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Photos behind the scene</h3>
|
||||
<div class="row mb-2">
|
||||
<img>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Other projects</h3>
|
||||
<div class="row mb-2">
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<section>
|
||||
</body>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -1,18 +1,18 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:03:02
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 14:04:32
|
||||
from 'file:views/_partial/preview.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f7269f97f7_68511256',
|
||||
'unifunc' => 'content_698b3af030ae20_50383766',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'3848b4db17319a951391d803dc4119c46e490c52' =>
|
||||
array (
|
||||
0 => 'views/_partial/preview.tpl',
|
||||
1 => 1770646177,
|
||||
1 => 1770721040,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
|
|
@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
array (
|
||||
),
|
||||
))) {
|
||||
function content_6989f7269f97f7_68511256 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b3af030ae20_50383766 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial';
|
||||
?>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:16:16
|
||||
from 'file:views/projet_display.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ae9506da109_21542800',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'52c011ce77c5dc743b6591550c55ce4a78a4dbca' =>
|
||||
array (
|
||||
0 => 'views/projet_display.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698ae9506da109_21542800 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_919254056698ae95061e435_82964089', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_919254056698ae95061e435_82964089 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<main class="container mt-5 py-5">
|
||||
|
||||
<!-- Message après l'envoi d'email -->
|
||||
<?php if ((true && (true && null !== ($_GET['mail'] ?? null))) && $_GET['mail'] === 'ok') {?>
|
||||
<div class="alert alert-success">Email envoyé avec succès.</div>
|
||||
<?php } elseif ((true && (true && null !== ($_GET['mail'] ?? null))) && $_GET['mail'] === 'fail') {?>
|
||||
<div class="alert alert-danger">Erreur lors de l'envoi de l'email.</div>
|
||||
<?php }?>
|
||||
|
||||
<div class="row g-4">
|
||||
|
||||
<!-- Contenu principal du projet -->
|
||||
<div class="col-lg-8">
|
||||
|
||||
<h1 class="fw-bold"><?php echo $_smarty_tpl->getValue('objProject')->getTitle();?>
|
||||
</h1>
|
||||
|
||||
<p class="text-muted">
|
||||
<?php echo $_smarty_tpl->getValue('arrProject')['category_name'] ?? 'Général';?>
|
||||
|
||||
</p>
|
||||
|
||||
<div class="mb-4 shadow-sm">
|
||||
<img src=".<?php echo $_smarty_tpl->getValue('objProject')->getThumbnail();?>
|
||||
"
|
||||
class="img-fluid rounded w-100">
|
||||
</div>
|
||||
|
||||
<div class="bg-light p-4 rounded mb-4">
|
||||
<h4 class="border-bottom pb-2">Description</h4>
|
||||
<p class="lead"><?php echo $_smarty_tpl->getValue('objProject')->getDescription();?>
|
||||
</p>
|
||||
|
||||
<div class="mt-4">
|
||||
<?php echo $_smarty_tpl->getValue('objProject')->getContent();?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Formulaire qui envoie la demande au contrôleur (sendEmail) -->
|
||||
<div class="card shadow-sm p-4 mb-5">
|
||||
<form method="post" action="index.php?ctrl=project&action=sendEmail">
|
||||
|
||||
<input type="hidden" name="project_id"
|
||||
value="<?php echo $_smarty_tpl->getValue('objProject')->getId();?>
|
||||
">
|
||||
|
||||
<input type="email" name="to_email"
|
||||
class="form-control mb-3"
|
||||
placeholder="Adresse email" required>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100">
|
||||
Envoyer par email
|
||||
</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Sidebar : informations du créateur -->
|
||||
<div class="col-lg-4">
|
||||
<div class="card text-center shadow-sm p-4">
|
||||
|
||||
<img src=".<?php echo $_smarty_tpl->getValue('objProject')->getUser_image();?>
|
||||
"
|
||||
class="rounded-circle mb-3 mx-auto"
|
||||
style="width:100px;height:100px;object-fit:cover;">
|
||||
|
||||
<h5><?php echo $_smarty_tpl->getValue('objProject')->getCreatorName();?>
|
||||
</h5>
|
||||
|
||||
<p class="text-muted small">
|
||||
Publié le <?php echo $_smarty_tpl->getValue('objProject')->getCreation_date();?>
|
||||
|
||||
</p>
|
||||
|
||||
<button class="btn btn-primary">Contacter le talent</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:16:41
|
||||
from 'file:views/login.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ae969a7db02_27363144',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'5375cd75c92fd8c801b429efee0d6437582d377e' =>
|
||||
array (
|
||||
0 => 'views/login.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698ae969a7db02_27363144 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_342031104698ae969942f96_18698715', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_342031104698ae969942f96_18698715 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<section aria-label="Se connecter">
|
||||
<?php if ($_smarty_tpl->getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrError')) > 0) {?>
|
||||
<div class="alert alert-danger">
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrError'), 'strError');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('strError')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<p><?php echo $_smarty_tpl->getValue('strError');?>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</div>
|
||||
<?php }?>
|
||||
<!-- Contenu principal de la page -->
|
||||
<main class="container py-5">
|
||||
|
||||
<!-- Centrage horizontal du formulaire -->
|
||||
<div class="row justify-content-center">
|
||||
<!-- Contenu principal de la page -->
|
||||
<main class="container py-5">
|
||||
|
||||
<!-- Centrage horizontal du formulaire -->
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-8 col-lg-5">
|
||||
|
||||
<!-- Carte contenant le formulaire de connexion -->
|
||||
<div class="card shadow-sm border-0 rounded-4 p-4 p-lg-5">
|
||||
|
||||
<!-- Titre principal -->
|
||||
<h1 class="h3 fw-bold mb-1">Connexion</h1>
|
||||
|
||||
<!-- Texte descriptif -->
|
||||
<p class="text-secondary mb-4">
|
||||
Connectez-vous à votre compte.
|
||||
</p>
|
||||
|
||||
<!-- Formulaire de connexion -->
|
||||
<!-- Le traitement sera effectué en PHP via la méthode POST -->
|
||||
<form method="POST">
|
||||
|
||||
<div class="row g-3">
|
||||
|
||||
<!-- Champ : adresse e-mail de l'utilisateur -->
|
||||
<div class="col-12">
|
||||
<label for="user_mail" class="form-label">
|
||||
Adresse e-mail
|
||||
</label>
|
||||
<input
|
||||
value="<?php echo (($tmp = $_smarty_tpl->getValue('strMail') ?? null)===null||$tmp==='' ? '' ?? null : $tmp);?>
|
||||
"
|
||||
type="email"
|
||||
class="form-control <?php if ((true && (true && null !== ($_smarty_tpl->getValue('arrError')['mail'] ?? null)))) {?>is-invalid<?php }?>"
|
||||
id="user_mail"
|
||||
name="user_mail"
|
||||
required
|
||||
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ : mot de passe -->
|
||||
<div class="col-12">
|
||||
<label for="user_password" class="form-label">
|
||||
Mot de passe
|
||||
</label>
|
||||
<input
|
||||
type="password"
|
||||
class="form-control <?php if ((true && (true && null !== ($_smarty_tpl->getValue('arrError')['pwd'] ?? null)))) {?>is-invalid<?php }?>"
|
||||
id="user_password"
|
||||
name="user_password"
|
||||
required
|
||||
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Option "Se souvenir de moi" (fonctionnalité optionnelle côté PHP) -->
|
||||
<div class="col-12">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="remember_me" name="remember_me">
|
||||
<label class="form-check-label" for="remember_me">
|
||||
Se souvenir de moi
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bouton de soumission du formulaire -->
|
||||
<div class="col-12 d-grid mt-2">
|
||||
<button type="submit" class="btn btn-primary btn-lg rounded-3">
|
||||
Se connecter
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Lien vers la page d'inscription -->
|
||||
<div class="col-12 text-center">
|
||||
<small class="text-secondary">
|
||||
Pas encore de compte ?
|
||||
<a href="index.php?ctrl=user&action=signin" class="link-primary">Créer un compte</a>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<!-- Lien pour la récupération du mot de passe -->
|
||||
<div class="col-12 text-center">
|
||||
<small>
|
||||
<a href="#" class="link-primary">
|
||||
Mot de passe oublié ?
|
||||
</a>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</section>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:03:02
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 15:07:18
|
||||
from 'file:views/layout.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f726914163_83904848',
|
||||
'unifunc' => 'content_698b49a6a1f282_93718699',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
|
|
@ -22,21 +22,21 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
'file:views/_partial/footer.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_6989f726914163_83904848 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b49a6a1f282_93718699 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, false);
|
||||
$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_14089017836989f726912e95_86271581', "content");
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1448432322698b49a6a1df69_22260225', "content");
|
||||
?>
|
||||
|
||||
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_14089017836989f726912e95_86271581 extends \Smarty\Runtime\Block
|
||||
class Block_1448432322698b49a6a1df69_22260225 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:03:02
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 14:04:32
|
||||
from 'file:views/home.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f72687e0c8_78461032',
|
||||
'unifunc' => 'content_698b3af017bda3_81099221',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'7e6dbbb1e41ad859e7f5b7b444b7670474263f88' =>
|
||||
array (
|
||||
0 => 'views/home.tpl',
|
||||
1 => 1770639154,
|
||||
1 => 1770721040,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
|
|
@ -21,20 +21,20 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
'file:views/_partial/preview.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_6989f72687e0c8_78461032 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b3af017bda3_81099221 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_15962470546989f72687a521_39502617', "content");
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_856983399698b3af0178228_49803206', "content");
|
||||
?>
|
||||
|
||||
<?php $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_15962470546989f72687a521_39502617 extends \Smarty\Runtime\Block
|
||||
class Block_856983399698b3af0178228_49803206 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
|
|
@ -48,6 +48,19 @@ $_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
|||
directement en contact avec les entreprises.</p>
|
||||
</section>
|
||||
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center text-center">
|
||||
<div class="mb-4">
|
||||
<form method="GET" action="index.php">
|
||||
<input type="hidden" name="ctrl" value="project">
|
||||
<input type="hidden" name="action" value="home">
|
||||
<button type="submit" name="filter_cat" value="1" class="btn btn-primary">Design</button>
|
||||
<button type="submit" name="filter_cat" value="2" class="btn btn-primary">Développement Web</button>
|
||||
<button type="submit" name="filter_old" value="true" class="btn btn-primary">Plus de 6 mois</button>
|
||||
<a href="index.php?ctrl=project&action=home" class="btn btn-primary">Tout</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container" aria-label="Articles récents">
|
||||
<h2 class="visually-hidden">Les 4 derniers articles</h2>
|
||||
<div class="row mb-2">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:32:47
|
||||
from 'file:views/layout.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698aed2fd402f7_78850375',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'947d9aa54bf412a952e2af2d8a8255035d91b950' =>
|
||||
array (
|
||||
0 => 'views/layout.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
'file:views/_partial/header.tpl' => 1,
|
||||
'file:views/_partial/footer.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_698aed2fd402f7_78850375 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, false);
|
||||
$_smarty_tpl->renderSubTemplate("file:views/_partial/header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_691069574698aed2fd3d8f8_28027733', "content");
|
||||
?>
|
||||
|
||||
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:views/_partial/footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_691069574698aed2fd3d8f8_28027733 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:32:47
|
||||
from 'file:views/admin.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698aed2fac7079_66630300',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'ac77f39f91cdf26a0eb3f0963ead4008a7bda8fb' =>
|
||||
array (
|
||||
0 => 'views/admin.tpl',
|
||||
1 => 1770712365,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698aed2fac7079_66630300 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_701047722698aed2faa98f9_91663021', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_701047722698aed2faa98f9_91663021 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
|
||||
<section class="sb-nav-fixed">
|
||||
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
|
||||
|
||||
<a class="navbar-brand ps-3" href="index.php?ctrl=project&action=home"><img src="assests/img/Logo-Wordmark.svg" alt="Logo du site" width="150px"></a>
|
||||
<button class="btn btn-link btn-sm order-1 order-lg-0 me-4 me-lg-0" id="sidebarToggle" href="#!"><i class="fas fa-bars"></i></button>
|
||||
<form class="d-none d-md-inline-block form-inline ms-auto me-0 me-md-3 my-2 my-md-0">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" placeholder="Recherche par pseudo..." aria-label="Recherche pseudo" aria-describedby="btnNavbarSearch" />
|
||||
<button class="btn btn-primary" id="btnNavbarSearch" type="button"><i class="fas fa-search"></i></button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Navbar - User-->
|
||||
<ul class="navbar-nav ms-auto ms-md-0 me-3 me-lg-4">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" id="navbarDropdown" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"><i class="fas fa-user fa-fw"></i></a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
<li><a class="dropdown-item" href="/option.php">Paramètre</a></li>
|
||||
<li><hr class="dropdown-divider" /></li>
|
||||
<li><a class="dropdown-item" href="/deconnexion.php">Déconnexion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- SideNav Infos -->
|
||||
<div id="layoutSidenav">
|
||||
<div id="layoutSidenav_nav">
|
||||
<nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion">
|
||||
<div class="sb-sidenav-menu">
|
||||
<div class="nav">
|
||||
<div class="sb-sidenav-menu-heading"></div>
|
||||
<a class="nav-link" href="index.html">
|
||||
<div class="sb-nav-link-icon"><i class="fas fa-tachometer-alt"></i></div>
|
||||
Rafraichir la page
|
||||
</a>
|
||||
<div class="sb-sidenav-menu-heading"></div>
|
||||
<div class="collapse" id="collapseLayouts" aria-labelledby="headingOne" data-bs-parent="#sidenavAccordion">
|
||||
</div>
|
||||
|
||||
<form action="post">
|
||||
<div class="container-fluid ps-2">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<label for="checkbox1">Par date</label>
|
||||
</div>
|
||||
<div class="col-6 text-center">
|
||||
<input type="checkbox" name="search_date" id="">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label for="checkbox2">Par date de creation de compte</label>
|
||||
</div>
|
||||
<div class="col-6 text-center">
|
||||
<input type="checkbox" name="search_creationdate" id="">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<label for="checkbox3">Recherche par date</label>
|
||||
</div>
|
||||
<div class="col-6 text-center">
|
||||
<input type="checkbox" name="search_date" id="">
|
||||
</div>
|
||||
<div class="col-12 text-center">
|
||||
<button type="submit" class="btn mt-3 bg-primary text-light">Recherche</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sb-sidenav-footer">
|
||||
<div class="small">Connecté avec le compte : <?php echo $_SESSION['user']['user_name'];?>
|
||||
<?php echo $_SESSION['user']['user_firstname'];?>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<div class="container-fluid px-4">
|
||||
<h1 class="mt-4">Dashboard</h1>
|
||||
<div class="container-fluid px-4">
|
||||
<!-- USER MODIF -->
|
||||
<div class="p-3 mt-2 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
|
||||
<div class="container-fluid pt-2">
|
||||
<h2>Gestion de l'utilsateur</h2>
|
||||
<p>Changer le statut ou supprimer un utilisateur</p>
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<img src="./assests/img/Logo-Wordmark.svg" alt="" width="100">
|
||||
</div>
|
||||
<form method="POST">
|
||||
<div class="col-6">
|
||||
<select class="form-select" aria-label="Default select example" name="user_id">
|
||||
<option value="0">Choisir un utilisateur</option>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrUserToDisplay'), 'user');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('user')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<option value="<?php echo $_smarty_tpl->getValue('user')->getId();?>
|
||||
"><?php echo $_smarty_tpl->getValue('user')->getName();?>
|
||||
<?php echo $_smarty_tpl->getValue('user')->getFirstname();?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</select>
|
||||
<select class="form-select" aria-label="Default select example" name="new_status">
|
||||
<option value="0" selected>Modifier le statut de l'Utilisateur...</option>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrAuthorisationToDisplay'), 'arrDetAuthorisation');
|
||||
$foreach1DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetAuthorisation')->value) {
|
||||
$foreach1DoElse = false;
|
||||
?>
|
||||
<option value="<?php echo $_smarty_tpl->getValue('arrDetAuthorisation')->getId();?>
|
||||
"><?php echo $_smarty_tpl->getValue('arrDetAuthorisation')->getName();?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button type="submit" name="action" value="update_status" class="btn bg-success text-light"> Valider</button>
|
||||
<button type="submit" name="action" value="delete_user" class="btn bg-danger text-light">Supprimer l'utilisateur</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- catégorie modif -->
|
||||
<div class="p-3 mt-2 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
|
||||
<div class="container-fluid pt-2">
|
||||
<h2>Gestion des catégories</h2>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<form method="post">
|
||||
<p>Modifier une catégorie existante</p>
|
||||
<select class="form-select" aria-label="Default select example" name="id_to_edit">
|
||||
<option value="0">Choix de la catégorie</option>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategoryToDisplay'), 'category');
|
||||
$foreach2DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('category')->value) {
|
||||
$foreach2DoElse = false;
|
||||
?>
|
||||
<option value="<?php echo $_smarty_tpl->getValue('category')->getId();?>
|
||||
"><?php echo $_smarty_tpl->getValue('category')->getName();?>
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</select>
|
||||
<br>
|
||||
<div class="form-floating mb-3">
|
||||
<input type="text" class="form-control" id="floatingInput" name="new_name">
|
||||
<label for="floatingInput">Nouveau nom de la catégorie</label>
|
||||
</div>
|
||||
<button type="submit" class="btn bg-success text-light rounded-circle"> ✓</button>
|
||||
</form>
|
||||
<div>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<div class="row">
|
||||
<!-- creation cat-->
|
||||
<div class="col-6">
|
||||
<form method="POST">
|
||||
<p>Créer une nouvelle catégorie</p>
|
||||
<div class="form-floating mb-3">
|
||||
<input type="text" class="form-control" id="floatingInput" name="new_category">
|
||||
<label for="floatingInput">Nom de la nouvelle catégorie</label>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button type="submit" class="btn bg-success text-light rounded-circle"> ✓</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:32:47
|
||||
from 'file:views/_partial/footer.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698aed2fea7fd1_77495932',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'b1b065356827f03a32a2809f87f59bd19d86da99' =>
|
||||
array (
|
||||
0 => 'views/_partial/footer.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698aed2fea7fd1_77495932 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial';
|
||||
?>
|
||||
<footer class="footer container-fluid d-flex justify-content-around">
|
||||
<div class="col-3">
|
||||
<ul>
|
||||
<li><a href="#">Découvrir</a>
|
||||
<li><a href="#">Customisation</a>
|
||||
<li><a href="#">Emploi</a>
|
||||
<li><a href="#">A propos</a>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<ul>
|
||||
<li><a href="#">Recruter</a>
|
||||
<li><a href="#">Partenariat</a>
|
||||
<li><a href="#">Blog</a>
|
||||
<li><a href="#">Aide et support</a>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<ul>
|
||||
<li><a href="#">Politique de confidentialité</a>
|
||||
<li><a href="#">Politique sur les données</a>
|
||||
<li><a href="#">CGU</a>
|
||||
<li><a href="#">CGV</a>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<p>Suivez-nous</p>
|
||||
</div>
|
||||
</footer>
|
||||
<?php echo '<script'; ?>
|
||||
src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"><?php echo '</script'; ?>
|
||||
>
|
||||
<?php echo '<script'; ?>
|
||||
src="js/scripts.js"><?php echo '</script'; ?>
|
||||
>
|
||||
</body>
|
||||
</html><?php }
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:32:47
|
||||
from 'file:views/_partial/header.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698aed2fe0e338_92194390',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'b3c0a235f975d8741b25531347290b4e4994470b' =>
|
||||
array (
|
||||
0 => 'views/_partial/header.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698aed2fe0e338_92194390 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial';
|
||||
?><!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="assests/css/style.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||
<?php echo '<script'; ?>
|
||||
src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"><?php echo '</script'; ?>
|
||||
>
|
||||
<title>Folliow</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-lg navbar-light">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand d-flex align-items-center" href="#">
|
||||
<img src="assests/img/logo.png" alt="Logo" class="logo-image">
|
||||
</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=&action=">Découvrir</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=&action=">Customisation</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=&action=">Orientation</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=&action=">À propos</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=project&action=search">Rechercher</a>
|
||||
</li>
|
||||
<?php if ((true && (true && null !== ($_SESSION['user'] ?? null)))) {?>
|
||||
<?php if ($_SESSION['user']['authorisation_name'] == "Administrateur") {?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=admin&action=admin">Admin</a>
|
||||
</li>
|
||||
<?php }?>
|
||||
<?php }?>
|
||||
</ul>
|
||||
|
||||
<nav class="col-4 d-flex justify-content-end align-items-center" aria-label="Connexion utilisateur">
|
||||
<?php if (!(true && (true && null !== ($_SESSION['user'] ?? null)))) {?>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=signin" title="Créer un compte" aria-label="Créer un compte">
|
||||
S'inscrire
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=login" title="Se connecter" aria-label="Se connecter">
|
||||
Se connecter
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<?php } else { ?>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="edit_account.php" title="Modifier mon compte" aria-label="Modifier mon compte">
|
||||
<img src=".<?php echo $_SESSION['user']['user_image'];?>
|
||||
"
|
||||
class="rounded-circle flex-shrink-0 mt-2 ml-5"
|
||||
style="width: 36px; height: 36px; object-fit: cover;"
|
||||
alt="Photo de profil">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=logout" title="Se déconnecter" aria-label="Se déconnecter">
|
||||
Logout
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<?php }?>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</body>
|
||||
</html><?php }
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:16:45
|
||||
from 'file:views/_partial/preview.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ae96d52fa95_22666517',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'b70ee0d22061ca6100f647634a5658ae38c7b520' =>
|
||||
array (
|
||||
0 => 'views/_partial/preview.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_698ae96d52fa95_22666517 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views\\_partial';
|
||||
?>
|
||||
|
||||
|
||||
<article class="col-md-3 mb-4">
|
||||
<div class="card h-100 shadow-sm article-card">
|
||||
|
||||
<div class="ratio ratio-16x9">
|
||||
<img src=".<?php echo $_smarty_tpl->getValue('objProject')->getThumbnail();?>
|
||||
"
|
||||
class="w-100 h-100 object-fit-cover"
|
||||
alt=""
|
||||
loading="lazy">
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
|
||||
<img src=".<?php echo $_smarty_tpl->getValue('objProject')->getUser_image();?>
|
||||
"
|
||||
class="rounded-circle flex-shrink-0 mt-2 ml-5"
|
||||
style="width: 48px; height: 48px; object-fit: cover;"
|
||||
alt="Photo de profil">
|
||||
|
||||
<div class="flex-grow-1 card-body p-3">
|
||||
<h3 class="h6 mb-1"><?php echo $_smarty_tpl->getValue('objProject')->getTitle();?>
|
||||
</h3>
|
||||
|
||||
<small class="text-body-secondary d-block mb-1">
|
||||
<time><?php echo $_smarty_tpl->getValue('objProject')->getCreation_date();?>
|
||||
</time>
|
||||
– <?php echo $_smarty_tpl->getValue('objProject')->getCreatorname();?>
|
||||
|
||||
</small>
|
||||
|
||||
<a href="index.php?ctrl=project&action=display&id=<?php echo $_smarty_tpl->getValue('objProject')->getId();?>
|
||||
"
|
||||
class="stretched-link small">
|
||||
Lire la suite →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</article><?php }
|
||||
}
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:02:52
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 14:04:25
|
||||
from 'file:views/login.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f71c761896_25894348',
|
||||
'unifunc' => 'content_698b3ae98ff4a6_44263627',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
|
|
@ -20,18 +20,18 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
array (
|
||||
),
|
||||
))) {
|
||||
function content_6989f71c761896_25894348 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b3ae98ff4a6_44263627 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_19992775976989f71c758fc2_34188356', "content");
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1193104747698b3ae98f71d7_06580866', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_19992775976989f71c758fc2_34188356 extends \Smarty\Runtime\Block
|
||||
class Block_1193104747698b3ae98f71d7_06580866 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 08:16:45
|
||||
from 'file:views/home.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ae96d2e58d9_91616548',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'ca790de9f8d5a4fc03b03b8d137ec1edb99bdd92' =>
|
||||
array (
|
||||
0 => 'views/home.tpl',
|
||||
1 => 1770711346,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
'file:views/_partial/preview.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_698ae96d2e58d9_91616548 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_826938963698ae96d2e14b1_12340515', "content");
|
||||
?>
|
||||
|
||||
<?php $_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_826938963698ae96d2e14b1_12340515 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center text-center">
|
||||
<h1 class="logo">Folliow</h1>
|
||||
<h2>Là où les talents rencontrent leur avenir</h2>
|
||||
<p class="col-6">Une plateforme de portfolio adapté à vos besoins et aux besoins des entreprises.
|
||||
Créer un portfolio réellement pertinent aux exigences du marché et rentrez
|
||||
directement en contact avec les entreprises.</p>
|
||||
</section>
|
||||
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center text-center">
|
||||
<div class="mb-4">
|
||||
<form method="GET" action="index.php">
|
||||
<input type="hidden" name="ctrl" value="project">
|
||||
<input type="hidden" name="action" value="home">
|
||||
<button type="submit" name="filter_cat" value="1" class="btn btn-primary">Design</button>
|
||||
<button type="submit" name="filter_cat" value="2" class="btn btn-primary">Développement Web</button>
|
||||
<button type="submit" name="filter_old" value="true" class="btn btn-primary">Plus de 6 mois</button>
|
||||
<a href="index.php?ctrl=project&action=home" class="btn btn-primary">Tout</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container" aria-label="Articles récents">
|
||||
<h2 class="visually-hidden">Les 4 derniers articles</h2>
|
||||
<div class="row mb-2">
|
||||
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</section>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 15:03:02
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 15:07:18
|
||||
from 'file:views/_partial/footer.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f726ac4850_67307943',
|
||||
'unifunc' => 'content_698b49a6b1a9a1_35918373',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
|
|
@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
|||
array (
|
||||
),
|
||||
))) {
|
||||
function content_6989f726ac4850_67307943 (\Smarty\Template $_smarty_tpl) {
|
||||
function content_698b49a6b1a9a1_35918373 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial';
|
||||
?>
|
||||
<footer class="footer container-fluid d-flex justify-content-around">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,123 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 15:07:18
|
||||
from 'file:views/project.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698b49a6958128_21190238',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'e3f999d4206c004969123c0e3f74733796438d51' =>
|
||||
array (
|
||||
0 => 'views/project.tpl',
|
||||
1 => 1770734029,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
'file:../app/views/partials/preview.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_698b49a6958128_21190238 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_733012504698b49a694f3a4_14549542', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_733012504698b49a694f3a4_14549542 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center">
|
||||
<div>
|
||||
<h2>Alimenter votre projet</h2>
|
||||
<form method="post">
|
||||
<button type="submit" class="btn btn-primary btn-lg" name="showForm">+</button>
|
||||
<?php if ((true && (true && null !== ($_POST['toContinue'] ?? null)))) {?>
|
||||
<button type="submit" class="btn btn-warning btn-lg" name="showFormContinue">Reprendre</button>
|
||||
<?php }?>
|
||||
</form>
|
||||
|
||||
<?php if ((true && (true && null !== ($_POST['showForm'] ?? null))) || (true && (true && null !== ($_POST['showFormContinue'] ?? null)))) {?>
|
||||
<?php if ((true && (true && null !== ($_SESSION['user'] ?? null)))) {?>
|
||||
<form class="m-2" method="post" enctype="multipart/form-data" onsubmit="return confirm('Voulez-vous vraiment envoyer le formulaire ?')">
|
||||
<div>
|
||||
<label>Titre</label>
|
||||
<input type="text" name="titleProject">
|
||||
</div>
|
||||
<div>
|
||||
<label>Description</label>
|
||||
<input type="text" name="descProject">
|
||||
</div>
|
||||
<div>
|
||||
<label>Texte Portfolio</label>
|
||||
<input type="text" name="textProject">
|
||||
</div>
|
||||
<div>
|
||||
<h3>Image thumbnail</h3>
|
||||
<input name="imageThumbnail" class="form-control" type="file">
|
||||
</div>
|
||||
<div>
|
||||
<h3>Image du projet</h3>
|
||||
<input name="imageProject" class="form-control" type="file">
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<button type="submit" class="btn btn-primary btn-md" name="sendMessage">Envoyer</button>
|
||||
<button type="submit" class="btn btn-warning btn-md" name="toContinue">Remettre à plus tard</button>
|
||||
</div>
|
||||
</form>
|
||||
<?php } else { ?>
|
||||
<div class="border rounded mt-5">
|
||||
<p class="text-danger p-2">Vous devez vous connecter pour accéder à cette fonctionnalité</p>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php }?>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
||||
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Photos behind the scene</h3>
|
||||
<div class="row mb-2">
|
||||
<img>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Other projects</h3>
|
||||
<div class="row mb-2">
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:../app/views/partials/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<section>
|
||||
</body>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -0,0 +1,261 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-10 07:13:04
|
||||
from 'file:views/search.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_698ada80e47fc8_23614044',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'ebfd968608976813e893f497c64277110a78bc40' =>
|
||||
array (
|
||||
0 => 'views/search.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
'file:views/_partial/preview.tpl' => 1,
|
||||
),
|
||||
))) {
|
||||
function content_698ada80e47fc8_23614044 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_1614324265698ada80a61e02_00521357', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_1614324265698ada80a61e02_00521357 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<section aria-label="Blog">
|
||||
<h2 class="visually-hidden">Rechercher parmi les articles</h2>
|
||||
<div class="row mb-2">
|
||||
<section class="mb-5" aria-labelledby="search-heading">
|
||||
<form name="formSearch" method="post" action="?ctrl=project&action=search" class="border rounded p-4 bg-light">
|
||||
<h3 id="search-heading" class="h4 mb-4">
|
||||
<i class="fas fa-search me-2" aria-hidden="true"></i>
|
||||
Rechercher des articles
|
||||
</h3>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label for="keywords" class="form-label">Mots-clés</label>
|
||||
<input
|
||||
value=""
|
||||
type="text"
|
||||
class="form-control"
|
||||
id="keywords"
|
||||
name="keywords"
|
||||
placeholder="Ex: JavaScript, CSS..."
|
||||
aria-describedby="keywords-help">
|
||||
<small id="keywords-help" class="form-text text-muted">
|
||||
Recherchez dans les titres et contenus
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="author" class="form-label">Auteur</label>
|
||||
<select class="form-select" id="author" name="author">
|
||||
<option value="0" <?php if ($_smarty_tpl->getValue('intAuthor') == 0) {?>selected<?php }?>>Tous les auteurs</option>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrUser'), 'arrDetUser');
|
||||
$foreach0DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetUser')->value) {
|
||||
$foreach0DoElse = false;
|
||||
?>
|
||||
<option value="<?php echo $_smarty_tpl->getValue('arrDetUser')['user_id'];?>
|
||||
"
|
||||
<?php if ($_smarty_tpl->getValue('intAuthor') == $_smarty_tpl->getValue('arrDetUser')['user_id']) {?>selected<?php }?>
|
||||
>
|
||||
<?php echo $_smarty_tpl->getValue('arrDetUser')['user_firstname'];?>
|
||||
<?php echo $_smarty_tpl->getValue('arrDetUser')['user_name'];?>
|
||||
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-6">
|
||||
<fieldset>
|
||||
<legend class="form-label">Type de recherche par date</legend>
|
||||
<div class="form-check form-check-inline">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="radio"
|
||||
name="period"
|
||||
id="period-exact"
|
||||
value="0"
|
||||
<?php if ($_smarty_tpl->getValue('intPeriod') == 0) {?>checked<?php }?>
|
||||
aria-controls="date-exact date-range">
|
||||
<label class="form-check-label" for="period-exact">
|
||||
Date exacte
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="radio"
|
||||
name="period"
|
||||
id="period-range"
|
||||
value="1"
|
||||
<?php if ($_smarty_tpl->getValue('intPeriod') == 1) {?>checked<?php }?>
|
||||
aria-controls="date-exact date-range">
|
||||
<label class="form-check-label" for="period-range">
|
||||
Période
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<!-- AJOUT RECHERCHE PAR CATEGORIE -->
|
||||
<div class="col-6">
|
||||
<fieldset>
|
||||
<legend class="form-label">Type de recherche par catégories</legend>
|
||||
<div class="col-md-6">
|
||||
<label for="author" class="form-label">Catégorie</label>
|
||||
<select class="form-select" id="category" name="category">
|
||||
<option value="0" <?php if ($_smarty_tpl->getValue('intCategory') == 0) {?>selected<?php }?>>Toutes les catégories</option>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrCategory'), 'arrDetCategory');
|
||||
$foreach1DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('arrDetCategory')->value) {
|
||||
$foreach1DoElse = false;
|
||||
?>
|
||||
<option value="<?php echo $_smarty_tpl->getValue('arrDetCategory')['category_id'];?>
|
||||
"
|
||||
<?php if ($_smarty_tpl->getValue('intCategory') == $_smarty_tpl->getValue('arrDetCategory')['category_id']) {?>selected<?php }?>
|
||||
>
|
||||
<?php echo $_smarty_tpl->getValue('arrDetCategory')['category_name'];?>
|
||||
|
||||
</option>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</select>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" id="date-exact">
|
||||
<label for="date" class="form-label">Date</label>
|
||||
<input
|
||||
type="date"
|
||||
class="form-control"
|
||||
id="date"
|
||||
name="date"
|
||||
aria-describedby="date-help"
|
||||
value="<?php echo $_smarty_tpl->getValue('strDate');?>
|
||||
" >
|
||||
<small id="date-help" class="form-text text-muted">
|
||||
Format: JJ/MM/AAAA
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div id="date-range" style="display: none;">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label for="startdate" class="form-label">Date de début</label>
|
||||
<input
|
||||
type="date"
|
||||
class="form-control"
|
||||
id="startdate"
|
||||
name="startdate"
|
||||
value="<?php echo $_smarty_tpl->getValue('strStartDate');?>
|
||||
" >
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="enddate" class="form-label">Date de fin</label>
|
||||
<input
|
||||
type="date"
|
||||
class="form-control"
|
||||
id="enddate"
|
||||
name="enddate"
|
||||
value="<?php echo $_smarty_tpl->getValue('strEndDate');?>
|
||||
" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="fas fa-search me-2" aria-hidden="true"></i>
|
||||
Rechercher
|
||||
</button>
|
||||
<button type="reset" class="btn btn-secondary ms-2">
|
||||
<i class="fas fa-redo me-2" aria-hidden="true"></i>
|
||||
Réinitialiser
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<!-- Liste des articles -->
|
||||
<section aria-labelledby="articles-heading">
|
||||
<h3 id="articles-heading" class="visually-hidden">Liste des projets</h3>
|
||||
<div class="row mb-2">
|
||||
<?php if ($_smarty_tpl->getSmarty()->getModifierCallback('count')($_smarty_tpl->getValue('arrProject')) == 0) {?>
|
||||
<div class="alert alert-warning">
|
||||
<p>Pas de résultats</p>
|
||||
</div>
|
||||
<?php }?>
|
||||
<?php
|
||||
$_from = $_smarty_tpl->getSmarty()->getRuntime('Foreach')->init($_smarty_tpl, $_smarty_tpl->getValue('arrProjectToDisplay'), 'objProject');
|
||||
$foreach2DoElse = true;
|
||||
foreach ($_from ?? [] as $_smarty_tpl->getVariable('objProject')->value) {
|
||||
$foreach2DoElse = false;
|
||||
?>
|
||||
<?php $_smarty_tpl->renderSubTemplate("file:views/_partial/preview.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), (int) 0, $_smarty_current_dir);
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
$_smarty_tpl->getSmarty()->getRuntime('Foreach')->restore($_smarty_tpl, 1);?>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
<?php echo '<script'; ?>
|
||||
>
|
||||
// Gestion de l'affichage des champs de date
|
||||
const periodRadios = document.querySelectorAll('input[name="period"]');
|
||||
const dateExact = document.getElementById('date-exact');
|
||||
const dateRange = document.getElementById('date-range');
|
||||
|
||||
function toggleDateFields() {
|
||||
const selectedPeriod = document.querySelector('input[name="period"]:checked').value;
|
||||
|
||||
if (selectedPeriod === '0') {
|
||||
dateExact.style.display = 'block';
|
||||
dateRange.style.display = 'none';
|
||||
} else {
|
||||
dateExact.style.display = 'none';
|
||||
dateRange.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
periodRadios.forEach(radio => {
|
||||
radio.addEventListener('change', toggleDateFields);
|
||||
});
|
||||
|
||||
// Initialisation au chargement
|
||||
toggleDateFields();
|
||||
<?php echo '</script'; ?>
|
||||
>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
|
|
@ -0,0 +1,218 @@
|
|||
<?php
|
||||
/* Smarty version 5.7.0, created on 2026-02-09 14:49:06
|
||||
from 'file:views/inscription.tpl' */
|
||||
|
||||
/* @var \Smarty\Template $_smarty_tpl */
|
||||
if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
|
||||
'version' => '5.7.0',
|
||||
'unifunc' => 'content_6989f3e29dbce4_20550543',
|
||||
'has_nocache_code' => false,
|
||||
'file_dependency' =>
|
||||
array (
|
||||
'ee86afd5d4dff200944f3436866afa34a71b920e' =>
|
||||
array (
|
||||
0 => 'views/inscription.tpl',
|
||||
1 => 1770634036,
|
||||
2 => 'file',
|
||||
),
|
||||
),
|
||||
'includes' =>
|
||||
array (
|
||||
),
|
||||
))) {
|
||||
function content_6989f3e29dbce4_20550543 (\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
$_smarty_tpl->getInheritance()->instanceBlock($_smarty_tpl, 'Block_18645663486989f3e29da446_83083224', "content");
|
||||
$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
|
||||
}
|
||||
/* {block "content"} */
|
||||
class Block_18645663486989f3e29da446_83083224 extends \Smarty\Runtime\Block
|
||||
{
|
||||
public function callBlock(\Smarty\Template $_smarty_tpl) {
|
||||
$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
|
||||
?>
|
||||
|
||||
<!-- Page : Inscription -->
|
||||
|
||||
|
||||
<main class="container py-5">
|
||||
|
||||
<!-- Centrage horizontal du formulaire -->
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-10 col-lg-6">
|
||||
|
||||
<!-- Carte contenant le formulaire d'inscription -->
|
||||
<div class="card shadow-sm border-0 rounded-4 p-4 p-lg-5">
|
||||
|
||||
<!-- Titre principal de la page -->
|
||||
<h1 class="h3 fw-bold mb-1">Inscription</h1>
|
||||
|
||||
<!-- Texte descriptif -->
|
||||
<p class="text-secondary mb-4">
|
||||
Créez votre compte utilisateur.
|
||||
</p>
|
||||
|
||||
<!-- Formulaire d'inscription -->
|
||||
<!-- Les données seront traitées côté serveur en PHP via la méthode POST -->
|
||||
<form method="POST">
|
||||
|
||||
<div class="row g-3">
|
||||
|
||||
<!-- Champ : prénom de l'utilisateur -->
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="user_firstname">
|
||||
Prénom *
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_firstname"
|
||||
name="user_firstname"
|
||||
required >
|
||||
</div>
|
||||
|
||||
<!-- Champ : nom de l'utilisateur -->
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="user_name">
|
||||
Nom *
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_name"
|
||||
name="user_name"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ : pseudo -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_pseudo">
|
||||
Pseudo *
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">@</span>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_pseudo"
|
||||
name="user_pseudo"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Champ : adresse e-mail -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_mail">
|
||||
Adresse e-mail *
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="email"
|
||||
id="user_mail"
|
||||
name="user_mail"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ : mot de passe -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_password">
|
||||
Mot de passe *
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="password"
|
||||
id="user_password"
|
||||
name="user_password"
|
||||
required
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ optionnel : numéro de téléphone -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_phone">
|
||||
Téléphone
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_phone"
|
||||
name="user_phone"
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ optionnel : profession de l'utilisateur -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_work">
|
||||
Profession
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_work"
|
||||
name="user_work"
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ optionnel : localisation de l'utilisateur -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_location">
|
||||
Localisation
|
||||
</label>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="user_location"
|
||||
name="user_location"
|
||||
>
|
||||
</div>
|
||||
|
||||
<!-- Champ optionnel : phrase d'accroche -->
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="user_description">
|
||||
Phrase d'accroche
|
||||
</label>
|
||||
<textarea
|
||||
class="form-control"
|
||||
id="user_description"
|
||||
name="user_description"
|
||||
rows="3"
|
||||
></textarea>
|
||||
</div>
|
||||
|
||||
<!-- Bouton de soumission du formulaire -->
|
||||
<div class="col-12 d-grid mt-2">
|
||||
<button type="submit" class="btn btn-primary btn-lg rounded-3">
|
||||
Créer mon compte
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Lien vers la page de connexion -->
|
||||
<div class="col-12 text-center">
|
||||
<small class="text-secondary">
|
||||
Déjà un compte ?
|
||||
<a href="index.php?ctrl=user&action=login">Se connecter</a>
|
||||
</small>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
/* {/block "content"} */
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
|
|
@ -72,8 +72,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="sb-sidenav-footer">
|
||||
<div class="small">Connecté avec le compte :</div>
|
||||
{$smarty.session.user.user_name}
|
||||
<div class="small">Connecté avec le compte : {$smarty.session.user.user_name} {$smarty.session.user.user_firstname}</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
|
@ -86,63 +85,73 @@
|
|||
<!-- USER MODIF -->
|
||||
<div class="p-3 mt-2 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
|
||||
<div class="container-fluid pt-2">
|
||||
<h2>Gestion de l'utilsateur</h2>
|
||||
<p>Changer le statut ou supprimer un utilisateur</p>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="col-2">
|
||||
<img src="./assests/img/Logo-Wordmark.svg" alt="" width="100">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<select class="form-select" aria-label="Default select example">
|
||||
<option value="0" selected>Modifier le statut de l'Utilisateur...</option>
|
||||
{foreach from=$arrStatusToDisplay item=arrDetStatus}
|
||||
<option value="{$arrDetStatus->getId()}">{$arrDetStatus->getStatusName()}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<button class="btn bg-danger text-light rounded-circle">X</button>
|
||||
</div>
|
||||
<form method="POST">
|
||||
<div class="col-6">
|
||||
<select class="form-select" aria-label="Default select example" name="user_id">
|
||||
<option value="0">Choisir un utilisateur</option>
|
||||
{foreach from=$arrUserToDisplay item=user}
|
||||
<option value="{$user->getId()}">{$user->getName()} {$user->getFirstname()}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<select class="form-select" aria-label="Default select example" name="new_status">
|
||||
<option value="0" selected>Modifier le statut de l'Utilisateur...</option>
|
||||
{foreach from=$arrAuthorisationToDisplay item=arrDetAuthorisation}
|
||||
<option value="{$arrDetAuthorisation->getId()}">{$arrDetAuthorisation->getName()}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button type="submit" name="action" value="update_status" class="btn bg-success text-light"> Valider</button>
|
||||
<button type="submit" name="action" value="delete_user" class="btn bg-danger text-light">Supprimer l'utilisateur</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- catégorie modif -->
|
||||
<!-- catégorie modif -->
|
||||
<div class="p-3 mt-2 text-primary-emphasis bg-primary-subtle border border-primary-subtle rounded-3">
|
||||
<form method="post">
|
||||
<div class="container-fluid pt-2">
|
||||
<h2>Gestion des catégories</h2>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<select class="form-select" aria-label="Default select example">
|
||||
<option value="0" selected >Modifier un catégorie existante</option>
|
||||
|
||||
{foreach from=$arrCategoryToDisplay item=arrDetCategory}
|
||||
<option value="{$arrDetCategory->getId()}" >
|
||||
{$arrDetCategory->getName()}
|
||||
</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<br>
|
||||
<input type="text" class="form-control" id="floatingInput" name="edit_category">
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<form method="post">
|
||||
<p>Modifier une catégorie existante</p>
|
||||
<select class="form-select" aria-label="Default select example" name="id_to_edit">
|
||||
<option value="0">Choix de la catégorie</option>
|
||||
{foreach from=$arrCategoryToDisplay item=category}
|
||||
<option value="{$category->getId()}">{$category->getName()}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<br>
|
||||
<div class="form-floating mb-3">
|
||||
<input type="text" class="form-control" id="floatingInput" name="new_name">
|
||||
<label for="floatingInput">Nouveau nom de la catégorie</label>
|
||||
</div>
|
||||
<button type="submit" class="btn bg-success text-light rounded-circle"> ✓</button>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button class="btn bg-danger text-light rounded-circle">X</button>
|
||||
</div>
|
||||
</form>
|
||||
<div>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<div class="row">
|
||||
<!-- creation cat-->
|
||||
<div class="col-6">
|
||||
<label>Créer une nouvelle catégorie</label>
|
||||
<div class="form-floating mb-3">
|
||||
<input type="text" class="form-control" id="floatingInput" name="new_category">
|
||||
<label for="floatingInput">Créer une nouvelle catégorie</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button type="submit" class="btn bg-success text-light rounded-circle"> ✓</button>
|
||||
<form method="POST">
|
||||
<p>Créer une nouvelle catégorie</p>
|
||||
<div class="form-floating mb-3">
|
||||
<input type="text" class="form-control" id="floatingInput" name="new_category">
|
||||
<label for="floatingInput">Nom de la nouvelle catégorie</label>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<button type="submit" class="btn bg-success text-light rounded-circle"> ✓</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -152,4 +161,5 @@
|
|||
</main>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/block}
|
||||
|
|
@ -9,6 +9,19 @@
|
|||
directement en contact avec les entreprises.</p>
|
||||
</section>
|
||||
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center text-center">
|
||||
<div class="mb-4">
|
||||
<form method="GET" action="index.php">
|
||||
<input type="hidden" name="ctrl" value="project">
|
||||
<input type="hidden" name="action" value="home">
|
||||
<button type="submit" name="filter_cat" value="1" class="btn btn-primary">Design</button>
|
||||
<button type="submit" name="filter_cat" value="2" class="btn btn-primary">Développement Web</button>
|
||||
<button type="submit" name="filter_old" value="true" class="btn btn-primary">Plus de 6 mois</button>
|
||||
<a href="index.php?ctrl=project&action=home" class="btn btn-primary">Tout</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="container" aria-label="Articles récents">
|
||||
<h2 class="visually-hidden">Les 4 derniers articles</h2>
|
||||
<div class="row mb-2">
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@
|
|||
|
||||
{* Affichage d'un formulaire en cas d'appuie sur le bouton "+" *}
|
||||
{if isset($smarty.post.showForm) || isset($smarty.post.showFormContinue)}
|
||||
<form method="post" enctype="multipart/form-data" onsubmit="return confirm('Voulez-vous vraiment envoyer le formulaire ?')">
|
||||
{if isset($smarty.session.user)}
|
||||
<form class="m-2" method="post" enctype="multipart/form-data" onsubmit="return confirm('Voulez-vous vraiment envoyer le formulaire ?')">
|
||||
<div>
|
||||
<label>Titre</label>
|
||||
<input type="text" name="titleProject">
|
||||
|
|
@ -28,11 +29,23 @@
|
|||
<input type="text" name="textProject">
|
||||
</div>
|
||||
<div>
|
||||
<h3>Image thumbnail</h3>
|
||||
<input name="imageThumbnail" class="form-control" type="file">
|
||||
</div>
|
||||
<div>
|
||||
<h3>Image du projet</h3>
|
||||
<input name="imageProject" class="form-control" type="file">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-md" name="sendMessage">Envoyer</button>
|
||||
<button type="submit" class="btn btn-warning btn-md" name="toContinue">Remettre à plus tard</button>
|
||||
<div class="mt-2">
|
||||
<button type="submit" class="btn btn-primary btn-md" name="sendMessage">Envoyer</button>
|
||||
<button type="submit" class="btn btn-warning btn-md" name="toContinue">Remettre à plus tard</button>
|
||||
</div>
|
||||
</form>
|
||||
{else}
|
||||
<div class="border rounded mt-5">
|
||||
<p class="text-danger p-2">Vous devez vous connecter pour accéder à cette fonctionnalité</p>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue