diff --git a/public/index.php b/public/index.php index 8756a1f..39ede27 100644 --- a/public/index.php +++ b/public/index.php @@ -21,6 +21,7 @@ use Middlewares\Whoops; chdir(dirname(__DIR__)); require 'vendor/autoload.php'; + $chemin = $_SERVER['DOCUMENT_ROOT']; $chemin_new = substr($chemin,0,-6); diff --git a/public/js/utils.js b/public/js/utils.js index 3596a7f..530ddcf 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -8,4 +8,4 @@ function cleanArray(array) { out.push(j); } return out; -} \ No newline at end of file +} diff --git a/src/Admin/AdminModule.php b/src/Admin/AdminModule.php index 5e986ce..c045212 100644 --- a/src/Admin/AdminModule.php +++ b/src/Admin/AdminModule.php @@ -25,8 +25,6 @@ class AdminModule extends Module ) { $chemin = str_replace('Admin','Antenne',__DIR__); - //var_dump($chemin); - //die(); $renderer->addPath('antenne', $chemin . '/views'); $router->get('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardAction::class], 'dashboard'); $router->get('/dashboard/details/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user'); @@ -34,7 +32,8 @@ class AdminModule extends Module $router->post('/activation', ActiveAction::class); $router->get('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class], 'account.user'); $router->post('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class]); - $router->get('/antenne/create', [LoggedInMiddleware::class, AntenneCrudAction::class], 'antenne.create'); + //$router->get('/antenne/new', [LoggedInMiddleware::class, AntenneCrudAction::class], 'antenne.create'); + $router->crud('/antenne', [LoggedInMiddleware::class, AntenneCrudAction::class],'antenne'); $router->get('/antenne/edit', [LoggedInMiddleware::class, AntenneEditAction::class], 'antenne.edit'); $router->post('/antenne/edit', [LoggedInMiddleware::class, AntenneEditAction::class]); if ($renderer instanceof TwigRenderer) { diff --git a/src/Admin/views/dashboard.twig b/src/Admin/views/dashboard.twig index 68f6124..cb7c882 100644 --- a/src/Admin/views/dashboard.twig +++ b/src/Admin/views/dashboard.twig @@ -7,14 +7,14 @@

Tableau de bord -

- {% if affiche_role() == 0 %} Super Admin{% endif %} - {% if affiche_role() == 1 %} Admin général{% endif %} - {% if affiche_role() == 2 %} Admin Antenne{% endif %} + {% if (sess.role == 0) %} Super Admin{% endif %} + {% if (sess.role == 1) %} Admin général{% endif %} + {% if (sess.role == 2) %} Admin Antenne{% endif %}

- {% if affiche_role() == 0 %} + {% if (sess.role == 0) %}

Liste des admins généraux

{% endif %}

- {% if (affiche_role() == 0 or affiche_role() == 1) %} + {% if (sess.role==0 or sess.role==1) %}

Liste des admins Antenne

{% endif %}

- {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %} + {% if (sess.role==0 or sess.role==1 or sess.role==2) %}

Gérer les antennes

- - + {% if (sess.role==0 or sess.role==1) %} + + + {% endif %}

Liste des régions/antennes

{% endif %}

- {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %} + {% if (sess.role==0 or sess.role==1 or sess.role==2) %}

Liste des utilisateurs

{% endif %}

- {% if (affiche_role()== 0 or affiche_role()== 1) %} -

Gestion d'une antenne

- {% endif %} -

- {% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %} -

Gestion d'un G-Marché

- {% endif %}
{{ widgets | raw }}
diff --git a/src/Antenne/Actions/AntenneCrudAction.php b/src/Antenne/Actions/AntenneCrudAction.php index f71ed6d..406074e 100644 --- a/src/Antenne/Actions/AntenneCrudAction.php +++ b/src/Antenne/Actions/AntenneCrudAction.php @@ -4,16 +4,22 @@ if (!isset($_SESSION)) { session_start(); } +use App\Gmarche\Entity\Antenne; use App\Gmarche\Table\AntenneTable; use App\Gmarche\Table\RegionTable; +use Framework\Actions\CrudAction; use Framework\Actions\RouterAwareAction; use Framework\Renderer\RendererInterface; -use Psr\Container\ContainerInterface; +use Framework\Response\RedirectResponse; +use Framework\Router; +use Framework\Session\FlashService; +use Framework\Validator; use Psr\Http\Message\ServerRequestInterface as Request; -class AntenneCrudAction +class AntenneCrudAction extends CrudAction { - + protected $viewPath = "@antenne"; + protected $routePrefix = "antenne"; /** * @var RendererInterface */ @@ -22,40 +28,133 @@ class AntenneCrudAction /** * @var RegionTable */ - private $regionTable; + protected $regionTable; /** * @var AntenneTable */ - private $antenneTable; + protected $antenneTable; + + /** + * @var FlashService + */ + private $flashService; use RouterAwareAction; public function __construct( RendererInterface $renderer, - RegionTable $regionTable, + Router $router, AntenneTable $antenneTable, - ContainerInterface $container + RegionTable $regionTable, + FlashService $flash ) { + parent::__construct($renderer, $router, $antenneTable, $regionTable, $flash); $this->renderer = $renderer; $this->regionTable = $regionTable; $this->antenneTable = $antenneTable; - $this->container = $container; + $this->flashService = $flash; } + public function delete(Request $request) + { + $antenne = $this->antenneTable->find($request->getAttribute('id')); + // $this->postUpload->delete($post->image); + return parent::delete($request); + } + + protected function formParams(array $params): array + { + return $params; + } + + protected function getNewEntity() + { + $antenne = new Antenne(); + $antenne->created_at = new \DateTime(); + return $antenne; + } + + /** + * @param Request $request + * @param Antenne $antenne + * @return array + */ + protected function prePersist(Request $request, $antenne): array + { + $params = $request->getParsedBody(); + $params = array_filter($params, function ($key) { + return in_array($key, ['region_id', 'name', 'slug', 'created_at', 'listeRegions']); + }, ARRAY_FILTER_USE_KEY); + return array_merge($params, ['test' => $test, 'updated_at' => date('Y-m-d H:i:s')]); + } + protected function getValidator(Request $request) + { + $validator = parent::getValidator($request) + ->required('region_id', 'name', 'slug', 'created_at') + ->length('name', 2, 250) + ->dateTime('created_at') + ->slug('slug'); + /*if (is_null($request->getAttribute('id'))) { + $validator->uploaded('image'); + }*/ + return $validator; + } public function __invoke(Request $request) { - $params = $request->getQueryParams(); - // On récupère l'id de la région cliquée - $slug = $request->getAttribute('slug') ?: $_SESSION['connecte']; - $region_id = $this->regionTable->findBy('slug', $slug)->id ?: 1; - $page = $params['p'] ?? 1; // Si la page n'est pas définie, on l'initialise à 1 - $antennes = $this->antenneTable->findAllbyRegion($region_id)->paginate(25, $page); - $region = $this->regionTable->findBy('slug', $slug); - $viewPath = '@antenne'; - $sess = $_SESSION; + if ($request->getMethod() === 'POST') { + $params = $request->getParsedBody(); + $date = $params['datepicker']; + $time = '00:00:00'; + $date_us = substr($date,6,4).'-'.substr($date,3,2).'-'.substr($date,0,2); + $date_us .= ' '.$time; + $madate = date("Y-m-d H:i:s", strtotime($date_us)); + $text = $params['antenne']; + // replace non letter or digits by - + $text = preg_replace('~[^\pL\d]+~u', '-', $text); + // transliterate + $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); + // remove unwanted characters + $text = preg_replace('~[^-\w]+~', '', $text); + // trim + $text = trim($text, '-'); + // remove duplicate - + $text = preg_replace('~-+~', '-', $text); + // lowercase + $slug = strtolower($text); + $admin = ''; + $content = ''; + $image = ''; + $created_at = date("Y-m-d H:i:s"); + $validator = (new Validator($params)) + ->required('antenne', 'region'); + if ($validator->isValid()) { + $antenneParams = [ + 'id' => $antenne_id, + 'name' => $params['antenne'], + 'slug' => $slug, + 'admin' => $admin, + 'content' => $content, + 'image' => $image, + 'created_at' => $created_at, + 'region_id' => $params['region'], + 'gmarcheAt' => $madate, + 'edito1' => $params['contenu1'], + 'edito2' => $params['contenu2'], + 'edito3' => $params['contenu3'], + 'edito4' => $params['contenu4'] + ]; + $this->antenneTable->insert($antenneParams); + $this->flashService->success("L'antenne ".$params['antenne']." a bien été créée."); - return $this->renderer->render('@antenne/create', compact('sess','page', 'region', 'viewPath', 'antennes')); + return new RedirectResponse($request->getUri()->getPath()); + } + } + //$errors = $validator->getErrors(); + $listeRegions = $this->regionTable->findAll(); + $role = $_SESSION['role']; + + return $this->renderer->render('@antenne/create', compact('listeRegions','role')); } } diff --git a/src/Antenne/Actions/AntenneEditAction.php b/src/Antenne/Actions/AntenneEditAction.php index 82f5fae..80c9dac 100644 --- a/src/Antenne/Actions/AntenneEditAction.php +++ b/src/Antenne/Actions/AntenneEditAction.php @@ -59,7 +59,6 @@ class AntenneEditAction public function __invoke(Request $request) { - $role = $request->getAttribute('user')->role; $user_id = $request->getAttribute('user')->id; if ($role < 3) { diff --git a/src/Antenne/views/create.twig b/src/Antenne/views/create.twig index 03c6c40..651870f 100644 --- a/src/Antenne/views/create.twig +++ b/src/Antenne/views/create.twig @@ -1,16 +1,83 @@ {% extends 'layout.twig' %} - -{% block title "Ğ1-Marché - Créer une antenne" %} +{% block title "Ğ1-Marché - Créer Antennes" %} {% block body %} -
-

Créer une antenne

+ + + + + +
+
+ + CREATION D'UNE ANTENNE + +
+
+ {{ csrf_input }} +
+
+ {{ field('antenne', item.name, "Nom de l'antenne") }} +
+
+ REGION + +
+ {{ field('updated_at', item.updatedAt, "", {type: 'hidden'}) }} + {{ field('created_at', date(), "", {type: 'hidden'}) }} +
+
+ {{ field('datepicker', item.gmarcheAt, "Date Prochain G-marché", {class: 'datepicker'}) }} +
+
+
- - - {% include viewPath ~ '/form.twig' %} - - -
-
+
+
+
+
+

+ Ligne 1 + Ligne 2 + Ligne 3 + Ligne 4 +
+
+
+ +
+ +
+
+
{% endblock %} diff --git a/src/Antenne/views/index.twig b/src/Antenne/views/index.twig index 096fcaa..17030ce 100644 --- a/src/Antenne/views/index.twig +++ b/src/Antenne/views/index.twig @@ -1,21 +1,81 @@ - {% extends 'layout.twig' %} -{% block title "Ğ1-Marché - Antennes" %} +{% block title "Ğ1-Marché - Créer Antennes" %} {% block body %} + + + + +
-
- - GESTION DES ANTENNES - -
- Ajouter -
-
- Modifier +
+ + CREATION D'UNE ANTENNE + +
+
+ {{ csrf_input }} +
+
+ {{ field('antenne', item.name, "Nom de l'antenne") }} +
+
+ REGION + +
+
+
+ {{ field('datepicker', item.gmarcheAt, "Prochain G-marché", {class: 'datepicker'}) }} +
+
+
+
+
+
+
+

+ Ligne 1 + Ligne 2 + Ligne 3 + Ligne 4 +
+
+
+ +
+
+
{% endblock %} diff --git a/src/Auth/Action/LoginAttemptAction.php b/src/Auth/Action/LoginAttemptAction.php index b53bac7..676aa67 100644 --- a/src/Auth/Action/LoginAttemptAction.php +++ b/src/Auth/Action/LoginAttemptAction.php @@ -71,6 +71,9 @@ class LoginAttemptAction public function test_user($user, $params) { $role = $this->userTable->findBy('username', $params['username'])->role; + echo "params_username=".$params['username']; + echo "
role=".$role; + // die(); $path = $this->session->get('auth.redirect') ?: $this->router->generateUri('gmarche.index'); $this->session->delete('auth.redirect'); //$path = $this->router->generateUri('gmarche.index'); @@ -86,6 +89,8 @@ class LoginAttemptAction } $_SESSION['connecte'] = $params['username']; $_SESSION['role'] = $role; + echo "
role2=".$role; + // die(); //$this->renderer->addGlobal('user', $user); //$this->renderer->addGlobal('role', $role); diff --git a/src/Framework/Actions/CrudAction.php b/src/Framework/Actions/CrudAction.php index a71f166..f7b80a7 100644 --- a/src/Framework/Actions/CrudAction.php +++ b/src/Framework/Actions/CrudAction.php @@ -2,13 +2,12 @@ namespace Framework\Actions; use App\Gmarche\Table\AntenneTable; +use App\Gmarche\Table\RegionTable; use Framework\Database\Hydrator; -use Framework\Database\Table; use Framework\Renderer\RendererInterface; use Framework\Router; use Framework\Session\FlashService; use Framework\Validator; -use App\Product\Entity\Product; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface as Request; @@ -26,14 +25,9 @@ class CrudAction private $router; /** - * @var Table - */ - protected $table; - - /** * @var AntenneTable */ - protected $table2; + protected $antenneTable; /** * @var FlashService @@ -54,9 +48,9 @@ class CrudAction * @var string */ protected $messages = [ - 'create' => "L'élément truc a bien été créé", /* truc sera remplacé par le vrai nom ensuite */ - 'edit' => "L'élément truc a bien été modifié", /* truc sera remplacé par le vrai nom ensuite */ - 'delete' => "L'élément truc a bien été supprimé" /* truc sera remplacé par le vrai nom ensuite */ + 'create' => "L'antenne truc a bien été créée", /* truc sera remplacé par le vrai nom ensuite */ + 'edit' => "L'antenne truc a bien été modifiée", /* truc sera remplacé par le vrai nom ensuite */ + 'delete' => "L'antenne truc a bien été supprimée" /* truc sera remplacé par le vrai nom ensuite */ ]; /** @@ -69,12 +63,14 @@ class CrudAction public function __construct( RendererInterface $renderer, Router $router, - Table $table, + AntenneTable $antenneTable, + RegionTable $regionTable, FlashService $flash ) { $this->renderer = $renderer; $this->router = $router; - $this->table = $table; + $this->antenneTable = $antenneTable; + $this->regionTable = $regionTable; $this->flash = $flash; } diff --git a/src/Framework/Router.php b/src/Framework/Router.php index d751812..b548f31 100644 --- a/src/Framework/Router.php +++ b/src/Framework/Router.php @@ -72,27 +72,16 @@ class Router * @param $callable * @param string $prefixName */ - /* public function crud(string $prefixPath, $callable, string $prefixName) + public function crud(string $prefixPath, $callable, string $prefixName) { $this->get("$prefixPath", $callable, "$prefixName.index"); $this->get("$prefixPath/new", $callable, "$prefixName.create"); $this->post("$prefixPath/new", $callable); - $this->get("$prefixPath/{id:\d+}", $callable, "$prefixName.edit"); - $this->post("$prefixPath/{id:\d+}", $callable); + // $this->get("$prefixPath/{id:\d+}", $callable, "$prefixName.edit"); + // $this->post("$prefixPath/{id:\d+}", $callable); $this->delete("$prefixPath/{id:\d+}", $callable, "$prefixName.delete"); - }*/ + } - - - /* public function crud_product(string $prefixPath, $callable, string $prefixName) - { - $this->get("$prefixPath", $callable, "$prefixName.index"); - $this->get("$prefixPath/new", $callable, "$prefixName.create"); - $this->post("$prefixPath/new", $callable); - $this->get("$prefixPath/{id:\d+}", $callable, "$prefixName.edit"); - $this->post("$prefixPath/{id:\d+}", $callable); - $this->delete("$prefixPath/{id:\d+}", $callable, "$prefixName.delete"); - }*/ /** * @param ServerRequestInterface $request * @return Route|null diff --git a/src/Gmarche/Actions/AntenneShowAction.php b/src/Gmarche/Actions/AntenneShowAction.php index 53781fd..0689fa2 100644 --- a/src/Gmarche/Actions/AntenneShowAction.php +++ b/src/Gmarche/Actions/AntenneShowAction.php @@ -45,10 +45,6 @@ class AntenneShowAction public function __invoke(Request $request) { - /* echo "
";
-        var_dump($container);
-        echo "
"; - die();*/ if ($request->getMethod() === 'GET') { $params = $request->getQueryParams(); $gmarchePrefix = $this->container->get('gmarche.prefix'); diff --git a/src/Gmarche/Entity/Antenne.php b/src/Gmarche/Entity/Antenne.php index c6a1bbc..74417ab 100644 --- a/src/Gmarche/Entity/Antenne.php +++ b/src/Gmarche/Entity/Antenne.php @@ -20,6 +20,10 @@ class Antenne public $createdAt; public $regionId; + public $edito1; + public $edito2; + public $edito3; + public $edito4; public function setCreatedAt($datetime) { diff --git a/src/Gmarche/Table/AntenneTable.php b/src/Gmarche/Table/AntenneTable.php index 420e836..dac54f3 100644 --- a/src/Gmarche/Table/AntenneTable.php +++ b/src/Gmarche/Table/AntenneTable.php @@ -3,7 +3,6 @@ namespace App\Gmarche\Table; use App\Gmarche\Entity\Antenne; -use App\Auth\UserTable; use Framework\Database\Query; use Framework\Database\Table; @@ -22,6 +21,16 @@ class AntenneTable extends Table ->where("a.region_id = $region_id") ->order('a.name ASC'); } + + public function findAllRegions(): Query + { + //$region = new RegionTable($this->pdo); + $table = 'regions'; + return $this->makeQuery() + ->select('r.*') + ->order('r.name ASC'); + } + public function findAnyAntennes(string $tri, $antennes_select): Query { $region = new RegionTable($this->pdo); diff --git a/src/Product/Actions/RechIndexAction.php b/src/Product/Actions/RechIndexAction.php index 52b8fca..20556d1 100644 --- a/src/Product/Actions/RechIndexAction.php +++ b/src/Product/Actions/RechIndexAction.php @@ -53,6 +53,10 @@ class RechIndexAction $requete = $this->antenneTable->findBy('slug', $antenne_slug); $antenne_name = $requete->name; $antenne_id = $requete->id; + $edito1 = $requete->edito1; + $edito2 = $requete->edito2; + $edito3 = $requete->edito3; + $edito4 = $requete->edito4; $requete_region = $this->regionTable->findBy('slug', $region_slug); $region_name = $requete_region->name; $page = $params['p'] ?? 1; @@ -68,6 +72,8 @@ class RechIndexAction $user_id = ''; } $sess = $_SESSION; - return $this->renderer->render($viewPath.'/index', compact('sess','nom_user','user_id','antenne_slug','gmarchePrefix','region_name','region_slug','antenne_id','antenne_name','viewPath', 'items' )); + return $this->renderer->render($viewPath.'/index', compact('sess','nom_user','user_id', + 'antenne_slug','gmarchePrefix','region_name','region_slug','antenne_id','antenne_name','viewPath', + 'items', 'edito1', 'edito2','edito3','edito4' )); } } diff --git a/src/Product/views/admin/recherches/index.twig b/src/Product/views/admin/recherches/index.twig index aac4fd2..9e507f4 100644 --- a/src/Product/views/admin/recherches/index.twig +++ b/src/Product/views/admin/recherches/index.twig @@ -39,14 +39,11 @@
-
Tous les mois, la Toile Francilienne organise des rencontres entre utilisateurs de la Monnaie Libre.
- C'est l'occasion rêvée d'échanger avec d'autres membres ! - {{ annonce_ligne1 }} - {{ annonce_ligne2 }} - {{ annonce_ligne3 }} -

-
Consultez, rajoutez, modifiez vos propositions dans la liste du mois.
- Mettez bien le pseudo, la clé publique, le bien ou service, et le prix en june. +
+ {{ edito1 }} +

{{ edito2 }}

+ {{ edito3 }} +

{{ edito4 }}

{% if affiche_username() != '' or (sess.connecte != '' and sess.connecte != '---') %}