diff --git a/SQL/001_table.sql b/SQL/001_table.sql new file mode 100755 index 0000000000000000000000000000000000000000..91c6d4a304c9d3024800e706e2a10b1725777f3f --- /dev/null +++ b/SQL/001_table.sql @@ -0,0 +1,43 @@ +-- TABLE DES MACROS + +create table unicaen_renderer_macro +( + id serial not null constraint unicaen_renderer_macro_pk primary key, + code varchar(256) not null, + description text, + variable_name varchar(256) not null, + methode_name varchar(256) not null, + histo_creation timestamp not null, + histo_createur_id integer not null constraint unicaen_renderer_macro_user_id_fk references "user", + histo_modification timestamp not null, + histo_modificateur_id integer not null constraint unicaen_renderer_macro_user_id_fk_2 references "user", + histo_destruction timestamp, + histo_destructeur_id integer constraint unicaen_renderer_macro_user_id_fk_3 references "user" +); + +create unique index unicaen_renderer_macro_id_uindex on unicaen_renderer_macro (id); +create unique index unicaen_renderer_macro_code_uindex on unicaen_renderer_macro (code); + +-- TABLE DES CONTENUS + +create table unicaen_renderer_content +( + id serial not null constraint unicaen_content_content_pk primary key, + code varchar(256) not null, + description text, + renderer_type varchar(256) not null, + renderer_complement text not null, + renderer_content text not null, + histo_creation timestamp not null, + histo_createur_id integer not null constraint unicaen_content_content_user_id_fk references "user", + histo_modification timestamp not null, + histo_modificateur_id integer not null constraint unicaen_content_content_user_id_fk_2 references "user", + histo_destruction timestamp, + histo_destructeur_id integer constraint unicaen_content_content_user_id_fk_3 references "user" +); + +create unique index unicaen_content_content_id_uindex on unicaen_renderer_content (id); +create unique index unicaen_content_content_code_uindex on unicaen_renderer_content (code); + + + diff --git a/SQL/002_privileges.sql b/SQL/002_privileges.sql new file mode 100644 index 0000000000000000000000000000000000000000..62e483729f8cbf28ff46fbc6075b8759b967b16d --- /dev/null +++ b/SQL/002_privileges.sql @@ -0,0 +1,2 @@ +INSERT INTO public.unicaen_privilege_categorie (code, libelle, ordre, namespace) + VALUES ('documentcontent', 'UnicaenDocument - Gestion des contenus', 11020, 'UnicaenRenderer\\Provider\\Privilege'); \ No newline at end of file diff --git a/config/merged/contenu.config.php b/config/merged/template.config.php similarity index 71% rename from config/merged/contenu.config.php rename to config/merged/template.config.php index b0eb9d65b82aac9c32f9f3127ad89b06ec9810df..091b90d1e0774eab01729b0e8a8772382ae6ea29 100755 --- a/config/merged/contenu.config.php +++ b/config/merged/template.config.php @@ -1,14 +1,14 @@ <?php -use UnicaenRenderer\Controller\ContenuController; -use UnicaenRenderer\Controller\ContenuControllerFactory; -use UnicaenRenderer\Form\Contenu\ContenuForm; -use UnicaenRenderer\Form\Contenu\ContenuFormFactory; -use UnicaenRenderer\Form\Contenu\ContenuHydrator; -use UnicaenRenderer\Form\Contenu\ContenuHydratorFactory; +use UnicaenRenderer\Controller\TemplateController; +use UnicaenRenderer\Controller\TemplateControllerFactory; +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\Service\Contenu\ContenuService; -use UnicaenRenderer\Service\Contenu\ContenuServiceFactory; +use UnicaenRenderer\Service\Template\TemplateService; +use UnicaenRenderer\Service\Template\TemplateServiceFactory; use UnicaenPrivilege\Guard\PrivilegeController; use Zend\Router\Http\Literal; use Zend\Router\Http\Segment; @@ -18,7 +18,7 @@ return [ 'guards' => [ PrivilegeController::class => [ [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => [ 'index', 'afficher', @@ -28,7 +28,7 @@ return [ ], ], [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => [ 'ajouter', ], @@ -37,7 +37,7 @@ return [ ], ], [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => [ 'modifier', ], @@ -46,7 +46,7 @@ return [ ], ], [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => [ 'historiser', 'restaurer', @@ -56,7 +56,7 @@ return [ ], ], [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => [ 'detruire', ], @@ -77,9 +77,9 @@ return [ 'contenu' => [ 'pages' => [ 'contenu' => [ - 'label' => 'Contenu', - 'route' => 'contenu/contenu', - 'resource' => PrivilegeController::getResourceId(ContenuController::class, 'index'), + 'label' => 'Template', + 'route' => 'contenu/template', + 'resource' => PrivilegeController::getResourceId(TemplateController::class, 'index'), 'order' => 10001, ], ], @@ -98,9 +98,9 @@ return [ 'contenu' => [ 'type' => Literal::class, 'options' => [ - 'route' => '/contenu', + 'route' => '/template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'index', ], ], @@ -109,9 +109,9 @@ return [ 'afficher' => [ 'type' => Segment::class, 'options' => [ - 'route' => '/afficher/:contenu', + 'route' => '/afficher/:template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'afficher', ], ], @@ -121,7 +121,7 @@ return [ 'options' => [ 'route' => '/ajouter', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'ajouter', ], ], @@ -129,9 +129,9 @@ return [ 'modifier' => [ 'type' => Segment::class, 'options' => [ - 'route' => '/modifier/:contenu', + 'route' => '/modifier/:template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'modifier', ], ], @@ -139,9 +139,9 @@ return [ 'restaurer' => [ 'type' => Segment::class, 'options' => [ - 'route' => '/restaurer/:contenu', + 'route' => '/restaurer/:template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'restaurer', ], ], @@ -149,9 +149,9 @@ return [ 'historiser' => [ 'type' => Segment::class, 'options' => [ - 'route' => '/historiser/:contenu', + 'route' => '/historiser/:template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'historiser', ], ], @@ -159,9 +159,9 @@ return [ 'detruire' => [ 'type' => Segment::class, 'options' => [ - 'route' => '/detruire/:contenu', + 'route' => '/detruire/:template', 'defaults' => [ - 'controller' => ContenuController::class, + 'controller' => TemplateController::class, 'action' => 'detruire', ], ], @@ -175,22 +175,22 @@ return [ 'service_manager' => [ 'factories' => [ - ContenuService::class => ContenuServiceFactory::class, + TemplateService::class => TemplateServiceFactory::class, ], ], 'form_elements' => [ 'factories' => [ - ContenuForm::class => ContenuFormFactory::class, + TemplateForm::class => TemplateFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ - ContenuHydrator::class => ContenuHydratorFactory::class, + TemplateHydrator::class => TemplateHydratorFactory::class, ], ], 'controllers' => [ 'factories' => [ - ContenuController::class => ContenuControllerFactory::class, + TemplateController::class => TemplateControllerFactory::class, ] ], ]; diff --git a/src/UnicaenRenderer/Controller/ContenuController.php b/src/UnicaenRenderer/Controller/ContenuController.php deleted file mode 100755 index eec204ae530c5c964572b5692ac757f9967200fa..0000000000000000000000000000000000000000 --- a/src/UnicaenRenderer/Controller/ContenuController.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -namespace UnicaenRenderer\Controller; - -use UnicaenRenderer\Entity\Db\Content; -use UnicaenRenderer\Form\Contenu\ContenuFormAwareTrait; -use UnicaenRenderer\Service\Contenu\ContenuServiceAwareTrait; -use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait; -use Zend\Http\Request; -use Zend\Mvc\Controller\AbstractActionController; -use Zend\View\Model\ViewModel; - -class ContenuController extends AbstractActionController { - use ContenuServiceAwareTrait; - use MacroServiceAwareTrait; - use ContenuFormAwareTrait; - - 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' => $contenu, - ]); - } - - public function ajouterAction() - { - $contenu = new Content(); - - $form = $this->getContenuForm(); - $form->setAttribute('action', $this->url()->fromRoute('contenu/contenu/ajouter', [], [], true)); - $form->bind($contenu); - - $request = $this->getRequest(); - if ($request->isPost()) { - $data = $request->getPost(); - $form->setData($data); - if ($form->isValid()) { - $this->getContenuService()->create($contenu); - } - } - - $vm = new ViewModel(); - $vm->setTemplate('unicaen-renderer/contenu/modifier'); - $vm->setVariables([ - 'title' => "Création d'un contenu", - 'form' => $form, - ]); - return $vm; - } - - public function modifierAction() - { - $contenu = $this->getContenuService()->getRequestedContenu($this); - - $form = $this->getContenuForm(); - $form->setAttribute('action', $this->url()->fromRoute('contenu/contenu/modifier', ['contenu' => $contenu->getId()], [], true)); - $form->bind($contenu); - - $request = $this->getRequest(); - if ($request->isPost()) { - $data = $request->getPost(); - $form->setData($data); - if ($form->isValid()) { - $this->getContenuService()->update($contenu); - } - } - - return new ViewModel([ - 'title' => "Modification d'un contenu", - 'form' => $form, - ]); - } - - public function historiserAction() - { - $contenu = $this->getContenuService()->getRequestedContenu($this); - $this->getContenuService()->historise($contenu); - - return $this->redirect()->toRoute('contenu/contenu', [], [], true); - } - - public function restaurerAction() - { - $contenu = $this->getContenuService()->getRequestedContenu($this); - $this->getContenuService()->restore($contenu); - - return $this->redirect()->toRoute('contenu/contenu', [], [], true); - } - - public function detruireAction() - { - $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->getCode() . "]", - 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", - 'action' => $this->url()->fromRoute('contenu/contenu/detruire', ["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 deleted file mode 100755 index e9508989fbb29c852d554e63ac707eb8aa2169a1..0000000000000000000000000000000000000000 --- a/src/UnicaenRenderer/Controller/ContenuControllerFactory.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace UnicaenRenderer\Controller; - -use Interop\Container\ContainerInterface; -use UnicaenRenderer\Form\Contenu\ContenuForm; -use UnicaenRenderer\Service\Contenu\ContenuService; - -class ContenuControllerFactory { - - /** - * @param ContainerInterface $container - * @return ContenuController - */ - public function __invoke(ContainerInterface $container) - { - /** - * @var ContenuService $contenuService - */ - $contenuService = $container->get(ContenuService::class); - - /** - * @var ContenuForm $contentForm - */ - $contentForm = $container->get('FormElementManager')->get(ContenuForm::class); - - $controller = new ContenuController(); - $controller->setContenuService($contenuService); - $controller->setContenuForm($contentForm); - return $controller; - } -} \ No newline at end of file diff --git a/src/UnicaenRenderer/Controller/TemplateController.php b/src/UnicaenRenderer/Controller/TemplateController.php new file mode 100755 index 0000000000000000000000000000000000000000..a7e79d3b6929fae208d4446da0c7e98c5ddd6f57 --- /dev/null +++ b/src/UnicaenRenderer/Controller/TemplateController.php @@ -0,0 +1,127 @@ +<?php + +namespace UnicaenRenderer\Controller; + +use UnicaenRenderer\Entity\Db\Template; +use UnicaenRenderer\Form\Template\TemplateFormAwareTrait; +use UnicaenRenderer\Service\Template\TemplateServiceAwareTrait; +use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait; +use Zend\Http\Request; +use Zend\Mvc\Controller\AbstractActionController; +use Zend\View\Model\ViewModel; + +class TemplateController extends AbstractActionController { + use TemplateServiceAwareTrait; + use MacroServiceAwareTrait; + use TemplateFormAwareTrait; + + public function indexAction() + { + $templates = $this->getTemplateService()->getTemplates(); + + return new ViewModel([ + 'templates' => $templates, + ]); + } + + public function afficherAction() + { + $template = $this->getTemplateService()->getRequestedTemplate($this); + + return new ViewModel([ + 'title' => "Affichage du template", + 'contenu' => $template, + ]); + } + + public function ajouterAction() + { + $template = new Template(); + + $form = $this->getTemplateForm(); + $form->setAttribute('action', $this->url()->fromRoute('contenu/template/ajouter', [], [], true)); + $form->bind($template); + + $request = $this->getRequest(); + if ($request->isPost()) { + $data = $request->getPost(); + $form->setData($data); + if ($form->isValid()) { + $this->getTemplateService()->create($template); + } + } + + $vm = new ViewModel(); + $vm->setTemplate('unicaen-renderer/template/modifier'); + $vm->setVariables([ + 'title' => "Création d'un template", + 'form' => $form, + ]); + return $vm; + } + + public function modifierAction() + { + $template = $this->getTemplateService()->getRequestedTemplate($this); + + $form = $this->getTemplateForm(); + $form->setAttribute('action', $this->url()->fromRoute('contenu/template/modifier', ['template' => $template->getId()], [], true)); + $form->bind($template); + + $request = $this->getRequest(); + if ($request->isPost()) { + $data = $request->getPost(); + $form->setData($data); + if ($form->isValid()) { + $this->getTemplateService()->update($template); + } + } + + return new ViewModel([ + 'title' => "Modification d'un template", + 'form' => $form, + ]); + } + + public function historiserAction() + { + $template = $this->getTemplateService()->getRequestedTemplate($this); + $this->getTemplateService()->historise($template); + + return $this->redirect()->toRoute('contenu/template', [], [], true); + } + + public function restaurerAction() + { + $template = $this->getTemplateService()->getRequestedTemplate($this); + $this->getTemplateService()->restore($template); + + return $this->redirect()->toRoute('contenu/template', [], [], true); + } + + public function detruireAction() + { + $template = $this->getTemplateService()->getRequestedTemplate($this); + + /** @var Request $request */ + $request = $this->getRequest(); + if ($request->isPost()) { + $data = $request->getPost(); + if ($data["reponse"] === "oui") { + $this->getTemplateService()->delete($template); + } + exit(); + } + + $vm = new ViewModel(); + if ($template !== null) { + $vm->setTemplate('unicaen-renderer/default/confirmation'); + $vm->setVariables([ + 'title' => "Suppression du template [" . $template->getCode() . "]", + 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", + 'action' => $this->url()->fromRoute('contenu/template/detruire', ["template" => $template->getId()], [], true), + ]); + } + return $vm; + } +} \ No newline at end of file diff --git a/src/UnicaenRenderer/Controller/TemplateControllerFactory.php b/src/UnicaenRenderer/Controller/TemplateControllerFactory.php new file mode 100755 index 0000000000000000000000000000000000000000..6835813ad60a6a877ea3857e65d5ed18089a757c --- /dev/null +++ b/src/UnicaenRenderer/Controller/TemplateControllerFactory.php @@ -0,0 +1,32 @@ +<?php + +namespace UnicaenRenderer\Controller; + +use Interop\Container\ContainerInterface; +use UnicaenRenderer\Form\Template\TemplateForm; +use UnicaenRenderer\Service\Template\TemplateService; + +class TemplateControllerFactory { + + /** + * @param ContainerInterface $container + * @return TemplateController + */ + public function __invoke(ContainerInterface $container) + { + /** + * @var TemplateService $templateService + */ + $templateService = $container->get(TemplateService::class); + + /** + * @var TemplateForm $contentForm + */ + $contentForm = $container->get('FormElementManager')->get(TemplateForm::class); + + $controller = new TemplateController(); + $controller->setTemplateService($templateService); + $controller->setTemplateForm($contentForm); + return $controller; + } +} \ No newline at end of file diff --git a/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Content.dcm.xml b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Template.dcm.xml similarity index 96% rename from src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Content.dcm.xml rename to src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Template.dcm.xml index 227b17aa696e11427d8b5fe5bb5213aca4d939b0..98ec9c75495b893b8de3c7888a55f32dbf4ffbb7 100755 --- a/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Content.dcm.xml +++ b/src/UnicaenRenderer/Entity/Db/Mapping/UnicaenRenderer.Entity.Db.Template.dcm.xml @@ -1,6 +1,6 @@ <?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\Content" table="unicaen_renderer_content"> + <entity name="UnicaenRenderer\Entity\Db\Template" table="unicaen_renderer_template"> <id name="id" column="id" type="integer"> <generator strategy="IDENTITY"/> diff --git a/src/UnicaenRenderer/Entity/Db/Content.php b/src/UnicaenRenderer/Entity/Db/Template.php similarity index 76% rename from src/UnicaenRenderer/Entity/Db/Content.php rename to src/UnicaenRenderer/Entity/Db/Template.php index 7f4445e18ae847cf9cca9d77df12f9b05c136605..bd02c4a0b1eac58e23c738cfef8f493242063662 100755 --- a/src/UnicaenRenderer/Entity/Db/Content.php +++ b/src/UnicaenRenderer/Entity/Db/Template.php @@ -5,7 +5,7 @@ namespace UnicaenRenderer\Entity\Db; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\HistoriqueAwareTrait; -class Content implements HistoriqueAwareInterface { +class Template implements HistoriqueAwareInterface { use HistoriqueAwareTrait; const TYPE_TXT = 'texte'; @@ -37,9 +37,9 @@ class Content implements HistoriqueAwareInterface { /** * @param int $id - * @return Content + * @return Template */ - public function setId(int $id) : Content + public function setId(int $id) : Template { $this->id = $id; return $this; @@ -55,9 +55,9 @@ class Content implements HistoriqueAwareInterface { /** * @param string|null $code - * @return Content + * @return Template */ - public function setCode(?string $code) : Content + public function setCode(?string $code) : Template { $this->code = $code; return $this; @@ -73,9 +73,9 @@ class Content implements HistoriqueAwareInterface { /** * @param string|null $description - * @return Content + * @return Template */ - public function setDescription(?string $description) : Content + public function setDescription(?string $description) : Template { $this->description = $description; return $this; @@ -91,9 +91,9 @@ class Content implements HistoriqueAwareInterface { /** * @param string|null $type - * @return Content + * @return Template */ - public function setType(?string $type) : Content + public function setType(?string $type) : Template { $this->type = $type; return $this; @@ -109,9 +109,9 @@ class Content implements HistoriqueAwareInterface { /** * @param string|null $complement - * @return Content + * @return Template */ - public function setComplement(?string $complement) : Content + public function setComplement(?string $complement) : Template { $this->complement = $complement; return $this; @@ -120,16 +120,16 @@ class Content implements HistoriqueAwareInterface { /** * @return string */ - public function getContent() : ?string + public function getTemplate() : ?string { return $this->content; } /** * @param string|null $content - * @return Content + * @return Template */ - public function setContent(?string $content) : Content + public function setTemplate(?string $content) : Template { $this->content = $content; return $this; @@ -145,9 +145,9 @@ class Content implements HistoriqueAwareInterface { /** * @param string|null $css - * @return Content + * @return Template */ - public function setCss(?string $css): Content + public function setCss(?string $css): Template { $this->css = $css; return $this; diff --git a/src/UnicaenRenderer/Form/Contenu/ContenuFormAwareTrait.php b/src/UnicaenRenderer/Form/Contenu/ContenuFormAwareTrait.php deleted file mode 100755 index a42dcacc901baabefd2aee9421cc89b3cae1863a..0000000000000000000000000000000000000000 --- a/src/UnicaenRenderer/Form/Contenu/ContenuFormAwareTrait.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace UnicaenRenderer\Form\Contenu; - -trait ContenuFormAwareTrait { - - /** @var ContenuForm */ - private $contenuForm; - - /** - * @return ContenuForm - */ - public function getContenuForm(): ContenuForm - { - return $this->contenuForm; - } - - /** - * @param ContenuForm $contenuForm - * @return ContenuForm - */ - public function setContenuForm(ContenuForm $contenuForm) - { - $this->contenuForm = $contenuForm; - return $this->contenuForm; - } - -} \ No newline at end of file diff --git a/src/UnicaenRenderer/Form/Contenu/ContenuHydratorFactory.php b/src/UnicaenRenderer/Form/Contenu/ContenuHydratorFactory.php deleted file mode 100755 index 40a9e4d102bc8517953c55904355097f97ad644f..0000000000000000000000000000000000000000 --- a/src/UnicaenRenderer/Form/Contenu/ContenuHydratorFactory.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace UnicaenRenderer\Form\Contenu; - -use Interop\Container\ContainerInterface; - -class ContenuHydratorFactory { - - /** - * @param ContainerInterface $container - * @return ContenuHydrator - */ - public function __invoke(ContainerInterface $container) - { - $hydrator = new ContenuHydrator(); - return $hydrator; - } - -} \ No newline at end of file diff --git a/src/UnicaenRenderer/Form/Contenu/ContenuForm.php b/src/UnicaenRenderer/Form/Template/TemplateForm.php similarity index 90% rename from src/UnicaenRenderer/Form/Contenu/ContenuForm.php rename to src/UnicaenRenderer/Form/Template/TemplateForm.php index d359df857a53a1f02fdaa1a0db2768873780b413..96f3afc520c4b2a6130e708095eee770177a48e6 100755 --- a/src/UnicaenRenderer/Form/Contenu/ContenuForm.php +++ b/src/UnicaenRenderer/Form/Template/TemplateForm.php @@ -1,9 +1,9 @@ <?php -namespace UnicaenRenderer\Form\Contenu; +namespace UnicaenRenderer\Form\Template; use UnicaenApp\Service\EntityManagerAwareTrait; -use UnicaenRenderer\Entity\Db\Content; +use UnicaenRenderer\Entity\Db\Template; use UnicaenRenderer\Entity\Db\Macro; use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait; use Zend\Form\Element\Button; @@ -14,7 +14,7 @@ use Zend\Form\Form; use Zend\InputFilter\Factory; use Zend\Validator\Callback; -class ContenuForm extends Form { +class TemplateForm extends Form { use EntityManagerAwareTrait; use MacroServiceAwareTrait; @@ -51,9 +51,9 @@ class ContenuForm extends Form { 'label' => 'Type * : ', 'empty_option' => "Sélectionner un type de contenu", 'value_options' => [ - Content::TYPE_PDF => "Fichier PDF", - Content::TYPE_TXT => "Contenu textuel", - Content::TYPE_MAIL => "Courrier électronique", + Template::TYPE_PDF => "Fichier PDF", + Template::TYPE_TXT => "Template textuel", + Template::TYPE_MAIL => "Courrier électronique", ], ], ]); @@ -87,18 +87,18 @@ class ContenuForm extends Form { 'class' => 'form-control complement', ] ]); - //contenu + //template $this->add([ - 'name' => 'contenu', + 'name' => 'template', 'type' => 'textarea', 'options' => [ - 'label' => 'Contenu * : ', + 'label' => 'Template * : ', 'label_attributes' => [ 'class' => 'control-label', ], ], 'attributes' => [ - 'id' => 'contenu', + 'id' => 'template', 'class' => 'form-control contenu', ] ]); @@ -144,7 +144,7 @@ class ContenuForm extends Form { ], 'callback' => function ($value, $context = []) { if($value == $context['old-code']) return true; - return ($this->getEntityManager()->getRepository(Macro::class)->findOneBy(['code'=>$value],[]) == null); + return ($this->getEntityManager()->getRepository(Template::class)->findOneBy(['code'=>$value],[]) == null); }, //'break_chain_on_failure' => true, ], diff --git a/src/UnicaenRenderer/Form/Template/TemplateFormAwareTrait.php b/src/UnicaenRenderer/Form/Template/TemplateFormAwareTrait.php new file mode 100755 index 0000000000000000000000000000000000000000..dc7ee5371cbc0769268fd2c85ccd703955a2bb99 --- /dev/null +++ b/src/UnicaenRenderer/Form/Template/TemplateFormAwareTrait.php @@ -0,0 +1,28 @@ +<?php + +namespace UnicaenRenderer\Form\Template; + +trait TemplateFormAwareTrait { + + /** @var TemplateForm */ + private $templateForm; + + /** + * @return TemplateForm + */ + public function getTemplateForm(): TemplateForm + { + return $this->templateForm; + } + + /** + * @param TemplateForm $templateForm + * @return TemplateForm + */ + public function setTemplateForm(TemplateForm $templateForm) + { + $this->templateForm = $templateForm; + return $this->templateForm; + } + +} \ No newline at end of file diff --git a/src/UnicaenRenderer/Form/Contenu/ContenuFormFactory.php b/src/UnicaenRenderer/Form/Template/TemplateFormFactory.php similarity index 71% rename from src/UnicaenRenderer/Form/Contenu/ContenuFormFactory.php rename to src/UnicaenRenderer/Form/Template/TemplateFormFactory.php index 3be9f1e66e9efc7a131df4efc15da5db00ba0e17..f811ad02179180380ccd0cdc79f476957638ac5c 100755 --- a/src/UnicaenRenderer/Form/Contenu/ContenuFormFactory.php +++ b/src/UnicaenRenderer/Form/Template/TemplateFormFactory.php @@ -1,16 +1,16 @@ <?php -namespace UnicaenRenderer\Form\Contenu; +namespace UnicaenRenderer\Form\Template; use Doctrine\ORM\EntityManager; use Interop\Container\ContainerInterface; use UnicaenRenderer\Service\Macro\MacroService; -class ContenuFormFactory { +class TemplateFormFactory { /** * @param ContainerInterface $container - * @return ContenuForm + * @return TemplateForm */ public function __invoke(ContainerInterface $container) { @@ -21,10 +21,10 @@ class ContenuFormFactory { $entityManager = $container->get('doctrine.entitymanager.orm_default'); $macroService = $container->get(MacroService::class); - /** @var ContenuHydrator $hydrator */ - $hydrator = $container->get('HydratorManager')->get(ContenuHydrator::class); + /** @var TemplateHydrator $hydrator */ + $hydrator = $container->get('HydratorManager')->get(TemplateHydrator::class); - $form = new ContenuForm(); + $form = new TemplateForm(); $form->setEntityManager($entityManager); $form->setMacroService($macroService); $form->setHydrator($hydrator); diff --git a/src/UnicaenRenderer/Form/Contenu/ContenuHydrator.php b/src/UnicaenRenderer/Form/Template/TemplateHydrator.php similarity index 75% rename from src/UnicaenRenderer/Form/Contenu/ContenuHydrator.php rename to src/UnicaenRenderer/Form/Template/TemplateHydrator.php index 37aacd30e9690f98d9b4fa76ea2cbab6164a8bb2..17522a4b5fdbcce938dd6b6d457e28de967558d6 100755 --- a/src/UnicaenRenderer/Form/Contenu/ContenuHydrator.php +++ b/src/UnicaenRenderer/Form/Template/TemplateHydrator.php @@ -1,14 +1,14 @@ <?php -namespace UnicaenRenderer\Form\Contenu; +namespace UnicaenRenderer\Form\Template; -use UnicaenRenderer\Entity\Db\Content; +use UnicaenRenderer\Entity\Db\Template; use Zend\Hydrator\HydratorInterface; -class ContenuHydrator implements HydratorInterface { +class TemplateHydrator implements HydratorInterface { /** - * @param Content $object + * @param Template $object * @return array */ public function extract($object) @@ -18,7 +18,7 @@ class ContenuHydrator implements HydratorInterface { 'type' => ($object)?$object->getType():null, 'description' => ($object)?$object->getDescription():null, 'complement' => ($object)?$object->getComplement():null, - 'contenu' => ($object)?$object->getContent():null, + 'template' => ($object)?$object->getTemplate():null, 'css' => ($object)?$object->getCss():null, ]; @@ -26,9 +26,9 @@ class ContenuHydrator implements HydratorInterface { } /** - * @param Content $object + * @param Template $object * @param array $data - * @return Content + * @return Template */ public function hydrate(array $data, $object) { @@ -36,14 +36,14 @@ class ContenuHydrator implements HydratorInterface { $type = (isset($data['type']) AND trim($data['type']) !== "")?trim($data['type']):null; $description = (isset($data['description']) AND trim($data['description']) !== "")?trim($data['description']):null; $complement = (isset($data['complement']) AND trim($data['complement']) !== "")?strip_tags(trim($data['complement'])):null; - $contenu = (isset($data['contenu']) AND trim($data['contenu']) !== "")?trim($data['contenu']):null; + $template = (isset($data['template']) AND trim($data['template']) !== "")?trim($data['template']):null; $css = (isset($data['css']) AND trim($data['css']) !== "")?strip_tags(trim($data['css'])):null; $object->setCode($code); $object->setType($type); $object->setDescription($description); $object->setComplement($complement); - $object->setContent($contenu); + $object->setTemplate($contenu); $object->setCss($css); return $object; diff --git a/src/UnicaenRenderer/Form/Template/TemplateHydratorFactory.php b/src/UnicaenRenderer/Form/Template/TemplateHydratorFactory.php new file mode 100755 index 0000000000000000000000000000000000000000..2044d117f6eb2d9e92f6c1c17a561793f43195ab --- /dev/null +++ b/src/UnicaenRenderer/Form/Template/TemplateHydratorFactory.php @@ -0,0 +1,19 @@ +<?php + +namespace UnicaenRenderer\Form\Template; + +use Interop\Container\ContainerInterface; + +class TemplateHydratorFactory { + + /** + * @param ContainerInterface $container + * @return TemplateHydrator + */ + public function __invoke(ContainerInterface $container) : TemplateHydrator + { + $hydrator = new TemplateHydrator(); + return $hydrator; + } + +} \ No newline at end of file diff --git a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php b/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php index 1dc262d32d23679a72ce320edde3e976d316e9b7..545b32a41bb0af58a82d64be6e25d1d45ca2cb62 100755 --- a/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php +++ b/src/UnicaenRenderer/Provider/Privilege/DocumentcontentPrivileges.php @@ -2,10 +2,19 @@ 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'; diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php b/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php deleted file mode 100755 index daef379018a24268d728e487505bd72747839805..0000000000000000000000000000000000000000 --- a/src/UnicaenRenderer/Service/Contenu/ContenuServiceAwareTrait.php +++ /dev/null @@ -1,28 +0,0 @@ -<?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/Macro/MacroService.php b/src/UnicaenRenderer/Service/Macro/MacroService.php index dac741b8527a84b4e2254ebf755141586ea20954..6d48141fe9cfd35734622db2da00d9b0f4064c7d 100755 --- a/src/UnicaenRenderer/Service/Macro/MacroService.php +++ b/src/UnicaenRenderer/Service/Macro/MacroService.php @@ -186,7 +186,7 @@ class MacroService { if (isset($variables[$macro->getVariable()]) === true) { if (method_exists($variables[$macro->getVariable()], $macro->getMethode()) === true) { $texte = $variables[$macro->getVariable()]->{$macro->getMethode()}(); - return $texte; + return ($texte)?:""; } return "<span style='color:darkred;'> Méthode [".$macro->getMethode()."] non trouvée </span>"; } diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuService.php b/src/UnicaenRenderer/Service/Template/TemplateService.php similarity index 53% rename from src/UnicaenRenderer/Service/Contenu/ContenuService.php rename to src/UnicaenRenderer/Service/Template/TemplateService.php index 3a8e18cc3b2fb034554059d1186aab2b1c032214..7457560f9913242a2e537bc02aef7a11c78427eb 100755 --- a/src/UnicaenRenderer/Service/Contenu/ContenuService.php +++ b/src/UnicaenRenderer/Service/Template/TemplateService.php @@ -1,95 +1,95 @@ <?php -namespace UnicaenRenderer\Service\Contenu; +namespace UnicaenRenderer\Service\Template; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\ORMException; use Doctrine\ORM\QueryBuilder; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; -use UnicaenRenderer\Entity\Db\Content; +use UnicaenRenderer\Entity\Db\Template; use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait; use Zend\Mvc\Controller\AbstractActionController; -class ContenuService { +class TemplateService { use EntityManagerAwareTrait; use MacroServiceAwareTrait; /** GESTION DES ENTITES *******************************************************************************************/ /** - * @param Content $content - * @return Content + * @param Template $template + * @return Template */ - public function create(Content $content) : Content + public function create(Template $template) : Template { try { - $this->getEntityManager()->persist($content); - $this->getEntityManager()->flush($content); + $this->getEntityManager()->persist($template); + $this->getEntityManager()->flush($template); } catch (ORMException $e) { - throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD.", $e); + throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD du Template.", $e); } - return $content; + return $template; } /** - * @param Content $content - * @return Content + * @param Template $template + * @return Template */ - public function update(Content $content) : Content + public function update(Template $template) : Template { try { - $this->getEntityManager()->flush($content); + $this->getEntityManager()->flush($template); } catch (ORMException $e) { - throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD.", $e); + throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD du Template.", $e); } - return $content; + return $template; } /** - * @param Content $content - * @return Content + * @param Template $template + * @return Template */ - public function historise(Content $content) : Content + public function historise(Template $template) : Template { try { - $content->historiser(); - $this->getEntityManager()->flush($content); + $template->historiser(); + $this->getEntityManager()->flush($template); } catch (ORMException $e) { - throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD.", $e); + throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD du Template.", $e); } - return $content; + return $template; } /** - * @param Content $content - * @return Content + * @param Template $template + * @return Template */ - public function restore(Content $content) : Content + public function restore(Template $template) : Template { try { - $content->dehistoriser(); - $this->getEntityManager()->flush($content); + $template->dehistoriser(); + $this->getEntityManager()->flush($template); } catch (ORMException $e) { - throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD.", $e); + throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD du Template.", $e); } - return $content; + return $template; } /** - * @param Content $content - * @return Content + * @param Template $template + * @return Template */ - public function delete(Content $content) : Content + public function delete(Template $template) : Template { try { - $this->getEntityManager()->remove($content); - $this->getEntityManager()->flush($content); + $this->getEntityManager()->remove($template); + $this->getEntityManager()->flush($template); } catch (ORMException $e) { - throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD.", $e); + throw new RuntimeException("Un problème est survenue lors de l'enregistrement en BD du Template.", $e); } - return $content; + return $template; } /** REQUETAGE *****************************************************************************************************/ @@ -99,7 +99,7 @@ class ContenuService { */ public function createQueryBuilder() : QueryBuilder { - $qb = $this->getEntityManager()->getRepository(Content::class)->createQueryBuilder('contenu') + $qb = $this->getEntityManager()->getRepository(Template::class)->createQueryBuilder('template') ; return $qb; @@ -108,12 +108,12 @@ class ContenuService { /** * @param string $champ * @param string $ordre - * @return Content[] + * @return Template[] */ - public function getContenus(string $champ = 'code', string $ordre = 'ASC') : array + public function getTemplates(string $champ = 'code', string $ordre = 'ASC') : array { $qb = $this->createQueryBuilder() - ->orderBy('contenu.' . $champ, $ordre) + ->orderBy('template.' . $champ, $ordre) ; $result = $qb->getQuery()->getResult(); @@ -122,38 +122,41 @@ class ContenuService { /** * @param int|null $id - * @return Content|null + * @return Template|null */ - public function getContenu(?int $id) : ?Content + public function getTemplate(?int $id) : ?Template { $qb = $this->createQueryBuilder() - ->andWhere('contenu.id = :id') + ->andWhere('tempalte.id = :id') ->setParameter('id', $id) ; try { $result = $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { - throw new RuntimeException("Plusieurs Content partagent le même id [".$id."]"); + throw new RuntimeException("Plusieurs Template partagent le même id [".$id."]"); } return $result; } /** * @param string $code - * @return Content|null + * @return Template|null */ - public function getContenuByCode(string $code) : ?Content + public function getTemplateByCode(string $code) : ?Template { $qb = $this->createQueryBuilder() - ->andWhere('contenu.code = :code') + ->andWhere('template.code = :code') ->setParameter('code', $code) ; try { $result = $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { - throw new RuntimeException("Plusieurs Content partagent le même code [".$code."]"); + throw new RuntimeException("Plusieurs Template partagent le même code [".$code."]"); + } + if ($result === null) { + throw new RuntimeException("Aucun Template pour le code [".$code."]"); } return $result; } @@ -161,12 +164,12 @@ class ContenuService { /** * @param AbstractActionController $controller * @param string $param - * @return Content|null + * @return Template|null */ - public function getRequestedContenu(AbstractActionController $controller, string $param='contenu') : ?Content + public function getRequestedTemplate(AbstractActionController $controller, string $param='template') : ?Template { $id = $controller->params()->fromRoute($param); - $result = $this->getContenu($id); + $result = $this->getTemplate($id); return $result; } @@ -194,37 +197,37 @@ class ContenuService { } /** - * @param Content $contenu + * @param Template $template * @param array $variables * @return string */ - public function generateComplement(Content $contenu, array $variables) : string + public function generateComplement(Template $template, array $variables) : string { - return $this->replaceMacros($contenu->getComplement(), $variables); + return $this->replaceMacros($template->getComplement(), $variables); } /** - * @param Content $contenu + * @param Template $template * @param array $variables * @return string */ - public function generateContenu(Content $contenu, array $variables) : string + public function generateContenu(Template $template, array $variables) : string { $texte = "<style>"; - $texte .= $contenu->getCss(); + $texte .= $template->getCss(); $texte .= "</style>"; - $texte .= $this->replaceMacros($contenu->getContent(), $variables); + $texte .= $this->replaceMacros($template->getContent(), $variables); return $texte; } /** - * @param Content $contenu + * @param Template $template * @param array $variables * @return string */ - public function generateTitre(Content $contenu, array $variables) : string + public function generateTitre(Template $template, array $variables) : string { - return $this->replaceMacros($contenu->getComplement(), $variables); + return $this->replaceMacros($template->getComplement(), $variables); } } \ No newline at end of file diff --git a/src/UnicaenRenderer/Service/Template/TemplateServiceAwareTrait.php b/src/UnicaenRenderer/Service/Template/TemplateServiceAwareTrait.php new file mode 100755 index 0000000000000000000000000000000000000000..d9fbcaae9125f7b192722edce41be579acd9a2c1 --- /dev/null +++ b/src/UnicaenRenderer/Service/Template/TemplateServiceAwareTrait.php @@ -0,0 +1,28 @@ +<?php + +namespace UnicaenRenderer\Service\Template; + +trait TemplateServiceAwareTrait { + + /** @var TemplateService */ + private $templateService; + + /** + * @return TemplateService + */ + public function getTemplateService() : TemplateService + { + return $this->templateService; + } + + /** + * @param TemplateService $templateService + * @return TemplateService + */ + public function setTemplateService(TemplateService $templateService) : TemplateService + { + $this->templateService = $templateService; + return $this->templateService; + } + +} \ No newline at end of file diff --git a/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php b/src/UnicaenRenderer/Service/Template/TemplateServiceFactory.php similarity index 72% rename from src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php rename to src/UnicaenRenderer/Service/Template/TemplateServiceFactory.php index ebf8e40a9e8c2d67357f494226241528b84e782f..e8cafb60dd489324169fc8b4882f09ddb99f8d1c 100755 --- a/src/UnicaenRenderer/Service/Contenu/ContenuServiceFactory.php +++ b/src/UnicaenRenderer/Service/Template/TemplateServiceFactory.php @@ -1,18 +1,18 @@ <?php -namespace UnicaenRenderer\Service\Contenu; +namespace UnicaenRenderer\Service\Template; use Doctrine\ORM\EntityManager; use Interop\Container\ContainerInterface; use UnicaenRenderer\Service\Macro\MacroService; -class ContenuServiceFactory { +class TemplateServiceFactory { /** * @param ContainerInterface $container - * @return ContenuService + * @return TemplateService */ - public function __invoke(ContainerInterface $container) : ContenuService + public function __invoke(ContainerInterface $container) : TemplateService { /** * @var EntityManager $entityManager @@ -21,7 +21,7 @@ class ContenuServiceFactory { $entityManager = $container->get('doctrine.entitymanager.orm_default'); $macroService = $container->get(MacroService::class); - $service = new ContenuService(); + $service = new TemplateService(); $service->setEntityManager($entityManager); $service->setMacroService($macroService); return $service; diff --git a/view/unicaen-renderer/contenu/index.phtml b/view/unicaen-renderer/contenu/index.phtml index ded30d8c3ab4ad7d95675084880c437594ca677a..f5829bdae036efc04c1387a8e65e622f500a64fd 100755 --- a/view/unicaen-renderer/contenu/index.phtml +++ b/view/unicaen-renderer/contenu/index.phtml @@ -13,6 +13,7 @@ $canAfficher = $this->isAllowed(DocumentcontentPrivileges::getResourceId(Docum $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"); ?> diff --git a/view/unicaen-renderer/contenu/modifier.phtml b/view/unicaen-renderer/contenu/modifier.phtml index 67bf9f707de619949f8f06cd70d002be21191d99..444434d13bdf1d3ad10ff2e88e22f3487359818b 100755 --- a/view/unicaen-renderer/contenu/modifier.phtml +++ b/view/unicaen-renderer/contenu/modifier.phtml @@ -29,10 +29,10 @@ use UnicaenRenderer\Form\Contenu\ContenuForm; tinymce.remove(); tinymce.init({ selector: '.description', - toolbar: 'newdocument undo redo | bold italic | bullist', + plugins: 'lists template', + toolbar: 'newdocument undo redo | bold italic | bullist ', resize: true, language: 'fr_FR', - plugins: 'lists template', templates: macros, statusbar: true, browser_spellcheck: true, @@ -65,11 +65,12 @@ use UnicaenRenderer\Form\Contenu\ContenuForm; }); tinymce.init({ selector: '.contenu', - toolbar: 'newdocument undo redo | bold italic | bullist | alignjustify alignleft alignright aligncenter | formatselect template', + menubar: 'table', + toolbar: 'newdocument undo redo | bold italic | bullist table | alignjustify alignleft alignright aligncenter | formatselect template', block_formats: 'Normal=p;Titre 1=h1;Titre 2=h2;Titre 3=h3', resize: true, language: 'fr_FR', - plugins: 'lists template', + plugins: 'lists template table', templates: macros, statusbar: true, browser_spellcheck: true,