ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilContainerContentGUI Class Reference

Parent class of all container content GUIs. More...

+ Inheritance diagram for ilContainerContentGUI:
+ Collaboration diagram for ilContainerContentGUI:

Public Member Functions

 getContainerObject ()
 
 getContainerGUI ()
 
 setOutput ()
 This method sets the output of the right and main column in the global standard template. More...
 
 getMainContent ()
 Get content HTML for main column, this one may be overwritten in derived classes. More...
 
 determinePageEmbeddedBlocks (string $a_container_page_html)
 Determine all blocks that are embedded in the container page. More...
 
 addEmbeddedBlock (string $block_type, $block_parameter)
 Add embedded block. More...
 
 getEmbeddedBlocks ()
 
 renderPageEmbeddedBlocks ()
 
 renderItem (array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="", string $item_group_list_presentation="")
 Render an item. More...
 
 renderCard (array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="")
 
 insertPageEmbeddedBlocks (string $a_output_html)
 Insert blocks into container page. More...
 
 getSingleTypeBlockAsynch (string $type)
 Render single block. More...
 
 getGroupedObjTypes ()
 Get grouped repository object types. More...
 
 getIntroduction ()
 
 getItemGroupsHTML (int $a_pos=0)
 
 renderItemGroup (array $a_itgr)
 

Data Fields

const DETAILS_DEACTIVATED = 0
 
const DETAILS_TITLE = 1
 
const DETAILS_ALL = 2
 
const VIEW_MODE_LIST = 0
 
const VIEW_MODE_TILE = 1
 
ilContainerGUI $container_gui
 
ilContainer $container_obj
 

Protected Member Functions

 getViewMode ()
 
 getRightColumnHTML ()
 
 getCenterColumnHTML ()
 
 initRenderer ()
 Init container renderer. More...
 
 getItemGUI (array $item_data)
 
 hasForcedOrderByStartDate (string $type)
 
 getUniqueItemId (array $a_item_data)
 

Protected Attributes

ILIAS Container Content ItemPresentationManager $item_presentation
 
ilGlobalTemplateInterface $tpl
 
ilCtrl $ctrl
 
ilObjUser $user
 
ilLanguage $lng
 
ilAccessHandler $access
 
ilDBInterface $db
 
ilRbacSystem $rbacsystem
 
ilSetting $settings
 
ilObjectDefinition $obj_definition
 
int $details_level = self::DETAILS_DEACTIVATED
 
ilContainerRenderer $renderer
 
ilLogger $log
 
int $view_mode
 
array $embedded_block = []
 
array $items = []
 
array $list_gui = []
 
ClipboardManager $clipboard
 
StandardGUIRequest $request
 
ItemManager $item_manager
 
BlockSessionRepository $block_repo
 
int $block_limit = 0
 
array $type_grps = []
 
int $force_details
 
ilContainerUserFilter $container_user_filter
 

Private Member Functions

 forwardToColumnGUI ()
 Get columngui output. More...
 

Detailed Description

Parent class of all container content GUIs.

These classes are responsible for displaying the content, i.e. the side column and main column and its subitems in container objects.

Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 32 of file class.ilContainerContentGUI.php.

Member Function Documentation

◆ addEmbeddedBlock()

ilContainerContentGUI::addEmbeddedBlock ( string  $block_type,
  $block_parameter 
)

Add embedded block.

Parameters
string$block_type
string | int$block_parameter

Definition at line 425 of file class.ilContainerContentGUI.php.

428 : void {
429 $this->embedded_block[$block_type][] = $block_parameter;
430 }

Referenced by determinePageEmbeddedBlocks().

+ Here is the caller graph for this function:

◆ determinePageEmbeddedBlocks()

ilContainerContentGUI::determinePageEmbeddedBlocks ( string  $a_container_page_html)

Determine all blocks that are embedded in the container page.

Definition at line 398 of file class.ilContainerContentGUI.php.

400 : void {
402
403 // iterate all types
404 foreach ($type_grps as $type => $v) {
405 // set template (overall or type specific)
406 if (is_int(strpos($a_container_page_html, "[list-" . $type . "]"))) {
407 $this->addEmbeddedBlock("type", $type);
408 }
409 }
410
411 // determine item groups
412 while (preg_match('~\[(item-group-([0-9]*))\]~i', $a_container_page_html, $found)) {
413 $this->addEmbeddedBlock("itgr", (int) $found[2]);
414
415 $html = ''; // This was never defined before
416 $a_container_page_html = preg_replace('~\[' . $found[1] . '\]~i', $html, $a_container_page_html);
417 }
418 }
addEmbeddedBlock(string $block_type, $block_parameter)
Add embedded block.
getGroupedObjTypes()
Get grouped repository object types.

References addEmbeddedBlock().

+ Here is the call graph for this function:

◆ forwardToColumnGUI()

ilContainerContentGUI::forwardToColumnGUI ( )
private

Get columngui output.

Definition at line 321 of file class.ilContainerContentGUI.php.

