Loading module/Application/src/Application/Controller/RoleController.php +11 −8 Changes for module/Application/src/Application/Controller/RoleController.php: 11 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class RoleController extends AbstractController $roles = $qb_depend->getQuery()->execute(); $qb_categorie = $this->entityManager->getRepository(Privilege::class)->createQueryBuilder("p"); $qb_categorie = $this->decorateWithCategorie($qb_categorie, $categorie); $qb_categorie->orderBy("p.categorie, p.ordre","ASC"); $privileges = $qb_categorie->getQuery()->execute(); return new ViewModel([ 'roles' => $roles, Loading @@ -40,25 +41,26 @@ class RoleController extends AbstractController { $privilege_id = $this->params()->fromRoute("privilege"); $role_id = $this->params()->fromRoute("role"); // var_dump($privilege_id); // var_dump($role_id); $privilege = $this->entityManager->getRepository(Privilege::class)->findOneBy(["id" => $privilege_id]); $role = $this->entityManager->getRepository(Role::class)->findOneBy(["id" => $role_id]); $value = null; if( array_search($role, $privilege->getRole()->toArray()) !== false) { $privilege->removeRole($role); $this->entityManager->flush($privilege); $value = 0; } else { $privilege->addRole($role); $this->entityManager->flush($privilege); $value = 1; } // var_dump($privilege); //$has = array_search($role_id, $privilege->getRoles()); //var_dump($has); //die("Die die"); $queryParams = $this->params()->fromQuery(); $this->redirect()->toRoute("roles", [], ["query" => $queryParams], true); return new ViewModel([ 'value' => $value, ]); //$this->redirect()->toRoute("roles", [], ["query" => $queryParams], true); } private function decorateWithDepend(QueryBuilder $qb, $depend) { Loading Loading @@ -91,8 +93,9 @@ class RoleController extends AbstractController private function decorateWithCategorie(QueryBuilder $qb, $categorie) { $qb->leftJoin(CategoriePrivilege::class, "cp", "WITH", "cp.id = p.categorie"); if ($categorie !== null && $categorie !== "") { $qb = $qb->leftJoin(CategoriePrivilege::class, "cp", "WITH", "cp.id = p.categorie") $qb ->andWhere("cp.code = :type") ->setParameter("type", $categorie); } Loading module/Application/view/application/role/index.phtml +119 −77 Changes for module/Application/view/application/role/index.phtml: 119 added lines, 77 removed lines. Original line number Diff line number Diff line Loading @@ -26,33 +26,37 @@ <?php //$paramQuery = $this->params()->fromQuery(); //echo $paramQuery; echo "<input type='submit' value='refresh' id='refresh'/>"; echo "<table id='mytable' class='droits-tbl table table-hover table-bordered table-condensed table-extra-condensed table-header-rotated'>"; echo "<table id='mytable' class='table-bordered'>"; echo "<tr><th></th>"; foreach($roles as $role) { echo "<th class='rotate-45'> {$role->getLibelle()} </th>"; echo generateTableHeaderRole($role); } echo "</tr>"; $previous_categorie = null; foreach($privileges as $privilege) { if ($previous_categorie !== $privilege->getCategorie()) { echo "<tr><th colspan='1000' class='categorie'>".$privilege->getCategorie()->getLibelle()."</th></tr>"; $previous_categorie = $privilege->getCategorie(); } echo "<tr>"; echo "<th> {$privilege->getLibelle()} </th>"; echo "<th class='privilege'> {$privilege->getLibelle()} </th>"; foreach($roles as $role) { echo "<td>"; $id = "{$privilege->getId()}_{$role->getId()}"; echo "<td class='droit' id='$id' title='{$id}'>"; echo "<a href='".$this->url("modifier-privilege", ['role' => $role->getId(), 'privilege'=> $privilege->getId()], ["query" => $params], true)."' />"; // echo "[" . $role->getId() . "|" . $privilege->getId() . "|"; // echo (array_search($role, $privilege->getRole()->toArray()) === false); // echo "]"; if( array_search($role, $privilege->getRole()->toArray()) !== false) { echo "<span style='color: green'; class='glyphicon glyphicon-ok'></span>"; echo "<span class='glyphicon glyphicon-ok text-success'></span>"; } else { echo "<span style='color: red'; class='glyphicon glyphicon-remove'></span>"; echo "<span class='glyphicon glyphicon-remove text-danger'></span>"; } echo "</a>"; echo "</td>"; Loading @@ -65,96 +69,134 @@ echo "</table>"; <script> $(document).ready(function() { function RefreshTable() { //alert("clicked !"); $("#mytable").innerHTML = "oups"; $("td").click(function() { var id = $(this).attr("id"); var splits = id.split("_"); var role = splits[1]; var privilege = splits[0]; var url = "modifier-privilege/" + role + "/" + privilege; $.ajax({ url : url, beforeSend: function () { document.getElementById(id).innerHTML = "<img style='height:40px;' src='css/loading.gif'/>"; }, success: function(retour){ var texte = ""; if (retour == 1) texte = "<span class='glyphicon glyphicon-ok text-success'></span>"; else var texte = "<span class='glyphicon glyphicon-remove text-danger'></span>"; document.getElementById(id).innerHTML = texte; } $("#refresh").on("click", RefreshTable); // OR CAN THIS WAY // // $("#refresh-btn").on("click", function() { // $( "#mytable" ).load( "your-current-page.html #mytable" ); // }); }); }); }); </script> <style> <?php .table-header-rotated th.row-header { width: auto; function generateOK() { return "OK"; } function generateKO() { return "KO"; } .table-header-rotated td { width: 40px; vertical-align: middle; text-align: center; /** * @param Role $role * @return string */ function generateTableHeaderRole($role) { $premiere = $role->getLibelle(); $seconde = "missing"; $de = ""; switch(true) { case $role->isTheseDependant() : //$seconde = "ETAB"; $de = "these"; break; case $role->isEcoleDoctoraleDependant() : $seconde = $role->getStructure()->getSigle(); $de = "ed"; break; case $role->isEtablissementDependant() : //$seconde = $role->getStructure()->getCode(); $de = "etab"; break; case $role->isUniteRechercheDependant() : $seconde = $role->getStructure()->getSigle(); $de = "ur"; break; } .table-header-rotated th.rotate-45 { /*border: none;*/ /*height: 200px;*/ /*width: 40px;*/ /*min-width: 40px;*/ /*max-width: 40px;*/ /*position: relative;*/ /*vertical-align: bottom;*/ /*padding: 0;*/ /*line-height: 1;*/ /*white-space: nowrap;*/ /*position: relative;*/ /*top: 0px;*/ /*left: 83px;*/ /*height: 100%;*/ /*transform: skew(-40deg, 0deg);*/ /*overflow: hidden;*/ /*border-right: 1px solid #ddd;*/ } .table-header-rotated th.rotate-45 > div { position: relative; top: 0px; left: 83px; height: 100%; transform: skew(-40deg, 0deg); overflow: hidden; border-right: 1px solid #ddd; } .table-header-rotated th.rotate-45 > div.first { border-left: 1px solid #ddd; } .table-header-rotated th.rotate-45 span { transform: skew(40deg, 0deg) rotate(310deg); position: absolute; bottom: 40px; left: -30px; display: inline-block; width: 100px; $texte = "<th class='role'>"; $texte .= $premiere; $texte .= "<br/>"; $texte .= "<span class='depend ".$de."'>"; $texte .= $seconde; $texte .= "</span>"; $texte .= "</th>"; return $texte; } ?> <style> th.categorie { font-style: italic; font-size: 12pt; margin-left: 15px; background-color: lightgoldenrodyellow; } th.privilege { width:50px; } th.role { min-width:50px; writing-mode: vertical-lr; text-align: left; } .depend { text-orientation: upright; } .ed { color: #5B2268; text-orientation: upright; } .table-header-rotated .separator { border: none; .ur { color: #0a3783; text-orientation: upright; } .droits-tbl th.privilege { min-width: 200px; max-width: 200px; width: 200px; .etab { color: #870a0a; text-orientation: upright; } .droits-tbl td span.refuse { opacity: 0.5; .these { color: #004602; text-orientation: upright; } td.droit { vertical-align: center; text-align: center; } </style> No newline at end of file module/Application/view/application/role/modifier.phtml 0 → 100644 +1 −0 Changes for module/Application/view/application/role/modifier.phtml: 1 added line, 0 removed lines. Original line number Diff line number Diff line <?php echo $value; ?> No newline at end of file public/css/loading.gif 0 → 100644 +27.5 KiB Loading image diff... Loading
module/Application/src/Application/Controller/RoleController.php +11 −8 Changes for module/Application/src/Application/Controller/RoleController.php: 11 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class RoleController extends AbstractController $roles = $qb_depend->getQuery()->execute(); $qb_categorie = $this->entityManager->getRepository(Privilege::class)->createQueryBuilder("p"); $qb_categorie = $this->decorateWithCategorie($qb_categorie, $categorie); $qb_categorie->orderBy("p.categorie, p.ordre","ASC"); $privileges = $qb_categorie->getQuery()->execute(); return new ViewModel([ 'roles' => $roles, Loading @@ -40,25 +41,26 @@ class RoleController extends AbstractController { $privilege_id = $this->params()->fromRoute("privilege"); $role_id = $this->params()->fromRoute("role"); // var_dump($privilege_id); // var_dump($role_id); $privilege = $this->entityManager->getRepository(Privilege::class)->findOneBy(["id" => $privilege_id]); $role = $this->entityManager->getRepository(Role::class)->findOneBy(["id" => $role_id]); $value = null; if( array_search($role, $privilege->getRole()->toArray()) !== false) { $privilege->removeRole($role); $this->entityManager->flush($privilege); $value = 0; } else { $privilege->addRole($role); $this->entityManager->flush($privilege); $value = 1; } // var_dump($privilege); //$has = array_search($role_id, $privilege->getRoles()); //var_dump($has); //die("Die die"); $queryParams = $this->params()->fromQuery(); $this->redirect()->toRoute("roles", [], ["query" => $queryParams], true); return new ViewModel([ 'value' => $value, ]); //$this->redirect()->toRoute("roles", [], ["query" => $queryParams], true); } private function decorateWithDepend(QueryBuilder $qb, $depend) { Loading Loading @@ -91,8 +93,9 @@ class RoleController extends AbstractController private function decorateWithCategorie(QueryBuilder $qb, $categorie) { $qb->leftJoin(CategoriePrivilege::class, "cp", "WITH", "cp.id = p.categorie"); if ($categorie !== null && $categorie !== "") { $qb = $qb->leftJoin(CategoriePrivilege::class, "cp", "WITH", "cp.id = p.categorie") $qb ->andWhere("cp.code = :type") ->setParameter("type", $categorie); } Loading
module/Application/view/application/role/index.phtml +119 −77 Changes for module/Application/view/application/role/index.phtml: 119 added lines, 77 removed lines. Original line number Diff line number Diff line Loading @@ -26,33 +26,37 @@ <?php //$paramQuery = $this->params()->fromQuery(); //echo $paramQuery; echo "<input type='submit' value='refresh' id='refresh'/>"; echo "<table id='mytable' class='droits-tbl table table-hover table-bordered table-condensed table-extra-condensed table-header-rotated'>"; echo "<table id='mytable' class='table-bordered'>"; echo "<tr><th></th>"; foreach($roles as $role) { echo "<th class='rotate-45'> {$role->getLibelle()} </th>"; echo generateTableHeaderRole($role); } echo "</tr>"; $previous_categorie = null; foreach($privileges as $privilege) { if ($previous_categorie !== $privilege->getCategorie()) { echo "<tr><th colspan='1000' class='categorie'>".$privilege->getCategorie()->getLibelle()."</th></tr>"; $previous_categorie = $privilege->getCategorie(); } echo "<tr>"; echo "<th> {$privilege->getLibelle()} </th>"; echo "<th class='privilege'> {$privilege->getLibelle()} </th>"; foreach($roles as $role) { echo "<td>"; $id = "{$privilege->getId()}_{$role->getId()}"; echo "<td class='droit' id='$id' title='{$id}'>"; echo "<a href='".$this->url("modifier-privilege", ['role' => $role->getId(), 'privilege'=> $privilege->getId()], ["query" => $params], true)."' />"; // echo "[" . $role->getId() . "|" . $privilege->getId() . "|"; // echo (array_search($role, $privilege->getRole()->toArray()) === false); // echo "]"; if( array_search($role, $privilege->getRole()->toArray()) !== false) { echo "<span style='color: green'; class='glyphicon glyphicon-ok'></span>"; echo "<span class='glyphicon glyphicon-ok text-success'></span>"; } else { echo "<span style='color: red'; class='glyphicon glyphicon-remove'></span>"; echo "<span class='glyphicon glyphicon-remove text-danger'></span>"; } echo "</a>"; echo "</td>"; Loading @@ -65,96 +69,134 @@ echo "</table>"; <script> $(document).ready(function() { function RefreshTable() { //alert("clicked !"); $("#mytable").innerHTML = "oups"; $("td").click(function() { var id = $(this).attr("id"); var splits = id.split("_"); var role = splits[1]; var privilege = splits[0]; var url = "modifier-privilege/" + role + "/" + privilege; $.ajax({ url : url, beforeSend: function () { document.getElementById(id).innerHTML = "<img style='height:40px;' src='css/loading.gif'/>"; }, success: function(retour){ var texte = ""; if (retour == 1) texte = "<span class='glyphicon glyphicon-ok text-success'></span>"; else var texte = "<span class='glyphicon glyphicon-remove text-danger'></span>"; document.getElementById(id).innerHTML = texte; } $("#refresh").on("click", RefreshTable); // OR CAN THIS WAY // // $("#refresh-btn").on("click", function() { // $( "#mytable" ).load( "your-current-page.html #mytable" ); // }); }); }); }); </script> <style> <?php .table-header-rotated th.row-header { width: auto; function generateOK() { return "OK"; } function generateKO() { return "KO"; } .table-header-rotated td { width: 40px; vertical-align: middle; text-align: center; /** * @param Role $role * @return string */ function generateTableHeaderRole($role) { $premiere = $role->getLibelle(); $seconde = "missing"; $de = ""; switch(true) { case $role->isTheseDependant() : //$seconde = "ETAB"; $de = "these"; break; case $role->isEcoleDoctoraleDependant() : $seconde = $role->getStructure()->getSigle(); $de = "ed"; break; case $role->isEtablissementDependant() : //$seconde = $role->getStructure()->getCode(); $de = "etab"; break; case $role->isUniteRechercheDependant() : $seconde = $role->getStructure()->getSigle(); $de = "ur"; break; } .table-header-rotated th.rotate-45 { /*border: none;*/ /*height: 200px;*/ /*width: 40px;*/ /*min-width: 40px;*/ /*max-width: 40px;*/ /*position: relative;*/ /*vertical-align: bottom;*/ /*padding: 0;*/ /*line-height: 1;*/ /*white-space: nowrap;*/ /*position: relative;*/ /*top: 0px;*/ /*left: 83px;*/ /*height: 100%;*/ /*transform: skew(-40deg, 0deg);*/ /*overflow: hidden;*/ /*border-right: 1px solid #ddd;*/ } .table-header-rotated th.rotate-45 > div { position: relative; top: 0px; left: 83px; height: 100%; transform: skew(-40deg, 0deg); overflow: hidden; border-right: 1px solid #ddd; } .table-header-rotated th.rotate-45 > div.first { border-left: 1px solid #ddd; } .table-header-rotated th.rotate-45 span { transform: skew(40deg, 0deg) rotate(310deg); position: absolute; bottom: 40px; left: -30px; display: inline-block; width: 100px; $texte = "<th class='role'>"; $texte .= $premiere; $texte .= "<br/>"; $texte .= "<span class='depend ".$de."'>"; $texte .= $seconde; $texte .= "</span>"; $texte .= "</th>"; return $texte; } ?> <style> th.categorie { font-style: italic; font-size: 12pt; margin-left: 15px; background-color: lightgoldenrodyellow; } th.privilege { width:50px; } th.role { min-width:50px; writing-mode: vertical-lr; text-align: left; } .depend { text-orientation: upright; } .ed { color: #5B2268; text-orientation: upright; } .table-header-rotated .separator { border: none; .ur { color: #0a3783; text-orientation: upright; } .droits-tbl th.privilege { min-width: 200px; max-width: 200px; width: 200px; .etab { color: #870a0a; text-orientation: upright; } .droits-tbl td span.refuse { opacity: 0.5; .these { color: #004602; text-orientation: upright; } td.droit { vertical-align: center; text-align: center; } </style> No newline at end of file
module/Application/view/application/role/modifier.phtml 0 → 100644 +1 −0 Changes for module/Application/view/application/role/modifier.phtml: 1 added line, 0 removed lines. Original line number Diff line number Diff line <?php echo $value; ?> No newline at end of file