19 declare(strict_types=1);
    67     protected static array 
$tags = [];
   195     public function __construct(
int $context = self::CONTEXT_REPOSITORY)
   200         $this->
access = $DIC[
'ilAccess'];
   201         $this->
user = $DIC[
'ilUser'];
   202         $this->object_dic = ilObjectDIC::dic();
   203         $this->obj_definition = $DIC[
'objDefinition'];
   204         $this->tree = $DIC[
'tree'];
   205         $this->
settings = $DIC[
'ilSetting'];
   206         $this->
http = $DIC->http();
   207         $this->
ui = $DIC->ui();
   208         $this->main_tpl = $DIC[
'tpl'];
   209         $this->rbacsystem = $DIC[
'rbacsystem'];
   210         $this->
ctrl = $DIC[
'ilCtrl'];
   211         $this->
lng = $DIC[
'lng'];
   212         $this->mode = self::IL_LIST_FULL;
   213         $this->path_enabled = 
false;
   215         $this->request_wrapper = $DIC->http()->wrapper()->query();
   230         $this->
lng->loadLanguageModule(
'obj');
   231         $this->
lng->loadLanguageModule(
'rep');
   232         $params = $DIC->http()->request()->getQueryParams();
   233         $this->requested_ref_id = (
int) (
$params[
'ref_id'] ?? null);
   234         $this->requested_cmd = (string) (
$params[
'cmd'] ?? null);
   235         $this->requested_base_class = (string) (
$params[
'baseClass'] ?? null);
   236         $this->clipboard = $DIC
   241         $this->notes_service = $DIC->notes();
   263         $this->static_link_enabled = 
true;
   264         $this->delete_enabled = 
true;
   265         $this->cut_enabled = 
true;
   266         $this->subscribe_enabled = 
true;
   267         $this->link_enabled = 
false;
   268         $this->copy_enabled = 
false;
   269         $this->progress_enabled = 
false;
   270         $this->notice_properties_enabled = 
true;
   271         $this->info_screen_enabled = 
false;
   273         $this->gui_class_name = 
'';                     
   281         $this->properties_enabled = $status;
   291         $this->preconditions_enabled = $status;
   301         $this->notice_properties_enabled = $status;
   311         $this->description_enabled = $status;
   321         $this->search_fragment_enabled = $status;
   331         $this->path_linked = $status;
   336         $this->relevance = $rel;
   346         $this->icons_enabled = $status;
   356         $this->checkboxes_enabled = $status;
   366         $this->expand_enabled = $status;
   376         $this->is_expanded = $status;
   389         $this->position_enabled = 
true;
   390         $this->position_field_index = $field_index;
   396         $this->delete_enabled = $status;
   406         $this->cut_enabled = $status;
   416         $this->copy_enabled = $status;
   426         $this->subscribe_enabled = $status;
   436         $this->link_enabled = $status;
   446         $this->path_enabled = 
$path;
   447         $this->path_start_node = $start_node;
   458         $this->commands_enabled = $status;
   459         $this->std_cmd_only = $std_only;
   469         $this->info_screen_enabled = $info_screen;
   479         $this->lp_cmd_enabled = $enabled;
   484         $this->lp_settings_cmd_enabled = $enabled;
   494         $this->sub_item_html[] = $html;
   499         $this->progress_enabled = $status;
   509         $this->substitutions_enabled = $status;
   523         $this->item_detail_links_enabled = $status;
   541         $this->item_detail_links = $detail_links;
   542         $this->item_detail_links_intro = $intro_txt;
   547         if (!count($this->item_detail_links)) {
   550         if (strlen($this->item_detail_links_intro)) {
   551             $this->tpl->setCurrentBlock(
'item_detail_intro');
   552             $this->tpl->setVariable(
'ITEM_DETAIL_INTRO_TXT', $this->item_detail_links_intro);
   553             $this->tpl->parseCurrentBlock();
   556         foreach ($this->item_detail_links as $info) {
   557             $this->tpl->setCurrentBlock(
'item_detail_link');
   558             $this->tpl->setVariable(
'ITEM_DETAIL_LINK_TARGET', $info[
'target']);
   559             $this->tpl->setVariable(
'ITEM_DETAIL_LINK_DESC', $info[
'desc']);
   560             $this->tpl->setVariable(
'ITEM_DETAIL_LINK_HREF', $info[
'link']);
   561             $this->tpl->setVariable(
'ITEM_DETAIL_LINK_NAME', $info[
'name']);
   562             $this->tpl->parseCurrentBlock();
   564         $this->tpl->setCurrentBlock(
'item_detail_links');
   565         $this->tpl->parseCurrentBlock();
   569         $this->title = $this->
refinery->encode()->htmlSpecialCharsAsEntities()->transform(
   584         $this->description = $this->
refinery->encode()->htmlSpecialCharsAsEntities()->transform(
   602         $this->search_fragment = 
$text;
   612         $this->separate_commands = $val;
   632         $this->additional_information = $val;
   647         $this->details_level = $level;
   660         $this->repository_transfer_enabled = $value;
   668         $this->restrict_to_goto = $value;
   688         $cache_prefix = null;
   689         if ($this->context == self::CONTEXT_WORKSPACE || $this->context == self::CONTEXT_WORKSPACE_SHARING) {
   690             $cache_prefix = 
'wsp';
   691             if (!isset($this->ws_access)) {
   696         if (isset($this->access_cache[$permission][
'-' . $cmd][$cache_prefix . $ref_id])) {
   697             return $this->access_cache[$permission][
'-' . $cmd][$cache_prefix . 
$ref_id];
   700         if ($this->context == self::CONTEXT_REPOSITORY || $this->context == self::CONTEXT_SEARCH) {
   701             $access = $this->
access->checkAccess($permission, $cmd, $ref_id, $type, (
int) $obj_id);
   702             if ($this->
access->getPreventCachingLastResult()) {
   703                 $this->prevent_access_caching = 
true;
   706             $access = $this->ws_access->
checkAccess($permission, $cmd, $ref_id, $type);
   709         $this->access_cache[$permission][
'-' . $cmd][$cache_prefix . 
$ref_id] = 
$access;
   721         string $description = 
''   723         $this->access_cache = [];
   726         $this->object_properties = $this->object_dic[
'object_properties_agregator']->getFor($obj_id);
   731         $this->adm_commands_included = 
false;
   732         $this->prevent_access_caching = 
false;
   735         if ($this->context == self::CONTEXT_REPOSITORY) {
   745         $this->condition_target = [
   748             'target_type' => $target_type
   754         $this->condition_target = [];
   759         $this->title_link_disabled = $status;
   764         $this->default_command_params = 
$params;
   774         if ($this->static_link_enabled and !$this->default_command_params) {
   776                 $command[
'link'] = $link;
   777                 $command[
'frame'] = 
'_top';
   780         if ($this->default_command_params) {
   782             foreach ($this->default_command_params as $name => $value) {
   783                 $params[] = $name . 
'=' . $value;
   787             if (!stristr($command[
'link'], 
'?')) {
   788                 $command[
'link'] .= 
'?' . 
$params;
   790                 $command[
'link'] .= 
'&' . 
$params;
   806         if ($this->context == self::CONTEXT_REPOSITORY || $this->context == self::CONTEXT_SEARCH) {
   814             $this->
ctrl->setParameterByClass(
'ilrepositorygui', 
'ref_id', $this->
getCommandId());
   815             $cmd_link = $this->
ctrl->getLinkTargetByClass(
'ilrepositorygui', $cmd);
   816             $this->
ctrl->setParameterByClass(
'ilrepositorygui', 
'ref_id', $this->requested_ref_id);
   820         $this->
ctrl->setParameterByClass($this->gui_class_name, 
'ref_id', 
'');
   821         $this->
ctrl->setParameterByClass($this->gui_class_name, 
'wsp_id', $this->ref_id);
   822         return $this->
ctrl->getLinkTargetByClass($this->gui_class_name, $cmd);
   867         if ($this->context == self::CONTEXT_REPOSITORY) {
   873                         'property' => $this->
lng->txt(
'status'),
   874                         'value' => $this->
lng->txt(
'offline')
   883                 $webdav_lock_backend = 
$webdav_dic->locksbackend();
   885                     if ($lock = $webdav_lock_backend->getLocksOnObjectId($this->obj_id)) {
   886                         $lock_user = 
new ilObjUser($lock->getIliasOwner());
   890                             'property' => $this->
lng->txt(
'in_use_by'),
   891                             'value' => $lock_user->getLogin(),
   893                                 './ilias.php?user=' .
   894                                 $lock_user->getId() .
   895                                 '&cmd=showUserProfile&cmdClass=ildashboardgui&baseClass=ilDashboardGUI'   907         string $property = 
'',
   910         bool $newline = 
false   912         $this->cust_prop[] = [
   913             'property' => $property,
   916             'newline' => $newline
   922         if (is_array($this->cust_prop)) {
   923             foreach ($this->cust_prop as $property) {
   934             if (isset($prop[
'alert']) && $prop[
'alert'] == 
true) {
   943         $this->notice_prop = [];
   944         if ($infos = $this->ldap_mapping->getInfoStrings($this->obj_id, 
true)) {
   945             foreach ($infos as $info) {
   946                 $this->notice_prop[] = [
'value' => $info];
   952     public function addCustomCommand(
string $link, 
string $lang_var, 
string $frame = 
'', 
string $onclick = 
''): void
   954         $this->cust_commands[] = [
   956             'lang_var' => $lang_var,
   958             'onclick' => $onclick
   964         ?
Modal $triggeredModal = null
   966         $this->cust_commands[] = $button;
   967         if ($triggeredModal !== null) {
   968             $this->cust_modals[] = $triggeredModal;
   974         $this->force_visible_only = $stat;
  1008         foreach ($this->commands as $command) {
  1009             $permission = $command[
'permission'];
  1010             $cmd = $command[
'cmd'];
  1011             $lang_var = $command[
'lang_var'] ?? 
'';
  1013             $info_object = null;
  1017             $access_granted = 
false;
  1019             if (isset($command[
'txt'])) {
  1020                 $txt = $command[
'txt'];
  1026                 (isset($command[
'enable_anonymous']) && $command[
'enable_anonymous'] == 
'false')
  1037                 $access_granted = 
true;
  1042                 $info_object = $this->
access->getInfo();
  1045             if (!isset($command[
'default'])) {
  1046                 $command[
'default'] = 
'';
  1049                 'permission' => $permission,
  1051                 'link' => $cmd_link,
  1052                 'frame' => $cmd_frame,
  1053                 'lang_var' => $lang_var,
  1055                 'granted' => $access_granted,
  1056                 'access_info' => $info_object,
  1057                 'img' => $cmd_image,
  1058                 'default' => $command[
'default']
  1062         return $ref_commands;
  1079         if ($this->restrict_to_goto) {
  1080             $this->default_command = [
  1087             !$this->default_command ||
  1089             $this->title_link_disabled
  1092             $this->tpl->setCurrentBlock(
'item_title');
  1093             $this->tpl->setVariable(
'TXT_TITLE', $this->
getTitle());
  1095             $this->default_command[
'link'] = $this->
modifyTitleLink($this->default_command[
'link']);
  1097             list($this->default_command[
'link'], $this->default_command[
'frame']) =
  1098                 $this->
modifySAHSlaunch($this->default_command[
'link'], $this->default_command[
'frame']);
  1100             if ($this->default_command[
'frame'] != 
'') {
  1101                 $this->tpl->setCurrentBlock(
'title_linked_frame');
  1102                 $this->tpl->setVariable(
'TARGET_TITLE_LINKED', $this->default_command[
'frame']);
  1103                 $this->tpl->parseCurrentBlock();
  1110             $this->tpl->setCurrentBlock(
'item_title_linked');
  1111             $this->tpl->setVariable(
'TXT_TITLE_LINKED', $this->
getTitle());
  1112             $this->tpl->setVariable(
'HREF_TITLE_LINKED', $this->default_command[
'link']);
  1115             if ($this->type === 
'file') {
  1117                 if ($preview->has()) {
  1118                     $this->tpl->setVariable(
'PREVIEW_GLYPH', $preview->getRenderedTriggerComponents());
  1119                     $this->tpl->parseCurrentBlock();
  1123         $this->tpl->parseCurrentBlock();
  1125         if ($this->bold_title == 
true) {
  1126             $this->tpl->touchBlock(
'bold_title_start');
  1127             $this->tpl->touchBlock(
'bold_title_end');
  1133         switch ($this->context) {
  1134             case self::CONTEXT_WORKSPACE_SHARING:
  1146         $fields_shown = 
false;
  1147         foreach ($this->substitutions->getParsedSubstitutions($this->ref_id, $this->obj_id) as 
$data) {
  1148             if (
$data[
'bold']) {
  1149                 $data[
'name'] = 
'<strong>' . 
$data[
'name'] . 
'</strong>';
  1150                 $data[
'value'] = 
'<strong>' . 
$data[
'value'] . 
'</strong>';
  1152             $this->tpl->touchBlock(
'std_prop');
  1153             $this->tpl->setCurrentBlock(
'item_property');
  1154             if (
$data[
'show_field']) {
  1155                 $this->tpl->setVariable(
'TXT_PROP', 
$data[
'name']);
  1157             $this->tpl->setVariable(
'VAL_PROP', 
$data[
'value']);
  1158             $this->tpl->parseCurrentBlock();
  1160             if (
$data[
'newline']) {
  1161                 $this->tpl->touchBlock(
'newline_prop');
  1163             $fields_shown = 
false;
  1171             if (!$this->substitutions->isDescriptionEnabled()) {
  1176         $this->tpl->setCurrentBlock(
'item_description');
  1178         $this->tpl->parseCurrentBlock();
  1187             $this->tpl->setCurrentBlock(
'search_fragment');
  1188             $this->tpl->setVariable(
'TXT_SEARCH_FRAGMENT', $this->
getSearchFragment() . 
' ...');
  1189             $this->tpl->parseCurrentBlock();
  1200         $this->mode = 
$mode;
  1218         $this->condition_depth = $depth;
  1238         if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
  1244                     'property' => $this->
lng->txt(
'learning_progress'),
  1253                 if (!$this->
access->checkAccess(
'read', 
'', $this->ref_id, $this->type, $this->obj_id)) {
  1256                         'value' => $this->
lng->txt(
'no_access_item_public'),
  1266         if ($this->reference_ref_id) {
  1270         $redraw_js = 
'il.Object.redrawListItem(' . $note_ref_id . 
');';
  1276                     isset(self::$cnt_notes[$note_obj_id][Note::PRIVATE]) &&
  1277                     self::$cnt_notes[$note_obj_id][Note::PRIVATE] > 0
  1279                     isset(self::$cnt_notes[$note_obj_id][Note::PUBLIC]) &&
  1280                     self::$cnt_notes[$note_obj_id][Note::PUBLIC] > 0
  1282                     isset(self::$cnt_tags[$note_obj_id]) && self::$cnt_tags[$note_obj_id] > 0
  1284                     isset(self::$tags[$note_obj_id]) && is_array(self::$tags[$note_obj_id])
  1289             $cnt_comments = self::$cnt_notes[$note_obj_id][Note::PUBLIC] ?? 0;
  1291                 && $cnt_comments > 0) {
  1294                     'property' => $this->
lng->txt(
'notes_comments'),
  1296                         '<a href="#" onclick="return ' .
  1298                         self::$cnt_notes[$note_obj_id][Note::PUBLIC] . 
'</a>',
  1304             $cnt_notes = self::$cnt_notes[$note_obj_id][Note::PRIVATE] ?? 0;
  1305             if ($this->notes_enabled && $cnt_notes > 0) {
  1308                     'property' => $this->
lng->txt(
'notes'),
  1310                         '<a href="#" onclick="return ' .
  1312                         self::$cnt_notes[$note_obj_id][Note::PRIVATE] . 
'</a>',
  1317             $cnt_tags = self::$cnt_tags[$note_obj_id] ?? 0;
  1318             if ($this->tags_enabled && ($cnt_tags > 0 || isset(self::$tags[$note_obj_id]))) {
  1320                 if ($tags_set->get(
'enable')) {
  1324                     if (isset(self::$tags[$note_obj_id])) {
  1326                         foreach (self::$tags[$note_obj_id] as $tag => $is_tag_owner) {
  1327                             if ($is_tag_owner) {
  1328                                 $tags_tmp[] = 
'<a class="ilTag ilTagRelHigh" href="#" onclick="return ' .
  1329                                     $tags_url . 
'">' . $tag . 
'</a>';
  1331                                 $tags_tmp[] = 
'<span class="ilTag ilTagRelMiddle">' . $tag . 
'</span>';
  1334                         $tags_value = implode(
' ', $tags_tmp);
  1339                         $tags_value = 
'<a href="#" onclick="return ' . $tags_url . 
'">' .
  1340                             self::$cnt_tags[$note_obj_id] . 
'</a>';
  1341                         $prop_text = $this->
lng->txt(
'tagging_tags');
  1345                         'property' => $prop_text,
  1346                         'value' => $tags_value,
  1353         if (!isset($props)) {
  1364         if (is_array($props) && count($props) > 0) {
  1365             foreach ($props as $prop) {
  1367                     $this->tpl->touchBlock(
'separator_prop');
  1370                 if (isset($prop[
'alert']) && $prop[
'alert'] == 
true) {
  1371                     $this->tpl->touchBlock(
'alert_prop');
  1373                     $this->tpl->touchBlock(
'std_prop');
  1376                 if (isset($prop[
'newline']) && $prop[
'newline'] == 
true && $cnt > 1) {
  1377                     $this->tpl->touchBlock(
'newline_prop');
  1382                     isset($prop[
'property']) &&
  1383                     (($prop[
'propertyNameVisible'] ?? null) !== 
false) &&
  1384                     $prop[
'property'] != 
''  1387                     $this->tpl->setCurrentBlock(
'prop_name');
  1388                     $this->tpl->setVariable(
'TXT_PROP', $prop[
'property']);
  1389                     $this->tpl->parseCurrentBlock();
  1392                 $this->tpl->setCurrentBlock(
'item_property');
  1394                 if (isset($prop[
'link']) && $prop[
'link']) {
  1395                     $this->tpl->setVariable(
'LINK_PROP', $prop[
'link']);
  1396                     $this->tpl->setVariable(
'LINK_VAL_PROP', $prop[
'value']);
  1398                     $this->tpl->setVariable(
'VAL_PROP', $prop[
'value']);
  1401                 $this->tpl->parseCurrentBlock();
  1405             $this->tpl->setCurrentBlock(
'item_properties');
  1406             $this->tpl->parseCurrentBlock();
  1413         foreach ($this->notice_prop as $property) {
  1414             $this->tpl->setCurrentBlock(
'notice_item');
  1415             $this->tpl->setVariable(
'NOTICE_ITEM_VALUE', $property[
'value']);
  1416             $this->tpl->parseCurrentBlock();
  1418         $this->tpl->setCurrentBlock(
'notice_property');
  1419         $this->tpl->parseCurrentBlock();
  1422     protected function parseConditions(
int $toggle_id, array $conditions, 
bool $obligatory = 
true): bool
  1425         $num_optional_required =
  1427             count($conditions) +
  1432         $visible_conditions = [];
  1433         $passed_optional = 0;
  1434         foreach ($conditions as $condition) {
  1435             if ($obligatory && !$condition[
'obligatory']) {
  1438             if (!$obligatory && $condition[
'obligatory']) {
  1442             if ($this->tree->isDeleted($condition[
'trigger_ref_id'])) {
  1449                 $visible_conditions[] = $condition[
'id'];
  1452             if (!$obligatory && $ok) {
  1455                 if ($passed_optional >= $num_optional_required) {
  1461         $missing_cond_exist = 
false;
  1462         foreach ($conditions as $condition) {
  1463             if (!in_array($condition[
'id'], $visible_conditions)) {
  1468             $cond_txt = $operator . 
' ' . $condition[
'value'];
  1471             $class = $this->obj_definition->getClassName($condition[
'trigger_type']);
  1472             $location = $this->obj_definition->getLocation($condition[
'trigger_type']);
  1476             $missing_cond_exist = 
true;
  1478             $full_class = 
'ilObj' . $class . 
'ListGUI';
  1479             $item_list_gui = 
new $full_class($this->context);
  1480             $item_list_gui->setMode(self::IL_LIST_AS_TRIGGER);
  1481             $item_list_gui->enablePath(
false);
  1482             $item_list_gui->enableIcon(
true);
  1483             $item_list_gui->setConditionDepth($this->condition_depth + 1);
  1484             $item_list_gui->setParentRefId($this->ref_id);
  1485             $item_list_gui->addCustomProperty($this->
lng->txt(
'precondition_required_itemlist'), $cond_txt, 
false, 
true);
  1486             $item_list_gui->enableCommands($this->commands_enabled, $this->std_cmd_only);
  1487             $item_list_gui->enableProperties($this->properties_enabled);
  1489             $trigger_html = $item_list_gui->getListItemHTML(
  1490                 $condition[
'trigger_ref_id'],
  1491                 $condition[
'trigger_obj_id'],
  1495             $this->tpl->setCurrentBlock(
'precondition');
  1496             if ($trigger_html == 
'') {
  1497                 $trigger_html = $this->
lng->txt(
'precondition_not_accessible');
  1499             $this->tpl->setVariable(
'TXT_CONDITION', trim($cond_txt));
  1500             $this->tpl->setVariable(
'TRIGGER_ITEM', $trigger_html);
  1501             $this->tpl->parseCurrentBlock();
  1504         if ($missing_cond_exist && $obligatory) {
  1505             $this->tpl->setCurrentBlock(
'preconditions');
  1506             $this->tpl->setVariable(
'CONDITION_TOGGLE_ID', 
'_obl_' . $toggle_id);
  1507             $this->tpl->setVariable(
'TXT_PRECONDITIONS', $this->
lng->txt(
'preconditions_obligatory_hint'));
  1508             $this->tpl->parseCurrentBlock();
  1509         } elseif ($missing_cond_exist && !$obligatory) {
  1510             $this->tpl->setCurrentBlock(
'preconditions');
  1511             $this->tpl->setVariable(
'CONDITION_TOGGLE_ID', 
'_opt_' . $toggle_id);
  1512             $this->tpl->setVariable(
  1513                 'TXT_PRECONDITIONS',
  1515                     $this->
lng->txt(
'preconditions_optional_hint'),
  1516                     $num_optional_required - $passed_optional
  1519             $this->tpl->parseCurrentBlock();
  1522         return !$missing_cond_exist;
  1531         if ($this->condition_depth > 0) {
  1535         if ($this->context == self::CONTEXT_WORKSPACE) {
  1539         if (isset($this->condition_target) && is_array($this->condition_target)
  1540             && count($this->condition_target) > 0) {
  1541             $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget(
  1542                 (
int) $this->condition_target[
'ref_id'],
  1543                 (
int) $this->condition_target[
'obj_id'],
  1544                 $this->condition_target[
'target_type'] ?? 
''  1547             $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($this->ref_id, $this->obj_id);
  1550         if (
sizeof($conditions)) {
  1551             for ($i = 0; $i < count($conditions); $i++) {
  1556             ++self::$js_unique_id;
  1558             $all_done_obl = $this->
parseConditions(self::$js_unique_id, $conditions);
  1559             $all_done_opt = $this->
parseConditions(self::$js_unique_id, $conditions, 
false);
  1561             if (!$all_done_obl || !$all_done_opt) {
  1562                 $this->tpl->setCurrentBlock(
'preconditions_toggle');
  1563                 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_INTRO', $this->
lng->txt(
'precondition_toggle'));
  1564                 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_TRIGGER', $this->
lng->txt(
'show'));
  1565                 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_ID', self::$js_unique_id);
  1566                 $this->tpl->setVariable(
'TXT_PRECONDITION_SHOW', $this->
lng->txt(
'show'));
  1567                 $this->tpl->setVariable(
'TXT_PRECONDITION_HIDE', $this->
lng->txt(
'hide'));
  1568                 $this->tpl->parseCurrentBlock();
  1582         string $onclick = 
''  1585         $checksum = md5($href . $text);
  1586         if ($href !== 
'#' && in_array($checksum, $this->prevent_duplicate_commands)) {
  1590         if ($href !== 
'#') {
  1591             $this->prevent_duplicate_commands[] = $checksum;
  1594         if ($cmd === 
'mount_webfolder') {
  1595             $onclick = 
"triggerWebDAVModal('$href')";
  1600         $action = $this->
ui->factory()
  1602             ->shy($text, $href);
  1604         if ($frame !== 
'') {
  1605             $action = $this->
ui->factory()->link()->standard($text, $href)->withOpenInNewViewport(
true);
  1608         if ($onclick !== 
'') {
  1609             $action = $action->withAdditionalOnLoadCode(
function (
$id) use ($onclick): 
string {
  1610                 return "$('#$id').click(function(){" . $onclick . 
';});';
  1616         $this->current_actions[] = $action;
  1621         if ($this->std_cmd_only) {
  1631                 $this->adm_commands_included = 
true;
  1637             $this->
ctrl->setParameter(
  1638                 $this->container_obj,
  1640                 $this->container_obj->getObject()->getRefId()
  1642             $this->
ctrl->setParameter($this->container_obj, 
'item_ref_id', $this->
getCommandId());
  1643             $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'delete');
  1645             $this->adm_commands_included = 
true;
  1653         if ($this->std_cmd_only) {
  1660             !$objDefinition->allowLink($this->type)
  1670             $this->adm_commands_included = 
true;
  1677         $this->
ctrl->setParameter(
  1678             $this->container_obj,
  1680             $this->container_obj->getObject()->getRefId()
  1682         $this->
ctrl->setParameter($this->container_obj, 
'item_ref_id', $this->
getCommandId());
  1683         $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'link');
  1685         $this->adm_commands_included = 
true;
  1690         if ($this->std_cmd_only) {
  1701                 $this->adm_commands_included = 
true;
  1709         if ($this->
checkCommandAccess(
'delete', 
'', $this->ref_id, $this->type) && $this->container_obj->getObject()) {
  1710             $this->
ctrl->setParameter(
  1711                 $this->container_obj,
  1713                 $this->container_obj->getObject()->getRefId()
  1715             $this->
ctrl->setParameter($this->container_obj, 
'item_ref_id', $this->
getCommandId());
  1717             if (!$to_repository) {
  1718                 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'cut');
  1721                 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'cut_for_repository');
  1722                 $this->
insertCommand($cmd_link, $this->
lng->txt(
'wsp_move_to_repository'));
  1725             $this->adm_commands_included = 
true;
  1731         if ($this->std_cmd_only) {
  1736             $this->obj_definition->allowCopy($this->type)) {
  1737             if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
  1738                 $this->
ctrl->setParameterByClass(
'ilobjectcopygui', 
'source_id', $this->
getCommandId());
  1739                 $cmd_copy = $this->
ctrl->getLinkTargetByClass([get_class($this->container_obj), 
'ilobjectcopygui'], 
'initTargetSelection');
  1742                 $this->
ctrl->setParameter(
  1743                     $this->container_obj,
  1745                     $this->container_obj->getObject()->getRefId()
  1747                 $this->
ctrl->setParameter($this->container_obj, 
'item_ref_id', $this->
getCommandId());
  1749                 if (!$to_repository) {
  1750                     $cmd_copy = $this->
ctrl->getLinkTarget($this->container_obj, 
'copy');
  1753                     $cmd_copy = $this->
ctrl->getLinkTarget($this->container_obj, 
'copy_to_repository');
  1754                     $this->
insertCommand($cmd_copy, $this->
lng->txt(
'wsp_copy_to_repository'));
  1758             $this->adm_commands_included = 
true;
  1764         if ($this->std_cmd_only) {
  1774             $this->clipboard->hasEntries()
  1779             $this->adm_commands_included = 
true;
  1785         if ($this->std_cmd_only
  1788             || $this->
settings->get(
'rep_favourites', 
'0') !== 
'1') {
  1796             is_object($this->container_obj) &&
  1798             method_exists($this->container_obj, 
'getObject') &&
  1799             is_object($this->container_obj->getObject())
  1801             $this->
ctrl->setParameter(
  1802                 $this->container_obj,
  1804                 $this->container_obj->getObject()->getRefId()
  1808             $this->
ctrl->setParameter($this->container_obj, 
'type', $type);
  1809             $this->
ctrl->setParameter($this->container_obj, 
'item_ref_id', $this->
getCommandId());
  1811             if (!$this->fav_manager->ifIsFavourite($this->user->getId(), $this->
getCommandId())) {
  1813                 if ($this->
checkCommandAccess(
'read', 
'', $this->ref_id, $this->type, $this->obj_id)) {
  1814                     $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'addToDesk');
  1818                 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj, 
'removeFromDesk');
  1819                 $this->
insertCommand($cmd_link, $this->
lng->txt(
'rep_remove_from_favourites'));
  1822             $this->
ctrl->clearParameters($this->container_obj);
  1828         if ($this->std_cmd_only) {
  1833             $this->
lng->txt(
'info_short'),
  1844         if ($this->std_cmd_only || $this->
user->isAnonymous()) {
  1848         $this->
lng->loadLanguageModule(
'notes');
  1849         $this->
lng->loadLanguageModule(
'tagging');
  1854         if ($this->reference_ref_id) {
  1858         $js_updater = $header_actions
  1859             ? 
'il.Object.redrawActionHeader();'  1860             : 
'il.Object.redrawListItem(' . $note_ref_id . 
')';
  1862         $comments_enabled = $this->
isCommentsActivated($this->type, $this->ref_id, $this->obj_id, $header_actions);
  1863         if ($comments_enabled) {
  1866                 $this->
lng->txt(
'notes_comments'),
  1874         if ($this->notes_enabled) {
  1877                 $this->
lng->txt(
'notes'),
  1885         if ($this->tags_enabled) {
  1888                 $this->
lng->txt(
'tagging_set_tag'),
  1906             $this->std_cmd_only || is_null($this->container_obj) ||
  1907             !method_exists($this->container_obj, 
'getObject') ||
  1908             !is_object($this->container_obj->getObject())
  1913         $parent_ref_id = $this->container_obj->getObject()->getRefId();
  1914         $parent_type = $this->container_obj->getObject()->getType();
  1917         if ($this->reference_ref_id) {
  1918             $this->
ctrl->setParameterByClass(
'ilconditionhandlergui', 
'ref_id', $this->reference_ref_id);
  1925             $this->
ctrl->setParameterByClass(
  1926                 get_class($this->container_obj),
  1930             $time_limit_link = $this->
ctrl->getLinkTargetByClass(
  1931                 get_class($this->container_obj),
  1932                 'editAvailabilityPeriod'  1934             $this->
insertCommand($time_limit_link, $this->
lng->txt(
'edit_availability_period'));
  1935             $this->
ctrl->clearParameterByClass(
  1936                 get_class($this->container_obj),
  1940             $this->
ctrl->setParameterByClass(
  1941                 'ilconditionhandlergui',
  1945             $this->
ctrl->setParameterByClass(
  1946                 'ilconditionhandlergui',
  1951             $availbility_link = $this->
ctrl->getLinkTargetByClass(
  1952                 [$this->gui_class_name, 
'ilcommonactiondispatchergui', 
'ilobjectactivationgui', 
'ilconditionhandlergui'],
  1959         if ($this->reference_ref_id) {
  1960             $this->
ctrl->setParameterByClass(
'ilconditionhandlergui', 
'ref_id', $this->ref_id);
  1972             foreach ($commands as $command) {
  1973                 if ($command[
'default'] === 
true) {
  1974                     $this->default_command = $command[
'granted'] === 
true ? $this->
createDefaultCommand($command) : [];
  1981         $this->
ctrl->setParameterByClass($this->gui_class_name, 
'ref_id', $this->ref_id);
  1983         $this->current_actions = [];
  1984         $this->default_command = [];
  1985         $this->prevent_duplicate_commands = [];
  1988         $valid_header_commands = [
'mount_webfolder'];
  1990         foreach ($commands as $command) {
  1991             if ($for_header && !in_array($command[
'cmd'], $valid_header_commands)
  1992                 || $command[
'granted'] === 
false) {
  1996             if ($command[
'default'] !== 
true) {
  1997                 if (!$this->std_cmd_only) {
  2002                     $cmd_link = $command[
'link'];
  2003                     $txt = ($command[
'lang_var'] == 
'')
  2005                         : $this->
lng->txt($command[
'lang_var']);
  2020         if (is_array($this->cust_commands)) {
  2021             foreach ($this->cust_commands as $command) {
  2022                 if ($command instanceof 
Button) {
  2023                     $this->current_actions[] = $command;
  2029                     $this->
lng->txt($command[
'lang_var']),
  2032                     $command[
'cmd'] ?? 
'',
  2046         if (!$this->
isMode(self::IL_LIST_AS_TRIGGER)) {
  2048             if ($this->timings_enabled) {
  2053             if ($this->delete_enabled) {
  2058             if ($this->link_enabled) {
  2063             if ($this->cut_enabled) {
  2068             if ($this->copy_enabled) {
  2073             if ($this->repository_transfer_enabled) {
  2079             if ($this->subscribe_enabled) {
  2084             if ($this->multi_download_enabled && $for_header) {
  2089             if ($this->cut_enabled or $this->link_enabled) {
  2096         if (!$this->
isMode(self::IL_LIST_AS_TRIGGER)) {
  2112             && $this->object_properties->getPropertyInfoTabVisibility()) {
  2118     public function enableComments(
bool $value, 
bool $enable_comments_settings = 
true): void
  2120         if ($this->
settings->get(
'disable_comments')) {
  2124         $this->comments_enabled = $value;
  2125         $this->comments_settings_enabled = $enable_comments_settings;
  2130         if ($this->
settings->get(
'disable_notes')) {
  2134         $this->notes_enabled = $value;
  2140         if (!$tags_set->get(
'enable')) {
  2143         $this->tags_enabled = $value;
  2148         string $text = null,
  2149         bool $categories = 
false,
  2150         array $ctrl_path = null,
  2151         bool $force_rate_parent = 
false  2153         $this->rating_enabled = $value;
  2155         if ($this->rating_enabled) {
  2156             $this->rating_categories_enabled = $categories;
  2157             $this->rating_text = 
$text;
  2158             $this->rating_ctrl_path = $ctrl_path;
  2171         if (!$folder_set->get(
'enable_multi_download')) {
  2174         $this->multi_download_enabled = $value;
  2179         if ($this->std_cmd_only) {
  2200             if ($hasAdminAccess) {
  2201                 $cmd = ($this->requested_cmd == 
'enableAdministrationPanel')
  2203                     : 
'enableAdministrationPanel';
  2205                 $cmd = ($this->requested_cmd == 
'enableMultiDownload')
  2207                     : 
'enableMultiDownload';
  2210             $this->
insertCommand($cmd_link, $this->
lng->txt(
'download_multiple_objects'));
  2217         if (!$this->
getContainerObject()->isActiveAdministrationPanel() || $this->clipboard->hasEntries()) {
  2219                 in_array($this->type, [
'file', 
'fold']) &&
  2220                 $this->
access->checkAccess(
'read', 
'', $ref_id, $this->type)
  2222                 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_ENABLED;
  2224                 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_DISABLED;
  2227             $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_NONE;
  2247         if (is_null($tpl)) {
  2252         $DIC->notes()->gui()->initJavascript($notes_url);
  2260             $tpl->addOnLoadCode(
'il.Object.setRedrawAHUrl("' . $redraw_url . 
'");');
  2266         $this->sub_obj_type = 
$type;
  2267         $this->sub_obj_id = (
int) $id;
  2273         string $tooltip = null,
  2274         string $onclick = null,
  2275         string $status_text = null,
  2278         $this->header_icons[
$id] = [
  2280             'tooltip' => $tooltip,
  2281             'onclick' => $onclick,
  2282             'status_text' => $status_text,
  2289         $this->header_icons[
$id] = $html;
  2294         $this->header_icons[
$id] = [
'glyph' => $glyph, 
'onclick' => $onclick];
  2299         $this->ajax_hash = $hash;
  2304         if ($main_tpl == null) {
  2308         $htpl = 
new ilTemplate(
'tpl.header_action.html', 
true, 
true, 
'components/ILIAS/ILIASObject');
  2310         $redraw_js = 
'il.Object.redrawActionHeader();';
  2313         if ($this->tags_enabled) {
  2319                 $this->
user->getId()
  2321             if (count($tags) > 0) {
  2322                 $this->
lng->loadLanguageModule(
'tagging');
  2324                 $f = $this->
ui->factory();
  2327                     $f->symbol()->glyph()->tag(
'#')
  2328                       ->withCounter(
$f->counter()->status(count($tags))),
  2335         $comments_enabled = $this->
isCommentsActivated($this->type, $this->ref_id, $this->obj_id, 
true, 
false);
  2336         if ($this->notes_enabled || $comments_enabled) {
  2337             $type = ($this->sub_obj_type == 
'') ? $this->type : $this->sub_obj_type;
  2338             $context = $this->notes_service->data()->context($this->obj_id, $this->sub_obj_id, $type);
  2339             $cnt[
$this->obj_id][Note::PUBLIC] = $this->notes_service->domain()->getNrOfCommentsForContext($context);
  2340             $cnt[
$this->obj_id][Note::PRIVATE] = $this->notes_service->domain()->getNrOfNotesForContext($context);
  2342                 $this->notes_enabled &&
  2343                 isset($cnt[$this->obj_id][Note::PRIVATE]) &&
  2344                 $cnt[$this->obj_id][Note::PRIVATE] > 0
  2346                 $f = $this->
ui->factory();
  2349                     $f->symbol()->glyph()->note(
'#')
  2350                       ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][Note::PRIVATE])),
  2356                 $comments_enabled &&
  2357                 isset($cnt[$this->obj_id][Note::PUBLIC]) &&
  2360                 $this->
lng->loadLanguageModule(
'notes');
  2361                 $f = $this->
ui->factory();
  2364                     $f->symbol()->glyph()->comment(
'#')
  2365                       ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][Note::PUBLIC])),
  2372         if ($this->rating_enabled) {
  2374             $rating_gui->enableCategories($this->rating_categories_enabled);
  2376             $rating_gui->setObject($this->obj_id, $this->type);
  2377             if ($this->rating_text) {
  2378                 $rating_gui->setYourRatingText($this->rating_text);
  2381             $ajax_hash = $this->force_rate_parent
  2384             $this->
ctrl->setParameterByClass(
'ilRatingGUI', 
'cadh', $ajax_hash);
  2385             $this->
ctrl->setParameterByClass(
'ilRatingGUI', 
'rnsb', 
true);
  2386             if ($this->rating_ctrl_path) {
  2387                 $rating_gui->setCtrlPath($this->rating_ctrl_path);
  2388                 $ajax_url = $this->
ctrl->getLinkTargetByClass($this->rating_ctrl_path, 
'saveRating', 
'', 
true);
  2390                 $ajax_url = $this->
ctrl->getLinkTargetByClass(
'ilRatingGUI', 
'saveRating', 
'', 
true);
  2392             $main_tpl->
addOnLoadCode(
'il.Object.setRatingUrl("' . $ajax_url . 
'");');
  2395                 $rating_gui->getHTML(
  2397                     $this->checkCommandAccess(
'read', 
'', $this->ref_id, $this->type),
  2398                     'il.Object.saveRating(%rating%);'  2403         if ($this->header_icons) {
  2405             foreach ($this->header_icons as 
$id => $attr) {
  2408                 if (is_array($attr)) {
  2409                     if (isset($attr[
'glyph']) && $attr[
'glyph']) {
  2410                         if ($attr[
'onclick']) {
  2411                             $htpl->setCurrentBlock(
'prop_glyph_oc');
  2412                             $htpl->setVariable(
'GLYPH_ONCLICK', $attr[
'onclick']);
  2413                             $htpl->parseCurrentBlock();
  2416                         $html = 
$renderer->render($attr[
'glyph']);
  2417                         $htpl->setCurrentBlock(
'prop_glyph');
  2418                         $htpl->setVariable(
'GLYPH', $html);
  2419                         $htpl->parseCurrentBlock();
  2421                         if ($attr[
'onclick']) {
  2422                             $htpl->setCurrentBlock(
'onclick');
  2423                             $htpl->setVariable(
'PROP_ONCLICK', $attr[
'onclick']);
  2424                             $htpl->parseCurrentBlock();
  2427                         if ($attr[
'status_text']) {
  2428                             $htpl->setCurrentBlock(
'status');
  2429                             $htpl->setVariable(
'PROP_TXT', $attr[
'status_text']);
  2430                             $htpl->parseCurrentBlock();
  2434                         $htpl->setCurrentBlock(
'prop');
  2435                         if ($attr[
'href'] || $attr[
'onclick']) {
  2436                             $htpl->setVariable(
'TAG', 
'a');
  2438                             $htpl->setVariable(
'TAG', 
'span');
  2440                         $htpl->setVariable(
'PROP_ID', 
$id);
  2441                         $htpl->setVariable(
'IMG_SRC', $attr[
'img']);
  2442                         if ($attr[
'href'] != 
'') {
  2443                             $htpl->setVariable(
'PROP_HREF', 
' href="' . $attr[
'href'] . 
'" ');
  2446                         if ($attr[
'tooltip']) {
  2447                             $htpl->setVariable(
'IMG_ADDITIONAL', 
"alt=\"{$attr['tooltip']}\" title=\"{$attr['tooltip']}\"");
  2449                         $htpl->parseCurrentBlock();
  2456             if (
sizeof($chunks)) {
  2459                     implode(
'   ', $chunks) . 
'   '  2465         $dropdown_label = 
'<span class="hidden-xs">' .
  2466                 $this->
lng->txt(
'actions') .
  2471             $this->
ui->renderer()->render($dropdown)
  2474         if ($this->cust_modals !== []) {
  2475             $htpl->setVariable(
'TRIGGERED_MODALS', $this->
ui->renderer()->render($this->cust_modals));
  2478         return $htpl->get();
  2489         $base_class = $this->request_wrapper->retrieve(
'baseClass', $this->
refinery->kindlyTo()->string());
  2491             (strtolower($base_class) != 
'ilrepositorygui') &&
  2492             is_int(strpos($link, 
'baseClass=ilRepositoryGUI'))
  2494             if ($this->type != 
'frm') {
  2504         if ($this->default_command_params) {
  2506             foreach ($this->default_command_params as $name => $value) {
  2507                 $params[] = $name . 
'=' . $value;
  2513             if (!stristr($default_link, 
'?')) {
  2514                 $default_link = ($default_link . 
'?' . 
$params);
  2516                 $default_link = ($default_link . 
'&' . 
$params);
  2519         return $default_link;
  2527         if (strstr($link, ilSAHSPresentationGUI::class) === 
false) {
  2528             return [$link, $target];
  2532         $om = $sahs_obj->getOpenMode();
  2533         $width = $sahs_obj->getWidth();
  2534         $height = $sahs_obj->getHeight();
  2535         if (($om == 5 || $om == 1) && $width > 0 && $height > 0) {
  2538         if ($om !== 0 && !$this->
http->agent()->isMobile()) {
  2539             $this->default_command[
'frame'] = 
'';
  2541                 'javascript:void(0); onclick=startSAHS(\'' .
  2554             $target = "ilContObj" . $this->ref_id;  2556         return [$link, $target];  2559     public function insertPath(): void  2561         if ($this->getPathStatus() != false) {  2562             if (!$this->path_gui instanceof \ilPathGUI) {  2563                 $path_gui = new \ilPathGUI();  2565                 $path_gui = $this->path_gui;  2568             $path_gui->enableTextOnly(!$this->path_linked);  2569             $path_gui->setUseImages(false);  2571             $start_node = ROOT_FOLDER_ID;  2572             if ($this->path_start_node) {  2573                 $start_node = $this->path_start_node;  2576             $this->tpl->setCurrentBlock('path_item
');  2577             $this->tpl->setVariable('PATH_ITEM
', $path_gui->getPath($start_node, $this->ref_id));  2578             $this->tpl->parseCurrentBlock();  2580             $this->tpl->setCurrentBlock('path
');  2581             $this->tpl->setVariable('TXT_LOCATION
', $this->lng->txt('locator'));  2582             $this->tpl->parseCurrentBlock();  2586     public function insertProgressInfo(): void  2590     public function insertIconsAndCheckboxes(): void  2593         if ($this->getCheckboxStatus()) {  2594             $this->tpl->setCurrentBlock('check');  2595             $this->tpl->setVariable('VAL_ID
', $this->getCommandId());  2596             $this->tpl->setVariable('CHECK_TITLE
', $this->lng->txt('select
') . ' ' . $this->getTitle());  2597             $this->tpl->parseCurrentBlock();  2599         } elseif ($this->getDownloadCheckboxState() != self::DOWNLOAD_CHECKBOX_NONE) {  2600             $this->tpl->setCurrentBlock('check_download
');  2601             $this->tpl->setVariable('CHECK_DOWNLOAD_TITLE
', $this->lng->txt('download
') . ' ' . $this->getTitle());  2602             if ($this->getDownloadCheckboxState() == self::DOWNLOAD_CHECKBOX_ENABLED) {  2603                 $this->tpl->setVariable('VAL_ID
', $this->getCommandId());  2605                 $this->tpl->setVariable('VAL_VISIBILITY
', 'visibility: hidden;
" disabled="disabled');  2607             $this->tpl->parseCurrentBlock();  2609         } elseif ($this->getExpandStatus()) {  2610             $this->tpl->setCurrentBlock('expand');  2612             if ($this->isExpanded()) {  2613                 $this->ctrl->setParameter($this->container_obj, 'expand', -1 * $this->obj_id);  2614                 // 'view
' added, see #19922  2615                 $this->tpl->setVariable('EXP_HREF
', $this->ctrl->getLinkTarget($this->container_obj, 'view
', $this->getUniqueItemId(true)));  2616                 $this->ctrl->clearParameters($this->container_obj);  2617                 $this->tpl->setVariable('EXP_IMG
', ilUtil::getImagePath('nav/tree_exp.svg
'));  2618                 $this->tpl->setVariable('EXP_ALT
', $this->lng->txt('collapse'));  2620                 $this->ctrl->setParameter($this->container_obj, 'expand', $this->obj_id);  2621                 // 'view
' added, see #19922  2622                 $this->tpl->setVariable('EXP_HREF
', $this->ctrl->getLinkTarget($this->container_obj, 'view
', $this->getUniqueItemId(true)));  2623                 $this->ctrl->clearParameters($this->container_obj);  2624                 $this->tpl->setVariable('EXP_IMG
', ilUtil::getImagePath('nav/tree_col.svg
'));  2625                 $this->tpl->setVariable('EXP_ALT
', $this->lng->txt('expand'));  2628             $this->tpl->parseCurrentBlock();  2632         if ($this->getIconStatus()) {  2634                 $this->tpl->touchBlock('i_1
');  2637             $this->tpl->setCurrentBlock('icon
');  2638             $this->tpl->setVariable('ALT_ICON
', $this->buildTranslatedType());  2640             $this->tpl->setVariable(  2642                 $this->getTypeIcon()  2644             $this->tpl->parseCurrentBlock();  2648         $this->tpl->touchBlock('d_
' . $cnt);  2654     public function getTypeIcon(): string  2656         return ilObject::getIconForReference(  2660             $this->getIconImageType()  2664     public function insertSubItems(): void  2666         foreach ($this->sub_item_html as $sub_html) {  2667             $this->tpl->setCurrentBlock('subitem
');  2668             $this->tpl->setVariable('SUBITEM
', $sub_html);  2669             $this->tpl->parseCurrentBlock();  2673     public function insertPositionField(): void  2675         if ($this->position_enabled) {  2676             $this->tpl->setCurrentBlock('position
');  2677             $this->tpl->setVariable('POS_ID
', $this->position_field_index);  2678             $this->tpl->setVariable('POS_VAL
', $this->position_value);  2679             $this->tpl->parseCurrentBlock();  2687     public function adminCommandsIncluded(): bool  2689         return $this->adm_commands_included;  2692     public function storeAccessCache(): void  2694         if ($this->acache->getLastAccessStatus() == 'miss
' && !$this->prevent_access_caching) {  2695             $this->acache->storeEntry(  2696                 $this->user->getId() . ':
' . $this->ref_id,  2697                 serialize($this->access_cache),  2706     public function getListItemHTML(  2712         // this variable stores whether any admin commands  2713         // are included in the output  2714         $this->adm_commands_included = false;  2716         // only for performance exploration  2717         $type = ilObject::_lookupType($obj_id);  2719         $this->initItem($ref_id, $obj_id, $type, $title, $description);  2721         if ($this->rating_enabled) {  2722             if (ilRating::hasRatingInListGUI($this->obj_id, $this->type)) {  2723                 $may_rate = $this->checkCommandAccess('read
', '', $this->ref_id, $this->type);  2724                 $rating = new ilRatingGUI();  2725                 $rating->setObject($this->obj_id, $this->type);  2726                 $this->addCustomProperty(  2728                     $rating->getListGUIProperty($this->ref_id, $may_rate, $this->ajax_hash, $this->parent_ref_id),  2736         $this->acache = new ilListItemAccessCache();  2737         $cres = $this->acache->getEntry($this->user->getId() . ':
' . $ref_id);  2738         if ($this->acache->getLastAccessStatus() == 'hit
') {  2739             $this->access_cache = unserialize($cres);  2742             $this->storeAccessCache();  2746         if (!$this->checkCommandAccess('visible
', '', $ref_id, '', $obj_id)) {  2747             $this->resetCustomData();  2752         if ($type == 'file
' and ilObjFileAccess::_isFileHidden($title)) {  2753             $this->resetCustomData();  2758         $this->tpl = new ilTemplate(  2759             static::$tpl_file_name,  2762             static::$tpl_component,  2768         if ($this->getCommandsStatus()) {  2769             if (!$this->getSeparateCommands()) {  2770                 $dropdown = $this->getCommandsDropdown($title);  2771                 $this->tpl->setVariable(  2772                     'COMMAND_SELECTION_LIST
',  2773                     $this->ctrl->isAsynch()  2774                         ? $this->ui->renderer()->renderAsync($dropdown)  2775                         : $this->ui->renderer()->render($dropdown)  2780         if ($this->getProgressInfoStatus()) {  2781             $this->insertProgressInfo();  2784         // insert title and describtion  2785         $this->insertTitle();  2786         if (!$this->isMode(self::IL_LIST_AS_TRIGGER)) {  2787             if ($this->getDescriptionStatus()) {  2788                 $this->insertDescription();  2792         if ($this->getSearchFragmentStatus()) {  2793             $this->insertSearchFragment();  2797         if ($this->getPropertiesStatus()) {  2798             $this->insertProperties();  2801         // notice properties  2802         if ($this->getNoticePropertiesStatus()) {  2803             $this->insertNoticeProperties();  2807         if ($this->getPreconditionsStatus()) {  2808             $this->insertPreconditions();  2812         $this->insertPath();  2814         if ($this->getItemDetailLinkStatus()) {  2815             $this->insertItemDetailLinks();  2818         // icons and checkboxes  2819         $this->insertIconsAndCheckboxes();  2821         // input field for position  2822         $this->insertPositionField();  2825         $this->insertSubItems();  2827         $this->resetCustomData();  2829         $this->tpl->setVariable('DIV_CLASS
', 'ilContainerListItemOuter
');  2830         $this->tpl->setVariable(  2832             'data-list-item-
id=
"' . $this->getUniqueItemId(true) . '" id = 
"' . $this->getUniqueItemId(true) . '"'  2834         $this->tpl->setVariable('ADDITIONAL
', $this->getAdditionalInformation());  2836         if (is_object($this->getContainerObject())) {  2837             // #11554 - make sure that internal ids are reset  2838             $this->ctrl->setParameter($this->getContainerObject(), 'item_ref_id
', '');  2841         // if file upload is enabled the content is wrapped by a UI dropzone.  2842         $content = $this->tpl->get();  2843         $file_upload_dropzone = new ilObjFileUploadDropzone($this->ref_id, $content);  2844         if ($this->context === self::CONTEXT_REPOSITORY  2845             && ($this->requested_cmd === "view" || $this->requested_cmd === "" || $this->requested_cmd === "render")  2846             && $file_upload_dropzone->isUploadAllowed($this->type)  2847              && !(new ModeSessionRepository())->isAdminMode()  2849             return $file_upload_dropzone->getDropzoneHtml();  2858     protected function resetCustomData(): void  2861         $this->cust_prop = [];  2862         $this->cust_commands = [];  2863         $this->cust_modals = [];  2864         $this->sub_item_html = [];  2865         $this->position_enabled = false;  2871     public function setParentRefId(int $ref_id): void  2873         $this->parent_ref_id = $ref_id;  2882     public function getUniqueItemId(bool $as_div = false): string  2884         // use correct id for references  2885         $id_ref = $this->ref_id;  2886         if ($this->reference_ref_id > 0) {  2887             $id_ref = $this->reference_ref_id;  2890         // add unique identifier for preconditions (objects can appear twice in same container)  2891         if ($this->condition_depth) {  2892             $id_ref .= '_pc
' . $this->condition_depth;  2896         $id_ref .= '_pref_
' . $this->parent_ref_id;  2901             // action menu [yellow] toggle  2902             return 'lg_div_
' . $id_ref;  2909     public function getCommandsHTML(string $title = ''): string  2911         return $this->ui->renderer()->render($this->getCommandsDropdown($title, false));  2914     private function getCommandsDropdown(string $title, bool $for_header = false): StandardDropdown  2916         $this->populateCommands($for_header);  2917         return $this->ui->factory()  2919             ->standard($this->current_actions)  2920             ->withAriaLabel(sprintf(  2921                 $this->lng->txt('actions_for
'),  2922                 htmlspecialchars(addslashes($title))  2929     public function isSideBlock(): bool  2934     public function setBoldTitle(bool $bold_title): void  2936         $this->bold_title = $bold_title;  2939     public function isTitleBold(): bool  2941         return $this->bold_title;  2944     public static function preloadCommonProperties(array $obj_ids, int $context): void  2947         $lng = $DIC->language();  2948         $ilSetting = $DIC->settings();  2949         $ilUser = $DIC->user();  2950         $notes_manager = $DIC->notes()->internal()->domain()->notes();  2952         if ($context == self::CONTEXT_REPOSITORY) {  2953             $active_notes = !$ilSetting->get('disable_notes
');  2954             $active_comments = !$ilSetting->get('disable_comments
');  2956             if ($active_comments) {  2957                 // needed for action  2958                 self::$comments_activation = $DIC->notes()  2961                     ->notes()->commentsActiveMultiple($obj_ids);  2964             // properties are optional  2965             if ($ilSetting->get('comments_tagging_in_lists
')) {  2966                 if ($active_notes || $active_comments) {  2967                     // @todo: should be refactored, see comment in notes db repo  2968                     self::$cnt_notes = $notes_manager->countNotesAndCommentsMultipleObjects(  2973                     $lng->loadLanguageModule('notes
');  2976                 $tags_set = new ilSetting('tags
');  2977                 if ($tags_set->get('enable
')) {  2978                     $all_users = (bool) $tags_set->get('enable_all_users
');  2980                     if (!$ilSetting->get('comments_tagging_in_lists_tags
')) {  2981                         self::$cnt_tags = ilTagging::_countTags($obj_ids, $all_users);  2983                         $tag_user_id = null;  2985                             $tag_user_id = $ilUser->getId();  2987                         self::$tags = ilTagging::_getListTagsForObjects($obj_ids, $tag_user_id);  2990                     $lng->loadLanguageModule('tagging
');  2994             $lng->loadLanguageModule('rating
');  2997         self::$preload_done = true;  3003     protected function isCommentsActivated(  3007         bool $header_actions,  3008         bool $check_write_access = true  3010         if ($this->comments_enabled) {  3011             if (!$this->comments_settings_enabled) {  3014             if ($check_write_access && $this->checkCommandAccess('write
', '', $ref_id, $type)) {  3017             // fallback to single object check if no preloaded data  3018             // only the repository does preloadCommonProperties() yet  3019             if (!$header_actions && self::$preload_done) {  3020                 if (isset(self::$comments_activation[$obj_id]) &&  3021                     self::$comments_activation[$obj_id]) {  3024             } elseif ($this->notes_service->domain()->commentsActive($obj_id)) {  3034     public function enableTimings(bool $status): void  3036         $this->timings_enabled = $status;  3042     public function getAsListItem(  3051         // even b tag produced bugs, see #32304  3052         $description = $this->refinery->encode()->htmlSpecialCharsAsEntities()->transform(  3064         $this->enableCommands(true);  3067         $this->populateCommands(false);  3069         $dropdown = $this->getCommandsDropdown($title);  3070         $def_command = $this->getDefaultCommand();  3072         if ($def_command['link'] ?? false) {  3073             list($def_command['link'], $def_command['frame
']) =  3074                 $this->modifySAHSlaunch($def_command['link'], $def_command['frame
']);  3075             $new_viewport = !in_array($def_command['frame
'], ['', '_top
', '_self
', '_parent
'], true);  3076             $link = $this->ui->factory()  3078                 ->standard($this->getTitle(), $def_command['link'])  3079                 ->withOpenInNewViewport($new_viewport);  3080             $list_item = $ui->factory()->item()->standard($link);  3082             $list_item = $ui->factory()->item()->standard($this->getTitle());  3085         if ($description != '') {  3086             $list_item = $list_item->withDescription($description);  3088         $list_item = $list_item->withActions($dropdown)->withLeadIcon(  3089             $this->ui->factory()->symbol()->icon()->custom(  3090                 $this->getTypeIcon(),  3091                 $this->buildTranslatedType(),  3098         $this->enableComments(true);  3099         $this->enableNotes(true);  3100         $this->enableTags(true);  3101         $this->enableRating(true);  3103         foreach ($this->determineProperties() as $p) {  3104             //if ($p['property'] !== $this->lng->txt('learning_progress
')) {  3105             $l[(string) $p['property']] = (string) $p['value
'];  3108         if (count($l) > 0) {  3109             $list_item = $list_item->withProperties($l);  3118     public function getAsCard(  3124     ): ?RepositoryObject {  3127         $title = $this->refinery->encode()->htmlSpecialCharsAsEntities()->transform($title);  3128         // even b tag produced bugs, see #32304  3129         $description = $this->refinery->encode()->htmlSpecialCharsAsEntities()->transform(  3141         $user = $this->user;  3142         $access = $this->access;  3144         $this->enableCommands(true);  3147         if ($description !== '') {  3148             $sections[] = $ui->factory()->legacy('<div 
class=
"il-multi-line-cap-3">
' . $description . '</div>
');  3151         $this->populateCommands(false);  3153         $def_command = $this->getDefaultCommand();  3155         $dropdown = $this->getCommandsDropdown($title);  3157         // workaround for #26205  3158         // we should get rid of _top links completely and gifure our how  3159         // to manage scorm links better  3160         $def_cmd_frame = ($def_command['frame
'] ?? '');  3161         if ($def_cmd_frame === '_top
') {  3162             $def_cmd_frame = '';  3164         $def_cmd_link = ($def_command['link'] ?? '');  3166         // workaround for scorm  3167         list($modified_link, $def_cmd_frame) =  3168             $this->modifySAHSlaunch($def_cmd_link, $def_cmd_frame);  3170         $image = $this->getTileImage();  3172         if ($def_cmd_link != '') {    // #24256  3173             if ($def_cmd_frame !== '' && ($modified_link === $def_cmd_link)) {  3174                 $signal = (new SignalGenerator())->create();  3175                 $this->main_tpl->addOnLoadCode(  3176                     "$(document).on('{$signal->getId()}
', function(event, signalData) {"  3177                         . ' window.open(
"' . str_replace(  3181                         ) . '", 
"' . $def_cmd_frame . '");
'  3185                 $image = $image->withAction($signal);  3188                     $ui->factory()->button()->shy($title, '')->appendOnClick($signal);  3189                 $title = $ui->renderer()->render($button);  3191                 $image = $image->withAction($modified_link);  3195         if ($type == 'sess
') {  3197                 $title = ': 
' . $title;  3199             $app_info = ilSessionAppointment::_lookupAppointment($obj_id);  3200             $title = ilSessionAppointment::_appointmentToString(  3203                 (bool) $app_info['fullday
']  3207         $icon = $this->ui->factory()->symbol()->icon()->custom(  3208             $this->getTypeIcon(),  3209             $this->buildTranslatedType(),  3213         // card title action  3214         $card_title_action = '';  3215         if ($def_cmd_link != '' && ($def_cmd_frame == '' || $modified_link != $def_cmd_link)) {    // #24256  3216             $card_title_action = $modified_link;  3217         } elseif ($def_cmd_link == '' &&  3218             $this->getInfoScreenStatus() &&  3219             $access->checkAccessOfUser(  3225             $card_title_action = ilLink::_getLink($ref_id);  3226             if ($image->getAction() == '') {  3227                 $image = $image->withAction($card_title_action);  3231         $card = $ui->factory()->card()->repositoryObject(  3232             $title . '<span data-list-item-
id=
"' . $this->getUniqueItemId(true) . '"></span>
',  3240         if ($card_title_action != '') {  3241             $card = $card->withTitleAction($card_title_action);  3245         foreach ($this->determineProperties() as $p) {  3246             if (isset($p['alert
']) && $p['alert
'] == true  3247                 && isset($p['property']) && $p['property'] !== $this->lng->txt('learning_progress
')) {  3248                 $l[(string) $p['property']] = (string) $p['value
'];  3251         if (count($l) > 0) {  3252             $prop_list = $ui->factory()->listing()->descriptive($l);  3253             $sections[] = $prop_list;  3255         if (count($sections) > 0) {  3256             $card = $card->withSections($sections);  3259         $lp = ilLPStatus::getListGUIStatus($obj_id, false);  3260         if (is_array($lp) && array_key_exists('status
', $lp)) {  3261             $percentage = (int) ilLPStatus::_lookupPercentage($obj_id, $this->user->getId());  3262             if ($lp['status
'] == ilLPStatus::LP_STATUS_COMPLETED_NUM) {  3266             $card = $card->withProgress(  3270                    ->mini(100, $percentage)  3277     public function checkInfoPageOnAsynchronousRendering(): bool  3282     private function getTileImage(): Image  3284         return $this->object_properties->getPropertyTileImage()  3285             ->getTileImage()->getImage($this->ui->factory()->image());  3291     public function insertLPCommand(): void  3293         if ($this->std_cmd_only || !$this->lp_cmd_enabled) {  3296         $relevant = ilLPStatus::hasListGUIStatus($this->obj_id);  3298             $cmd_link = $this->getCommandLink('learningProgress
');  3299             $this->insertCommand(  3301                 $this->lng->txt('learning_progress
')  3309     private function insertLPSettingsCommand(): void  3311         if (!$this->lp_settings_cmd_enabled  3312             || !ilObjUserTracking::_enabledLearningProgress()  3313             || ilObjectLP::getTypeClass($this->type) === ''  3314             || ! $this->checkCommandAccess('edit_learning_progress
', '', $this->ref_id, $this->type)  3320         $this->ctrl->setParameterByClass(ilLearningProgressGUI::class, 'ref_id
', $this->ref_id);  3321         switch ($this->type) {  3323                 switch (ilObjSAHSLearningModule::_lookupSubType($this->obj_id)) {  3325                         $scorm_class = ilObjSCORM2004LearningModuleGUI::class;  3328                         $scorm_class = ilObjSCORMLearningModuleGUI::class;  3335                 $cmd_link = $this->ctrl->getLinkTargetByClass([  3336                     ilSAHSEditGUI::class,  3338                     ilLearningProgressGUI::class,  3339                     ilLPListOfSettingsGUI::class  3344                 $cmd_link = $this->ctrl->getLinkTargetByClass([  3345                     ilLMEditorGUI::class,  3346                     ilObjLearningModuleGUI::class,  3347                     ilLearningProgressGUI::class,  3348                     ilLPListOfSettingsGUI::class  3353                 $cmd_link = $this->ctrl->getLinkTargetByClass([  3354                     ilObjLearningSequenceGUI::class,  3355                     ilLearningProgressGUI::class,  3356                     ilLPListOfSettingsGUI::class  3369                 $gui_class = 'ilObj
' . $this->obj_definition->getClassName($this->type) . 'GUI
';  3370                 $cmd_link = $this->ctrl->getLinkTargetByClass([  3371                         ilRepositoryGUI::class,  3373                         ilLearningProgressGUI::class,  3374                         ilLPListOfSettingsGUI::class  3386         $this->ctrl->setParameterByClass('ilrepositorygui
', 'ref_id
', $this->requested_ref_id);  3387         if ($cmd_link !== '') {  3388             $this->insertCommand(  3390                 $this->lng->txt('listaction_learning_progress_settings
')  3395     private function buildTranslatedType(): string  3397         if ($this->obj_definition->isPlugin($this->getIconImageType())) {  3398             return ilObjectPlugin::lookupTxtById($this->getIconImageType(), 'obj_
' . $this->getIconImageType());  3401         return $this->lng->txt('obj_
' . $this->getIconImageType()); getCommands()
get all current commands for a specific ref id (in the permission context of the current user) ...
 
This describes commonalities between the different modals. 
 
static removeSubObjFromAjaxHash(string $hash)
 
const CONTEXT_WORKSPACE_SHARING
 
setHeaderSubObject(?string $type, ?int $id)
 
parseConditions(int $toggle_id, array $conditions, bool $obligatory=true)
 
insertSearchFragment()
Insert highlighted search fragment. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
setConditionTarget(int $ref_id, int $obj_id, string $target_type)
 
getDescription()
getDescription overwritten in class.ilObjLinkResourceList.php 
 
static appendUrlParameterString(string $a_url, string $a_par, bool $xml_style=false)
 
static string $tpl_component
 
insertMultiDownloadCommand()
 
ilListItemAccessCache $acache
 
modifySAHSlaunch(string $link, string $target)
workaround: SAHS in new javavasript-created window or iframe 
 
bool $multi_download_enabled
 
static maybeRenderWebDAVModalInGlobalTpl()
 
ilObjectProperties $object_properties
 
string $requested_base_class
 
setParentRefId(int $ref_id)
Set current parent ref id to enable unique js-ids (sessions, etc.) 
 
setMode(string $mode)
set output mode 
 
enableCommands(bool $status, bool $std_only=false)
 
setAdditionalInformation(?string $val)
 
setContainerObject(object $container_obj)
 
bool $notice_properties_enabled
 
setSearchFragment(string $text)
 
initItem(int $ref_id, int $obj_id, string $type, string $title='', string $description='')
initialize new item (is called by getItemHTML()) 
 
$location
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
bool $static_link_enabled
 
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
 
static getListTagsJSCall(string $a_hash, string $a_update_code=null)
 
const DOWNLOAD_CHECKBOX_NONE
 
addHeaderIcon(string $id, string $img, string $tooltip=null, string $onclick=null, string $status_text=null, string $href=null)
 
insertPreconditions()
insert all missing preconditions 
 
Interface Observer  Contains several chained tasks and infos about them. 
 
setDescription(string $description)
 
static prepareJsLinks(string $redraw_url, string $notes_url, string $tags_url, ilGlobalTemplateInterface $tpl=null)
Insert js/ajax links into template. 
 
checkAccess(string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=null, ?int $a_tree_id=null)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
 
static translateOperator(int $a_obj_id, string $a_operator, string $value='')
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
checkCommandAccess(string $permission, string $cmd, int $ref_id, string $type, ?int $obj_id=null)
 
getCommandFrame(string $cmd)
Get command target frame. 
 
static getGotoLink(int $a_node_id, int $a_obj_id, string $a_additional="")
 
appendRepositoryFrameParameter(string $link)
workaround: all links into the repository (from outside) must tell repository to set up the frameset ...
 
bool $search_fragment_enabled
 
getAdditionalInformation()
 
enableExpand(bool $status)
 
enableDelete(bool $status)
 
insertCopyCommand(bool $to_repository=false)
 
const DOWNLOAD_CHECKBOX_ENABLED
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
bool $preconditions_enabled
 
getItemDetailLinkStatus()
get item detail link status 
 
setPositionInputField(string $field_index, string $position_value)
 
enableMultiDownload(bool $value)
Toggles whether multiple objects can be downloaded at once or not. 
 
small()
 description: > This can be used, when space is very scarce and the label cannot be displayed ...
 
setDetailsLevel(int $level)
Details level Currently used in Search which shows only limited properties of forums Currently used f...
 
commandsNeedToBeHidden(bool $for_header)
Fix bug #12417: We hide the action menu when we are in the public area. 
 
ILIAS Notes Service $notes_service
 
ilFavouritesManager $fav_manager
 
enableSubscribe(bool $status)
 
bool $search_fragments_enabled
 
ilWorkspaceAccessHandler $ws_access
 
getCommandsDropdown(string $title, bool $for_header=false)
 
addCustomCommandButton(Button $button, ?Modal $triggeredModal=null)
 
enableLinkedPath(bool $status)
 
ilGlobalTemplateInterface $main_tpl
 
bool $lp_settings_cmd_enabled
 
Manages favourites, currently the interface for other components, needs discussion. 
 
int $download_checkbox_state
 
array $prevent_duplicate_commands
 
bool $adm_commands_included
 
bool $item_detail_links_enabled
 
enableInfoScreen(bool $info_screen)
 
static _lookupObjId(int $ref_id)
 
static lookupOfflineStatus(int $obj_id)
Lookup offline status using objectDataCache. 
 
static string $tpl_file_name
 
enableRating(bool $value, string $text=null, bool $categories=false, array $ctrl_path=null, bool $force_rate_parent=false)
 
enablePreconditions(bool $status)
 
enableSearchFragments(bool $status)
 
enableProperties(bool $status)
 
static _getInstance()
Get singleton instance of this class. 
 
collapse()
 description: > Example for rendering a collapse glyph. 
 
enableNoticeProperties(bool $status)
 
Provides fluid interface to RBAC services. 
 
getHeaderAction(ilGlobalTemplateInterface $main_tpl=null)
 
static http()
Fetches the global http state from ILIAS. 
 
static _getCommands()
get commands 
 
getProperties()
Get item properties. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
createDefaultCommand(array $command)
Get default command link Overwritten for e.g categories,courses => they return a goto link If search ...
 
enablePath(bool $path, int $start_node=0, \ilPathGUI $path_gui=null)
 
static _checkCondition(array $condition, int $a_usr_id=0)
checks wether a single condition is fulfilled every trigger object type must implement a static metho...
 
enableComments(bool $value, bool $enable_comments_settings=true)
 
static _lookupTitle(int $obj_id)
 
getCommandId()
get command id Normally the ref id. 
 
const CONTEXT_PERSONAL_DESKTOP
 
restrictToGoto(bool $value)
Restrict all actions/links to goto. 
 
setExpanded(bool $status)
 
string $item_detail_links_intro
 
static calculateEffectiveRequiredTriggers(int $a_target_ref_id, int $a_target_obj_id, string $a_target_obj_type='')
 
enableLPSettingsCommand(bool $enabled)
 
getDownloadCheckboxState()
 
static _getStaticLink(?int $a_ref_id, string $a_type='', bool $a_fallback_goto=true, string $append="")
 
setDefaultCommandParameters(array $params)
 
getCommandImage(string $cmd)
Get command icon image. 
 
enableProgressInfo(bool $status)
 
insertInfoScreenCommand()
 
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory) 
 
array $default_command_params
 
bool $substitutions_enabled
 
Manages items in repository clipboard. 
 
getSearchFragmentStatus()
 
isMode(string $mode)
check current output mode 
 
setConditionDepth(int $depth)
set depth for precondition output (stops at level 5) 
 
getIconImageType()
Returns the icon image type. 
 
disableTitleLink(bool $status)
 
addOnLoadCode(string $a_code, int $a_batch=2)
Add on load code. 
 
addSubItemHTML(string $html)
Add HTML for sub item (used for sessions) 
 
bool $repository_transfer_enabled
 
isCommentsActivated(string $type, int $ref_id, int $obj_id, bool $header_actions, bool $check_write_access=true)
Check comments status against comments settings and context. 
 
addCustomCommand(string $link, string $lang_var, string $frame='', string $onclick='')
 
static getListGUIStatus(int $a_obj_id, bool $a_image_only=true)
 
insertLPSettingsCommand()
 
enableLearningProgress(bool $enabled)
 
populateCommands(bool $for_header)
insert all commands into html code 
 
getCustomProperties(array $prop)
 
insertLPCommand()
insert learning progress command 
 
static getTagsForUserAndObject(int $a_obj_id, string $a_obj_type, int $a_sub_obj_id, string $a_sub_obj_type, int $a_user_id)
 
bool $comments_settings_enabled
 
ILIAS Refinery Factory $refinery
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
checkInfoPageOnAsynchronousRendering()
 
insertCutCommand(bool $to_repository=false)
 
static initJavascript(string $a_ajax_url, ilGlobalTemplateInterface $a_main_tpl=null)
 
getTitle()
getTitle overwritten in class.ilObjLinkResourceList.php 
 
static bool $preload_done
 
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. 
 
addHeaderGlyph(string $id, ILIAS\UI\Component\Symbol\Glyph\Glyph $glyph, $onclick=null)
 
bool $description_enabled
 
static getListNotesJSCall(string $a_hash, string $a_update_code=null)
Get list notes js call. 
 
ilAdvancedMDSubstitution $substitutions
 
expand()
 description: > Example for rendering an expand glyph. 
 
enableSubstitutions(bool $status)
 
getNoticePropertiesStatus()
 
bool $prevent_access_caching
 
insertTimingsCommand()
ks, 23 OCT 2023: This function is badly named and it already was before the changes made today...
 
string $position_field_index
 
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins 
 
string $additional_information
 
__construct(Container $dic, ilPlugin $plugin)
 
setSeparateCommands(bool $val)
 
bool $info_screen_enabled
 
bool $title_link_disabled
 
link(string $caption, string $href, bool $new_viewport=false)
 
enableCheckbox(bool $status)
 
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder...
 
setItemDetailLinks(array $detail_links, string $intro_txt='')
set items detail links 
 
getCommandLink(string $cmd)
Get command link url. 
 
bool $rating_categories_enabled
 
catch(InvalidArgumentException) if(!ilDAVActivationChecker::_isActive()) $webdav_dic
 
ILIAS HTTP Wrapper RequestWrapper $request_wrapper
 
static getEffectiveOptionalConditionsOfTarget(int $a_target_ref_id, int $a_target_obj_id, string $a_obj_type='')
 
ClipboardManager $clipboard
 
ilObjectDefinition $obj_definition
 
insertCommand(string $href, string $text, string $frame='', string $img='', string $cmd='', string $onclick='')
insert command button 
 
enableItemDetailLinks(bool $status)
enable item detail links E.g Direct links to chapters or pages 
 
getUriToMountInstructionModalByRef(int $a_ref_id)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
static getListCommentsJSCall(string $a_hash, string $a_update_code=null)
Get list comments js call. 
 
insertCommonSocialCommands(bool $header_actions=false)
Insert common social commands (comments, notes, tagging) 
 
static _lookupType(int $id, bool $reference=false)
 
enableDescription(bool $status)
 
static array $comments_activation
 
addHeaderIconHTML(string $id, string $html)
 
forceVisibleOnly(bool $stat)
 
enableDownloadCheckbox(int $ref_id)
 
setAjaxHash(string $hash)
 
enableRepositoryTransfer(bool $value)
Enable copy/move to repository (from personal workspace) 
 
ilLDAPRoleGroupMapping $ldap_mapping
 
Class ilObjSCORMLearningModule. 
 
const DOWNLOAD_CHECKBOX_DISABLED
 
modifyTitleLink(string $default_link)
 
addCustomProperty(string $property='', string $value='', bool $alert=false, bool $newline=false)
 
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)