321 : string
322 {
323 $ilCtrl = $this->ctrl;
324 $html = "";
325
326 // this gets us the subitems we need in setColumnSettings()
327 // todo: this should be done in ilCourseGUI->getSubItems
328
329 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
330 $obj_type = ilObject::_lookupType($obj_id);
331
332 if (!$ilCtrl->isAsynch()) {
334 // right column wants center
336 $column_gui = new ilColumnGUI($obj_type, IL_COL_RIGHT);
337 $this->getContainerGUI()->setColumnSettings($column_gui);
338 $html = $ilCtrl->forwardCommand($column_gui);
339 }
340 // left column wants center
342 $column_gui = new ilColumnGUI($obj_type, IL_COL_LEFT);
343 $this->getContainerGUI()->setColumnSettings($column_gui);
344 $html = $ilCtrl->forwardCommand($column_gui);
345 }
346 } else {
347 $html = $this->getMainContent();
348 }
349 }
350
351 return $html;
352 }
const IL_SCREEN_SIDE
const IL_COL_RIGHT
const IL_COL_LEFT
Column user interface class.
static getScreenMode()
static getCmdSide()
Get Column Side of Current Command.
getMainContent()
Get content HTML for main column, this one may be overwritten in derived classes.
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)

References $ctrl, ilObject\_lookupObjId(), ilObject\_lookupType(), ilColumnGUI\getCmdSide(), getContainerGUI(), getContainerObject(), getMainContent(), ilColumnGUI\getScreenMode(), IL_COL_LEFT, IL_COL_RIGHT, and IL_SCREEN_SIDE.

Referenced by getCenterColumnHTML().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCenterColumnHTML()

ilContainerContentGUI::getCenterColumnHTML ( )
protected

Definition at line 228 of file class.ilContainerContentGUI.php.

228 : string
229 {
230 $ilCtrl = $this->ctrl;
233
234 $ilCtrl->saveParameterByClass("ilcolumngui", "col_return");
235
236 $tpl->addOnLoadCode("il.Object.setRedrawListItemUrl('" .
237 $ilCtrl->getLinkTarget($this->container_gui, "redrawListItem", "", true) . "');");
238
239 $tpl->addOnLoadCode("il.Object.setRatingUrl('" .
240 $ilCtrl->getLinkTargetByClass(
241 [get_class($this->container_gui), "ilcommonactiondispatchergui", "ilratinggui"],
242 "saveRating",
243 "",
244 true,
245 false
246 ) . "');");
247
248 switch ($ilCtrl->getNextClass()) {
249 case "ilcolumngui":
250 $this->container_gui->setSideColumnReturn();
251 $html = $this->forwardToColumnGUI();
252 break;
253
254 default:
255 $ilDB->useSlave(true);
256 $html = $this->getMainContent();
257 $ilDB->useSlave(false);
258 break;
259 }
260
261 return $html;
262 }
forwardToColumnGUI()
Get columngui output.
ilGlobalTemplateInterface $tpl
addOnLoadCode(string $a_code, int $a_batch=2)
Add on load code.

References $ctrl, $db, $ilDB, $tpl, ILIAS\UICore\GlobalTemplate\addOnLoadCode(), forwardToColumnGUI(), and getMainContent().

Referenced by setOutput().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getContainerGUI()

ilContainerContentGUI::getContainerGUI ( )

Definition at line 139 of file class.ilContainerContentGUI.php.

140 {
142 }
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder,...

References $container_gui.

Referenced by forwardToColumnGUI(), getItemGUI(), ilContainerObjectiveGUI\getMainContent(), getRightColumnHTML(), initRenderer(), and ilContainerObjectiveGUI\showObjectives().

+ Here is the caller graph for this function:

◆ getContainerObject()

ilContainerContentGUI::getContainerObject ( )

◆ getEmbeddedBlocks()

ilContainerContentGUI::getEmbeddedBlocks ( )

Definition at line 432 of file class.ilContainerContentGUI.php.

432 : array
433 {
435 }

◆ getGroupedObjTypes()

ilContainerContentGUI::getGroupedObjTypes ( )

Get grouped repository object types.

Definition at line 763 of file class.ilContainerContentGUI.php.

763 : array
764 {
765 $objDefinition = $this->obj_definition;
766
767 if (empty($this->type_grps)) {
768 $this->type_grps =
769 $objDefinition::getGroupedRepositoryObjectTypes($this->getContainerObject()->getType());
770 }
771 return $this->type_grps;
772 }

◆ getIntroduction()

ilContainerContentGUI::getIntroduction ( )

Definition at line 774 of file class.ilContainerContentGUI.php.

774 : string
775 {
777
778 $lng->loadLanguageModule("rep");
779
780 $tpl = new ilTemplate("tpl.rep_intro.html", true, true, "components/ILIAS/Repository");
781 $tpl->setVariable("IMG_REP_LARGE", ilObject::_getIcon(0, "big", "root"));
782 $tpl->setVariable("TXT_WELCOME", $lng->txt("rep_intro"));
783 $tpl->setVariable("TXT_INTRO_1", $lng->txt("rep_intro1"));
784 $tpl->setVariable("TXT_INTRO_2", $lng->txt("rep_intro2"));
785 $tpl->setVariable("TXT_INTRO_3", sprintf($lng->txt("rep_intro3"), $lng->txt("add")));
786 $tpl->setVariable("TXT_INTRO_4", sprintf($lng->txt("rep_intro4"), $lng->txt("cat_add")));
787 $tpl->setVariable("TXT_INTRO_5", $lng->txt("rep_intro5"));
788 $tpl->setVariable("TXT_INTRO_6", $lng->txt("rep_intro6"));
789
790 return $tpl->get();
791 }
loadLanguageModule(string $a_module)
Load language module.
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
static _getIcon(int $obj_id=0, string $size="big", string $type="", bool $offline=false)
Get icon for repository item.
special template class to simplify handling of ITX/PEAR
setVariable(string $variable, $value='')
Sets the given variable to the given value.
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.

