77 $this->ot = $translation;
86 $this->chapter_has_no_active_page = $service->
getNavigationStatus()->isChapterWithoutActivePage();
93 $this->requested_frame = $service->
getRequest()->getFrame();
101 $ilHelp->setScreenId(
"content");
102 $ilHelp->setSubScreenId(
"content");
109 $status = self::STATUS_ACCESS;
112 if ($requested_page_lm != $this->lm->getId()) {
113 $status = self::STATUS_NO_ACCESS;
118 $status = self::STATUS_FAILED_PRECONDITIONS;
123 if (!$this->offline) {
124 if ($this->lm->getRestrictForwardNavigation()) {
125 if ($this->tracker->hasPredIncorrectAnswers($this->current_page)) {
126 $status = self::STATUS_CORRECT_ANSWER_MISSING;
132 if ($this->chapter_has_no_active_page &&
134 $status = self::STATUS_NO_PAGE_IN_CHAPTER;
137 if ($this->deactivated_page) {
138 $status = self::STATUS_DEACTIVATED_PAGE;
141 if ($this->current_page == 0) {
142 $status = self::STATUS_NO_PAGE_FOUND;
151 if ($this->search_string !=
"" && !$this->offline) {
154 $search_string = $cache->getQuery();
157 if (is_array($search_string)) {
158 $search_string = $search_string[
"lom_content"];
164 $words = $p->getQuotedWords();
165 if (is_array($words)) {
166 foreach ($words as $w) {
167 ilTextHighlighterGUI::highlight(
"ilLMPageContent", $w);
174 int $a_head_foot_page_id = 0
183 case self::STATUS_NO_ACCESS:
186 case self::STATUS_NO_PUBLIC_ACCESS:
189 case self::STATUS_FAILED_PRECONDITIONS:
192 case self::STATUS_CORRECT_ANSWER_MISSING:
195 case self::STATUS_NO_PAGE_IN_CHAPTER:
198 case self::STATUS_DEACTIVATED_PAGE:
201 case self::STATUS_NO_PAGE_FOUND:
206 if ($a_head_foot_page_id == 0) {
210 $page_id = $a_head_foot_page_id;
218 $this->parent_gui->basicPageGuiInit($page_object_gui);
220 $page_object = $page_object_gui->getPageObject();
221 $page_object->buildDom();
222 $page_object->registerOfflineHandler($this);
224 $page_object_gui->setTemplateOutput(
false);
230 $page_object_gui->setPageLinker($this->linker);
234 $lm_pg_obj->setLMId($this->lm->getId());
237 $page_object_gui->setLinkFrame($this->requested_frame);
240 if ($page_id == 0 || ($page_id != $this->lm->getHeaderPage() &&
241 $page_id != $this->lm->getFooterPage())) {
242 $page_object_gui->setPresentationTitle(
245 $this->lm->getPageHeader(),
246 $this->lm->isActiveNumbering(),
247 (bool) $this->lm_set->get(
"time_scheduled_page_activation"),
255 if ($page_id != 0 && !$this->offline) {
256 $this->tracker->trackAccess($page_id, $ilUser->getId());
259 $page_object_gui->setEnabledPageFocus(
false);
260 $page_object_gui->getPageConfig()->setEnableSelfAssessment(
false);
264 $page_object_gui->setLinkParams(
"ref_id=" . $this->lm->getRefId());
265 $page_object_gui->setTemplateTargetVar(
"PAGE_CONTENT");
269 $ret = $page_object_gui->presentation($page_object_gui->getOutputMode());
272 if ($this->lm->getHeaderPage() > 0 &&
273 $page_id != $this->lm->getHeaderPage() &&
274 ($page_id == 0 || $page_id != $this->lm->getFooterPage())) {
276 $head = $this->
render($this->lm->getHeaderPage());
281 if ($this->lm->getFooterPage() > 0 &&
282 $page_id != $this->lm->getFooterPage() &&
283 ($page_id == 0 || $page_id != $this->lm->getHeaderPage())) {
285 $foot = $this->
render($this->lm->getFooterPage());
288 return $head . $focus_mess . $ret . $foot;
294 $page_gui =
new ilLMPageGUI($a_id, 0,
false, $this->lang, $this->concrete_lang);
299 $page_gui =
new ilLMPageGUI($a_id, 0,
false,
"", $this->concrete_lang);
302 if ($this->offline) {
314 $directory = $this->parent_gui->getOfflineDirectory() .
"/codefiles/" . $page_id .
"/" . $paragraph_id;
316 $file = $directory .
"/" . $title;
317 if (!($fp = fopen($file,
"w+"))) {
318 die(
"<strong>Error</strong>: Could not open \"" . $file .
"\" for writing" .
319 " in <strong>" . __FILE__ .
"</strong> on line <strong>" . __LINE__ .
"</strong><br />");
329 if ($this->focus_id > 0) {
330 $path = $this->lm_tree->getPathId($this->current_page);
333 if (!in_array($this->focus_id,
$path)) {
335 "tpl.out_of_focus_message.html",
338 "components/ILIAS/LearningModule" 340 $mtpl->setVariable(
"MESSAGE", $this->
lng->txt(
"cont_out_of_focus_message"));
341 $mtpl->setVariable(
"TXT_SHOW_CONTENT", $this->
lng->txt(
"cont_show_content_after_focus"));
343 if ($this->requested_focus_return == 0 ||
ilObject::_lookupType((
int) $this->requested_focus_return,
true) !=
"crs") {
344 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->
lng->txt(
"cont_to_focus_beginning"));
345 $this->
ctrl->setParameter($this->parent_gui,
"obj_id", $this->focus_id);
346 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", $this->
ctrl->getLinkTarget($this->parent_gui,
"layout"));
347 $this->
ctrl->setParameter($this->parent_gui,
"obj_id", $this->requested_obj_id);
349 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->
lng->txt(
"cont_to_focus_return_crs"));
350 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", ilLink::_getLink($this->requested_focus_return));
353 $this->
ctrl->setParameter($this->parent_gui,
"focus_id",
null);
354 $mtpl->setVariable(
"LINK_SHOW_CONTENT", $this->
ctrl->getLinkTarget($this->parent_gui,
"layout"));
355 $this->
ctrl->setParameter($this->parent_gui,
"focus_id", $this->requested_obj_id);
357 $focus_mess = $mtpl->get();
359 $succ_page_id = $this->navigation_status->getSuccessorPageId();
361 if ($succ_page_id > 0) {
362 $path2 = $this->lm_tree->getPathId($succ_page_id);
364 if ($succ_page_id == 0 || !in_array($this->focus_id, $path2)) {
366 "tpl.out_of_focus_message.html",
369 "components/ILIAS/LearningModule" 371 $mtpl->setVariable(
"MESSAGE", $this->
lng->txt(
"cont_out_of_focus_message_last_page"));
372 $mtpl->setVariable(
"TXT_SHOW_CONTENT", $this->
lng->txt(
"cont_show_content_after_focus"));
374 if ($this->requested_focus_return == 0 ||
ilObject::_lookupType($this->requested_focus_return,
true) !=
"crs") {
375 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->
lng->txt(
"cont_to_focus_beginning"));
376 $this->
ctrl->setParameter($this->parent_gui,
"obj_id", $this->focus_id);
377 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", $this->
ctrl->getLinkTarget($this->parent_gui,
"layout"));
378 $this->
ctrl->setParameter($this->parent_gui,
"obj_id", $this->requested_obj_id);
380 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->
lng->txt(
"cont_to_focus_return_crs"));
381 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", ilLink::_getLink($this->requested_focus_return));
384 $this->
ctrl->setParameter($this->parent_gui,
"focus_id",
null);
385 $mtpl->setVariable(
"LINK_SHOW_CONTENT", $this->
ctrl->getLinkTarget($this->parent_gui,
"layout"));
386 $this->
ctrl->setParameter($this->parent_gui,
"focus_id", $this->requested_obj_id);
388 $focus_mess = $mtpl->get();
410 $tpl =
new ilTemplate(
"tpl.page_message_screen.html",
true,
true,
"components/ILIAS/LearningModule");
411 $tpl->setVariable(
"TXT_PAGE_NO_PUBLIC_ACCESS", $a_content);
439 "tpl.no_content_message.html",
442 "components/ILIAS/LearningModule" 444 $mtpl->setVariable(
"MESSAGE", $this->
lng->txt(
"cont_no_page_in_chapter"));
463 "tpl.no_content_message.html",
466 "components/ILIAS/LearningModule" 468 $m = $this->
lng->txt(
"cont_page_currently_deactivated");
470 if ($act_data[
"show_activation_info"] &&
472 $m .=
"<p>" . sprintf(
473 $this->
lng->txt(
"cont_page_activation_on"),
480 $mtpl->setVariable(
"MESSAGE", $m);
498 $ptpl =
new ilTemplate(
"tpl.page_preconditions.html",
true,
true,
"components/ILIAS/LearningModule");
501 foreach ($conds as $cond) {
502 $obj_link = ilLink::_getLink($cond[
"trigger_ref_id"]);
503 $ptpl->setCurrentBlock(
"condition");
505 $ptpl->setVariable(
"LINK_ITEM", $obj_link);
506 if ($cond[
"operator"] ==
"passed") {
507 $cond_str = $this->
lng->txt(
"passed");
509 $cond_str = $this->
lng->txt(
"condition_" . $cond[
"operator"]);
511 $ptpl->setVariable(
"VAL_CONDITION", $cond_str .
" " . $cond[
"value"]);
512 $ptpl->parseCurrentBlock();
516 "TXT_MISSING_PRECONDITIONS",
518 $this->
lng->txt(
"cont_missing_preconditions"),
522 $ptpl->setVariable(
"TXT_ITEM", $this->
lng->txt(
"object"));
523 $ptpl->setVariable(
"TXT_CONDITION", $this->
lng->txt(
"condition"));
526 $parent = $this->lm_tree->getParentId($topchap);
527 $childs = $this->lm_tree->getChildsByType($parent,
"st");
530 foreach ($childs as $child) {
531 if ($child[
"child"] == $topchap) {
534 if ($i++ == ($j + 1)) {
535 $succ_node = $this->lm_tree->fetchSuccessorNode($child[
"child"],
"pg");
538 if ($succ_node !=
"") {
539 $link =
"<br /><a href=\"" .
540 $this->linker->getLink(
"layout", $succ_node[
"obj_id"], $this->requested_frame) .
541 "\">" . $this->
lng->txt(
"cont_skip_chapter") .
"</a>";
542 $ptpl->setVariable(
"LINK_SKIP_CHAPTER", $link);
static _getMissingPreconditionsOfPage(int $cont_ref_id, int $cont_obj_id, int $page_id)
gets all missing preconditions of page
const STATUS_NO_PAGE_IN_CHAPTER
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
renderNoPageAccess()
Render info message, if page is not accessible in public area.
renderNoPageInChapterMessage()
Render no page in chapter message.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilLMPresentationLinker $linker
static _getInstance(int $a_usr_id)
renderMessageScreen(string $a_content)
Render message screen.
renderNavRestrictionDueToQuestions()
Render message if navigation to page is not allowed due to unanswered questions.
Class handles translation mode for an object.
int $requested_focus_return
static _lookupActivationData(int $a_id, string $a_parent_type, string $a_lang="-")
Lookup activation data.
const STATUS_CORRECT_ANSWER_MISSING
render(int $a_head_foot_page_id=0)
static _updateLastAccess(int $a_user_id, int $a_lm_ref_id, int $a_page_id)
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
const STATUS_FAILED_PRECONDITIONS
static now()
Return current timestamp in Y-m-d H:i:s format.
static _lookupTitle(int $a_obj_id)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Class ilLMPresentationGUI GUI class for learning module presentation.
ilLMNavigationStatus $navigation_status
bool $chapter_has_no_active_page
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupTitle(int $obj_id)
renderPreconditionsOfPage()
Render preconditions of the page.
static _checkPreconditionsOfPage(int $cont_ref_id, int $cont_obj_id, int $page_id)
checks whether the preconditions of a page are fulfilled or not
const STATUS_DEACTIVATED_PAGE
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setScreenIdComponent(string $a_comp)
Extension of ilPageObjectGUI for learning modules.
ilLMPresentationGUI $parent_gui
handleCodeParagraph(int $page_id, int $paragraph_id, string $title, string $text)
renderDeactivatedPageMessage()
static lookupParentId(int $a_id, string $a_type)
getSettings()
Get learning module settings.
renderNoPageFoundMessage()
Render no page found message.
static _exists(int $a_id)
checks wether a lm content object with specified id exists or not
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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...
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)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
const STATUS_NO_PUBLIC_ACCESS
renderNoPublicAccess()
Render info message, if page is not accessible in public area.
static _lookupType(int $id, bool $reference=false)
const STATUS_NO_PAGE_FOUND
static _getMissingPreconditionsTopChapter(int $cont_obj_ref_id, int $cont_obj_id, int $page_id)
get top chapter of page for that any precondition is missing
__construct(ilLMPresentationService $service, ilLMPresentationGUI $parent_gui, ilLanguage $lng, Translations $translation, ilCtrl $ctrl, ilAccessHandler $access, ilObjUser $user, ilHelpGUI $help, int $requested_obj_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Main service init and factory.