diff --git a/src/plugin/drop-zone/Controller/API/DropController.php b/src/plugin/drop-zone/Controller/API/DropController.php index cea97d9a424..2a625e3735d 100644 --- a/src/plugin/drop-zone/Controller/API/DropController.php +++ b/src/plugin/drop-zone/Controller/API/DropController.php @@ -119,6 +119,7 @@ public function createAction(Dropzone $dropzone, User $user, Team $team = null): if (!empty($team)) { $this->checkTeamUser($team, $user); } + try { if (empty($team)) { // creates a User drop diff --git a/src/plugin/drop-zone/Listener/Resource/DropzoneListener.php b/src/plugin/drop-zone/Listener/Resource/DropzoneListener.php index 6f53d9759f2..90e8451da66 100644 --- a/src/plugin/drop-zone/Listener/Resource/DropzoneListener.php +++ b/src/plugin/drop-zone/Listener/Resource/DropzoneListener.php @@ -20,10 +20,11 @@ use Claroline\DropZoneBundle\Manager\DropzoneManager; use Claroline\TeamBundle\Manager\TeamManager; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\TranslatorInterface; class DropzoneListener { + /** @var TokenStorageInterface */ private $tokenStorage; /** @var DropzoneManager */ @@ -38,9 +39,6 @@ class DropzoneListener /** @var TranslatorInterface */ private $translator; - /** - * DropzoneListener constructor. - */ public function __construct( TokenStorageInterface $tokenStorage, DropzoneManager $dropzoneManager, diff --git a/src/plugin/drop-zone/Manager/DropzoneManager.php b/src/plugin/drop-zone/Manager/DropzoneManager.php index 344c01ab7cb..114f4f67638 100644 --- a/src/plugin/drop-zone/Manager/DropzoneManager.php +++ b/src/plugin/drop-zone/Manager/DropzoneManager.php @@ -277,7 +277,6 @@ public function getTeamDrop(Dropzone $dropzone, Team $team, User $user, $withCre if ($withCreation) { if (empty($drop)) { - $this->om->startFlushSuite(); $drop = new Drop(); $drop->setUser($user); $drop->setDropzone($dropzone); @@ -295,12 +294,9 @@ public function getTeamDrop(Dropzone $dropzone, Team $team, User $user, $withCre ['status' => AbstractEvaluation::STATUS_INCOMPLETE] ); } - $this->om->persist($drop); - $this->om->endFlushSuite(); $this->eventDispatcher->dispatch(new LogDropStartEvent($dropzone, $drop), 'log'); } elseif (!$drop->hasUser($user)) { - $this->om->startFlushSuite(); $drop->addUser($user); $this->resourceEvalManager->createResourceEvaluation( $dropzone->getResourceNode(), @@ -308,9 +304,10 @@ public function getTeamDrop(Dropzone $dropzone, Team $team, User $user, $withCre null, ['status' => AbstractEvaluation::STATUS_INCOMPLETE] ); - $this->om->persist($drop); - $this->om->endFlushSuite(); } + + $this->om->persist($drop); + $this->om->flush(); } return $drop; diff --git a/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/overview.jsx b/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/overview.jsx index 127ed0aca6d..261930037aa 100644 --- a/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/overview.jsx +++ b/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/overview.jsx @@ -111,7 +111,7 @@ OverviewComponent.propTypes = { }), errorMessage: T.string, teams: T.arrayOf(T.shape({ - id: T.number.isRequired, + id: T.string.isRequired, name: T.string.isRequired })), startDrop: T.func.isRequired, diff --git a/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/timeline.jsx b/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/timeline.jsx index 34909eac6a2..2b45e620a6a 100644 --- a/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/timeline.jsx +++ b/src/plugin/drop-zone/Resources/modules/resources/dropzone/overview/components/timeline.jsx @@ -37,12 +37,10 @@ const Timeline = props => title={constants.PLANNING_STATES.all[constants.STATE_NOT_STARTED]} active={constants.STATE_NOT_STARTED === props.state} > - - {trans('dropzone_start', {}, 'dropzone')} : {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.drop && props.planning.drop.length > 0 ? -
{displayDate(props.planning.drop[0], false, true)}
: - - - } -
+ {trans('dropzone_start', {}, 'dropzone')} : {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.drop && props.planning.drop.length > 0 ? +
{displayDate(props.planning.drop[0], false, true)}
: + - + } constants.STATE_ALLOW_DROP_AND_PEER_REVIEW ].indexOf(props.state) > -1} > - {trans('manager_defined_period', {}, 'dropzone')} + {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.drop && props.planning.drop.length > 0 ? + trans('date_range', { + start: displayDate(props.planning.drop[0], false, true), + end: displayDate(props.planning.drop[1], false, true) + }) : + trans('manager_defined_period', {}, 'dropzone') + } {constants.REVIEW_TYPE_PEER === props.reviewType && @@ -65,7 +69,13 @@ const Timeline = props => constants.STATE_ALLOW_DROP_AND_PEER_REVIEW ].indexOf(props.state) > -1} > - {trans('manager_defined_period', {}, 'dropzone')} + {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.review && props.planning.review.length > 0 ? + trans('date_range', { + start: displayDate(props.planning.review[0], false, true), + end: displayDate(props.planning.review[1], false, true) + }) : + trans('manager_defined_period', {}, 'dropzone') + } } @@ -74,12 +84,10 @@ const Timeline = props => title={constants.PLANNING_STATES.all[constants.STATE_FINISHED]} active={constants.STATE_FINISHED === props.state} > - - {trans('dropzone_end', {}, 'dropzone')} : {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.drop && props.planning.drop.length > 1 ? -
{displayDate(props.planning.drop[1], false, true)}
: - - - } -
+ {trans('dropzone_end', {}, 'dropzone')} : {props.planning.type === constants.PLANNING_TYPE_AUTO && props.planning.review && props.planning.review.length > 1 ? +
{displayDate(props.planning.review[1], false, true)}
: + - + } diff --git a/src/plugin/drop-zone/Resources/modules/resources/dropzone/store/selectors.js b/src/plugin/drop-zone/Resources/modules/resources/dropzone/store/selectors.js index d8084b50695..34261db1f01 100644 --- a/src/plugin/drop-zone/Resources/modules/resources/dropzone/store/selectors.js +++ b/src/plugin/drop-zone/Resources/modules/resources/dropzone/store/selectors.js @@ -168,13 +168,13 @@ const currentState = createSelector( //finished if end deposit date is reached if (currentDate > dropzone.planning.drop[1]) { currentState = constants.STATE_FINISHED - } else if(currentDate <= dropzone.planning.drop[1]){ + } else if (currentDate <= dropzone.planning.drop[1]){ currentState = constants.STATE_ALLOW_DROP } - } else if(constants.REVIEW_TYPE_PEER === dropzone.parameters.reviewType){ + } else if (constants.REVIEW_TYPE_PEER === dropzone.parameters.reviewType){ //peer review mode //finished if end deposit date and review end date are reached - if(currentDate > dropzone.planning.drop[1] ) { + if (currentDate > dropzone.planning.drop[1] ) { if (currentDate < dropzone.planning.review[0]) { currentState = constants.STATE_WAITING_FOR_PEER_REVIEW } else if (currentDate >= dropzone.planning.review[0] && currentDate <= dropzone.planning.review[1]) { @@ -182,12 +182,13 @@ const currentState = createSelector( } else { currentState = constants.STATE_FINISHED } - } else{ + } else { currentState = constants.STATE_ALLOW_DROP } } } } + return currentState } ) @@ -224,20 +225,9 @@ const dropDisabledMessages = createSelector( messages.push(trans('drop_disabled_finished', {}, 'dropzone')) break - // otherwise checks drop date boundaries default: - if (constants.PLANNING_TYPE_MANUAL === dropzone.planning.type) { - if (!isDropEnabledManual) { + if (constants.PLANNING_TYPE_MANUAL === dropzone.planning.type && !isDropEnabledManual) { messages.push(trans('drop_disabled_not_active', {}, 'dropzone')) - } - } else { - if (now(false) < dropzone.planning.drop[0]) { - // drop has not already started - messages.push(trans('drop_disabled_not_started', {}, 'dropzone')) - } else if (now(false) > dropzone.planning.drop[1]) { - // drop has already finished - messages.push(trans('drop_disabled_finished', {}, 'dropzone')) - } } break @@ -279,20 +269,9 @@ const peerReviewDisabledMessages = createSelector( messages.push(trans('review_disabled_finished', {}, 'dropzone')) break - // otherwise checks drop date boundaries default: - if (constants.PLANNING_TYPE_MANUAL === dropzone.planning.type) { - if (!isPeerReviewEnabledManual) { + if (constants.PLANNING_TYPE_MANUAL === dropzone.planning.type && !isPeerReviewEnabledManual) { messages.push(trans('review_disabled_not_active', {}, 'dropzone')) - } - } else { - if (now(false) < dropzone.planning.review[0]) { - // drop has not already started - messages.push(trans('review_disabled_not_started', {}, 'dropzone')) - } else if (now(false) > dropzone.planning.review[1]) { - // drop has already finished - messages.push(trans('review_disabled_finished', {}, 'dropzone')) - } } break diff --git a/src/plugin/drop-zone/Resources/translations/dropzone.fr.json b/src/plugin/drop-zone/Resources/translations/dropzone.fr.json index 34473add856..6ac2780fb06 100644 --- a/src/plugin/drop-zone/Resources/translations/dropzone.fr.json +++ b/src/plugin/drop-zone/Resources/translations/dropzone.fr.json @@ -49,7 +49,7 @@ "drop_comments": "Commentaires sur la production", "drop_date": "Date de dépôt", "drop_disabled_finished": "Le dépôt de productions est terminé.", - "drop_disabled_not_active": "Lé dépôt n'est pas activé.", + "drop_disabled_not_active": "Le dépôt n'est pas activé.", "drop_disabled_not_started": "Le dépôt de productions n'a pas encore commencé.", "drop_disabled_team_required": "Une équipe est requise.", "drop_disabled_user_required": "Un utilisateur est requis.",