19 declare(strict_types=1);
66 protected static array
$tags = [];
194 public function __construct(
int $context = self::CONTEXT_REPOSITORY)
199 $this->
access = $DIC[
'ilAccess'];
200 $this->
user = $DIC[
'ilUser'];
201 $this->object_dic = ilObjectDIC::dic();
202 $this->obj_definition = $DIC[
'objDefinition'];
203 $this->tree = $DIC[
'tree'];
204 $this->
settings = $DIC[
'ilSetting'];
205 $this->
http = $DIC->http();
206 $this->
ui = $DIC->ui();
207 $this->main_tpl = $DIC[
'tpl'];
208 $this->rbacsystem = $DIC[
'rbacsystem'];
209 $this->
ctrl = $DIC[
'ilCtrl'];
210 $this->
lng = $DIC[
'lng'];
211 $this->mode = self::IL_LIST_FULL;
212 $this->path_enabled =
false;
214 $this->request_wrapper = $DIC->http()->wrapper()->query();
229 $this->
lng->loadLanguageModule(
'obj');
230 $this->
lng->loadLanguageModule(
'rep');
231 $params = $DIC->http()->request()->getQueryParams();
232 $this->requested_ref_id = (
int) (
$params[
'ref_id'] ?? null);
233 $this->requested_cmd = (string) (
$params[
'cmd'] ?? null);
234 $this->requested_base_class = (string) (
$params[
'baseClass'] ?? null);
235 $this->clipboard = $DIC
240 $this->notes_service = $DIC->notes();
262 $this->static_link_enabled =
true;
263 $this->delete_enabled =
true;
264 $this->cut_enabled =
true;
265 $this->subscribe_enabled =
true;
266 $this->link_enabled =
false;
267 $this->copy_enabled =
false;
268 $this->progress_enabled =
false;
269 $this->notice_properties_enabled =
true;
270 $this->info_screen_enabled =
false;
272 $this->gui_class_name =
'';
280 $this->properties_enabled = $status;
290 $this->preconditions_enabled = $status;
300 $this->notice_properties_enabled = $status;
310 $this->description_enabled = $status;
320 $this->search_fragment_enabled = $status;
330 $this->path_linked = $status;
335 $this->enabled_relevance = $status;
345 $this->relevance = $rel;
355 $this->icons_enabled = $status;
365 $this->checkboxes_enabled = $status;
375 $this->expand_enabled = $status;
385 $this->is_expanded = $status;
398 $this->position_enabled =
true;
399 $this->position_field_index = $field_index;
405 $this->delete_enabled = $status;
415 $this->cut_enabled = $status;
425 $this->copy_enabled = $status;
435 $this->subscribe_enabled = $status;
445 $this->link_enabled = $status;
455 $this->path_enabled =
$path;
456 $this->path_start_node = $start_node;
467 $this->commands_enabled = $status;
468 $this->std_cmd_only = $std_only;
478 $this->info_screen_enabled = $info_screen;
498 $this->sub_item_html[] = $html;
503 $this->progress_enabled = $status;
513 $this->substitutions_enabled = $status;
527 $this->item_detail_links_enabled = $status;
545 $this->item_detail_links = $detail_links;
546 $this->item_detail_links_intro = $intro_txt;
551 if (!count($this->item_detail_links)) {
554 if (strlen($this->item_detail_links_intro)) {
555 $this->tpl->setCurrentBlock(
'item_detail_intro');
556 $this->tpl->setVariable(
'ITEM_DETAIL_INTRO_TXT', $this->item_detail_links_intro);
557 $this->tpl->parseCurrentBlock();
560 foreach ($this->item_detail_links as $info) {
561 $this->tpl->setCurrentBlock(
'item_detail_link');
562 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_TARGET', $info[
'target']);
563 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_DESC', $info[
'desc']);
564 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_HREF', $info[
'link']);
565 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_NAME', $info[
'name']);
566 $this->tpl->parseCurrentBlock();
568 $this->tpl->setCurrentBlock(
'item_detail_links');
569 $this->tpl->parseCurrentBlock();
573 $this->title = strip_tags(
589 $this->description = strip_tags(
608 $this->search_fragment = $text;
618 $this->separate_commands = $val;
638 $this->additional_information = $val;
653 $this->details_level = $level;
666 $this->repository_transfer_enabled = $value;
674 $this->restrict_to_goto = $value;
694 $cache_prefix = null;
695 if ($this->context == self::CONTEXT_WORKSPACE || $this->context == self::CONTEXT_WORKSPACE_SHARING) {
696 $cache_prefix =
'wsp';
697 if (!isset($this->ws_access)) {
702 if (isset($this->access_cache[$permission][
'-' . $cmd][$cache_prefix . $ref_id])) {
703 return $this->access_cache[$permission][
'-' . $cmd][$cache_prefix .
$ref_id];
706 if ($this->context == self::CONTEXT_REPOSITORY || $this->context == self::CONTEXT_SEARCH) {
707 $access = $this->
access->checkAccess($permission, $cmd, $ref_id, $type, (
int) $obj_id);
708 if ($this->
access->getPreventCachingLastResult()) {
709 $this->prevent_access_caching =
true;
712 $access = $this->ws_access->
checkAccess($permission, $cmd, $ref_id, $type);
715 $this->access_cache[$permission][
'-' . $cmd][$cache_prefix .
$ref_id] =
$access;
727 string $description =
'' 729 $this->access_cache = [];
732 $this->object_properties = $this->object_dic[
'object_properties_agregator']->getFor($obj_id);
737 $this->current_selection_list->setAriaListTitle(
739 $this->
lng->txt(
'actions_for'),
740 htmlspecialchars(addslashes($this->
getTitle()))
745 $this->adm_commands_included =
false;
746 $this->prevent_access_caching =
false;
749 if ($this->context == self::CONTEXT_REPOSITORY) {
759 $this->condition_target = [
762 'target_type' => $target_type
768 $this->condition_target = [];
773 $this->title_link_disabled = $status;
778 $this->default_command_params =
$params;
788 if ($this->static_link_enabled && !$this->default_command_params) {
790 $command[
'link'] = $link;
791 $command[
'frame'] =
'_top';
794 if ($this->default_command_params) {
796 foreach ($this->default_command_params as $name => $value) {
797 $params[] = $name .
'=' . $value;
801 if (!stristr($command[
'link'],
'?')) {
802 $command[
'link'] .=
'?' .
$params;
804 $command[
'link'] .=
'&' .
$params;
820 if ($this->context == self::CONTEXT_REPOSITORY || $this->context == self::CONTEXT_SEARCH) {
828 $this->
ctrl->setParameterByClass(
'ilrepositorygui',
'ref_id', $this->
getCommandId());
829 $cmd_link = $this->
ctrl->getLinkTargetByClass(
'ilrepositorygui', $cmd);
830 $this->
ctrl->setParameterByClass(
'ilrepositorygui',
'ref_id', $this->requested_ref_id);
834 $this->
ctrl->setParameterByClass($this->gui_class_name,
'ref_id',
'');
835 $this->
ctrl->setParameterByClass($this->gui_class_name,
'wsp_id', $this->ref_id);
836 return $this->
ctrl->getLinkTargetByClass($this->gui_class_name, $cmd);
881 if ($this->context == self::CONTEXT_REPOSITORY) {
887 'property' => $this->
lng->txt(
'status'),
888 'value' => $this->
lng->txt(
'offline')
897 $webdav_lock_backend =
$webdav_dic->locksbackend();
899 if ($lock = $webdav_lock_backend->getLocksOnObjectId($this->obj_id)) {
900 $lock_user =
new ilObjUser($lock->getIliasOwner());
904 'property' => $this->
lng->txt(
'in_use_by'),
905 'value' => $lock_user->getLogin(),
907 './ilias.php?user=' .
908 $lock_user->getId() .
909 '&cmd=showUserProfile&cmdClass=ildashboardgui&baseClass=ilDashboardGUI' 921 string $property =
'',
924 bool $newline =
false 926 $this->cust_prop[] = [
927 'property' => $property,
930 'newline' => $newline
936 if (is_array($this->cust_prop)) {
937 foreach ($this->cust_prop as $property) {
948 if (isset($prop[
'alert']) && $prop[
'alert'] ==
true) {
957 $this->notice_prop = [];
958 if ($infos = $this->ldap_mapping->getInfoStrings($this->obj_id,
true)) {
959 foreach ($infos as $info) {
960 $this->notice_prop[] = [
'value' => $info];
966 public function addCustomCommand(
string $link,
string $lang_var,
string $frame =
'',
string $onclick =
''): void
968 $this->cust_commands[] = [
970 'lang_var' => $lang_var,
972 'onclick' => $onclick
978 ?
Modal $triggeredModal = null
980 $this->cust_commands[] = $button;
981 if ($triggeredModal !== null) {
982 $this->cust_modals[] = $triggeredModal;
988 $this->force_visible_only = $stat;
1022 foreach ($this->commands as $command) {
1023 $permission = $command[
'permission'];
1024 $cmd = $command[
'cmd'];
1025 $lang_var = $command[
'lang_var'] ??
'';
1027 $info_object = null;
1031 $access_granted =
false;
1033 if (isset($command[
'txt'])) {
1034 $txt = $command[
'txt'];
1040 (isset($command[
'enable_anonymous']) && $command[
'enable_anonymous'] ==
'false')
1051 $access_granted =
true;
1056 $info_object = $this->
access->getInfo();
1059 if (!isset($command[
'default'])) {
1060 $command[
'default'] =
'';
1063 'permission' => $permission,
1065 'link' => $cmd_link,
1066 'frame' => $cmd_frame,
1067 'lang_var' => $lang_var,
1069 'granted' => $access_granted,
1070 'access_info' => $info_object,
1071 'img' => $cmd_image,
1072 'default' => $command[
'default']
1076 return $ref_commands;
1093 if ($this->restrict_to_goto) {
1094 $this->default_command = [
1100 if ($this->default_command === []
1102 || $this->title_link_disabled
1105 $this->tpl->setCurrentBlock(
'item_title');
1106 $this->tpl->setVariable(
'TXT_TITLE', $this->
getTitle());
1108 $this->default_command[
'link'] = $this->
modifyTitleLink($this->default_command[
'link']);
1110 list($this->default_command[
'link'], $this->default_command[
'frame']) =
1111 $this->
modifySAHSlaunch($this->default_command[
'link'], $this->default_command[
'frame']);
1113 if ($this->default_command[
'frame'] !=
'') {
1114 $this->tpl->setCurrentBlock(
'title_linked_frame');
1115 $this->tpl->setVariable(
'TARGET_TITLE_LINKED', $this->default_command[
'frame']);
1116 $this->tpl->parseCurrentBlock();
1123 $this->tpl->setCurrentBlock(
'item_title_linked');
1124 $this->tpl->setVariable(
'TXT_TITLE_LINKED', $this->
getTitle());
1125 $this->tpl->setVariable(
'HREF_TITLE_LINKED', $this->default_command[
'link']);
1128 if ($this->type ===
'file') {
1130 if ($preview->has()) {
1131 $this->tpl->setVariable(
'PREVIEW_GLYPH', $preview->getRenderedTriggerComponents());
1132 $this->tpl->parseCurrentBlock();
1136 $this->tpl->parseCurrentBlock();
1138 if ($this->bold_title ==
true) {
1139 $this->tpl->touchBlock(
'bold_title_start');
1140 $this->tpl->touchBlock(
'bold_title_end');
1146 switch ($this->context) {
1147 case self::CONTEXT_WORKSPACE_SHARING:
1159 $fields_shown =
false;
1160 foreach ($this->substitutions->getParsedSubstitutions($this->ref_id, $this->obj_id) as
$data) {
1161 if (
$data[
'bold']) {
1162 $data[
'name'] =
'<strong>' .
$data[
'name'] .
'</strong>';
1163 $data[
'value'] =
'<strong>' .
$data[
'value'] .
'</strong>';
1165 $this->tpl->touchBlock(
'std_prop');
1166 $this->tpl->setCurrentBlock(
'item_property');
1167 if (
$data[
'show_field']) {
1168 $this->tpl->setVariable(
'TXT_PROP',
$data[
'name']);
1170 $this->tpl->setVariable(
'VAL_PROP',
$data[
'value']);
1171 $this->tpl->parseCurrentBlock();
1173 if (
$data[
'newline']) {
1174 $this->tpl->touchBlock(
'newline_prop');
1176 $fields_shown =
false;
1184 if (!$this->substitutions->isDescriptionEnabled()) {
1192 $d = strip_tags(
$d);
1193 $this->tpl->setCurrentBlock(
'item_description');
1194 $this->tpl->setVariable(
'TXT_DESC',
$d);
1195 $this->tpl->parseCurrentBlock();
1204 $this->tpl->setCurrentBlock(
'search_fragment');
1205 $this->tpl->setVariable(
'TXT_SEARCH_FRAGMENT', $this->
getSearchFragment() .
' ...');
1206 $this->tpl->parseCurrentBlock();
1219 $this->tpl->setCurrentBlock(
'relevance');
1220 $this->tpl->setVariable(
'REL_PBAR', $pbar->render());
1221 $this->tpl->parseCurrentBlock();
1231 $this->mode =
$mode;
1249 $this->condition_depth = $depth;
1269 if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
1275 'property' => $this->
lng->txt(
'learning_progress'),
1284 if (!$this->
access->checkAccess(
'read',
'', $this->ref_id, $this->type, $this->obj_id)) {
1287 'value' => $this->
lng->txt(
'no_access_item_public'),
1297 if ($this->reference_ref_id) {
1301 $redraw_js =
'il.Object.redrawListItem(' . $note_ref_id .
');';
1307 isset(self::$cnt_notes[$note_obj_id][Note::PRIVATE]) &&
1308 self::$cnt_notes[$note_obj_id][Note::PRIVATE] > 0
1310 isset(self::$cnt_notes[$note_obj_id][Note::PUBLIC]) &&
1311 self::$cnt_notes[$note_obj_id][Note::PUBLIC] > 0
1313 isset(self::$cnt_tags[$note_obj_id]) && self::$cnt_tags[$note_obj_id] > 0
1315 isset(self::$tags[$note_obj_id]) && is_array(self::$tags[$note_obj_id])
1320 $cnt_comments = self::$cnt_notes[$note_obj_id][Note::PUBLIC] ?? 0;
1322 && $cnt_comments > 0) {
1325 'property' => $this->
lng->txt(
'notes_comments'),
1327 '<a href="#" onclick="return ' .
1329 self::$cnt_notes[$note_obj_id][Note::PUBLIC] .
'</a>',
1335 $cnt_notes = self::$cnt_notes[$note_obj_id][Note::PRIVATE] ?? 0;
1336 if ($this->notes_enabled && $cnt_notes > 0) {
1339 'property' => $this->
lng->txt(
'notes'),
1341 '<a href="#" onclick="return ' .
1343 self::$cnt_notes[$note_obj_id][Note::PRIVATE] .
'</a>',
1348 $cnt_tags = self::$cnt_tags[$note_obj_id] ?? 0;
1349 if ($this->tags_enabled && ($cnt_tags > 0 || isset(self::$tags[$note_obj_id]))) {
1351 if ($tags_set->get(
'enable')) {
1355 if (isset(self::$tags[$note_obj_id])) {
1357 foreach (self::$tags[$note_obj_id] as $tag => $is_tag_owner) {
1358 if ($is_tag_owner) {
1359 $tags_tmp[] =
'<a class="ilTag ilTagRelHigh" href="#" onclick="return ' .
1360 $tags_url .
'">' . $tag .
'</a>';
1362 $tags_tmp[] =
'<span class="ilTag ilTagRelMiddle">' . $tag .
'</span>';
1365 $tags_value = implode(
' ', $tags_tmp);
1370 $tags_value =
'<a href="#" onclick="return ' . $tags_url .
'>' .
1371 self::$cnt_tags[$note_obj_id] .
'</a>';
1372 $prop_text = $this->
lng->txt(
'tagging_tags');
1376 'property' => $prop_text,
1377 'value' => $tags_value,
1384 if (!isset($props)) {
1395 if (is_array($props) && count($props) > 0) {
1396 foreach ($props as $prop) {
1398 $this->tpl->touchBlock(
'separator_prop');
1401 if (isset($prop[
'alert']) && $prop[
'alert'] ==
true) {
1402 $this->tpl->touchBlock(
'alert_prop');
1404 $this->tpl->touchBlock(
'std_prop');
1407 if (isset($prop[
'newline']) && $prop[
'newline'] ==
true && $cnt > 1) {
1408 $this->tpl->touchBlock(
'newline_prop');
1413 isset($prop[
'property']) &&
1414 (($prop[
'propertyNameVisible'] ?? null) !==
false) &&
1415 $prop[
'property'] !=
'' 1418 $this->tpl->setCurrentBlock(
'prop_name');
1419 $this->tpl->setVariable(
'TXT_PROP', $prop[
'property']);
1420 $this->tpl->parseCurrentBlock();
1423 $this->tpl->setCurrentBlock(
'item_property');
1425 if (isset($prop[
'link']) && $prop[
'link']) {
1426 $this->tpl->setVariable(
'LINK_PROP', $prop[
'link']);
1427 $this->tpl->setVariable(
'LINK_VAL_PROP', $prop[
'value']);
1429 $this->tpl->setVariable(
'VAL_PROP', $prop[
'value']);
1432 $this->tpl->parseCurrentBlock();
1436 $this->tpl->setCurrentBlock(
'item_properties');
1437 $this->tpl->parseCurrentBlock();
1444 foreach ($this->notice_prop as $property) {
1445 $this->tpl->setCurrentBlock(
'notice_item');
1446 $this->tpl->setVariable(
'NOTICE_ITEM_VALUE', $property[
'value']);
1447 $this->tpl->parseCurrentBlock();
1449 $this->tpl->setCurrentBlock(
'notice_property');
1450 $this->tpl->parseCurrentBlock();
1453 protected function parseConditions(
int $toggle_id, array $conditions,
bool $obligatory =
true): bool
1456 $num_optional_required =
1458 count($conditions) +
1463 $visible_conditions = [];
1464 $passed_optional = 0;
1465 foreach ($conditions as $condition) {
1466 if ($obligatory && !$condition[
'obligatory']) {
1469 if (!$obligatory && $condition[
'obligatory']) {
1473 if ($this->tree->isDeleted($condition[
'trigger_ref_id'])) {
1480 $visible_conditions[] = $condition[
'id'];
1483 if (!$obligatory && $ok) {
1486 if ($passed_optional >= $num_optional_required) {
1492 $missing_cond_exist =
false;
1493 foreach ($conditions as $condition) {
1494 if (!in_array($condition[
'id'], $visible_conditions)) {
1499 $cond_txt = $operator .
' ' . $condition[
'value'];
1502 $class = $this->obj_definition->getClassName($condition[
'trigger_type']);
1503 $location = $this->obj_definition->getLocation($condition[
'trigger_type']);
1507 $missing_cond_exist =
true;
1509 $full_class =
'ilObj' . $class .
'ListGUI';
1510 $item_list_gui =
new $full_class($this->context);
1511 $item_list_gui->setMode(self::IL_LIST_AS_TRIGGER);
1512 $item_list_gui->enablePath(
false);
1513 $item_list_gui->enableIcon(
true);
1514 $item_list_gui->setConditionDepth($this->condition_depth + 1);
1515 $item_list_gui->setParentRefId($this->ref_id);
1516 $item_list_gui->addCustomProperty($this->
lng->txt(
'precondition_required_itemlist'), $cond_txt,
false,
true);
1517 $item_list_gui->enableCommands($this->commands_enabled, $this->std_cmd_only);
1518 $item_list_gui->enableProperties($this->properties_enabled);
1520 $trigger_html = $item_list_gui->getListItemHTML(
1521 $condition[
'trigger_ref_id'],
1522 $condition[
'trigger_obj_id'],
1526 $this->tpl->setCurrentBlock(
'precondition');
1527 if ($trigger_html ==
'') {
1528 $trigger_html = $this->
lng->txt(
'precondition_not_accessible');
1530 $this->tpl->setVariable(
'TXT_CONDITION', trim($cond_txt));
1531 $this->tpl->setVariable(
'TRIGGER_ITEM', $trigger_html);
1532 $this->tpl->parseCurrentBlock();
1535 if ($missing_cond_exist && $obligatory) {
1536 $this->tpl->setCurrentBlock(
'preconditions');
1537 $this->tpl->setVariable(
'CONDITION_TOGGLE_ID',
'_obl_' . $toggle_id);
1538 $this->tpl->setVariable(
'TXT_PRECONDITIONS', $this->
lng->txt(
'preconditions_obligatory_hint'));
1539 $this->tpl->parseCurrentBlock();
1540 } elseif ($missing_cond_exist && !$obligatory) {
1541 $this->tpl->setCurrentBlock(
'preconditions');
1542 $this->tpl->setVariable(
'CONDITION_TOGGLE_ID',
'_opt_' . $toggle_id);
1543 $this->tpl->setVariable(
1544 'TXT_PRECONDITIONS',
1546 $this->
lng->txt(
'preconditions_optional_hint'),
1547 $num_optional_required - $passed_optional
1550 $this->tpl->parseCurrentBlock();
1553 return !$missing_cond_exist;
1562 if ($this->condition_depth > 0) {
1566 if ($this->context == self::CONTEXT_WORKSPACE) {
1570 if (isset($this->condition_target) && is_array($this->condition_target)
1571 && count($this->condition_target) > 0) {
1572 $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget(
1573 (
int) $this->condition_target[
'ref_id'],
1574 (
int) $this->condition_target[
'obj_id'],
1575 $this->condition_target[
'target_type'] ??
'' 1578 $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($this->ref_id, $this->obj_id);
1581 if (
sizeof($conditions)) {
1582 for ($i = 0; $i < count($conditions); $i++) {
1587 ++self::$js_unique_id;
1589 $all_done_obl = $this->
parseConditions(self::$js_unique_id, $conditions);
1590 $all_done_opt = $this->
parseConditions(self::$js_unique_id, $conditions,
false);
1592 if (!$all_done_obl || !$all_done_opt) {
1593 $this->tpl->setCurrentBlock(
'preconditions_toggle');
1594 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_INTRO', $this->
lng->txt(
'precondition_toggle'));
1595 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_TRIGGER', $this->
lng->txt(
'show'));
1596 $this->tpl->setVariable(
'PRECONDITION_TOGGLE_ID', self::$js_unique_id);
1597 $this->tpl->setVariable(
'TXT_PRECONDITION_SHOW', $this->
lng->txt(
'show'));
1598 $this->tpl->setVariable(
'TXT_PRECONDITION_HIDE', $this->
lng->txt(
'hide'));
1599 $this->tpl->parseCurrentBlock();
1613 string $onclick =
'' 1616 $checksum = md5($href . $text);
1617 if ($href ==
'#' || !in_array($checksum, $this->prevent_duplicate_commands)) {
1619 $this->prevent_duplicate_commands[] = $checksum;
1622 $prevent_background_click =
false;
1623 if ($cmd ==
'mount_webfolder') {
1624 $onclick =
"triggerWebDAVModal('$href')";
1629 $this->current_selection_list->addItem(
1637 $prevent_background_click,
1645 if ($this->std_cmd_only) {
1655 $this->adm_commands_included =
true;
1661 $this->
ctrl->setParameter(
1662 $this->container_obj,
1664 $this->container_obj->getObject()->getRefId()
1666 $this->
ctrl->setParameter($this->container_obj,
'item_ref_id', $this->
getCommandId());
1667 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'delete');
1669 $this->adm_commands_included =
true;
1677 if ($this->std_cmd_only) {
1684 !$objDefinition->allowLink($this->type)
1694 $this->adm_commands_included =
true;
1701 $this->
ctrl->setParameter(
1702 $this->container_obj,
1704 $this->container_obj->getObject()->getRefId()
1706 $this->
ctrl->setParameter($this->container_obj,
'item_ref_id', $this->
getCommandId());
1707 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'link');
1709 $this->adm_commands_included =
true;
1714 if ($this->std_cmd_only) {
1725 $this->adm_commands_included =
true;
1733 if ($this->
checkCommandAccess(
'delete',
'', $this->ref_id, $this->type) && $this->container_obj->getObject()) {
1734 $this->
ctrl->setParameter(
1735 $this->container_obj,
1737 $this->container_obj->getObject()->getRefId()
1739 $this->
ctrl->setParameter($this->container_obj,
'item_ref_id', $this->
getCommandId());
1741 if (!$to_repository) {
1742 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'cut');
1745 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'cut_for_repository');
1746 $this->
insertCommand($cmd_link, $this->
lng->txt(
'wsp_move_to_repository'));
1749 $this->adm_commands_included =
true;
1755 if ($this->std_cmd_only) {
1760 $this->obj_definition->allowCopy($this->type)) {
1761 if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
1762 $this->
ctrl->setParameterByClass(
'ilobjectcopygui',
'source_id', $this->
getCommandId());
1763 $cmd_copy = $this->
ctrl->getLinkTargetByClass(
'ilobjectcopygui',
'initTargetSelection');
1766 $this->
ctrl->setParameter(
1767 $this->container_obj,
1769 $this->container_obj->getObject()->getRefId()
1771 $this->
ctrl->setParameter($this->container_obj,
'item_ref_id', $this->
getCommandId());
1773 if (!$to_repository) {
1774 $cmd_copy = $this->
ctrl->getLinkTarget($this->container_obj,
'copy');
1777 $cmd_copy = $this->
ctrl->getLinkTarget($this->container_obj,
'copy_to_repository');
1778 $this->
insertCommand($cmd_copy, $this->
lng->txt(
'wsp_copy_to_repository'));
1782 $this->adm_commands_included =
true;
1788 if ($this->std_cmd_only) {
1798 $this->clipboard->hasEntries()
1803 $this->adm_commands_included =
true;
1809 if ($this->std_cmd_only
1812 || $this->
settings->get(
'rep_favourites',
'0') !==
'1') {
1820 is_object($this->container_obj) &&
1822 method_exists($this->container_obj,
'getObject') &&
1823 is_object($this->container_obj->getObject())
1825 $this->
ctrl->setParameter(
1826 $this->container_obj,
1828 $this->container_obj->getObject()->getRefId()
1832 $this->
ctrl->setParameter($this->container_obj,
'type', $type);
1833 $this->
ctrl->setParameter($this->container_obj,
'item_ref_id', $this->
getCommandId());
1835 if (!$this->fav_manager->ifIsFavourite($this->user->getId(), $this->
getCommandId())) {
1837 if ($this->
checkCommandAccess(
'read',
'', $this->ref_id, $this->type, $this->obj_id)) {
1838 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'addToDesk');
1842 $cmd_link = $this->
ctrl->getLinkTarget($this->container_obj,
'removeFromDesk');
1843 $this->
insertCommand($cmd_link, $this->
lng->txt(
'rep_remove_from_favourites'));
1846 $this->
ctrl->clearParameters($this->container_obj);
1852 if ($this->std_cmd_only) {
1857 $this->
lng->txt(
'info_short'),
1868 if ($this->std_cmd_only || $this->
user->isAnonymous()) {
1872 $this->
lng->loadLanguageModule(
'notes');
1873 $this->
lng->loadLanguageModule(
'tagging');
1878 if ($this->reference_ref_id) {
1882 $js_updater = $header_actions
1883 ?
'il.Object.redrawActionHeader();' 1884 :
'il.Object.redrawListItem(' . $note_ref_id .
')';
1886 $comments_enabled = $this->
isCommentsActivated($this->type, $this->ref_id, $this->obj_id, $header_actions);
1887 if ($comments_enabled) {
1890 $this->
lng->txt(
'notes_comments'),
1898 if ($this->notes_enabled) {
1901 $this->
lng->txt(
'notes'),
1909 if ($this->tags_enabled) {
1912 $this->
lng->txt(
'tagging_set_tag'),
1930 $this->std_cmd_only || is_null($this->container_obj) ||
1931 !method_exists($this->container_obj,
'getObject') ||
1932 !is_object($this->container_obj->getObject())
1937 $parent_ref_id = $this->container_obj->getObject()->getRefId();
1938 $parent_type = $this->container_obj->getObject()->getType();
1941 if ($this->reference_ref_id) {
1942 $this->
ctrl->setParameterByClass(
'ilconditionhandlergui',
'ref_id', $this->reference_ref_id);
1949 $this->
ctrl->setParameterByClass(
1950 get_class($this->container_obj),
1954 $time_limit_link = $this->
ctrl->getLinkTargetByClass(
1955 get_class($this->container_obj),
1956 'editAvailabilityPeriod' 1958 $this->
insertCommand($time_limit_link, $this->
lng->txt(
'edit_availability_period'));
1959 $this->
ctrl->clearParameterByClass(
1960 get_class($this->container_obj),
1964 $this->
ctrl->setParameterByClass(
1965 'ilconditionhandlergui',
1969 $this->
ctrl->setParameterByClass(
1970 'ilconditionhandlergui',
1975 $availbility_link = $this->
ctrl->getLinkTargetByClass(
1976 [$this->gui_class_name,
'ilcommonactiondispatchergui',
'ilobjectactivationgui',
'ilconditionhandlergui'],
1983 if ($this->reference_ref_id) {
1984 $this->
ctrl->setParameterByClass(
'ilconditionhandlergui',
'ref_id', $this->ref_id);
1992 bool $use_async =
false,
1993 bool $get_async_commands =
false,
1994 string $async_url =
'',
1995 bool $header_actions =
false 1998 if ($use_async && !$get_async_commands) {
1999 foreach ($commands as $command) {
2000 if ($command[
'default'] ===
true) {
2001 $this->default_command = $command[
'granted'] ===
true ? $this->
createDefaultCommand($command) : [];
2009 $get_async_commands,
2015 $this->current_selection_list->setAsynch($use_async && !$get_async_commands);
2016 $this->current_selection_list->setAsynchUrl($async_url);
2017 if ($header_actions) {
2018 $this->current_selection_list->setListTitle(
2019 '<span class="hidden-xs">' .
2020 $this->
lng->txt(
'actions') .
2024 $this->current_selection_list->setListTitle(
'');
2026 $this->current_selection_list->setId(
'act_' . $this->
getUniqueItemId());
2027 $this->current_selection_list->setSelectionHeaderClass(
'');
2028 $this->current_selection_list->setItemLinkClass(
'');
2029 $this->current_selection_list->setLinksMode(
'il_ContainerItemCommand2');
2031 $this->current_selection_list->setUseImages(
false);
2032 $this->current_selection_list->setAdditionalToggleElement(
2034 'ilContainerListItemOuterHighlight' 2037 if ($use_async && !$get_async_commands) {
2038 return $this->current_selection_list->getHTML();
2041 $this->
ctrl->setParameterByClass($this->gui_class_name,
'ref_id', $this->ref_id);
2043 $this->default_command = [];
2044 $this->prevent_duplicate_commands = [];
2047 $valid_header_commands = [
'mount_webfolder'];
2050 foreach ($commands as $command) {
2051 if ($header_actions && !in_array($command[
'cmd'], $valid_header_commands)
2052 || $command[
'granted'] ===
false) {
2056 if ($command[
'default'] ===
true) {
2065 $cmd_link = $command[
'link'];
2066 $txt = ($command[
'lang_var'] ==
'')
2068 : $this->
lng->txt($command[
'lang_var']);
2079 if (is_array($this->cust_commands)) {
2080 foreach ($this->cust_commands as $command) {
2081 if ($command instanceof
Button) {
2082 $this->current_selection_list->addComponent($command);
2088 $this->
lng->txt($command[
'lang_var']),
2091 $command[
'cmd'] ??
'',
2105 if (!$this->
isMode(self::IL_LIST_AS_TRIGGER)) {
2107 if ($this->delete_enabled) {
2112 if ($this->link_enabled) {
2117 if ($this->cut_enabled) {
2122 if ($this->copy_enabled) {
2127 if ($this->repository_transfer_enabled) {
2132 if ($this->timings_enabled) {
2137 if ($this->subscribe_enabled) {
2142 if ($this->multi_download_enabled && $header_actions) {
2147 if ($this->cut_enabled or $this->link_enabled) {
2154 if (!$this->
isMode(self::IL_LIST_AS_TRIGGER)) {
2158 if (!$header_actions) {
2159 $this->
ctrl->clearParametersByClass($this->gui_class_name);
2162 if ($use_async && $get_async_commands) {
2163 return $this->current_selection_list->getHTML(
true);
2166 return $this->current_selection_list->getHTML();
2177 bool $get_async_commands,
2178 bool $header_actions
2180 return $use_async && !$get_async_commands && !$header_actions
2182 && $this->object_properties->getPropertyInfoTabVisibility();
2185 public function enableComments(
bool $value,
bool $enable_comments_settings =
true): void
2187 if ($this->
settings->get(
'disable_comments')) {
2191 $this->comments_enabled = $value;
2192 $this->comments_settings_enabled = $enable_comments_settings;
2197 if ($this->
settings->get(
'disable_notes')) {
2201 $this->notes_enabled = $value;
2207 if (!$tags_set->get(
'enable')) {
2210 $this->tags_enabled = $value;
2215 string $text = null,
2216 bool $categories =
false,
2217 array $ctrl_path = null,
2218 bool $force_rate_parent =
false 2220 $this->rating_enabled = $value;
2222 if ($this->rating_enabled) {
2223 $this->rating_categories_enabled = $categories;
2224 $this->rating_text = $text;
2225 $this->rating_ctrl_path = $ctrl_path;
2238 if (!$folder_set->get(
'enable_multi_download')) {
2241 $this->multi_download_enabled = $value;
2246 if ($this->std_cmd_only) {
2262 $user_id = $this->
user->getId();
2267 if ($hasAdminAccess) {
2268 $cmd = ($this->requested_cmd ==
'enableAdministrationPanel')
2270 :
'enableAdministrationPanel';
2272 $cmd = ($this->requested_cmd ==
'enableMultiDownload')
2274 :
'enableMultiDownload';
2277 $this->
insertCommand($cmd_link, $this->
lng->txt(
'download_multiple_objects'));
2284 if (!$this->
getContainerObject()->isActiveAdministrationPanel() || $this->clipboard->hasEntries()) {
2286 in_array($this->type, [
'file',
'fold']) &&
2287 $this->
access->checkAccess(
'read',
'', $ref_id, $this->type)
2289 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_ENABLED;
2291 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_DISABLED;
2294 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_NONE;
2314 if (is_null($tpl)) {
2319 $DIC->notes()->gui()->initJavascript($notes_url);
2327 $tpl->addOnLoadCode(
'il.Object.setRedrawAHUrl("' . $redraw_url .
'");');
2333 $this->sub_obj_type =
$type;
2334 $this->sub_obj_id = (
int) $id;
2340 string $tooltip = null,
2341 string $onclick = null,
2342 string $status_text = null,
2345 $this->header_icons[
$id] = [
2347 'tooltip' => $tooltip,
2348 'onclick' => $onclick,
2349 'status_text' => $status_text,
2356 $this->header_icons[
$id] = $html;
2361 $this->header_icons[
$id] = [
'glyph' => $glyph,
'onclick' => $onclick];
2366 $this->ajax_hash = $hash;
2371 if ($main_tpl == null) {
2375 $htpl =
new ilTemplate(
'tpl.header_action.html',
true,
true,
'Services/Repository');
2377 $redraw_js =
'il.Object.redrawActionHeader();';
2380 if ($this->tags_enabled) {
2386 $this->
user->getId()
2388 if (count($tags) > 0) {
2389 $this->
lng->loadLanguageModule(
'tagging');
2391 $f = $this->
ui->factory();
2394 $f->symbol()->glyph()->tag(
'#')
2395 ->withCounter(
$f->counter()->status(count($tags))),
2402 $comments_enabled = $this->
isCommentsActivated($this->type, $this->ref_id, $this->obj_id,
true,
false);
2403 if ($this->notes_enabled || $comments_enabled) {
2404 $type = ($this->sub_obj_type ==
'') ? $this->type : $this->sub_obj_type;
2405 $context = $this->notes_service->data()->context($this->obj_id, $this->sub_obj_id, $type);
2406 $cnt[
$this->obj_id][Note::PUBLIC] = $this->notes_service->domain()->getNrOfCommentsForContext($context);
2407 $cnt[
$this->obj_id][Note::PRIVATE] = $this->notes_service->domain()->getNrOfNotesForContext($context);
2409 $this->notes_enabled &&
2410 isset($cnt[$this->obj_id][Note::PRIVATE]) &&
2411 $cnt[$this->obj_id][Note::PRIVATE] > 0
2413 $f = $this->
ui->factory();
2416 $f->symbol()->glyph()->note(
'#')
2417 ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][Note::PRIVATE])),
2423 $comments_enabled &&
2424 isset($cnt[$this->obj_id][Note::PUBLIC]) &&
2427 $this->
lng->loadLanguageModule(
'notes');
2428 $f = $this->
ui->factory();
2431 $f->symbol()->glyph()->comment(
'#')
2432 ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][Note::PUBLIC])),
2439 if ($this->rating_enabled) {
2441 $rating_gui->enableCategories($this->rating_categories_enabled);
2443 $rating_gui->setObject($this->obj_id, $this->type);
2444 if ($this->rating_text) {
2445 $rating_gui->setYourRatingText($this->rating_text);
2448 $ajax_hash = $this->force_rate_parent
2451 $this->
ctrl->setParameterByClass(
'ilRatingGUI',
'cadh', $ajax_hash);
2452 $this->
ctrl->setParameterByClass(
'ilRatingGUI',
'rnsb',
true);
2453 if ($this->rating_ctrl_path) {
2454 $rating_gui->setCtrlPath($this->rating_ctrl_path);
2455 $ajax_url = $this->
ctrl->getLinkTargetByClass($this->rating_ctrl_path,
'saveRating',
'',
true);
2457 $ajax_url = $this->
ctrl->getLinkTargetByClass(
'ilRatingGUI',
'saveRating',
'',
true);
2459 $main_tpl->
addOnLoadCode(
'il.Object.setRatingUrl("' . $ajax_url .
'");');
2462 $rating_gui->getHTML(
2464 $this->checkCommandAccess(
'read',
'', $this->ref_id, $this->type),
2465 'il.Object.saveRating(%rating%);' 2470 if ($this->header_icons) {
2472 foreach ($this->header_icons as
$id => $attr) {
2475 if (is_array($attr)) {
2476 if (isset($attr[
'glyph']) && $attr[
'glyph']) {
2477 if ($attr[
'onclick']) {
2478 $htpl->setCurrentBlock(
'prop_glyph_oc');
2479 $htpl->setVariable(
'GLYPH_ONCLICK', $attr[
'onclick']);
2480 $htpl->parseCurrentBlock();
2482 $renderer = $this->
ui->renderer();
2483 $html = $renderer->render($attr[
'glyph']);
2484 $htpl->setCurrentBlock(
'prop_glyph');
2485 $htpl->setVariable(
'GLYPH', $html);
2486 $htpl->parseCurrentBlock();
2488 if ($attr[
'onclick']) {
2489 $htpl->setCurrentBlock(
'onclick');
2490 $htpl->setVariable(
'PROP_ONCLICK', $attr[
'onclick']);
2491 $htpl->parseCurrentBlock();
2494 if ($attr[
'status_text']) {
2495 $htpl->setCurrentBlock(
'status');
2496 $htpl->setVariable(
'PROP_TXT', $attr[
'status_text']);
2497 $htpl->parseCurrentBlock();
2501 $htpl->setCurrentBlock(
'prop');
2502 if ($attr[
'href'] || $attr[
'onclick']) {
2503 $htpl->setVariable(
'TAG',
'a');
2505 $htpl->setVariable(
'TAG',
'span');
2507 $htpl->setVariable(
'PROP_ID',
$id);
2508 $htpl->setVariable(
'IMG',
ilUtil::img($attr[
'img'], $attr[
'tooltip']));
2509 if ($attr[
'href'] !=
'') {
2510 $htpl->setVariable(
'PROP_HREF',
' href="' . $attr[
'href'] .
'" ');
2512 $htpl->parseCurrentBlock();
2514 if ($attr[
'tooltip']) {
2523 if (
sizeof($chunks)) {
2526 implode(
' ', $chunks) .
' ' 2537 if ($this->cust_modals !== []) {
2538 $htpl->setVariable(
'TRIGGERED_MODALS', $this->
ui->renderer()->render($this->cust_modals));
2541 return $htpl->get();
2552 $base_class = $this->request_wrapper->retrieve(
'baseClass', $this->
refinery->kindlyTo()->string());
2554 (strtolower($base_class) !=
'ilrepositorygui') &&
2555 is_int(strpos($link,
'baseClass=ilRepositoryGUI'))
2557 if ($this->type !=
'frm') {
2567 if ($this->default_command_params) {
2569 foreach ($this->default_command_params as $name => $value) {
2570 $params[] = $name .
'=' . $value;
2576 if (!stristr($default_link,
'?')) {
2577 $default_link = ($default_link .
'?' .
$params);
2579 $default_link = ($default_link .
'&' .
$params);
2582 return $default_link;
2590 if (strstr($link, ilSAHSPresentationGUI::class) ===
false) {
2591 return [$link, $target];
2595 $om = $sahs_obj->getOpenMode();
2596 $width = $sahs_obj->getWidth();
2597 $height = $sahs_obj->getHeight();
2598 if (($om == 5 || $om == 1) && $width > 0 && $height > 0) {
2601 if ($om !== 0 && !$this->
http->agent()->isMobile()) {
2602 $this->default_command[
'frame'] =
'';
2604 'javascript:void(0); onclick=startSAHS(\'' .
2617 $target = "ilContObj" . $this->ref_id; 2619 return [$link, $target]; 2622 public function insertPath(): void 2624 if ($this->getPathStatus() != false) { 2625 if (!$this->path_gui instanceof \ilPathGUI) { 2626 $path_gui = new \ilPathGUI(); 2628 $path_gui = $this->path_gui; 2631 $path_gui->enableTextOnly(!$this->path_linked); 2632 $path_gui->setUseImages(false); 2634 $start_node = ROOT_FOLDER_ID; 2635 if ($this->path_start_node) { 2636 $start_node = $this->path_start_node; 2639 $this->tpl->setCurrentBlock('path_item
'); 2640 $this->tpl->setVariable('PATH_ITEM
', $path_gui->getPath($start_node, $this->ref_id)); 2641 $this->tpl->parseCurrentBlock(); 2643 $this->tpl->setCurrentBlock('path
'); 2644 $this->tpl->setVariable('TXT_LOCATION
', $this->lng->txt('locator')); 2645 $this->tpl->parseCurrentBlock(); 2649 public function insertProgressInfo(): void 2653 public function insertIconsAndCheckboxes(): void 2656 if ($this->getCheckboxStatus()) { 2657 $this->tpl->setCurrentBlock('check
'); 2658 $this->tpl->setVariable('VAL_ID
', $this->getCommandId()); 2659 $this->tpl->setVariable('CHECK_TITLE
', $this->lng->txt('select
') . ' ' . $this->getTitle()); 2660 $this->tpl->parseCurrentBlock(); 2662 } elseif ($this->getDownloadCheckboxState() != self::DOWNLOAD_CHECKBOX_NONE) { 2663 $this->tpl->setCurrentBlock('check_download
'); 2664 $this->tpl->setVariable('CHECK_DOWNLOAD_TITLE
', $this->lng->txt('download
') . ' ' . $this->getTitle()); 2665 if ($this->getDownloadCheckboxState() == self::DOWNLOAD_CHECKBOX_ENABLED) { 2666 $this->tpl->setVariable('VAL_ID
', $this->getCommandId()); 2668 $this->tpl->setVariable('VAL_VISIBILITY
', 'visibility: hidden;
" disabled="disabled'); 2670 $this->tpl->parseCurrentBlock(); 2672 } elseif ($this->getExpandStatus()) { 2673 $this->tpl->setCurrentBlock('expand'); 2675 if ($this->isExpanded()) { 2676 $this->ctrl->setParameter($this->container_obj, 'expand', -1 * $this->obj_id); 2677 // 'view
' added, see #19922 2678 $this->tpl->setVariable('EXP_HREF
', $this->ctrl->getLinkTarget($this->container_obj, 'view
', $this->getUniqueItemId(true))); 2679 $this->ctrl->clearParameters($this->container_obj); 2680 $this->tpl->setVariable('EXP_IMG
', ilUtil::getImagePath('nav/tree_exp.svg
')); 2681 $this->tpl->setVariable('EXP_ALT
', $this->lng->txt('collapse')); 2683 $this->ctrl->setParameter($this->container_obj, 'expand', $this->obj_id); 2684 // 'view
' added, see #19922 2685 $this->tpl->setVariable('EXP_HREF
', $this->ctrl->getLinkTarget($this->container_obj, 'view
', $this->getUniqueItemId(true))); 2686 $this->ctrl->clearParameters($this->container_obj); 2687 $this->tpl->setVariable('EXP_IMG
', ilUtil::getImagePath('nav/tree_col.svg
')); 2688 $this->tpl->setVariable('EXP_ALT
', $this->lng->txt('expand')); 2691 $this->tpl->parseCurrentBlock(); 2695 if ($this->getIconStatus()) { 2697 $this->tpl->touchBlock('i_1
'); 2700 $this->tpl->setCurrentBlock('icon
'); 2701 $this->tpl->setVariable('ALT_ICON
', $this->buildTranslatedType()); 2703 $this->tpl->setVariable( 2705 $this->getTypeIcon() 2707 $this->tpl->parseCurrentBlock(); 2711 $this->tpl->touchBlock('d_
' . $cnt); 2717 public function getTypeIcon(): string 2719 return ilObject::getIconForReference( 2723 $this->getIconImageType() 2727 public function insertSubItems(): void 2729 foreach ($this->sub_item_html as $sub_html) { 2730 $this->tpl->setCurrentBlock('subitem
'); 2731 $this->tpl->setVariable('SUBITEM
', $sub_html); 2732 $this->tpl->parseCurrentBlock(); 2736 public function insertPositionField(): void 2738 if ($this->position_enabled) { 2739 $this->tpl->setCurrentBlock('position
'); 2740 $this->tpl->setVariable('POS_ID
', $this->position_field_index); 2741 $this->tpl->setVariable('POS_VAL
', $this->position_value); 2742 $this->tpl->parseCurrentBlock(); 2750 public function adminCommandsIncluded(): bool 2752 return $this->adm_commands_included; 2755 public function storeAccessCache(): void 2757 if ($this->acache->getLastAccessStatus() == 'miss
' && !$this->prevent_access_caching) { 2758 $this->acache->storeEntry( 2759 $this->user->getId() . ':
' . $this->ref_id, 2760 serialize($this->access_cache), 2769 public function getListItemHTML( 2773 string $description, 2774 bool $use_async = false, 2775 bool $get_async_commands = false, 2776 string $async_url = '' 2778 // this variable stores whether any admin commands 2779 // are included in the output 2780 $this->adm_commands_included = false; 2782 // only for performance exploration 2783 $type = ilObject::_lookupType($obj_id); 2785 $this->initItem($ref_id, $obj_id, $type, $title, $description); 2787 if ($use_async && $get_async_commands) { 2788 return $this->insertCommands(true, true); 2791 if ($this->rating_enabled) { 2792 if (ilRating::hasRatingInListGUI($this->obj_id, $this->type)) { 2793 $may_rate = $this->checkCommandAccess('read
', '', $this->ref_id, $this->type); 2794 $rating = new ilRatingGUI(); 2795 $rating->setObject($this->obj_id, $this->type); 2796 $this->addCustomProperty( 2798 $rating->getListGUIProperty($this->ref_id, $may_rate, $this->ajax_hash, $this->parent_ref_id), 2806 $this->acache = new ilListItemAccessCache(); 2807 $cres = $this->acache->getEntry($this->user->getId() . ':
' . $ref_id); 2808 if ($this->acache->getLastAccessStatus() == 'hit
') { 2809 $this->access_cache = unserialize($cres); 2812 $this->storeAccessCache(); 2816 if (!$this->checkCommandAccess('visible
', '', $ref_id, '', $obj_id)) { 2817 $this->resetCustomData(); 2822 if ($type == 'file
' and ilObjFileAccess::_isFileHidden($title)) { 2823 $this->resetCustomData(); 2828 $this->tpl = new ilTemplate( 2829 static::$tpl_file_name, 2832 static::$tpl_component, 2838 if ($this->getCommandsStatus()) { 2839 if (!$this->getSeparateCommands()) { 2840 $this->tpl->setVariable( 2841 'COMMAND_SELECTION_LIST
', 2842 $this->insertCommands($use_async, $get_async_commands, $async_url) 2847 if ($this->getProgressInfoStatus()) { 2848 $this->insertProgressInfo(); 2851 // insert title and describtion 2852 $this->insertTitle(); 2853 if (!$this->isMode(self::IL_LIST_AS_TRIGGER)) { 2854 if ($this->getDescriptionStatus()) { 2855 $this->insertDescription(); 2859 if ($this->getSearchFragmentStatus()) { 2860 $this->insertSearchFragment(); 2862 if ($this->enabledRelevance()) { 2863 $this->insertRelevance(); 2867 if ($this->getPropertiesStatus()) { 2868 $this->insertProperties(); 2871 // notice properties 2872 if ($this->getNoticePropertiesStatus()) { 2873 $this->insertNoticeProperties(); 2877 if ($this->getPreconditionsStatus()) { 2878 $this->insertPreconditions(); 2882 $this->insertPath(); 2884 if ($this->getItemDetailLinkStatus()) { 2885 $this->insertItemDetailLinks(); 2888 // icons and checkboxes 2889 $this->insertIconsAndCheckboxes(); 2891 // input field for position 2892 $this->insertPositionField(); 2895 $this->insertSubItems(); 2897 $this->resetCustomData(); 2899 $this->tpl->setVariable('DIV_CLASS
', 'ilContainerListItemOuter
'); 2900 $this->tpl->setVariable( 2902 'data-list-item-
id=
"' . $this->getUniqueItemId(true) . '" id =
"' . $this->getUniqueItemId(true) . '"' 2904 $this->tpl->setVariable('ADDITIONAL
', $this->getAdditionalInformation()); 2906 if (is_object($this->getContainerObject())) { 2907 // #11554 - make sure that internal ids are reset 2908 $this->ctrl->setParameter($this->getContainerObject(), 'item_ref_id
', ''); 2911 // if file upload is enabled the content is wrapped by a UI dropzone. 2912 $content = $this->tpl->get(); 2913 $file_upload_dropzone = new ilObjFileUploadDropzone($this->ref_id, $content); 2914 if ($this->context === self::CONTEXT_REPOSITORY 2915 && ($this->requested_cmd === "view" || $this->requested_cmd === "" || $this->requested_cmd === "render") 2916 && $file_upload_dropzone->isUploadAllowed($this->type) 2917 && !(new ModeSessionRepository())->isAdminMode() 2919 return $file_upload_dropzone->getDropzoneHtml(); 2928 protected function resetCustomData(): void 2931 $this->cust_prop = []; 2932 $this->cust_commands = []; 2933 $this->cust_modals = []; 2934 $this->sub_item_html = []; 2935 $this->position_enabled = false; 2941 public function setParentRefId(int $ref_id): void 2943 $this->parent_ref_id = $ref_id; 2952 public function getUniqueItemId(bool $as_div = false): string 2954 // use correct id for references 2955 $id_ref = $this->ref_id; 2956 if ($this->reference_ref_id > 0) { 2957 $id_ref = $this->reference_ref_id; 2960 // add unique identifier for preconditions (objects can appear twice in same container) 2961 if ($this->condition_depth) { 2962 $id_ref .= '_pc
' . $this->condition_depth; 2966 $id_ref .= '_pref_
' . $this->parent_ref_id; 2971 // action menu [yellow] toggle 2972 return 'lg_div_
' . $id_ref; 2979 public function getCommandsHTML(): string 2981 return $this->insertCommands(); 2987 public function isSideBlock(): bool 2992 public function setBoldTitle(bool $bold_title): void 2994 $this->bold_title = $bold_title; 2997 public function isTitleBold(): bool 2999 return $this->bold_title; 3002 public static function preloadCommonProperties(array $obj_ids, int $context): void 3005 $lng = $DIC->language(); 3006 $ilSetting = $DIC->settings(); 3007 $ilUser = $DIC->user(); 3008 $notes_manager = $DIC->notes()->internal()->domain()->notes(); 3010 if ($context == self::CONTEXT_REPOSITORY) { 3011 $active_notes = !$ilSetting->get('disable_notes
'); 3012 $active_comments = !$ilSetting->get('disable_comments
'); 3014 if ($active_comments) { 3015 // needed for action 3016 self::$comments_activation = $DIC->notes() 3019 ->notes()->commentsActiveMultiple($obj_ids); 3022 // properties are optional 3023 if ($ilSetting->get('comments_tagging_in_lists
')) { 3024 if ($active_notes || $active_comments) { 3025 // @todo: should be refactored, see comment in notes db repo 3026 self::$cnt_notes = $notes_manager->countNotesAndCommentsMultipleObjects( 3031 $lng->loadLanguageModule('notes
'); 3034 $tags_set = new ilSetting('tags
'); 3035 if ($tags_set->get('enable
')) { 3036 $all_users = (bool) $tags_set->get('enable_all_users
'); 3038 if (!$ilSetting->get('comments_tagging_in_lists_tags
')) { 3039 self::$cnt_tags = ilTagging::_countTags($obj_ids, $all_users); 3041 $tag_user_id = null; 3043 $tag_user_id = $ilUser->getId(); 3045 self::$tags = ilTagging::_getListTagsForObjects($obj_ids, $tag_user_id); 3048 $lng->loadLanguageModule('tagging
'); 3052 $lng->loadLanguageModule('rating
'); 3055 self::$preload_done = true; 3061 protected function isCommentsActivated( 3065 bool $header_actions, 3066 bool $check_write_access = true 3068 if ($this->comments_enabled) { 3069 if (!$this->comments_settings_enabled) { 3072 if ($check_write_access && $this->checkCommandAccess('write
', '', $ref_id, $type)) { 3075 // fallback to single object check if no preloaded data 3076 // only the repository does preloadCommonProperties() yet 3077 if (!$header_actions && self::$preload_done) { 3078 if (isset(self::$comments_activation[$obj_id]) && 3079 self::$comments_activation[$obj_id]) { 3082 } elseif ($this->notes_service->domain()->commentsActive($obj_id)) { 3092 public function enableTimings(bool $status): void 3094 $this->timings_enabled = $status; 3100 public function getAsListItem( 3109 // even b tag produced bugs, see #32304 3110 $description = strip_tags($description); 3120 $this->enableCommands(true); 3123 $this->insertCommands(); 3125 foreach ($this->current_selection_list->getItems() as $action_item) { 3126 $action = $ui->factory() 3128 ->shy($action_item['title
'], $action_item['link']); 3130 if ($action_item['onclick
'] !== null && $action_item['onclick
'] !== '') { 3131 $action = $action->withAdditionalOnLoadCode(function ($id) use ($action_item): string { 3132 return "$('#
$id').click(function(){" . $action_item['onclick
'] . ';});
'; 3136 $actions[] = $action; 3139 $dropdown = $ui->factory() 3141 ->standard($actions) 3142 ->withAriaLabel(sprintf( 3143 $this->lng->txt('actions_for
'), 3144 htmlspecialchars(addslashes($title)) 3147 $def_command = $this->getDefaultCommand(); 3149 if ($def_command['link'] ?? false) { 3150 list($def_command['link'], $def_command['frame
']) = 3151 $this->modifySAHSlaunch($def_command['link'], $def_command['frame
']); 3152 $new_viewport = !in_array($def_command['frame
'], ['', '_top
', '_self
', '_parent
'], true); 3153 $link = $this->ui->factory() 3155 ->standard($this->getTitle(), $def_command['link']) 3156 ->withOpenInNewViewport($new_viewport); 3157 $list_item = $ui->factory()->item()->standard($link); 3159 $list_item = $ui->factory()->item()->standard($this->getTitle()); 3162 if ($description != '') { 3163 $list_item = $list_item->withDescription($description); 3165 $list_item = $list_item->withActions($dropdown)->withLeadIcon( 3166 $this->ui->factory()->symbol()->icon()->custom( 3167 $this->getTypeIcon(), 3168 $this->buildTranslatedType(), 3175 $this->enableComments(true); 3176 $this->enableNotes(true); 3177 $this->enableTags(true); 3178 $this->enableRating(true); 3180 foreach ($this->determineProperties() as $p) { 3181 //if ($p['property'] !== $this->lng->txt('learning_progress
')) { 3182 $l[(string) $p['property']] = (string) $p['value
']; 3185 if (count($l) > 0) { 3186 $list_item = $list_item->withProperties($l); 3195 public function getAsCard( 3201 ): ?RepositoryObject { 3204 $title = htmlspecialchars($title); 3205 // even b tag produced bugs, see #32304 3206 $description = strip_tags($description); 3216 $user = $this->user; 3217 $access = $this->access; 3219 $this->enableCommands(true); 3223 // description, @todo: move to new ks element 3224 if ($description != '') { 3225 $sections[] = $ui->factory()->legacy('<div
class=
"il-multi-line-cap-3">
' . $description . '</div>
'); 3228 $this->insertCommands(); 3231 foreach ($this->current_selection_list->getItems() as $item) { 3232 if (!isset($item['onclick
']) || $item['onclick
'] == '') { 3234 $ui->factory()->button()->shy($item['title
'], $item['link']); 3237 $ui->factory()->button()->shy($item['title
'], '')->withAdditionalOnLoadCode(function ($id) use ($item): string { 3239 "$('#
$id').click(function(e) { " . $item['onclick
'] . '});
'; 3244 $def_command = $this->getDefaultCommand(); 3246 $dropdown = $ui->factory()->dropdown()->standard($actions) 3247 ->withAriaLabel(sprintf( 3248 $this->lng->txt('actions_for
'), 3252 // workaround for #26205 3253 // we should get rid of _top links completely and gifure our how 3254 // to manage scorm links better 3255 $def_cmd_frame = ($def_command['frame
'] ?? ''); 3256 if ($def_cmd_frame === '_top
') { 3257 $def_cmd_frame = ''; 3259 $def_cmd_link = ($def_command['link'] ?? ''); 3261 // workaround for scorm 3262 list($modified_link, $def_cmd_frame) = 3263 $this->modifySAHSlaunch($def_cmd_link, $def_cmd_frame); 3265 $image = $this->getTileImage(); 3267 if ($def_cmd_link != '') { // #24256 3268 if ($def_cmd_frame !== '' && ($modified_link === $def_cmd_link)) { 3269 $signal = (new SignalGenerator())->create(); 3270 $this->main_tpl->addOnLoadCode( 3271 "$(document).on('{$signal->getId()}
', function(event, signalData) {" 3272 . ' window.open(
"' . str_replace( 3276 ) . '",
"' . $def_cmd_frame . '");
' 3280 $image = $image->withAction($signal); 3283 $ui->factory()->button()->shy($title, '')->appendOnClick($signal); 3284 $title = $ui->renderer()->render($button); 3286 $image = $image->withAction($modified_link); 3290 if ($type == 'sess
') { 3292 $title = ':
' . $title; 3294 $app_info = ilSessionAppointment::_lookupAppointment($obj_id); 3295 $title = ilSessionAppointment::_appointmentToString( 3298 (bool) $app_info['fullday
'] 3302 $icon = $this->ui->factory()->symbol()->icon()->custom( 3303 $this->getTypeIcon(), 3304 $this->buildTranslatedType(), 3308 // card title action 3309 $card_title_action = ''; 3310 if ($def_cmd_link != '' && ($def_cmd_frame == '' || $modified_link != $def_cmd_link)) { // #24256 3311 $card_title_action = $modified_link; 3312 } elseif ($def_cmd_link == '' && 3313 $this->getInfoScreenStatus() && 3314 $access->checkAccessOfUser( 3320 $card_title_action = ilLink::_getLink($ref_id); 3321 if ($image->getAction() == '') { 3322 $image = $image->withAction($card_title_action); 3326 $card = $ui->factory()->card()->repositoryObject( 3327 $title . '<span data-list-item-
id=
"' . $this->getUniqueItemId(true) . '"></span>
', 3335 if ($card_title_action != '') { 3336 $card = $card->withTitleAction($card_title_action); 3340 foreach ($this->determineProperties() as $p) { 3341 if (isset($p['alert
']) && $p['alert
'] == true 3342 && isset($p['property']) && $p['property'] !== $this->lng->txt('learning_progress
')) { 3343 $l[(string) $p['property']] = (string) $p['value
']; 3346 if (count($l) > 0) { 3347 $prop_list = $ui->factory()->listing()->descriptive($l); 3348 $sections[] = $prop_list; 3350 if (count($sections) > 0) { 3351 $card = $card->withSections($sections); 3354 $lp = ilLPStatus::getListGUIStatus($obj_id, false); 3355 if (is_array($lp) && array_key_exists('status
', $lp)) { 3356 $percentage = (int) ilLPStatus::_lookupPercentage($obj_id, $this->user->getId()); 3357 if ($lp['status
'] == ilLPStatus::LP_STATUS_COMPLETED_NUM) { 3361 $card = $card->withProgress( 3365 ->mini(100, $percentage) 3372 public function checkInfoPageOnAsynchronousRendering(): bool 3377 private function getTileImage(): Image 3379 return $this->object_properties->getPropertyTileImage() 3380 ->getTileImage()->getImage($this->ui->factory()->image()); 3386 public function insertLPCommand(): void 3388 if ($this->std_cmd_only || !$this->lp_cmd_enabled) { 3391 $relevant = ilLPStatus::hasListGUIStatus($this->obj_id); 3393 $cmd_link = $this->getCommandLink('learningProgress
'); 3394 $this->insertCommand( 3396 $this->lng->txt('learning_progress
') 3404 private function insertLPSettingsCommand(): void 3406 if (!ilObjUserTracking::_enabledLearningProgress() 3407 || ilObjectLP::getTypeClass($this->type) === '' 3408 || ! $this->checkCommandAccess('edit_learning_progress
', '', $this->ref_id, $this->type) 3414 $this->ctrl->setParameterByClass(ilLearningProgressGUI::class, 'ref_id
', $this->ref_id); 3415 switch ($this->type) { 3417 switch (ilObjSAHSLearningModule::_lookupSubType($this->obj_id)) { 3419 $scorm_class = ilObjSCORM2004LearningModuleGUI::class; 3422 $scorm_class = ilObjSCORMLearningModuleGUI::class; 3429 $cmd_link = $this->ctrl->getLinkTargetByClass([ 3430 ilSAHSEditGUI::class, 3432 ilLearningProgressGUI::class, 3433 ilLPListOfSettingsGUI::class 3438 $cmd_link = $this->ctrl->getLinkTargetByClass([ 3439 ilLMEditorGUI::class, 3440 ilObjLearningModuleGUI::class, 3441 ilLearningProgressGUI::class, 3442 ilLPListOfSettingsGUI::class 3447 $cmd_link = $this->ctrl->getLinkTargetByClass([ 3448 ilObjLearningSequenceGUI::class, 3449 ilLearningProgressGUI::class, 3450 ilLPListOfSettingsGUI::class 3462 $gui_class = 'ilObj
' . $this->obj_definition->getClassName($this->type) . 'GUI
'; 3463 $cmd_link = $this->ctrl->getLinkTargetByClass([ 3464 ilRepositoryGUI::class, 3466 ilLearningProgressGUI::class, 3467 ilLPListOfSettingsGUI::class 3479 $this->ctrl->setParameterByClass('ilrepositorygui
', 'ref_id
', $this->requested_ref_id); 3480 if ($cmd_link !== '') { 3481 $this->insertCommand( 3483 $this->lng->txt('listaction_learning_progress_settings
') 3488 private function buildTranslatedType(): string 3490 if ($this->obj_definition->isPlugin($this->getIconImageType())) { 3491 return ilObjectPlugin::lookupTxtById($this->getIconImageType(), 'obj_
' . $this->getIconImageType()); 3494 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)
Creates a path for a start and endnode.
const CONTEXT_WORKSPACE_SHARING
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setHeaderSubObject(?string $type, ?int $id)
parseConditions(int $toggle_id, array $conditions, bool $obligatory=true)
insertSearchFragment()
Insert highlighted search fragment.
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)
getUniqueItemId(bool $as_div=false)
Get unique item identifier (for js-actions)
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
Class ChatMainBarProvider .
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 getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
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)
insertCommands(bool $use_async=false, bool $get_async_commands=false, string $async_url='', bool $header_actions=false)
insert all commands into html code
enableMultiDownload(bool $value)
Toggles whether multiple objects can be downloaded at once or not.
setDetailsLevel(int $level)
Details level Currently used in Search which shows only limited properties of forums Currently used f...
ILIAS Notes Service $notes_service
ilFavouritesManager $fav_manager
enableSubscribe(bool $status)
bool $search_fragments_enabled
ilWorkspaceAccessHandler $ws_access
ilAdvancedSelectionListGUI $current_selection_list
addCustomCommandButton(Button $button, ?Modal $triggeredModal=null)
enableLinkedPath(bool $status)
ilGlobalTemplateInterface $main_tpl
static img(string $a_src, ?string $a_alt=null, $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
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.
parses the objects.xml it handles the xml-description of all ilias objects
enableNoticeProperties(bool $status)
Provides fluid interface to RBAC services.
const ALLOWED_TAGS_IN_TITLE_AND_DESCRIPTION
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='')
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()
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)
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
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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
commandsNeedToBeHidden(bool $use_async, bool $get_async_commands, bool $header_actions)
Fix bug #12417: We hide the action menu when we are in the public area.
static getListNotesJSCall(string $a_hash, string $a_update_code=null)
Get list notes js call.
ilAdvancedMDSubstitution $substitutions
enableRelevance(bool $status)
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
string $additional_information
setSeparateCommands(bool $val)
bool $info_screen_enabled
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
bool $title_link_disabled
link(string $caption, string $href, bool $new_viewport=false)
enableCheckbox(bool $status)
static translateOperator(int $a_obj_id, string $a_operator)
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
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...
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
catch(InvalidArgumentException $e) if(!ilDAVActivationChecker::_isActive()) $webdav_dic
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)