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(),
326 $this->container_gui,
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(),
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') {
587 $item_list_gui->enableExpand(
true);
588 $item_list_gui->setExpanded(
false);
589 $item_list_gui->enableDescription(
false);
590 $item_list_gui->enableProperties(
true);
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();
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);
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.
__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 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($a_type, $a_context=ilObjectListGUI::CONTEXT_REPOSITORY)
static _lookupObjId($a_id)
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