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.",