103        $this->tpl = 
$DIC[
"tpl"];
 
  104        $this->ctrl = 
$DIC->ctrl();
 
  105        $this->
user = $DIC->user();
 
  106        $this->lng = 
$DIC->language();
 
  107        $this->access = 
$DIC->access();
 
  108        $this->plugin_admin = 
$DIC[
"ilPluginAdmin"];
 
  109        $this->db = 
$DIC->database();
 
  110        $this->rbacsystem = 
$DIC->rbac()->system();
 
  112        $this->obj_definition = 
$DIC[
"objDefinition"];
 
  115        $this->container_gui = $container_gui_obj;
 
  116        $this->container_obj = $this->container_gui->object;
 
  118        $tpl->addJavaScript(
"./Services/Container/js/Container.js");
 
  122        $this->view_mode = (
ilContainer::_lookupContainerSetting($this->container_obj->getId(), 
"list_presentation") == 
"tile" && !$this->container_gui->isActiveAdministrationPanel() && !$this->container_gui->isActiveOrdering())
 
  123            ? self::VIEW_MODE_TILE
 
  124            : self::VIEW_MODE_LIST;
 
  182        if ($ilCtrl->getNextClass() == 
"ilcolumngui" &&
 
  183            $ilCtrl->isAsynch()) {
 
  188        require_once(
'Services/Tracking/classes/class.ilChangeEvent.php');
 
  202            $tpl->setContent($html);
 
  207        if ($ilCtrl->getNextClass() != 
"ilcolumngui" ||
 
  208            !$ilCtrl->isAsynch()) {
 
  224        $ilCtrl->saveParameterByClass(
"ilcolumngui", 
"col_return");
 
  229        include_once(
"Services/Block/classes/class.ilColumnGUI.php");
 
  238        if ($ilCtrl->getNextClass() == 
"ilcolumngui" &&
 
  241            $html = $ilCtrl->forwardCommand($column_gui);
 
  243            $render_content = ($ilCtrl->getNextClass() == 
"" &&
 
  244                in_array($ilCtrl->getCmd(), [
"view", 
"render"]));
 
  245            $render_content = 
false;
 
  246            if (!$ilCtrl->isAsynch() || $render_content) {
 
  250                include_once(
"./Services/UIComponent/classes/class.ilUIHookProcessor.php");
 
  252                    "Services/Container",
 
  254                    array(
"container_content_gui" => $this)
 
  256                if (!$uip->replaced()) {
 
  257                    $html = $ilCtrl->getHTML($column_gui);
 
  259                $html = $uip->getHTML($html);
 
  275        $ilCtrl->saveParameterByClass(
"ilcolumngui", 
"col_return");
 
  277        $tpl->addOnLoadCode(
"il.Object.setRedrawListItemUrl('" .
 
  278            $ilCtrl->getLinkTarget($this->container_gui, 
"redrawListItem", 
"", 
true) . 
"');");
 
  280        $tpl->addOnLoadCode(
"il.Object.setRatingUrl('" .
 
  281            $ilCtrl->getLinkTargetByClass(
 
  282                array(get_class($this->container_gui), 
"ilcommonactiondispatchergui", 
"ilratinggui"),
 
  289        switch ($ilCtrl->getNextClass()) {
 
  291                $this->container_gui->setSideColumnReturn();
 
  296                $ilDB->useSlave(
true);
 
  298                $ilDB->useSlave(
false);
 
  316        include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
 
  319        include_once 
"Services/Container/classes/class.ilContainerRenderer.php";
 
  323            $this->
getContainerGUI()->isActiveOrdering() && (get_class($this) != 
"ilContainerObjectiveGUI") 
 
  325            $sorting->getBlockPositions(),
 
  326            $this->container_gui,
 
  333        foreach ($event_items as $ev) {
 
  334            $this->renderer->addItemId($ev);
 
  346        include_once(
"Services/Block/classes/class.ilColumnGUI.php");
 
  354        if (!$ilCtrl->isAsynch()) {
 
  361                    $html = $ilCtrl->forwardCommand($column_gui);
 
  367                    $html = $ilCtrl->forwardCommand($column_gui);
 
  382        $this->adminCommands = 
false;
 
  394        if (!$this->adminCommands) {
 
  396                if (
$rbacsystem->checkAccess(
"delete", $a_ref_id)) {
 
  397                    $this->adminCommands = 
true;
 
  400                $this->adminCommands = $a_admin_com_included_in_list;
 
  408    protected function getItemGUI($item_data, $a_show_path = 
false)
 
  410        include_once 
'Services/Object/classes/class.ilObjectListGUIFactory.php';
 
  413        if (!is_object($this->list_gui[$item_data[
"type"]])) {
 
  416            $this->list_gui[$item_data[
"type"]] = &$item_list_gui;
 
  418            $item_list_gui = &$this->list_gui[$item_data[
"type"]];
 
  422        $item_list_gui->setParentRefId($item_data[
"parent"]);
 
  424        $item_list_gui->setDefaultCommandParameters(array());
 
  425        $item_list_gui->disableTitleLink(
false);
 
  426        $item_list_gui->resetConditionTarget();
 
  428        if ($this->container_obj->isClassificationFilterActive()) {
 
  429            $item_list_gui->enablePath(
 
  431                $this->container_obj->getRefId(),
 
  444        $item_list_gui->enableComments(
true);
 
  445        $item_list_gui->enableNotes(
true);
 
  446        $item_list_gui->enableTags(
true);
 
  447        $item_list_gui->enableRating(
true);
 
  450        $item_list_gui->forceVisibleOnly(
false);
 
  453        $this->
getContainerGUI()->modifyItemGUI($item_list_gui, $item_data, $a_show_path);
 
  455        return $item_list_gui;
 
  466        foreach ($type_grps as 
$type => $v) {
 
  468            if (is_int(strpos($a_container_page_html, 
"[list-" . 
$type . 
"]"))) {
 
  474        while (preg_match(
'~\[(item-group-([0-9]*))\]~i', $a_container_page_html, $found)) {
 
  477            $a_container_page_html = preg_replace(
'~\[' . $found[1] . 
'\]~i', $html, $a_container_page_html);
 
  488        $this->embedded_block[$block_type][] = $block_parameter;
 
  496        return $this->embedded_block;
 
  507        if (is_array($this->embedded_block[
"itgr"])) {
 
  508            $item_groups = array();
 
  509            if (is_array($this->items[
"itgr"])) {
 
  510                foreach ($this->items[
"itgr"] as $ig) {
 
  511                    $item_groups[$ig[
"ref_id"]] = $ig;
 
  515            foreach ($this->embedded_block[
"itgr"] as $ref_id) {
 
  516                if (isset($item_groups[$ref_id])) {
 
  523        if (is_array($this->embedded_block[
"type"])) {
 
  524            foreach ($this->embedded_block[
"type"] as $k => 
$type) {
 
  525                if (is_array($this->items[
$type]) &&
 
  526                    $this->renderer->addTypeBlock(
$type)) {
 
  533                    foreach ($this->items[
$type] as $k => $item_data) {
 
  534                        if (!$this->renderer->hasItem($item_data[
"child"])) {
 
  535                            $html = $this->
renderItem($item_data, $position++);
 
  537                                $this->renderer->addItemToBlock(
$type, $item_data[
"type"], $item_data[
"child"], $html);
 
  548        return $type === 
'sess' && get_class($this) === ilContainerSessionsContentGUI::class;
 
  559    public function renderItem($a_item_data, $a_position = 0, $a_force_icon = 
false, $a_pos_prefix = 
"")
 
  566        if (!$ilAccess->checkAccess(
'visible', 
'', $a_item_data[
'ref_id'], $a_item_data[
'type'], $a_item_data[
'obj_id'], $a_item_data[
'tree'])) {
 
  570        if ($this->
getViewMode() == self::VIEW_MODE_TILE) {
 
  571            return $this->
renderCard($a_item_data, $a_position, $a_force_icon, $a_pos_prefix);
 
  574        $item_list_gui = $this->
getItemGUI($a_item_data);
 
  575        if (
$ilSetting->get(
"icon_position_in_lists") == 
"item_rows" ||
 
  576            $a_item_data[
"type"] == 
"sess" || $a_force_icon) {
 
  577            $item_list_gui->enableIcon(
true);
 
  581            $item_list_gui->enableCheckbox(
true);
 
  584            $item_list_gui->enableDownloadCheckbox($a_item_data[
"ref_id"], 
true);
 
  588            $item_list_gui->setPositionInputField(
 
  589                $a_pos_prefix . 
"[" . $a_item_data[
"ref_id"] . 
"]",
 
  590                sprintf(
'%d', (
int) $a_position * 10)
 
  594        if ($a_item_data[
'type'] == 
'sess' and get_class($this) != 
'ilContainerObjectiveGUI') {
 
  598                    $item_list_gui->enableExpand(
true);
 
  599                    $item_list_gui->setExpanded(
false);
 
  600                    $item_list_gui->enableDescription(
false);
 
  601                    $item_list_gui->enableProperties(
true);
 
  606                    $item_list_gui->enableExpand(
true);
 
  607                    $item_list_gui->setExpanded(
true);
 
  608                    $item_list_gui->enableDescription(
true);
 
  609                    $item_list_gui->enableProperties(
true);
 
  614                    $item_list_gui->enableExpand(
true);
 
  615                    $item_list_gui->enableDescription(
true);
 
  616                    $item_list_gui->enableProperties(
true);
 
  621        if (method_exists($this, 
"addItemDetails")) {
 
  622            $this->addItemDetails($item_list_gui, $a_item_data);
 
  626        if ($a_item_data[
'type'] == 
'sess' and (
 
  627                                            $this->
getDetailsLevel($a_item_data[
'obj_id']) != self::DETAILS_TITLE or
 
  634            include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
 
  635            include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
 
  640            $item_readable = $ilAccess->checkAccess(
'read', 
'', $a_item_data[
'ref_id']);
 
  642            foreach ($items as $item) {
 
  645                if (!$ilAccess->checkAccess(
'visible', 
'', $item[
'ref_id'])) {
 
  650                $item_list_gui2->enableIcon(
true);
 
  651                $item_list_gui2->enableItemDetailLinks(
false);
 
  654                $item_list_gui2->setParentRefId($a_item_data[
'ref_id']);
 
  657                if (!$item_readable and !$ilAccess->checkAccess(
'write', 
'', $item[
'ref_id'])) {
 
  658                    $item_list_gui2->forceVisibleOnly(
true);
 
  662                    $item_list_gui2->enableCheckbox(
true);
 
  665                    $item_list_gui2->enableDownloadCheckbox($item[
'ref_id'], 
true);
 
  669                    $item_list_gui2->setPositionInputField(
 
  670                        "[sess][" . $a_item_data[
'obj_id'] . 
"][" . $item[
"ref_id"] . 
"]",
 
  671                        sprintf(
'%d', (
int) $pos * 10)
 
  679                $sub_item_html = $item_list_gui2->getListItemHTML(
 
  687                if (strlen($sub_item_html)) {
 
  688                    $item_list_gui->addSubItemHTML($sub_item_html);
 
  696            $ilCtrl->setParameter($this->container_gui, 
"cmdrefid", $a_item_data[
'ref_id']);
 
  697            $asynch_url = $ilCtrl->getLinkTarget(
 
  698                $this->container_gui,
 
  704            $ilCtrl->setParameter($this->container_gui, 
"cmdrefid", 
"");
 
  707        include_once 
"Services/Object/classes/class.ilObjectActivation.php";
 
  710        $html = $item_list_gui->getListItemHTML(
 
  711            $a_item_data[
'ref_id'],
 
  712            $a_item_data[
'obj_id'],
 
  713            $a_item_data[
'title'],
 
  714            $a_item_data[
'description'],
 
  720            $a_item_data[
"ref_id"],
 
  721            $item_list_gui->adminCommandsIncluded()
 
  736    public function renderCard($a_item_data, $a_position = 0, $a_force_icon = 
false, $a_pos_prefix = 
"")
 
  739        $f = 
$DIC->ui()->factory();
 
  742        $item_list_gui = $this->
getItemGUI($a_item_data);
 
  745            $a_item_data[
'ref_id'],
 
  746            $a_item_data[
'type'],
 
  747            $a_item_data[
'obj_id']
 
  749        $item_list_gui->initItem(
 
  750            $a_item_data[
'ref_id'],
 
  751            $a_item_data[
'obj_id'],
 
  752            $a_item_data[
'type'],
 
  753            $a_item_data[
'title'],
 
  754            $a_item_data[
'description']
 
  758        $item_list_gui->insertCommands();
 
  759        return $item_list_gui->getAsCard(
 
  760            $a_item_data[
'ref_id'],
 
  761            (
int) $a_item_data[
'obj_id'],
 
  762            (
string) $a_item_data[
'type'],
 
  763            (
string) $a_item_data[
'title'],
 
  764            (
string) $a_item_data[
'description']
 
  779            if (is_int(strpos($a_output_html, 
"[list-" . 
$type . 
"]"))) {
 
  780                $a_output_html = preg_replace(
 
  781                    '~\[list-' . 
$type . 
'\]~i',
 
  782                    $this->renderer->renderSingleTypeBlock(
$type),
 
  789        while (preg_match(
'~\[(item-group-([0-9]*))\]~i', $a_output_html, $found)) {
 
  790            $itgr_ref_id = (int) $found[2];
 
  792            $a_output_html = preg_replace(
 
  793                '~\[' . $found[1] . 
'\]~i',
 
  794                $this->renderer->renderSingleCustomBlock($itgr_ref_id),
 
  799        return $a_output_html;
 
  817        $ref_ids = array_map(
function (
$i) {
 
  818            $parts = explode(
"_", 
$i);
 
  823        if (is_array($this->items[
$type]) &&
 
  824            $this->renderer->addTypeBlock(
$type)) {
 
  828            foreach ($this->items[
$type] as $item_data) {
 
  829                $item_ref_id = $item_data[
"child"];
 
  831                if (in_array($item_ref_id, $ref_ids)) {
 
  835                if ($this->block_limit > 0 && $position == $this->block_limit + 1) {
 
  836                    if ($position == $this->block_limit + 1) {
 
  838                        $this->renderer->addShowMoreButton(
$type);
 
  843                if (!$this->renderer->hasItem($item_ref_id)) {
 
  844                    $html = $this->
renderItem($item_data, $position);
 
  847                        $this->renderer->addItemToBlock(
$type, $item_data[
"type"], $item_ref_id, $html);
 
  853        return $this->renderer->renderSingleTypeBlock(
$type);
 
  865        if (empty($this->type_grps)) {
 
  867                $objDefinition->getGroupedRepositoryObjectTypes($this->
getContainerObject()->getType());
 
  869        return $this->type_grps;
 
  881        $lng->loadLanguageModule(
"rep");
 
  883        $tpl = 
new ilTemplate(
"tpl.rep_intro.html", 
true, 
true, 
"Services/Repository");
 
  885        $tpl->setVariable(
"TXT_WELCOME", 
$lng->txt(
"rep_intro"));
 
  886        $tpl->setVariable(
"TXT_INTRO_1", 
$lng->txt(
"rep_intro1"));
 
  887        $tpl->setVariable(
"TXT_INTRO_2", 
$lng->txt(
"rep_intro2"));
 
  888        $tpl->setVariable(
"TXT_INTRO_3", sprintf(
$lng->txt(
"rep_intro3"), 
$lng->txt(
"add")));
 
  889        $tpl->setVariable(
"TXT_INTRO_4", sprintf(
$lng->txt(
"rep_intro4"), 
$lng->txt(
"cat_add")));
 
  890        $tpl->setVariable(
"TXT_INTRO_5", 
$lng->txt(
"rep_intro5"));
 
  891        $tpl->setVariable(
"TXT_INTRO_6", 
$lng->txt(
"rep_intro6"));
 
  904        if (is_array($this->items[
"itgr"])) {
 
  905            foreach ($this->items[
"itgr"] as $itgr) {
 
  906                if (!$this->renderer->hasCustomBlock($itgr[
"child"])) {
 
  909                    $this->renderer->setBlockPosition($itgr[
"ref_id"], ++$a_pos);
 
  928        $perm_ok = ($ilAccess->checkAccess(
"visible", 
"", $a_itgr[
'ref_id']) &&
 
  929             $ilAccess->checkAccess(
"read", 
"", $a_itgr[
'ref_id']));
 
  931        include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
 
  932        include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
 
  936        $all_ids = array_map(
function (
$i) {
 
  938        }, $this->items[
"_all"]);
 
  941        $items = array_filter($items, 
function (
$i) use ($all_ids) {
 
  942            return in_array(
$i[
"ref_id"], $all_ids);
 
  948            foreach ($items as $item) {
 
  949                $this->renderer->hideItem($item[
"child"]);
 
  955        $item_list_gui->enableNotes(
false);
 
  956        $item_list_gui->enableTags(
false);
 
  957        $item_list_gui->enableComments(
false);
 
  958        $item_list_gui->enableTimings(
false);
 
  959        $item_list_gui->getListItemHTML(
 
  963            $a_itgr[
"description"]
 
  965        $commands_html = $item_list_gui->getCommandsHTML();
 
  968        include_once(
"./Modules/ItemGroup/classes/class.ilObjItemGroup.php");
 
  969        include_once(
"./Modules/ItemGroup/classes/class.ilItemGroupBehaviour.php");
 
  971        include_once(
"./Services/Container/classes/class.ilContainerBlockPropertiesStorageGUI.php");
 
  973            "itgr_" . $a_itgr[
"ref_id"],
 
  978            $beh = ($stored_val == 
"1")
 
  983        $this->ctrl->setParameterByClass(
 
  984            ilContainerBlockPropertiesStorageGUI::class,
 
  986            'itgr_' . $a_itgr[
'ref_id']
 
  988        $target_url = $this->ctrl->getLinkTargetByClass(
 
  989            ilContainerBlockPropertiesStorageGUI::class,
 
  996            "store-url" => $target_url,
 
 1000            $this->renderer->addCustomBlock($a_itgr[
"ref_id"], 
"", $commands_html, 
$data);
 
 1002            $this->renderer->addCustomBlock($a_itgr[
"ref_id"], $a_itgr[
"title"], $commands_html, 
$data);
 
 1010        )->sortSubItems(
'itgr', $a_itgr[
'obj_id'], $items);
 
 1016        foreach ($items as $item) {
 
 1018            $html2 = $this->
renderItem($item, $position++, 
false, 
"[itgr][" . $a_itgr[
'obj_id'] . 
"]");
 
 1021                $this->renderer->addItemToBlock($a_itgr[
"ref_id"], $item[
"type"], $item[
"child"], $html2, 
true);
 
An exception for terminatinating execution or to throw for unit testing.
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
Column user interface class.
static getScreenMode()
Get Screen Mode for current command.
static getCmdSide()
Get Column Side of Current Command.
static buildAjaxHash( $a_node_type, $a_node_id, $a_obj_type, $a_obj_id, $a_sub_type=null, $a_sub_id=null, $a_news_id=0)
Build ajax hash.
static getProperty($a_block_id, $a_user_id, $a_property)
Get property in session or db.
Parent class of all container content GUIs.
initRenderer()
Init container renderer.
getEmbeddedBlocks()
Get page embedded blocks.
getContainerObject()
Get container object.
getSingleTypeBlockAsynch($type)
Render single block.
getContainerGUI()
Get container GUI object.
getCenterColumnHTML()
Get HTML for center column.
renderItem($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render an item.
setOutput()
Sets view output into column layout.
__forwardToColumnGUI()
Get columngui output.
getRightColumnHTML()
Get HTML for right column.
getGroupedObjTypes()
Get grouped repository object types.
addEmbeddedBlock($block_type, $block_parameter)
Add embedded block.
insertPageEmbeddedBlocks($a_output_html)
Insert blocks into container page.
getViewMode()
Get view mode.
getMainContent()
Get content HTML for main column, this one must be overwritten in derived classes.
getDetailsLevel($a_item_id)
get details level
getItemGroupsHTML($a_pos=0)
Get item groups HTML.
renderPageEmbeddedBlocks()
Render Page Embedded Blocks.
renderItemGroup($a_itgr)
Render item group.
getItemGUI($item_data, $a_show_path=false)
Get ListGUI object for item.
hasForcedOrderByStartDate(string $type)
__construct(&$container_gui_obj)
Constructor.
getIntroduction()
Get introduction.
renderCard($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render card.
determineAdminCommands($a_ref_id, $a_admin_com_included_in_list=false)
determin admin commands
determinePageEmbeddedBlocks($a_container_page_html)
Determine all blocks that are embedded in the container page.
clearAdminCommandsDetermination()
cleaer administration commands determination
const DETAILS_DEACTIVATED
Class ilContainerRenderer.
static _getInstance($a_obj_id)
get instance by obj_id
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
static getCompleteDescriptions(array $objects)
overwrites description fields to long or short description in an assoc array keys needed (obj_id and ...
static _getItemsOfContainer($a_ref_id)
static getLogger($a_component_id)
Get component logger.
static lookupBehaviour($a_id)
Lookup behaviour.
static lookupHideTitle($a_id)
Lookup hide title.
static addListGUIActivationProperty(ilObjectListGUI $a_list_gui, array &$a_item)
Get timing details for list gui.
static getItemsByEvent($a_event_id)
Get session material / event items.
static getItemsByItemGroup($a_item_group_ref_id)
Get materials of item group.
static _getListGUIByType( $type, $context=ilObjectListGUI::CONTEXT_REPOSITORY)
static _lookupObjId($a_id)
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _lookupType($a_id, $a_reference=false)
lookup object type
PathGUI which handles materials assigned to sessions.
special template class to simplify handling of ITX/PEAR
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray