46 $this->
tabs = $DIC->tabs();
47 $this->
access = $DIC->access();
48 $this->
user = $DIC->user();
50 $this->
ctrl = $DIC->ctrl();
51 $this->
toolbar = $DIC->toolbar();
53 $this->
logger = $DIC->logger()->crs();
62 $this->content_style_domain =
$DIC
92 $tpl =
new ilTemplate(
"tpl.container_page.html",
true,
true,
"Services/Container");
94 if ($ilAccess->checkAccess(
'write',
'', $this->getContainerObject()->getRefId())) {
98 $ilToolbar->addButton(
100 $ilCtrl->getLinkTargetByClass(get_class($this->
getContainerGUI()),
'reset')
127 $this->loc_settings->getInitialTest() &&
128 $this->loc_settings->isGeneralInitialTestVisible() &&
129 !$this->loc_settings->isInitialTestStart() &&
132 $this->output_html .= $this->
renderTest($this->loc_settings->getInitialTest(), 0,
true);
134 $this->loc_settings->getQualifiedTest() &&
135 $this->loc_settings->isGeneralQualifiedTestVisible()
137 $this->output_html .= $this->
renderTest($this->loc_settings->getQualifiedTest(), 0,
false);
140 $this->
showMaterials(self::MATERIALS_OTHER,
false, !$is_order);
148 $ilAccess->checkAccess(
'write',
'', $this->getContainerObject()->getRefId())
150 if ($has_results && !$is_manage && !$is_order) {
172 $info_tpl =
new ilTemplate(
'tpl.crs_objectives_view_info_table.html',
true,
true,
'Modules/Course');
173 $info_tpl->setVariable(
"INFO_STRING",
$lng->
txt(
'crs_objectives_info_' . $status));
175 $this->output_html .= $info_tpl->get();
187 $has_container_page =
false;
190 if ($output_html !==
"") {
191 $has_container_page =
true;
203 $this->objective_list_gui->setContainerObject($this->
getContainerGUI());
204 if (
$ilSetting->get(
"icon_position_in_lists") ===
"item_rows") {
205 $this->objective_list_gui->enableIcon(
true);
211 $acc->setUseSessionStorage(
true);
212 $acc->setAllowMultiOpened(
true);
214 $acc->setId(
"crsobjtv_" . $this->container_obj->getId());
216 $this->renderer->addCustomBlock(
'lobj',
$lng->
txt(
'crs_objectives'));
223 $has_lo_page =
false;
225 foreach ($objective_ids as $objective_id) {
229 !isset($lur_data[$objective_id]) ||
231 $this->container_obj->getId(),
240 if ($html = $this->
renderObjective($objective_id, $has_lo_page, $acc, $lur_data[$objective_id] ??
null)) {
241 $this->renderer->addItemToBlock(
'lobj',
'lobj', $objective_id, $html);
247 if (!$a_is_order && $obj_cnt > 1) {
248 $this->
showButton(
"",
$lng->
txt(
"crs_show_all_obj"),
"",
"crs_show_all_obj_btn");
249 $this->
showButton(
"",
$lng->
txt(
"crs_hide_all_obj"),
"",
"crs_hide_all_obj_btn");
250 $acc->setShowAllElement(
"crs_show_all_obj_btn");
251 $acc->setHideAllElement(
"crs_hide_all_obj_btn");
254 if (!$has_container_page && $has_lo_page) {
257 "LOCATION_CONTENT_STYLESHEET",
262 "LOCATION_SYNTAX_STYLESHEET",
270 $this->output_html .= $this->renderer->getHTML();
272 $this->renderer->resetDetails();
276 $this->output_html .=
"<div class='ilCrsObjAcc'>" . $acc->getHTML() .
"</div>";
283 bool $a_is_initial =
false
287 $tree =
$DIC->repositoryTree();
290 if ($a_test_ref_id) {
291 $node_data = $tree->getNodeData($a_test_ref_id);
293 if (!($node_data[
'child'] ??
false)) {
298 if ($a_objective_id) {
304 $node_data[
'objective_id'] = $a_objective_id;
305 $node_data[
'objective_status'] =
false;
314 ? $this->
lng->txt(
'crs_loc_itest_info')
315 : $this->
lng->txt(
'crs_loc_qtest_info')
319 $node_data[
'objective_id'] = 0;
322 $node_data[
'title'] = $title;
324 return "<div class='ilContObjectivesViewTestItem'>" . $this->
renderItem($node_data) .
"</div>";
330 bool $a_is_manage =
false,
331 bool $a_as_accordion =
false
335 $this->clearAdminCommandsDetermination();
337 if (is_array($this->items[
"_all"] ??
false)) {
338 $this->objective_map = $this->buildObjectiveMap();
342 foreach ($this->items[
"_all"] as $k => $item_data) {
343 if ($a_mode === self::MATERIALS_TESTS && $item_data[
'type'] !==
'tst') {
346 if ($item_data[
'type'] ===
'itgr') {
357 if (($this->rendered_items[$item_data[
"child"]] ??
false) !==
true &&
358 !$this->renderer->hasItem($item_data[
"child"] ?? 0)) {
359 $this->rendered_items[$item_data[
'child']] =
true;
362 $html = $this->renderItem($item_data, $position++, !($a_mode === self::MATERIALS_TESTS));
364 $item_r[] = [
"html" => $html,
"id" => $item_data[
"child"],
"type" => $item_data[
"type"]];
370 if (count($item_r) > 0) {
371 if (!$a_as_accordion) {
375 case self::MATERIALS_TESTS:
377 $this->renderer->addTypeBlock($block_id);
380 case self::MATERIALS_OTHER:
382 $this->renderer->addCustomBlock($block_id,
$lng->txt(
'crs_other_resources'));
388 $this->renderer->addCustomBlock($block_id,
$lng->txt(
'content'));
393 if ($a_mode !== self::MATERIALS_TESTS) {
394 $pos = $this->getItemGroupsHTML();
397 foreach ($item_r as $h) {
398 if (!$this->renderer->hasItem($h[
"id"])) {
399 $this->renderer->addItemToBlock($block_id, $h[
"type"], $h[
"id"], $h[
"html"]);
403 $this->output_html .= $this->renderer->getHTML();
407 case self::MATERIALS_TESTS:
411 case self::MATERIALS_OTHER:
412 $txt =
$lng->txt(
'crs_other_resources');
417 $acc->setId(
"crsobjtvmat" . $a_mode .
"_" . $this->container_obj->getId());
420 foreach ($item_r as $h) {
421 $acc_content[] = $h[
"html"];
423 $acc->addItem(
$txt, $this->buildAccordionContent($acc_content));
425 $this->output_html .= $acc->getHTML();
437 foreach ($objective_ids as $objective_id) {
439 $objective_map[
"material"][$mat_ref_id][] = $objective_id;
441 if (!isset($objective_map[
"names"][$objective_id])) {
443 $objective_map[
"names"][$objective_id] = $objective->getTitle();
449 $tst = $this->loc_settings->getInitialTest();
451 $objective_map[
"test_i"] = $tst;
453 $tst = $this->loc_settings->getQualifiedTest();
455 $objective_map[
"test_q"] = $tst;
462 $objective_map[
"test_ass"][$ass->getTestRefId()][$ass->getAssignmentType()][] = $title;
466 $objective_map[
"test_ass"][$ass->getTestRefId()][$ass->getAssignmentType()][] = $title;
470 return $objective_map;
476 $ilCtrl = $this->ctrl;
479 $item_ref_id = $a_item[
"ref_id"];
481 if (is_array($this->objective_map)) {
483 if (isset($this->objective_map[
"material"][$item_ref_id])) {
485 foreach ($this->objective_map[
"material"][$item_ref_id] as $objective_id) {
486 $ilCtrl->setParameterByClass(
'ilcourseobjectivesgui',
'objective_id', $objective_id);
487 $url = $ilCtrl->getLinkTargetByClass([
'illoeditorgui',
'ilcourseobjectivesgui'],
'edit');
488 $ilCtrl->setParameterByClass(
'ilcourseobjectivesgui',
'objective_id',
'');
491 'desc' =>
$lng->txt(
'crs_loc_tab_materials') .
': ',
494 'name' => $this->objective_map[
"names"][$objective_id]
498 if (($this->objective_map[
"test_i"] ?? 0) == $item_ref_id) {
499 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 1);
503 'link' => $ilCtrl->getLinkTargetByClass(
'illoeditorgui',
'testOverview'),
504 'name' =>
$lng->txt(
'crs_loc_tab_itest')
506 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 0);
508 if (($this->objective_map[
"test_q"] ?? 0) == $item_ref_id) {
509 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 2);
513 'link' => $ilCtrl->getLinkTargetByClass(
'illoeditorgui',
'testOverview'),
514 'name' =>
$lng->txt(
'crs_loc_tab_qtest')
516 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 0);
520 if (is_array($this->objective_map[
"test_ass"][$item_ref_id] ??
false)) {
521 foreach ($this->objective_map[
"test_ass"][$item_ref_id] as
$type => $items) {
523 $caption =
$lng->txt(
'crs_loc_tab_itest');
524 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 1);
526 $caption =
$lng->txt(
'crs_loc_tab_qtest');
527 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 2);
529 foreach ($items as $objtv_title) {
533 'link' => $ilCtrl->getLinkTargetByClass(
'illoeditorgui',
'testsOverview'),
534 'name' => $caption .
" (" . $this->
lng->txt(
"crs_loc_learning_objective") .
": " . $objtv_title .
")"
537 $ilCtrl->setParameterByClass(
'illoeditorgui',
'tt', 0);
550 if ($this->getContainerGUI()->isActiveOrdering()) {
555 elseif (!$this->getContainerGUI()->isActiveAdministrationPanel()) {
560 if ($a_item[
'objective_id'] ??
false) {
564 if ($this->loc_settings->getQualifiedTest() == $a_item[
'ref_id']) {
565 $a_item_list_gui->
setConditionTarget($this->getContainerObject()->getRefId(), (
int) $a_item[
'objective_id'],
'lobj');
568 if (!$fullfilled || $a_item[
'objective_status']) {
573 $this->getContainerObject()->
getId(),
575 $a_item[
'objective_id'],
579 $res = $this->updateResult(
$res, $a_item[
'ref_id'], $a_item[
'objective_id'],
$ilUser->getId());
581 if (
$res[
'is_final'] ??
false) {
585 $this->
lng->txt(
'crs_loc_passes_reached'),
589 } elseif ($this->loc_settings->getQualifiedTest() == $a_item[
'ref_id']) {
595 $this->
lng->txt(
'crs_loc_passes_left'),
596 (($poss_pass -
$res[
'tries']) > 0) ? ($poss_pass -
$res[
'tries']) : 1,
610 if ($this->loc_settings->getQualifiedTest() === $a_item_ref_id) {
622 if ($a_res[
'tries'] > 0) {
625 $a_res[
'is_final'] = 0;
641 bool &$a_has_lo_page,
643 array $a_lo_result =
null
648 $objective =
new ilCourseObjective($this->getContainerObject(), $a_objective_id);
659 foreach ($objectives_lm_obj->getMaterials() as $item) {
660 $sort_map[$item[
"lm_ass_id"]] = $item[
"position"];
663 $is_manage = $this->getContainerGUI()->isActiveAdministrationPanel();
664 $is_order = $this->getContainerGUI()->isActiveOrdering();
668 foreach ($items as $item) {
669 if ($this->getDetailsLevel($a_objective_id) < self::DETAILS_ALL) {
673 $item_list_gui2 = $this->getItemGUI($item);
674 $item_list_gui2->enableIcon(
true);
676 if ($is_order || $a_accordion) {
677 $item_list_gui2->enableCommands(
true,
true);
678 $item_list_gui2->enableProperties(
false);
681 $chapters = $objectives_lm_obj->getChapters();
682 if (count($chapters)) {
683 $has_sections =
false;
684 foreach ($chapters as $chapter) {
685 if ($chapter[
'ref_id'] != $item[
'child']) {
688 $has_sections =
true;
690 $title = $item[
'title'] .
692 " (" .
$lng->txt(
'obj_' . $chapter[
'type']) .
")";
694 $item_list_gui2->setDefaultCommandParameters([
695 "obj_id" => $chapter[
'obj_id'],
696 "focus_id" => $chapter[
'obj_id'],
697 "focus_return" => $this->container_obj->getRefId()
701 $item_list_gui2->setPositionInputField(
702 "[lobj][" . $a_objective_id .
"][" . $chapter[
'lm_ass_id'] .
"]",
703 sprintf(
'%d', $chapter[
'position'] * 10)
707 $sub_item_html = $item_list_gui2->getListItemHTML(
715 $sort_key = str_pad($chapter[
'position'], 5,
'0', STR_PAD_LEFT) .
"_" . strtolower($title) .
"_" . $chapter[
'lm_ass_id'];
716 $sort_content[$sort_key] = $sub_item_html;
720 $this->rendered_items[$item[
'child']] =
true;
722 if ($lm_ass_id = $objectives_lm_obj->isAssigned($item[
'ref_id'],
true)) {
724 $item_list_gui2->setPositionInputField(
725 "[lobj][" . $a_objective_id .
"][" . $lm_ass_id .
"]",
726 sprintf(
'%d', $sort_map[$lm_ass_id] * 10)
730 $sub_item_html = $item_list_gui2->getListItemHTML(
734 $item[
'description'] ??
''
738 $sort_key = str_pad($sort_map[$lm_ass_id], 5,
'0', STR_PAD_LEFT) .
"_" . strtolower($item[
'title']) .
"_" . $lm_ass_id;
739 $sort_content[$sort_key] = $sub_item_html;
743 if ($this->getDetailsLevel($a_objective_id) === self::DETAILS_ALL) {
744 $this->objective_list_gui->enableCommands(
false);
746 $this->objective_list_gui->enableCommands(
true);
750 $this->objective_list_gui->setPositionInputField(
751 "[lobj][" . $a_objective_id .
"][0]",
752 (
string) ($objective->__getPosition() * 10)
756 ksort($sort_content);
759 foreach ($sort_content as $sub_item_html) {
760 $this->objective_list_gui->addSubItemHTML($sub_item_html);
763 return $this->objective_list_gui->getObjectiveListItemHTML(
766 $objective->getTitle(),
767 $objective->getDescription(),
768 ($is_manage || $is_order)
772 $acc_content = $sort_content;
774 $initial_shown =
false;
779 $initial_test_obj_id &&
783 $acc_content[] = $this->renderTest(
788 $initial_shown =
true;
789 } elseif ($this->
getSettings()->hasSeparateQualifiedTests()) {
790 $acc_content[] = $this->renderTest(
799 $a_has_lo_page =
true;
801 $page_gui =
new ilLOPageGUI($objective->getObjectiveId());
803 $page_gui->setStyleId(
804 $this->content_style_domain->getEffectiveStyleId()
806 $page_gui->setPresentationTitle(
"");
807 $page_gui->setTemplateOutput(
false);
808 $page_gui->setHeader(
"");
810 $co_page =
"<div class='ilContObjectiveIntro'>" . $page_gui->showPage() .
"</div>";
813 $a_accordion->addItem(
814 $this->buildAccordionTitle($objective, $a_lo_result),
815 $co_page . $this->buildAccordionContent($acc_content),
816 ($this->request->getObjectiveId() === $objective->getObjectiveId())
831 $initial_status =
null;
838 foreach ($lur->getCourseResultsForUserPresentation() as $objective_id => $types) {
854 $result[
"initial_status"] = $initial_status;
859 $res[$objective_id] = $result;
880 int $a_perc_result =
null,
881 int $a_perc_limit =
null,
882 string $a_css =
null,
883 string $a_caption =
null,
884 string $a_url =
null,
885 string $a_tt_id =
null,
886 string $a_tt_txt =
null,
887 string $a_next_step =
null,
889 int $a_sub_style = 30
893 $tpl =
new ilTemplate(
"tpl.objective_progressbar.html",
true,
true,
"Services/Container");
895 if ($a_perc_result !==
null) {
896 $tpl->setCurrentBlock(
"statusbar_bl");
897 $tpl->setVariable(
"PERC_STATUS", $a_perc_result);
898 $tpl->setVariable(
"PERC_WIDTH", $a_perc_result);
899 $tpl->setVariable(
"PERC_COLOR", $a_css);
902 $limit_pos = (99 - $a_perc_limit) * -1;
903 $tpl->setVariable(
"LIMIT_POS", $limit_pos);
907 $tpl->setVariable(
"TT_ID", $a_tt_id);
909 $tpl->parseCurrentBlock();
915 $button->setCaption($a_caption,
false);
916 $button->setUrl($a_url);
918 $tpl->setCurrentBlock(
"statustxt_bl");
919 $tpl->setVariable(
"TXT_PROGRESS_STATUS", $button->render());
921 $tpl->setCurrentBlock(
"statustxt_no_link_bl");
922 $tpl->setVariable(
"TXT_PROGRESS_STATUS_NO_LINK", $a_caption);
924 $tpl->parseCurrentBlock();
928 #$tpl->setCurrentBlock("nstep_bl");
929 $tpl->setVariable(
"TXT_NEXT_STEP", $a_next_step);
930 #$tpl->parseCurrentBlock();
939 $tpl->setVariable(
"SUB_STYLE",
' style="padding-left: ' . $a_sub_style .
'px;"');
940 $tpl->setVariable(
"SUB_INIT", $a_sub);
963 ?
int $a_perc_result =
null,
964 ?
int $a_perc_limit =
null,
965 ?
int $a_compare_value =
null,
966 string $a_caption =
null,
967 string $a_url =
null,
968 string $a_tt_id =
null,
969 string $a_tt_txt =
null,
970 string $a_next_step =
null,
972 int $a_sub_style = 30,
973 string $a_main_text =
'',
974 string $a_required_text =
''
978 $tpl =
new ilTemplate(
"tpl.objective_progressmeter.html",
true,
true,
"Services/Container");
981 $lng->loadLanguageModule(
'crs');
985 if (is_numeric($a_perc_result)) {
986 $uiFactory =
$DIC->ui()->factory();
987 $uiRenderer =
$DIC->ui()->renderer();
989 $pMeter = $uiFactory->chart()->progressMeter()->standard(
991 (
int) $a_perc_result,
993 (
int) $a_compare_value
995 $tpl->setVariable(
'PROGRESS_METER', $uiRenderer->render($pMeter));
1001 $button->setCaption($a_caption,
false);
1002 $button->setUrl($a_url);
1004 $tpl->setCurrentBlock(
"statustxt_bl");
1005 $tpl->setVariable(
"TXT_PROGRESS_STATUS", $button->render());
1007 $tpl->setCurrentBlock(
"statustxt_no_link_bl");
1008 $tpl->setVariable(
"TXT_PROGRESS_STATUS_NO_LINK", $a_caption);
1010 $tpl->parseCurrentBlock();
1015 $tpl->setVariable(
"TXT_NEXT_STEP", $a_next_step);
1025 $tpl->setVariable(
"SUB_STYLE",
' style="padding-left: ' . $a_sub_style .
'px;"');
1026 $tpl->setVariable(
"SUB_INIT", $a_sub);
1036 bool $a_has_initial_test,
1037 int $a_objective_id,
1042 if ($a_lo_result ===
null) {
1043 $a_lo_result[
"type"] =
null;
1047 $lng->loadLanguageModule(
'crs');
1051 $is_qualified_initial =
1063 $is_qualified_initial) {
1064 if ($has_completed) {
1065 $next_step =
$lng->txt(
"crs_loc_progress_objective_complete");
1067 $next_step =
$lng->txt(
"crs_loc_progress_do_qualifying_again");
1070 elseif ($a_lo_result[
"status"] ??
false) {
1073 $lng->txt(
"crs_loc_progress_do_qualifying") :
1074 $lng->txt(
"crs_loc_suggested");
1076 $next_step = $a_has_initial_test ?
1077 $lng->txt(
"crs_loc_progress_no_result_do_initial") :
1078 $lng->txt(
"crs_loc_progress_no_result_no_initial");
1087 bool $a_has_initial_test,
1088 int $a_objective_id,
1090 bool $a_list_mode =
false,
1091 bool $a_sub =
false,
1092 string $a_tt_suffix =
null
1097 $lng->loadLanguageModule(
'crs');
1101 $tooltip_id =
"crsobjtvusr_" . $a_objective_id .
"_" . $a_lo_result[
"type"] .
"_" . ((
int) $a_sub);
1102 if ($a_tt_suffix !==
null) {
1103 $tooltip_id .=
"_" . $a_tt_suffix;
1107 $lng->txt(
"crs_loc_tt_info"),
1108 $a_lo_result[
"result_perc"] ??
'0',
1109 $a_lo_result[
"limit_perc"] ??
'0'
1118 $next_step = $progress_txt = $bar_color = $test_url = $initial_sub =
null;
1119 $compare_value =
null;
1121 if ($is_qualified ||
1122 $is_qualified_initial) {
1123 $progress_txt =
$lng->txt(
"crs_loc_progress_result_qtest");
1124 $tt_txt =
$lng->txt(
"crs_loc_tab_qtest") .
": " . $tt_txt;
1126 if ($has_completed) {
1127 $next_step =
$lng->txt(
"crs_loc_progress_objective_complete");
1128 $bar_color =
"ilCourseObjectiveProgressBarCompleted";
1131 if ($is_qualified &&
1132 $a_has_initial_test &&
1133 is_array($a_lo_result[
"initial"])) {
1134 $a_lo_result[
"initial"][
"itest"] = $a_lo_result[
"itest"];
1137 #$initial_sub = self::buildObjectiveProgressBar(true, $a_objective_id, $a_lo_result["initial"], true, true, $a_tt_suffix);
1138 $compare_value = $a_lo_result[
'initial'][
'result_perc'];
1141 $next_step =
$lng->txt(
"crs_loc_progress_do_qualifying_again");
1142 $bar_color =
"ilCourseObjectiveProgressBarFailed";
1146 elseif ($a_lo_result[
"status"] ??
false) {
1147 $progress_txt =
$lng->txt(
"crs_loc_progress_result_itest");
1148 $tt_txt =
$lng->txt(
"crs_loc_tab_itest") .
": " . $tt_txt;
1150 $bar_color =
"ilCourseObjectiveProgressBarNeutral";
1151 $next_step = $has_completed
1152 ?
$lng->txt(
"crs_loc_progress_do_qualifying")
1153 :
$lng->txt(
"crs_loc_suggested");
1157 $next_step = $a_has_initial_test
1158 ?
$lng->txt(
"crs_loc_progress_no_result_do_initial")
1159 :
$lng->txt(
"crs_loc_progress_no_result_no_initial");
1163 $relevant_test_id = ($a_lo_result[
"qtest"] ?? 0)
1164 ?: ($a_lo_result[
"itest"] ?? 0);
1165 if ($relevant_test_id) {
1169 $main_text =
$lng->txt(
'crs_loc_itest_info');
1171 $main_text =
$lng->txt(
'crs_loc_qtest_info');
1176 return self::renderProgressMeter(
1177 $a_lo_result[
"result_perc"] ??
null,
1178 $a_lo_result[
"limit_perc"] ??
null,
1187 (
bool) $initial_sub,
1192 $lng->txt(
'crs_lobj_pm_min_goal')
1198 array $a_lo_result =
null
1202 $renderer =
$DIC->ui()->renderer();
1203 $ui_factory =
$DIC->ui()->factory();
1205 $tpl =
new ilTemplate(
"tpl.objective_accordion_title.html",
true,
true,
"Services/Container");
1210 self::buildObjectiveProgressBar(
1211 $this->loc_settings->worksWithInitialTest(),
1218 $tpl->setVariable(
"TITLE", $this->
lng->txt(
"crs_loc_learning_objective") .
": " . trim($a_objective->
getTitle()));
1221 $initial_res =
null;
1222 $initial_lim =
null;
1223 if ($this->loc_settings->worksWithInitialTest()) {
1224 if (array_key_exists(
'initial', $a_lo_result)) {
1225 $initial_res = (
int) ($a_lo_result[
'initial'][
'result_perc'] ?? 0);
1226 $initial_lim = (
int) ($a_lo_result[
'initial'][
'limit_perc'] ?? 0);
1230 isset($a_lo_result[
'result_perc'])
1232 $initial_res = (
int) ($a_lo_result[
'result_perc'] ?? 0);
1233 $initial_lim = (
int) ($a_lo_result[
'limit_perc'] ?? 0);
1237 if ($initial_res !==
null) {
1239 $a_lo_result[
"itest"],
1240 $a_lo_result[
"user_id"]
1244 $tpl->setCurrentBlock(
'i_with_link');
1248 $ui_factory->button()->shy(
1249 $this->lng->txt(
'crs_objective_result_details'),
1254 $tpl->parseCurrentBlock();
1257 $tpl->setCurrentBlock(
'res_initial');
1261 $this->
lng->txt(
'crs_objective_result_summary_initial'),
1263 (
int) $initial_lim .
'%'
1266 $tpl->parseCurrentBlock();
1273 $qual_res = (
int) $a_lo_result[
'result_perc'];
1274 $qual_lim = (
int) $a_lo_result[
'limit_perc'];
1277 if ($qual_res !==
null) {
1279 $a_lo_result[
"qtest"],
1280 $a_lo_result[
"user_id"]
1284 $tpl->setCurrentBlock(
'q_with_link');
1288 $ui_factory->button()->shy(
1289 $this->lng->txt(
'crs_objective_result_details'),
1294 $tpl->parseCurrentBlock();
1296 $tpl->setCurrentBlock(
'res_qualifying');
1300 $this->
lng->txt(
'crs_objective_result_summary_qualifying'),
1302 (
int) $qual_lim .
'%'
1305 $tpl->parseCurrentBlock();
1308 $this->
logger->dump($a_lo_result);
1310 $summary = self::getObjectiveResultSummary(
1311 $this->loc_settings->worksWithInitialTest(),
1315 if ($summary !==
'') {
1316 $tpl->setCurrentBlock(
'objective_summary');
1317 $tpl->setVariable(
'SUMMARY_TXT', $summary);
1318 $tpl->parseCurrentBlock();
1329 $tpl =
new ilTemplate(
"tpl.objective_accordion_content.html",
true,
true,
"Services/Container");
1330 foreach ($a_items as $item) {
1331 $tpl->setCurrentBlock(
"items_bl");
1332 $tpl->setVariable(
"ITEM", $item);
1333 $tpl->parseCurrentBlock();
1341 string $a_target =
'',
1345 $ilCtrl = $this->ctrl;
1348 $ilToolbar->addButton(
1350 $ilCtrl->getLinkTarget($this->getContainerGUI(), $a_cmd),
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _checkAllConditionsOfTarget(int $a_target_ref_id, int $a_target_id, string $a_target_type="", int $a_usr_id=0)
checks wether all conditions of a target object are fulfilled
Parent class of all container content GUIs.
renderItem(array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="", string $item_group_list_presentation="")
Render an item.
initRenderer()
Init container renderer.
insertPageEmbeddedBlocks(string $a_output_html)
Insert blocks into container page.
ilGlobalTemplateInterface $tpl
clearAdminCommandsDetermination()
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder,...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilLOSettings $loc_settings
ilLOTestAssignments $test_assignments
buildAccordionTitle(ilCourseObjective $a_objective, array $a_lo_result=null)
renderObjective(int $a_objective_id, bool &$a_has_lo_page, ilAccordionGUI $a_accordion=null, array $a_lo_result=null)
updateResult(array $a_res, int $a_item_ref_id, int $a_objective_id, int $a_user_id)
static getObjectiveResultSummary(bool $a_has_initial_test, int $a_objective_id, ?array $a_lo_result)
Get objective result summary.
ilCourseObjectiveListGUI $objective_list_gui
addItemDetails(ilObjectListGUI $a_item_list_gui, array $a_item)
ILIAS Style Content Object ObjectFacade $content_style_domain
buildAccordionContent(array $a_items)
static buildObjectiveProgressBar(bool $a_has_initial_test, int $a_objective_id, array $a_lo_result, bool $a_list_mode=false, bool $a_sub=false, string $a_tt_suffix=null)
Render progressbar(s) for given objective and result data.
showButton(string $a_cmd, string $a_text, string $a_target='', string $a_id="")
renderTest(int $a_test_ref_id, int $a_objective_id, bool $a_is_initial=false)
getMainContent()
Get content HTML for main column, this one must be overwritten in derived classes.
getDetailsLevel(int $a_item_id)
static renderProgressMeter(?int $a_perc_result=null, ?int $a_perc_limit=null, ?int $a_compare_value=null, string $a_caption=null, string $a_url=null, string $a_tt_id=null, string $a_tt_txt=null, string $a_next_step=null, bool $a_sub=false, int $a_sub_style=30, string $a_main_text='', string $a_required_text='')
Render progress bar(s)
static renderProgressBar(int $a_perc_result=null, int $a_perc_limit=null, string $a_css=null, string $a_caption=null, string $a_url=null, string $a_tt_id=null, string $a_tt_txt=null, string $a_next_step=null, bool $a_sub=false, int $a_sub_style=30)
Render progress bar(s)
showObjectives(bool $a_is_order=false)
__construct(ilContainerGUI $a_container_gui)
showMaterials(int $a_mode=null, bool $a_is_manage=false, bool $a_as_accordion=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
class ilCourseObjectiveMaterials
static _getAssignedMaterials(int $a_objective_id)
static getStatus(int $a_usr_id, int $a_crs_id)
const IL_OBJECTIVE_STATUS_EMPTY
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static lookupMaxPasses(int $a_objective_id)
static lookupObjectiveTitle(int $a_objective_id, bool $a_add_description=false)
static _getObjectiveIds(int $course_id, bool $a_activated_only=false)
static _lookupTitle(int $a_obj_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const TYPE_TEST_QUALIFIED
static getInstanceByObjId(int $a_obj_id)
const TYPE_TEST_UNDEFINED
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getInstance(int $a_container_id)
static lookupRunExistsForObjective(int $a_test_id, int $a_objective_id, int $a_user_id)
static hasResults(int $a_container_id, int $a_user_id)
static lookupResult(int $a_course_obj_id, int $a_user_id, int $a_objective_id, int $a_tst_type)
static hasActiveRun(int $a_container_id, int $a_test_ref_id, int $a_objective_id)
static getTestResultLinkForUser(int $a_test_ref_id, int $a_user_id)
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
Component logger with individual log levels by component id.
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
static getSyntaxStylePath()
static checkCondition(int $a_trigger_obj_id, string $a_operator, string $a_value, int $a_usr_id)
check condition
static isParticipantsLastPassActive($testRefId, $userId)
static getItemsByObjective(int $objective_id)
Get objective items.
enableItemDetailLinks(bool $status)
enable item detail links E.g Direct links to chapters or pages
setDefaultCommandParameters(array $params)
setConditionTarget(int $ref_id, int $obj_id, string $target_type)
disableTitleLink(bool $status)
setItemDetailLinks(array $detail_links, string $intro_txt='')
set items detail links
enableCommands(bool $status, bool $std_only=false)
addCustomProperty(string $property="", string $value="", bool $alert=false, bool $newline=false)
enableProperties(bool $status)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static _existsAndNotEmpty(string $a_parent_type, int $a_id, string $a_lang="-")
checks whether page exists and is not empty (may return true on some empty pages)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
special template class to simplify handling of ITX/PEAR
if(!file_exists(getcwd() . '/ilias.ini.php'))
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc