/** * Render an item * * @param array item data * * @return string item HTML */ function renderItem($a_item_data, $a_position = 0, $a_force_icon = false, $a_pos_prefix = "") { global $ilSetting, $ilAccess, $ilCtrl; // Pass type, obj_id and tree to checkAccess method to improve performance if (!$ilAccess->checkAccess('visible', '', $a_item_data['ref_id'], $a_item_data['type'], $a_item_data['obj_id'], $a_item_data['tree'])) { return ''; } $item_list_gui = $this->getItemGUI($a_item_data); if ($ilSetting->get("icon_position_in_lists") == "item_rows" || $a_item_data["type"] == "sess" || $a_force_icon) { $item_list_gui->enableIcon(true); } if ($this->getContainerGUI()->isActiveAdministrationPanel() && !$_SESSION["clipboard"]) { $item_list_gui->enableCheckbox(true); } else { if ($this->getContainerGUI()->isMultiDownloadEnabled()) { // display multi download checkboxes $item_list_gui->enableDownloadCheckbox($a_item_data["ref_id"], true); } } if ($this->getContainerGUI()->isActiveItemOrdering() && ($a_item_data['type'] != 'sess' || get_class($this) != 'ilContainerSessionsContentGUI')) { $item_list_gui->setPositionInputField($a_pos_prefix . "[" . $a_item_data["ref_id"] . "]", sprintf('%d', (int) $a_position * 10)); } if ($a_item_data['type'] == 'sess' and get_class($this) != 'ilContainerObjectiveGUI') { switch ($this->getDetailsLevel($a_item_data['obj_id'])) { case self::DETAILS_TITLE: $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_MINIMAL); $item_list_gui->enableExpand(true); $item_list_gui->setExpanded(false); $item_list_gui->enableDescription(false); $item_list_gui->enableProperties(true); break; case self::DETAILS_ALL: $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_ALL); $item_list_gui->enableExpand(true); $item_list_gui->setExpanded(true); $item_list_gui->enableDescription(true); $item_list_gui->enableProperties(true); break; default: $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_ALL); $item_list_gui->enableExpand(true); $item_list_gui->enableDescription(true); $item_list_gui->enableProperties(true); break; } } if (method_exists($this, "addItemDetails")) { $this->addItemDetails($item_list_gui, $a_item_data); } // show subitems if ($a_item_data['type'] == 'sess' and ($this->getDetailsLevel($a_item_data['obj_id']) != self::DETAILS_TITLE or $this->getContainerGUI()->isActiveAdministrationPanel() or $this->getContainerGUI()->isActiveItemOrdering())) { $pos = 1; include_once './Services/Container/classes/class.ilContainerSorting.php'; include_once './Services/Object/classes/class.ilObjectActivation.php'; $items = ilObjectActivation::getItemsByEvent($a_item_data['obj_id']); $items = ilContainerSorting::_getInstance($this->getContainerObject()->getId())->sortSubItems('sess', $a_item_data['obj_id'], $items); $items = ilContainer::getCompleteDescriptions($items); $item_readable = $ilAccess->checkAccess('read', '', $a_item_data['ref_id']); foreach ($items as $item) { // TODO: this should be removed and be handled by if(strlen($sub_item_html)) // see mantis: 0003944 if (!$ilAccess->checkAccess('visible', '', $item['ref_id'])) { continue; } $item_list_gui2 = $this->getItemGUI($item); $item_list_gui2->enableIcon(true); $item_list_gui2->enableItemDetailLinks(false); // unique js-ids $item_list_gui2->setParentRefId($a_item_data['ref_id']); // @see mantis 10488 if (!$item_readable and !$ilAccess->checkAccess('write', '', $item['ref_id'])) { $item_list_gui2->forceVisibleOnly(true); } if ($this->getContainerGUI()->isActiveAdministrationPanel() && !$_SESSION["clipboard"]) { $item_list_gui2->enableCheckbox(true); } else { if ($this->getContainerGUI()->isMultiDownloadEnabled()) { // display multi download checkbox $item_list_gui2->enableDownloadCheckbox($item['ref_id'], true); } } if ($this->getContainerGUI()->isActiveItemOrdering()) { $item_list_gui2->setPositionInputField("[sess][" . $a_item_data['obj_id'] . "][" . $item["ref_id"] . "]", sprintf('%d', (int) $pos * 10)); $pos++; } // #10611 ilObjectActivation::addListGUIActivationProperty($item_list_gui2, $item); $sub_item_html = $item_list_gui2->getListItemHTML($item['ref_id'], $item['obj_id'], $item['title'], $item['description']); $this->determineAdminCommands($item["ref_id"], $item_list_gui2->adminCommandsIncluded()); if (strlen($sub_item_html)) { $item_list_gui->addSubItemHTML($sub_item_html); } } } if ($ilSetting->get("item_cmd_asynch")) { $asynch = true; $ilCtrl->setParameter($this->container_gui, "cmdrefid", $a_item_data['ref_id']); $asynch_url = $ilCtrl->getLinkTarget($this->container_gui, "getAsynchItemList", "", true, false); $ilCtrl->setParameter($this->container_gui, "cmdrefid", ""); } include_once "Services/Object/classes/class.ilObjectActivation.php"; ilObjectActivation::addListGUIActivationProperty($item_list_gui, $a_item_data); $html = $item_list_gui->getListItemHTML($a_item_data['ref_id'], $a_item_data['obj_id'], $a_item_data['title'], $a_item_data['description'], $asynch, false, $asynch_url); $this->determineAdminCommands($a_item_data["ref_id"], $item_list_gui->adminCommandsIncluded()); return $html; }