36 $this->lng = $DIC->language();
38 $this->ctrl = $DIC->ctrl();
49 if ($this->state->areInstructionsVisible()) {
50 $inst = $this->ass->getInstructionPresentation();
54 "txt" => $this->lng->txt(
"exc_instruction"),
72 $ass_files = $this->ass->getFiles();
73 if (count($ass_files) > 0) {
76 foreach ($ass_files as $file) {
78 if ($readable_ref_id > 0) {
79 $ctrl->setParameterByClass(
"ilExSubmissionGUI",
"ref_id", $readable_ref_id);
80 $ctrl->setParameterByClass(
"ilExSubmissionGUI",
"ass_id", $this->ass->getId());
81 $ctrl->setParameterByClass(
"ilExSubmissionGUI",
"file", urlencode($file[
"name"]));
82 $dl_link = $ctrl->getLinkTargetByClass([
83 "ilExerciseHandlerGUI",
87 $ctrl->clearParametersByClass(
"ilExSubmissionGUI");
90 "txt" => $file[
"name"],
111 if (
$state->getGeneralStart() > 0) {
112 if (
$state->getRelativeDeadline()) {
113 $txt =
$lng->txt(
"exc_earliest_start_time");
117 $ret[
"start_time"] = [
119 "value" =>
$state->getGeneralStartPresentation()
125 if (
$state->inLateSubmissionPhase()) {
127 $late_dl =
$state->getOfficialDeadlinePresentation();
128 $late_dl =
"<br />" . sprintf(
$lng->txt(
"exc_late_submission_warning"), $late_dl);
129 $late_dl =
'<span class="warning">' . $late_dl .
'</span>';
132 if (
$state->getCommonDeadline()) {
133 $until =
$state->getCommonDeadlinePresentation();
137 $state->getOfficialDeadline() ==
$state->getCommonDeadline()) {
141 $prop =
$lng->txt(
"exc_edit_until");
142 if (
$state->exceededOfficialDeadline()) {
143 $prop =
$lng->txt(
"exc_ended_on");
146 $ret[
"until"] = [
"txt" => $prop,
"value" => $until];
147 } elseif (
$state->getRelativeDeadline()) {
148 $ret[
"time_after_start"] = [
"txt" =>
$lng->txt(
"exc_rem_time_after_start"),
"value" =>
$state->getRelativeDeadlinePresentation()];
151 if (
$state->getOfficialDeadline() >
$state->getCommonDeadline()) {
152 $until =
$state->getOfficialDeadlinePresentation();
159 $ret[
"individual_deadline"] = [
"txt" =>
$lng->txt(
"exc_individual_deadline"),
"value" => $until];
162 if (
$state->hasSubmissionStarted()) {
163 $ret[
"time_to_send"] = [
"txt" =>
$lng->txt(
"exc_time_to_send"),
"value" =>
"<b>" .
$state->getRemainingTimePresentation() .
"</b>"];
178 if ($submission->hasSubmitted()) {
180 $submitted = $submission->getSelectedObject();
181 if ($submitted[
"ts"] !=
"") {
182 $ret[
"submitted"] = [
183 "txt" => $this->lng->txt(
"exc_last_submission"),
getInstructionFileInfo($readable_ref_id=0)
Get instruction file info.
__construct(int $ass_id, int $user_id)
Constructor.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static getInstanceByIds($a_ass_id, $a_user_id=0)
Get instance by IDs (recommended for consumer code)
getSubmissionInfo()
Get submission info.
getInstructionInfo()
Get instruction info.
Exercise submission //TODO: This class has to much static methods related to delivered "files"...