/** * Standard Version of Fill Row. Most likely to * be overwritten by derived class. */ protected function fillRow($a_set) { global $lng, $ilCtrl; $lng->loadLanguageModule("assessment"); include_once "./Modules/Scorm2004/classes/class.ilSCORM2004NodeFactory.php"; $node_object = ilSCORM2004NodeFactory::getInstance($this->slm_object, $a_set["child"], false); $tr_data = $node_object->getObjectives(); // learning objectives foreach ($tr_data as $data) { $this->tpl->setCurrentBlock("objective"); $this->tpl->setVariable("TXT_LEARNING_OBJECTIVE", ilSCORM2004Sco::convertLists($data->getObjectiveID())); $this->tpl->setVariable("IMG_LOBJ", ilUtil::getImagePath("icon_lobj.svg")); $this->tpl->parseCurrentBlock(); } // pages include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Page.php"; include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; $childs = $this->tree->getChilds($a_set["child"]); foreach ($childs as $child) { // get question ids include_once "./Services/COPage/classes/class.ilPCQuestion.php"; $qids = ilPCQuestion::_getQuestionIdsForPage("sahs", $child["child"]); if (count($qids) > 0) { // output questions foreach ($qids as $qid) { $this->tpl->setCurrentBlock("question"); //$qtitle = assQuestion::_getTitle($qid); $qtype = assQuestion::_getQuestionType($qid); //$qtext = assQuestion::_getQuestionText($qid); $qtext = assQuestion::_getQuestionTitle($qid); $this->tpl->setVariable("TXT_QUESTION", $qtext); $this->tpl->setVariable("TXT_QTYPE", $lng->txt($qtype)); $this->tpl->setVariable("IMG_QST", ilUtil::getImagePath("icon_tst.svg")); $this->tpl->parseCurrentBlock(); } // output page title $page_title = ilSCORM2004Node::_lookupTitle($child["child"]); $this->tpl->setCurrentBlock("page"); $this->tpl->setVariable("TXT_PAGE_TITLE", $page_title); $this->tpl->setVariable("IMG_PAGE", ilUtil::getImagePath("icon_pg.svg")); $ilCtrl->setParameterByClass("ilscorm2004pagenodegui", "obj_id", $child["child"]); $this->tpl->setVariable("HREF_EDIT_PAGE", $ilCtrl->getLinkTargetByClass("ilscorm2004pagenodegui", "edit")); $this->tpl->parseCurrentBlock(); } } // sco title $this->tpl->setVariable("TXT_SCO_TITLE", $a_set["title"]); $this->tpl->setVariable("IMG_SCO", ilUtil::getImagePath("icon_sco.svg")); $ilCtrl->setParameterByClass("ilscorm2004scogui", "obj_id", $a_set["child"]); $this->tpl->setVariable("HREF_EDIT_SCO", $ilCtrl->getLinkTargetByClass("ilscorm2004scogui", "showProperties")); }
/** * Get's the repository object ID of a parent object, if possible * * see ilWebAccessChecker */ function getParentObjectIdForUsage($a_usage, $a_include_all_access_obj_ids = false) { if (is_int(strpos($a_usage["type"], ":"))) { $us_arr = explode(":", $a_usage["type"]); $type = $us_arr[1]; $cont_type = $us_arr[0]; } else { $type = $a_usage["type"]; } $id = $a_usage["id"]; $obj_id = false; switch ($type) { // RTE / tiny mce case "html": switch ($cont_type) { case "qpl": // Question Pool *Question* Text (Test) include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; $qinfo = assQuestion::_getQuestionInfo($id); if ($qinfo["original_id"] > 0) { include_once "./Modules/Test/classes/class.ilObjTest.php"; $obj_id = ilObjTest::_lookupTestObjIdForQuestionId($id); // usage in test } else { $obj_id = $qinfo["obj_fi"]; // usage in pool } break; case "spl": // Question Pool *Question* Text (Survey) include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php"; $quest = SurveyQuestion::_instanciateQuestion($id); if ($quest) { $parent_id = $quest->getObjId(); // pool question copy - find survey, do not use pool itself if ($quest->getOriginalId() && ilObject::_lookupType($parent_id) == "spl") { $obj_id = SurveyQuestion::_lookupSurveyObjId($id); } else { $obj_id = $parent_id; } unset($quest); } break; case "exca": // Exercise assignment $returned_pk = $a_usage['id']; // we are just checking against exercise object include_once 'Modules/Exercise/classes/class.ilObjExercise.php'; $obj_id = ilObjExercise::lookupExerciseIdForReturnedId($returned_pk); break; case "frm": // Forum $post_pk = $a_usage['id']; include_once 'Modules/Forum/classes/class.ilForumPost.php'; include_once 'Modules/Forum/classes/class.ilForum.php'; $oPost = new ilForumPost($post_pk); $frm_pk = $oPost->getForumId(); $obj_id = ilForum::_lookupObjIdForForumId($frm_pk); break; // temporary items (per user) // temporary items (per user) case "frm~": case "exca~": $obj_id = $a_usage['id']; break; // "old" category pages // "old" category pages case "cat": // InfoScreen Text // InfoScreen Text case "tst": case "svy": // data collection // data collection case "dcl": $obj_id = $id; break; } break; // page editor // page editor case "pg": switch ($cont_type) { // question feedback // parent obj id is q id case "qfbg": include_once './Services/COPage/classes/class.ilPageObject.php'; $id = ilPageObject::lookupParentId($id, 'qfbg'); // note: no break here, we only altered the $id to the question id // note: no break here, we only altered the $id to the question id case "qpl": // Question Pool Question Pages include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; $qinfo = assQuestion::_getQuestionInfo($id); if ($qinfo["original_id"] > 0) { include_once "./Modules/Test/classes/class.ilObjTest.php"; $obj_id = ilObjTest::_lookupTestObjIdForQuestionId($id); // usage in test } else { $obj_id = $qinfo["obj_fi"]; // usage in pool } if ($obj_id == 0) { include_once "./Services/COPage/classes/class.ilPCQuestion.php"; $pinfo = ilPCQuestion::_getPageForQuestionId($id, "lm"); if ($pinfo && $pinfo["parent_type"] == "lm") { include_once "./Modules/LearningModule/classes/class.ilLMObject.php"; $obj_id = ilLMObject::_lookupContObjID($pinfo["page_id"]); } $pinfo = ilPCQuestion::_getPageForQuestionId($id, "sahs"); if ($pinfo && $pinfo["parent_type"] == "sahs") { include_once "./Modules/SCORM2004/classes/class.ilSCORM2004Node.php"; $obj_id = ilSCORM2004Node::_lookupSLMID($pinfo["page_id"]); } } break; case "lm": case "dbk": // learning modules include_once "./Modules/LearningModule/classes/class.ilLMObject.php"; $obj_id = ilLMObject::_lookupContObjID($id); break; case "gdf": // glossary definition include_once "./Modules/Glossary/classes/class.ilGlossaryDefinition.php"; include_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php"; $term_id = ilGlossaryDefinition::_lookupTermId($id); $obj_id = ilGlossaryTerm::_lookGlossaryID($term_id); break; case "wpg": // wiki page include_once 'Modules/Wiki/classes/class.ilWikiPage.php'; $obj_id = ilWikiPage::lookupObjIdByPage($id); break; case "sahs": // sahs page // can this implementation be used for other content types, too? include_once './Services/COPage/classes/class.ilPageObject.php'; $obj_id = ilPageObject::lookupParentId($id, 'sahs'); break; case "prtf": // portfolio include_once "Modules/Portfolio/classes/class.ilPortfolioPage.php"; $obj_id = ilPortfolioPage::findPortfolioForPage($id); break; case "prtt": // portfolio template include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $obj_id = ilPortfolioTemplatePage::findPortfolioForPage($id); break; case "blp": // blog include_once './Services/COPage/classes/class.ilPageObject.php'; $obj_id = ilPageObject::lookupParentId($id, 'blp'); break; case "impr": // imprint page - always id 1 // fallthrough // imprint page - always id 1 // fallthrough case "crs": case "grp": case "cat": case "fold": case "root": case "cont": case "cstr": // repository pages $obj_id = $id; break; } break; // Media Pool // Media Pool case "mep": $obj_id = $id; break; // News Context Object (e.g. MediaCast) // News Context Object (e.g. MediaCast) case "news": include_once "./Services/News/classes/class.ilNewsItem.php"; $obj_id = ilNewsItem::_lookupContextObjId($id); break; } return $obj_id; }
/** * Get question ids * * note: this method must be called afer exportXMLPageContent */ function getQuestionIds() { include_once "./Services/COPage/classes/class.ilPCQuestion.php"; return ilPCQuestion::_getQuestionIdsForPage($this->content_object->getType(), $this->getId()); }
function exportXMLPageObjects($a_target_dir, &$a_xml_writer, $a_inst, &$expLog) { global $ilBench; include_once "./Modules/Scorm2004/classes/class.ilSCORM2004PageNode.php"; include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Page.php"; $tree = new ilTree($this->slm_id); $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node'); $tree->setTreeTablePK("slm_id"); $pages = $tree->getSubTree($tree->getNodeData($this->getId()), true, 'page'); foreach ($pages as $page) { $expLog->write(date("[y-m-d H:i:s] ") . "Page Object " . $page["obj_id"]); // export xml to writer object $page_obj = new ilSCORM2004Page($page["obj_id"]); $page_obj->exportXML($a_xml_writer, "normal", $a_inst); //collect media objects $mob_ids = $page_obj->getMediaObjectIds(); foreach ($mob_ids as $mob_id) { $this->mob_ids[$mob_id] = $mob_id; } // collect all file items $file_ids = $page_obj->getFileItemIds(); foreach ($file_ids as $file_id) { $this->file_ids[$file_id] = $file_id; } include_once "./Services/COPage/classes/class.ilPCQuestion.php"; $q_ids = ilPCQuestion::_getQuestionIdsForPage("sahs", $page["obj_id"]); if (count($q_ids) > 0) { include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; foreach ($q_ids as $q_id) { $q_obj =& assQuestion::_instanciateQuestion($q_id); $qti_file = fopen($a_target_dir . "/qti_" . $q_id . ".xml", "w"); fwrite($qti_file, $q_obj->toXML()); fclose($qti_file); } } unset($page_obj); } }
function sahs_questions() { global $tpl, $lng, $ilCtrl; $this->setTabs(); $this->setLocator(); include_once "./Services/Table/classes/class.ilTableGUI.php"; include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Page.php"; include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; include_once "./Services/COPage/classes/class.ilPCQuestionGUI.php"; // load template for table $tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.table.html"); $tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.scormeditor_sco_question.html", "Modules/Scorm2004"); $tbl = new ilTableGUI(); $tbl->setTitle("Questions for " . $this->node_object->getTitle()); $tbl->setHeaderNames(array("Question", "Page")); $cols = array("question", "page"); $tbl->setHeaderVars($cols, $header_params); $tbl->setColumnWidth(array("50%", "50%")); $tbl->disable("sort"); $tbl->disable("footer"); $tree = new ilTree($this->slm_object->getId()); $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node'); $tree->setTreeTablePK("slm_id"); foreach ($tree->getSubTree($tree->getNodeData($this->node_object->getId()), true, 'page') as $page) { // get question ids include_once "./Services/COPage/classes/class.ilPCQuestion.php"; $qids = ilPCQuestion::_getQuestionIdsForPage("sahs", $page["obj_id"]); if (count($qids) > 0) { // output questions foreach ($qids as $qid) { $tpl->setCurrentBlock("tbl_content"); $tpl->setVariable("TXT_PAGE_TITLE", $page["title"]); $ilCtrl->setParameterByClass("ilscorm2004pagenodegui", "obj_id", $page["obj_id"]); $tpl->setVariable("HREF_EDIT_PAGE", $ilCtrl->getLinkTargetByClass("ilscorm2004pagenodegui", "edit")); $qtitle = assQuestion::_getTitle($qid); $tpl->setVariable("TXT_QUESTION", $qtitle); $ilCtrl->setParameterByClass("ilscorm2004pagenodegui", "obj_id", $page["obj_id"]); //$tpl->setVariable("HREF_EDIT_QUESTION", $ilCtrl->getLinkTargetByClass("ilscorm2004pagenodegui", "edit")); $tpl->setVariable("CSS_ROW", ilUtil::switchColor($i++, "tblrow1", "tblrow2")); $tpl->parseCurrentBlock(); } } } $tbl->render(); }
/** * Modify page content after xsl * * @param string $a_output * @return string */ function modifyPageContentPostXsl($a_output, $a_mode) { global $lng; if ($this->getPage()->getPageConfig()->getEnableSelfAssessment()) { // #14154 $q_ids = $this->getPage()->getQuestionIds(); if (sizeof($q_ids)) { include_once "./Modules/TestQuestionPool/classes/class.assQuestionGUI.php"; foreach ($q_ids as $q_id) { $q_gui = assQuestionGUI::_getQuestionGUI("", $q_id); if (!$q_gui->object->isComplete()) { $a_output = str_replace("{{{{{Question;il__qst_" . $q_id . "}}}}}", "<i>" . $lng->txt("cont_empty_question") . "</i>", $a_output); } } // this exports the questions which is needed below $qhtml = $this->getQuestionJsOfPage($a_mode == "edit" ? true : false, $a_mode); require_once './Modules/Scorm2004/classes/class.ilQuestionExporter.php'; $a_output = "<script>" . ilQuestionExporter::questionsJS($q_ids) . "</script>" . $a_output; if (!self::$initial_done) { $a_output = "<script>var ScormApi=null; var questions = new Array();</script>" . $a_output; self::$initial_done = true; } } } else { // set by T&A components $qhtml = $this->getPage()->getPageConfig()->getQuestionHTML(); } if (is_array($qhtml)) { foreach ($qhtml as $k => $h) { $a_output = str_replace("{{{{{Question;il__qst_{$k}" . "}}}}}", " " . $h, $a_output); } } return $a_output; }
/** * Reset initial state (for exports) */ static function resetInitialState() { self::$initial_done = false; }
/** * export page html */ function exportPageHTML(&$a_lm_gui, $a_target_dir, $a_lm_page_id, $a_frame = "", $a_exp_id_map = array()) { global $tpl, $ilBench; //echo "<br>B: export Page HTML ($a_lm_page_id)"; flush(); // template workaround: reset of template $tpl = new ilTemplate("tpl.main.html", true, true); $tpl->addBlockFile("CONTENT", "content", "tpl.adm_content.html"); include_once "./Services/COPage/classes/class.ilPCQuestion.php"; ilPCQuestion::resetInitialState(); $_GET["obj_id"] = $a_lm_page_id; $_GET["frame"] = $a_frame; if ($a_frame == "") { //if ($nid = ilLMObject::_lookupNID($a_lm_gui->lm->getId(), $a_lm_page_id, "pg")) if (is_array($a_exp_id_map) && isset($a_exp_id_map[$a_lm_page_id])) { $file = $a_target_dir . "/lm_pg_" . $a_exp_id_map[$a_lm_page_id] . ".html"; } else { $file = $a_target_dir . "/lm_pg_" . $a_lm_page_id . ".html"; } } else { if ($a_frame != "toc") { $file = $a_target_dir . "/frame_" . $a_lm_page_id . "_" . $a_frame . ".html"; } else { $file = $a_target_dir . "/frame_" . $a_frame . ".html"; } } // return if file is already existing if (@is_file($file)) { return; } $content =& $a_lm_gui->layout("main.xml", false); // open file if (!($fp = @fopen($file, "w+"))) { die("<b>Error</b>: Could not open \"" . $file . "\" for writing" . " in <b>" . __FILE__ . "</b> on line <b>" . __LINE__ . "</b><br />"); } // set file permissions chmod($file, 0770); // write xml data into the file fwrite($fp, $content); // close file fclose($fp); if ($this->first_page_id == $a_lm_page_id && $a_frame == "") { copy($file, $a_target_dir . "/index.html"); } // write frames of frameset $frameset = $a_lm_gui->getCurrentFrameSet(); foreach ($frameset as $frame) { $this->exportPageHTML($a_lm_gui, $a_target_dir, $a_lm_page_id, $frame); } }
/** * Get a content object of the page * * @param string hier ID * @param string PC ID * * @return object page content object */ function &getContentObject($a_hier_id, $a_pc_id = "") { //echo ":".$a_hier_id.":"; //echo "Content:".htmlentities($this->getXMLFromDOM()).":<br>"; //echo "ilPageObject::getContentObject:hierid:".$a_hier_id.":<br>"; $cont_node =& $this->getContentNode($a_hier_id, $a_pc_id); //echo "ilPageObject::getContentObject:nodename:".$cont_node->node_name().":<br>"; if (!is_object($cont_node)) { return false; } switch ($cont_node->node_name()) { case "PageContent": $child_node =& $cont_node->first_child(); //echo "<br>nodename:".$child_node->node_name(); switch ($child_node->node_name()) { case "Paragraph": require_once "./Services/COPage/classes/class.ilPCParagraph.php"; $par =& new ilPCParagraph($this->dom); $par->setNode($cont_node); $par->setHierId($a_hier_id); $par->setPcId($a_pc_id); return $par; case "Table": if ($child_node->get_attribute("DataTable") == "y") { require_once "./Services/COPage/classes/class.ilPCDataTable.php"; $tab =& new ilPCDataTable($this->dom); $tab->setNode($cont_node); $tab->setHierId($a_hier_id); } else { require_once "./Services/COPage/classes/class.ilPCTable.php"; $tab =& new ilPCTable($this->dom); $tab->setNode($cont_node); $tab->setHierId($a_hier_id); } $tab->setPcId($a_pc_id); return $tab; case "MediaObject": if ($_GET["pgEdMediaMode"] != "") { echo "ilPageObject::error media"; exit; } //require_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php"); require_once "./Services/COPage/classes/class.ilPCMediaObject.php"; $mal_node =& $child_node->first_child(); //echo "ilPageObject::getContentObject:nodename:".$mal_node->node_name().":<br>"; $id_arr = explode("_", $mal_node->get_attribute("OriginId")); $mob_id = $id_arr[count($id_arr) - 1]; // allow deletion of non-existing media objects if (!ilObject::_exists($mob_id) && in_array("delete", $_POST)) { $mob_id = 0; } //$mob =& new ilObjMediaObject($mob_id); $mob = new ilPCMediaObject($this->dom); $mob->readMediaObject($mob_id); //$mob->setDom($this->dom); $mob->setNode($cont_node); $mob->setHierId($a_hier_id); $mob->setPcId($a_pc_id); return $mob; case "List": require_once "./Services/COPage/classes/class.ilPCList.php"; $list = new ilPCList($this->dom); $list->setNode($cont_node); $list->setHierId($a_hier_id); $list->setPcId($a_pc_id); return $list; case "FileList": require_once "./Services/COPage/classes/class.ilPCFileList.php"; $file_list = new ilPCFileList($this->dom); $file_list->setNode($cont_node); $file_list->setHierId($a_hier_id); $file_list->setPcId($a_pc_id); return $file_list; // note: assessment handling is forwarded to assessment gui classes // note: assessment handling is forwarded to assessment gui classes case "Question": require_once "./Services/COPage/classes/class.ilPCQuestion.php"; $pc_question = new ilPCQuestion($this->dom); $pc_question->setNode($cont_node); $pc_question->setHierId($a_hier_id); $pc_question->setPcId($a_pc_id); return $pc_question; case "Section": require_once "./Services/COPage/classes/class.ilPCSection.php"; $sec = new ilPCSection($this->dom); $sec->setNode($cont_node); $sec->setHierId($a_hier_id); $sec->setPcId($a_pc_id); return $sec; case "Resources": require_once "./Services/COPage/classes/class.ilPCResources.php"; $res = new ilPCResources($this->dom); $res->setNode($cont_node); $res->setHierId($a_hier_id); $res->setPcId($a_pc_id); return $res; case 'LoginPageElement': include_once './Services/COPage/classes/class.ilPCLoginPageElements.php'; $res = new ilPCLoginPageElements($this->dom); $res->setNode($cont_node); $res->setHierId($a_hier_id); $res->setPcId($a_pcid); return $res; case "Map": require_once "./Services/COPage/classes/class.ilPCMap.php"; $map = new ilPCMap($this->dom); $map->setNode($cont_node); $map->setHierId($a_hier_id); $map->setPcId($a_pc_id); return $map; case "Tabs": require_once "./Services/COPage/classes/class.ilPCTabs.php"; $map = new ilPCTabs($this->dom); $map->setNode($cont_node); $map->setHierId($a_hier_id); $map->setPcId($a_pc_id); return $map; case "Plugged": require_once "./Services/COPage/classes/class.ilPCPlugged.php"; $plugged = new ilPCPlugged($this->dom); $plugged->setNode($cont_node); $plugged->setHierId($a_hier_id); $plugged->setPcId($a_pc_id); return $plugged; //Page-Layout-Support //Page-Layout-Support case "PlaceHolder": require_once "./Services/COPage/classes/class.ilPCPlaceHolder.php"; $placeholder = new ilPCPlaceHolder($this->dom); $placeholder->setNode($cont_node); $placeholder->setHierId($a_hier_id); $placeholder->setPcId($a_pc_id); return $placeholder; case "ContentInclude": require_once "./Services/COPage/classes/class.ilPCContentInclude.php"; $inc =& new ilPCContentInclude($this->dom); $inc->setNode($cont_node); $inc->setHierId($a_hier_id); $inc->setPcId($a_pc_id); return $inc; case "InteractiveImage": require_once "./Services/COPage/classes/class.ilPCInteractiveImage.php"; $iim = new ilPCInteractiveImage($this->dom); $iim->setNode($cont_node); $iim->setHierId($a_hier_id); $iim->setPcId($a_pc_id); return $iim; case "Profile": require_once "./Services/COPage/classes/class.ilPCProfile.php"; $prof = new ilPCProfile($this->dom); $prof->setNode($cont_node); $prof->setHierId($a_hier_id); $prof->setPcId($a_pc_id); return $prof; case "Verification": require_once "./Services/COPage/classes/class.ilPCVerification.php"; $vrfc = new ilPCVerification($this->dom); $vrfc->setNode($cont_node); $vrfc->setHierId($a_hier_id); $vrfc->setPcId($a_pc_id); return $vrfc; case "Blog": require_once "./Services/COPage/classes/class.ilPCBlog.php"; $blog = new ilPCBlog($this->dom); $blog->setNode($cont_node); $blog->setHierId($a_hier_id); $blog->setPcId($a_pc_id); return $blog; case "QuestionOverview": require_once "./Services/COPage/classes/class.ilPCQuestionOverview.php"; $qover = new ilPCQuestionOverview($this->dom); $qover->setNode($cont_node); $qover->setHierId($a_hier_id); $qover->setPcId($a_pc_id); return $qover; case "Skills": require_once "./Services/COPage/classes/class.ilPCSkills.php"; $skill = new ilPCSkills($this->dom); $skill->setNode($cont_node); $skill->setHierId($a_hier_id); $skill->setPcId($a_pc_id); return $skill; } break; case "TableData": require_once "./Services/COPage/classes/class.ilPCTableData.php"; $td =& new ilPCTableData($this->dom); $td->setNode($cont_node); $td->setHierId($a_hier_id); return $td; case "ListItem": require_once "./Services/COPage/classes/class.ilPCListItem.php"; $td =& new ilPCListItem($this->dom); $td->setNode($cont_node); $td->setHierId($a_hier_id); return $td; case "FileItem": require_once "./Services/COPage/classes/class.ilPCFileItem.php"; $file_item =& new ilPCFileItem($this->dom); $file_item->setNode($cont_node); $file_item->setHierId($a_hier_id); return $file_item; /* case "Tab": require_once("./Services/COPage/classes/class.ilPCTab.php"); $tab =& new ilPCTab($this->dom); $tab->setNode($cont_node); $tab->setHierId($a_hier_id); return $tab;*/ } }