References $lng, ilObject\_getIcon(), ILIAS\UICore\GlobalTemplate\get(), and ILIAS\UICore\GlobalTemplate\setVariable().

Referenced by getMainContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getItemGroupsHTML()

ilContainerContentGUI::getItemGroupsHTML ( int  $a_pos = 0)

Definition at line 793 of file class.ilContainerContentGUI.php.

793 : int
794 {
795 if (isset($this->items["itgr"]) && is_array($this->items["itgr"])) {
796 foreach ($this->items["itgr"] as $itgr) {
797 if (!$this->renderer->hasCustomBlock($itgr["child"])) {
798 $this->renderItemGroup($itgr);
799
800 $this->renderer->setBlockPosition($itgr["ref_id"], ++$a_pos);
801 }
802 }
803 }
804 return $a_pos;
805 }
renderer()

References renderer().

+ Here is the call graph for this function:

◆ getItemGUI()

ilContainerContentGUI::getItemGUI ( array  $item_data)
protected

Definition at line 354 of file class.ilContainerContentGUI.php.

355 {
356 // get item list gui object
357 if (!isset($this->list_gui[$item_data["type"]])) {
358 $item_list_gui = ilObjectListGUIFactory::_getListGUIByType($item_data["type"]);
359 $item_list_gui->setContainerObject($this->getContainerGUI());
360 $this->list_gui[$item_data["type"]] = &$item_list_gui;
361 } else {
362 $item_list_gui = &$this->list_gui[$item_data["type"]];
363 }
364
365 // unique js-ids
366 $item_list_gui->setParentRefId((int) ($item_data["parent"] ?? 0));
367
368 $item_list_gui->setDefaultCommandParameters([]);
369 $item_list_gui->disableTitleLink(false);
370 $item_list_gui->resetConditionTarget();
371
372 if ($this->container_obj->isClassificationFilterActive()) {
373 $item_list_gui->enablePath(
374 true,
375 $this->container_obj->getRefId(),
377 );
378 }
379
380 // activate common social commands
381 $item_list_gui->enableComments(true);
382 $item_list_gui->enableNotes(true);
383 $item_list_gui->enableTags(true);
384 $item_list_gui->enableRating(true);
385
386 // reset
387 $item_list_gui->forceVisibleOnly(false);
388
389 // container specific modifications
390 $this->getContainerGUI()->modifyItemGUI($item_list_gui, $item_data);
391
392 return $item_list_gui;
393 }
static _getListGUIByType(string $type, int $context=ilObjectListGUI::CONTEXT_REPOSITORY)
PathGUI which handles materials assigned to sessions.

References ilObjectListGUIFactory\_getListGUIByType(), and getContainerGUI().

+ Here is the call graph for this function:

◆ getMainContent()

ilContainerContentGUI::getMainContent ( )

Get content HTML for main column, this one may be overwritten in derived classes.

Reimplemented in ilContainerObjectiveGUI.

Definition at line 268 of file class.ilContainerContentGUI.php.

268 : string
269 {
270 $ilAccess = $this->access;
271
272 $tpl = new ilTemplate(
273 "tpl.container_page.html",
274 true,
275 true,
276 "components/ILIAS/Container"
277 );
278 // Show introduction, if repository is empty
279 if (!$this->item_presentation->hasItems() &&
280 $this->getContainerObject()->getRefId() == ROOT_FOLDER_ID &&
281 $ilAccess->checkAccess("write", "", $this->getContainerObject()->getRefId())) {
282 $html = $this->getIntroduction();
283 } else { // show item list otherwise
284 $html = $this->renderItemList();
285 }
286 $tpl->setVariable("CONTAINER_PAGE_CONTENT", $html);
287
288 return $tpl->get();
289 }
const ROOT_FOLDER_ID
Definition: constants.php:32

References $access, $tpl, ILIAS\UICore\GlobalTemplate\get(), getIntroduction(), ROOT_FOLDER_ID, and ILIAS\UICore\GlobalTemplate\setVariable().

Referenced by forwardToColumnGUI(), and getCenterColumnHTML().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRightColumnHTML()

ilContainerContentGUI::getRightColumnHTML ( )
protected

Definition at line 186 of file class.ilContainerContentGUI.php.

186 : string
187 {
188 $ilCtrl = $this->ctrl;
189 $html = "";
190
191 $ilCtrl->saveParameterByClass("ilcolumngui", "col_return");
192
193 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
194 $obj_type = ilObject::_lookupType($obj_id);
195
196 $column_gui = new ilColumnGUI($obj_type, IL_COL_RIGHT);
197
198 if ($column_gui::getScreenMode() === IL_SCREEN_FULL) {
199 return "";
200 }
201
202 $this->getContainerGUI()->setColumnSettings($column_gui);
203
204 if ($ilCtrl->getNextClass() === "ilcolumngui" &&
205 $column_gui::getCmdSide() === IL_COL_RIGHT &&
206 $column_gui::getScreenMode() === IL_SCREEN_SIDE) {
207 $html = $ilCtrl->forwardCommand($column_gui);
208 } else {
209 if (!$ilCtrl->isAsynch()) {
210 $html = "";
211
212 // user interface plugin slot + default rendering
213 $uip = new ilUIHookProcessor(
214 "components/ILIAS/Container",
215 "right_column",
216 ["container_content_gui" => $this]
217 );
218 if (!$uip->replaced()) {
219 $html = $ilCtrl->getHTML($column_gui);
220 }
221 $html = $uip->getHTML($html);
222 }
223 }
224
225 return $html;
226 }
const IL_SCREEN_FULL
saveParameterByClass(string $a_class, $a_parameter)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References $ctrl, ilObject\_lookupObjId(), ilObject\_lookupType(), getContainerGUI(), getContainerObject(), IL_COL_RIGHT, IL_SCREEN_FULL, IL_SCREEN_SIDE, and ilCtrl\saveParameterByClass().

