/** * Render item group * * @param * @return */ function renderItemGroup($a_tpl, $a_itgr) { global $ilAccess, $lng; $perm_ok = $ilAccess->checkAccess("read", "", $a_itgr['ref_id']); include_once './Services/Container/classes/class.ilContainerSorting.php'; include_once './Services/Object/classes/class.ilObjectActivation.php'; $items = ilObjectActivation::getItemsByItemGroup($a_itgr['ref_id']); $items = ilContainerSorting::_getInstance($this->getContainerObject()->getId())->sortSubItems('itgr', $a_itgr['obj_id'], $items); // if no permissoin is given, set the items to "rendered" but // do not display the whole block if (!$perm_ok) { foreach ($items as $item) { $this->rendered_items[$item["child"]] = true; } return; } $item_list_gui = $this->getItemGUI($a_itgr); $item_list_gui->enableNotes(false); $item_list_gui->enableTags(false); $item_list_gui->enableComments(false); $item_list_gui->enableTimings(false); $item_list_gui->getListItemHTML($a_itgr["ref_id"], $a_itgr["obj_id"], $a_itgr["title"], $a_itgr["description"]); $commands_html = $item_list_gui->getCommandsHTML(); $this->addSeparatorRow($a_tpl); $a_tpl->setVariable("CB_ID", ' id="bl_cntr_' . $this->bl_cnt . '"'); if ($this->getContainerGUI()->isActiveAdministrationPanel() && !$_SESSION["clipboard"]) { $a_tpl->setCurrentBlock("select_all_row"); $a_tpl->setVariable("CHECKBOXNAME", "bl_cb_" . $this->bl_cnt); $a_tpl->setVariable("SEL_ALL_PARENT", "bl_cntr_" . $this->bl_cnt); $a_tpl->setVariable("SEL_ALL_PARENT", "bl_cntr_" . $this->bl_cnt); $a_tpl->setVariable("TXT_SELECT_ALL", $lng->txt("select_all")); $a_tpl->parseCurrentBlock(); $this->bl_cnt++; } $a_tpl->setCurrentBlock("container_header_row"); $a_tpl->setVariable("BLOCK_HEADER_CONTENT", $a_itgr["title"]); $a_tpl->setVariable("CHR_COMMANDS", $commands_html); $a_tpl->parseCurrentBlock(); $a_tpl->touchBlock("container_row"); $this->resetRowType(); // render item group sub items $position = 1; foreach ($items as $item) { $html2 = $this->renderItem($item, $position++, false, "[itgr][" . $a_itgr['obj_id'] . "]"); if ($html2 != "") { $this->addStandardRow($a_tpl, $html2, $item["child"]); $this->rendered_items[$item["child"]] = true; } } // finish block $a_tpl->setCurrentBlock("container_block"); $a_tpl->parseCurrentBlock(); }
/** * Render item group * * @param * @return */ function renderItemGroup($a_itgr) { global $ilAccess, $lng; $perm_ok = $ilAccess->checkAccess("read", "", $a_itgr['ref_id']); include_once './Services/Container/classes/class.ilContainerSorting.php'; include_once './Services/Object/classes/class.ilObjectActivation.php'; $items = ilObjectActivation::getItemsByItemGroup($a_itgr['ref_id']); // if no permission is given, set the items to "rendered" but // do not display the whole block if (!$perm_ok) { foreach ($items as $item) { $this->renderer->hideItem($item["child"]); } return; } $item_list_gui = $this->getItemGUI($a_itgr); $item_list_gui->enableNotes(false); $item_list_gui->enableTags(false); $item_list_gui->enableComments(false); $item_list_gui->enableTimings(false); $item_list_gui->getListItemHTML($a_itgr["ref_id"], $a_itgr["obj_id"], $a_itgr["title"], $a_itgr["description"]); $commands_html = $item_list_gui->getCommandsHTML(); $this->renderer->addCustomBlock($a_itgr["ref_id"], $a_itgr["title"], $commands_html); // render item group sub items $items = ilContainerSorting::_getInstance($this->getContainerObject()->getId())->sortSubItems('itgr', $a_itgr['obj_id'], $items); $position = 1; foreach ($items as $item) { $html2 = $this->renderItem($item, $position++, false, "[itgr][" . $a_itgr['obj_id'] . "]"); if ($html2 != "") { // :TODO: show it multiple times? $this->renderer->addItemToBlock($a_itgr["ref_id"], $item["type"], $item["child"], $html2, true); } } }
/** * Sort childs * * @param array $a_childs array of child nodes * @param mixed $a_parent_node parent node * * @return array array of childs nodes */ function sortChilds($a_childs, $a_parent_node_id) { global $objDefinition; $parent_obj_id = ilObject::_lookupObjId($a_parent_node_id); if ($parent_obj_id > 0) { $parent_type = ilObject::_lookupType($parent_obj_id); } else { $parent_type = "dummy"; $this->type_grps["dummy"] = array("root" => "dummy"); } if (empty($this->type_grps[$parent_type])) { $this->type_grps[$parent_type] = $objDefinition->getGroupedRepositoryObjectTypes($parent_type); } // #14465 - item groups include_once './Services/Object/classes/class.ilObjectActivation.php'; $group = array(); foreach ($a_childs as $child) { // item group: get childs if ($child["type"] == "itgr") { $g = $child["child"]; $items = ilObjectActivation::getItemsByItemGroup($g); if ($items) { // add item group ref id to item group block $this->type_grps[$parent_type]["itgr"]["ref_ids"][] = $g; foreach ($items as $item) { $group[$g][] = $item; } } } else { $g = $objDefinition->getGroupOfObj($child["type"]); if ($g == "") { $g = $child["type"]; } $group[$g][] = $child; } } // custom block sorting? include_once "./Services/Container/classes/class.ilContainerSorting.php"; $sort = ilContainerSorting::_getInstance($parent_obj_id); $block_pos = $sort->getBlockPositions(); if (sizeof($block_pos)) { $tmp = $this->type_grps[$parent_type]; $this->type_grps[$parent_type] = array(); foreach ($block_pos as $block_type) { // type group if (!is_numeric($block_type) && array_key_exists($block_type, $tmp)) { $this->type_grps[$parent_type][$block_type] = $tmp[$block_type]; unset($tmp[$block_type]); } else { // using item group ref id directly $this->type_grps[$parent_type][$block_type] = array(); } } // append missing if (sizeof($tmp)) { foreach ($tmp as $block_type => $grp) { $this->type_grps[$parent_type][$block_type] = $grp; } } unset($tmp); } $childs = array(); $done = array(); foreach ($this->type_grps[$parent_type] as $t => $g) { // type group if (is_array($group[$t])) { // do we have to sort this group?? include_once "./Services/Container/classes/class.ilContainer.php"; include_once "./Services/Container/classes/class.ilContainerSorting.php"; $sort = ilContainerSorting::_getInstance($parent_obj_id); $group = $sort->sortItems($group); // need extra session sorting here if ($t == "sess") { } foreach ($group[$t] as $k => $item) { if (!in_array($item["child"], $done)) { $childs[] = $item; $done[] = $item["child"]; } } } else { if ($t == "itgr" && is_array($g["ref_ids"])) { foreach ($g["ref_ids"] as $ref_id) { if (isset($group[$ref_id])) { foreach ($group[$ref_id] as $k => $item) { if (!in_array($item["child"], $done)) { $childs[] = $item; $done[] = $item["child"]; } } } } } } } return $childs; }