ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
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="")
 
 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 33 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 426 of file class.ilContainerContentGUI.php.

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

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 399 of file class.ilContainerContentGUI.php.

401 : void {
403
404 // iterate all types
405 foreach ($type_grps as $type => $v) {
406 // set template (overall or type specific)
407 if (is_int(strpos($a_container_page_html, "[list-" . $type . "]"))) {
408 $this->addEmbeddedBlock("type", $type);
409 }
410 }
411
412 // determine item groups
413 while (preg_match('~\[(item-group-([0-9]*))\]~i', $a_container_page_html, $found)) {
414 $this->addEmbeddedBlock("itgr", (int) $found[2]);
415
416 $html = ''; // This was never defined before
417 $a_container_page_html = preg_replace('~\[' . $found[1] . '\]~i', $html, $a_container_page_html);
418 }
419 }
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 322 of file class.ilContainerContentGUI.php.

322 : string
323 {
324 $ilCtrl = $this->ctrl;
325 $html = "";
326
327 // this gets us the subitems we need in setColumnSettings()
328 // todo: this should be done in ilCourseGUI->getSubItems
329
330 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
331 $obj_type = ilObject::_lookupType($obj_id);
332
333 if (!$ilCtrl->isAsynch()) {
335 // right column wants center
337 $column_gui = new ilColumnGUI($obj_type, IL_COL_RIGHT);
338 $this->getContainerGUI()->setColumnSettings($column_gui);
339 $html = $ilCtrl->forwardCommand($column_gui);
340 }
341 // left column wants center
343 $column_gui = new ilColumnGUI($obj_type, IL_COL_LEFT);
344 $this->getContainerGUI()->setColumnSettings($column_gui);
345 $html = $ilCtrl->forwardCommand($column_gui);
346 }
347 } else {
348 $html = $this->getMainContent();
349 }
350 }
351
352 return $html;
353 }
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 229 of file class.ilContainerContentGUI.php.

229 : string
230 {
231 $ilCtrl = $this->ctrl;
234
235 $ilCtrl->saveParameterByClass("ilcolumngui", "col_return");
236
237 $tpl->addOnLoadCode("il.Object.setRedrawListItemUrl('" .
238 $ilCtrl->getLinkTarget($this->container_gui, "redrawListItem", "", true) . "');");
239
240 $tpl->addOnLoadCode("il.Object.setRatingUrl('" .
241 $ilCtrl->getLinkTargetByClass(
242 [get_class($this->container_gui), "ilcommonactiondispatchergui", "ilratinggui"],
243 "saveRating",
244 "",
245 true,
246 false
247 ) . "');");
248
249 switch ($ilCtrl->getNextClass()) {
250 case "ilcolumngui":
251 $this->container_gui->setSideColumnReturn();
252 $html = $this->forwardToColumnGUI();
253 break;
254
255 default:
256 $ilDB->useSlave(true);
257 $html = $this->getMainContent();
258 $ilDB->useSlave(false);
259 break;
260 }
261
262 return $html;
263 }
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 140 of file class.ilContainerContentGUI.php.

141 {
143 }
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 433 of file class.ilContainerContentGUI.php.

433 : array
434 {
436 }

◆ getGroupedObjTypes()

ilContainerContentGUI::getGroupedObjTypes ( )

Get grouped repository object types.

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

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

◆ getIntroduction()

ilContainerContentGUI::getIntroduction ( )

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

