37 : Response
38 {
40 $main_tpl =
$DIC->ui()->mainTemplate();
42 $uri = null;
43 $exc_domain =
$DIC->exercise()->internal()->domain();
44
45 $ref_id = $request->getReferenceId()?->toInt() ?? 0;
46 $additional_params = $request->getAdditionalParameters() ?? [];
47 $last = "";
48 if (count($additional_params) > 0) {
49 $last = (string) $additional_params[count($additional_params) - 1];
50 }
52 $action = null;
53 $member = null;
54
55 switch ($last) {
56 case "download":
57 case "setdownload":
58 $action = $additional_params[2] ?? "";
59 $member = $additional_params[1];
60 break;
61
62 case "given":
63 $action = $additional_params[2] ?? "";
64 $peer_id = (
int) ($additional_params[1] ?? 0);
65 break;
66
67 case "grades":
68 case "received":
69 $action = $additional_params[1] ?? "";
70 break;
71 }
72
74
75 $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class,
"ref_id",
$ref_id);
76
78
80 $ctrl->setParameterByClass(\ilExerciseManagementGUI::class,
"ass_id",
$ass_id);
81 }
82
83 switch ($action) {
84 case "grades":
85 $uri = $ctrl->getLinkTargetByClass(
86 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class],
87 "members"
88 );
89 break;
90
91 case "setdownload":
92 $ctrl->setParameterByClass(\ilExerciseHandlerGUI::class, "member_id", $member);
93 $uri = $ctrl->getLinkTargetByClass(
94 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilExerciseManagementGUI::class),
95 "waitingDownload"
96 );
97 break;
98
99 case "given":
100 $ctrl->setParameterByClass(\ilObjExerciseGUI::class,
"ass_id",
$ass_id);
101 $ctrl->setParameterByClass(\ilObjExerciseGUI::class, "peer_id", $peer_id);
102 $uri = $ctrl->getLinkTargetByClass(
103 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
104 \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
105 "editPeerReviewItem"
106 );
107 break;
108
109 case "received":
110 $ctrl->setParameterByClass(\ilObjExerciseGUI::class,
"ass_id",
$ass_id);
111 $uri = $ctrl->getLinkTargetByClass(
112 array(\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class,
113 \ilExSubmissionGUI::class, \ilExPeerReviewGUI::class),
114 "showReceivedPeerReview"
115 );
116 break;
117
118 default:
120 $ctrl->setParameterByClass(\ilObjExerciseGUI::class,
"ass_id",
$ass_id);
121 $uri = $ctrl->getLinkTargetByClass(
122 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class, \ilAssignmentPresentationGUI::class],
123 ""
124 );
125 } else {
126 $uri = $ctrl->getLinkTargetByClass(
127 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
128 "showOverview"
129 );
130 }
131 break;
132
133 }
135 $uri = $ctrl->getLinkTargetByClass(
136 [\ilExerciseHandlerGUI::class, \ilObjExerciseGUI::class],
137 "infoScreen"
138 );
139 }
140 if (is_null($uri)) {
141 if ($exc_domain->user()->isAnonymous() || $exc_domain->user()->getId() == 0) {
142 return $response_factory->loginFirst();
143 } else {
144 return $response_factory->cannot();
145 }
146 }
147 return $response_factory->can($uri);
148 }