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" &&
188 require_once(
'Services/Tracking/classes/class.ilChangeEvent.php');
202 $tpl->setContent($html);
207 if (
$ilCtrl->getNextClass() !=
"ilcolumngui" ||
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('" .
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(),
339 include_once(
"Services/Block/classes/class.ilColumnGUI.php");
354 $html =
$ilCtrl->forwardCommand($column_gui);
360 $html =
$ilCtrl->forwardCommand($column_gui);
375 $this->adminCommands =
false;
387 if (!$this->adminCommands) {
389 if (
$rbacsystem->checkAccess(
"delete", $a_ref_id)) {
390 $this->adminCommands =
true;
393 $this->adminCommands = $a_admin_com_included_in_list;
401 protected function getItemGUI($item_data, $a_show_path =
false)
403 include_once
'Services/Object/classes/class.ilObjectListGUIFactory.php';
406 if (!is_object($this->list_gui[$item_data[
"type"]])) {
409 $this->list_gui[$item_data[
"type"]] = &$item_list_gui;
411 $item_list_gui = &$this->list_gui[$item_data[
"type"]];
415 $item_list_gui->setParentRefId($item_data[
"parent"]);
417 $item_list_gui->setDefaultCommandParameters(array());
418 $item_list_gui->disableTitleLink(
false);
419 $item_list_gui->resetConditionTarget();
421 if ($this->container_obj->isClassificationFilterActive()) {
422 $item_list_gui->enablePath(
424 $this->container_obj->getRefId(),
425 new \ilSessionClassificationPathGUI()
437 $item_list_gui->enableComments(
true);
438 $item_list_gui->enableNotes(
true);
439 $item_list_gui->enableTags(
true);
440 $item_list_gui->enableRating(
true);
443 $item_list_gui->forceVisibleOnly(
false);
446 $this->
getContainerGUI()->modifyItemGUI($item_list_gui, $item_data, $a_show_path);
448 return $item_list_gui;
459 foreach ($type_grps as
$type => $v) {
461 if (is_int(strpos($a_container_page_html,
"[list-" .
$type .
"]"))) {
467 while (preg_match(
'~\[(item-group-([0-9]*))\]~i', $a_container_page_html, $found)) {
470 $a_container_page_html = preg_replace(
'~\[' . $found[1] .
'\]~i', $html, $a_container_page_html);
481 $this->embedded_block[$block_type][] = $block_parameter;
489 return $this->embedded_block;
500 if (is_array($this->embedded_block[
"itgr"])) {
501 $item_groups = array();
502 if (is_array($this->items[
"itgr"])) {
503 foreach ($this->items[
"itgr"] as $ig) {
504 $item_groups[$ig[
"ref_id"]] = $ig;
508 foreach ($this->embedded_block[
"itgr"] as $ref_id) {
509 if (isset($item_groups[$ref_id])) {
516 if (is_array($this->embedded_block[
"type"])) {
517 foreach ($this->embedded_block[
"type"] as $k =>
$type) {
518 if (is_array($this->items[
$type]) &&
519 $this->renderer->addTypeBlock($type)) {
521 if ($type ==
'sess') {
522 $this->items[
'sess'] =
ilUtil::sortArray($this->items[
'sess'],
'start',
'ASC',
true,
true);
527 foreach ($this->items[$type] as $k => $item_data) {
528 if (!$this->renderer->hasItem($item_data[
"child"])) {
529 $html = $this->
renderItem($item_data, $position++);
531 $this->renderer->addItemToBlock($type, $item_data[
"type"], $item_data[
"child"], $html);
548 public function renderItem($a_item_data, $a_position = 0, $a_force_icon =
false, $a_pos_prefix =
"")
555 if (!$ilAccess->checkAccess(
'visible',
'', $a_item_data[
'ref_id'], $a_item_data[
'type'], $a_item_data[
'obj_id'], $a_item_data[
'tree'])) {
559 if ($this->
getViewMode() == self::VIEW_MODE_TILE) {
560 return $this->
renderCard($a_item_data, $a_position, $a_force_icon, $a_pos_prefix);
563 $item_list_gui = $this->
getItemGUI($a_item_data);
564 if (
$ilSetting->get(
"icon_position_in_lists") ==
"item_rows" ||
565 $a_item_data[
"type"] ==
"sess" || $a_force_icon) {
566 $item_list_gui->enableIcon(
true);
570 $item_list_gui->enableCheckbox(
true);
573 $item_list_gui->enableDownloadCheckbox($a_item_data[
"ref_id"],
true);
576 if ($this->
getContainerGUI()->isActiveItemOrdering() && ($a_item_data[
'type'] !=
'sess' || get_class($this) !=
'ilContainerSessionsContentGUI')) {
577 $item_list_gui->setPositionInputField(
578 $a_pos_prefix .
"[" . $a_item_data[
"ref_id"] .
"]",
579 sprintf(
'%d', (
int) $a_position * 10)
583 if ($a_item_data[
'type'] ==
'sess' and get_class($this) !=
'ilContainerObjectiveGUI') {
585 case self::DETAILS_TITLE:
587 $item_list_gui->enableExpand(
true);
588 $item_list_gui->setExpanded(
false);
589 $item_list_gui->enableDescription(
false);
590 $item_list_gui->enableProperties(
true);
593 case self::DETAILS_ALL:
595 $item_list_gui->enableExpand(
true);
596 $item_list_gui->setExpanded(
true);
597 $item_list_gui->enableDescription(
true);
598 $item_list_gui->enableProperties(
true);
603 $item_list_gui->enableExpand(
true);
604 $item_list_gui->enableDescription(
true);
605 $item_list_gui->enableProperties(
true);
610 if (method_exists($this,
"addItemDetails")) {
611 $this->addItemDetails($item_list_gui, $a_item_data);
615 if ($a_item_data[
'type'] ==
'sess' and (
616 $this->
getDetailsLevel($a_item_data[
'obj_id']) != self::DETAILS_TITLE or
623 include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
624 include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
629 $item_readable = $ilAccess->checkAccess(
'read',
'', $a_item_data[
'ref_id']);
631 foreach ($items as $item) {
634 if (!$ilAccess->checkAccess(
'visible',
'', $item[
'ref_id'])) {
639 $item_list_gui2->enableIcon(
true);
640 $item_list_gui2->enableItemDetailLinks(
false);
643 $item_list_gui2->setParentRefId($a_item_data[
'ref_id']);
646 if (!$item_readable and !$ilAccess->checkAccess(
'write',
'', $item[
'ref_id'])) {
647 $item_list_gui2->forceVisibleOnly(
true);
651 $item_list_gui2->enableCheckbox(
true);
654 $item_list_gui2->enableDownloadCheckbox($item[
'ref_id'],
true);
658 $item_list_gui2->setPositionInputField(
659 "[sess][" . $a_item_data[
'obj_id'] .
"][" . $item[
"ref_id"] .
"]",
660 sprintf(
'%d', (
int) $pos * 10)
668 $sub_item_html = $item_list_gui2->getListItemHTML(
676 if (strlen($sub_item_html)) {
677 $item_list_gui->addSubItemHTML($sub_item_html);
685 $ilCtrl->setParameter($this->container_gui,
"cmdrefid", $a_item_data[
'ref_id']);
686 $asynch_url =
$ilCtrl->getLinkTarget(
687 $this->container_gui,
693 $ilCtrl->setParameter($this->container_gui,
"cmdrefid",
"");
696 include_once
"Services/Object/classes/class.ilObjectActivation.php";
699 $html = $item_list_gui->getListItemHTML(
700 $a_item_data[
'ref_id'],
701 $a_item_data[
'obj_id'],
702 $a_item_data[
'title'],
703 $a_item_data[
'description'],
709 $a_item_data[
"ref_id"],
710 $item_list_gui->adminCommandsIncluded()
725 public function renderCard($a_item_data, $a_position = 0, $a_force_icon =
false, $a_pos_prefix =
"")
728 $f = $DIC->ui()->factory();
729 $user = $DIC->user();
731 $item_list_gui = $this->
getItemGUI($a_item_data);
734 $a_item_data[
'ref_id'],
735 $a_item_data[
'type'],
736 $a_item_data[
'obj_id']
738 $item_list_gui->initItem(
739 $a_item_data[
'ref_id'],
740 $a_item_data[
'obj_id'],
741 $a_item_data[
'type'],
742 $a_item_data[
'title'],
743 $a_item_data[
'description']
747 $item_list_gui->insertCommands();
748 return $item_list_gui->getAsCard(
749 $a_item_data[
'ref_id'],
750 (
int) $a_item_data[
'obj_id'],
751 (
string) $a_item_data[
'type'],
752 (
string) $a_item_data[
'title'],
753 (
string) $a_item_data[
'description']
768 if (is_int(strpos($a_output_html,
"[list-" .
$type .
"]"))) {
769 $a_output_html = preg_replace(
770 '~\[list-' .
$type .
'\]~i',
771 $this->renderer->renderSingleTypeBlock(
$type),
778 while (preg_match(
'~\[(item-group-([0-9]*))\]~i', $a_output_html, $found)) {
779 $itgr_ref_id = (int) $found[2];
781 $a_output_html = preg_replace(
782 '~\[' . $found[1] .
'\]~i',
783 $this->renderer->renderSingleCustomBlock($itgr_ref_id),
788 return $a_output_html;
806 $ref_ids = array_map(
function (
$i) {
807 $parts = explode(
"_",
$i);
812 if (is_array($this->items[
$type]) &&
813 $this->renderer->addTypeBlock($type)) {
817 foreach ($this->items[$type] as $item_data) {
818 $item_ref_id = $item_data[
"child"];
820 if (in_array($item_ref_id, $ref_ids)) {
824 if ($this->block_limit > 0 && $position == $this->block_limit + 1) {
825 if ($position == $this->block_limit + 1) {
827 $this->renderer->addShowMoreButton($type);
832 if (!$this->renderer->hasItem($item_ref_id)) {
833 $html = $this->
renderItem($item_data, $position++);
835 $this->renderer->addItemToBlock($type, $item_data[
"type"], $item_ref_id, $html);
841 return $this->renderer->renderSingleTypeBlock($type);
853 if (empty($this->type_grps)) {
855 $objDefinition->getGroupedRepositoryObjectTypes($this->
getContainerObject()->getType());
857 return $this->type_grps;
869 $lng->loadLanguageModule(
"rep");
871 $tpl =
new ilTemplate(
"tpl.rep_intro.html",
true,
true,
"Services/Repository");
872 $tpl->setVariable(
"IMG_REP_LARGE", ilObject::_getIcon(
"",
"big",
"root"));
873 $tpl->setVariable(
"TXT_WELCOME",
$lng->txt(
"rep_intro"));
874 $tpl->setVariable(
"TXT_INTRO_1",
$lng->txt(
"rep_intro1"));
875 $tpl->setVariable(
"TXT_INTRO_2",
$lng->txt(
"rep_intro2"));
876 $tpl->setVariable(
"TXT_INTRO_3", sprintf(
$lng->txt(
"rep_intro3"),
$lng->txt(
"add")));
877 $tpl->setVariable(
"TXT_INTRO_4", sprintf(
$lng->txt(
"rep_intro4"),
$lng->txt(
"cat_add")));
878 $tpl->setVariable(
"TXT_INTRO_5",
$lng->txt(
"rep_intro5"));
879 $tpl->setVariable(
"TXT_INTRO_6",
$lng->txt(
"rep_intro6"));
892 if (is_array($this->items[
"itgr"])) {
893 foreach ($this->items[
"itgr"] as $itgr) {
894 if (!$this->renderer->hasCustomBlock($itgr[
"child"])) {
897 $this->renderer->setBlockPosition($itgr[
"ref_id"], ++$a_pos);
916 $perm_ok = ($ilAccess->checkAccess(
"visible",
"", $a_itgr[
'ref_id']) &&
917 $ilAccess->checkAccess(
"read",
"", $a_itgr[
'ref_id']));
919 include_once(
'./Services/Container/classes/class.ilContainerSorting.php');
920 include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
924 $all_ids = array_map(
function(
$i) {
926 }, $this->items[
"_all"]);
929 $items = array_filter($items,
function (
$i) use ($all_ids) {
930 return in_array(
$i[
"ref_id"], $all_ids);
936 foreach ($items as $item) {
937 $this->renderer->hideItem($item[
"child"]);
943 $item_list_gui->enableNotes(
false);
944 $item_list_gui->enableTags(
false);
945 $item_list_gui->enableComments(
false);
946 $item_list_gui->enableTimings(
false);
947 $item_list_gui->getListItemHTML(
951 $a_itgr[
"description"]
953 $commands_html = $item_list_gui->getCommandsHTML();
956 include_once(
"./Modules/ItemGroup/classes/class.ilObjItemGroup.php");
957 include_once(
"./Modules/ItemGroup/classes/class.ilItemGroupBehaviour.php");
959 include_once(
"./Services/Container/classes/class.ilContainerBlockPropertiesStorage.php");
962 $beh = ($stored_val ==
"1")
969 "store-url" =>
"./ilias.php?baseClass=ilcontainerblockpropertiesstorage&cmd=store" .
970 "&cont_block_id=itgr_" . $a_itgr[
'ref_id']
974 $this->renderer->addCustomBlock($a_itgr[
"ref_id"],
"", $commands_html,
$data);
976 $this->renderer->addCustomBlock($a_itgr[
"ref_id"], $a_itgr[
"title"], $commands_html,
$data);
984 )->sortSubItems(
'itgr', $a_itgr[
'obj_id'], $items);
990 foreach ($items as $item) {
992 $html2 = $this->
renderItem($item, $position++,
false,
"[itgr][" . $a_itgr[
'obj_id'] .
"]");
995 $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 getProperty($a_block_id, $a_user_id, $a_property)
Get property in session or db.
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.
renderCard($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render card.
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.
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.
static _getListGUIByType($a_type, $a_context=ilObjectListGUI::CONTEXT_REPOSITORY)
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.