Referenced by setOutput().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSingleTypeBlockAsynch()

ilContainerContentGUI::getSingleTypeBlockAsynch ( string  $type)

Render single block.

Definition at line 712 of file class.ilContainerContentGUI.php.

714 : string {
715 $this->initRenderer();
716 // get all sub items
717 $this->items = $this->getContainerObject()->getSubItems(
718 $this->getContainerGUI()->isActiveAdministrationPanel()
719 );
720
721 $exhausted = false;
722 $ref_ids = $this->request->getAlreadyRenderedRefIds();
723
724 // iterate all types
725 if (is_array($this->items[$type]) &&
726 $this->renderer->addTypeBlock($type)) {
727 //$this->renderer->setBlockPosition($type, ++$pos);
728
729 $position = 1;
730 $counter = 1;
731 foreach ($this->items[$type] as $item_data) {
732 $item_ref_id = $item_data["child"];
733
734 if (in_array($item_ref_id, $ref_ids)) {
735 continue;
736 }
737 if ($this->block_limit > 0 && $counter == $this->block_limit + 1) {
738 if ($counter == $this->block_limit + 1) {
739 // render more button
740 $this->renderer->addShowMoreButton($type);
741 $exhausted = true;
742 }
743 continue;
744 }
745
746 if (!$this->renderer->hasItem($item_ref_id)) {
747 $html = $this->renderItem($item_data, $position++);
748
749 if ($html != "") {
750 $counter++;
751 $this->renderer->addItemToBlock($type, $item_data["type"], $item_ref_id, $html);
752 }
753 }
754 }
755 }
756
757 return $this->renderer->renderSingleTypeBlock($type, $exhausted);
758 }
renderItem(array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="", string $item_group_list_presentation="")
Render an item.
initRenderer()
Init container renderer.
$counter

References $counter, and renderer().

+ Here is the call graph for this function:

◆ getUniqueItemId()

ilContainerContentGUI::getUniqueItemId ( array  $a_item_data)
protected

Definition at line 483 of file class.ilContainerContentGUI.php.

483 : string
484 {
485 $item_list_gui = $this->getItemGUI($a_item_data);
486 return $item_list_gui->getUniqueItemId();
487 }

◆ getViewMode()

ilContainerContentGUI::getViewMode ( )
protected

Definition at line 128 of file class.ilContainerContentGUI.php.

128 : int
129 {
130 return $this->view_mode;
131 }

References $view_mode.

Referenced by ilContainerGUI\getContentGUI().

+ Here is the caller graph for this function:

◆ hasForcedOrderByStartDate()

ilContainerContentGUI::hasForcedOrderByStartDate ( string  $type)
protected

Definition at line 478 of file class.ilContainerContentGUI.php.

478 : bool
479 {
480 return $type === 'sess' && get_class($this) === ilContainerSessionsContentGUI::class;
481 }

◆ initRenderer()

ilContainerContentGUI::initRenderer ( )
protected

Init container renderer.

Reimplemented in ilContainerObjectiveGUI, and ilContainerSessionsContentGUI.

Definition at line 294 of file class.ilContainerContentGUI.php.

294 : void
295 {
297
298 $this->renderer = new ilContainerRenderer(
299 $this->item_presentation,
300 ($this->getContainerGUI()->isActiveAdministrationPanel() && !$this->clipboard->hasEntries()),
301 $this->getContainerGUI()->isMultiDownloadEnabled(),
302 $this->getContainerGUI()->isActiveOrdering() && (get_class($this) !== "ilContainerObjectiveGUI") // no block sorting in objective view
303 ,
304 $sorting->getBlockPositions(),
305 $this->container_gui,
306 $this->getViewMode(),
307 $this->getContainerGUI()->isActiveAdministrationPanel()
308 );
309
310 // all event items are included per session rendering
311 // and should return true for hasItem
312 $event_items = ilEventItems::_getItemsOfContainer($this->container_obj->getRefId());
313 foreach ($event_items as $ev) {
314 $this->renderer->addItemId($ev);
315 }
316 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getInstance(int $a_obj_id)
static _getItemsOfContainer(int $a_ref_id)

References ilContainerSorting\_getInstance(), ilEventItems\_getItemsOfContainer(), getContainerGUI(), getContainerObject(), ILIAS\Survey\Mode\getId(), and renderer().

Referenced by ilContainerByTypeContentGUI\renderItemList(), and ilContainerSimpleContentGUI\renderItemList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insertPageEmbeddedBlocks()

ilContainerContentGUI::insertPageEmbeddedBlocks ( string  $a_output_html)

Insert blocks into container page.

Definition at line 678 of file class.ilContainerContentGUI.php.

678 : string
679 {
680 $this->determinePageEmbeddedBlocks($a_output_html);
682
683 // iterate all types
684 foreach ($this->getGroupedObjTypes() as $type => $v) {
685 // set template (overall or type specific)
686 if (is_int(strpos($a_output_html, "[list-" . $type . "]"))) {
687 $a_output_html = preg_replace(
688 '~\[list-' . $type . '\]~i',
689 $this->renderer->renderSingleTypeBlock($type),
690 $a_output_html
691 );
692 }
693 }
694
695 // insert all item groups
696 while (preg_match('~\[(item-group-([0-9]*))\]~i', $a_output_html, $found)) {
697 $itgr_ref_id = (int) $found[2];
698
699 $a_output_html = preg_replace(
700 '~\[' . $found[1] . '\]~i',
701 $this->renderer->renderSingleCustomBlock($itgr_ref_id),
702 $a_output_html
703 );
704 }
705
706 return $a_output_html;
707 }
determinePageEmbeddedBlocks(string $a_container_page_html)
Determine all blocks that are embedded in the container page.

References ILIAS\Repository\int(), and renderer().

Referenced by ilContainerObjectiveGUI\showObjectives().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderCard()

ilContainerContentGUI::renderCard ( array  $a_item_data,
int  $a_position = 0,
bool  $a_force_icon = false,
string  $a_pos_prefix = "" 
)

Definition at line 645 of file class.ilContainerContentGUI.php.

651 $item_list_gui = $this->getItemGUI($a_item_data);
652 $item_list_gui->setAjaxHash(ilCommonActionDispatcherGUI::buildAjaxHash(
654 $a_item_data['ref_id'],
655 $a_item_data['type'],
656 (int) $a_item_data['obj_id']
657 ));
658 $item_list_gui->initItem(
659 (int) $a_item_data['ref_id'],
660 (int) $a_item_data['obj_id'],
661 (string) $a_item_data['type'],
662 (string) $a_item_data['title'],
663 (string) $a_item_data['description']
664 );
665
666 return $item_list_gui->getAsCard(
667 $a_item_data['ref_id'],
668 (int) $a_item_data['obj_id'],
669 (string) $a_item_data['type'],
670 (string) $a_item_data['title'],
671 (string) $a_item_data['description']
672 );
673 }
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.

◆ renderItem()

ilContainerContentGUI::renderItem ( array  $a_item_data,
int  $a_position = 0,
bool  $a_force_icon = false,
string  $a_pos_prefix = "",
string  $item_group_list_presentation = "" 
)

Render an item.

Returns
\ILIAS\UI\Component\Card\RepositoryObject|string|null

Definition at line 493 of file class.ilContainerContentGUI.php.

