/**
  * 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;
 }