diff --git a/config/merged/contenu.config.php b/config/merged/contenu.config.php
new file mode 100755
index 0000000000000000000000000000000000000000..787df90b79e067f26b26764721251c69dd2596b9
--- /dev/null
+++ b/config/merged/contenu.config.php
@@ -0,0 +1,137 @@
+<?php
+
+namespace UnicaenRenderer;
+
+use UnicaenRenderer\Controller\ContenuController;
+use UnicaenRenderer\Controller\ContenuControllerFactory;
+use UnicaenRenderer\Service\Contenu\ContenuService;
+use UnicaenRenderer\Service\Contenu\ContenuServiceFactory;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+
+use UnicaenPrivilege\Guard\PrivilegeController;
+use UnicaenRenderer\View\Helper\ContenuViewHelper;
+use Zend\Router\Http\Literal;
+use Zend\Router\Http\Segment;
+
+return [
+ 'bjyauthorize' => [
+ 'guards' => [
+ PrivilegeController::class => [
+ [
+ 'controller' => ContenuController::class,
+ 'action' => [
+ 'index',
+ ],
+ 'privileges' => [
+ DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
+ ],
+ ],
+ [
+ 'controller' => ContenuController::class,
+ 'action' => [
+ 'afficher',
+ ],
+ 'privileges' => [
+ DocumentcontenuPrivileges::DOCUMENTCONTENU_AFFICHER,
+ ],
+ ],
+ [
+ 'controller' => ContenuController::class,
+ 'action' => [
+ 'supprimer',
+ ],
+ 'privileges' => [
+ DocumentcontenuPrivileges::DOCUMENTCONTENU_SUPPRIMER,
+ ],
+ ],
+ ],
+ ],
+ ],
+
+ 'navigation' => [
+ 'default' => [
+ 'home' => [
+ 'pages' => [
+ 'administration' => [
+ 'pages' => [
+ 'contenu' => [
+ 'pages' => [
+ 'contenu' => [
+ 'label' => 'Contenu',
+ 'route' => 'contenu/contenu',
+ 'resource' => PrivilegeController::getResourceId(ContenuController::class, 'index'),
+ 'order' => 10003,
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+
+ 'router' => [
+ 'routes' => [
+ 'contenu' => [
+ 'child_routes' => [
+ 'contenu' => [
+ 'type' => Literal::class,
+ 'options' => [
+ 'route' => '/contenu',
+ 'defaults' => [
+ 'controller' => ContenuController::class,
+ 'action' => 'index',
+ ],
+ ],
+ 'may_terminate' => true,
+ 'child_routes' => [
+ 'afficher' => [
+ 'type' => Segment::class,
+ 'options' => [
+ 'route' => '/afficher/:contenu',
+ 'defaults' => [
+ 'controller' => ContenuController::class,
+ 'action' => 'afficher',
+ ],
+ ],
+ ],
+ 'supprimer' => [
+ 'type' => Segment::class,
+ 'options' => [
+ 'route' => '/supprimer/:contenu',
+ 'defaults' => [
+ 'controller' => ContenuController::class,
+ 'action' => 'supprimer',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+
+ 'service_manager' => [
+ 'factories' => [
+ ContenuService::class => ContenuServiceFactory::class,
+ ],
+ ],
+ 'form_elements' => [
+ 'factories' => [],
+ ],
+ 'hydrators' => [
+ 'factories' => [],
+ ],
+ 'controllers' => [
+ 'factories' => [
+ ContenuController::class => ContenuControllerFactory::class,
+ ]
+ ],
+ 'view_helpers' => [
+ 'invokables' => [
+ 'contenu' => ContenuViewHelper::class,
+ ],
+ ],
+];
diff --git a/config/merged/index.config.php b/config/merged/index.config.php
index e18006d9929e8e2e7ce28d36bb6e456fdefd7263..52b43f4205a9766864959093ddb3444cf421d9ed 100755
--- a/config/merged/index.config.php
+++ b/config/merged/index.config.php
@@ -2,8 +2,9 @@
use UnicaenRenderer\Controller\IndexController;
use UnicaenRenderer\Controller\IndexControllerFactory;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
use UnicaenPrivilege\Guard\PrivilegeController;
use Zend\Router\Http\Literal;
@@ -17,8 +18,9 @@ return [
'index',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX,
+ DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX,
DocumentmacroPrivileges::DOCUMENTMACRO_INDEX,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX
],
],
],
diff --git a/config/merged/template.config.php b/config/merged/template.config.php
index 091b90d1e0774eab01729b0e8a8772382ae6ea29..252ff0d4f543f9f468158e2e50cb56e2b08c72c0 100755
--- a/config/merged/template.config.php
+++ b/config/merged/template.config.php
@@ -6,7 +6,7 @@ use UnicaenRenderer\Form\Template\TemplateForm;
use UnicaenRenderer\Form\Template\TemplateFormFactory;
use UnicaenRenderer\Form\Template\TemplateHydrator;
use UnicaenRenderer\Form\Template\TemplateHydratorFactory;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
use UnicaenRenderer\Service\Template\TemplateService;
use UnicaenRenderer\Service\Template\TemplateServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
@@ -21,10 +21,18 @@ return [
'controller' => TemplateController::class,
'action' => [
'index',
+ ],
+ 'privileges' => [
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX,
+ ],
+ ],
+ [
+ 'controller' => TemplateController::class,
+ 'action' => [
'afficher',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AFFICHER,
],
],
[
@@ -33,7 +41,7 @@ return [
'ajouter',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_AJOUTER,
],
],
[
@@ -42,7 +50,7 @@ return [
'modifier',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_MODIFIER,
],
],
[
@@ -52,7 +60,7 @@ return [
'restaurer',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_HISTORISER,
],
],
[
@@ -61,7 +69,7 @@ return [
'detruire',
],
'privileges' => [
- DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER,
+ DocumenttemplatePrivileges::DOCUMENTTEMPLATE_SUPPRIMER,
],
],
],
@@ -76,7 +84,7 @@ return [
'pages' => [
'contenu' => [
'pages' => [
- 'contenu' => [
+ 'template' => [
'label' => 'Template',
'route' => 'contenu/template',
'resource' => PrivilegeController::getResourceId(TemplateController::class, 'index'),
@@ -95,7 +103,7 @@ return [
'routes' => [
'contenu' => [
'child_routes' => [
- 'contenu' => [
+ 'template' => [
'type' => Literal::class,
'options' => [
'route' => '/template',
diff --git a/src/UnicaenRenderer/Controller/ContenuController.php b/src/UnicaenRenderer/Controller/ContenuController.php
new file mode 100644
index 0000000000000000000000000000000000000000..dff0292fb0116200d5c3b65e69c87512d4bc70fa
--- /dev/null
+++ b/src/UnicaenRenderer/Controller/ContenuController.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace UnicaenRenderer\Controller;
+
+use UnicaenRenderer\Service\Contenu\ContenuServiceAwareTrait;
+use Zend\Http\Request;
+use Zend\Mvc\Controller\AbstractActionController;
+use Zend\View\Model\ViewModel;
+
+class ContenuController extends AbstractActionController {
+ use ContenuServiceAwareTrait;
+
+ public function indexAction()
+ {
+ $contenus = $this->getContenuService()->getContenus();
+
+ return new ViewModel([
+ 'contenus' => $contenus,
+ ]);
+ }
+
+ public function afficherAction()
+ {
+ $contenu = $this->getContenuService()->getRequestedContenu($this);
+
+ return new ViewModel([
+ 'title' => "Affichage du contenu #" . $contenu->getId(),
+ 'contenu' => $contenu,
+ ]);
+ }
+
+ public function supprimerAction()
+ {
+ $contenu = $this->getContenuService()->getRequestedContenu($this);
+
+ /** @var Request $request */
+ $request = $this->getRequest();
+ if ($request->isPost()) {
+ $data = $request->getPost();
+ if ($data["reponse"] === "oui") {
+ $this->getContenuService()->delete($contenu);
+ }
+ exit();
+ }
+
+ $vm = new ViewModel();
+ if ($contenu !== null) {
+ $vm->setTemplate('unicaen-renderer/default/confirmation');
+ $vm->setVariables([
+ 'title' => "Suppression du contenu [" . $contenu->getId() . "]",
+ 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?",
+ 'action' => $this->url()->fromRoute('contenu/contenu/supprimer', ["contenu" => $contenu->getId()], [], true),
+ ]);
+ }
+ return $vm;
+ }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Controller/ContenuControllerFactory.php b/src/UnicaenRenderer/Controller/ContenuControllerFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..d1166a3ac7f9003f1546d094b4cf67848f3f77e4
--- /dev/null
+++ b/src/UnicaenRenderer/Controller/ContenuControllerFactory.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace UnicaenRenderer\Controller;
+
+use Interop\Container\ContainerInterface;
+use UnicaenRenderer\Service\Contenu\ContenuService;
+
+class ContenuControllerFactory {
+
+ public function __invoke(ContainerInterface $container)
+ {
+ /**
+ * @var ContenuService $contenuService
+ */
+ $contenuService = $container->get(ContenuService::class);
+
+ $controller = new ContenuController();
+ $controller->setContenuService($contenuService);
+ return $controller;
+ }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Contenu.php b/src/UnicaenRenderer/Entity/Db/Contenu.php
new file mode 100644
index 0000000000000000000000000000000000000000..10d4bd12a50577c6bc7bc99a630b6251daf33dbb
--- /dev/null
+++ b/src/UnicaenRenderer/Entity/Db/Contenu.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace UnicaenRenderer\Entity\Db;
+
+use DateTime;
+use Zend\Permissions\Acl\Resource\ResourceInterface;
+
+class Contenu implements ResourceInterface
+{
+ const RESOURCE_ID = 'Contenu';
+
+ /**
+ * @return string
+ */
+ public function getResourceId()
+ {
+ return self::RESOURCE_ID;
+ }
+
+ /** @var int */
+ private $id;
+ /** @var Template */
+ private $template;
+ /** @var DateTime */
+ private $date;
+ /** @var string */
+ private $sujet;
+ /** @var string */
+ private $corps;
+
+ /**
+ * @return int
+ */
+ public function getId(): int
+ {
+ return $this->id;
+ }
+
+ /**
+ * @return Template
+ */
+ public function getTemplate(): Template
+ {
+ return $this->template;
+ }
+
+ /**
+ * @param Template $template
+ * @return Contenu
+ */
+ public function setTemplate(Template $template): Contenu
+ {
+ $this->template = $template;
+ return $this;
+ }
+
+ /**
+ * @return DateTime
+ */
+ public function getDate(): DateTime
+ {
+ return $this->date;
+ }
+
+ /**
+ * @param DateTime $date
+ * @return Contenu
+ */
+ public function setDate(DateTime $date): Contenu
+ {
+ $this->date = $date;
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSujet(): string
+ {
+ return $this->sujet;
+ }
+
+ /**
+ * @param string $sujet
+ * @return Contenu
+ */
+ public function setSujet(string $sujet): Contenu
+ {
+ $this->sujet = $sujet;
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getCorps(): string
+ {
+ return $this->corps;
+ }
+
+ /**
+ * @param string $corps
+ * @return Contenu
+ */
+ public function setCorps(string $corps): Contenu
+ {
+ $this->corps = $corps;
+ return $this;
+ }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Macro.php b/src/UnicaenRenderer/Entity/Db/Macro.php
index 03875cc71dc682665603efcf4e70d7ff6b636eb6..c83bd1e40abd50ace1c52211a324372bc9e9b301 100755
--- a/src/UnicaenRenderer/Entity/Db/Macro.php
+++ b/src/UnicaenRenderer/Entity/Db/Macro.php
@@ -11,9 +11,8 @@ class Macro implements HistoriqueAwareInterface , ResourceInterface
use HistoriqueAwareTrait;
const RESOURCE_ID = 'Macro';
+
/**
- * Returns the string identifier of the Resource
- *
* @return string
*/
public function getResourceId()
diff --git a/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml
new file mode 100755
index 0000000000000000000000000000000000000000..6a7eebd34b68f5d788e89cd6742fbadd97364db0
--- /dev/null
+++ b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Contenu.dcm.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
+ <entity name="UnicaenRenderer\Entity\Db\Contenu" table="unicaen_renderer_contenu">
+
+ <id name="id" column="id" type="integer">
+ <generator strategy="IDENTITY"/>
+ </id>
+
+ <many-to-one target-entity="UnicaenRenderer\Entity\Db\Template" field="template">
+ <join-column name="template_id" referenced-column-name="id"/>
+ </many-to-one>
+ <field name="date" column="date_generation" type="datetime" nullable="false"/>
+ <field name="sujet" column="sujet" type="string" length="9999" nullable="false" />
+ <field name="corps" column="corps" type="string" length="9999" nullable="false" />
+
+ </entity>
+</doctrine-mapping>
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Entity/Db/Template.php b/src/UnicaenRenderer/Entity/Db/Template.php
index 9d2d89a7704d0330e6c7a5c8c88af9125121730e..60eb8bf4126ff2cae3e5e8dec7d50fce2e39744e 100755
--- a/src/UnicaenRenderer/Entity/Db/Template.php
+++ b/src/UnicaenRenderer/Entity/Db/Template.php
@@ -11,9 +11,8 @@ class Template implements HistoriqueAwareInterface, ResourceInterface
use HistoriqueAwareTrait;
const RESOURCE_ID = 'Template';
+
/**
- * Returns the string identifier of the Resource
- *
* @return string
*/
public function getResourceId()
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php
deleted file mode 100755
index 545b32a41bb0af58a82d64be6e25d1d45ca2cb62..0000000000000000000000000000000000000000
--- a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace UnicaenRenderer\Provider\Privilege;
-
-use UnicaenPrivilege\Entity\Db\Privilege;
-use UnicaenPrivilege\Provider\Privilege\Privileges;
-
-class DocumentcontentPrivileges extends Privileges
-{
- public static function getResourceId( $privilege )
- {
- if ($privilege instanceof Privilege){
- $privilege = $privilege->getFullCode();
- }
- return 'privilege/'.$privilege;
- }
-
- const DOCUMENTCONTENU_INDEX = 'documentcontent-documentcontenu_index';
- const DOCUMENTCONTENU_AJOUTER = 'documentcontent-documentcontenu_ajouter';
- const DOCUMENTCONTENU_MODIFIER = 'documentcontent-documentcontenu_modifier';
- const DOCUMENTCONTENU_HISTORISER = 'documentcontent-documentcontenu_historiser';
- const DOCUMENTCONTENU_SUPPRIMER = 'documentcontent-documentcontenu_supprimer';
-}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php
new file mode 100755
index 0000000000000000000000000000000000000000..7431caac223d5945ed3cf0d48e2bf045dbd47bd4
--- /dev/null
+++ b/src/UnicaenRenderer/Provider/Privilege/DocumentcontenuPrivileges.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace UnicaenRenderer\Provider\Privilege;
+
+use UnicaenPrivilege\Entity\Db\Privilege;
+use UnicaenPrivilege\Provider\Privilege\Privileges;
+
+class DocumentcontenuPrivileges extends Privileges
+{
+ const DOCUMENTCONTENU_INDEX = 'documentcontenu-documentcontenu_index';
+ const DOCUMENTCONTENU_AFFICHER = 'documentcontenu-documentcontenu_afficher';
+ const DOCUMENTCONTENU_SUPPRIMER = 'documentcontenu-documentcontenu_supprimer';
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php
new file mode 100644
index 0000000000000000000000000000000000000000..9467728cf9bfa3597638016d6dbd4a1b4f364366
--- /dev/null
+++ b/src/UnicaenRenderer/Provider/Privilege/DocumenttemplatePrivileges.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace UnicaenRenderer\Provider\Privilege;
+
+use UnicaenPrivilege\Entity\Db\Privilege;
+use UnicaenPrivilege\Provider\Privilege\Privileges;
+
+class DocumenttemplatePrivileges extends Privileges
+{
+ const DOCUMENTTEMPLATE_INDEX = 'documentcontent-documenttemplate_index';
+ const DOCUMENTTEMPLATE_AJOUTER = 'documentcontent-documenttemplate_ajouter';
+ const DOCUMENTTEMPLATE_AFFICHER = 'documentcontent-documenttemplate_afficher';
+ const DOCUMENTTEMPLATE_MODIFIER = 'documentcontent-documenttemplate_modifier';
+ const DOCUMENTTEMPLATE_HISTORISER = 'documentcontent-documenttemplate_historiser';
+ const DOCUMENTTEMPLATE_SUPPRIMER = 'documentcontent-documenttemplate_supprimer';
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuService.php b/src/UnicaenRenderer/Service/Contenu/ContenuService.php
new file mode 100644
index 0000000000000000000000000000000000000000..1f016c4c7db6d5924326bdc00cdb7865b25f3f17
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuService.php
@@ -0,0 +1,115 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+use Doctrine\ORM\NonUniqueResultException;
+use Doctrine\ORM\ORMException;
+use Doctrine\ORM\QueryBuilder;
+use UnicaenApp\Service\EntityManagerAwareTrait;
+use UnicaenRenderer\Entity\Db\Contenu;
+use Zend\Mvc\Controller\AbstractActionController;
+
+class ContenuService {
+ use EntityManagerAwareTrait;
+
+ /** Gestion des entités *******************************************************************************************/
+
+ /**
+ * @param Contenu $contenu
+ * @return Contenu
+ */
+ public function create(Contenu $contenu) : Contenu
+ {
+ try {
+ $this->getEntityManager()->persist($contenu);
+ $this->getEntityManager()->flush($contenu);
+ } catch (ORMException $e) {
+ throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+ }
+ return $contenu;
+ }
+
+ /**
+ * @param Contenu $contenu
+ * @return Contenu
+ */
+ public function update(Contenu $contenu) : Contenu
+ {
+ try {
+ $this->getEntityManager()->flush($contenu);
+ } catch (ORMException $e) {
+ throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+ }
+ return $contenu;
+ }
+
+ /**
+ * @param Contenu $contenu
+ * @return Contenu
+ */
+ public function delete(Contenu $contenu) : Contenu
+ {
+ try {
+ $this->getEntityManager()->remove($contenu);
+ $this->getEntityManager()->flush($contenu);
+ } catch (ORMException $e) {
+ throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD d'un Contenu.", $e);
+ }
+ return $contenu;
+ }
+
+ /** Requetages ****************************************************************************************************/
+
+ /**
+ * @return QueryBuilder
+ */
+ public function createQueryBuilder() : QueryBuilder
+ {
+ $qb = $this->getEntityManager()->getRepository(Contenu::class)->createQueryBuilder('contenu')
+ ->leftJoin('contenu.template', 'template')->addSelect('template');
+ return $qb;
+ }
+
+ /**
+ * @param string $champ
+ * @param string $ordre
+ * @return Contenu[]
+ */
+ public function getContenus(string $champ = 'date', string $ordre = 'ASC') : array
+ {
+ $qb = $this->createQueryBuilder()
+ ->orderBy('contenu.' . $champ, $ordre);
+ $result = $qb->getQuery()->getResult();
+ return $result;
+ }
+
+ /**
+ * @param int $id
+ * @return Contenu|null
+ */
+ public function getContenu(int $id) : ?Contenu
+ {
+ $qb = $this->createQueryBuilder()
+ ->andWhere('contenu.id = :id')
+ ->setParameter('id', $id);
+ try {
+ $result = $qb->getQuery()->getOneOrNullResult();
+ } catch (NonUniqueResultException $e) {
+ throw new RuntimeException("Plusieurs Sursis partagent le même id [".$id."]",0,$e);
+ }
+
+ return $result;
+ }
+
+ /**
+ * @param AbstractActionController $controller
+ * @param string $param
+ * @return Contenu|null
+ */
+ public function getRequestedContenu(AbstractActionController $controller, string $param='contenu') : ?Contenu
+ {
+ $id = $controller->params()->fromRoute($param);
+ $result = $this->getContenu($id);
+ return $result;
+ }
+}
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php b/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f9c1eeab1cffd12049d3eaf7aaf30257f71feeb
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+trait ContenuServiceAwareTrait {
+
+ /** @var ContenuService */
+ private $contenuService;
+
+ /**
+ * @return ContenuService
+ */
+ public function getContenuService(): ContenuService
+ {
+ return $this->contenuService;
+ }
+
+ /**
+ * @param ContenuService $contenuService
+ * @return ContenuService
+ */
+ public function setContenuService(ContenuService $contenuService): ContenuService
+ {
+ $this->contenuService = $contenuService;
+ return $this->contenuService;
+ }
+
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php b/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..67fc1cde166e489af910e308e1ffd4cb38753882
--- /dev/null
+++ b/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace UnicaenRenderer\Service\Contenu;
+
+use Doctrine\ORM\EntityManager;
+use Interop\Container\ContainerInterface;
+
+class ContenuServiceFactory {
+
+ /**
+ * @param ContainerInterface $container
+ * @return ContenuService
+ */
+ public function __invoke(ContainerInterface $container) : ContenuService
+ {
+ /**
+ * @var EntityManager $entityManager
+ */
+ $entityManager = $container->get('doctrine.entitymanager.orm_default');
+
+ $service = new ContenuService();
+ $service->setEntityManager($entityManager);
+ return $service;
+ }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php b/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..e6ed2151fa6b0281a33968fdf8207f1cf939d8bb
--- /dev/null
+++ b/src/UnicaenRenderer/View/Helper/ContenuViewHelper.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace UnicaenRenderer\View\Helper;
+
+use Application\View\Renderer\PhpRenderer;
+use UnicaenRenderer\Entity\Db\Contenu;
+use Zend\View\Helper\AbstractHelper;
+use Zend\View\Helper\Partial;
+use Zend\View\Resolver\TemplatePathStack;
+
+class ContenuViewHelper extends AbstractHelper
+{
+ /**
+ * @param Contenu $contenu
+ * @param array $options
+ * @return string|Partial
+ */
+ public function __invoke(Contenu $contenu, array $options = [])
+ {
+ /** @var PhpRenderer $view */
+ $view = $this->getView();
+ $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]]));
+
+ return $view->partial('contenu', ['contenu' => $contenu, 'options' => $options]);
+ }
+}
\ No newline at end of file
diff --git a/src/UnicaenRenderer/View/Helper/partial/contenu.phtml b/src/UnicaenRenderer/View/Helper/partial/contenu.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..ba98bb308913764a07ae25f2f39d2ab84d634f8f
--- /dev/null
+++ b/src/UnicaenRenderer/View/Helper/partial/contenu.phtml
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @see \UnicaenRenderer\View\Helper\ContenuViewHelper
+ * @var Contenu $contenu
+ * @var array $options
+ */
+
+use UnicaenRenderer\Entity\Db\Contenu;
+
+?>
+
+<div class="row">
+ <div class="col-md-4">
+ <dl>
+ <dt> Identifiant </dt>
+ <dd>
+ <?php echo $contenu->getId(); ?>
+ </dd>
+ <dt> Template </dt>
+ <dd>
+ <?php if ($contenu->getTemplate()) : ?>
+ <?php echo $contenu->getTemplate()->getCode(); ?>
+ <?php else: ?>
+ <i>Aucun template associé</i>
+ <?php endif; ?>
+ </dd>
+ <dt> Date de génération </dt>
+ <dd>
+ <?php echo $contenu->getDate()->format('d/m/Y'); ?>
+ </dd>
+ </dl>
+ </div>
+ <div class="col-md-8">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <?php echo $contenu->getSujet(); ?>
+ </div>
+ <div class="panel-body">
+ <?php echo $contenu->getCorps(); ?>
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/view/unicaen-renderer/contenu/afficher.phtml b/view/unicaen-renderer/contenu/afficher.phtml
old mode 100755
new mode 100644
index 6e8cf5453923fe8518554177f9ad3d7cf14e5e4d..1e9096fd199681778e11f65f5c726da018f7241a
--- a/view/unicaen-renderer/contenu/afficher.phtml
+++ b/view/unicaen-renderer/contenu/afficher.phtml
@@ -1,34 +1,14 @@
<?php
-use UnicaenRenderer\Entity\Db\Content;
+use UnicaenRenderer\Entity\Db\Contenu;
/**
* @see \UnicaenRenderer\Controller\ContenuController::afficherAction()
- * @var Content $contenu
+ * @var Contenu $contenu
*/
+$this->headTitle("Affichage du contenu #" . $contenu->getId());
+
?>
-<dl class="dl-horizontal">
- <dt> Code </dt>
- <dd> <?php echo $contenu->getCode(); ?> </dd>
- <dt> Type </dt>
- <dd> <?php echo $contenu->getType(); ?> </dd>
- <?php if ($contenu->getDescription()) : ?>
- <dt> Description </dt>
- <dd> <br/>
- <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
- <?php echo $contenu->getDescription(); ?> </div>
- </dd>
- <?php endif; ?>
- <dt> Complément </dt>
- <dd> <br/>
- <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
- <?php echo $contenu->getComplement(); ?> </div>
- </dd>
- <dt> Contenu </dt>
- <dd> <br/>
- <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
- <?php echo $contenu->getContent(); ?> </div>
- </dd>
-</dl>
+<?php echo $this->contenu($contenu); ?>
diff --git a/view/unicaen-renderer/contenu/index.phtml b/view/unicaen-renderer/contenu/index.phtml
old mode 100755
new mode 100644
index f5829bdae036efc04c1387a8e65e622f500a64fd..7b9480f5c538608d5222e35d6d2f6373d7395311
--- a/view/unicaen-renderer/contenu/index.phtml
+++ b/view/unicaen-renderer/contenu/index.phtml
@@ -1,88 +1,73 @@
<?php
+use UnicaenRenderer\Entity\Db\Contenu;
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+
/**
* @see \UnicaenRenderer\Controller\ContenuController::indexAction()
- * @var Content[] $contenus
+ * @var Contenu[] $contenus
*/
-use UnicaenRenderer\Entity\Db\Content;
-use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
-
-$canAjouter = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER));
-$canAfficher = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX));
-$canModifier = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER));
-$canHistoriser = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER));
-$canDetruire = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER));
-$this->isAllowed(null, DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER);
-
$this->headTitle("Index des contenus");
+
+$canVoir = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_AFFICHER));
+$canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_SUPPRIMER));
?>
<h1 class="page-header">
Index des contenus
+ <span class="badge"><?php echo count($contenus); ?> </span>
</h1>
-<?php if ($canAjouter) : ?>
- <a href="<?php echo $this->url('contenu/contenu/ajouter', [], [], true); ?>"
- class="btn btn-primary action ajax-modal" data-event="modification">
- <span class="icon ajouter"></span>
- Ajouter un contenu
- </a>
-<?php endif; ?>
-
-<table class="table table-condensed">
+<table class="table table-condensed table-hover">
<thead>
<tr>
- <th> Code </th>
- <th> Type </th>
- <th> Action</th>
+ <th> Id </th>
+ <th> Template </th>
+ <th> Date de génération </th>
+ <th> Sujet </th>
+ <th> Action </th>
</tr>
</thead>
<tbody>
- <?php foreach ($contenus as $contenu) : ?>
- <tr class="<?php if ($contenu->estHistorise()) echo 'historise '; ?>">
- <td>
- <?php echo $contenu->getCode(); ?>
- <?php if ($contenu->getDescription() !== null) : ?>
- <span class="icon information" title="<?php echo $contenu->getDescription(); ?>" data-toggle="tooltip" data-html="true"></span>
- <?php endif; ?>
- </td>
- <td>
- <span class="icon <?php echo $contenu->getType(); ?>"></span>
- </td>
- <td>
- <?php if ($canAfficher) : ?>
- <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
- class="ajax-modal"
- >
- <span class="icon voir"></span></a>
- <?php endif; ?>
- <?php if ($canModifier) : ?>
- <a href="<?php echo $this->url('contenu/contenu/modifier', ['contenu' => $contenu->getId()], [], true); ?>"
- class="ajax-modal" data-event="modification"
- >
- <span class="icon editer"></span></a>
- <?php endif; ?>
- <?php if ($canHistoriser) : ?>
- <?php if ($contenu->estNonHistorise()) : ?>
- <a href="<?php echo $this->url('contenu/contenu/historiser', ['contenu' => $contenu->getId()], [], true); ?>"
- >
- <span class="icon historiser"></span></a>
- <?php else : ?>
- <a href="<?php echo $this->url('contenu/contenu/restaurer', ['contenu' => $contenu->getId()], [], true); ?>"
- >
- <span class="icon restaurer"></span></a>
- <?php endif; ?>
- <?php endif; ?>
- <?php if ($canDetruire) : ?>
- <a href="<?php echo $this->url('contenu/contenu/detruire', ['contenu' => $contenu->getId()], [], true); ?>"
- class="ajax-modal" data-event="modification"
- >
- <span class="icon detruire"></span></a>
- <?php endif; ?>
- </td>
- </tr>
- <?php endforeach; ?>
+ <?php foreach ($contenus as $contenu) : ?>
+ <tr>
+ <td> <?php echo $contenu->getId(); ?> </td>
+ <td>
+ <?php if ($contenu->getTemplate()) : ?>
+ <?php echo $contenu->getTemplate()->getCode(); ?>
+ <?php endif; ?>
+ </td>
+ <td> <?php echo $contenu->getDate()->format('d/m/Y à H:i:s'); ?> </td>
+ <td>
+ <span title="<?php echo $contenu->getSujet(); ?>" data-toggle="tooltip" data-html="true">
+ <?php
+ $sujet = $contenu->getSujet();
+ if (strlen($sujet) > 50) $sujet = substr($contenu->getSujet(), 0, 46) . " ...";
+ echo $sujet;
+ ?>
+ </span>
+ </td>
+ <td>
+ <?php if ($canVoir) : ?>
+ <?php /** @see \UnicaenRenderer\Controller\ContenuController::afficherAction() */?>
+ <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
+ title="Afficher le contenu" data-toggle="tooltip" data-html="true"
+ class="ajax-modal"
+ >
+ <span class="icon voir"></span></a>
+ <?php endif; ?>
+ <?php if ($canSupprimer) : ?>
+ <?php /** @see \UnicaenRenderer\Controller\ContenuController::supprimerAction() */?>
+ <a href="<?php echo $this->url('contenu/contenu/supprimer', ['contenu' => $contenu->getId()], [], true); ?>"
+ title="Afficher le contenu" data-toggle="tooltip" data-html="true"
+ class="ajax-modal" data-event="modification"
+ >
+ <span class="icon detruire"></span></a>
+ <?php endif; ?>
+ </td>
+ </tr>
+ <?php endforeach; ?>
</tbody>
</table>
diff --git a/view/unicaen-renderer/index/index.phtml b/view/unicaen-renderer/index/index.phtml
index 043efd70e640283a761e998a1536163092e2d01d..75cb5a4dd00ff37e1478acc4b1ec86e078b9ad39 100755
--- a/view/unicaen-renderer/index/index.phtml
+++ b/view/unicaen-renderer/index/index.phtml
@@ -1,10 +1,19 @@
<?php
+use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
+use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
+
/**
* @see \UnicaenRenderer\Controller\IndexController::indexAction()
*/
$this->headTitle("Index des modules de gestion des contenus");
+
+$canContenu = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(DocumentcontenuPrivileges::DOCUMENTCONTENU_INDEX));
+$canMacro = $this->isAllowed(DocumentmacroPrivileges::getResourceId(DocumentmacroPrivileges::DOCUMENTMACRO_INDEX));
+$canTemplate = $this->isAllowed(DocumenttemplatePrivileges::getResourceId(DocumenttemplatePrivileges::DOCUMENTTEMPLATE_INDEX));
+
?>
<h1 class="page-header">
@@ -15,6 +24,7 @@ $this->headTitle("Index des modules de gestion des contenus");
Ce module permet de gérer un ensemble de contenus utilisables en tant que chaîne de caractères insérables (texte ou pdf).
</p>
+<?php if ($canMacro) : ?>
<h2> Gestion des macros </h2>
<div class="row">
@@ -30,13 +40,34 @@ $this->headTitle("Index des modules de gestion des contenus");
</a>
</div>
</div>
+<?php endif; ?>
+
+<?php if ($canTemplate) : ?>
+ <h2> Gestion des templates </h2>
+
+ <div class="row">
+ <div class="col-md-8">
+ <p>
+ Listing des templates et modification de ceux-ci.
+ </p>
+ </div>
+ <div class="pull-right">
+ <a href="<?php echo $this->url('contenu/template'); ?>" class="btn btn-primary action">
+ <span class="icon index"></span>
+ Gestion des templates
+ </a>
+ </div>
+ </div>
+<?php endif; ?>
+
+<?php if ($canContenu) : ?>
<h2> Gestion des contenus </h2>
<div class="row">
<div class="col-md-8">
<p>
- Listing des contenus et modification de ceux-ci.
+ Listing des contenus.
</p>
</div>
<div class="pull-right">
@@ -46,3 +77,4 @@ $this->headTitle("Index des modules de gestion des contenus");
</a>
</div>
</div>
+<?php endif; ?>
\ No newline at end of file
diff --git a/view/unicaen-renderer/template/afficher.phtml b/view/unicaen-renderer/template/afficher.phtml
new file mode 100755
index 0000000000000000000000000000000000000000..6e8cf5453923fe8518554177f9ad3d7cf14e5e4d
--- /dev/null
+++ b/view/unicaen-renderer/template/afficher.phtml
@@ -0,0 +1,34 @@
+<?php
+
+use UnicaenRenderer\Entity\Db\Content;
+
+/**
+ * @see \UnicaenRenderer\Controller\ContenuController::afficherAction()
+ * @var Content $contenu
+ */
+
+?>
+
+<dl class="dl-horizontal">
+ <dt> Code </dt>
+ <dd> <?php echo $contenu->getCode(); ?> </dd>
+ <dt> Type </dt>
+ <dd> <?php echo $contenu->getType(); ?> </dd>
+ <?php if ($contenu->getDescription()) : ?>
+ <dt> Description </dt>
+ <dd> <br/>
+ <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+ <?php echo $contenu->getDescription(); ?> </div>
+ </dd>
+ <?php endif; ?>
+ <dt> Complément </dt>
+ <dd> <br/>
+ <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+ <?php echo $contenu->getComplement(); ?> </div>
+ </dd>
+ <dt> Contenu </dt>
+ <dd> <br/>
+ <div style="border:1px solid black; border-radius: 5px; padding:0.5rem;"><?php echo $contenu->getComplement(); ?>
+ <?php echo $contenu->getContent(); ?> </div>
+ </dd>
+</dl>
diff --git a/view/unicaen-renderer/template/index.phtml b/view/unicaen-renderer/template/index.phtml
new file mode 100755
index 0000000000000000000000000000000000000000..f5829bdae036efc04c1387a8e65e622f500a64fd
--- /dev/null
+++ b/view/unicaen-renderer/template/index.phtml
@@ -0,0 +1,96 @@
+<?php
+
+/**
+ * @see \UnicaenRenderer\Controller\ContenuController::indexAction()
+ * @var Content[] $contenus
+ */
+
+use UnicaenRenderer\Entity\Db\Content;
+use UnicaenRenderer\Provider\Privilege\DocumentcontentPrivileges;
+
+$canAjouter = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER));
+$canAfficher = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_INDEX));
+$canModifier = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_MODIFIER));
+$canHistoriser = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_HISTORISER));
+$canDetruire = $this->isAllowed(DocumentcontentPrivileges::getResourceId(DocumentcontentPrivileges::DOCUMENTCONTENU_SUPPRIMER));
+$this->isAllowed(null, DocumentcontentPrivileges::DOCUMENTCONTENU_AJOUTER);
+
+$this->headTitle("Index des contenus");
+?>
+
+<h1 class="page-header">
+ Index des contenus
+</h1>
+
+<?php if ($canAjouter) : ?>
+ <a href="<?php echo $this->url('contenu/contenu/ajouter', [], [], true); ?>"
+ class="btn btn-primary action ajax-modal" data-event="modification">
+ <span class="icon ajouter"></span>
+ Ajouter un contenu
+ </a>
+<?php endif; ?>
+
+<table class="table table-condensed">
+ <thead>
+ <tr>
+ <th> Code </th>
+ <th> Type </th>
+ <th> Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($contenus as $contenu) : ?>
+ <tr class="<?php if ($contenu->estHistorise()) echo 'historise '; ?>">
+ <td>
+ <?php echo $contenu->getCode(); ?>
+ <?php if ($contenu->getDescription() !== null) : ?>
+ <span class="icon information" title="<?php echo $contenu->getDescription(); ?>" data-toggle="tooltip" data-html="true"></span>
+ <?php endif; ?>
+ </td>
+ <td>
+ <span class="icon <?php echo $contenu->getType(); ?>"></span>
+ </td>
+ <td>
+ <?php if ($canAfficher) : ?>
+ <a href="<?php echo $this->url('contenu/contenu/afficher', ['contenu' => $contenu->getId()], [], true); ?>"
+ class="ajax-modal"
+ >
+ <span class="icon voir"></span></a>
+ <?php endif; ?>
+ <?php if ($canModifier) : ?>
+ <a href="<?php echo $this->url('contenu/contenu/modifier', ['contenu' => $contenu->getId()], [], true); ?>"
+ class="ajax-modal" data-event="modification"
+ >
+ <span class="icon editer"></span></a>
+ <?php endif; ?>
+ <?php if ($canHistoriser) : ?>
+ <?php if ($contenu->estNonHistorise()) : ?>
+ <a href="<?php echo $this->url('contenu/contenu/historiser', ['contenu' => $contenu->getId()], [], true); ?>"
+ >
+ <span class="icon historiser"></span></a>
+ <?php else : ?>
+ <a href="<?php echo $this->url('contenu/contenu/restaurer', ['contenu' => $contenu->getId()], [], true); ?>"
+ >
+ <span class="icon restaurer"></span></a>
+ <?php endif; ?>
+ <?php endif; ?>
+ <?php if ($canDetruire) : ?>
+ <a href="<?php echo $this->url('contenu/contenu/detruire', ['contenu' => $contenu->getId()], [], true); ?>"
+ class="ajax-modal" data-event="modification"
+ >
+ <span class="icon detruire"></span></a>
+ <?php endif; ?>
+ </td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+</table>
+
+<script>
+ $(function() {
+ $("body").on("modification", function (event) {
+ event.div.modal('hide');
+ window.location.reload();
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/view/unicaen-renderer/contenu/modifier.phtml b/view/unicaen-renderer/template/modifier.phtml
similarity index 100%
rename from view/unicaen-renderer/contenu/modifier.phtml
rename to view/unicaen-renderer/template/modifier.phtml