499 {
501 $ilAccess = $this->access;
502 $ilCtrl = $this->ctrl;
503 // Pass type, obj_id and tree to checkAccess method to improve performance
504 if (!$ilAccess->checkAccess('visible', '', $a_item_data['ref_id'], $a_item_data['type'], $a_item_data['obj_id'], $a_item_data['tree'])) {
505 return '';
506 }
507
508 $view_mode = $this->getViewMode();
509 if ($item_group_list_presentation != "") {
510 $view_mode = ($item_group_list_presentation === "tile")
511 ? self::VIEW_MODE_TILE
512 : self::VIEW_MODE_LIST;
513 }
514 if ($view_mode === self::VIEW_MODE_TILE) {
515 return $this->renderCard($a_item_data, $a_position, $a_force_icon, $a_pos_prefix);
516 }
517
518 $item_list_gui = $this->getItemGUI($a_item_data);
519 if ($a_item_data["type"] === "sess" ||
520 $a_force_icon ||
521 $ilSetting->get("icon_position_in_lists") === "item_rows") {
522 $item_list_gui->enableIcon(true);
523 }
524
525 if ($this->getContainerGUI()->isActiveAdministrationPanel() && !$this->clipboard->hasEntries()) {
526 $item_list_gui->enableCheckbox(true);
527 } elseif ($this->getContainerGUI()->isMultiDownloadEnabled()) {
528 // display multi download checkboxes
529 $item_list_gui->enableDownloadCheckbox((int) $a_item_data["ref_id"]);
530 }
531
532 if ($this->getContainerGUI()->isActiveItemOrdering() && !$this->hasForcedOrderByStartDate($a_item_data['type'])) {
533 $item_list_gui->setPositionInputField(
534 $a_pos_prefix . "[" . $a_item_data["ref_id"] . "]",
535 sprintf('%d', $a_position * 10)
536 );
537 }
538
539 if ($a_item_data['type'] === 'sess' && get_class($this) !== 'ilContainerObjectiveGUI') {
540 switch ($this->getDetailsLevel($a_item_data['obj_id'])) {
542 $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_MINIMAL);
543 $item_list_gui->enableExpand(true);
544 $item_list_gui->setExpanded(false);
545 $item_list_gui->enableDescription(false);
546 $item_list_gui->enableProperties(true);
547 break;
548
550 $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_ALL);
551 $item_list_gui->enableExpand(true);
552 $item_list_gui->setExpanded(true);
553 $item_list_gui->enableDescription(true);
554 $item_list_gui->enableProperties(true);
555 break;
556
557 default:
558 $item_list_gui->setDetailsLevel(ilObjectListGUI::DETAILS_ALL);
559 $item_list_gui->enableExpand(true);
560 $item_list_gui->enableDescription(true);
561 $item_list_gui->enableProperties(true);
562 break;
563 }
564 }
565
566 if (method_exists($this, "addItemDetails")) {
567 $this->addItemDetails($item_list_gui, $a_item_data);
568 }
569
570 // show subitems
571 if ($a_item_data['type'] === 'sess' && (
572 $this->getDetailsLevel($a_item_data['obj_id']) !== self::DETAILS_TITLE ||
573 $this->getContainerGUI()->isActiveAdministrationPanel() ||
574 $this->getContainerGUI()->isActiveItemOrdering()
575 )) {
576 $pos = 1;
577 $items = ilObjectActivation::getItemsByEvent($a_item_data['obj_id']);
578 $items = ilContainerSorting::_getInstance($this->getContainerObject()->getId())->sortSubItems('sess', $a_item_data['obj_id'], $items);
580
581 $item_readable = $ilAccess->checkAccess('read', '', $a_item_data['ref_id']);
582
583 foreach ($items as $item) {
584 // TODO: this should be removed and be handled by if(strlen($sub_item_html))
585 // see mantis: 0003944
586 if (!$ilAccess->checkAccess('visible', '', $item['ref_id'])) {
587 continue;
588 }
589
590 $item_list_gui2 = $this->getItemGUI($item);
591 $item_list_gui2->enableIcon(true);
592 $item_list_gui2->enableItemDetailLinks(false);
593
594 // unique js-ids
595 $item_list_gui2->setParentRefId((int) ($a_item_data['ref_id'] ?? 0));
596
597 // @see mantis 10488
598 if (!$item_readable && !$ilAccess->checkAccess('write', '', $item['ref_id'])) {
599 $item_list_gui2->forceVisibleOnly(true);
600 }
601
602 if ($this->getContainerGUI()->isActiveAdministrationPanel() && !$this->clipboard->hasEntries()) {
603 $item_list_gui2->enableCheckbox(true);
604 } elseif ($this->getContainerGUI()->isMultiDownloadEnabled()) {
605 // display multi download checkbox
606 $item_list_gui2->enableDownloadCheckbox((int) $item['ref_id']);
607 }
608
609 if ($this->getContainerGUI()->isActiveItemOrdering()) {
610 $item_list_gui2->setPositionInputField(
611 "[sess][" . $a_item_data['obj_id'] . "][" . $item["ref_id"] . "]",
612 sprintf('%d', $pos * 10)
613 );
614 $pos++;
615 }
616
617 // #10611
619
620 $sub_item_html = $item_list_gui2->getListItemHTML(
621 $item['ref_id'],
622 $item['obj_id'],
623 $item['title'],
624 $item['description']
625 );
626
627 $this->determineAdminCommands($item["ref_id"], $item_list_gui2->adminCommandsIncluded());
628 if ($sub_item_html !== '') {
629 $item_list_gui->addSubItemHTML($sub_item_html);
630 }
631 }
632 }
633
634 ilObjectActivation::addListGUIActivationProperty($item_list_gui, $a_item_data);
635
636 $html = $item_list_gui->getListItemHTML(
637 (int) $a_item_data['ref_id'],
638 (int) $a_item_data['obj_id'],
639 (string) $a_item_data['title'],
640 (string) $a_item_data['description'],
641 );
642 return $html;
643 }
renderCard(array $a_item_data, int $a_position=0, bool $a_force_icon=false, string $a_pos_prefix="")
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.
global $ilSetting
Definition: privfeed.php:31

References $ilSetting, ilContainerSorting\_getInstance(), ilObjectActivation\addListGUIActivationProperty(), ilObjectListGUI\DETAILS_ALL, ilObjectListGUI\DETAILS_MINIMAL, ilContainer\getCompleteDescriptions(), ILIAS\Survey\Mode\getId(), and ilObjectActivation\getItemsByEvent().

+ Here is the call graph for this function:

◆ renderItemGroup()

ilContainerContentGUI::renderItemGroup ( array  $a_itgr)

Definition at line 807 of file class.ilContainerContentGUI.php.

