Loading code/GenerateRubrique.php 0 → 100644 +440 −0 Original line number Diff line number Diff line <?php // Assume that all external field ended by _ID use UnicaenCode\Form\ElementMaker; use UnicaenCode\Util; /** * @var $this \Zend\View\Renderer\PhpRenderer * @var $controller \Zend\Mvc\Controller\AbstractController * @var $viewName string */ ?> <h1>Création d'une rubrique dans un menu</h1> <h3>Etape 1 : Paramétrage</h3> <?php $form = new \Zend\Form\Form(); $em = $controller->getServiceLocator()->get('Doctrine\ORM\EntityManager'); $conn = $em->getConnection(); $sm = $conn->getSchemaManager(); $tables = $sm->listTableNames(); sort($tables); $val = []; $form->add([ 'type' => 'Zend\Form\Element\Select', 'name' => 'tables', 'options' => [ 'label' => 'Tables', ], ]); foreach ($tables as $tbl) { $val[$tbl] = $tbl; } $form->get('tables')->setValueOptions($val); $form->add([ 'type' => 'Zend\Form\Element\Select', 'name' => 'menus', 'options' => [ 'label' => 'Menu', 'value_options' => [ 'Administration' => 'Administration', 'Gestion' => 'Gestion', ], ], ]); $form->add([ 'type' => 'Zend\Form\Element\Text', 'name' => 'Origine', 'options' => [ 'label' => 'Rep Web', ] ]); $form->get('Origine')->setValue('/var/www/OSE/'); $form->add(ElementMaker::checkbox( 'classe-privilege', 'Privilège existant ?', true )); $form->add(ElementMaker::checkbox( 'non-remplacement', 'Ne pas générer fichier déjà existant ?', true )); $form->add(ElementMaker::submit('generate', 'Générer le code')); $form->setData($controller->getRequest()->getPost()); Util::displayForm($form); if (($controller->getRequest()->isPost()) && ($form->isValid())) { $baseOrig = $form->get('Origine')->getValue() . 'module/Application/'; $nom = $form->get('tables')->getValue(); $basefs = '/var/www/Web/module/Application/'; $nomsous = strtoupper($nom); $nomvisu = $nomsous . "_VISUALISATION"; $nomedit = $nomsous . "_EDITION"; if (!$form->get('classe-privilege')->getValue()) { $nomvisu = 'DROIT_PRIVILEGE_EDITION'; $nomedit = 'DROIT_PRIVILEGE_VISUALISATION'; } $nonRemplace = $form->get('non-remplacement')->getValue(); $nomtiret = $nomm = strtolower($nom); $nomtiret = str_replace('_', '-', $nomtiret); $nomm = preg_replace_callback('/_\w/', function ($m) { return strtoupper($m[0]); }, $nomm); $nommaj = preg_replace_callback('/^\w/', function ($m) { return strtoupper($m[0]); }, $nomm); $nomphrase = str_replace('_', ' ', $nommaj); $nomm = str_replace('_', '', $nomm); $nommaj = str_replace('_', '', $nommaj); /** * $col Doctrine\DBAL\Schema\Column */ $nomChamps = []; $typeChamps = []; $lgChamps = []; $listeChamps = []; $notnullChamps = []; $defaultChamps = []; $result = []; // résultat d'exec $nbe = 0; if (empty($nom)) die(''); $columns = $sm->listTableColumns($nom); foreach ($columns as $col) { $nchp = $col->getName(); $notnullChamps[$nbe] = $col->getNotnull(); $defaultChamps[$nbe] = $col->getDefault(); if (!preg_match('/^HISTO_/', $nchp)) { $nomChamps[$nbe] = $nchp; if (preg_match('/_ID$/', $nchp)) { $listeChamps[$nbe] = $nomChamps[$nbe] = preg_replace('/_ID$/', '', $nchp); if (preg_match('/^ANNEE_/', $nchp)) $listeChamps[$nbe] = 'ANNEE'; } else $listeChamps[$nbe] = ''; $typeChamps[$nbe] = $col->getType()->getName(); $lgChamps[$nbe] = $col->getLength(); if (($typeChamps[$nbe] == 'integer') || ($typeChamps[$nbe] == 'float')) { $lgChamps[$nbe] = $col->getPrecision(); if ($lgChamps[$nbe] == 1) $typeChamps[$nbe] = 'boolean'; } $nbe++; } } if (file_exists('/var/www/Web')) { exec("rm -rf /var/www/Web/*", $stdout, $err); } else { mkdir('/var/www/Web',0770) or die('Vous devez créer un sous répertoire /var/www/Web avec les droits d\'écriture! pour l\'utilisateur www-data<BR>'); } // $res = shell_exec("Web/module/Application"); //echo "res:$res<BR>"; // mise en place des champs $txt0 = $txt01 = $txt4 = $txt41 = $txt42 = $txt43 = $txt44 = $txt45 = $txt5 = $txt53 = $txt6 = $txt7 = ''; // chargement des pseudos fichiers $tblInclude=array( 'champInput','champListe','config_php','controller_php','idx1','idx3','idx20','saisie_phtml', 'saisieFormAwareTrait_php','service_php','serviceTrait_php' ); $i=0; foreach ($tblInclude as $ci){ ${$ci}=file_get_contents(__DIR__.'/template/GenerateRubrique/'.$ci); } $extractInput = '\'champtiret\' => $object->getchampmaj() ,'; $extractListe = '\'champtiret\' => ($s = $object->getchampmaj()) ? $s->getId() : null, '; $hydrateInput = '$object->setchampmaj($data[\'champtiret\']); '; $hydrateListe = 'if (array_key_exists(\'champtiret\', $data)) { $object->setchampmaj($this->getServicechampmaj()->get($data[\'champtiret\'])); } '; $idx21 = " <th style=\"word-wrap: break-word ; \">champphrase</th>\n"; $idx2 = ' <td style="word-wrap: break-word ; "><?= $fr->getchampmaj() ?></td>' . "\n"; $service10 = " use Application\Service\Traits\champmajServiceAwareTrait;\n"; $service11 = " use champmajServiceAwareTrait;\n"; $fic10 = '/** * Description of nommajSaisieForm * * @author ZVENIGOROSKY Alexandre <alexandre.zvenigorosky@unicaen.fr> */ class nommajSaisieForm extends AbstractForm { '; $fic11 = ' public function init() { $hydrator = new nommajHydrator(); $this->setHydrator($hydrator); $this->setAttribute(\'action\', $this->getCurrentUrl()); '; $fic1 = '<?php namespace Application\Form\nommaj; use Application\Form\AbstractForm; use Zend\Form\Element\Csrf; use Zend\Stdlib\Hydrator\HydratorInterface; '; $fic2 = ' $this->add(new Csrf(\'security\')); $this->add([ \'name\' => \'submit\', \'type\' => \'Submit\', \'attributes\' => [ \'value\' => "Enregistrer", \'class\' => \'btn btn-primary\', ], ]); return $this; } /** * Should return an array specification compatible with * {@link Zend\InputFilter\Factory::createInputFilter()}. * * @return array */ public function getInputFilterSpecification() { return ['; $fic21 = ' ]; } } class nommajHydrator implements HydratorInterface { '; $listeEnteteHydrator = 'use champmajServiceAwareTrait; '; $fic22 = ' /** * Hydrate $object with the provided $data. * * @param array $data * @param \Application\Entity\Db\nommaj $object * * @return object */ public function hydrate(array $data, $object) { '; $inputFilter = ' \'champtiret\' => [ \'required\' => true, ], '; $fic3 = ' return $object; } /** * Extract values from an object * * @param \Application\Entity\Db\nommaj $object * * @return array */ public function extract($object) { $data = [ '; $fic4 = ' ]; return $data; } } '; for ($i = 0; $i < $nbe; $i++) { $champ = $nomChamps[$i]; $champsous = strtoupper($champ); $champtiret = $champm = strtolower($champ); $champtiret = str_replace('_', '-', $champtiret); $champm = preg_replace_callback('/_\w/', function ($m) { return strtoupper($m[0]); }, $champm); $champmaj = preg_replace_callback('/^\w/', function ($m) { return strtoupper($m[0]); }, $champm); $champphrase = str_replace('_', ' ', $champmaj); $champm = str_replace('_', '', $champm); $champmaj = str_replace('_', '', $champmaj); # input:champInput.txt listeInput.txt ... if (($i) && ($notnullChamps[$i])) { $txt = str_replace('champtiret', $champtiret, $inputFilter); $txt6 .= $txt; } if ($champtiret != 'id'){ $txt52 = str_replace('champphrase', $champphrase, $idx21); $txt53 .= $txt52; } if (!$listeChamps[$i]) { $champType = 'Text'; if ($typeChamps[$i] == 'String') $champType = 'Text'; if ($typeChamps[$i] == 'boolean') $champType = 'Checkbox'; if ($champtiret != 'id'){ $txt51 = str_replace('champmaj', $champmaj, $idx2); $txt5 .= $txt51; } if ($champtiret != 'id') { $txt = str_replace(['champtiret', 'champphrase', $champType], [$champtiret, $champphrase, $champType], $champInput); $txt4 .= $txt; } if ($champtiret != 'id') { $txt = str_replace('champtiret', $champtiret, $hydrateInput); $txt = str_replace('champmaj', $champmaj, $txt); $txt41 .= $txt; } $txt = str_replace('champtiret', $champtiret, $extractInput); $txt = str_replace('champmaj', $champmaj, $txt); $txt42 .= $txt; } else { $txt51 = str_replace('champmaj', $champmaj, $idx2); $txt52 = str_replace('champphrase', $champphrase, $idx21); $txt5 .= $txt51; $txt52 .= $txt53; $txt = str_replace('champmaj', $champmaj, $service10); $txt0 .= $txt; $txt = str_replace('champmaj', $champmaj, $service11); $txt01 .= $txt; $txt = str_replace(['champtiret', 'champphrase', 'champmaj'], [$champtiret, $champphrase, $champmaj], $champListe); if ($notnullChamps[$i]){ $txt=str_replace(' ->setEmptyOption("(Aucun)")','',$txt); } $txt43 .= $txt; $txt = str_replace(['champtiret', 'champmaj'], [$champtiret, $champmaj], $hydrateListe); $txt44 .= $txt; $txt = str_replace(['champtiret', 'champmaj'], [$champtiret, $champmaj], $extractListe); $txt45 .= $txt; $txt = str_replace('champmaj', $champmaj, $listeEnteteHydrator); $txt7 .= $txt; } } $saisieForm_php = $fic1 . $txt0 . $fic10 . $txt01 . $fic11 . $txt4 . $txt43 . $fic2 . $txt6 . $fic21 . $txt7 . $fic22 . $txt41 . $txt44 . $fic3 . $txt42 . $txt45 . $fic4; $index_phtml = $idx1 . $txt53 . $idx20 . $txt5 . $idx3; $reps = ['config/', 'src/Application/Controller/', 'src/Application/Form/', 'src/Application/Form/', 'view/application/', 'view/application/', 'src/Application/Service/', 'src/Application/Service/Traits/']; $rep2regs = ['', '', $nommaj . '/', $nommaj . '/Traits/', $nomtiret . '/', $nomtiret . '/', '', '']; $fichmotifs = [$config_php, $controller_php, $saisieForm_php, $saisieFormAwareTrait_php, $index_phtml, $saisie_phtml, $service_php, $serviceTrait_php]; $fichiers = [$nomtiret . '.config.php', $nommaj . 'Controller.php', $nommaj . 'SaisieForm.php', $nommaj . 'SaisieFormAwareTrait.php', 'index.phtml', 'saisie.phtml', $nommaj . 'Service.php', $nommaj . 'ServiceAwareTrait.php']; $motif = ['nomsous', 'nommaj', 'nomm', 'nomtiret', 'droitedition', 'droitvisualisation', 'nomphrase']; $remplace = [$nomsous, $nommaj, $nomm, $nomtiret, $nomedit, $nomvisu, $nomphrase]; $maxfichiers = sizeof($fichiers); for ($i = 0; $i < $maxfichiers; $i++) { $rep = $reps[$i]; $fich = $fichiers[$i]; $fmotif = $fichmotifs[$i]; $rep2reg = $rep2regs[$i]; $ficin = $fichmotifs[$i]; $ficout = $basefs . $rep . $rep2reg . $fich; $ficenr = $baseOrig . $rep . $rep2reg . $fich; // echo 'Ficout=' . $ficout.', ficenr:'.$ficenr.'<br>'; $txt = str_replace($motif, $remplace, $ficin); if (!file_exists($basefs . $rep . $rep2reg)) { $chemin = $basefs . $rep . $rep2reg; $res = exec("mkdir -p $chemin", $err); // echo "res:$res<BR>"; } $hdl = fopen($ficout, 'wb'); $lgWrite = fwrite($hdl, $txt); fclose($hdl); if (file_exists($ficenr)) { if ($nonRemplace) { unset($result); exec("diff $ficenr $ficout", $result); echo "<BR><span style=\"color:#00bbdd; \">Différences avec $ficenr<BR><HR></span>"; echo '<div style="position:relative; left:10%; font-family:Lucida Console; background-color:lightgrey; width:85% ">'; $nblg = sizeof($result); for ($j = 0; $j < $nblg; $j++) { echo '<span style="color:'; if (preg_match('/^\d/', $result[$j])) echo '#008bb9'; if (preg_match('/^>/', $result[$j])) echo '#000000'; if (preg_match('/^</', $result[$j])) echo '#00bb00'; if (preg_match('/^---/', $result[$j])) { echo '; width:500px; "><hr width="85%" size="2"></span>'; } else echo "; \"><BR>$result[$j]</span>"; } echo '</div>'; unlink($ficout); } else echo '<div style="color:#ff0000; ">Attention --> Le fichier module/Application/' . $ficout . ' existe dans /var/www/OSE !</div>'; } } echo "<BR><span style=\"color:#006600; \">Résultat dans l'arborescence $basefs</span>"; } code/template/GenerateRubrique/config_php +1 −1 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ return [ ], 'form_elements' => [ 'invokables' => [ Form\nommaj\Saisie::class => Form\nommaj\Saisie::class, Form\nommaj\nommajSaisieForm::class => Form\nommaj\nommajSaisieForm::class, ], ], ]; module/Application/config/administration.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ return [ Privileges::TYPE_INTERVENTION_VISUALISATION, Privileges::PIECE_JUSTIFICATIVE_GESTION_VISUALISATION, Privileges::PLAFONDS_GESTION_VISUALISATION, Privileges::CENTRES_COUTS_ADMINISTRATION_VISUALISATION, ], 'assertion' => Assertion\GestionAssertion::class, ], Loading module/Application/config/centre-cout.config.php 0 → 100644 +131 −0 Original line number Diff line number Diff line <?php namespace Application; use Application\Provider\Privilege\Privileges; use UnicaenAuth\Guard\PrivilegeController; return [ 'router' => [ 'routes' => [ 'centre-cout' => [ 'type' => 'Literal', 'options' => [ 'route' => '/centre-cout', 'defaults' => [ 'controller' => 'Application\Controller\CentreCout', 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'delete' => [ 'type' => 'Segment', 'options' => [ 'route' => '/delete/:centre-cout', 'constraints' => [ 'centre-cout' => '[0-9]*', ], 'defaults' => [ 'action' => 'delete', ], ], ], 'saisie' => [ 'type' => 'Segment', 'options' => [ 'route' => '/saisie/[:centre-cout]', 'constraints' => [ 'centre-cout' => '[0-9]*', ], 'defaults' => [ 'action' => 'saisie', ], ], ], 'delete-structure' => [ 'type' => 'Segment', 'options' => [ 'route' => '/delete-structure/:centre-cout-structure', 'constraints' => [ 'centre-cout-structure' => '[0-9]*', ], 'defaults' => [ 'action' => 'delete-structure', ], ], ], 'saisie-structure' => [ 'type' => 'Segment', 'options' => [ 'route' => '/saisie-structure/:centre-cout/[:centre-cout-structure]', 'constraints' => [ 'centre-cout' => '[0-9]*', 'saisie-sructure' => '[0-9]*', ], 'defaults' => [ 'action' => 'saisie-structure', ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'administration' => [ 'pages' => [ 'centre-cout' => [ 'label' => 'Centres de Coûts', 'icon' => 'fa fa-graduation-cap', 'route' => 'centre-cout', 'resource' => PrivilegeController::getResourceId('Application\Controller\CentreCout', 'index'), 'order' => 80, 'border-color' => '#BBCF55', ], ], ], ], ], ], ], 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => 'Application\Controller\CentreCout', 'action' => ['index'], 'privileges' => Privileges::CENTRES_COUTS_ADMINISTRATION_VISUALISATION, ], [ 'controller' => 'Application\Controller\CentreCout', 'action' => ['saisie', 'delete','saisie-structure','delete-structure'], 'privileges' => Privileges::CENTRES_COUTS_ADMINISTRATION_EDITION, ], ], ], ], 'controllers' => [ 'invokables' => [ 'Application\Controller\CentreCout' => Controller\CentreCoutController::class, ], ], 'service_manager' => [ 'invokables' => [ Service\CentreCoutService::class => Service\CentreCoutService::class, Service\CentreCoutStructureService::class => Service\CentreCoutStructureService::class, Service\CcActiviteService::class => Service\CcActiviteService::class, ], ], 'view_helpers' => [ ], 'form_elements' => [ 'invokables' => [ Form\CentreCout\CentreCoutSaisieForm::class => Form\CentreCout\CentreCoutSaisieForm::class, Form\CentreCout\CentreCoutStructureSaisieForm::class => Form\CentreCout\CentreCoutStructureSaisieForm::class, ], ], ]; module/Application/src/Application/Controller/CentreCoutController.php 0 → 100644 +122 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
code/GenerateRubrique.php 0 → 100644 +440 −0 Original line number Diff line number Diff line <?php // Assume that all external field ended by _ID use UnicaenCode\Form\ElementMaker; use UnicaenCode\Util; /** * @var $this \Zend\View\Renderer\PhpRenderer * @var $controller \Zend\Mvc\Controller\AbstractController * @var $viewName string */ ?> <h1>Création d'une rubrique dans un menu</h1> <h3>Etape 1 : Paramétrage</h3> <?php $form = new \Zend\Form\Form(); $em = $controller->getServiceLocator()->get('Doctrine\ORM\EntityManager'); $conn = $em->getConnection(); $sm = $conn->getSchemaManager(); $tables = $sm->listTableNames(); sort($tables); $val = []; $form->add([ 'type' => 'Zend\Form\Element\Select', 'name' => 'tables', 'options' => [ 'label' => 'Tables', ], ]); foreach ($tables as $tbl) { $val[$tbl] = $tbl; } $form->get('tables')->setValueOptions($val); $form->add([ 'type' => 'Zend\Form\Element\Select', 'name' => 'menus', 'options' => [ 'label' => 'Menu', 'value_options' => [ 'Administration' => 'Administration', 'Gestion' => 'Gestion', ], ], ]); $form->add([ 'type' => 'Zend\Form\Element\Text', 'name' => 'Origine', 'options' => [ 'label' => 'Rep Web', ] ]); $form->get('Origine')->setValue('/var/www/OSE/'); $form->add(ElementMaker::checkbox( 'classe-privilege', 'Privilège existant ?', true )); $form->add(ElementMaker::checkbox( 'non-remplacement', 'Ne pas générer fichier déjà existant ?', true )); $form->add(ElementMaker::submit('generate', 'Générer le code')); $form->setData($controller->getRequest()->getPost()); Util::displayForm($form); if (($controller->getRequest()->isPost()) && ($form->isValid())) { $baseOrig = $form->get('Origine')->getValue() . 'module/Application/'; $nom = $form->get('tables')->getValue(); $basefs = '/var/www/Web/module/Application/'; $nomsous = strtoupper($nom); $nomvisu = $nomsous . "_VISUALISATION"; $nomedit = $nomsous . "_EDITION"; if (!$form->get('classe-privilege')->getValue()) { $nomvisu = 'DROIT_PRIVILEGE_EDITION'; $nomedit = 'DROIT_PRIVILEGE_VISUALISATION'; } $nonRemplace = $form->get('non-remplacement')->getValue(); $nomtiret = $nomm = strtolower($nom); $nomtiret = str_replace('_', '-', $nomtiret); $nomm = preg_replace_callback('/_\w/', function ($m) { return strtoupper($m[0]); }, $nomm); $nommaj = preg_replace_callback('/^\w/', function ($m) { return strtoupper($m[0]); }, $nomm); $nomphrase = str_replace('_', ' ', $nommaj); $nomm = str_replace('_', '', $nomm); $nommaj = str_replace('_', '', $nommaj); /** * $col Doctrine\DBAL\Schema\Column */ $nomChamps = []; $typeChamps = []; $lgChamps = []; $listeChamps = []; $notnullChamps = []; $defaultChamps = []; $result = []; // résultat d'exec $nbe = 0; if (empty($nom)) die(''); $columns = $sm->listTableColumns($nom); foreach ($columns as $col) { $nchp = $col->getName(); $notnullChamps[$nbe] = $col->getNotnull(); $defaultChamps[$nbe] = $col->getDefault(); if (!preg_match('/^HISTO_/', $nchp)) { $nomChamps[$nbe] = $nchp; if (preg_match('/_ID$/', $nchp)) { $listeChamps[$nbe] = $nomChamps[$nbe] = preg_replace('/_ID$/', '', $nchp); if (preg_match('/^ANNEE_/', $nchp)) $listeChamps[$nbe] = 'ANNEE'; } else $listeChamps[$nbe] = ''; $typeChamps[$nbe] = $col->getType()->getName(); $lgChamps[$nbe] = $col->getLength(); if (($typeChamps[$nbe] == 'integer') || ($typeChamps[$nbe] == 'float')) { $lgChamps[$nbe] = $col->getPrecision(); if ($lgChamps[$nbe] == 1) $typeChamps[$nbe] = 'boolean'; } $nbe++; } } if (file_exists('/var/www/Web')) { exec("rm -rf /var/www/Web/*", $stdout, $err); } else { mkdir('/var/www/Web',0770) or die('Vous devez créer un sous répertoire /var/www/Web avec les droits d\'écriture! pour l\'utilisateur www-data<BR>'); } // $res = shell_exec("Web/module/Application"); //echo "res:$res<BR>"; // mise en place des champs $txt0 = $txt01 = $txt4 = $txt41 = $txt42 = $txt43 = $txt44 = $txt45 = $txt5 = $txt53 = $txt6 = $txt7 = ''; // chargement des pseudos fichiers $tblInclude=array( 'champInput','champListe','config_php','controller_php','idx1','idx3','idx20','saisie_phtml', 'saisieFormAwareTrait_php','service_php','serviceTrait_php' ); $i=0; foreach ($tblInclude as $ci){ ${$ci}=file_get_contents(__DIR__.'/template/GenerateRubrique/'.$ci); } $extractInput = '\'champtiret\' => $object->getchampmaj() ,'; $extractListe = '\'champtiret\' => ($s = $object->getchampmaj()) ? $s->getId() : null, '; $hydrateInput = '$object->setchampmaj($data[\'champtiret\']); '; $hydrateListe = 'if (array_key_exists(\'champtiret\', $data)) { $object->setchampmaj($this->getServicechampmaj()->get($data[\'champtiret\'])); } '; $idx21 = " <th style=\"word-wrap: break-word ; \">champphrase</th>\n"; $idx2 = ' <td style="word-wrap: break-word ; "><?= $fr->getchampmaj() ?></td>' . "\n"; $service10 = " use Application\Service\Traits\champmajServiceAwareTrait;\n"; $service11 = " use champmajServiceAwareTrait;\n"; $fic10 = '/** * Description of nommajSaisieForm * * @author ZVENIGOROSKY Alexandre <alexandre.zvenigorosky@unicaen.fr> */ class nommajSaisieForm extends AbstractForm { '; $fic11 = ' public function init() { $hydrator = new nommajHydrator(); $this->setHydrator($hydrator); $this->setAttribute(\'action\', $this->getCurrentUrl()); '; $fic1 = '<?php namespace Application\Form\nommaj; use Application\Form\AbstractForm; use Zend\Form\Element\Csrf; use Zend\Stdlib\Hydrator\HydratorInterface; '; $fic2 = ' $this->add(new Csrf(\'security\')); $this->add([ \'name\' => \'submit\', \'type\' => \'Submit\', \'attributes\' => [ \'value\' => "Enregistrer", \'class\' => \'btn btn-primary\', ], ]); return $this; } /** * Should return an array specification compatible with * {@link Zend\InputFilter\Factory::createInputFilter()}. * * @return array */ public function getInputFilterSpecification() { return ['; $fic21 = ' ]; } } class nommajHydrator implements HydratorInterface { '; $listeEnteteHydrator = 'use champmajServiceAwareTrait; '; $fic22 = ' /** * Hydrate $object with the provided $data. * * @param array $data * @param \Application\Entity\Db\nommaj $object * * @return object */ public function hydrate(array $data, $object) { '; $inputFilter = ' \'champtiret\' => [ \'required\' => true, ], '; $fic3 = ' return $object; } /** * Extract values from an object * * @param \Application\Entity\Db\nommaj $object * * @return array */ public function extract($object) { $data = [ '; $fic4 = ' ]; return $data; } } '; for ($i = 0; $i < $nbe; $i++) { $champ = $nomChamps[$i]; $champsous = strtoupper($champ); $champtiret = $champm = strtolower($champ); $champtiret = str_replace('_', '-', $champtiret); $champm = preg_replace_callback('/_\w/', function ($m) { return strtoupper($m[0]); }, $champm); $champmaj = preg_replace_callback('/^\w/', function ($m) { return strtoupper($m[0]); }, $champm); $champphrase = str_replace('_', ' ', $champmaj); $champm = str_replace('_', '', $champm); $champmaj = str_replace('_', '', $champmaj); # input:champInput.txt listeInput.txt ... if (($i) && ($notnullChamps[$i])) { $txt = str_replace('champtiret', $champtiret, $inputFilter); $txt6 .= $txt; } if ($champtiret != 'id'){ $txt52 = str_replace('champphrase', $champphrase, $idx21); $txt53 .= $txt52; } if (!$listeChamps[$i]) { $champType = 'Text'; if ($typeChamps[$i] == 'String') $champType = 'Text'; if ($typeChamps[$i] == 'boolean') $champType = 'Checkbox'; if ($champtiret != 'id'){ $txt51 = str_replace('champmaj', $champmaj, $idx2); $txt5 .= $txt51; } if ($champtiret != 'id') { $txt = str_replace(['champtiret', 'champphrase', $champType], [$champtiret, $champphrase, $champType], $champInput); $txt4 .= $txt; } if ($champtiret != 'id') { $txt = str_replace('champtiret', $champtiret, $hydrateInput); $txt = str_replace('champmaj', $champmaj, $txt); $txt41 .= $txt; } $txt = str_replace('champtiret', $champtiret, $extractInput); $txt = str_replace('champmaj', $champmaj, $txt); $txt42 .= $txt; } else { $txt51 = str_replace('champmaj', $champmaj, $idx2); $txt52 = str_replace('champphrase', $champphrase, $idx21); $txt5 .= $txt51; $txt52 .= $txt53; $txt = str_replace('champmaj', $champmaj, $service10); $txt0 .= $txt; $txt = str_replace('champmaj', $champmaj, $service11); $txt01 .= $txt; $txt = str_replace(['champtiret', 'champphrase', 'champmaj'], [$champtiret, $champphrase, $champmaj], $champListe); if ($notnullChamps[$i]){ $txt=str_replace(' ->setEmptyOption("(Aucun)")','',$txt); } $txt43 .= $txt; $txt = str_replace(['champtiret', 'champmaj'], [$champtiret, $champmaj], $hydrateListe); $txt44 .= $txt; $txt = str_replace(['champtiret', 'champmaj'], [$champtiret, $champmaj], $extractListe); $txt45 .= $txt; $txt = str_replace('champmaj', $champmaj, $listeEnteteHydrator); $txt7 .= $txt; } } $saisieForm_php = $fic1 . $txt0 . $fic10 . $txt01 . $fic11 . $txt4 . $txt43 . $fic2 . $txt6 . $fic21 . $txt7 . $fic22 . $txt41 . $txt44 . $fic3 . $txt42 . $txt45 . $fic4; $index_phtml = $idx1 . $txt53 . $idx20 . $txt5 . $idx3; $reps = ['config/', 'src/Application/Controller/', 'src/Application/Form/', 'src/Application/Form/', 'view/application/', 'view/application/', 'src/Application/Service/', 'src/Application/Service/Traits/']; $rep2regs = ['', '', $nommaj . '/', $nommaj . '/Traits/', $nomtiret . '/', $nomtiret . '/', '', '']; $fichmotifs = [$config_php, $controller_php, $saisieForm_php, $saisieFormAwareTrait_php, $index_phtml, $saisie_phtml, $service_php, $serviceTrait_php]; $fichiers = [$nomtiret . '.config.php', $nommaj . 'Controller.php', $nommaj . 'SaisieForm.php', $nommaj . 'SaisieFormAwareTrait.php', 'index.phtml', 'saisie.phtml', $nommaj . 'Service.php', $nommaj . 'ServiceAwareTrait.php']; $motif = ['nomsous', 'nommaj', 'nomm', 'nomtiret', 'droitedition', 'droitvisualisation', 'nomphrase']; $remplace = [$nomsous, $nommaj, $nomm, $nomtiret, $nomedit, $nomvisu, $nomphrase]; $maxfichiers = sizeof($fichiers); for ($i = 0; $i < $maxfichiers; $i++) { $rep = $reps[$i]; $fich = $fichiers[$i]; $fmotif = $fichmotifs[$i]; $rep2reg = $rep2regs[$i]; $ficin = $fichmotifs[$i]; $ficout = $basefs . $rep . $rep2reg . $fich; $ficenr = $baseOrig . $rep . $rep2reg . $fich; // echo 'Ficout=' . $ficout.', ficenr:'.$ficenr.'<br>'; $txt = str_replace($motif, $remplace, $ficin); if (!file_exists($basefs . $rep . $rep2reg)) { $chemin = $basefs . $rep . $rep2reg; $res = exec("mkdir -p $chemin", $err); // echo "res:$res<BR>"; } $hdl = fopen($ficout, 'wb'); $lgWrite = fwrite($hdl, $txt); fclose($hdl); if (file_exists($ficenr)) { if ($nonRemplace) { unset($result); exec("diff $ficenr $ficout", $result); echo "<BR><span style=\"color:#00bbdd; \">Différences avec $ficenr<BR><HR></span>"; echo '<div style="position:relative; left:10%; font-family:Lucida Console; background-color:lightgrey; width:85% ">'; $nblg = sizeof($result); for ($j = 0; $j < $nblg; $j++) { echo '<span style="color:'; if (preg_match('/^\d/', $result[$j])) echo '#008bb9'; if (preg_match('/^>/', $result[$j])) echo '#000000'; if (preg_match('/^</', $result[$j])) echo '#00bb00'; if (preg_match('/^---/', $result[$j])) { echo '; width:500px; "><hr width="85%" size="2"></span>'; } else echo "; \"><BR>$result[$j]</span>"; } echo '</div>'; unlink($ficout); } else echo '<div style="color:#ff0000; ">Attention --> Le fichier module/Application/' . $ficout . ' existe dans /var/www/OSE !</div>'; } } echo "<BR><span style=\"color:#006600; \">Résultat dans l'arborescence $basefs</span>"; }
code/template/GenerateRubrique/config_php +1 −1 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ return [ ], 'form_elements' => [ 'invokables' => [ Form\nommaj\Saisie::class => Form\nommaj\Saisie::class, Form\nommaj\nommajSaisieForm::class => Form\nommaj\nommajSaisieForm::class, ], ], ];
module/Application/config/administration.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ return [ Privileges::TYPE_INTERVENTION_VISUALISATION, Privileges::PIECE_JUSTIFICATIVE_GESTION_VISUALISATION, Privileges::PLAFONDS_GESTION_VISUALISATION, Privileges::CENTRES_COUTS_ADMINISTRATION_VISUALISATION, ], 'assertion' => Assertion\GestionAssertion::class, ], Loading
module/Application/config/centre-cout.config.php 0 → 100644 +131 −0 Original line number Diff line number Diff line <?php namespace Application; use Application\Provider\Privilege\Privileges; use UnicaenAuth\Guard\PrivilegeController; return [ 'router' => [ 'routes' => [ 'centre-cout' => [ 'type' => 'Literal', 'options' => [ 'route' => '/centre-cout', 'defaults' => [ 'controller' => 'Application\Controller\CentreCout', 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'delete' => [ 'type' => 'Segment', 'options' => [ 'route' => '/delete/:centre-cout', 'constraints' => [ 'centre-cout' => '[0-9]*', ], 'defaults' => [ 'action' => 'delete', ], ], ], 'saisie' => [ 'type' => 'Segment', 'options' => [ 'route' => '/saisie/[:centre-cout]', 'constraints' => [ 'centre-cout' => '[0-9]*', ], 'defaults' => [ 'action' => 'saisie', ], ], ], 'delete-structure' => [ 'type' => 'Segment', 'options' => [ 'route' => '/delete-structure/:centre-cout-structure', 'constraints' => [ 'centre-cout-structure' => '[0-9]*', ], 'defaults' => [ 'action' => 'delete-structure', ], ], ], 'saisie-structure' => [ 'type' => 'Segment', 'options' => [ 'route' => '/saisie-structure/:centre-cout/[:centre-cout-structure]', 'constraints' => [ 'centre-cout' => '[0-9]*', 'saisie-sructure' => '[0-9]*', ], 'defaults' => [ 'action' => 'saisie-structure', ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'administration' => [ 'pages' => [ 'centre-cout' => [ 'label' => 'Centres de Coûts', 'icon' => 'fa fa-graduation-cap', 'route' => 'centre-cout', 'resource' => PrivilegeController::getResourceId('Application\Controller\CentreCout', 'index'), 'order' => 80, 'border-color' => '#BBCF55', ], ], ], ], ], ], ], 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => 'Application\Controller\CentreCout', 'action' => ['index'], 'privileges' => Privileges::CENTRES_COUTS_ADMINISTRATION_VISUALISATION, ], [ 'controller' => 'Application\Controller\CentreCout', 'action' => ['saisie', 'delete','saisie-structure','delete-structure'], 'privileges' => Privileges::CENTRES_COUTS_ADMINISTRATION_EDITION, ], ], ], ], 'controllers' => [ 'invokables' => [ 'Application\Controller\CentreCout' => Controller\CentreCoutController::class, ], ], 'service_manager' => [ 'invokables' => [ Service\CentreCoutService::class => Service\CentreCoutService::class, Service\CentreCoutStructureService::class => Service\CentreCoutStructureService::class, Service\CcActiviteService::class => Service\CcActiviteService::class, ], ], 'view_helpers' => [ ], 'form_elements' => [ 'invokables' => [ Form\CentreCout\CentreCoutSaisieForm::class => Form\CentreCout\CentreCoutSaisieForm::class, Form\CentreCout\CentreCoutStructureSaisieForm::class => Form\CentreCout\CentreCoutStructureSaisieForm::class, ], ], ];
module/Application/src/Application/Controller/CentreCoutController.php 0 → 100644 +122 −0 File added.Preview size limit exceeded, changes collapsed. Show changes