771 : string
772 {
774
775 $lng->loadLanguageModule("rep");
776
777 $tpl = new ilTemplate("tpl.rep_intro.html", true, true, "components/ILIAS/Repository");
778 $tpl->setVariable("IMG_REP_LARGE", ilObject::_getIcon(0, "big", "root"));
779 $tpl->setVariable("TXT_WELCOME", $lng->txt("rep_intro"));
780 $tpl->setVariable("TXT_INTRO_1", $lng->txt("rep_intro1"));
781 $tpl->setVariable("TXT_INTRO_2", $lng->txt("rep_intro2"));
782 $tpl->setVariable("TXT_INTRO_3", sprintf($lng->txt("rep_intro3"), $lng->txt("add")));
783 $tpl->setVariable("TXT_INTRO_4", sprintf($lng->txt("rep_intro4"), $lng->txt("cat_add")));
784 $tpl->setVariable("TXT_INTRO_5", $lng->txt("rep_intro5"));
785 $tpl->setVariable("TXT_INTRO_6", $lng->txt("rep_intro6"));
786
787 return $tpl->get();
788 }
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 790 of file class.ilContainerContentGUI.php.

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

References renderer().

+ Here is the call graph for this function:

◆ getItemGUI()

ilContainerContentGUI::getItemGUI ( array  $item_data)
protected

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

356 {
357 // get item list gui object
358 if (!isset($this->list_gui[$item_data["type"]])) {
359 $item_list_gui = ilObjectListGUIFactory::_getListGUIByType($item_data["type"]);
360 $item_list_gui->setContainerObject($this->getContainerGUI());
361 $this->list_gui[$item_data["type"]] = &$item_list_gui;
362 } else {
363 $item_list_gui = &$this->list_gui[$item_data["type"]];
364 }
365
366 // unique js-ids
367 $item_list_gui->setParentRefId((int) ($item_data["parent"] ?? 0));
368
369 $item_list_gui->setDefaultCommandParameters([]);
370 $item_list_gui->disableTitleLink(false);
371 $item_list_gui->resetConditionTarget();
372
373 if ($this->container_obj->isClassificationFilterActive()) {
374 $item_list_gui->enablePath(
375 true,
376 $this->container_obj->getRefId(),
378 );
379 }
380
381 // activate common social commands
382 $item_list_gui->enableComments(true);
383 $item_list_gui->enableNotes(true);
384 $item_list_gui->enableTags(true);
385 $item_list_gui->enableRating(true);
386
387 // reset
388 $item_list_gui->forceVisibleOnly(false);
389
390 // container specific modifications
391 $this->getContainerGUI()->modifyItemGUI($item_list_gui, $item_data);
392
393 return $item_list_gui;
394 }
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 269 of file class.ilContainerContentGUI.php.

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

187 : string
188 {
189 $ilCtrl = $this->ctrl;
190 $html = "";
191
192 $ilCtrl->saveParameterByClass("ilcolumngui", "col_return");
193
194 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
195 $obj_type = ilObject::_lookupType($obj_id);
196
197 $column_gui = new ilColumnGUI($obj_type, IL_COL_RIGHT);
198
199 if ($column_gui::getScreenMode() === IL_SCREEN_FULL) {
200 return "";
201 }
202
203 $this->getContainerGUI()->setColumnSettings($column_gui);
204
205 if ($ilCtrl->getNextClass() === "ilcolumngui" &&
206 $column_gui::getCmdSide() === IL_COL_RIGHT &&
207 $column_gui::getScreenMode() === IL_SCREEN_SIDE) {
208 $html = $ilCtrl->forwardCommand($column_gui);
209 } else {
210 if (!$ilCtrl->isAsynch()) {
211 $html = "";
212
213 // user interface plugin slot + default rendering
214 $uip = new ilUIHookProcessor(
215 "components/ILIAS/Container",
216 "right_column",
217 ["container_content_gui" => $this]
218 );
219 if (!$uip->replaced()) {
220 $html = $ilCtrl->getHTML($column_gui);
221 }
222 $html = $uip->getHTML($html);
223 }
224 }
225
226 return $html;
227 }
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 709 of file class.ilContainerContentGUI.php.

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

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

◆ getViewMode()

ilContainerContentGUI::getViewMode ( )
protected

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

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

References $view_mode.

Referenced by ilContainerGUI\getContentGUI().

+ Here is the caller graph for this function:

