118 $this->lm_tree =
$service->getLMTree();
119 $this->lang =
$service->getPresentationStatus()->getLang();
120 $this->current_page =
$service->getNavigationStatus()->getCurrentPage();
121 $this->lm =
$service->getLearningModule();
122 $this->lm_set =
$service->getSettings();
124 $this->offline =
$service->getPresentationStatus()->offline;
125 $this->tracker =
$service->getTracker();
126 $this->linker =
$service->getLinker();
128 $this->chapter_has_no_active_page =
$service->getNavigationStatus()->isChapterWithoutActivePage();
129 $this->deactivated_page =
$service->getNavigationStatus()->isDeactivatedPage();
130 $this->focus_id =
$service->getPresentationStatus()->getFocusId();
131 $this->concrete_lang =
$service->getPresentationStatus()->getConcreteLang();
133 $this->search_string =
$service->getPresentationStatus()->getSearchString();
134 $this->requested_obj_id = $requested_obj_id;
135 $this->requested_focus_return =
$service->getPresentationStatus()->getFocusReturn();
146 $ilHelp->setScreenIdComponent(
"lm");
147 $ilHelp->setScreenId(
"content");
148 $ilHelp->setSubScreenId(
"content");
165 if ($requested_page_lm != $this->lm->getId()) {
172 $this->lm->getPublicAccessMode() ==
'selected') {
185 if (!$this->offline) {
186 if ($this->lm->getRestrictForwardNavigation()) {
187 if ($this->tracker->hasPredIncorrectAnswers($this->current_page)) {
194 if ($this->chapter_has_no_active_page &&
199 if ($this->deactivated_page) {
203 if ($this->current_page == 0) {
218 if ($this->search_string !=
"" && !$this->offline) {
221 $search_string = $cache->getQuery();
224 if (is_array($search_string)) {
225 $search_string = $search_string[
"lom_content"];
231 $words = $p->getQuotedWords();
232 if (is_array($words)) {
233 foreach ($words as $w) {
247 public function render($a_head_foot_page_id = 0)
278 if ($a_head_foot_page_id == 0) {
282 $page_id = $a_head_foot_page_id;
290 $this->parent_gui->basicPageGuiInit($page_object_gui);
292 $page_object = $page_object_gui->getPageObject();
293 $page_object->buildDom();
294 $page_object->registerOfflineHandler($this);
296 $page_object_gui->setTemplateOutput(
false);
302 $page_object_gui->setPageLinker($this->linker);
306 $lm_pg_obj->setLMId($this->lm->getId());
309 $page_object_gui->setLinkFrame(
$_GET[
"frame"]);
312 if ($page_id == 0 || ($page_id != $this->lm->getHeaderPage() &&
313 $page_id != $this->lm->getFooterPage())) {
314 $page_object_gui->setPresentationTitle(
317 $this->lm->getPageHeader(),
318 $this->lm->isActiveNumbering(),
319 $this->lm_set->get(
"time_scheduled_page_activation"),
327 if ($page_id != 0 && !$this->offline) {
328 $this->tracker->trackAccess($page_id,
$ilUser->getId());
331 $page_object_gui->setEnabledPageFocus(
false);
332 $page_object_gui->getPageConfig()->setEnableSelfAssessment(
false);
336 $page_object_gui->setLinkParams(
"ref_id=" . $this->lm->getRefId());
337 $page_object_gui->setTemplateTargetVar(
"PAGE_CONTENT");
341 $ret = $page_object_gui->presentation($page_object_gui->getOutputMode());
344 if ($this->lm->getHeaderPage() > 0 &&
345 $page_id != $this->lm->getHeaderPage() &&
346 ($page_id == 0 || $page_id != $this->lm->getFooterPage())) {
348 $head = $this->
render($this->lm->getHeaderPage());
353 if ($this->lm->getFooterPage() > 0 &&
354 $page_id != $this->lm->getFooterPage() &&
355 ($page_id == 0 || $page_id != $this->lm->getHeaderPage())) {
357 $foot = $this->
render($this->lm->getFooterPage());
361 return $head . $focus_mess .
$ret . $foot;
373 $page_gui =
new ilLMPageGUI($a_id, 0,
false, $this->lang, $this->concrete_lang);
376 $page_gui =
new ilLMPageGUI($a_id, 0,
false, $this->ot->getFallbackLanguage(), $this->concrete_lang);
378 $page_gui =
new ilLMPageGUI($a_id, 0,
false,
"", $this->concrete_lang);
381 if ($this->offline) {
398 if ($this->focus_id > 0) {
399 $path = $this->lm_tree->getPathId($this->current_page);
402 if (!in_array($this->focus_id, $path)) {
404 "tpl.out_of_focus_message.html",
407 "Modules/LearningModule"
409 $mtpl->setVariable(
"MESSAGE", $this->lng->txt(
"cont_out_of_focus_message"));
410 $mtpl->setVariable(
"TXT_SHOW_CONTENT", $this->lng->txt(
"cont_show_content_after_focus"));
412 if ($this->requested_focus_return == 0 ||
ilObject::_lookupType((
int) $this->requested_focus_return,
true) !=
"crs") {
413 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->lng->txt(
"cont_to_focus_beginning"));
414 $this->ctrl->setParameter($this->parent_gui,
"obj_id", $this->focus_id);
415 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", $this->ctrl->getLinkTarget($this->parent_gui,
"layout"));
416 $this->ctrl->setParameter($this->parent_gui,
"obj_id", $this->requested_obj_id);
418 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->lng->txt(
"cont_to_focus_return_crs"));
419 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING",
ilLink::_getLink($this->requested_focus_return));
422 $this->ctrl->setParameter($this->parent_gui,
"focus_id",
"");
423 $mtpl->setVariable(
"LINK_SHOW_CONTENT", $this->ctrl->getLinkTarget($this->parent_gui,
"layout"));
424 $this->ctrl->setParameter($this->parent_gui,
"focus_id", $this->requested_obj_id);
426 $focus_mess = $mtpl->get();
433 if ($sp == 0 || !in_array($this->focus_id, $path2)) {
435 "tpl.out_of_focus_message.html",
438 "Modules/LearningModule"
440 $mtpl->setVariable(
"MESSAGE", $this->lng->txt(
"cont_out_of_focus_message_last_page"));
441 $mtpl->setVariable(
"TXT_SHOW_CONTENT", $this->lng->txt(
"cont_show_content_after_focus"));
443 if ($this->requested_focus_return == 0 ||
ilObject::_lookupType($this->requested_focus_return,
true) !=
"crs") {
444 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->lng->txt(
"cont_to_focus_beginning"));
445 $this->ctrl->setParameter($this->parent_gui,
"obj_id", $this->focus_id);
446 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING", $this->ctrl->getLinkTarget($this->parent_gui,
"layout"));
447 $this->ctrl->setParameter($this->parent_gui,
"obj_id", $this->requested_obj_id);
449 $mtpl->setVariable(
"TXT_BACK_BEGINNING", $this->lng->txt(
"cont_to_focus_return_crs"));
450 $mtpl->setVariable(
"LINK_BACK_TO_BEGINNING",
ilLink::_getLink($this->requested_focus_return));
453 $this->ctrl->setParameter($this->parent_gui,
"focus_id",
"");
454 $mtpl->setVariable(
"LINK_SHOW_CONTENT", $this->ctrl->getLinkTarget($this->parent_gui,
"layout"));
455 $this->ctrl->setParameter($this->parent_gui,
"focus_id", $this->requested_obj_id);
457 $focus_mess = $mtpl->get();
483 $tpl =
new ilTemplate(
"tpl.page_message_screen.html",
true,
true,
"Modules/LearningModule");
484 $tpl->setVariable(
"TXT_PAGE_NO_PUBLIC_ACCESS", $a_content);
515 "tpl.no_content_message.html",
518 "Modules/LearningModule"
520 $mtpl->setVariable(
"MESSAGE", $this->lng->txt(
"cont_no_page_in_chapter"));
546 "tpl.no_content_message.html",
549 "Modules/LearningModule"
551 $m = $this->lng->txt(
"cont_page_currently_deactivated");
553 if ($act_data[
"show_activation_info"] &&
555 $m .=
"<p>" . sprintf(
556 $this->lng->txt(
"cont_page_activation_on"),
563 $mtpl->setVariable(
"MESSAGE", $m);
580 $ptpl =
new ilTemplate(
"tpl.page_preconditions.html",
true,
true,
"Modules/LearningModule");
583 foreach ($conds as $cond) {
585 $ptpl->setCurrentBlock(
"condition");
587 $ptpl->setVariable(
"LINK_ITEM", $obj_link);
588 if ($cond[
"operator"] ==
"passed") {
589 $cond_str = $this->lng->txt(
"passed");
591 $cond_str = $this->lng->txt(
"condition_" . $cond[
"operator"]);
593 $ptpl->setVariable(
"VAL_CONDITION", $cond_str .
" " . $cond[
"value"]);
594 $ptpl->parseCurrentBlock();
598 "TXT_MISSING_PRECONDITIONS",
600 $this->lng->txt(
"cont_missing_preconditions"),
604 $ptpl->setVariable(
"TXT_ITEM", $this->lng->txt(
"object"));
605 $ptpl->setVariable(
"TXT_CONDITION", $this->lng->txt(
"condition"));
608 $parent = $this->lm_tree->getParentId($topchap);
609 $childs = $this->lm_tree->getChildsByType($parent,
"st");
612 foreach ($childs as $child) {
613 if ($child[
"child"] == $topchap) {
616 if (
$i++ == ($j + 1)) {
617 $succ_node = $this->lm_tree->fetchSuccessorNode($child[
"child"],
"pg");
620 if ($succ_node !=
"") {
621 $link =
"<br /><a href=\"" .
622 $this->linker->getLink(
"layout", $succ_node[
"obj_id"],
$_GET[
"frame"]) .
623 "\">" . $this->lng->txt(
"cont_skip_chapter") .
"</a>";
624 $ptpl->setVariable(
"LINK_SKIP_CHAPTER", $link);
643 if (empty($page_id)) {
651 if ($this->chapter_has_no_active_page &&
653 $c_id = $this->requested_obj_id;
655 if ($this->deactivated_page) {
656 $c_id = $this->requested_obj_id;
662 $succ_node = $this->lm_tree->fetchSuccessorNode($c_id,
"pg");
663 $c_id = $succ_node[
"obj_id"];
667 $this->lm->getType(),
668 $this->lm_set->get(
"time_scheduled_page_activation")
671 if ($succ_node[
"obj_id"] > 0 &&
673 ($this->lm->getPublicAccessMode() ==
"selected" &&
676 } elseif ($succ_node[
"obj_id"] > 0 && !$active) {
679 if ($act_data[
"show_activation_info"] &&
691 return $succ_node[
"obj_id"];
An exception for terminatinating execution or to throw for unit testing.
static _updateLastAccess($a_user_id, $a_lm_ref_id, $a_page_id)
This class provides processing control methods.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
determineStatus()
Determine Status (should be factored out later to something like LMPageAccessStatus)
getLMPageGUI($a_id)
Get lm page gui object.
render($a_head_foot_page_id=0)
Render lm content.
__construct(ilLMPresentationService $service, ilLMPresentationGUI $parent_gui, ilLanguage $lng, ilCtrl $ctrl, ilAccessHandler $access, ilObjUser $user, ilHelpGUI $help, $requested_obj_id)
Constructor.
renderNavRestrictionDueToQuestions()
Show message if navigation to page is not allowed due to unanswered questions.
renderNoPageFoundMessage()
Render no page found message.
const STATUS_FAILED_PRECONDITIONS
const STATUS_DEACTIVATED_PAGE
const STATUS_NO_PUBLIC_ACCESS
renderNoPageInChapterMessage()
Render no page in chapter message.
getSuccessorPage()
Get successor page.
initSearchHighlighting()
Init search highlighting.
const STATUS_NO_PAGE_IN_CHAPTER
const STATUS_CORRECT_ANSWER_MISSING
const STATUS_NO_PAGE_FOUND
renderPreconditionsOfPage()
show preconditions of the page
renderNoPublicAccess()
Show info message, if page is not accessible in public area.
renderNoPageAccess()
Show info message, if page is not accessible in public area.
renderFocusMessage()
Render focus message.
renderDeactivatedPageMessage()
Render deactivated page message.
renderMessageScreen($a_content)
Show message screen.
static _lookupType($a_obj_id, $a_lm_id=0)
Lookup type.
static _isPagePublic($a_node_id, $a_check_public_mode=false)
static _lookupTitle($a_obj_id)
Lookup title.
static _exists($a_id)
checks wether a lm content object with specified id exists or not
Extension of ilPageObjectGUI for learning modules.
static _getPresentationTitle( $a_pg_id, $a_mode=self::CHAPTER_TITLE, $a_include_numbers=false, $a_time_scheduled_activation=false, $a_force_content=false, $a_lm_id=0, $a_lang="-", $a_include_short=false)
presentation title doesn't have to be page title, it may be chapter title + page title or chapter tit...
Class ilLMPresentationGUI.
Main service init and factory.
static _getLink($a_ref_id, $a_type='', $a_params=array(), $append="")
static _getMissingPreconditionsTopChapter($cont_obj_ref_id, $cont_obj_id, $page_id)
get top chapter of page for that any precondition is missing
static _checkPreconditionsOfPage($cont_ref_id, $cont_obj_id, $page_id)
checks wether the preconditions of a page are fulfilled or not
static _getMissingPreconditionsOfPage($cont_ref_id, $cont_obj_id, $page_id)
gets all missing preconditions of page
static getInstance($a_obj_id)
Get instance.
static _lookupTitle($a_id)
lookup object title
static _lookupType($a_id, $a_reference=false)
lookup object type
static _lookupActive($a_id, $a_parent_type, $a_check_scheduled_activation=false, $a_lang="-")
lookup activation status
static lookupParentId($a_id, $a_type)
Lookup parent id.
static _lookupActivationData($a_id, $a_parent_type, $a_lang="-")
Lookup activation data.
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
special template class to simplify handling of ITX/PEAR
static highlight($a_dom_node_id, $a_text, $a_tpl=null)
Searches for all occurences of a text (case-insensitive) and highlights it.
static _getInstance($a_usr_id)
Get singleton instance.
static now()
Return current timestamp in Y-m-d H:i:s format.
Interface ilAccessHandler.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl