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(),
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(),
432 new \ilSessionClassificationPathGUI()
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') {
596 case self::DETAILS_TITLE:
598 $item_list_gui->enableExpand(
true);
599 $item_list_gui->setExpanded(
false);
600 $item_list_gui->enableDescription(
false);
601 $item_list_gui->enableProperties(
true);
604 case self::DETAILS_ALL:
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();
740 $user = $DIC->user();
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);
static lookupHideTitle($a_id)
Lookup hide title.
determineAdminCommands($a_ref_id, $a_admin_com_included_in_list=false)
determin admin commands
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
determinePageEmbeddedBlocks($a_container_page_html)
Determine all blocks that are embedded in the container page.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
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.
static getCmdSide()
Get Column Side of Current Command.
getViewMode()
Get view mode.
static getItemsByEvent($a_event_id)
Get session material / event items.
getEmbeddedBlocks()
Get page embedded blocks.
static getProperty($a_block_id, $a_user_id, $a_property)
Get property in session or db.
static _getItemsOfContainer($a_ref_id)
renderCard($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render card.
static _getListGUIByType( $type, $context=ilObjectListGUI::CONTEXT_REPOSITORY)
getItemGUI($item_data, $a_show_path=false)
Get ListGUI object for item.
static lookupBehaviour($a_id)
Lookup behaviour.
getSingleTypeBlockAsynch($type)
Render single block.
getItemGroupsHTML($a_pos=0)
Get item groups HTML.
renderPageEmbeddedBlocks()
Render Page Embedded Blocks.
initRenderer()
Init container renderer.
__forwardToColumnGUI()
Get columngui output.
insertPageEmbeddedBlocks($a_output_html)
Insert blocks into container page.
Parent class of all container content GUIs.
getMainContent()
Get content HTML for main column, this one must be overwritten in derived classes.
hasForcedOrderByStartDate(string $type)
getContainerGUI()
Get container GUI object.
Column user interface class.
getDetailsLevel($a_item_id)
get details level
static _lookupObjId($a_id)
getContainerObject()
Get container object.
renderItem($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render an item.
static addListGUIActivationProperty(ilObjectListGUI $a_list_gui, array &$a_item)
Get timing details for list gui.
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 _lookupType($a_id, $a_reference=false)
lookup object type
clearAdminCommandsDetermination()
cleaer administration commands determination
renderItemGroup($a_itgr)
Render item group.
static getScreenMode()
Get Screen Mode for current command.
getCenterColumnHTML()
Get HTML for center column.
getIntroduction()
Get introduction.
static getItemsByItemGroup($a_item_group_ref_id)
Get materials of item group.
static getLogger($a_component_id)
Get component logger.
static _getInstance($a_obj_id)
get instance by obj_id
__construct(&$container_gui_obj)
Constructor.
Class ilContainerRenderer.
static getCompleteDescriptions(array $objects)
overwrites description fields to long or short description in an assoc array keys needed (obj_id and ...
addEmbeddedBlock($block_type, $block_parameter)
Add embedded block.
getRightColumnHTML()
Get HTML for right column.
getGroupedObjTypes()
Get grouped repository object types.
const DETAILS_DEACTIVATED
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
setOutput()
Sets view output into column layout.