807 : void
808 {
809 $ilAccess = $this->access;
810 $ilUser = $this->user;
811 // #16493
812 $perm_ok = ($ilAccess->checkAccess("visible", "", $a_itgr['ref_id']) &&
813 $ilAccess->checkAccess("read", "", $a_itgr['ref_id']));
814
816
817 // get all valid ids (this is filtered)
818 $all_ids = array_map(static function (array $i): int {
819 return (int) $i["child"];
820 }, $this->items["_all"]);
821
822 // remove filtered items
823 $items = array_filter($items, static function (array $i) use ($all_ids): bool {
824 return in_array($i["ref_id"], $all_ids);
825 });
826
827 // if no permission is given, set the items to "rendered" but
828 // do not display the whole block
829 if (!$perm_ok) {
830 foreach ($items as $item) {
831 $this->renderer->hideItem($item["child"]);
832 }
833 return;
834 }
835
836 $item_list_gui = $this->getItemGUI($a_itgr);
837 $item_list_gui->enableNotes(false);
838 $item_list_gui->enableTags(false);
839 $item_list_gui->enableComments(false);
840 $item_list_gui->enableTimings(false);
841 $item_list_gui->getListItemHTML(
842 $a_itgr["ref_id"],
843 $a_itgr["obj_id"],
844 $a_itgr["title"],
845 $a_itgr["description"]
846 );
847 $commands_html = $item_list_gui->getCommandsHTML($a_itgr["title"], false);
848
849 // determine behaviour
850 $item_group = new ilObjItemGroup($a_itgr["ref_id"]);
851 $beh = $item_group->getBehaviour();
852 $stored_val = $this->block_repo->getProperty(
853 "itgr_" . $a_itgr["ref_id"],
854 $ilUser->getId(),
855 "opened"
856 );
857 if ($stored_val !== "" && $beh !== ilItemGroupBehaviour::ALWAYS_OPEN) {
858 $beh = ($stored_val === "1")
861 }
862
863 $data = [
864 "behaviour" => $beh,
865 "store-url" => "./ilias.php?baseClass=ilcontainerblockpropertiesstoragegui&cmd=store" .
866 "&cont_block_id=itgr_" . $a_itgr['ref_id']
867 ];
868 if (ilObjItemGroup::lookupHideTitle($a_itgr["obj_id"]) &&
869 !$this->getContainerGUI()->isActiveAdministrationPanel()) {
870 $this->renderer->addCustomBlock($a_itgr["ref_id"], "", $commands_html, $data);
871 } else {
872 $this->renderer->addCustomBlock($a_itgr["ref_id"], $a_itgr["title"], $commands_html, $data);
873 }
874
875
876 // render item group sub items
877
879 $this->getContainerObject()->getId()
880 )->sortSubItems('itgr', $a_itgr['obj_id'], $items);
881
882 // #18285
884
885 $position = 1;
886 foreach ($items as $item) {
887 // we are NOT using hasItem() here, because item might be in multiple item groups
888
889 $it_pres = $item_group->getListPresentation();
890 if ($this->getContainerGUI()->isActiveOrdering() ||
891 $this->getContainerGUI()->isActiveAdministrationPanel()) {
892 $it_pres = "list";
893 }
894
895 $html2 = $this->renderItem($item, $position++, false, "[itgr][" . $a_itgr['obj_id'] . "]", $it_pres);
896 if ($html2 != "") {
897 // :TODO: show it multiple times?
898 $this->renderer->addItemToBlock($a_itgr["ref_id"], $item["type"], $item["child"], $html2, true);
899 }
900 }
901 }
Class ilObjItemGroup.
static lookupHideTitle(int $a_id)
static getItemsByItemGroup(int $item_group_ref_id)
Get materials of item group.

References $data, ilContainerSorting\_getInstance(), ilItemGroupBehaviour\ALWAYS_OPEN, ilItemGroupBehaviour\EXPANDABLE_CLOSED, ilItemGroupBehaviour\EXPANDABLE_OPEN, ilContainer\getCompleteDescriptions(), ILIAS\Survey\Mode\getId(), ilObjectActivation\getItemsByItemGroup(), ilObjItemGroup\lookupHideTitle(), and renderer().

+ Here is the call graph for this function:

◆ renderPageEmbeddedBlocks()

ilContainerContentGUI::renderPageEmbeddedBlocks ( )

Definition at line 437 of file class.ilContainerContentGUI.php.

437 : void
438 {
439 // item groups
440 if (isset($this->embedded_block["itgr"]) && is_array($this->embedded_block["itgr"])) {
441 $item_groups = [];
442 if (isset($this->items["itgr"]) && is_array($this->items["itgr"])) {
443 foreach ($this->items["itgr"] as $ig) {
444 $item_groups[$ig["ref_id"]] = $ig;
445 }
446 }
447
448 foreach ($this->embedded_block["itgr"] as $ref_id) {
449 if (isset($item_groups[$ref_id])) {
450 $this->renderItemGroup($item_groups[$ref_id]);
451 }
452 }
453 }
454
455 // type specific blocks
456 if (isset($this->embedded_block["type"]) && is_array($this->embedded_block["type"])) {
457 foreach ($this->embedded_block["type"] as $type) {
458 if (isset($this->items[$type]) && is_array($this->items[$type]) && $this->renderer->addTypeBlock($type)) {
459 if ($this->hasForcedOrderByStartDate($type)) {
460 $this->items['sess'] = ilArrayUtil::sortArray($this->items['sess'], 'start', 'ASC', true, true);
461 }
462
463 $position = 1;
464
465 foreach ($this->items[$type] as $item_data) {
466 if (!$this->renderer->hasItem($item_data["child"])) {
467 $html = $this->renderItem($item_data, $position++);
468 if ($html != "") {
469 $this->renderer->addItemToBlock($type, $item_data["type"], $item_data["child"], $html);
470 }
471 }
472 }
473 }
474 }
475 }
476 }
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
$ref_id
Definition: ltiauth.php:66

References $ref_id, renderer(), and ilArrayUtil\sortArray().

+ Here is the call graph for this function:

◆ setOutput()

ilContainerContentGUI::setOutput ( )

This method sets the output of the right and main column in the global standard template.

Definition at line 148 of file class.ilContainerContentGUI.php.