◆ hasForcedOrderByStartDate()

ilContainerContentGUI::hasForcedOrderByStartDate ( string  $type)
protected

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

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

◆ initRenderer()

ilContainerContentGUI::initRenderer ( )
protected

Init container renderer.

Reimplemented in ilContainerObjectiveGUI, and ilContainerSessionsContentGUI.

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

295 : void
296 {
298
299 $this->renderer = new ilContainerRenderer(
300 $this->item_presentation,
301 ($this->getContainerGUI()->isActiveAdministrationPanel() && !$this->clipboard->hasEntries()),
302 $this->getContainerGUI()->isMultiDownloadEnabled(),
303 $this->getContainerGUI()->isActiveOrdering() && (get_class($this) !== "ilContainerObjectiveGUI") // no block sorting in objective view
304 ,
305 $sorting->getBlockPositions(),
306 $this->container_gui,
307 $this->getViewMode(),
308 $this->getContainerGUI()->isActiveAdministrationPanel()
309 );
310
311 // all event items are included per session rendering
312 // and should return true for hasItem
313 $event_items = ilEventItems::_getItemsOfContainer($this->container_obj->getRefId());
314 foreach ($event_items as $ev) {
315 $this->renderer->addItemId($ev);
316 }
317 }
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 675 of file class.ilContainerContentGUI.php.

675 : string
676 {
677 $this->determinePageEmbeddedBlocks($a_output_html);
679
680 // iterate all types
681 foreach ($this->getGroupedObjTypes() as $type => $v) {
682 // set template (overall or type specific)
683 if (is_int(strpos($a_output_html, "[list-" . $type . "]"))) {
684 $a_output_html = preg_replace(
685 '~\[list-' . $type . '\]~i',
686 $this->renderer->renderSingleTypeBlock($type),
687 $a_output_html
688 );
689 }
690 }
691
692 // insert all item groups
693 while (preg_match('~\[(item-group-([0-9]*))\]~i', $a_output_html, $found)) {
694 $itgr_ref_id = (int) $found[2];
695
696 $a_output_html = preg_replace(
697 '~\[' . $found[1] . '\]~i',
698 $this->renderer->renderSingleCustomBlock($itgr_ref_id),
699 $a_output_html
700 );
701 }
702
703 return $a_output_html;
704 }
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 642 of file class.ilContainerContentGUI.php.

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

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

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

◆ renderItemGroup()

ilContainerContentGUI::renderItemGroup ( array  $a_itgr)

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

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

438 : void
439 {
440 // item groups
441 if (isset($this->embedded_block["itgr"]) && is_array($this->embedded_block["itgr"])) {
442 $item_groups = [];
443 if (isset($this->items["itgr"]) && is_array($this->items["itgr"])) {
444 foreach ($this->items["itgr"] as $ig) {
445 $item_groups[$ig["ref_id"]] = $ig;
446 }
447 }
448
449 foreach ($this->embedded_block["itgr"] as $ref_id) {
450 if (isset($item_groups[$ref_id])) {
451 $this->renderItemGroup($item_groups[$ref_id]);
452 }
453 }
454 }
455
456 // type specific blocks
457 if (isset($this->embedded_block["type"]) && is_array($this->embedded_block["type"])) {
458 foreach ($this->embedded_block["type"] as $type) {
459 if (isset($this->items[$type]) && is_array($this->items[$type]) && $this->renderer->addTypeBlock($type)) {
460 if ($this->hasForcedOrderByStartDate($type)) {
461 $this->items['sess'] = ilArrayUtil::sortArray($this->items['sess'], 'start', 'ASC', true, true);
462 }
463
464 $position = 1;
465
466 foreach ($this->items[$type] as $item_data) {
467 if (!$this->renderer->hasItem($item_data["child"])) {
468 $html = $this->renderItem($item_data, $position++);
469 if ($html != "") {
470 $this->renderer->addItemToBlock($type, $item_data["type"], $item_data["child"], $html);
471 }
472 }
473 }
474 }
475 }
476 }
477 }
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 149 of file class.ilContainerContentGUI.php.

