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