19declare(strict_types=1);
65 bool $a_force_icon =
false,
66 string $a_pos_prefix =
"",
67 string $item_group_list_presentation =
"",
68 int $checkbox = self::CHECKBOX_NONE,
69 bool $item_ordering =
false,
73 $ilAccess = $this->domain->access();
74 $ilCtrl = $this->gui->ctrl();
82 if ($item_group_list_presentation !=
"") {
83 $view_mode = ($item_group_list_presentation ===
"tile")
89 return $this->
renderCard($a_item_data, $a_position, $a_force_icon, $a_pos_prefix);
92 $item_list_gui = $this->
getItemGUI($a_item_data);
93 if (
$ilSetting->get(
"icon_position_in_lists") ===
"item_rows" ||
94 $a_item_data[
"type"] ===
"sess" || $a_force_icon) {
95 $item_list_gui->enableIcon(
true);
97 if ($checkbox === self::CHECKBOX_ADMIN) {
98 $item_list_gui->enableCheckbox(
true);
99 } elseif ($checkbox === self::CHECKBOX_DOWNLOAD) {
101 $item_list_gui->enableDownloadCheckbox((
int) $a_item_data[
"ref_id"]);
104 if ($item_ordering) {
105 $item_list_gui->setPositionInputField(
106 $a_pos_prefix .
"[" . $a_item_data[
"ref_id"] .
"]",
107 sprintf(
'%d', $a_position * 10)
111 if ($a_item_data[
'type'] ===
'sess') {
112 switch ($details_level) {
113 case \ilContainerContentGUI::DETAILS_TITLE:
115 $item_list_gui->enableExpand(
true);
116 $item_list_gui->setExpanded(
false);
117 $item_list_gui->enableDescription(
false);
118 $item_list_gui->enableProperties(
true);
121 case \ilContainerContentGUI::DETAILS_ALL:
123 $item_list_gui->enableExpand(
true);
124 $item_list_gui->setExpanded(
true);
125 $item_list_gui->enableDescription(
true);
126 $item_list_gui->enableProperties(
true);
129 case \ilContainerContentGUI::DETAILS_DEACTIVATED:
134 $item_list_gui->enableExpand(
true);
135 $item_list_gui->enableDescription(
true);
136 $item_list_gui->enableProperties(
true);
141 if ($this->item_modifier_closure instanceof \Closure) {
143 $c($item_list_gui, $a_item_data);
147 if ($a_item_data[
'type'] ===
'sess' and (
149 $this->container_gui->isActiveAdministrationPanel() or
150 $this->container_gui->isActiveItemOrdering()
159 $item_readable = $ilAccess->checkAccess(
'read',
'', (
int) $a_item_data[
'ref_id']);
161 foreach ($items as $item) {
164 if (!$ilAccess->checkAccess(
'visible',
'', (
int) $item[
'ref_id'])) {
169 $item_list_gui2->enableIcon(
true);
170 $item_list_gui2->enableItemDetailLinks(
false);
173 $item_list_gui2->setParentRefId((
int) ($a_item_data[
'ref_id'] ?? 0));
176 if (!$item_readable and !$ilAccess->checkAccess(
'write',
'', $item[
'ref_id'])) {
177 $item_list_gui2->forceVisibleOnly(
true);
180 if ($checkbox === self::CHECKBOX_ADMIN) {
181 $item_list_gui2->enableCheckbox(
true);
182 } elseif ($checkbox === self::CHECKBOX_DOWNLOAD) {
184 $item_list_gui2->enableDownloadCheckbox((
int) $item[
'ref_id']);
187 if ($this->container_gui->isActiveItemOrdering()) {
188 $item_list_gui2->setPositionInputField(
189 "[sess][" . $a_item_data[
'obj_id'] .
"][" . $item[
"ref_id"] .
"]",
190 sprintf(
'%d', $pos * 10)
198 $sub_item_html = $item_list_gui2->getListItemHTML(
199 (
int) $item[
'ref_id'],
200 (
int) $item[
'obj_id'],
205 if (strlen($sub_item_html)) {
206 $item_list_gui->addSubItemHTML($sub_item_html);
215 $ilCtrl->setParameter($this->container_gui,
"cmdrefid", $a_item_data[
'ref_id']);
216 $asynch_url = $ilCtrl->getLinkTarget(
217 $this->container_gui,
223 $ilCtrl->setParameter($this->container_gui,
"cmdrefid",
"");
228 $html = $item_list_gui->getListItemHTML(
229 (
int) $a_item_data[
'ref_id'],
230 (
int) $a_item_data[
'obj_id'],
231 (
string) $a_item_data[
'title'],
232 (
string) $a_item_data[
'description'],
243 $this->item_modifier_closure =
$f;
249 bool $a_force_icon =
false,
250 string $a_pos_prefix =
""
252 $item_list_gui = $this->getItemGUI($a_item_data);
255 (
int) $a_item_data[
'ref_id'],
256 $a_item_data[
'type'],
257 (
int) $a_item_data[
'obj_id']
259 $item_list_gui->initItem(
260 (
int) $a_item_data[
'ref_id'],
261 (
int) $a_item_data[
'obj_id'],
262 $a_item_data[
'type'],
263 $a_item_data[
'title'],
264 $a_item_data[
'description']
267 return $item_list_gui->getAsCard(
268 (
int) $a_item_data[
'ref_id'],
269 (
int) $a_item_data[
'obj_id'],
270 (
string) $a_item_data[
'type'],
271 (
string) $a_item_data[
'title'],
272 (
string) $a_item_data[
'description']
279 if (!isset($this->list_gui[$item_data[
"type"]])) {
281 $item_list_gui->setContainerObject($this->container_gui);
282 $this->list_gui[$item_data[
"type"]] = $item_list_gui;
284 $item_list_gui = $this->list_gui[$item_data[
"type"]];
288 $item_list_gui->setParentRefId((
int) ($item_data[
"parent"] ?? 0));
290 $item_list_gui->setDefaultCommandParameters(array());
291 $item_list_gui->disableTitleLink(
false);
292 $item_list_gui->resetConditionTarget();
294 if ($this->container->isClassificationFilterActive()) {
295 $item_list_gui->enablePath(
297 $this->container->getRefId(),
311 $item_list_gui->enableComments(
true);
312 $item_list_gui->enableNotes(
true);
313 $item_list_gui->enableTags(
true);
314 $item_list_gui->enableRating(
true);
317 $item_list_gui->forceVisibleOnly(
false);
320 $this->container_gui->modifyItemGUI($item_list_gui, $item_data);
322 return $item_list_gui;
ilContainerGUI $container_gui
renderCard(array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="")
getItemGUI(array $item_data)
renderItem(array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="", string $item_group_list_presentation="", int $checkbox=self::CHECKBOX_NONE, bool $item_ordering=false, int $details_level=\ilObjectListGUI::DETAILS_ALL)
InternalDomainService $domain
setItemModifierClosure(\Closure $f)
Closure $item_modifier_closure
__construct()
Constructor setup ILIAS global object @access public.
static buildAjaxHash(int $node_type, ?int $node_id, string $obj_type, int $obj_id, ?string $sub_type=null, ?int $sub_id=null, int $news_id=0)
Build ajax hash.
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder,...
static _getInstance(int $a_obj_id)
static getCompleteDescriptions(array $objects)
overwrites description fields to long or short description in an assoc array keys needed (obj_id and ...
static getItemsByEvent(int $event_id)
Get session material / event items.
static addListGUIActivationProperty(ilObjectListGUI $list_gui, array &$item)
Get timing details for list gui.
static _getListGUIByType(string $type, int $context=ilObjectListGUI::CONTEXT_REPOSITORY)
PathGUI which handles materials assigned to sessions.