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