34 protected \ILIAS\COPage\Xsl\XslManager
$xsl;
37 protected \ILIAS\Notes\DomainService
$notes;
84 protected \ILIAS\DI\UIServices
$ui;
99 string $a_export_format =
"",
100 bool $a_all_languages =
false,
101 string $a_export_dir =
"",
102 bool $claim_repo_context =
true,
103 ?array $query_params =
null,
104 bool $embed_mode =
false 108 $this->offline = ($a_export_format !=
"");
109 $this->export_all_languages = $a_all_languages;
110 $this->export_format = $a_export_format;
111 $this->offline_directory = $a_export_dir;
113 $this->
tabs = $DIC->tabs();
114 $this->
toolbar = $DIC->toolbar();
115 $this->
user = $DIC->user();
116 $this->rbacsystem = $DIC->rbac()->system();
117 $this->nav_history = $DIC[
"ilNavigationHistory"];
118 $this->
access = $DIC->access();
120 $this->
locator = $DIC[
"ilLocator"];
121 $this->tree = $DIC->repositoryTree();
122 $this->
help = $DIC[
"ilHelp"];
123 $this->global_screen = $DIC->globalScreen();
124 $this->lom_services = $DIC->learningObjectMetadata();
126 $lng = $DIC->language();
127 $rbacsystem = $DIC->rbac()->system();
128 $ilCtrl = $DIC->ctrl();
135 $this->
ui = $DIC->ui();
136 $this->tpl = $DIC->ui()->mainTemplate();
137 $this->frames = array();
138 $this->
ctrl = $ilCtrl;
139 $this->
ctrl->saveParameter($this, array(
"ref_id",
"transl",
"focus_id",
"focus_return"));
141 $this->cs = $DIC->contentStyle();
146 if (!$rbacsystem->
checkAccess(
"write", $this->requested_ref_id)) {
147 if ($this->lm->getOfflineStatus()) {
152 if ($claim_repo_context) {
153 $DIC->globalScreen()->tool()->context()->claim()->repository();
156 if (!$ilCtrl->isAsynch()) {
159 if ($this->service->getPresentationStatus()->isTocNecessary()) {
160 $DIC->globalScreen()->tool()->context()->current()->addAdditionalData(
166 $DIC->globalScreen()->tool()->context()->current()->addAdditionalData(
173 $ilCtrl->setParameter($this,
"embed_mode", 1);
176 "ref_id" => $this->lm->getRefId(),
179 $DIC->globalScreen()->tool()->context()->current()->addAdditionalData(
184 $this->reading_time_manager = new \ILIAS\LearningModule\ReadingTime\ReadingTimeManager();
185 $this->notes = $DIC->notes()->domain();
186 $this->xsl = $DIC->copage()->internal()->domain()->xsl();
187 $this->dom_util = $DIC->copage()->internal()->domain()->domUtil();
188 $this->notes_gui = $DIC->notes()->gui();
210 ?array $query_params =
null,
211 bool $embed_mode =
false 219 $this->export_all_languages,
220 $this->export_format,
225 $post = is_null($query_params)
229 $request = $DIC->learningModule()
238 $this->requested_obj_type = $request->getObjType();
239 $this->requested_ref_id = $request->getRefId();
240 $this->requested_transl = $request->getTranslation();
241 $this->requested_obj_id = $request->getObjId();
242 $this->requested_back_pg = $request->getBackPage();
243 $this->requested_frame = $request->getFrame();
244 $this->requested_search_string = $request->getSearchString();
245 $this->requested_focus_return = $request->getFocusReturn();
246 $this->requested_mob_id = $request->getMobId();
247 $this->requested_cmd = $request->getCmd();
248 $this->requested_pg_id = $request->getPgId();
249 $this->requested_pg_type = $request->getPgType();
250 $this->requested_notification_switch = $request->getNotificationSwitch();
251 $this->requested_type = $request->getType();
252 $this->requested_url = $request->getUrl();
254 $this->lm_set = $this->service->getSettings();
255 $this->lm_gui = $this->service->getLearningModuleGUI();
256 $this->lm = $this->service->getLearningModule();
257 $this->tracker = $this->service->getTracker();
258 $this->linker = $this->service->getLinker();
260 if ($request->getEmbedMode()) {
261 $this->embed_mode =
true;
265 $this->lang = $this->service->getPresentationStatus()->getLang();
267 $this->lm_tree = $this->service->getLMTree();
268 $this->focus_id = $this->service->getPresentationStatus()->getFocusId();
269 $this->ot = $this->lm->getObjectProperties()->getPropertyTranslations();
270 $this->content_style_gui = $this->cs->gui();
271 $this->content_style_domain = $this->cs->domain()->styleForRefId($this->lm->getRefId());
286 return $this->service->getTracker();
304 if (!$ilAccess->checkAccess(
"read",
"", $this->requested_ref_id) &&
305 (!(($this->
ctrl->getCmd() ==
"infoScreen" || $this->
ctrl->getNextClass() ==
"ilinfoscreengui")
306 && $ilAccess->checkAccess(
"visible",
"", $this->requested_ref_id)))) {
310 $next_class = $this->
ctrl->getNextClass($this);
311 $cmd = $this->
ctrl->getCmd(
"layout");
314 $this->
ctrl->setParameter($this,
"obj_id", $this->requested_obj_id);
315 $ilNavigationHistory->addItem($this->requested_ref_id, $this->
ctrl->getLinkTarget($this),
"lm");
316 $this->
ctrl->setParameter($this,
"obj_id", $obj_id);
318 switch ($next_class) {
323 case "ilinfoscreengui":
327 case "ilcommonactiondispatchergui":
329 $gui->enableCommentsSettings(
false);
330 $this->
ctrl->forwardCommand($gui);
334 $page_gui = $this->
getLMPageGUI($this->requested_obj_id);
336 $ret = $ilCtrl->forwardCommand($page_gui);
339 case "ilassgenfeedbackpagegui":
342 $ret = $ilCtrl->forwardCommand($page_gui);
345 case "ilglossarydefpagegui":
350 $ret = $ilCtrl->forwardCommand($page_gui);
353 case "illearningprogressgui":
357 $this->requested_ref_id,
360 $this->
ctrl->forwardCommand($new_gui);
363 if ($this->
ctrl->getCmd() !==
"editManual") {
364 $this->tpl->printToStdout();
371 $this->
ctrl->forwardCommand($rating_gui);
375 if ($this->requested_notification_switch > 0) {
376 switch ($this->requested_notification_switch) {
380 $this->
user->getId(),
389 $this->
user->getId(),
398 $this->
user->getId(),
407 $this->
user->getId(),
413 $ilCtrl->redirect($this,
"layout");
415 $ret = $this->$cmd();
436 public function nop(): void
440 public function attrib2arr(?DOMNamedNodeMap $a_attributes): array
443 if (!is_null($a_attributes)) {
444 foreach ($a_attributes as $attribute) {
445 $attr[$attribute->name] = $attribute->value;
476 string $a_xml =
"main.xml",
487 $xmlfile = file_get_contents(ILIAS_ABSOLUTE_PATH .
"/components/ILIAS/LearningModule/layouts/lm/" . $layout .
"/" . $a_xml);
490 $doc = $this->dom_util->docFromString($xmlfile, $error);
491 $this->layout_doc = $doc;
494 $path = (empty($this->requested_frame) || ($this->requested_frame ==
"_blank"))
495 ?
"/ilLayout/ilFrame[1]" 496 :
"//ilFrame[@name='" . $this->requested_frame .
"']";
497 $nodes = $this->dom_util->path($doc,
$path);
498 if (count($nodes) != 1) {
500 " path " .
$path .
" in " . $layout .
"/" . $a_xml .
". LM Layout is " . $this->lm->getLayout());
502 $node = $nodes->item(0);
506 $attributes = $this->
attrib2arr($node->attributes);
508 $this->frames = array();
511 if ((empty($attributes[
"template"]) || !empty($this->requested_obj_type))
512 && ($this->requested_frame !=
"_blank" || $this->requested_obj_type !=
"MediaObject")) {
518 if (empty($this->requested_obj_type)) {
519 $obj_type =
"PageObject";
526 foreach ($node->childNodes as $child) {
527 if ($child->nodeName == $obj_type) {
529 $attributes = $this->
attrib2arr($child->attributes);
537 $this->requested_frame .
"' and object type '" . $obj_type .
"'.");
545 $style_name = $ilUser->getPref(
"style") .
".css";
546 $this->tpl->setVariable(
"LOCATION_STYLESHEET",
"./style/" . $style_name);
552 foreach ($node->childNodes as $child) {
553 $child_attr = $this->
attrib2arr($child->attributes);
555 switch ($child->nodeName) {
563 $additional = $this->
ui->renderer()->render($this->additional_content);
564 $this->tpl->setContent($content . $additional);
571 case "ilLMNavigation":
586 $child_attr[
"inline"],
588 $child_attr[
"location"]
631 $this->tpl->addJavaScript(
"assets/js/LearningModule.js");
634 if ($this->requested_frame ==
"") {
636 $last_frame_url = $store->get(
"cf_" . $this->lm->getId());
637 if ($last_frame_url !=
"") {
638 $this->tpl->addOnLoadCode(
"il.LearningModule.setLastFrameUrl('" . $last_frame_url .
"', 'center_bottom');");
641 $this->tpl->addOnLoadCode(
"il.LearningModule.setSaveUrl('" .
642 $this->
ctrl->getLinkTarget($this,
"saveFrameUrl",
"",
false,
false) .
"'); 643 il.LearningModule.openInitFrames(); 646 $this->tpl->addOnLoadCode(
"il.LearningModule.setTocRefreshUrl('" .
647 $this->
ctrl->getLinkTarget($this,
"refreshToc",
"",
false,
false) .
"'); 665 return $this->
media();
670 $this->tpl =
new ilGlobalTemplate(
"tpl.fullscreen.html",
true,
true,
"components/ILIAS/LearningModule");
678 $this->tpl->printToStdout();
680 return $this->tpl->printToString();
687 $this->tpl =
new ilGlobalTemplate(
"tpl.glossary_term_output.html",
true,
true,
"components/ILIAS/LearningModule");
701 $js = $this->global_screen->layout()->meta()->getJs();
702 foreach ($js->getItemsInOrderOfDelivery() as $item) {
703 $this->tpl->addJavaScript($item->getContent());
707 $this->tpl->printToStdout();
709 return $this->tpl->printToString();
718 $this->tpl =
new ilGlobalTemplate(
"tpl.page_fullscreen.html",
true,
true,
"components/ILIAS/LearningModule");
728 $style_name = $ilUser->getPref(
"style") .
".css";
729 $this->tpl->setVariable(
"LOCATION_STYLESHEET",
"./style/" . $style_name);
734 $this->tpl->printToStdout();
736 return $this->tpl->get();
747 $exp = $fac->getExplorer($this->service,
"ilTOC");
748 $exp->handleCommand();
754 return $this->service->getPresentationStatus()->getLMPresentationTitle();
774 if ($this->
abstract) {
779 $tpl_menu =
new ilTemplate(
"tpl.lm_sub_menu.html",
true,
true,
"components/ILIAS/LearningModule");
788 if ($rbacsystem->
checkAccess(
"write", $this->requested_ref_id)) {
789 $tpl_menu->setCurrentBlock(
"edit_page");
791 $tpl_menu->setVariable(
793 ILIAS_HTTP_PATH .
"/ilias.php?baseClass=ilLMEditorGUI&ref_id=" . $this->requested_ref_id .
794 "&obj_id=" . $page_id .
"&to_page=1" 796 $tpl_menu->setVariable(
"EDIT_TXT", $this->
lng->txt(
"edit_page"));
797 $tpl_menu->parseCurrentBlock();
803 $this->tpl->setPermanentLink(
"pg",
null, $page_id .
"_" . $this->lm->getRefId());
806 $this->tpl->setVariable(
"SUBMENU", $tpl_menu->get());
822 bool $a_redraw =
false 824 if ($this->offline) {
831 $lm_id = $this->lm->getId();
834 $this->
lng->loadLanguageModule(
"content");
839 $this->lm->getType(),
840 $this->lm->getRefId(),
845 $this->
ctrl->setParameter($this,
"embed_mode", (
int) $this->embed_mode);
846 $this->
ctrl->setParameterByClass(
"ilcommentgui",
"embed_mode", (
int) $this->embed_mode);
847 $this->
ctrl->setParameterByClass(
"iltagginggui",
"embed_mode", (
int) $this->embed_mode);
849 $this->
ctrl->getLinkTarget($this,
"redrawHeaderAction",
"",
true),
851 $this->
ctrl->getLinkTargetByClass(
852 array(
"ilcommonactiondispatchergui",
"iltagginggui"),
861 $lg = $dispatcher->initHeaderAction();
863 $lg->enableNotes(
true);
864 if (!$this->embed_mode) {
865 $lg->enableComments($this->lm->publicNotes(),
false);
869 if ($this->lm->hasRating() && !$this->
offlineMode()) {
872 $this->
lng->txt(
"lm_rating"),
874 array(
"ilcommonactiondispatchergui",
"ilratinggui"),
882 $this->
ctrl->setParameter($this,
"ntf", 1);
884 $lg->addCustomCommand($this->
ctrl->getLinkTarget($this),
"cont_notification_deactivate_lm");
890 $this->
lng->txt(
"cont_notification_activated")
893 $this->
ctrl->setParameter($this,
"ntf", 2);
894 $lg->addCustomCommand($this->
ctrl->getLinkTarget($this),
"cont_notification_activate_lm");
897 $this->
ctrl->setParameter($this,
"ntf", 3);
898 $lg->addCustomCommand($this->
ctrl->getLinkTarget($this),
"cont_notification_deactivate_page");
903 $this->
lng->txt(
"cont_page_notification_activated")
906 $this->
ctrl->setParameter($this,
"ntf", 4);
907 $lg->addCustomCommand($this->
ctrl->getLinkTarget($this),
"cont_notification_activate_page");
912 $this->
lng->txt(
"cont_notification_deactivated")
916 $this->
ctrl->setParameter($this,
"ntf",
"");
919 if (!$this->offline) {
920 if ($ilAccess->checkAccess(
"write",
"", $this->requested_ref_id)) {
922 $link = $this->
ctrl->getLinkTargetByClass([
"ilLMEditorGUI",
"ilobjlearningmodulegui"],
"chapters");
924 $link = ILIAS_HTTP_PATH .
"/ilias.php?baseClass=ilLMEditorGUI&ref_id=" . $this->requested_ref_id .
927 $lg->addCustomCommand($link,
"edit_page");
932 return $lg->getHeaderAction($this->tpl);
935 return $lg->getHeaderAction() .
958 if (!$this->lm->publicNotes()) {
962 $next_class = $this->
ctrl->getNextClass($this);
969 $notes_gui = $this->notes_gui->getCommentsGUI($this->lm->getId(), $this->
getCurrentPageId(),
"pg");
970 $notes_gui->setUseObjectTitleHeader(
false);
972 if ($ilAccess->checkAccess(
"write",
"", $this->requested_ref_id) &&
974 $notes_gui->enablePublicNotesDeletion(
true);
977 $this->
ctrl->setParameter($this,
"frame", $this->requested_frame);
978 $this->
ctrl->setParameter($this,
"obj_id", $this->requested_obj_id);
980 $notes_gui->enablePrivateNotes();
981 if ($this->lm->publicNotes()) {
982 $notes_gui->enablePublicNotes();
985 $callback = array($this,
"observeNoteAction");
986 $notes_gui->addObserver($callback);
988 if ($next_class ==
"ilcommentgui") {
989 $html = $this->
ctrl->forwardCommand($notes_gui);
991 $html = $notes_gui->getListHTML();
999 $ltiview = $DIC[
"lti"];
1002 if (empty($this->requested_obj_id)) {
1003 $a_id = $this->lm_tree->getRootId();
1008 if (!$this->lm->cleanFrames()) {
1016 $frame_target =
"_top";
1021 if ($ltiview->isActive()) {
1024 $ilLocator->addRepositoryItems();
1027 $ilLocator->setOffline(
true);
1030 if ($this->lm_tree->isInTree($a_id)) {
1031 $path = $this->lm_tree->getPathFull($a_id);
1033 foreach (
$path as $key => $row) {
1034 if ($row[
"type"] !=
"pg") {
1035 if ($row[
"child"] != $this->lm_tree->getRootId()) {
1036 $ilLocator->addItem(
1041 $this->lm->isActiveNumbering(),
1042 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1050 $this->linker->getLink(
"layout", $row[
"child"], $frame_param,
"StructureObject"),
1054 $ilLocator->addItem(
1056 $this->linker->getLink(
"layout", 0, $frame_param),
1064 $ilLocator->addItem(
1066 $this->linker->getLink(
"layout", 0, $this->requested_frame)
1071 $ilLocator->addItem(
1072 $lm_obj->getTitle(),
1073 $this->linker->getLink(
"layout", $a_id, $frame_param),
1078 $this->tpl->setLocator();
1086 return $this->service->getNavigationStatus()->getCurrentPage();
1095 $this->content_style_gui->addCss(
1097 $this->lm->getRefId()
1111 bool $skip_nav =
false 1113 $this->fill_on_load_code =
true;
1116 $tpl =
new ilTemplate(
"tpl.lm_content.html",
true,
true,
"components/ILIAS/LearningModule/Presentation");
1125 $this->requested_obj_id,
1126 $this->requested_back_pg,
1127 $this->requested_frame,
1132 $navigation_renderer->renderTop();
1153 $this->requested_obj_id
1156 return $content_renderer->render();
1163 if ($this->lm->hasRatingPages() && !$this->
offlineMode()) {
1165 $rating_gui->setObject($this->lm->getId(),
"lm", $this->
getCurrentPageId(),
"lm");
1166 $rating_gui->setYourRatingText($this->
lng->txt(
"lm_rate_page"));
1169 $this->tpl->addOnLoadCode(
"il.LearningModule.setRatingUrl('" .
1170 $this->
ctrl->getLinkTarget($this,
"updatePageRating",
"",
true,
false) .
1172 $this->
ctrl->setParameter($this,
"pg_id",
"");
1174 $rating =
'<div id="ilrtrpg" style="text-align:right">' .
1175 $rating_gui->getHTML(
true,
true,
"il.LearningModule.saveRating(%rating%);") .
1184 $pg_id = $this->service->getRequest()->getPgId();
1185 if (!$this->
ctrl->isAsynch() || !$pg_id) {
1189 $rating = $this->service->getRequest()->getRating();
1210 $rating->setObject($this->lm->getId(),
"lm", $pg_id,
"lm");
1211 $rating->setYourRatingText($this->
lng->txt(
"lm_rate_page"));
1213 echo $rating->getHTML(
true,
true,
"il.LearningModule.saveRating(%rating%);");
1215 echo $this->tpl->getOnLoadCodeForAsynch();
1222 $this->content_style_domain->getEffectiveStyleId()
1226 $this->fill_on_load_code =
true;
1230 $this->fill_on_load_code =
false;
1237 "sourcecodeDownload",
1238 $this->getCurrentPageId()
1241 $this->
ctrl->setParameter($this,
"obj_id", $this->requested_obj_id);
1256 $term_gui->setPageLinker($this->linker);
1260 $ilCtrl->setParameter($this,
"pg_type",
"glo");
1262 $term_gui->output($this->
offlineMode(), $this->tpl);
1265 $ilCtrl->setParameter($this,
"pg_type",
"");
1276 $this->tpl->setCurrentBlock(
"ilMedia");
1278 $link_xml = $this->linker->getLinkXML($med_links);
1281 if (!empty($this->requested_pg_id)) {
1282 $pg_obj = $this->
getLMPage($this->requested_pg_id, $this->requested_pg_type);
1283 $pg_obj->buildDom();
1288 $xml .= $pg_obj->getMediaAliasElement($this->requested_mob_id);
1305 $mode = ($this->requested_cmd ==
"fullscreen")
1310 $this->linker->getLink(
"fullscreen");
1311 $params = array(
'mode' => $mode,
1312 'enlarge_path' => $enlarge_path,
1313 'link_params' =>
"ref_id=" . $this->lm->getRefId(),
1314 'fullscreen_link' => $fullscreen_link,
1316 'ref_id' => $this->lm->getRefId(),
1317 'pg_frame' => $pg_frame,
1318 'webspace_path' => $wb_path
1320 $output = $this->xsl->process($xml,
$params);
1323 $this->tpl->setVariable(
"MEDIA_CONTENT", $output);
1330 string $a_inline =
"",
1331 string $a_file =
"",
1332 string $a_location =
"" 1334 if ($a_inline !=
"") {
1335 $js_tpl =
new ilTemplate($a_inline,
true,
false, $a_location);
1336 $js = $js_tpl->get();
1337 $this->tpl->setVariable(
"INLINE_JS", $js);
1348 $this->
ctrl->redirectByClass(ilInfoScreenGUI::class,
"showSummary");
1360 string $a_active_tab =
"info" 1367 $this->tpl->loadStandardTemplate();
1374 if ($ilAccess->checkAccess(
"read",
"", $this->requested_ref_id)) {
1377 $ilLocator->addRepositoryItems();
1378 $this->tpl->setLocator();
1389 if (!$this->lm->isInfoEnabled()) {
1395 $this->
lng->loadLanguageModule(
"meta");
1398 $info->enablePrivateNotes();
1400 $info->enableNews();
1401 if ($ilAccess->checkAccess(
"write",
"", $this->requested_ref_id)) {
1403 $enable_internal_rss = $news_set->get(
"enable_rss_for_internal");
1405 $info->enableNewsEditing();
1407 if ($enable_internal_rss) {
1408 $info->setBlockProperty(
"news",
"settings",
true);
1413 $info->addMetaDataSections($this->lm->getId(), 0, $this->lm->getType());
1415 $this->
lng->loadLanguageModule(
"copg");
1416 $est_reading_time = $this->reading_time_manager->getReadingTime($this->lm->getId());
1417 if (!is_null($est_reading_time)) {
1419 $this->
lng->txt(
"copg_est_reading_time"),
1420 sprintf($this->
lng->txt(
"copg_x_minutes"), $est_reading_time)
1425 $this->tpl->setContent(
$info->getHTML());
1426 return $this->tpl->get();
1431 $this->tpl->printToStdout();
1444 if (!$this->lm->isActivePrintView() || !$this->lm->isActiveLMMenu()) {
1451 $tpl =
new ilTemplate(
"tpl.lm_print_selection.html",
true,
true,
"components/ILIAS/LearningModule");
1453 $this->
ctrl->setParameterByClass(
"illmpresentationgui",
"obj_id", $this->requested_obj_id);
1456 $nodes = $this->lm_tree->getSubTree($this->lm_tree->getNodeData($this->lm_tree->getRootId()));
1461 foreach ($nodes as $node) {
1469 $this->lm->getType(),
1470 (bool) $this->lm_set->get(
"time_scheduled_page_activation")
1473 if ($node[
"type"] ==
"pg" &&
1482 switch ($node[
"type"]) {
1488 $this->lm->getPageHeader(),
1489 $this->lm->isActiveNumbering(),
1490 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1497 $img_alt = $lng->
txt(
"icon") .
" " . $lng->
txt(
"pg");
1504 $img_alt = $lng->
txt(
"icon") .
" " . $lng->
txt(
"obj_lm");
1513 $this->lm->isActiveNumbering(),
1514 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1520 $img_alt = $lng->
txt(
"icon") .
" " . $lng->
txt(
"st");
1525 $this->lm->getRefId(),
1529 $text .=
" (" . $this->
lng->txt(
"cont_no_access") .
")";
1532 $this->nl->addListNode(
1544 if ($this->requested_obj_id > 0 && !$this->lm_tree->isInTree($this->requested_obj_id)) {
1547 $this->requested_obj_id,
1548 $this->lm->getPageHeader(),
1549 $this->lm->isActiveNumbering(),
1550 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1561 $this->nl->addListNode(
1572 $f = $this->
form->getHTMLAsync();
1576 $modal = $this->
ui->factory()->modal()->roundtrip(
1577 $this->
lng->txt(
"cont_print_view"),
1578 $this->
ui->factory()->legacy()->content($tpl->
get())
1580 echo $this->
ui->renderer()->render($modal);
1591 if ($this->lm->getRestrictForwardNavigation()) {
1592 $nodes = array_filter($nodes,
function ($node) use ($tracker) {
1606 $this->
form->setForceTopButtons(
true);
1612 $radg->addOption($op1);
1614 $radg->addOption($op2);
1616 $radg->addOption($op3);
1620 $op3->addSubItem($nl);
1622 $this->
form->addItem($radg);
1624 $this->
form->addCommandButton(
"showPrintView", $lng->
txt(
"cont_show_print_view"));
1625 $this->
form->setOpenTag(
false);
1626 $this->
form->setCloseTag(
false);
1628 $this->
form->setTitle(
" ");
1629 $this->
form->setFormAction($ilCtrl->getFormAction($this));
1638 $header_page_content =
"";
1639 $footer_page_content =
"";
1640 $chapter_title =
"";
1641 $did_chap_page_header =
false;
1643 $lom_paths = $this->lom_services->paths();
1644 $lom_data_helper = $this->lom_services->dataHelper();
1645 $lom_cp_helper = $this->lom_services->copyrightHelper();
1646 $lom_reader = $this->lom_services->read($this->lm->getId(), 0, $this->lm->getType());
1648 if (!$this->lm->isActivePrintView() || !$this->lm->isActiveLMMenu()) {
1656 $ilCtrl->getLinkTarget($this,
"layout")
1661 $sel_type = $this->service->getRequest()->getSelectedType();
1662 $sel_obj_ids = $this->service->getRequest()->getSelectedObjIds();
1663 if ($sel_type ==
"page") {
1664 if (!in_array($c_obj_id, $sel_obj_ids)) {
1665 $sel_obj_ids[] = $c_obj_id;
1668 if ($sel_type ==
"chapter" && $c_obj_id > 0) {
1669 $path = $this->lm_tree->getPathFull($c_obj_id);
1670 $chap_id =
$path[1][
"child"];
1672 $sel_obj_ids[] = $chap_id;
1679 $tpl =
new ilTemplate(
"tpl.lm_print_view.html",
true,
true,
"components/ILIAS/LearningModule");
1684 $nodes = $this->lm_tree->getSubTree($this->lm_tree->getNodeData($this->lm_tree->getRootId()));
1689 $glossary_links = array();
1690 $output_header =
false;
1691 $media_links = array();
1692 $last_page_title =
"";
1695 if ($this->lm->getFooterPage() > 0 && !$this->lm->getHideHeaderFooterPrint()) {
1697 $page_object_gui = $this->
getLMPageGUI($this->lm->getFooterPage());
1698 $page_object_gui->setStyleId(
1699 $this->content_style_domain->getEffectiveStyleId()
1703 $page_object_gui->setLinkFrame($this->requested_frame);
1704 $page_object_gui->setOutputMode(
"print");
1705 $page_object_gui->setPresentationTitle(
"");
1706 $page_object_gui->setFileDownloadLink(
"#");
1707 $page_object_gui->setFullscreenLink(
"#");
1708 $page_object_gui->setSourcecodeDownloadScript(
"#");
1709 $footer_page_content = $page_object_gui->showPage();
1712 if ($this->lm->getHeaderPage() > 0 && !$this->lm->getHideHeaderFooterPrint()) {
1714 $page_object_gui = $this->
getLMPageGUI($this->lm->getHeaderPage());
1715 $page_object_gui->setStyleId(
1716 $this->content_style_domain->getEffectiveStyleId()
1720 $page_object_gui->setLinkFrame($this->requested_frame);
1721 $page_object_gui->setOutputMode(
"print");
1722 $page_object_gui->setPresentationTitle(
"");
1723 $page_object_gui->setFileDownloadLink(
"#");
1724 $page_object_gui->setFullscreenLink(
"#");
1725 $page_object_gui->setSourcecodeDownloadScript(
"#");
1726 $header_page_content = $page_object_gui->showPage();
1731 if (count($sel_obj_ids) > 0) {
1732 foreach ($sel_obj_ids as $k) {
1733 if ($k > 0 && !$this->lm_tree->isInTree($k)) {
1735 $nodes[] = array(
"obj_id" => $k,
"type" =>
"pg",
"free" =>
true);
1740 $this->tpl->setOnScreenMessage(
'failure', $lng->
txt(
"cont_print_no_page_selected"),
true);
1741 $ilCtrl->redirect($this,
"showPrintViewSelection");
1744 foreach ($nodes as $node_key => $node) {
1748 $this->lm->getType(),
1749 (bool) $this->lm_set->get(
"time_scheduled_page_activation")
1751 if ($node[
"type"] ==
"pg" && !$active) {
1757 if ($node[
"depth"] <= $act_level) {
1758 if (in_array($node[
"obj_id"], $sel_obj_ids)) {
1759 $act_level = $node[
"depth"];
1766 if ($this->lm->getRestrictForwardNavigation()) {
1767 if ($this->
getTracker()->hasPredIncorrectAnswers($node[
"obj_id"])) {
1773 $this->lm->getRefId(),
1778 if ($node[
"type"] ==
"du") {
1779 $output_header =
true;
1783 if ($node[
"type"] ==
"st") {
1788 $chapter_title = $chap->_getPresentationTitle(
1791 $this->lm->isActiveNumbering(),
1792 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1803 if ($nodes[$node_key + 1][
"type"] ==
"pg") {
1806 $header_page_content
1808 $did_chap_page_header =
true;
1818 if ($node[
"type"] ===
"pg") {
1823 $page_id = $node[
"obj_id"];
1825 $page_object = $page_object_gui->getPageObject();
1826 $page_object_gui->setStyleId(
1827 $this->content_style_domain->getEffectiveStyleId()
1832 $lm_pg_obj->setLMId($this->lm->getId());
1835 $page_object_gui->setLinkFrame($this->requested_frame);
1836 $page_object_gui->setOutputMode(
"print");
1837 $page_object_gui->setPresentationTitle(
"");
1842 $lm_pg_obj->getId(),
1843 $this->lm->getPageHeader(),
1844 $this->lm->isActiveNumbering(),
1845 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
1853 $page_title = trim(substr($page_title, 0, strrpos($page_title,
" ")));
1858 if ($this->lm->isActiveNumbering()) {
1859 $chapter_title = trim(substr(
1861 strpos($chapter_title,
" ")
1865 if ($page_title != $chapter_title && $page_title !== $last_page_title) {
1866 $page_object_gui->setPresentationTitle($page_title);
1868 $last_page_title = $page_title;
1872 $hcont = $header_page_content;
1873 $fcont = $footer_page_content;
1876 if ($did_chap_page_header) {
1879 if (($nodes[$node_key + 1][
"type"] ??
"") ==
"pg" &&
1880 !($nodes[$node_key + 1][
"depth"] <= $act_level
1881 && !in_array($nodes[$node_key + 1][
"obj_id"], $sel_obj_ids))) {
1886 $page_object_gui->setFileDownloadLink(
"#");
1887 $page_object_gui->setFullscreenLink(
"#");
1888 $page_object_gui->setSourcecodeDownloadScript(
"#");
1889 $page_content = $page_object_gui->showPage();
1893 $hcont . $page_content . $fcont
1898 $hcont . $page_content . $fcont .
"<br />" 1901 $chapter_title =
"";
1911 foreach ($int_links as $key => $link) {
1912 if ($link[
"type"] ==
"git" &&
1913 ($link[
"inst"] ==
IL_INST_ID || $link[
"inst"] == 0)) {
1914 $glossary_links[$key] = $link;
1916 if ($link[
"type"] ==
"mob" &&
1917 ($link[
"inst"] ==
IL_INST_ID || $link[
"inst"] == 0)) {
1919 $mob_links[$key] = $link;
1929 $page_object->buildDom();
1930 $links = $page_object->getInternalLinks();
1931 $tf = $link[
"TargetFrame"] ??
"";
1932 foreach ($links as $link) {
1933 if ($link[
"Type"] ===
"MediaObject" 1935 && $tf !==
"None") {
1936 $media_links[] = $link;
1948 if (count($glossary_links) > 0 && !$this->lm->isActivePreventGlossaryAppendix()) {
1952 foreach ($glossary_links as $key => $link) {
1954 $terms[$term .
":" . $key] = array(
"key" => $key,
"link" => $link,
"term" => $term);
1959 foreach ($terms as $t) {
1966 $page_gui->setTemplateOutput(
false);
1967 $page_gui->setOutputMode(
"print");
1970 $page_gui->setFileDownloadLink(
"#");
1971 $page_gui->setFullscreenLink(
"#");
1972 $page_gui->setSourcecodeDownloadScript(
"#");
1973 $output = $page_gui->showPage();
1992 $annex_title = $this->
lng->txt(
"cont_annex") .
" " .
1993 chr(64 + $annex_cnt) .
": " . $this->
lng->txt(
"glo");
1997 $annexes[] = $annex_title;
2001 if (count($media_links) > 0) {
2002 foreach ($media_links as $media) {
2003 if (substr($media[
"Target"], 0, 4) ==
"il__") {
2004 $arr = explode(
"_", $media[
"Target"]);
2005 $id = $arr[count($arr) - 1];
2008 $med_item = $med_obj->getMediaItem(
"Standard");
2009 if (is_object($med_item)) {
2010 if (is_int(strpos($med_item->getFormat(),
"image"))) {
2014 if ($med_item->getLocationType() ==
"LocalFile") {
2018 "/" . $med_item->getLocation()
2023 $med_item->getLocation()
2027 if ($med_item->getCaption() !=
"") {
2028 $tpl->
setVariable(
"IMG_TITLE", $med_item->getCaption());
2030 $tpl->
setVariable(
"IMG_TITLE", $med_obj->getTitle());
2041 $annex_title = $this->
lng->txt(
"cont_annex") .
" " .
2042 chr(64 + $annex_cnt) .
": " . $this->
lng->txt(
"cont_ref_images");
2043 $tpl->
setVariable(
"TXT_REF_IMAGES", $annex_title);
2046 $annexes[] = $annex_title;
2050 if ($output_header) {
2053 if ($this->lm->getDescription() !=
"none") {
2056 $lom_reader->firstData($lom_paths->firstDescription())->value()
2063 foreach ($nodes2 as $node2) {
2064 if ($node2[
"type"] ==
"st" 2066 $this->lm->getRefId(),
2070 for ($j = 1; $j < $node2[
"depth"]; $j++) {
2081 $this->lm->isActiveNumbering(),
2082 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
2093 foreach ($annexes as $annex) {
2111 $authors = $lom_data_helper->makePresentableAsList(
2113 ...$lom_reader->allData($lom_paths->authors())
2115 if ($authors !=
"") {
2116 $this->
lng->loadLanguageModule(
"meta");
2124 if ($lom_cp_helper->hasPresetCopyright($lom_reader)) {
2125 $copyright = $this->
ui->renderer()->render(
2126 $lom_cp_helper->readPresetCopyright($lom_reader)->presentAsUIComponents()
2129 $copyright = $lom_cp_helper->readCustomCopyright($lom_reader);
2131 if ($copyright !=
"") {
2132 $this->
lng->loadLanguageModule(
"meta");
2134 $tpl->
setVariable(
"TXT_COPYRIGHT", $this->
lng->txt(
"meta_copyright"));
2138 $this->tpl->setContent($tpl->
get());
2139 $this->tpl->addOnLoadCode(
"il.Util.print();");
2140 $this->tpl->printToStdout();
2149 $page_gui->downloadFile();
2161 int $a_return_ref_id
2163 return "ilias.php?baseClass=ilLMPresentationGUI&ref_id=" . $a_ref_id .
"&obj_id=" . $a_obj_id .
"&focus_id=" .
2164 $a_obj_id .
"&focus_return=" . $a_return_ref_id;
2173 $tpl =
new ilTemplate(
"tpl.page_message_screen.html",
true,
true,
"components/ILIAS/LearningModule");
2174 $tpl->
setVariable(
"TXT_PAGE_NO_PUBLIC_ACCESS", $a_content);
2176 $this->tpl->setVariable(
"PAGE_CONTENT", $tpl->
get());
2207 return $this->
ctrl->getLinkTarget($this,
"");
2228 $directory = $this->
getOfflineDirectory() .
"/codefiles/" . $page_id .
"/" . $paragraph_id;
2230 $file = $directory .
"/" . $title;
2231 if (!($fp = fopen($file,
"w+"))) {
2232 die(
"<strong>Error</strong>: Could not open \"" . $file .
"\" for writing" .
2233 " in <strong>" . __FILE__ .
"</strong> on line <strong>" . __LINE__ .
"</strong><br />");
2248 $concrete_lang = $this->service->getPresentationStatus()->getConcreteLang();
2250 return new ilLMPageGUI($a_id, 0,
false, $this->lang, $concrete_lang);
2253 return new ilLMPageGUI($a_id, 0,
false, $this->ot->getDefaultLanguage(), $concrete_lang);
2255 return new ilLMPageGUI($a_id, 0,
false,
"", $concrete_lang);
2262 $type = ($a_type ==
"mep")
2270 $lang = $this->ot->getDefaultLanguage();
2278 return new ilLMPage($a_id, 0, $lang);
2287 $exp = $this->
ilTOC();
2289 echo $exp->getHTML() .
2290 "<script>" . $exp->getOnLoadCode() .
"</script>";
2305 $note = $this->notes->getById($a_note_id);
2306 $text = $note->getText();
2316 $notification->send();
2322 int $current_page_id
2325 $menu_editor->setObjId($this->lm->getId());
2334 $this->export_all_languages,
2344 function ($additional_content) {
2348 $navigation_renderer->
render();
2357 switch ($pars[
"cmd"]) {
2359 $tpl =
new ilTemplate(
"tpl.embedded_view.html",
true,
true,
"components/ILIAS/LearningModule");
static getWebspaceDir(string $mode="filesystem")
get webspace directory
showMessageScreen(string $a_content)
determineLayout()
Determine layout.
static _lookupActive(int $a_id, string $a_parent_type, bool $a_check_scheduled_activation=false, string $a_lang="-")
lookup activation status
bool $chapter_has_no_active_page
static getStyleSheetLocation(string $mode="output", string $a_css_name="")
get full style sheet file name (path inclusive) of current user
This class represents an option in a radio group.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
static _getPresentationTitle(int $a_st_id, string $a_mode=self::CHAPTER_TITLE, bool $a_include_numbers=false, bool $a_time_scheduled_activation=false, bool $a_force_content=false, int $a_lm_id=0, string $a_lang="-", bool $a_include_short=false)
static _getTargetsOfSource(string $a_source_type, int $a_source_id, string $a_source_lang="-")
Get all targets of a source object (e.g., a page)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
bool $export_all_languages
static getContentPrintStyle()
array $additional_content
downloadFile()
download file of file lists
ilLMPresentationService $service
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilObjLearningModuleGUI $lm_gui
static addJavaScript(?ilGlobalTemplate $main_tpl=null)
Add javascript files that are necessary to run accordion.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getHeaderAction(bool $a_redraw=false)
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...
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
special template class to simplify handling of ITX/PEAR
getSafePostCommands()
This method must return a list of safe POST commands.
setOutputMode(string $a_mode=self::PRESENTATION)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
hasPredIncorrectAnswers(int $a_obj_id, bool $a_ignore_unlock=false)
Has predecessing incorrect answers.
ILIAS Style Content Service $cs
Class handles translation mode for an object.
setSystemStyle()
Set system style.
static getInstance(ilObjLearningModule $a_content_obj, int $a_id=0, bool $a_halt=true)
ILIAS GlobalScreen Services $global_screen
showNavRestrictionDueToQuestions()
Show message if navigation to page is not allowed due to unanswered questions.
__construct(string $a_export_format="", bool $a_all_languages=false, string $a_export_dir="", bool $claim_repo_context=true, ?array $query_params=null, bool $embed_mode=false)
ILIAS COPage Xsl XslManager $xsl
ILIAS Notes DomainService $notes
printToString()
Use this method to get the finally rendered page as string.
loadLanguageModule(string $a_module)
Load language module.
ILIAS COPage Dom DomUtil $dom_util
setOfflineDirectory(string $offdir)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
attrib2arr(?DOMNamedNodeMap $a_attributes)
setVariable(string $variable, $value='')
Sets the given variable to the given value.
handleCodeParagraph(int $page_id, int $paragraph_id, string $title, string $text)
store paragraph into file directory files/codefile_$pg_id_$paragraph_id/downloadtitle ...
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
initScreenHead(string $a_active_tab="info")
ilNavigationHistory $nav_history
ILIAS Style Content GUIService $content_style_gui
static resetRatingForUserAndObject(int $a_obj_id, string $a_obj_type, int $a_sub_obj_id, string $a_sub_obj_type, int $a_user_id)
Reset rating for a user and an object.
showInfoScreen()
info screen call from inside learning module
setStyleId(int $a_styleid)
refreshToc()
Refresh toc (called if questions have been answered correctly)
ilLMSubMenu()
output learning module submenu
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
string $requested_focus_return
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
string $requested_obj_type
static writeRatingForUserAndObject(int $a_obj_id, string $a_obj_type, ?int $a_sub_obj_id, ?string $a_sub_obj_type, int $a_user_id, int $a_rating, int $a_category_id=0)
Write rating for a user and an object.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilLMPresentationGUI GUI class for learning module presentation.
getSourcecodeDownloadLink()
getCurrentFrameSet()
get frames of current frame set
checkAccess(string $a_operations, int $a_ref_id, string $a_type="")
checkAccess represents the main method of the RBAC-system in ILIAS3 developers want to use With this ...
initByRequest(?array $query_params=null, bool $embed_mode=false)
Init services and this class by request params.
getLMPage(int $a_id, string $a_type="")
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static addCss()
Add required css.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static setNotification(int $type, int $user_id, int $id, bool $status=true)
Set notification status for object and user.
static _checkPreconditionsOfPage(int $cont_ref_id, int $cont_obj_id, int $page_id)
checks whether the preconditions of a page are fulfilled or not
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
observeNoteAction(int $a_lm_id, int $a_page_id, string $a_type, string $a_action, int $a_note_id)
Generate new ilNote and send Notifications to the users informing that there are new comments in the ...
layout(string $a_xml="main.xml", bool $doShow=true)
filterNonAccessibleNode(array $nodes)
static initjQuery(?ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
Extension of ilPageObjectGUI for learning modules.
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
static _lookGlossaryTerm(int $term_id)
get glossary term
setBackTarget(string $a_title, string $a_target, string $a_frame="")
offlineMode()
checks whether offline content generation is activated
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
ilLMPresentationLinker $linker
string $requested_search_string
setFullscreenLink(string $a_fullscreen_link)
ilJavaScript(string $a_inline="", string $a_file="", string $a_location="")
getCurrentPageId()
Get the current page id.
setSourcecodeDownloadScript(string $script_name)
static getSyntaxStylePath()
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
showPrintViewSelection()
show selection screen for print view
printToStdout(string $part=self::DEFAULT_BLOCK, bool $has_tabs=true, bool $skip_main_menu=false)
ILIAS Notes GUIService $notes_gui
Last visited history for repository items.
getFocusLink(int $a_ref_id, int $a_obj_id, int $a_return_ref_id)
Get focused link (used in learning objectives courses)
ILIAS LearningModule ReadingTime ReadingTimeManager $reading_time_manager
nop()
this dummy function is needed for offline package creation
getOnLoadCodeForAsynch()
Get js onload code for ajax calls.
basicPageGuiInit(\ilPageObjectGUI $a_page_gui)
string $requested_pg_type
string $offline_directory
setFileDownloadLink(string $a_download_link)
showNoPageAccess()
Show info message, if page is not accessible in public area.
getUnsafeGetCommands()
This method must return a list of unsafe GET commands.
static _exists(int $a_id)
checks wether a lm content object with specified id exists or not
form( $class_path, string $cmd, string $submit_caption="")
showNoPublicAccess()
Show info message, if page is not accessible in public area.
getContent(bool $skip_nav=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
LOMServices $lom_services
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
renderTabs(string $active_tab, int $current_page_id)
static _getPresentationTitle(int $a_pg_id, string $a_mode=self::CHAPTER_TITLE, bool $a_include_numbers=false, bool $a_time_scheduled_activation=false, bool $a_force_content=false, int $a_lm_id=0, string $a_lang="-", bool $a_include_short=false)
presentation title doesn't have to be page title, it may be chapter title + page title or chapter tit...
getHTML(array $pars)
Get HTML (called by kiosk mode through ilCtrl)
static prepareJsLinks(string $redraw_url, string $notes_url, string $tags_url, ?ilGlobalTemplateInterface $tpl=null)
Insert js/ajax links into template.
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilGlobalTemplateInterface $tpl
const LP_CONTEXT_REPOSITORY
static shortenTextExtended(string $a_str, int $a_len, bool $a_dots=false, bool $a_next_blank=false, bool $a_keep_extension=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupType(int $a_obj_id, int $a_lm_id=0)
ILIAS Style Content Object ObjectFacade $content_style_domain
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
infoScreen()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
static hasNotification(int $type, int $user_id, int $id)
Check notification status for object and user.
Session based immediate storage.
outputInfoScreen()
info screen
ilLMNotes()
output notes of page
setSubObject(?string $sub_obj_type, ?int $sub_obj_id)
Set sub object attributes.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilObjUserTrackingGUI.
static initConnection(?ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI Connection module.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilCommonActionDispatcherGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setContentStyles()
Set content style.
initPrintViewSelectionForm()
Main service init and factory.
injectTemplate(ilGlobalTemplateInterface $tpl)
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
static hasOptOut(int $obj_id)
Is opt out (disable notification) allowed?
string $requested_back_pg
int $requested_notification_switch