148 : void
149 {
151 $ilCtrl = $this->ctrl;
152
153 // note: we do not want to get the center html in case of
154 // asynchronous calls to blocks in the right column (e.g. news)
155 // see #13012
156 if ($ilCtrl->getNextClass() === "ilcolumngui" &&
157 $ilCtrl->isAsynch()) {
159 }
160
161 // BEGIN ChangeEvent: record read event.
162 $ilUser = $this->user;
163
164 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
166 $this->getContainerObject()->getType(),
167 $this->getContainerObject()->getRefId(),
168 $obj_id,
169 $ilUser->getId()
170 );
171 // END ChangeEvent: record read event.
172
173 $html = $this->getCenterColumnHTML();
174 if ($html !== '') {
175 $tpl->setContent($html);
176 }
177
178 // see above, all other cases (this was the old position of setRightContent,
179 // maybe the position above is ok and all ifs can be removed)
180 if ($ilCtrl->getNextClass() !== "ilcolumngui" ||
181 !$ilCtrl->isAsynch()) {
183 }
184 }
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, bool $isCatchupWriteEvents=true, $a_ext_rc=null, $a_ext_time=null)
setRightContent(string $a_html)
Sets content of right column.
setContent(string $a_html)
Sets content for standard template.

References $ctrl, $tpl, $user, ilObject\_lookupObjId(), ilChangeEvent\_recordReadEvent(), getCenterColumnHTML(), getContainerObject(), getRightColumnHTML(), ILIAS\UICore\GlobalTemplate\setContent(), and ILIAS\UICore\GlobalTemplate\setRightContent().

+ Here is the call graph for this function:

Field Documentation

◆ $access

ilAccessHandler ilContainerContentGUI::$access
protected

◆ $block_limit

int ilContainerContentGUI::$block_limit = 0
protected

Definition at line 65 of file class.ilContainerContentGUI.php.

◆ $block_repo

BlockSessionRepository ilContainerContentGUI::$block_repo
protected

Definition at line 64 of file class.ilContainerContentGUI.php.

◆ $clipboard

ClipboardManager ilContainerContentGUI::$clipboard
protected

Definition at line 61 of file class.ilContainerContentGUI.php.

◆ $container_gui

ilContainerGUI ilContainerContentGUI::$container_gui

Definition at line 53 of file class.ilContainerContentGUI.php.

Referenced by getContainerGUI().

◆ $container_obj

ilContainer ilContainerContentGUI::$container_obj

Definition at line 54 of file class.ilContainerContentGUI.php.

Referenced by getContainerObject().

◆ $container_user_filter

ilContainerUserFilter ilContainerContentGUI::$container_user_filter
protected

Definition at line 68 of file class.ilContainerContentGUI.php.

◆ $ctrl

◆ $db

ilDBInterface ilContainerContentGUI::$db
protected

Definition at line 47 of file class.ilContainerContentGUI.php.

Referenced by getCenterColumnHTML().

◆ $details_level

int ilContainerContentGUI::$details_level = self::DETAILS_DEACTIVATED
protected

Definition at line 51 of file class.ilContainerContentGUI.php.

◆ $embedded_block

array ilContainerContentGUI::$embedded_block = []
protected

Definition at line 57 of file class.ilContainerContentGUI.php.

◆ $force_details

int ilContainerContentGUI::$force_details
protected

Definition at line 67 of file class.ilContainerContentGUI.php.

◆ $item_manager

ItemManager ilContainerContentGUI::$item_manager
protected

Definition at line 63 of file class.ilContainerContentGUI.php.

◆ $item_presentation

ILIAS Container Content ItemPresentationManager ilContainerContentGUI::$item_presentation
protected

Definition at line 40 of file class.ilContainerContentGUI.php.

Referenced by ilContainerObjectiveGUI\__construct().

◆ $items

array ilContainerContentGUI::$items = []
protected

Definition at line 58 of file class.ilContainerContentGUI.php.

◆ $list_gui

array ilContainerContentGUI::$list_gui = []
protected

Definition at line 60 of file class.ilContainerContentGUI.php.

◆ $lng

ilLanguage ilContainerContentGUI::$lng
protected

◆ $log

ilLogger ilContainerContentGUI::$log
protected

Definition at line 55 of file class.ilContainerContentGUI.php.

◆ $obj_definition

ilObjectDefinition ilContainerContentGUI::$obj_definition
protected

Definition at line 50 of file class.ilContainerContentGUI.php.

◆ $rbacsystem

ilRbacSystem ilContainerContentGUI::$rbacsystem
protected

Definition at line 48 of file class.ilContainerContentGUI.php.

◆ $renderer

ilContainerRenderer ilContainerContentGUI::$renderer
protected

Definition at line 52 of file class.ilContainerContentGUI.php.

◆ $request

StandardGUIRequest ilContainerContentGUI::$request
protected

Definition at line 62 of file class.ilContainerContentGUI.php.

◆ $settings

ilSetting ilContainerContentGUI::$settings
protected

◆ $tpl

◆ $type_grps

array ilContainerContentGUI::$type_grps = []
protected

Definition at line 66 of file class.ilContainerContentGUI.php.

◆ $user

ilObjUser ilContainerContentGUI::$user
protected

◆ $view_mode

int ilContainerContentGUI::$view_mode
protected

Definition at line 56 of file class.ilContainerContentGUI.php.

Referenced by getViewMode().

◆ DETAILS_ALL

const ilContainerContentGUI::DETAILS_ALL = 2

◆ DETAILS_DEACTIVATED

const ilContainerContentGUI::DETAILS_DEACTIVATED = 0

Definition at line 34 of file class.ilContainerContentGUI.php.

Referenced by ilContainerRenderer\getDetailsLevel().

◆ DETAILS_TITLE

◆ VIEW_MODE_LIST

◆ VIEW_MODE_TILE


The documentation for this class was generated from the following file: