Commit 754230c3 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Page des détails d'une structure : retour au bon onglet en cas d'action...

[FIX] Page des détails d'une structure : retour au bon onglet en cas d'action (ex : dépôt d'un document).
parent 108bc1f8
Loading
Loading
Loading
Loading
+8 −8
Changes for module/Structure/src/Structure/Controller/StructureConcreteController.php: 8 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -171,7 +171,7 @@ abstract class StructureConcreteController extends AbstractController
            }
            $this->flashMessenger()->addErrorMessage("Echec de la mise à jour : données incorrectes saissie");

            return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId], "fragment" => "" . $structureId], true);
            return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId]], true);
        }

        $viewModel = new ViewModel([
@@ -217,7 +217,7 @@ abstract class StructureConcreteController extends AbstractController

                $structureId = $structureConcrete->getStructure()->getId();

                return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true);
                return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId]], true);
            }
        }

@@ -242,7 +242,7 @@ abstract class StructureConcreteController extends AbstractController

        $this->flashMessenger()->addSuccessMessage("Structure '$structureConcrete' supprimée avec succès");

        return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true);
        return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId]], true);
    }

    /**
@@ -257,7 +257,7 @@ abstract class StructureConcreteController extends AbstractController

        $this->flashMessenger()->addSuccessMessage("Structure '$structureConcrete' restaurée avec succès");

        return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true);
        return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId]], true);
    }

    /**
@@ -268,7 +268,7 @@ abstract class StructureConcreteController extends AbstractController
        $structureId = $this->params()->fromRoute("structure");
        $this->supprimerLogoStructure();

        return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true);
        return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structureId]], true);
    }

    /**
@@ -383,17 +383,17 @@ abstract class StructureConcreteController extends AbstractController
            case TypeStructure::CODE_ECOLE_DOCTORALE :
                $ecole = $this->getEcoleDoctoraleService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($ecole);
                $this->redirect()->toRoute('ecole-doctorale/information', ['ecoleDoctorale' => $id], [], true);
                $this->redirect()->toRoute('ecole-doctorale/information', ['ecoleDoctorale' => $id], ['query' => ['tab' => StructureController::TAB_membres]], true);
                break;
            case TypeStructure::CODE_UNITE_RECHERCHE :
                $unite = $this->getUniteRechercheService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($unite);
                $this->redirect()->toRoute('unite-recherche/information', ['uniteRecherche' => $id], [], true);
                $this->redirect()->toRoute('unite-recherche/information', ['uniteRecherche' => $id], ['query' => ['tab' => StructureController::TAB_membres]], true);
                break;
            case TypeStructure::CODE_ETABLISSEMENT :
                $unite = $this->getEtablissementService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($unite);
                $this->redirect()->toRoute('etablissement/information', ['etablissement' => $id], [], true);
                $this->redirect()->toRoute('etablissement/information', ['etablissement' => $id], ['query' => ['tab' => StructureController::TAB_membres]], true);
                break;
        }
    }
+17 −17
Changes for module/Structure/src/Structure/Controller/StructureController.php: 17 added lines, 17 removed lines.
Original line number Diff line number Diff line
@@ -3,26 +3,31 @@
namespace Structure\Controller;

use Application\Controller\AbstractController;
use Structure\Entity\Db\Etablissement;
use Application\Entity\Db\IndividuRole;
use Application\Entity\Db\NatureFichier;
use Application\Entity\Db\Role;
use Structure\Entity\Db\TypeStructure;
use Structure\Provider\Privilege\StructurePrivileges;
use Structure\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
use Application\Service\Fichier\FichierServiceAwareTrait;
use Application\Service\Individu\IndividuServiceAwareTrait;
use Application\Service\NatureFichier\NatureFichierServiceAwareTrait;
use Application\Service\Role\RoleServiceAwareTrait;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;
use Structure\Entity\Db\Etablissement;
use Structure\Entity\Db\TypeStructure;
use Structure\Provider\Privilege\StructurePrivileges;
use Structure\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
use Structure\Service\Structure\StructureServiceAwareTrait;
use Structure\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use Structure\Service\UniteRecherche\UniteRechercheServiceAwareTrait;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;

class StructureController extends AbstractController
{
    const TAB_infos = 'informations';
    const TAB_membres = 'membres';
    const TAB_docs = 'documents';
    const TAB_coenc = 'coencadrants';

    use RoleServiceAwareTrait;
    use IndividuServiceAwareTrait;
    use StructureServiceAwareTrait;
@@ -33,8 +38,6 @@ class StructureController extends AbstractController
    use FichierServiceAwareTrait;
    use StructureDocumentServiceAwareTrait;



    /**
     * @return ViewModel
     */
