/**
  * standard implementation for title, maybe overwritten by derived classes
  */
 function buildTitle($a_title, $a_id, $a_type)
 {
     if ($a_type == "st") {
         return ilStructureObject::_getPresentationTitle($a_id, $this->lm_obj->isActiveNumbering(), false, $this->lm_obj->getId(), $this->lang);
     }
     if ($this->lm_obj->getTOCMode() == "chapters" || $a_type != "pg") {
         return $a_title;
     } else {
         if ($a_type == "pg") {
             return ilLMPageObject::_getPresentationTitle($a_id, $this->lm_obj->getPageHeader(), $this->lm_obj->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), true, $this->lm_obj->getId(), $this->lang);
         }
     }
 }
Esempio n. 2
0
 /**
  * Get affective title
  *
  * @param
  * @return
  */
 static function _getPresentationTitle($a_node, $a_mode = IL_PAGE_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false, $a_lm_id = 0, $a_lang = "-")
 {
     if ($a_lang == "") {
         $a_lang = "-";
     }
     if ($a_node["type"] == "st") {
         return ilStructureObject::_getPresentationTitle($a_node["child"], $a_include_numbers, $a_time_scheduled_activation, $a_lm_id, $a_lang);
     } else {
         return ilLMPageObject::_getPresentationTitle($a_node["child"], $a_mode, $a_include_numbers, $a_time_scheduled_activation, $a_force_content, $a_lm_id, $a_lang);
     }
 }
 function subchap()
 {
     global $tree, $ilCtrl, $lng, $ilUser;
     $this->setTabs();
     $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.structure_edit.html", "Modules/LearningModule");
     $num = 0;
     $this->tpl->setCurrentBlock("form");
     $this->ctrl->setParameter($this, "backcmd", "subchap");
     $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
     $this->tpl->setVariable("HEADER_TEXT", $this->lng->txt("cont_subchapters"));
     $this->tpl->setVariable("CHECKBOX_TOP", IL_FIRST_NODE);
     $cnt = 0;
     $childs = $this->tree->getChilds($this->obj->getId());
     foreach ($childs as $child) {
         if ($child["type"] != "st") {
             continue;
         }
         $this->tpl->setCurrentBlock("table_row");
         // color changing
         $css_row = ilUtil::switchColor($cnt++, "tblrow1", "tblrow2");
         // checkbox
         $this->tpl->setVariable("CHECKBOX_ID", $child["obj_id"]);
         $this->tpl->setVariable("CSS_ROW", $css_row);
         $this->tpl->setVariable("IMG_OBJ", ilUtil::getImagePath("icon_st.png"));
         // type
         $this->ctrl->setParameterByClass("ilStructureObjectGUI", "obj_id", $child["obj_id"]);
         $link = $this->ctrl->getLinkTargetByClass("ilStructureObjectGUI", "view");
         $this->tpl->setVariable("LINK_TARGET", $link);
         // title
         $this->tpl->setVariable("TEXT_CONTENT", ilStructureObject::_getPresentationTitle($child["obj_id"], $this->content_object->isActiveNumbering()));
         $this->tpl->parseCurrentBlock();
     }
     if ($cnt == 0) {
         $this->tpl->setCurrentBlock("notfound");
         $this->tpl->setVariable("NUM_COLS", 3);
         $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
         $this->tpl->parseCurrentBlock();
     }
     //else
     //{
     // SHOW VALID ACTIONS
     $this->tpl->setVariable("NUM_COLS", 3);
     $acts = array("delete" => "delete", "cutChapter" => "cut", "copyChapter" => "copyChapter");
     if ($ilUser->clipboardHasObjectsOfType("st")) {
         $acts["pasteChapter"] = "pasteChapter";
     }
     $this->showActions($acts);
     //}
     // SHOW POSSIBLE SUB OBJECTS
     $this->tpl->setVariable("NUM_COLS", 3);
     //$this->showPossibleSubObjects("st");
     $subobj = array("st");
     $opts = ilUtil::formSelect(12, "new_type", $subobj);
     //$this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.png"));
     $this->tpl->setCurrentBlock("add_object");
     $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
     //$this->tpl->setVariable("FORMACTION_OBJ_ADD", "adm_object.php?cmd=create&ref_id=".$_GET["ref_id"]);
     $this->tpl->setVariable("BTN_NAME", "create");
     $this->tpl->setVariable("TXT_ADD", $this->lng->txt("insert"));
     $this->tpl->parseCurrentBlock();
     //$this->tpl->setVariable("NUM_COLS", 2);
     //$this->showPossibleSubObjects("st");
     $this->tpl->setCurrentBlock("form");
     $this->tpl->parseCurrentBlock();
     $ilCtrl->setParameter($this, "obj_id", $_GET["obj_id"]);
 }
 /**
  * presentation title doesn't have to be page title, it may be
  * chapter title + page title or chapter title only, depending on settings
  *
  * @param	string	$a_mode		IL_CHAPTER_TITLE | IL_PAGE_TITLE | IL_NO_HEADER
  */
 function _getPresentationTitle($a_pg_id, $a_mode = IL_CHAPTER_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false)
 {
     global $ilDB;
     // select
     $query = "SELECT * FROM lm_data WHERE obj_id = " . $ilDB->quote($a_pg_id, "integer");
     $pg_set = $ilDB->query($query);
     $pg_rec = $ilDB->fetchAssoc($pg_set);
     if ($a_mode == IL_NO_HEADER && !$a_force_content) {
         return "";
     }
     $tree = new ilTree($pg_rec["lm_id"]);
     $tree->setTableNames('lm_tree', 'lm_data');
     $tree->setTreeTablePK("lm_id");
     if ($a_mode == IL_PAGE_TITLE) {
         $nr = "";
         return $nr . $pg_rec["title"];
     }
     if ($tree->isInTree($pg_rec["obj_id"])) {
         $pred_node = $tree->fetchPredecessorNode($pg_rec["obj_id"], "st");
         $childs = $tree->getChildsByType($pred_node["obj_id"], "pg");
         $cnt_str = "";
         if (count($childs) > 1) {
             $cnt = 0;
             foreach ($childs as $child) {
                 include_once "./Services/COPage/classes/class.ilPageObject.php";
                 $active = ilPageObject::_lookupActive($child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"]), $a_time_scheduled_activation);
                 if (!$active) {
                     $act_data = ilPageObject::_lookupActivationData((int) $child["obj_id"], ilObject::_lookupType($pg_rec["lm_id"]));
                     if ($act_data["show_activation_info"] && ilUtil::now() < $act_data["activation_start"]) {
                         $active = true;
                     }
                 }
                 if ($child["type"] != "pg" || $active) {
                     $cnt++;
                 }
                 if ($child["obj_id"] == $pg_rec["obj_id"]) {
                     $cur_cnt = $cnt;
                 }
             }
             if ($cnt > 1) {
                 $cnt_str = " (" . $cur_cnt . "/" . $cnt . ")";
             }
         }
         require_once "./Modules/LearningModule/classes/class.ilStructureObject.php";
         //$struct_obj =& new ilStructureObject($pred_node["obj_id"]);
         //return $struct_obj->getTitle();
         return ilStructureObject::_getPresentationTitle($pred_node["obj_id"], $a_include_numbers) . $cnt_str;
         //return $pred_node["title"].$cnt_str;
     } else {
         return $pg_rec["title"];
     }
 }
Esempio n. 5
0
 /**
  * presentation title doesn't have to be page title, it may be
  * chapter title + page title or chapter title only, depending on settings
  *
  * @param	string	$a_mode		IL_CHAPTER_TITLE | IL_PAGE_TITLE | IL_NO_HEADER
  */
 static function _getPresentationTitle($a_pg_id, $a_mode = IL_CHAPTER_TITLE, $a_include_numbers = false, $a_time_scheduled_activation = false, $a_force_content = false, $a_lm_id = 0, $a_lang = "-")
 {
     if ($a_mode == IL_NO_HEADER && !$a_force_content) {
         return "";
     }
     if ($a_lm_id == 0) {
         $a_lm_id = ilLMObject::_lookupContObjID($a_pg_id);
     }
     if ($a_lm_id == 0) {
         return "";
     }
     // this is optimized when ilLMObject::preloadDataByLM is invoked (e.g. done in ilLMExplorerGUI)
     $title = ilLMObject::_lookupTitle($a_pg_id);
     // this is also optimized since ilObjectTranslation re-uses instances for one lm
     include_once "./Services/Object/classes/class.ilObjectTranslation.php";
     $ot = ilObjectTranslation::getInstance($a_lm_id);
     $languages = $ot->getLanguages();
     if ($a_lang != "-" && $ot->getContentActivated() && isset($languages[$a_lang])) {
         include_once "./Modules/LearningModule/classes/class.ilLMObjTranslation.php";
         $lmobjtrans = new ilLMObjTranslation($a_pg_id, $a_lang);
         if ($lmobjtrans->getTitle() != "") {
             $title = $lmobjtrans->getTitle();
         }
     }
     if ($a_mode == IL_PAGE_TITLE) {
         return $title;
     }
     include_once "./Modules/LearningModule/classes/class.ilLMTree.php";
     $tree = ilLMTree::getInstance($a_lm_id);
     if ($tree->isInTree($a_pg_id)) {
         $pred_node = $tree->fetchPredecessorNode($a_pg_id, "st");
         $childs = $tree->getChildsByType($pred_node["obj_id"], "pg");
         $cnt_str = "";
         if (count($childs) > 1) {
             $cnt = 0;
             foreach ($childs as $child) {
                 include_once "./Modules/LearningModule/classes/class.ilLMPage.php";
                 $active = ilLMPage::_lookupActive($child["obj_id"], ilObject::_lookupType($a_lm_id), $a_time_scheduled_activation);
                 if (!$active) {
                     $act_data = ilLMPage::_lookupActivationData((int) $child["obj_id"], ilObject::_lookupType($a_lm_id));
                     if ($act_data["show_activation_info"] && ilUtil::now() < $act_data["activation_start"]) {
                         $active = true;
                     }
                 }
                 if ($child["type"] != "pg" || $active) {
                     $cnt++;
                 }
                 if ($child["obj_id"] == $a_pg_id) {
                     $cur_cnt = $cnt;
                 }
             }
             if ($cnt > 1) {
                 $cnt_str = " (" . $cur_cnt . "/" . $cnt . ")";
             }
         }
         require_once "./Modules/LearningModule/classes/class.ilStructureObject.php";
         //$struct_obj =& new ilStructureObject($pred_node["obj_id"]);
         //return $struct_obj->getTitle();
         return ilStructureObject::_getPresentationTitle($pred_node["obj_id"], $a_include_numbers, false, 0, $a_lang) . $cnt_str;
         //return $pred_node["title"].$cnt_str;
     } else {
         return $title;
     }
 }
 /**
  * show print view
  */
 function showPrintView()
 {
     global $ilUser, $lng, $ilCtrl;
     include_once "./Modules/LearningModule/classes/class.ilLMPage.php";
     if (!$this->lm->isActivePrintView()) {
         return;
     }
     $this->renderPageTitle();
     $c_obj_id = $this->getCurrentPageId();
     // set values according to selection
     if ($_POST["sel_type"] == "page") {
         if (!is_array($_POST["obj_id"]) || !in_array($c_obj_id, $_POST["obj_id"])) {
             $_POST["obj_id"][] = $c_obj_id;
         }
     }
     if ($_POST["sel_type"] == "chapter" && $c_obj_id > 0) {
         $path = $this->lm_tree->getPathFull($c_obj_id);
         $chap_id = $path[1]["child"];
         if ($chap_id > 0) {
             $_POST["obj_id"][] = $chap_id;
         }
     }
     //var_dump($_GET);
     //var_dump($_POST);
     // set style sheets
     if (!$this->offlineMode()) {
         $this->tpl->setVariable("LOCATION_STYLESHEET", ilObjStyleSheet::getContentPrintStyle());
     } else {
         $style_name = $ilUser->getPref("style") . ".css";
         $this->tpl->setVariable("LOCATION_STYLESHEET", "./style/" . $style_name);
     }
     // content style
     $this->tpl->setCurrentBlock("ContentStyle");
     if (!$this->offlineMode()) {
         $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET", ilObjStyleSheet::getContentStylePath($this->lm->getStyleSheetId()));
     } else {
         $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET", "content_style/content.css");
     }
     $this->tpl->parseCurrentBlock();
     // syntax style
     $this->tpl->setCurrentBlock("SyntaxStyle");
     $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET", ilObjStyleSheet::getSyntaxStylePath());
     $this->tpl->parseCurrentBlock();
     //$this->tpl->setVariable("LOCATION_STYLESHEET", ilUtil::getStyleSheetLocation());
     $this->tpl->addBlockFile("CONTENT", "content", "tpl.lm_print_view.html", true);
     // set title header
     $this->tpl->setVariable("HEADER", $this->lm->getTitle());
     $nodes = $this->lm_tree->getSubtree($this->lm_tree->getNodeData($this->lm_tree->getRootId()));
     include_once "./Modules/LearningModule/classes/class.ilLMPageGUI.php";
     include_once "./Modules/LearningModule/classes/class.ilLMPageObject.php";
     include_once "./Modules/LearningModule/classes/class.ilStructureObject.php";
     $act_level = 99999;
     $activated = false;
     $glossary_links = array();
     $output_header = false;
     $media_links = array();
     // get header and footer
     if ($this->lm->getFooterPage() > 0 && !$this->lm->getHideHeaderFooterPrint()) {
         if (ilLMObject::_exists($this->lm->getFooterPage())) {
             $page_object_gui = $this->getLMPageGUI($this->lm->getFooterPage());
             include_once "./Services/Style/classes/class.ilObjStyleSheet.php";
             $page_object_gui->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId($this->lm->getStyleSheetId(), "lm"));
             // determine target frames for internal links
             $page_object_gui->setLinkFrame($_GET["frame"]);
             $page_object_gui->setOutputMode("print");
             $page_object_gui->setPresentationTitle("");
             $page_object_gui->setFileDownloadLink("#");
             $page_object_gui->setFullscreenLink("#");
             $page_object_gui->setSourceCodeDownloadScript("#");
             $footer_page_content = $page_object_gui->showPage();
         }
     }
     if ($this->lm->getHeaderPage() > 0 && !$this->lm->getHideHeaderFooterPrint()) {
         if (ilLMObject::_exists($this->lm->getHeaderPage())) {
             $page_object_gui = $this->getLMPageGUI($this->lm->getHeaderPage());
             include_once "./Services/Style/classes/class.ilObjStyleSheet.php";
             $page_object_gui->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId($this->lm->getStyleSheetId(), "lm"));
             // determine target frames for internal links
             $page_object_gui->setLinkFrame($_GET["frame"]);
             $page_object_gui->setOutputMode("print");
             $page_object_gui->setPresentationTitle("");
             $page_object_gui->setFileDownloadLink("#");
             $page_object_gui->setFullscreenLink("#");
             $page_object_gui->setSourceCodeDownloadScript("#");
             $header_page_content = $page_object_gui->showPage();
         }
     }
     // add free selected pages
     if (is_array($_POST["obj_id"])) {
         foreach ($_POST["obj_id"] as $k) {
             if ($k > 0 && !$this->lm_tree->isInTree($k)) {
                 if (ilLMObject::_lookupType($k) == "pg") {
                     $nodes[] = array("obj_id" => $k, "type" => "pg", "free" => true);
                 }
             }
         }
     } else {
         ilUtil::sendFailure($lng->txt("cont_print_no_page_selected"), true);
         $ilCtrl->redirect($this, "showPrintViewSelection");
     }
     foreach ($nodes as $node_key => $node) {
         // check page activation
         $active = ilLMPage::_lookupActive($node["obj_id"], $this->lm->getType(), $this->lm_set->get("time_scheduled_page_activation"));
         if ($node["type"] == "pg" && !$active) {
             continue;
         }
         // print all subchapters/subpages if higher chapter
         // has been selected
         if ($node["depth"] <= $act_level) {
             if (is_array($_POST["obj_id"]) && in_array($node["obj_id"], $_POST["obj_id"])) {
                 $act_level = $node["depth"];
                 $activated = true;
             } else {
                 $act_level = 99999;
                 $activated = false;
             }
         }
         if ($activated && ilObjContentObject::_checkPreconditionsOfPage($this->lm->getRefId(), $this->lm->getId(), $node["obj_id"])) {
             // output learning module header
             if ($node["type"] == "du") {
                 $output_header = true;
             }
             // output chapter title
             if ($node["type"] == "st") {
                 if (($ilUser->getId() == ANONYMOUS_USER_ID || $this->needs_to_be_purchased) && $this->lm_gui->object->getPublicAccessMode() == "selected") {
                     if (!ilLMObject::_isPagePublic($node["obj_id"])) {
                         continue;
                     }
                 }
                 $chap = new ilStructureObject($this->lm, $node["obj_id"]);
                 $this->tpl->setCurrentBlock("print_chapter");
                 $chapter_title = $chap->_getPresentationTitle($node["obj_id"], $this->lm->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), 0, $this->lang);
                 $this->tpl->setVariable("CHAP_TITLE", $chapter_title);
                 if ($this->lm->getPageHeader() == IL_CHAPTER_TITLE) {
                     if ($nodes[$node_key + 1]["type"] == "pg") {
                         $this->tpl->setVariable("CHAP_HEADER", $header_page_content);
                         $did_chap_page_header = true;
                     }
                 }
                 $this->tpl->parseCurrentBlock();
                 $this->tpl->setCurrentBlock("print_block");
                 $this->tpl->parseCurrentBlock();
             }
             // output page
             if ($node["type"] == "pg") {
                 if (($ilUser->getId() == ANONYMOUS_USER_ID || $this->needs_to_be_purchased) && $this->lm_gui->object->getPublicAccessMode() == "selected") {
                     if (!ilLMObject::_isPagePublic($node["obj_id"])) {
                         continue;
                     }
                 }
                 $this->tpl->setCurrentBlock("print_item");
                 // get page
                 $page_id = $node["obj_id"];
                 $page_object_gui = $this->getLMPageGUI($page_id);
                 $page_object = $page_object_gui->getPageObject();
                 include_once "./Services/Style/classes/class.ilObjStyleSheet.php";
                 $page_object_gui->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId($this->lm->getStyleSheetId(), "lm"));
                 // get lm page
                 $lm_pg_obj = new ilLMPageObject($this->lm, $page_id);
                 $lm_pg_obj->setLMId($this->lm->getId());
                 // determine target frames for internal links
                 $page_object_gui->setLinkFrame($_GET["frame"]);
                 $page_object_gui->setOutputMode("print");
                 $page_object_gui->setPresentationTitle("");
                 if ($this->lm->getPageHeader() == IL_PAGE_TITLE || $node["free"] === true) {
                     $page_title = ilLMPageObject::_getPresentationTitle($lm_pg_obj->getId(), $this->lm->getPageHeader(), $this->lm->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), false, 0, $this->lang);
                     // prevent page title after chapter title
                     // that have the same content
                     if ($this->lm->isActiveNumbering()) {
                         $chapter_title = trim(substr($chapter_title, strpos($chapter_title, " ")));
                     }
                     if ($page_title != $chapter_title) {
                         $page_object_gui->setPresentationTitle($page_title);
                     }
                 }
                 // handle header / footer
                 $hcont = $header_page_content;
                 $fcont = $footer_page_content;
                 if ($this->lm->getPageHeader() == IL_CHAPTER_TITLE) {
                     if ($did_chap_page_header) {
                         $hcont = "";
                     }
                     if ($nodes[$node_key + 1]["type"] == "pg" && !($nodes[$node_key + 1]["depth"] <= $act_level && !in_array($nodes[$node_key + 1]["obj_id"], $_POST["obj_id"]))) {
                         $fcont = "";
                     }
                 }
                 $page_object_gui->setFileDownloadLink("#");
                 $page_object_gui->setFullscreenLink("#");
                 $page_object_gui->setSourceCodeDownloadScript("#");
                 $page_content = $page_object_gui->showPage();
                 if ($this->lm->getPageHeader() != IL_PAGE_TITLE) {
                     $this->tpl->setVariable("CONTENT", $hcont . $page_content . $fcont);
                 } else {
                     $this->tpl->setVariable("CONTENT", $hcont . $page_content . $fcont . "<br />");
                 }
                 $chapter_title = "";
                 $this->tpl->parseCurrentBlock();
                 $this->tpl->setCurrentBlock("print_block");
                 $this->tpl->parseCurrentBlock();
                 // get internal links
                 $int_links = ilInternalLink::_getTargetsOfSource($this->lm->getType() . ":pg", $node["obj_id"]);
                 $got_mobs = false;
                 foreach ($int_links as $key => $link) {
                     if ($link["type"] == "git" && ($link["inst"] == IL_INST_ID || $link["inst"] == 0)) {
                         $glossary_links[$key] = $link;
                     }
                     if ($link["type"] == "mob" && ($link["inst"] == IL_INST_ID || $link["inst"] == 0)) {
                         $got_mobs = true;
                         $mob_links[$key] = $link;
                     }
                 }
                 // this is not cool because of performance reasons
                 // unfortunately the int link table does not
                 // store the target frame (we want to append all linked
                 // images but not inline images (i.e. mobs with no target
                 // frame))
                 if ($got_mobs) {
                     $page_object->buildDom();
                     $links = $page_object->getInternalLinks();
                     foreach ($links as $link) {
                         if ($link["Type"] == "MediaObject" && $link["TargetFrame"] != "" && $link["TargetFrame"] != "None") {
                             $media_links[] = $link;
                         }
                     }
                 }
             }
         }
     }
     $annex_cnt = 0;
     $annexes = array();
     // glossary
     if (count($glossary_links) > 0 && !$this->lm->isActivePreventGlossaryAppendix()) {
         include_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php";
         include_once "./Modules/Glossary/classes/class.ilGlossaryDefinition.php";
         // sort terms
         $terms = array();
         foreach ($glossary_links as $key => $link) {
             $term = ilGlossaryTerm::_lookGlossaryTerm($link["id"]);
             $terms[$term . ":" . $key] = array("key" => $key, "link" => $link, "term" => $term);
         }
         $terms = ilUtil::sortArray($terms, "term", "asc");
         //ksort($terms);
         foreach ($terms as $t) {
             $link = $t["link"];
             $key = $t["key"];
             $defs = ilGlossaryDefinition::getDefinitionList($link["id"]);
             $def_cnt = 1;
             // output all definitions of term
             foreach ($defs as $def) {
                 // definition + number, if more than 1 definition
                 if (count($defs) > 1) {
                     $this->tpl->setCurrentBlock("def_title");
                     $this->tpl->setVariable("TXT_DEFINITION", $this->lng->txt("cont_definition") . " " . $def_cnt++);
                     $this->tpl->parseCurrentBlock();
                 }
                 include_once "./Modules/Glossary/classes/class.ilGlossaryDefPageGUI.php";
                 $page_gui = new ilGlossaryDefPageGUI($def["id"]);
                 $page_gui->setTemplateOutput(false);
                 $page_gui->setOutputMode("print");
                 $this->tpl->setCurrentBlock("definition");
                 $page_gui->setFileDownloadLink("#");
                 $page_gui->setFullscreenLink("#");
                 $page_gui->setSourceCodeDownloadScript("#");
                 $output = $page_gui->showPage();
                 $this->tpl->setVariable("VAL_DEFINITION", $output);
                 $this->tpl->parseCurrentBlock();
             }
             // output term
             $this->tpl->setCurrentBlock("term");
             $this->tpl->setVariable("VAL_TERM", $term = ilGlossaryTerm::_lookGlossaryTerm($link["id"]));
             $this->tpl->parseCurrentBlock();
         }
         // output glossary header
         $annex_cnt++;
         $this->tpl->setCurrentBlock("glossary");
         $annex_title = $this->lng->txt("cont_annex") . " " . chr(64 + $annex_cnt) . ": " . $this->lng->txt("glo");
         $this->tpl->setVariable("TXT_GLOSSARY", $annex_title);
         $this->tpl->parseCurrentBlock();
         $annexes[] = $annex_title;
     }
     // referenced images
     if (count($media_links) > 0) {
         include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
         include_once "./Services/MediaObjects/classes/class.ilMediaItem.php";
         foreach ($media_links as $media) {
             if (substr($media["Target"], 0, 4) == "il__") {
                 $arr = explode("_", $media["Target"]);
                 $id = $arr[count($arr) - 1];
                 $med_obj = new ilObjMediaObject($id);
                 $med_item = $med_obj->getMediaItem("Standard");
                 if (is_object($med_item)) {
                     if (is_int(strpos($med_item->getFormat(), "image"))) {
                         $this->tpl->setCurrentBlock("ref_image");
                         // image source
                         if ($med_item->getLocationType() == "LocalFile") {
                             $this->tpl->setVariable("IMG_SOURCE", ilUtil::getWebspaceDir("output") . "/mobs/mm_" . $id . "/" . $med_item->getLocation());
                         } else {
                             $this->tpl->setVariable("IMG_SOURCE", $med_item->getLocation());
                         }
                         if ($med_item->getCaption() != "") {
                             $this->tpl->setVariable("IMG_TITLE", $med_item->getCaption());
                         } else {
                             $this->tpl->setVariable("IMG_TITLE", $med_obj->getTitle());
                         }
                         $this->tpl->parseCurrentBlock();
                     }
                 }
             }
         }
         // output glossary header
         $annex_cnt++;
         $this->tpl->setCurrentBlock("ref_images");
         $annex_title = $this->lng->txt("cont_annex") . " " . chr(64 + $annex_cnt) . ": " . $this->lng->txt("cont_ref_images");
         $this->tpl->setVariable("TXT_REF_IMAGES", $annex_title);
         $this->tpl->parseCurrentBlock();
         $annexes[] = $annex_title;
     }
     // output learning module title and toc
     if ($output_header) {
         $this->tpl->setCurrentBlock("print_header");
         $this->tpl->setVariable("LM_TITLE", $this->lm->getTitle());
         if ($this->lm->getDescription() != "none") {
             include_once "Services/MetaData/classes/class.ilMD.php";
             $md = new ilMD($this->lm->getId(), 0, $this->lm->getType());
             $md_gen = $md->getGeneral();
             foreach ($md_gen->getDescriptionIds() as $id) {
                 $md_des = $md_gen->getDescription($id);
                 $description = $md_des->getDescription();
             }
             $this->tpl->setVariable("LM_DESCRIPTION", $description);
         }
         $this->tpl->parseCurrentBlock();
         // output toc
         $nodes2 = $nodes;
         foreach ($nodes2 as $node2) {
             if ($node2["type"] == "st" && ilObjContentObject::_checkPreconditionsOfPage($this->lm->getRefId(), $this->lm->getId(), $node2["obj_id"])) {
                 for ($j = 1; $j < $node2["depth"]; $j++) {
                     $this->tpl->setCurrentBlock("indent");
                     $this->tpl->setVariable("IMG_BLANK", ilUtil::getImagePath("browser/blank.png"));
                     $this->tpl->parseCurrentBlock();
                 }
                 $this->tpl->setCurrentBlock("toc_entry");
                 $this->tpl->setVariable("TXT_TOC_TITLE", ilStructureObject::_getPresentationTitle($node2["obj_id"], $this->lm->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), 0, $this->lang));
                 $this->tpl->parseCurrentBlock();
             }
         }
         // annexes
         foreach ($annexes as $annex) {
             $this->tpl->setCurrentBlock("indent");
             $this->tpl->setVariable("IMG_BLANK", ilUtil::getImagePath("browser/blank.png"));
             $this->tpl->parseCurrentBlock();
             $this->tpl->setCurrentBlock("toc_entry");
             $this->tpl->setVariable("TXT_TOC_TITLE", $annex);
             $this->tpl->parseCurrentBlock();
         }
         $this->tpl->setCurrentBlock("toc");
         $this->tpl->setVariable("TXT_TOC", $this->lng->txt("cont_toc"));
         $this->tpl->parseCurrentBlock();
         $this->tpl->setCurrentBlock("print_start_block");
         $this->tpl->parseCurrentBlock();
     }
     // output author information
     include_once 'Services/MetaData/classes/class.ilMD.php';
     $md = new ilMD($this->lm->getId(), 0, $this->lm->getType());
     if (is_object($lifecycle = $md->getLifecycle())) {
         $sep = $author = "";
         foreach ($ids = $lifecycle->getContributeIds() as $con_id) {
             $md_con = $lifecycle->getContribute($con_id);
             if ($md_con->getRole() == "Author") {
                 foreach ($ent_ids = $md_con->getEntityIds() as $ent_id) {
                     $md_ent = $md_con->getEntity($ent_id);
                     $author = $author . $sep . $md_ent->getEntity();
                     $sep = ", ";
                 }
             }
         }
         if ($author != "") {
             $this->lng->loadLanguageModule("meta");
             $this->tpl->setCurrentBlock("author");
             $this->tpl->setVariable("TXT_AUTHOR", $this->lng->txt("meta_author"));
             $this->tpl->setVariable("LM_AUTHOR", $author);
             $this->tpl->parseCurrentBlock();
         }
     }
     // output copyright information
     if (is_object($md_rights = $md->getRights())) {
         $copyright = $md_rights->getDescription();
         include_once 'Services/MetaData/classes/class.ilMDUtils.php';
         $copyright = ilMDUtils::_parseCopyright($copyright);
         if ($copyright != "") {
             $this->lng->loadLanguageModule("meta");
             $this->tpl->setCurrentBlock("copyright");
             $this->tpl->setVariable("TXT_COPYRIGHT", $this->lng->txt("meta_copyright"));
             $this->tpl->setVariable("LM_COPYRIGHT", $copyright);
             $this->tpl->parseCurrentBlock();
         }
     }
     $this->tpl->show(false);
 }
 /**
  * show chapters
  */
 function chapters()
 {
     global $tree, $lng, $ilCtrl, $ilUser;
     $this->setTabs();
     $this->setContentSubTabs("chapters");
     if ($ilUser->getPref("lm_js_chapter_editing") != "disable") {
         $ilCtrl->setParameter($this, "backcmd", "chapters");
         include_once "./Modules/LearningModule/classes/class.ilChapterHierarchyFormGUI.php";
         $form_gui = new ilChapterHierarchyFormGUI($this->object->getType());
         $form_gui->setFormAction($ilCtrl->getFormAction($this));
         $form_gui->setTitle($this->object->getTitle());
         $form_gui->setIcon(ilUtil::getImagePath("icon_lm.png"));
         $form_gui->setTree($this->lm_tree);
         $form_gui->setMaxDepth(0);
         $form_gui->setCurrentTopNodeId($this->tree->getRootId());
         $form_gui->addMultiCommand($lng->txt("delete"), "delete");
         $form_gui->addMultiCommand($lng->txt("cut"), "cutItems");
         $form_gui->addMultiCommand($lng->txt("copy"), "copyItems");
         if ($this->object->getLayoutPerPage()) {
             $form_gui->addMultiCommand($lng->txt("cont_set_layout"), "setPageLayoutInHierarchy");
         }
         $form_gui->setDragIcon(ilUtil::getImagePath("icon_st_s.png"));
         $form_gui->addCommand($lng->txt("cont_save_all_titles"), "saveAllTitles");
         $up_gui = $this->object->getType() == "dbk" ? "ilobjdlbookgui" : "ilobjlearningmodulegui";
         $form_gui->setExplorerUpdater("tree", "tree_div", $ilCtrl->getLinkTargetByClass($up_gui, "explorer", "", true));
         $ctpl = new ilTemplate("tpl.chap_and_pages.html", true, true, "Modules/LearningModule");
         $ctpl->setVariable("HIERARCHY_FORM", $form_gui->getHTML());
         $ilCtrl->setParameter($this, "obj_id", "");
         $ctpl->setVariable("HREF_NO_JS_EDIT", $ilCtrl->getLinkTarget($this, "deactivateJSChapterEditing"));
         $ctpl->setVariable("TXT_NO_JS_EDIT", $lng->txt("cont_not_js_chap_editing"));
         $this->tpl->setContent($ctpl->get());
     } else {
         $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.structure_edit.html", "Modules/LearningModule");
         $num = 0;
         $this->ctrl->setParameter($this, "backcmd", "chapters");
         $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
         $this->tpl->setVariable("HEADER_TEXT", $this->lng->txt("cont_chapters"));
         $this->tpl->setVariable("CHECKBOX_TOP", IL_FIRST_NODE);
         $cnt = 0;
         $childs = $this->lm_tree->getChilds($this->lm_tree->getRootId());
         foreach ($childs as $child) {
             if ($child["type"] != "st") {
                 continue;
             }
             $this->tpl->setCurrentBlock("table_row");
             // color changing
             $css_row = ilUtil::switchColor($cnt++, "tblrow1", "tblrow2");
             // checkbox
             $this->tpl->setVariable("CHECKBOX_ID", $child["obj_id"]);
             $this->tpl->setVariable("CSS_ROW", $css_row);
             $this->tpl->setVariable("IMG_OBJ", ilUtil::getImagePath("icon_st.png"));
             // link
             $this->ctrl->setParameter($this, "backcmd", "");
             $this->ctrl->setParameterByClass("ilStructureObjectGUI", "obj_id", $child["obj_id"]);
             $this->tpl->setVariable("LINK_TARGET", $this->ctrl->getLinkTargetByClass("ilStructureObjectGUI", "view"));
             // title
             $this->tpl->setVariable("TEXT_CONTENT", ilStructureObject::_getPresentationTitle($child["obj_id"], $this->object->isActiveNumbering()));
             $this->tpl->parseCurrentBlock();
         }
         $paste_active = false;
         if ($ilUser->clipboardHasObjectsOfType("st")) {
             $paste_active = true;
         }
         if ($cnt == 0 && !$paste_active) {
             $this->tpl->setCurrentBlock("notfound");
             $this->tpl->setVariable("NUM_COLS", 3);
             $this->tpl->setVariable("TXT_OBJECT_NOT_FOUND", $this->lng->txt("obj_not_found"));
             $this->tpl->parseCurrentBlock();
         } else {
             // SHOW VALID ACTIONS
             $this->tpl->setVariable("NUM_COLS", 3);
             if ($cnt > 0) {
                 $acts = array("delete" => "delete", "cutChapter" => "cut", "copyChapter" => "copyChapter");
             }
             if ($paste_active) {
                 $acts["pasteChapter"] = "pasteChapter";
             }
             $this->showActions($acts);
         }
         // SHOW POSSIBLE SUB OBJECTS
         $this->tpl->setVariable("NUM_COLS", 3);
         $subobj = array("st");
         $opts = ilUtil::formSelect(12, "new_type", $subobj);
         $this->tpl->setCurrentBlock("add_object");
         $this->tpl->setVariable("SELECT_OBJTYPE", $opts);
         $this->tpl->setVariable("BTN_NAME", "create");
         $this->tpl->setVariable("TXT_ADD", $this->lng->txt("insert"));
         $this->tpl->parseCurrentBlock();
         $this->tpl->setCurrentBlock("form");
         $this->tpl->parseCurrentBlock();
         $this->tpl->setVariable("HREF_JS_EDIT", $ilCtrl->getLinkTarget($this, "activateJSChapterEditing"));
         $this->tpl->setVariable("TXT_JS_EDIT", $lng->txt("cont_js_chap_editing"));
     }
 }
 /**
  * Get node content
  *
  * @param array $a_node node array
  * @return string node content
  */
 function getNodeContent($a_node)
 {
     if ($a_node["type"] == "st") {
         return ilStructureObject::_getPresentationTitle($a_node["child"], $this->lm->isActiveNumbering(), false, $this->lm->getId(), $this->lang);
     } else {
         if ($a_node["type"] == "pg") {
             return ilLMPageObject::_getPresentationTitle($a_node["child"], $this->lm->getPageHeader(), $this->lm->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), true, $this->lm->getId(), $this->lang);
         } else {
             if ($a_node["child"] == $this->getNodeId($this->getRootNode())) {
                 return $this->lm->getTitle();
             }
         }
     }
     if ($a_node["type"] == "pg") {
         return ilLMPageObject::_getPresentationTitle($a_node["child"], $this->lm->getPageHeader(), $this->lm->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation"), true, $this->lm->getId(), $this->lang);
     }
     return $a_node["title"];
 }
 /**
  * standard implementation for title, maybe overwritten by derived classes
  */
 function buildTitle($a_title, $a_id, $a_type)
 {
     global $lng;
     include_once "./Modules/LearningModule/classes/class.ilObjContentObject.php";
     $access_str = "";
     if (!ilObjContentObject::_checkPreconditionsOfPage($_GET['ref_id'], ilObject::_lookupObjId($_GET["ref_id"]), $a_id)) {
         $access_str = " (" . $lng->txt("cont_no_access") . ")";
     }
     if ($a_type == "st") {
         return ilStructureObject::_getPresentationTitle($a_id, $this->lm_obj->isActiveNumbering()) . $access_str;
     }
     if ($this->lm_obj->getTOCMode() == "chapters" || $a_type != "pg") {
         return $a_title . $access_str;
     } else {
         if ($a_type == "pg") {
             return ilLMPageObject::_getPresentationTitle($a_id, $this->lm_obj->getPageHeader(), $this->lm_obj->isActiveNumbering(), $this->lm_set->get("time_scheduled_page_activation")) . $access_str;
         }
     }
 }
 /**
  * standard implementation for title, maybe overwritten by derived classes
  */
 function buildTitle($a_title, $a_id, $a_type)
 {
     //echo "<br>-$a_title-$a_type-$a_id-";
     if ($a_type == "st") {
         return ilStructureObject::_getPresentationTitle($a_id, $this->lm_obj->isActiveNumbering());
     }
     return $a_title;
     /*
     		if ($this->lm_obj->getTOCMode() == "chapters" || $a_type != "pg")
     		{
     			return $a_title;
     		}
     		else
     		{
     			if ($a_type == "pg")
     			{
     				return ilLMPageObject::_getPresentationTitle($a_id,
     					$this->lm_obj->getPageHeader(), $this->lm_obj->isActiveNumbering());
     			}
     		}*/
 }