Loading module/Oscar/src/Oscar/Controller/AbstractOscarController.php +54 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ use Symfony\Component\Yaml\Parser; use UnicaenAuth\Service\UserContext; use Zend\Http\Request; use Zend\Http\Response; use Zend\Json\Server\Request\Http; use Zend\Mvc\Controller\AbstractActionController; use Zend\Session\Container; use Zend\View\Model\JsonModel; Loading @@ -60,6 +61,59 @@ class AbstractOscarController extends AbstractActionController implements UseOsc { use UseOscarConfigurationServiceTrait, UseOscarUserContextServiceTrait, UseLoggerServiceTrait, UseEntityManagerTrait, UseActivityLogServiceTrait; public function getPutData() { $lines = file("php://input"); $re = '/Content-Disposition: form-data; name="(\w*)"/m'; $PUT = []; $currentName = null; $currentData = []; $separator = null; $needSkip = true; foreach($lines as $num => $line){ $this->getLoggerService()->info("[put process] ... line : '$line'"); if( $separator === null ){ $separator = trim($line); $this->getLoggerService()->info("[put process] init $line"); continue; } /* -----------------------------243741794428186209781894714397 -----------------------------243741794428186209781894714397-- */ if(str_contains($line, $separator)){ $this->getLoggerService()->info("[put process] set '$currentName' = ..."); $PUT[$currentName] = implode("\n\r", $currentData); $currentName = null; $currentData = []; continue; } if( preg_match_all($re, $line, $matches, PREG_SET_ORDER, 0) ){ $currentName = $matches[0][1]; $this->getLoggerService()->info("[put process] $currentName detected"); $needSkip = true; continue; } if( $needSkip ){ $this->getLoggerService()->info("[put process] SKIP"); $needSkip = false; continue; } $this->getLoggerService()->info("[put process] ADD LINE"); $currentData[] = $line; } return $PUT; } /** * Retourne le format de la requête sous la forme d'une chaîne. Loading module/Oscar/src/Oscar/Controller/WorkPackageController.php +160 −107 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Oscar\Entity\WorkPackage; use Oscar\Entity\WorkPackagePerson; use Oscar\Exception\OscarException; use Oscar\Form\WorkPackageForm; use Oscar\Formatter\ActivityToJsonFormatter; use Oscar\Hydrator\WorkPackageHydrator; use Oscar\Provider\Privileges; use Zend\Http\Response; Loading @@ -36,8 +37,8 @@ class WorkPackageController extends AbstractOscarController /** * */ public function restAction(){ public function restAction() { // try { // $this->getOscarUserContextService()->checkToken(); // } catch( \Exception $e ){ Loading Loading @@ -66,7 +67,10 @@ class WorkPackageController extends AbstractOscarController // Mise à jour d'un déclarant if ($method == 'POST') { if( !$this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity) ){ if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity )) { return $this->getResponseBadRequest("'Vous n'avez pas le droit de faire ça"); } Loading @@ -83,7 +87,9 @@ class WorkPackageController extends AbstractOscarController } /** @var WorkPackage $workpackage */ $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($datas['workpackageid']); $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find( $datas['workpackageid'] ); if (!$workpackage) { return $this->getResponseBadRequest('Lot de travail introuvable.'); } Loading @@ -96,10 +102,12 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de modifier le lot de travail.'); } } else if (array_key_exists('workpackagepersonid', $datas)) { } else { if (array_key_exists('workpackagepersonid', $datas)) { // Enregistrement de la durée $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find($datas['workpackagepersonid']); $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find( $datas['workpackagepersonid'] ); if (!$workpackageperson) { return $this->getResponseBadRequest('Déclarant introuvable.'); } Loading @@ -110,24 +118,22 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de supprimer le déclarant.'); } } else { } else { return $this->getResponseBadRequest('Données incorrecte'); } } return $this->getResponseBadRequest('Données incorrecte'); } ///////////////////////////////////: AJOUT d'un déclarant if ($method == 'PUT') { $data = $this->getRequest()->getPost(); // parse_str(file_get_contents('php://input'), $_PUT); // // $this->>$this->getLoggerService()->info(print_r($_PUT, true)); $data = $this->getPutData(); $this->getLoggerService()->info("[PUT] Ajout d'un lot de travail : " . print_r($data, true)); if( $data['workpackageid'] == -1) { if ($data['workpackageid'] == -1 || !$data['workpackageid']) { $code = trim($data['code']); $this->getLoggerService()->info("Ajout d'un lot de travail '$code' dans '$activity'"); try { // On contrôle les code vide if ($code == '') { Loading @@ -142,15 +148,16 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->flush(); return $this->getResponseOk(); } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de créer le lot de travail.'); return $this->getResponseInternalError('Impossible de créer le lot de travail .' . $e->getMessage()); } } else { $this->getLoggerService()->info(print_r($data['workpackageid'], true)); } try { $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($data['idworkpackage']); $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find( $data['workpackageid'] ); if (!$workpackage) { return $this->getResponseBadRequest("Le lot de travail est introuvable."); } Loading @@ -159,12 +166,14 @@ class WorkPackageController extends AbstractOscarController } try { $this->getLoggerService()->info("AJOUT PERSON>WORKPACKAGE"); $this->getLoggerService()->info(print_r($data, true)); $person = $this->getEntityManager()->getRepository(Person::class)->find($data['idperson']); if (!$person) { return $this->getResponseBadRequest("Cette personne est introuvable."); } } catch (\Exception $e) { return $this->getResponseBadRequest("Cette personne est introuvable."); return $this->getResponseBadRequest("Impossible d'ajouter la personne au lot de travail : " . $e->getMessage()); } $declarant = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->findBy([ Loading @@ -190,8 +199,10 @@ class WorkPackageController extends AbstractOscarController } if ($method == 'DELETE') { if( !$this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity) ){ if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity )) { return $this->getResponseBadRequest("'Vous n'avez pas le droit de faire ça"); } Loading @@ -199,7 +210,9 @@ class WorkPackageController extends AbstractOscarController $workpackageid = $this->params()->fromQuery('workpackageid'); if ($workpackagepersonid) { $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find($workpackagepersonid); $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find( $workpackagepersonid ); if (!$workpackageperson) { return $this->getResponseBadRequest('Déclarant introuvable.'); } Loading @@ -210,8 +223,8 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de supprimer le déclarant.'); } } else if( $workpackageid ){ } else { if ($workpackageid) { $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($workpackageid); if (!$workpackage) { return $this->getResponseBadRequest('Lot de travail introuvable.'); Loading @@ -220,13 +233,16 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->remove($workpackage); $this->getEntityManager()->flush(); return $this->getResponseOk(); } catch (ForeignKeyConstraintViolationException $ex) { return $this->getResponseInternalError('Ce lot de travail est déjà utilisé pour des déclarations'); } catch( \Exception $e ){ } catch (ForeignKeyConstraintViolationException $ex) { return $this->getResponseInternalError( 'Ce lot de travail est déjà utilisé pour des déclarations' ); } catch (\Exception $e) { $this->getLoggerService()->error(get_class($e)); return $this->getResponseInternalError('Impossible de supprimer le lot de travail. ' . $e->getMessage()); return $this->getResponseInternalError( 'Impossible de supprimer le lot de travail. ' . $e->getMessage() ); } } } Loading Loading @@ -257,9 +273,18 @@ class WorkPackageController extends AbstractOscarController ->getQuery() ->getResult(); $declarant = $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_COMMIT, $activity) && $activity->hasDeclarant($this->getCurrentPerson()); $validateur = $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_TIMESHEET_VALIDATE_SCI, $activity) || $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_TIMESHEET_VALIDATE_ADM, $activity); $declarant = $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_COMMIT, $activity ) && $activity->hasDeclarant($this->getCurrentPerson()); $validateur = $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_TIMESHEET_VALIDATE_SCI, $activity ) || $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_TIMESHEET_VALIDATE_ADM, $activity ); /** @var WorkPackage $workPackage */ foreach ($workPackages as $workPackage) { $wp = $workPackage->toArray(); Loading @@ -268,11 +293,15 @@ class WorkPackageController extends AbstractOscarController $workpackages[] = $wp; } $activityFormatter = new ActivityToJsonFormatter(); // Accès générale $response = [ 'editable' => $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE), 'editable' => $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE ), 'isDeclarant' => $declarant, 'activity' => $activityFormatter->format($activity), 'isValidateur' => $validateur, 'workpackages' => $workpackages, 'persons' => array_values($persons) Loading @@ -288,7 +317,6 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError($e->getMessage()); } } //////////////////////////////////////////////////////////////////////////// Loading @@ -308,11 +336,19 @@ class WorkPackageController extends AbstractOscarController $entity->getActivity()->touch(); $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a supprimé jour le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $entity->getActivity()->getId()]); sprintf( "a supprimé jour le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $entity->getActivity()->getId()] ); } public function editAction() Loading Loading @@ -340,12 +376,20 @@ class WorkPackageController extends AbstractOscarController $entity->getActivity()->touch(); $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a modifié le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $entity->getActivity()->getId()]); sprintf( "a modifié le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $entity->getActivity()->getId()] ); } } $view = new ViewModel([ Loading @@ -356,12 +400,13 @@ class WorkPackageController extends AbstractOscarController $view->setTemplate('oscar/work-package/form.phtml'); return $view; } public function newAction() { $activity = $this->getEntityManager()->getRepository(Activity::class)->find($this->params()->fromRoute('idactivity')); $activity = $this->getEntityManager()->getRepository(Activity::class)->find( $this->params()->fromRoute('idactivity') ); $entity = new WorkPackage(); $entity->setActivity($activity); Loading @@ -384,13 +429,21 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a ajouté le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); sprintf( "a ajouté le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $activity->getId()] ); } } $view = new ViewModel([ Loading module/Oscar/src/Oscar/Utils/ViteUtils.php +4 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,10 @@ class ViteUtils $jsFile = $script; } else { if (!array_key_exists($script, $this->manifest)) { throw new \Exception("Script $script"); echo '<div class="alert alert-danger">' . 'Script manquant ' . $script . '</div>'; return; } $conf = $this->manifest[$script]; Loading module/Oscar/view/oscar/project-grant/timesheet.phtml +11 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,15 @@ Revenir sur la fiche </a> </h1> <div id="workpackageui" data-url="<?= $this->url('workpackage/rest', ['idactivity' => $activity->getId()]) ?>" data-isvalidator="1" data-editable="1" ></div> <?php $this->Vite()->addJs('src/workpackageui.js'); ?> <?php /**** <div> <small> du <strong><?= $this->moment($activity->getDateStart()) ?></strong> Loading Loading @@ -162,6 +171,7 @@ <i class="icon-archive"></i> Lots de travail </h2> <div id="workpackages"></div> <?php if ($this->grant()->privilege(\Oscar\Provider\Privileges::ACTIVITY_WORKPACKAGE_SHOW, $activity)): ?> Loading Loading @@ -227,4 +237,5 @@ </section> <?php endif; ?> /*******/ ?> </div> No newline at end of file module/Oscar/view/oscar/public/index.phtml +0 −8 Original line number Diff line number Diff line Loading @@ -2,14 +2,6 @@ // Récupération des informations utilisateur ?> <div class="bg-white banner"> <div class="container"> PLOP <div id="example"></div> <pre><?php $this->Vite()->addJs('src/example.js'); ?></pre> </div> <div class="container"> <div class="col-md-3"> Loading Loading
module/Oscar/src/Oscar/Controller/AbstractOscarController.php +54 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ use Symfony\Component\Yaml\Parser; use UnicaenAuth\Service\UserContext; use Zend\Http\Request; use Zend\Http\Response; use Zend\Json\Server\Request\Http; use Zend\Mvc\Controller\AbstractActionController; use Zend\Session\Container; use Zend\View\Model\JsonModel; Loading @@ -60,6 +61,59 @@ class AbstractOscarController extends AbstractActionController implements UseOsc { use UseOscarConfigurationServiceTrait, UseOscarUserContextServiceTrait, UseLoggerServiceTrait, UseEntityManagerTrait, UseActivityLogServiceTrait; public function getPutData() { $lines = file("php://input"); $re = '/Content-Disposition: form-data; name="(\w*)"/m'; $PUT = []; $currentName = null; $currentData = []; $separator = null; $needSkip = true; foreach($lines as $num => $line){ $this->getLoggerService()->info("[put process] ... line : '$line'"); if( $separator === null ){ $separator = trim($line); $this->getLoggerService()->info("[put process] init $line"); continue; } /* -----------------------------243741794428186209781894714397 -----------------------------243741794428186209781894714397-- */ if(str_contains($line, $separator)){ $this->getLoggerService()->info("[put process] set '$currentName' = ..."); $PUT[$currentName] = implode("\n\r", $currentData); $currentName = null; $currentData = []; continue; } if( preg_match_all($re, $line, $matches, PREG_SET_ORDER, 0) ){ $currentName = $matches[0][1]; $this->getLoggerService()->info("[put process] $currentName detected"); $needSkip = true; continue; } if( $needSkip ){ $this->getLoggerService()->info("[put process] SKIP"); $needSkip = false; continue; } $this->getLoggerService()->info("[put process] ADD LINE"); $currentData[] = $line; } return $PUT; } /** * Retourne le format de la requête sous la forme d'une chaîne. Loading
module/Oscar/src/Oscar/Controller/WorkPackageController.php +160 −107 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ use Oscar\Entity\WorkPackage; use Oscar\Entity\WorkPackagePerson; use Oscar\Exception\OscarException; use Oscar\Form\WorkPackageForm; use Oscar\Formatter\ActivityToJsonFormatter; use Oscar\Hydrator\WorkPackageHydrator; use Oscar\Provider\Privileges; use Zend\Http\Response; Loading @@ -36,8 +37,8 @@ class WorkPackageController extends AbstractOscarController /** * */ public function restAction(){ public function restAction() { // try { // $this->getOscarUserContextService()->checkToken(); // } catch( \Exception $e ){ Loading Loading @@ -66,7 +67,10 @@ class WorkPackageController extends AbstractOscarController // Mise à jour d'un déclarant if ($method == 'POST') { if( !$this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity) ){ if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity )) { return $this->getResponseBadRequest("'Vous n'avez pas le droit de faire ça"); } Loading @@ -83,7 +87,9 @@ class WorkPackageController extends AbstractOscarController } /** @var WorkPackage $workpackage */ $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($datas['workpackageid']); $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find( $datas['workpackageid'] ); if (!$workpackage) { return $this->getResponseBadRequest('Lot de travail introuvable.'); } Loading @@ -96,10 +102,12 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de modifier le lot de travail.'); } } else if (array_key_exists('workpackagepersonid', $datas)) { } else { if (array_key_exists('workpackagepersonid', $datas)) { // Enregistrement de la durée $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find($datas['workpackagepersonid']); $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find( $datas['workpackagepersonid'] ); if (!$workpackageperson) { return $this->getResponseBadRequest('Déclarant introuvable.'); } Loading @@ -110,24 +118,22 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de supprimer le déclarant.'); } } else { } else { return $this->getResponseBadRequest('Données incorrecte'); } } return $this->getResponseBadRequest('Données incorrecte'); } ///////////////////////////////////: AJOUT d'un déclarant if ($method == 'PUT') { $data = $this->getRequest()->getPost(); // parse_str(file_get_contents('php://input'), $_PUT); // // $this->>$this->getLoggerService()->info(print_r($_PUT, true)); $data = $this->getPutData(); $this->getLoggerService()->info("[PUT] Ajout d'un lot de travail : " . print_r($data, true)); if( $data['workpackageid'] == -1) { if ($data['workpackageid'] == -1 || !$data['workpackageid']) { $code = trim($data['code']); $this->getLoggerService()->info("Ajout d'un lot de travail '$code' dans '$activity'"); try { // On contrôle les code vide if ($code == '') { Loading @@ -142,15 +148,16 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->flush(); return $this->getResponseOk(); } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de créer le lot de travail.'); return $this->getResponseInternalError('Impossible de créer le lot de travail .' . $e->getMessage()); } } else { $this->getLoggerService()->info(print_r($data['workpackageid'], true)); } try { $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($data['idworkpackage']); $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find( $data['workpackageid'] ); if (!$workpackage) { return $this->getResponseBadRequest("Le lot de travail est introuvable."); } Loading @@ -159,12 +166,14 @@ class WorkPackageController extends AbstractOscarController } try { $this->getLoggerService()->info("AJOUT PERSON>WORKPACKAGE"); $this->getLoggerService()->info(print_r($data, true)); $person = $this->getEntityManager()->getRepository(Person::class)->find($data['idperson']); if (!$person) { return $this->getResponseBadRequest("Cette personne est introuvable."); } } catch (\Exception $e) { return $this->getResponseBadRequest("Cette personne est introuvable."); return $this->getResponseBadRequest("Impossible d'ajouter la personne au lot de travail : " . $e->getMessage()); } $declarant = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->findBy([ Loading @@ -190,8 +199,10 @@ class WorkPackageController extends AbstractOscarController } if ($method == 'DELETE') { if( !$this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity) ){ if (!$this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE, $activity )) { return $this->getResponseBadRequest("'Vous n'avez pas le droit de faire ça"); } Loading @@ -199,7 +210,9 @@ class WorkPackageController extends AbstractOscarController $workpackageid = $this->params()->fromQuery('workpackageid'); if ($workpackagepersonid) { $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find($workpackagepersonid); $workpackageperson = $this->getEntityManager()->getRepository(WorkPackagePerson::class)->find( $workpackagepersonid ); if (!$workpackageperson) { return $this->getResponseBadRequest('Déclarant introuvable.'); } Loading @@ -210,8 +223,8 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError('Impossible de supprimer le déclarant.'); } } else if( $workpackageid ){ } else { if ($workpackageid) { $workpackage = $this->getEntityManager()->getRepository(WorkPackage::class)->find($workpackageid); if (!$workpackage) { return $this->getResponseBadRequest('Lot de travail introuvable.'); Loading @@ -220,13 +233,16 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->remove($workpackage); $this->getEntityManager()->flush(); return $this->getResponseOk(); } catch (ForeignKeyConstraintViolationException $ex) { return $this->getResponseInternalError('Ce lot de travail est déjà utilisé pour des déclarations'); } catch( \Exception $e ){ } catch (ForeignKeyConstraintViolationException $ex) { return $this->getResponseInternalError( 'Ce lot de travail est déjà utilisé pour des déclarations' ); } catch (\Exception $e) { $this->getLoggerService()->error(get_class($e)); return $this->getResponseInternalError('Impossible de supprimer le lot de travail. ' . $e->getMessage()); return $this->getResponseInternalError( 'Impossible de supprimer le lot de travail. ' . $e->getMessage() ); } } } Loading Loading @@ -257,9 +273,18 @@ class WorkPackageController extends AbstractOscarController ->getQuery() ->getResult(); $declarant = $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_COMMIT, $activity) && $activity->hasDeclarant($this->getCurrentPerson()); $validateur = $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_TIMESHEET_VALIDATE_SCI, $activity) || $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_TIMESHEET_VALIDATE_ADM, $activity); $declarant = $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_COMMIT, $activity ) && $activity->hasDeclarant($this->getCurrentPerson()); $validateur = $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_TIMESHEET_VALIDATE_SCI, $activity ) || $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_TIMESHEET_VALIDATE_ADM, $activity ); /** @var WorkPackage $workPackage */ foreach ($workPackages as $workPackage) { $wp = $workPackage->toArray(); Loading @@ -268,11 +293,15 @@ class WorkPackageController extends AbstractOscarController $workpackages[] = $wp; } $activityFormatter = new ActivityToJsonFormatter(); // Accès générale $response = [ 'editable' => $this->getOscarUserContextService()->hasPrivileges(Privileges::ACTIVITY_WORKPACKAGE_MANAGE), 'editable' => $this->getOscarUserContextService()->hasPrivileges( Privileges::ACTIVITY_WORKPACKAGE_MANAGE ), 'isDeclarant' => $declarant, 'activity' => $activityFormatter->format($activity), 'isValidateur' => $validateur, 'workpackages' => $workpackages, 'persons' => array_values($persons) Loading @@ -288,7 +317,6 @@ class WorkPackageController extends AbstractOscarController } catch (\Exception $e) { return $this->getResponseInternalError($e->getMessage()); } } //////////////////////////////////////////////////////////////////////////// Loading @@ -308,11 +336,19 @@ class WorkPackageController extends AbstractOscarController $entity->getActivity()->touch(); $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a supprimé jour le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $entity->getActivity()->getId()]); sprintf( "a supprimé jour le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $entity->getActivity()->getId()] ); } public function editAction() Loading Loading @@ -340,12 +376,20 @@ class WorkPackageController extends AbstractOscarController $entity->getActivity()->touch(); $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a modifié le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $entity->getActivity()->getId()]); sprintf( "a modifié le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $entity->getActivity()->getId()] ); } } $view = new ViewModel([ Loading @@ -356,12 +400,13 @@ class WorkPackageController extends AbstractOscarController $view->setTemplate('oscar/work-package/form.phtml'); return $view; } public function newAction() { $activity = $this->getEntityManager()->getRepository(Activity::class)->find($this->params()->fromRoute('idactivity')); $activity = $this->getEntityManager()->getRepository(Activity::class)->find( $this->params()->fromRoute('idactivity') ); $entity = new WorkPackage(); $entity->setActivity($activity); Loading @@ -384,13 +429,21 @@ class WorkPackageController extends AbstractOscarController $this->getEntityManager()->flush(); $this->getActivityLogService()->addUserInfo( sprintf("a ajouté le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log()), 'Activity', $entity->getActivity()->getId()); $this->redirect()->toRoute('contract/show', ['id' => $activity->getId()]); sprintf( "a ajouté le lot de travail '%s:%s' dans l'activité %s", $entity->getCode(), $entity->getLabel(), $entity->getActivity()->log() ), 'Activity', $entity->getActivity()->getId() ); $this->redirect()->toRoute( 'contract/show', ['id' => $activity->getId()] ); } } $view = new ViewModel([ Loading
module/Oscar/src/Oscar/Utils/ViteUtils.php +4 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,10 @@ class ViteUtils $jsFile = $script; } else { if (!array_key_exists($script, $this->manifest)) { throw new \Exception("Script $script"); echo '<div class="alert alert-danger">' . 'Script manquant ' . $script . '</div>'; return; } $conf = $this->manifest[$script]; Loading
module/Oscar/view/oscar/project-grant/timesheet.phtml +11 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,15 @@ Revenir sur la fiche </a> </h1> <div id="workpackageui" data-url="<?= $this->url('workpackage/rest', ['idactivity' => $activity->getId()]) ?>" data-isvalidator="1" data-editable="1" ></div> <?php $this->Vite()->addJs('src/workpackageui.js'); ?> <?php /**** <div> <small> du <strong><?= $this->moment($activity->getDateStart()) ?></strong> Loading Loading @@ -162,6 +171,7 @@ <i class="icon-archive"></i> Lots de travail </h2> <div id="workpackages"></div> <?php if ($this->grant()->privilege(\Oscar\Provider\Privileges::ACTIVITY_WORKPACKAGE_SHOW, $activity)): ?> Loading Loading @@ -227,4 +237,5 @@ </section> <?php endif; ?> /*******/ ?> </div> No newline at end of file
module/Oscar/view/oscar/public/index.phtml +0 −8 Original line number Diff line number Diff line Loading @@ -2,14 +2,6 @@ // Récupération des informations utilisateur ?> <div class="bg-white banner"> <div class="container"> PLOP <div id="example"></div> <pre><?php $this->Vite()->addJs('src/example.js'); ?></pre> </div> <div class="container"> <div class="col-md-3"> Loading