@@ -114,18 +117,15 @@ class StructureController extends AbstractController
            case TypeStructure::CODE_ECOLE_DOCTORALE :
                $ecole = $this->getEcoleDoctoraleService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($ecole);
                $this->redirect()->toRoute('ecole-doctorale/information', ['structure' => $id], [], true);
                break;
                return $this->redirect()->toRoute('ecole-doctorale/information', ['structure' => $id], ['query' => ['tab' => StructureController::TAB_infos]], true);
            case TypeStructure::CODE_UNITE_RECHERCHE :
                $unite = $this->getUniteRechercheService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($unite);
                $this->redirect()->toRoute('unite-recherche/information', ['structure' => $id], [], true);
                break;
                return $this->redirect()->toRoute('unite-recherche/information', ['structure' => $id], ['query' => ['tab' => StructureController::TAB_infos]], true);
            case TypeStructure::CODE_ETABLISSEMENT :
                $unite = $this->getEtablissementService()->getRepository()->findByStructureId($id);
                $this->getRoleService()->addRoleByStructure($unite);
                $this->redirect()->toRoute('etablissement/information', ['structure' => $id], [], true);
                break;
                return $this->redirect()->toRoute('etablissement/information', ['structure' => $id], ['query' => ['tab' => StructureController::TAB_infos]], true);
        }
    }

@@ -157,7 +157,7 @@ class StructureController extends AbstractController

        $vm =  new ViewModel([
            'title' => "Ajout d'un document lié à la structure",
            'action' => $this->url()->fromRoute('structure/televerser-document', ['structure' => $structure->getId()], [], true),
            'action' => $this->url()->fromRoute('structure/televerser-document', ['structure' => $structure->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true),
            'natures' => $natures,
            'etablissements' => $etablissements,
        ]);
@@ -173,6 +173,6 @@ class StructureController extends AbstractController
        $document = $this->getStructureDocumentService()->getRequestedStructureDocument($this);
        $this->getStructureDocumentService()->historise($document);

        return $this->redirect()->toRoute($structure->getTypeStructure()->getCode() ."/information", ['structure' => $structure->getId()], ['fragment' => 'documents'], true);
        return $this->redirect()->toRoute($structure->getTypeStructure()->getCode() ."/information", ['structure' => $structure->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true);
    }
}
 No newline at end of file
+21 −38
Changes for module/Structure/view/structure/ecole-doctorale/information.phtml: 21 added lines, 38 removed lines.
Original line number Diff line number Diff line
@@ -11,11 +11,11 @@
 */

use Application\Entity\Db\Acteur;
use Structure\Entity\Db\EcoleDoctorale;
use Application\Entity\Db\IndividuRole;
use Structure\Entity\Db\StructureDocument;
use Structure\Entity\Db\TypeStructure;
use Application\Provider\Privilege\CoEncadrantPrivileges;
use Structure\Controller\StructureController;
use Structure\Entity\Db\EcoleDoctorale;
use Structure\Entity\Db\TypeStructure;
use Structure\Provider\Privilege\StructurePrivileges;

$this->headTitle("École Doctorale '{$ecole->getStructure()->getCode()}'");
@@ -27,6 +27,8 @@ $canAddRole = $canEdit;
$canCoencadrantAfficher = $this->isAllowed(CoEncadrantPrivileges::getResourceId(CoEncadrantPrivileges::COENCADRANT_AFFICHER));
$canCoencadrantExport = $this->isAllowed(CoEncadrantPrivileges::getResourceId(CoEncadrantPrivileges::COENCADRANT_AFFICHER));

$tab = $this->queryParams()['tab'] ?? StructureController::TAB_infos;

$structure = $ecole->getStructure();
?>

@@ -37,51 +39,41 @@ $structure = $ecole->getStructure();
<?php echo $this->messenger()->addMessagesFromFlashMessengerWithNoNamespace() ?>

<ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="nav-item active">
        <a class="nav-link"
           href="#informations"
    <li role="presentation" class="nav-item">
        <a class="nav-link <?php echo $tab === StructureController::TAB_infos ? 'active' : '' ?>"
           href="<?php echo $this->url('ecole-doctorale/information', ['structure' => $ecole->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_infos]], true) ?>"
           role="tab"
           aria-controls="informations"
           data-bs-toggle="tab"

        >
            Informations générales
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#membres"
        <a class="nav-link <?php echo $tab === StructureController::TAB_membres ? 'active' : '' ?>"
           href="<?php echo $this->url('ecole-doctorale/information', ['structure' => $ecole->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_membres]], true) ?>"
           role="tab"
           aria-controls="membres"
           data-bs-toggle="tab"
        >
            Rôles et membres
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#coencadrants"
        <a class="nav-link <?php echo $tab === StructureController::TAB_coenc ? 'active' : '' ?>"
           href="<?php echo $this->url('ecole-doctorale/information', ['structure' => $ecole->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_coenc]], true) ?>"
           role="tab"
           aria-controls="coencadrants"
           data-bs-toggle="tab"
        >
            Co-encadrants
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#documents"
        <a class="nav-link <?php echo $tab === StructureController::TAB_docs ? 'active' : '' ?>"
           href="<?php echo $this->url('ecole-doctorale/information', ['structure' => $ecole->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true) ?>"
           role="tab"
           aria-controls="documents"
           data-bs-toggle="tab"
        >
            Documents
        </a>
    </li>
</ul>

<div class="tab-content">
    <div role="tabpanel" class="tab-pane in active" id="informations">
<div class="<?php echo $tab === StructureController::TAB_infos ? '' : 'd-none' ?>" id="informations">
    <h2>
        Informations générales
    </h2>
@@ -147,7 +139,7 @@ $structure = $ecole->getStructure();
    <?php endif; ?>
</div>

    <div role="tabpanel" class="tab-pane" id="membres">
<div class="<?php echo $tab === StructureController::TAB_membres ? '' : 'd-none' ?>" id="membres">
    <h2>
        Rôles et membres
    </h2>
@@ -210,7 +202,7 @@ $structure = $ecole->getStructure();
    <?php endif; ?>
</div>

    <div role="tabpanel" class="tab-pane" id="coencadrants">
<div class="<?php echo $tab === StructureController::TAB_coenc ? '' : 'd-none' ?>" id="coencadrants">

    <h2>
        Co-encadrants
@@ -249,27 +241,18 @@ $structure = $ecole->getStructure();
    </ul>
</div>

    <div role="tabpanel" class="tab-pane" id="documents">
<div class="<?php echo $tab === StructureController::TAB_docs ? '' : 'd-none' ?>" id="documents">

    <?php echo $this->partial('structure/structure/partial/documents', ['structure' => $structure, 'contenus' => $contenus]); ?>
    </div>

</div>


<script>
    $(function() {
        $("body").on("modification", function (event) {
            event.div.modal('hide');
            window.location.reload();
        });

        let hash = $(location).attr('hash');
        let name = hash.substr(1);
        if (name === undefined || name === "") name = "informations";

        $('a[aria-controls=' + name + ']').tab('show');

        $('.nav-tabs a').on("click", function (e) {
            // No e.preventDefault() here
            $(this).tab('show');
        });
    });
</script>
+17 −30
Changes for module/Structure/view/structure/etablissement/information.phtml: 17 added lines, 30 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

/**
 * @see \Application\Controller\EtablissementController::informationAction()
 * @var \Application\View\Renderer\PhpRenderer $this
 * @var Etablissement $etablissement
 * @var array $roleListing (string => int)
 * @var array $individuListing (string => string[])
@@ -10,10 +11,9 @@
 * @var string[] $contenus
 */

use Structure\Controller\StructureController;
use Structure\Entity\Db\Etablissement;
use Application\Entity\Db\Fichier;
use Structure\Entity\Db\TypeStructure;
use Structure\Provider\Privilege\EtablissementPrivileges;
use Structure\Provider\Privilege\StructurePrivileges;

$this->headTitle('Details de l\'établissement ['.$etablissement->getLibelle().']');
@@ -21,6 +21,7 @@ $this->headTitle('Details de l\'établissement ['.$etablissement->getLibelle().'
$canAddRole = true;
$canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES));

$tab = $this->queryParams()['tab'] ?? StructureController::TAB_infos;
?>

<h1 class="page-header">
@@ -30,34 +31,30 @@ $canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(
<?php echo $this->messenger()->addMessagesFromFlashMessengerWithNoNamespace() ?>

<ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active nav-item">
        <a class="nav-link"
           href="#informations"
    <li role="presentation" class="nav-item">
        <a class="nav-link <?php echo $tab === StructureController::TAB_infos ? 'active' : '' ?>"
           href="<?php echo $this->url('etablissement/information', ['structure' => $etablissement->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_infos]], true) ?>"
           role="tab"
           aria-controls="informations"
           data-bs-toggle="tab"

        >
            Informations générales
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#membres"
        <a class="nav-link <?php echo $tab === StructureController::TAB_membres ? 'active' : '' ?>"
           href="<?php echo $this->url('etablissement/information', ['structure' => $etablissement->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_membres]], true) ?>"
           role="tab"
           aria-controls="membres"
           data-bs-toggle="tab"
        >
            Rôles et membres
        </a>
    </li>
    <?php if ($etablissement->estInscription()) : ?>
    <li role="documents" class="nav-item">
        <a class="nav-link"
           href="#documents"
        <li role="presentation" class="nav-item">
            <a class="nav-link <?php echo $tab === StructureController::TAB_docs ? 'active' : '' ?>"
               href="<?php echo $this->url('etablissement/information', ['structure' => $etablissement->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true) ?>"
               role="tab"
               aria-controls="documents"
           data-bs-toggle="tab"
            >
                Documents
            </a>
@@ -65,8 +62,7 @@ $canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(
    <?php endif; ?>
</ul>

<div class="tab-content">
    <div role="tabpanel" class="tab-pane in active" id="informations">
<div class="<?php echo $tab === StructureController::TAB_infos ? '' : 'd-none' ?>" id="informations">
    <h2>
        Informations générales
    </h2>
@@ -136,7 +132,7 @@ $canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(
    <?php endif; ?>
</div>

    <div role="tabpanel" class="tab-pane" id="membres">
<div class="<?php echo $tab === StructureController::TAB_membres ? '' : 'd-none' ?>" id="membres">

<h2>
    Rôles et membres
@@ -174,11 +170,13 @@ $canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(
    <?php endif; ?>
</div>

    <div role="tabpanel" class="tab-pane" id="documents">
<div class="<?php echo $tab === StructureController::TAB_docs ? '' : 'd-none' ?>" id="documents">

    <?php echo $this->partial('structure/structure/partial/documents', ['structure' => $etablissement->getStructure(), 'contenus' => $contenus]); ?>
    </div>

</div>


<style>
    .action {
        width: 20em;
@@ -193,16 +191,5 @@ $canModifierEtablissement = $this->isAllowed(StructurePrivileges::getResourceId(
            event.div.modal('hide');
            window.location.reload();
        });

        let hash = $(location).attr('hash');
        let name = hash.substr(1);
        if (name === undefined || name === "") name = "informations";

        $('a[aria-controls=' + name + ']').tab('show');

        $('.nav-tabs a').on("click", function (e) {
            // No e.preventDefault() here
            $(this).tab('show');
        });
    });
</script>
 No newline at end of file
+18 −36
Changes for module/Structure/view/structure/unite-recherche/information.phtml: 18 added lines, 36 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
 * @var string[]                    $contenus
 */

use Structure\Controller\StructureController;
use Structure\Entity\Db\EtablissementRattachement;
use Application\Entity\Db\IndividuRole;
use Structure\Entity\Db\TypeStructure;
@@ -27,6 +28,8 @@ $canAddRole = $canEdit;
$canCoencadrantAfficher = $this->isAllowed(CoEncadrantPrivileges::getResourceId(CoEncadrantPrivileges::COENCADRANT_AFFICHER));
$canCoencadrantExport = $this->isAllowed(CoEncadrantPrivileges::getResourceId(CoEncadrantPrivileges::COENCADRANT_AFFICHER));

$tab = $this->queryParams()['tab'] ?? StructureController::TAB_infos;

$structure = $unite->getStructure();
?>

@@ -37,51 +40,41 @@ $structure = $unite->getStructure();
<?php echo $this->messenger()->addMessagesFromFlashMessengerWithNoNamespace() ?>

<ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="nav-item active">
        <a class="nav-link"
           href="#informations"
    <li role="presentation" class="nav-item">
        <a class="nav-link <?php echo $tab === StructureController::TAB_infos ? 'active' : '' ?>"
           href="<?php echo $this->url('unite-recherche/information', ['structure' => $unite->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_infos]], true) ?>"
           role="tab"
           aria-controls="informations"
           data-bs-toggle="tab"
           
        >
            Informations générales
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#membres"
        <a class="nav-link <?php echo $tab === StructureController::TAB_membres ? 'active' : '' ?>"
           href="<?php echo $this->url('unite-recherche/information', ['structure' => $unite->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_membres]], true) ?>"
           role="tab"
           aria-controls="membres"
           data-bs-toggle="tab"
        >
            Rôles et membres
        </a>
    </li>
    <li role="presentation" class="nav-item">
        <a class="nav-link"
           href="#coencadrants"
        <a class="nav-link <?php echo $tab === StructureController::TAB_coenc ? 'active' : '' ?>"
           href="<?php echo $this->url('unite-recherche/information', ['structure' => $unite->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_coenc]], true) ?>"
           role="tab"
           aria-controls="coencadrants"
           data-bs-toggle="tab"
        >
            Co-encadrants
        </a>
    </li>
    <li role="documents" class="nav-item">
        <a class="nav-link"
           href="#documents"
    <li role="presentation" class="nav-item">
        <a class="nav-link <?php echo $tab === StructureController::TAB_docs ? 'active' : '' ?>"
           href="<?php echo $this->url('unite-recherche/information', ['structure' => $unite->getStructure()->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true) ?>"
           role="tab"
           aria-controls="documents"
           data-bs-toggle="tab"
        >
            Documents
        </a>
    </li>
</ul>

<div class="tab-content">
    <div role="tabpanel" class="tab-pane in active" id="informations">
<div class="<?php echo $tab === StructureController::TAB_infos ? '' : 'd-none' ?>" id="informations">
    <h2>
        Informations générales
    </h2>
@@ -156,7 +149,7 @@ $structure = $unite->getStructure();

</div>

    <div role="tabpanel" class="tab-pane" id="membres">
<div class="<?php echo $tab === StructureController::TAB_membres ? '' : 'd-none' ?>" id="membres">
    <h2>
        Rôles et membres
    </h2>
@@ -220,7 +213,7 @@ $structure = $unite->getStructure();

</div>

    <div role="tabpanel" class="tab-pane" id="coencadrants">
<div class="<?php echo $tab === StructureController::TAB_coenc ? '' : 'd-none' ?>" id="coencadrants">

    <h2>
        Co-encadrants
@@ -260,9 +253,9 @@ $structure = $unite->getStructure();

</div>

    <div role="tabpanel" class="tab-pane" id="documents">
<div class="<?php echo $tab === StructureController::TAB_docs ? '' : 'd-none' ?>" id="documents">

    <?php echo $this->partial('structure/structure/partial/documents', ['structure' => $structure, 'contenus' => $contenus]); ?>
    </div>

</div>

@@ -273,16 +266,5 @@ $structure = $unite->getStructure();
            event.div.modal('hide');
            window.location.reload();
        });

        let hash = $(location).attr('hash');
        let name = hash.substr(1);
        if (name === undefined || name === "") name = "informations";

        $('a[aria-controls=' + name + ']').tab('show');

        $('.nav-tabs a').on("click", function (e) {
            // No e.preventDefault() here
            $(this).tab('show');
        });
    });
</script>