149 : void
150 {
152 $ilCtrl = $this->ctrl;
153
154 // note: we do not want to get the center html in case of
155 // asynchronous calls to blocks in the right column (e.g. news)
156 // see #13012
157 if ($ilCtrl->getNextClass() === "ilcolumngui" &&
158 $ilCtrl->isAsynch()) {
160 }
161
162 // BEGIN ChangeEvent: record read event.
163 $ilUser = $this->user;
164
165 $obj_id = ilObject::_lookupObjId($this->getContainerObject()->getRefId());
167 $this->getContainerObject()->getType(),
168 $this->getContainerObject()->getRefId(),
169 $obj_id,
170 $ilUser->getId()
171 );
172 // END ChangeEvent: record read event.
173
174 $html = $this->getCenterColumnHTML();
175 if ($html !== '') {
176 $tpl->setContent($html);
177 }
178
179 // see above, all other cases (this was the old position of setRightContent,
180 // maybe the position above is ok and all ifs can be removed)
181 if ($ilCtrl->getNextClass() !== "ilcolumngui" ||
182 !$ilCtrl->isAsynch()) {
184 }
185 }
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, $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 66 of file class.ilContainerContentGUI.php.

◆ $block_repo

BlockSessionRepository ilContainerContentGUI::$block_repo
protected

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

◆ $clipboard

ClipboardManager ilContainerContentGUI::$clipboard
protected

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

◆ $container_gui

ilContainerGUI ilContainerContentGUI::$container_gui

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

Referenced by getContainerGUI().

◆ $container_obj

ilContainer ilContainerContentGUI::$container_obj

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

Referenced by getContainerObject().

◆ $container_user_filter

ilContainerUserFilter ilContainerContentGUI::$container_user_filter
protected

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

◆ $ctrl

◆ $db

ilDBInterface ilContainerContentGUI::$db
protected

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

Referenced by getCenterColumnHTML().

◆ $details_level

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

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

◆ $embedded_block

array ilContainerContentGUI::$embedded_block = []
protected

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

◆ $force_details

int ilContainerContentGUI::$force_details
protected

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

◆ $item_manager

ItemManager ilContainerContentGUI::$item_manager
protected

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

◆ $item_presentation

ILIAS Container Content ItemPresentationManager ilContainerContentGUI::$item_presentation
protected

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

Referenced by ilContainerObjectiveGUI\__construct().

◆ $items

array ilContainerContentGUI::$items = []
protected

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

◆ $list_gui

array ilContainerContentGUI::$list_gui = []
protected

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

◆ $lng

ilLanguage ilContainerContentGUI::$lng
protected

◆ $log

ilLogger ilContainerContentGUI::$log
protected

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

◆ $obj_definition

ilObjectDefinition ilContainerContentGUI::$obj_definition
protected

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

◆ $rbacsystem

ilRbacSystem ilContainerContentGUI::$rbacsystem
protected

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

◆ $renderer

ilContainerRenderer ilContainerContentGUI::$renderer
protected

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

◆ $request

StandardGUIRequest ilContainerContentGUI::$request
protected

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

◆ $settings

ilSetting ilContainerContentGUI::$settings
protected

◆ $tpl

◆ $type_grps

array ilContainerContentGUI::$type_grps = []
protected

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

◆ $user

ilObjUser ilContainerContentGUI::$user
protected

◆ $view_mode

int ilContainerContentGUI::$view_mode
protected

Definition at line 57 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 35 of file class.ilContainerContentGUI.php.

Referenced by ilContainerRenderer\getDetailsLevel().

◆ DETAILS_TITLE

const ilContainerContentGUI::DETAILS_TITLE = 1

◆ VIEW_MODE_LIST

◆ VIEW_MODE_TILE


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