4 define(
"IL_LIST_AS_TRIGGER",
"trigger");
5 define(
"IL_LIST_FULL",
"full");
6 require_once(
'./Services/Repository/classes/class.ilObjectPlugin.php');
176 public function __construct($a_context = self::CONTEXT_REPOSITORY)
179 $this->access = $DIC->access();
180 $this->
user = $DIC->user();
181 $this->obj_definition = $DIC[
"objDefinition"];
182 $this->tree = $DIC->repositoryTree();
185 $this->ui = $DIC->ui();
186 $this->rbacsystem = $DIC->rbac()->system();
187 $this->ctrl = $DIC->ctrl();
188 $this->lng = $DIC->language();
190 $this->path_enabled =
false;
191 $this->context = $a_context;
203 include_once(
'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php');
206 $this->lng->loadLanguageModule(
"obj");
218 $this->container_obj = $container_obj;
230 return $this->container_obj;
242 $this->static_link_enabled =
true;
243 $this->delete_enabled =
true;
244 $this->cut_enabled =
true;
245 $this->subscribe_enabled =
true;
246 $this->link_enabled =
false;
247 $this->copy_enabled =
false;
248 $this->progress_enabled =
false;
249 $this->notice_properties_enabled =
true;
250 $this->info_screen_enabled =
false;
252 $this->gui_class_name =
"";
255 include_once(
'./Services/Object/classes/class.ilObjectAccess.php');
268 $this->properties_enabled = $a_status;
290 $this->preconditions_enabled = $a_status;
308 $this->notice_properties_enabled = $a_status;
330 $this->description_enabled = $a_status;
364 $this->search_fragment_enabled = $a_status;
376 $this->path_linked = $a_status;
394 $this->enabled_relevance = $a_status;
404 $this->relevance = $a_rel;
424 $this->icons_enabled = $a_status;
444 $this->checkboxes_enabled = $a_status;
464 $this->expand_enabled = $a_status;
479 $this->is_expanded = $a_status;
494 $this->position_enabled =
true;
495 $this->position_field_index = $a_field_index;
496 $this->position_value = $a_position_value;
507 $this->delete_enabled = $a_status;
519 return $this->delete_enabled;
530 $this->cut_enabled = $a_status;
541 return $this->cut_enabled;
552 $this->copy_enabled = $a_status;
574 $this->subscribe_enabled = $a_status;
585 return $this->subscribe_enabled;
596 $this->link_enabled = $a_status;
607 return $this->link_enabled;
619 $this->path_enabled = $a_path;
620 $this->path_start_node = (int) $a_start_node;
631 return $this->path_enabled;
642 $this->commands_enabled = $a_status;
643 $this->std_cmd_only = $a_std_only;
663 $this->info_screen_enabled = $a_info_screen;
673 $this->sub_item_html[] = $a_html;
695 $this->progress_enabled = $a_status;
719 $this->substitutions_enabled = $a_status;
743 $this->item_detail_links_enabled = $a_status;
766 $this->item_detail_links = $a_detail_links;
767 $this->item_detail_links_intro = $a_intro_txt;
779 if (!count($this->item_detail_links)) {
782 if (strlen($this->item_detail_links_intro)) {
783 $this->tpl->setCurrentBlock(
'item_detail_intro');
784 $this->tpl->setVariable(
'ITEM_DETAIL_INTRO_TXT', $this->item_detail_links_intro);
785 $this->tpl->parseCurrentBlock();
788 foreach ($this->item_detail_links as
$info) {
789 $this->tpl->setCurrentBlock(
'item_detail_link');
790 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_TARGET', $info[
'target']);
791 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_DESC', $info[
'desc']);
792 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_HREF', $info[
'link']);
793 $this->tpl->setVariable(
'ITEM_DETAIL_LINK_NAME', $info[
'name']);
794 $this->tpl->parseCurrentBlock();
796 $this->tpl->setCurrentBlock(
'item_detail_links');
797 $this->tpl->parseCurrentBlock();
808 $this->title = $a_title;
827 $this->description = $a_description;
847 $this->search_fragment = $a_text;
866 $this->separate_commands = $a_val;
899 $this->additional_information = $a_val;
921 $this->details_level = $a_level;
940 $this->repository_transfer_enabled = (bool) $a_value;
950 $this->restrict_to_goto = (bool) $a_value;
961 return $this->default_command;
978 $cache_prefix = null;
979 if ($this->context == self::CONTEXT_WORKSPACE || $this->context == self::CONTEXT_WORKSPACE_SHARING) {
980 $cache_prefix =
"wsp";
981 if (!$this->ws_access) {
982 include_once
"Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php";
987 if (isset($this->access_cache[$a_permission][
"-" . $a_cmd][$cache_prefix . $a_ref_id])) {
988 return $this->access_cache[$a_permission][
"-" . $a_cmd][$cache_prefix . $a_ref_id];
991 if ($this->context == self::CONTEXT_REPOSITORY) {
992 $access = $ilAccess->checkAccess($a_permission, $a_cmd, $a_ref_id,
$a_type, $a_obj_id);
993 if ($ilAccess->getPreventCachingLastResult()) {
994 $this->prevent_access_caching =
true;
997 $access = $this->ws_access->checkAccess($a_permission, $a_cmd, $a_ref_id,
$a_type);
1000 $this->access_cache[$a_permission][
"-" . $a_cmd][$cache_prefix . $a_ref_id] =
$access;
1013 public function initItem($a_ref_id, $a_obj_id, $a_title =
"", $a_description =
"")
1015 $this->offline_mode =
false;
1016 if ($this->type ==
"sahs") {
1017 include_once(
'Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php');
1020 $this->access_cache = array();
1021 $this->ref_id = $a_ref_id;
1022 $this->obj_id = $a_obj_id;
1025 #$this->description = $a_description; 1028 $this->adm_commands_included =
false;
1029 $this->prevent_access_caching =
false;
1034 $this->condition_target = array(
1035 'ref_id' => $a_ref_id,
1036 'obj_id' => $a_obj_id,
1037 'target_type' => $a_target_type
1043 $this->condition_target = array();
1048 $this->title_link_disabled = $a_status;
1054 $this->default_command_params = $a_params;
1069 if ($this->static_link_enabled
and !$this->default_command_params) {
1070 include_once(
'./Services/Link/classes/class.ilLink.php');
1072 $command[
'link'] = $link;
1073 $command[
'frame'] =
'_top';
1076 if ($this->default_command_params) {
1078 foreach ($this->default_command_params as
$name => $value) {
1084 if (!stristr($command[
'link'],
'?')) {
1085 $command[
'link'] .=
'?' .
$params;
1087 $command[
'link'] .=
'&' .
$params;
1107 if ($this->context == self::CONTEXT_REPOSITORY) {
1109 require_once(
'Services/WebDAV/classes/class.ilDAVActivationChecker.php');
1111 require_once(
'Services/WebDAV/classes/class.ilWebDAVUtil.php');
1118 return $dav_util->getMountURI($this->ref_id) .
1119 '" folder="' . $dav_util->getFolderURI($this->ref_id);
1123 $this->ctrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $this->
getCommandId());
1124 $cmd_link = $this->ctrl->getLinkTargetByClass(
"ilrepositorygui", $a_cmd);
1125 $this->ctrl->setParameterByClass(
"ilrepositorygui",
"ref_id",
$_GET[
"ref_id"]);
1134 $this->ctrl->setParameterByClass($this->gui_class_name,
"ref_id",
"");
1135 $this->ctrl->setParameterByClass($this->gui_class_name,
"wsp_id", $this->ref_id);
1136 return $this->ctrl->getLinkTargetByClass($this->gui_class_name, $a_cmd);
1153 require_once(
'Services/WebDAV/classes/class.ilDAVActivationChecker.php');
1158 if ($a_cmd ==
'fileManagerLaunch') {
1203 if ($this->context == self::CONTEXT_REPOSITORY) {
1209 'property' =>
$lng->txt(
"status"),
1210 'value' =>
$lng->txt(
"offline")
1215 require_once(
'Services/WebDAV/classes/class.ilDAVActivationChecker.php');
1218 require_once(
'Services/WebDAV/classes/lock/class.ilWebDAVLockBackend.php');
1220 if (
$ilUser->getId() != ANONYMOUS_USER_ID) {
1221 if ($lock = $webdav_lock_backend->getLocksOnObjectId($this->obj_id)) {
1222 $lock_user =
new ilObjUser($lock->getIliasOwner());
1226 "property" =>
$lng->txt(
"in_use_by"),
1227 "value" => $lock_user->getLogin(),
1228 "link" =>
"./ilias.php?user=" . $lock_user->getId() .
'&cmd=showUserProfile&cmdClass=ilpersonaldesktopgui&baseClass=ilPersonalDesktopGUI',
1239 if (preg_match(
'/^(\\.|\\.\\.)$/', $this->title)) {
1240 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1241 "value" =>
$lng->txt(
"filename_special_filename"),
1242 'propertyNameVisible' =>
false);
1243 } elseif (preg_match(
'/^\\./', $this->title)) {
1244 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_visibility"),
1245 "value" =>
$lng->txt(
"filename_hidden_unix_file"),
1246 'propertyNameVisible' =>
false);
1247 } elseif (preg_match(
'/~$/', $this->title)) {
1248 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_visibility"),
1249 "value" =>
$lng->txt(
"filename_hidden_backup_file"),
1250 'propertyNameVisible' =>
false);
1251 } elseif (preg_match(
'/[\\/]/', $this->title)) {
1252 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1253 "value" =>
$lng->txt(
"filename_special_characters"),
1254 'propertyNameVisible' =>
false);
1255 } elseif (preg_match(
'/[\\\\\\/:*?"<>|]/', $this->title)) {
1256 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1257 "value" =>
$lng->txt(
"filename_windows_special_characters"),
1258 'propertyNameVisible' =>
false);
1259 } elseif (preg_match(
'/\\.$/', $this->title)) {
1260 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1261 "value" =>
$lng->txt(
"filename_windows_empty_extension"),
1262 'propertyNameVisible' =>
false);
1263 } elseif (preg_match(
'/^(\\.|\\.\\.)$/', $this->title)) {
1264 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1265 "value" =>
$lng->txt(
"filename_special_filename"),
1266 'propertyNameVisible' =>
false);
1267 } elseif (preg_match(
'/#/', $this->title)) {
1268 $props[] = array(
"alert" =>
false,
"property" =>
$lng->txt(
"filename_interoperability"),
1269 "value" =>
$lng->txt(
"filename_windows_webdav_issue"),
1270 'propertyNameVisible' =>
false);
1288 $this->cust_prop[] = array(
"property" => $a_property,
"value" => $a_value,
1289 "alert" => $a_alert,
"newline" => $a_newline);
1297 if (is_array($this->cust_prop)) {
1298 foreach ($this->cust_prop as $prop) {
1313 if ($prop[
'alert'] ==
true) {
1325 $this->notice_prop = array();
1326 if ($infos = $this->ldap_mapping->getInfoStrings($this->obj_id,
true)) {
1327 foreach ($infos as
$info) {
1328 $this->notice_prop[] = array(
'value' => $info);
1331 return $this->notice_prop ? $this->notice_prop : array();
1338 $this->cust_commands[] =
1339 array(
"link" => $a_link,
"lang_var" => $a_lang_var,
1340 "frame" => $a_frame,
"onclick" => $onclick);
1349 $this->force_visible_only = $a_stat;
1389 $ref_commands = array();
1390 foreach ($this->commands as $command) {
1391 $permission = $command[
"permission"];
1392 $cmd = $command[
"cmd"];
1393 $lang_var = $command[
"lang_var"];
1395 $info_object = null;
1397 if (isset($command[
"txt"])) {
1398 $txt = $command[
"txt"];
1403 if (
$ilUser->getId() == ANONYMOUS_USER_ID &&
1404 $command[
'enable_anonymous'] ==
'false') {
1418 $access_granted =
true;
1420 $access_granted =
false;
1421 $info_object = $ilAccess->getInfo();
1424 if (!isset($command[
"default"])) {
1425 $command[
"default"] =
"";
1427 $ref_commands[] = array(
1428 "permission" => $permission,
1430 "link" => $cmd_link,
1431 "frame" => $cmd_frame,
1432 "lang_var" => $lang_var,
1434 "granted" => $access_granted,
1435 "access_info" => $info_object,
1436 "img" => $cmd_image,
1437 "default" => $command[
"default"]
1441 return $ref_commands;
1454 if ($this->type ==
"sahs" && $this->offline_mode) {
1455 return $this->type .
"_offline";
1470 if ($this->restrict_to_goto) {
1471 $this->default_command = array(
"frame" =>
"",
1476 !$this->default_command ||
1478 $this->title_link_disabled
1481 $this->tpl->setCurrentBlock(
"item_title");
1482 $this->tpl->setVariable(
"TXT_TITLE", $this->
getTitle());
1483 $this->tpl->parseCurrentBlock();
1485 $this->default_command[
'link'] = $this->
modifyTitleLink($this->default_command[
'link']);
1487 $this->default_command[
"link"] =
1488 $this->
modifySAHSlaunch($this->default_command[
"link"], $this->default_command[
"frame"]);
1490 if ($this->default_command[
"frame"] !=
"") {
1491 $this->tpl->setCurrentBlock(
"title_linked_frame");
1492 $this->tpl->setVariable(
"TARGET_TITLE_LINKED", $this->default_command[
"frame"]);
1493 $this->tpl->parseCurrentBlock();
1497 #var_dump("<pre>",$this->default_command['link'],"</pre>"); 1498 $this->default_command[
"link"] =
1501 #var_dump("<pre>",$this->default_command['link'],"</pre>"); 1505 $this->tpl->setCurrentBlock(
"item_title_linked");
1506 $this->tpl->setVariable(
"TXT_TITLE_LINKED", $this->
getTitle());
1507 $this->tpl->setVariable(
"HREF_TITLE_LINKED", $this->default_command[
"link"]);
1510 include_once(
"./Services/Preview/classes/class.ilPreview.php");
1512 include_once(
"./Services/Preview/classes/class.ilPreviewGUI.php");
1515 $access_handler = null;
1516 switch ($this->context) {
1517 case self::CONTEXT_WORKSPACE:
1518 case self::CONTEXT_WORKSPACE_SHARING:
1520 include_once(
"./Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php");
1527 $access_handler = $ilAccess;
1533 $preview_status_class =
"";
1534 $preview_text_topic =
"preview_show";
1536 $preview_status_class =
"ilPreviewStatusNone";
1537 $preview_text_topic =
"preview_none";
1539 $this->tpl->setCurrentBlock(
"item_title_linked");
1540 $this->tpl->setVariable(
"PREVIEW_STATUS_CLASS", $preview_status_class);
1541 $this->tpl->setVariable(
"SRC_PREVIEW_ICON",
ilUtil::getImagePath(
"preview.png",
"Services/Preview"));
1542 $this->tpl->setVariable(
"ALT_PREVIEW_ICON", $this->lng->txt($preview_text_topic));
1543 $this->tpl->setVariable(
"TXT_PREVIEW", $this->lng->txt($preview_text_topic));
1544 $this->tpl->setVariable(
"SCRIPT_PREVIEW_CLICK",
$preview->getJSCall($this->getUniqueItemId(
true)));
1545 $this->tpl->parseCurrentBlock();
1548 $this->tpl->parseCurrentBlock();
1551 if ($this->bold_title ==
true) {
1552 $this->tpl->touchBlock(
'bold_title_start');
1553 $this->tpl->touchBlock(
'bold_title_end');
1559 switch ($this->context) {
1560 case self::CONTEXT_WORKSPACE_SHARING:
1561 include_once
"Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php";
1578 $fields_shown =
false;
1579 foreach ($this->substitutions->getParsedSubstitutions($this->ref_id, $this->obj_id) as
$data) {
1580 if (
$data[
'bold']) {
1581 $data[
'name'] =
'<strong>' .
$data[
'name'] .
'</strong>';
1582 $data[
'value'] =
'<strong>' .
$data[
'value'] .
'</strong>';
1584 $this->tpl->touchBlock(
"std_prop");
1585 $this->tpl->setCurrentBlock(
'item_property');
1586 if (
$data[
'show_field']) {
1587 $this->tpl->setVariable(
'TXT_PROP',
$data[
'name']);
1589 $this->tpl->setVariable(
'VAL_PROP',
$data[
'value']);
1590 $this->tpl->parseCurrentBlock();
1592 if (
$data[
'newline']) {
1593 $this->tpl->touchBlock(
'newline_prop');
1595 $fields_shown =
false;
1597 if ($fields_shown) {
1598 $this->tpl->touchBlock(
'newline_prop');
1614 if (!$this->substitutions->isDescriptionEnabled()) {
1621 $d = strip_tags(
$d,
"<b>");
1622 $this->tpl->setCurrentBlock(
"item_description");
1623 $this->tpl->setVariable(
"TXT_DESC",
$d);
1624 $this->tpl->parseCurrentBlock();
1634 $this->tpl->setCurrentBlock(
'search_fragment');
1635 $this->tpl->setVariable(
'TXT_SEARCH_FRAGMENT', $this->
getSearchFragment() .
' ...');
1636 $this->tpl->parseCurrentBlock();
1651 include_once
"Services/UIComponent/ProgressBar/classes/class.ilProgressBar.php";
1655 $this->tpl->setCurrentBlock(
'relevance');
1656 $this->tpl->setVariable(
'REL_PBAR', $pbar->render());
1657 $this->tpl->parseCurrentBlock();
1667 $this->mode = $a_mode;
1685 $this->condition_depth = $a_depth;
1697 if ($a_mode == $this->mode) {
1717 if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
1719 include_once
"Services/Tracking/classes/class.ilLPStatus.php";
1722 $props[] = array(
"alert" =>
false,
1723 "property" =>
$lng->txt(
"learning_progress"),
1730 if (
$ilUser->getId() == ANONYMOUS_USER_ID) {
1731 if (!$ilAccess->checkAccess(
"read",
"", $this->ref_id, $this->type, $this->obj_id)) {
1732 $props[] = array(
"alert" =>
true,
1733 "value" =>
$lng->txt(
"no_access_item_public"),
1742 if ($this->reference_ref_id) {
1744 $note_obj_id = $this->reference_obj_id;
1746 $redraw_js =
"il.Object.redrawListItem(" . $note_ref_id .
");";
1749 require_once
'Services/Notes/classes/class.ilNote.php';
1752 self::$cnt_tags[$note_obj_id] > 0 ||
1754 (
$ilUser->getId() != ANONYMOUS_USER_ID)) {
1755 include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
1756 include_once(
"./Services/Tagging/classes/class.ilTaggingGUI.php");
1761 $props[] = array(
"alert" =>
false,
1762 "property" =>
$lng->txt(
"notes_comments"),
1763 "value" =>
"<a href='#' onclick=\"return " .
1770 if ($this->notes_enabled && self::$cnt_notes[$note_obj_id][
IL_NOTE_PRIVATE] > 0) {
1771 $props[] = array(
"alert" =>
false,
1772 "property" =>
$lng->txt(
"notes"),
1773 "value" =>
"<a href='#' onclick=\"return " .
1779 if ($this->tags_enabled &&
1780 (self::$cnt_tags[$note_obj_id] > 0 ||
1783 if ($tags_set->get(
"enable")) {
1788 $tags_tmp = array();
1790 if ($is_tag_owner) {
1791 $tags_tmp[] =
"<a class=\"ilTag ilTagRelHigh\" href='#' onclick=\"return " .
1792 $tags_url .
"\">" .
$tag .
"</a>";
1794 $tags_tmp[] =
"<span class=\"ilTag ilTagRelMiddle\">" .
$tag .
"</span>";
1797 $tags_value = implode(
" ", $tags_tmp);
1802 $tags_value =
"<a href='#' onclick=\"return " . $tags_url .
"\">" .
1803 self::$cnt_tags[$note_obj_id] .
"</a>";
1804 $prop_text =
$lng->txt(
"tagging_tags");
1806 $props[] = array(
"alert" =>
false,
1807 "property" => $prop_text,
1808 "value" => $tags_value,
1814 if (!is_array($props)) {
1829 if (is_array($props) && count($props) > 0) {
1830 foreach ($props as $prop) {
1833 $this->tpl->touchBlock(
"separator_prop");
1837 if ($prop[
"alert"] ==
true) {
1838 $this->tpl->touchBlock(
"alert_prop");
1840 $this->tpl->touchBlock(
"std_prop");
1842 if ($prop[
"newline"] ==
true && $cnt > 1) {
1843 $this->tpl->touchBlock(
"newline_prop");
1846 if (isset($prop[
"property"]) && $prop[
'propertyNameVisible'] !==
false && $prop[
"property"] !=
"") {
1848 $this->tpl->setCurrentBlock(
"prop_name");
1849 $this->tpl->setVariable(
"TXT_PROP", $prop[
"property"]);
1850 $this->tpl->parseCurrentBlock();
1852 $this->tpl->setCurrentBlock(
"item_property");
1854 if ($prop[
'link']) {
1855 $this->tpl->setVariable(
"LINK_PROP", $prop[
'link']);
1856 $this->tpl->setVariable(
"LINK_VAL_PROP", $prop[
"value"]);
1858 $this->tpl->setVariable(
"VAL_PROP", $prop[
"value"]);
1861 $this->tpl->parseCurrentBlock();
1865 $this->tpl->setCurrentBlock(
"item_properties");
1866 $this->tpl->parseCurrentBlock();
1873 foreach ($this->notice_prop as $property) {
1874 $this->tpl->setCurrentBlock(
'notice_item');
1875 $this->tpl->setVariable(
'NOTICE_ITEM_VALUE', $property[
'value']);
1876 $this->tpl->parseCurrentBlock();
1878 $this->tpl->setCurrentBlock(
'notice_property');
1879 $this->tpl->parseCurrentBlock();
1889 $num_optional_required =
1893 $visible_conditions = array();
1894 $passed_optional = 0;
1895 foreach ($conditions as $condition) {
1896 if ($obligatory
and !$condition[
'obligatory']) {
1899 if (!$obligatory
and $condition[
'obligatory']) {
1903 if (
$tree->isDeleted($condition[
'trigger_ref_id'])) {
1907 include_once
'Services/Container/classes/class.ilMemberViewSettings.php';
1912 $visible_conditions[] = $condition[
'id'];
1915 if (!$obligatory
and $ok) {
1918 if ($passed_optional >= $num_optional_required) {
1924 foreach ($conditions as $condition) {
1925 if (!in_array($condition[
'id'], $visible_conditions)) {
1929 include_once
'./Services/Conditions/classes/class.ilConditionHandlerGUI.php';
1933 $class = $objDefinition->getClassName($condition[
"trigger_type"]);
1934 $location = $objDefinition->getLocation($condition[
"trigger_type"]);
1938 $missing_cond_exist =
true;
1940 $full_class =
"ilObj" . $class .
"ListGUI";
1941 include_once(
$location .
"/class." . $full_class .
".php");
1942 $item_list_gui =
new $full_class($this);
1944 $item_list_gui->enablePath(
false);
1945 $item_list_gui->enableIcon(
true);
1946 $item_list_gui->setConditionDepth($this->condition_depth + 1);
1948 $item_list_gui->addCustomProperty($this->lng->txt(
"precondition_required_itemlist"), $cond_txt,
false,
true);
1950 $item_list_gui->enableCommands($this->commands_enabled, $this->std_cmd_only);
1951 $item_list_gui->enableProperties($this->properties_enabled);
1953 $trigger_html = $item_list_gui->getListItemHTML(
1954 $condition[
'trigger_ref_id'],
1955 $condition[
'trigger_obj_id'],
1959 $this->tpl->setCurrentBlock(
"precondition");
1960 if ($trigger_html ==
"") {
1961 $trigger_html = $this->lng->txt(
"precondition_not_accessible");
1963 $this->tpl->setVariable(
"TXT_CONDITION", trim($cond_txt));
1964 $this->tpl->setVariable(
"TRIGGER_ITEM", $trigger_html);
1965 $this->tpl->parseCurrentBlock();
1968 if ($missing_cond_exist
and $obligatory) {
1969 $this->tpl->setCurrentBlock(
"preconditions");
1970 $this->tpl->setVariable(
"CONDITION_TOGGLE_ID",
"_obl_" . $toggle_id);
1971 $this->tpl->setVariable(
"TXT_PRECONDITIONS",
$lng->txt(
"preconditions_obligatory_hint"));
1972 $this->tpl->parseCurrentBlock();
1973 } elseif ($missing_cond_exist
and !$obligatory) {
1974 $this->tpl->setCurrentBlock(
"preconditions");
1975 $this->tpl->setVariable(
"CONDITION_TOGGLE_ID",
"_opt_" . $toggle_id);
1976 $this->tpl->setVariable(
"TXT_PRECONDITIONS", sprintf(
$lng->txt(
"preconditions_optional_hint"), $num_optional_required));
1977 $this->tpl->parseCurrentBlock();
1980 return !$missing_cond_exist;
1988 include_once(
"./Services/Conditions/classes/class.ilConditionHandler.php");
1991 if ($this->condition_depth > 0) {
1995 if ($this->condition_target) {
1996 $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget(
1997 $this->condition_target[
'ref_id'],
1998 $this->condition_target[
'obj_id'],
1999 $this->condition_target[
'target_type']
2002 $conditions = ilConditionHandler::_getEffectiveConditionsOfTarget($this->ref_id, $this->obj_id);
2005 if (
sizeof($conditions)) {
2006 for (
$i = 0;
$i < count($conditions);
$i++) {
2011 ++self::$js_unique_id;
2014 $all_done_obl = $this->
parseConditions(self::$js_unique_id, $conditions,
true);
2015 $all_done_opt = $this->
parseConditions(self::$js_unique_id, $conditions,
false);
2017 if (!$all_done_obl || !$all_done_opt) {
2018 $this->tpl->setCurrentBlock(
"preconditions_toggle");
2019 $this->tpl->setVariable(
"PRECONDITION_TOGGLE_INTRO", $this->lng->txt(
"precondition_toggle"));
2020 $this->tpl->setVariable(
"PRECONDITION_TOGGLE_TRIGGER", $this->lng->txt(
"show"));
2021 $this->tpl->setVariable(
"PRECONDITION_TOGGLE_ID", self::$js_unique_id);
2022 $this->tpl->setVariable(
"TXT_PRECONDITION_SHOW", $this->lng->txt(
"show"));
2023 $this->tpl->setVariable(
"TXT_PRECONDITION_HIDE", $this->lng->txt(
"hide"));
2024 $this->tpl->parseCurrentBlock();
2037 public function insertCommand($a_href, $a_text, $a_frame =
"", $a_img =
"", $a_cmd =
"", $a_onclick =
"")
2040 $chksum = md5($a_href . $a_text);
2041 if ($a_href ==
"#" ||
2042 !in_array($chksum, $this->prevent_duplicate_commands)) {
2043 if ($a_href !=
"#") {
2044 $this->prevent_duplicate_commands[] = $chksum;
2047 $prevent_background_click =
false;
2048 if ($a_cmd ==
'mount_webfolder') {
2049 $prevent_background_click =
true;
2052 if ($a_cmd ==
"downloadFolder") {
2053 include_once
"Services/BackgroundTask/classes/class.ilFolderDownloadBackgroundTaskHandler.php";
2060 $this->current_selection_list->addItem(
2068 $prevent_background_click,
2083 if ($this->std_cmd_only) {
2093 $this->adm_commands_included =
true;
2100 $this->ctrl->setParameter(
2101 $this->container_obj,
2103 $this->container_obj->object->getRefId()
2105 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2106 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"delete");
2109 $this->lng->txt(
"delete"),
2113 $this->adm_commands_included =
true;
2128 if ($this->std_cmd_only) {
2134 !$objDefinition->allowLink($this->type)) {
2145 $this->adm_commands_included =
true;
2152 $this->ctrl->setParameter(
2153 $this->container_obj,
2155 $this->container_obj->object->getRefId()
2157 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2158 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"link");
2161 $this->lng->txt(
"link"),
2165 $this->adm_commands_included =
true;
2177 if ($this->std_cmd_only) {
2187 $this->adm_commands_included =
true;
2197 $this->container_obj->object) {
2198 $this->ctrl->setParameter(
2199 $this->container_obj,
2201 $this->container_obj->object->getRefId()
2203 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2205 if (!$a_to_repository) {
2206 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"cut");
2209 $this->lng->txt(
"move"),
2214 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"cut_for_repository");
2217 $this->lng->txt(
"wsp_move_to_repository"),
2223 $this->adm_commands_included =
true;
2236 if ($this->std_cmd_only) {
2241 $objDefinition->allowCopy($this->type)) {
2242 if ($this->context != self::CONTEXT_WORKSPACE && $this->context != self::CONTEXT_WORKSPACE_SHARING) {
2243 $this->ctrl->setParameterByClass(
'ilobjectcopygui',
'source_id', $this->
getCommandId());
2244 $cmd_copy = $this->ctrl->getLinkTargetByClass(
'ilobjectcopygui',
'initTargetSelection');
2247 $this->ctrl->setParameter(
2248 $this->container_obj,
2250 $this->container_obj->object->getRefId()
2252 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2254 if (!$a_to_repository) {
2255 $cmd_copy = $this->ctrl->getLinkTarget($this->container_obj,
'copy');
2258 $cmd_copy = $this->ctrl->getLinkTarget($this->container_obj,
'copy_to_repository');
2259 $this->
insertCommand($cmd_copy, $this->lng->txt(
'wsp_copy_to_repository'));
2263 $this->adm_commands_included =
true;
2276 if ($this->std_cmd_only) {
2290 $this->adm_commands_included =
true;
2308 if ($this->std_cmd_only) {
2312 if ((
int)
$ilSetting->get(
'disable_my_offers')) {
2318 if (
$ilUser->getId() != ANONYMOUS_USER_ID) {
2320 if (is_object($this->container_obj) &&
2322 is_object($this->container_obj->object)) {
2323 $this->ctrl->setParameter($this->container_obj,
"ref_id", $this->container_obj->object->getRefId());
2326 if (!
$ilUser->isDesktopItem($this->getCommandId(),
$type)) {
2328 if ($this->
checkCommandAccess(
"read",
"", $this->ref_id, $this->type, $this->obj_id)) {
2330 $this->ctrl->setParameter($this->container_obj,
"type",
$type);
2331 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2332 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"addToDesk");
2335 $this->lng->txt(
"to_desktop"),
2343 $this->ctrl->setParameter($this->container_obj,
"type",
$type);
2344 $this->ctrl->setParameter($this->container_obj,
"item_ref_id", $this->
getCommandId());
2345 $cmd_link = $this->ctrl->getLinkTarget($this->container_obj,
"removeFromDesk");
2348 $this->lng->txt(
"unsubscribe"),
2362 if ($this->std_cmd_only) {
2369 $this->lng->txt(
"info_short"),
2386 if ($this->std_cmd_only ||
2387 (
$ilUser->getId() == ANONYMOUS_USER_ID)) {
2390 $lng->loadLanguageModule(
"notes");
2391 $lng->loadLanguageModule(
"tagging");
2393 include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
2397 if ($this->reference_ref_id) {
2401 $js_updater = $a_header_actions
2402 ?
"il.Object.redrawActionHeader();" 2403 :
"il.Object.redrawListItem(" . $note_ref_id .
")";
2409 $this->lng->txt(
"notes_comments"),
2417 if ($this->notes_enabled) {
2420 $this->lng->txt(
"notes"),
2428 if ($this->tags_enabled) {
2429 include_once(
"./Services/Tagging/classes/class.ilTaggingGUI.php");
2433 $this->lng->txt(
"tagging_set_tag"),
2449 if ($this->std_cmd_only || !$this->container_obj->object) {
2454 $parent_type = $this->container_obj->object->getType();
2457 if ($this->reference_ref_id) {
2458 $this->ctrl->setParameterByClass(
'ilobjectactivationgui',
'ref_id', $this->reference_ref_id);
2463 $this->ctrl->setParameterByClass(
2464 'ilobjectactivationgui',
2468 $this->ctrl->setParameterByClass(
2469 'ilobjectactivationgui',
2473 $cmd_lnk = $this->ctrl->getLinkTargetByClass(
2474 array($this->gui_class_name,
'ilcommonactiondispatchergui',
'ilobjectactivationgui'),
2478 $this->
insertCommand($cmd_lnk, $this->lng->txt(
'obj_activation_list_gui'));
2481 if ($this->reference_ref_id) {
2482 $this->ctrl->setParameterByClass(
'ilobjectactivationgui',
'ref_id', $this->ref_id);
2494 $a_use_asynch =
false,
2495 $a_get_asynch_commands =
false,
2497 $a_header_actions =
false 2506 include_once(
"Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
2508 $this->current_selection_list->setAsynch($a_use_asynch && !$a_get_asynch_commands);
2509 $this->current_selection_list->setAsynchUrl($a_asynch_url);
2510 if ($a_header_actions) {
2511 $this->current_selection_list->setListTitle(
"<span class='hidden-xs'>" .
$lng->txt(
"actions") .
"</span>");
2513 $this->current_selection_list->setListTitle(
"");
2515 $this->current_selection_list->setId(
"act_" . $this->
getUniqueItemId(
false));
2516 $this->current_selection_list->setSelectionHeaderClass(
"small");
2517 $this->current_selection_list->setItemLinkClass(
"xsmall");
2518 $this->current_selection_list->setLinksMode(
"il_ContainerItemCommand2");
2520 $this->current_selection_list->setUseImages(
false);
2521 $this->current_selection_list->setAdditionalToggleElement($this->
getUniqueItemId(
true),
"ilContainerListItemOuterHighlight");
2523 $this->ctrl->setParameterByClass($this->gui_class_name,
"ref_id", $this->ref_id);
2526 $only_default =
false;
2527 if ($a_use_asynch && !$a_get_asynch_commands) {
2528 $only_default =
true;
2531 $this->default_command =
false;
2532 $this->prevent_duplicate_commands = array();
2535 $valid_header_commands = array(
"mount_webfolder");
2537 $commands = $this->
getCommands($this->ref_id, $this->obj_id);
2538 foreach ($commands as $command) {
2539 if ($a_header_actions && !in_array($command[
"cmd"], $valid_header_commands)) {
2543 if ($command[
"granted"] ==
true) {
2544 if (!$command[
"default"] ===
true) {
2545 if (!$this->std_cmd_only && !$only_default) {
2550 $cmd_link = $command[
"link"];
2551 $txt = ($command[
"lang_var"] ==
"")
2553 : $this->lng->txt($command[
"lang_var"]);
2569 if (!$only_default) {
2571 if (is_array($this->cust_commands)) {
2572 foreach ($this->cust_commands as $command) {
2575 $this->lng->txt($command[
"lang_var"]),
2591 if ($this->timings_enabled) {
2596 if ($this->delete_enabled) {
2601 if ($this->link_enabled) {
2606 if ($this->cut_enabled) {
2611 if ($this->copy_enabled) {
2616 if ($this->repository_transfer_enabled) {
2622 if ($this->subscribe_enabled) {
2627 if ($this->multi_download_enabled && $a_header_actions) {
2632 if ($this->cut_enabled
or $this->link_enabled) {
2644 if (!$a_header_actions) {
2645 $this->ctrl->clearParametersByClass($this->gui_class_name);
2652 if ($a_use_asynch && !$a_get_asynch_commands && !$a_header_actions) {
2654 include_once(
"./Services/Container/classes/class.ilContainer.php");
2655 include_once(
"./Services/Object/classes/class.ilObjectServiceSettingsGUI.php");
2666 if ($a_use_asynch && $a_get_asynch_commands) {
2667 return $this->current_selection_list->getHTML(
true);
2670 return $this->current_selection_list->getHTML();
2687 $this->comments_enabled = (bool) $a_value;
2688 $this->comments_settings_enabled = (bool) $a_enable_comments_settings;
2705 $this->notes_enabled = (bool) $a_value;
2716 if (!$tags_set->get(
"enable")) {
2719 $this->tags_enabled = (bool) $a_value;
2730 public function enableRating($a_value, $a_text = null, $a_categories =
false, array $a_ctrl_path = null)
2732 $this->rating_enabled = (bool) $a_value;
2734 if ($this->rating_enabled) {
2735 $this->rating_categories_enabled = (bool) $a_categories;
2736 $this->rating_text = $a_text;
2737 $this->rating_ctrl_path = $a_ctrl_path;
2749 if (!$folder_set->get(
"enable_multi_download")) {
2752 $this->multi_download_enabled = (bool) $a_value;
2759 if ($this->std_cmd_only) {
2775 $user_id = $this->
user->getId();
2776 $hasAdminAccess = $this->access->checkAccessOfUser($user_id,
"crs_admin", $this->ctrl->getCmd(),
$_GET[
'ref_id']);
2779 if ($hasAdminAccess) {
2780 $cmd =
$_GET[
"cmd"] ==
"enableAdministrationPanel" ?
"render" :
"enableAdministrationPanel";
2782 $cmd =
$_GET[
"cmd"] ==
"enableMultiDownload" ?
"render" :
"enableMultiDownload";
2785 $this->
insertCommand($cmd_link, $this->lng->txt(
"download_multiple_objects"));
2798 if (in_array($this->type, array(
"file",
"fold")) &&
2799 $ilAccess->checkAccess(
"read",
"", $a_ref_id, $this->type)) {
2800 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_ENABLED;
2802 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_DISABLED;
2805 $this->download_checkbox_state = self::DOWNLOAD_CHECKBOX_NONE;
2817 public static function prepareJsLinks($a_redraw_url, $a_notes_url, $a_tags_url, $a_tpl = null)
2823 if (is_null($a_tpl)) {
2828 include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
2833 include_once(
"./Services/Tagging/classes/class.ilTaggingGUI.php");
2837 if ($a_redraw_url) {
2838 $a_tpl->addOnLoadCode(
"il.Object.setRedrawAHUrl('" .
2839 $a_redraw_url .
"');");
2851 $this->sub_obj_type =
$a_type;
2852 $this->sub_obj_id = (int) $a_id;
2864 public function addHeaderIcon($a_id, $a_img, $a_tooltip = null, $a_onclick = null, $a_status_text = null, $a_href = null)
2866 $this->header_icons[$a_id] = array(
"img" => $a_img,
2867 "tooltip" => $a_tooltip,
2868 "onclick" => $a_onclick,
2869 "status_text" => $a_status_text,
2880 $this->header_icons[$a_id] = $a_html;
2890 $this->header_icons[$a_id] = array(
"glyph" => $a_glyph,
"onclick" => $a_onclick);
2895 $this->ajax_hash = $a_hash;
2910 if ($a_main_tpl == null) {
2911 $main_tpl = $DIC[
"tpl"];
2913 $main_tpl = $a_main_tpl;
2916 $htpl =
new ilTemplate(
"tpl.header_action.html",
true,
true,
"Services/Repository");
2918 $redraw_js =
"il.Object.redrawActionHeader();";
2921 if ($this->tags_enabled) {
2922 include_once(
"./Services/Tagging/classes/class.ilTagging.php");
2930 if (count(
$tags) > 0) {
2931 include_once(
"./Services/Tagging/classes/class.ilTaggingGUI.php");
2932 $lng->loadLanguageModule(
"tagging");
2939 $f = $this->ui->factory();
2942 $f->glyph()->tag(
"#")
2943 ->withCounter(
$f->counter()->status((
int) count(
$tags))),
2951 if ($this->notes_enabled || $comments_enabled) {
2952 include_once(
"./Services/Notes/classes/class.ilNote.php");
2953 include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
2954 $type = ($this->sub_obj_type ==
"")
2956 : $this->sub_obj_type;
2959 if ($this->notes_enabled && $cnt[$this->obj_id][
IL_NOTE_PRIVATE] > 0) {
2967 $f = $this->ui->factory();
2970 $f->glyph()->note(
"#")
2971 ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][
IL_NOTE_PRIVATE])),
2976 if ($comments_enabled && $cnt[$this->obj_id][
IL_NOTE_PUBLIC] > 0) {
2977 $lng->loadLanguageModule(
"notes");
2985 $f = $this->ui->factory();
2988 $f->glyph()->comment(
"#")
2989 ->withCounter(
$f->counter()->status((
int) $cnt[$this->obj_id][
IL_NOTE_PUBLIC])),
2996 if ($this->rating_enabled) {
2997 include_once(
"./Services/Rating/classes/class.ilRatingGUI.php");
2999 $rating_gui->enableCategories($this->rating_categories_enabled);
3001 $rating_gui->setObject($this->obj_id, $this->type);
3002 if ($this->rating_text) {
3003 $rating_gui->setYourRatingText($this->rating_text);
3006 $this->ctrl->setParameterByClass(
"ilRatingGUI",
"cadh", $this->ajax_hash);
3007 $this->ctrl->setParameterByClass(
"ilRatingGUI",
"rnsb",
true);
3008 if ($this->rating_ctrl_path) {
3009 $rating_gui->setCtrlPath($this->rating_ctrl_path);
3010 $ajax_url = $this->ctrl->getLinkTargetByClass($this->rating_ctrl_path,
"saveRating",
"",
true,
false);
3013 $ajax_url = $this->ctrl->getLinkTargetByClass(
"ilRatingGUI",
"saveRating",
"",
true,
false);
3015 $main_tpl->addOnLoadCode(
"il.Object.setRatingUrl('" . $ajax_url .
"');");
3018 $rating_gui->getHtml(
3020 $this->checkCommandAccess(
"read",
"", $this->ref_id, $this->type),
3021 "il.Object.saveRating(%rating%);" 3026 if ($this->header_icons) {
3027 include_once(
"./Services/UIComponent/Tooltip/classes/class.ilTooltipGUI.php");
3030 foreach ($this->header_icons as
$id => $attr) {
3033 if (is_array($attr)) {
3034 if ($attr[
"glyph"]) {
3035 if ($attr[
"onclick"]) {
3036 $htpl->setCurrentBlock(
"prop_glyph_oc");
3037 $htpl->setVariable(
"GLYPH_ONCLICK", $attr[
"onclick"]);
3038 $htpl->parseCurrentBlock();
3040 $renderer = $this->ui->renderer();
3041 $html = $renderer->render($attr[
"glyph"]);
3042 $htpl->setCurrentBlock(
"prop_glyph");
3043 $htpl->setVariable(
"GLYPH",
$html);
3044 $htpl->parseCurrentBlock();
3046 if ($attr[
"onclick"]) {
3047 $htpl->setCurrentBlock(
"onclick");
3048 $htpl->setVariable(
"PROP_ONCLICK", $attr[
"onclick"]);
3049 $htpl->parseCurrentBlock();
3052 if ($attr[
"status_text"]) {
3053 $htpl->setCurrentBlock(
"status");
3054 $htpl->setVariable(
"PROP_TXT", $attr[
"status_text"]);
3055 $htpl->parseCurrentBlock();
3059 $htpl->setCurrentBlock(
"prop");
3060 if ($attr[
"href"] || $attr[
"onclick"]) {
3061 $htpl->setVariable(
"TAG",
"a");
3063 $htpl->setVariable(
"TAG",
"span");
3065 $htpl->setVariable(
"PROP_ID",
$id);
3066 $htpl->setVariable(
"IMG",
ilUtil::img($attr[
"img"], $attr[
"tooltip"]));
3067 if ($attr[
"href"] !=
"") {
3068 $htpl->setVariable(
"PROP_HREF",
' href="' . $attr[
"href"] .
'" ');
3070 $htpl->parseCurrentBlock();
3072 if ($attr[
"tooltip"]) {
3081 if (
sizeof($chunks)) {
3084 implode(
" ", $chunks) .
" " 3094 return $htpl->get();
3105 if ((strtolower(
$_GET[
"baseClass"]) !=
"ilrepositorygui") &&
3106 is_int(strpos($a_link,
"baseClass=ilRepositoryGUI"))) {
3107 if ($this->type !=
"frm") {
3118 if ($this->default_command_params) {
3120 foreach ($this->default_command_params as
$name => $value) {
3127 if (!stristr($a_default_link,
'?')) {
3128 $a_default_link = ($a_default_link .
'?' .
$params);
3130 $a_default_link = ($a_default_link .
'&' .
$params);
3133 return $a_default_link;
3143 if (strstr($a_link,
'ilSAHSPresentationGUI') && !$this->offline_mode) {
3144 include_once
'Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php';
3146 $om = $sahs_obj->getOpenMode();
3147 $width = $sahs_obj->getWidth();
3148 $height = $sahs_obj->getHeight();
3149 if (($om == 5 || $om == 1) && $width > 0 && $height > 0) {
3152 if ($om != 0 && !$DIC[
'ilBrowser']->isMobile()) {
3153 $this->default_command[
"frame"] =
"";
3154 $a_link =
"javascript:void(0); onclick=startSAHS('" . $a_link .
"','" . $wtarget .
"'," . $om .
"," . $width .
"," . $height .
");";
3168 if (!$this->path_gui instanceof \
ilPathGUI) {
3174 $path_gui->enableTextOnly(!$this->path_linked);
3177 $start_node = $this->path_start_node
3178 ? $this->path_start_node
3181 $this->tpl->setCurrentBlock(
"path_item");
3182 $this->tpl->setVariable(
'PATH_ITEM',
$path_gui->getPath($start_node, $this->ref_id));
3183 $this->tpl->parseCurrentBlock();
3185 $this->tpl->setCurrentBlock(
"path");
3186 $this->tpl->setVariable(
"TXT_LOCATION",
$lng->txt(
"locator"));
3187 $this->tpl->parseCurrentBlock();
3214 $this->tpl->setCurrentBlock(
"check");
3215 $this->tpl->setVariable(
"VAL_ID", $this->
getCommandId());
3216 $this->tpl->parseCurrentBlock();
3219 $this->tpl->setCurrentBlock(
"check_download");
3221 $this->tpl->setVariable(
"VAL_ID", $this->
getCommandId());
3223 $this->tpl->setVariable(
"VAL_VISIBILITY",
"visibility: hidden;\" disabled=\"disabled");
3225 $this->tpl->parseCurrentBlock();
3228 $this->tpl->setCurrentBlock(
'expand');
3231 $this->ctrl->setParameter($this->container_obj,
'expand', -1 * $this->obj_id);
3233 $this->tpl->setVariable(
'EXP_HREF', $this->ctrl->getLinkTarget($this->container_obj,
'view', $this->getUniqueItemId(
true)));
3234 $this->ctrl->clearParameters($this->container_obj);
3236 $this->tpl->setVariable(
'EXP_ALT', $this->lng->txt(
'collapse'));
3238 $this->ctrl->setParameter($this->container_obj,
'expand', $this->obj_id);
3240 $this->tpl->setVariable(
'EXP_HREF', $this->ctrl->getLinkTarget($this->container_obj,
'view', $this->getUniqueItemId(
true)));
3241 $this->ctrl->clearParameters($this->container_obj);
3243 $this->tpl->setVariable(
'EXP_ALT', $this->lng->txt(
'expand'));
3246 $this->tpl->parseCurrentBlock();
3252 $this->tpl->touchBlock(
"i_1");
3256 if ($this->title_link_disabled || !$this->default_command || (!$this->
getCommandsStatus() && !$this->restrict_to_goto)) {
3274 $this->tpl->setCurrentBlock(
"icon");
3275 if (!$objDefinition->isPlugin($this->getIconImageType())) {
3276 $this->tpl->setVariable(
"ALT_ICON",
$lng->txt(
"obj_" . $this->getIconImageType()));
3278 include_once(
"Services/Component/classes/class.ilPlugin.php");
3279 $this->tpl->setVariable(
"ALT_ICON",
3283 $this->tpl->setVariable(
3287 $this->tpl->parseCurrentBlock();
3291 $this->tpl->touchBlock(
"d_" . $cnt);
3300 return ilObject::_getIcon(
3312 foreach ($this->sub_item_html as $sub_html) {
3313 $this->tpl->setCurrentBlock(
"subitem");
3314 $this->tpl->setVariable(
"SUBITEM", $sub_html);
3315 $this->tpl->parseCurrentBlock();
3324 if ($this->position_enabled) {
3325 $this->tpl->setCurrentBlock(
"position");
3326 $this->tpl->setVariable(
"POS_ID", $this->position_field_index);
3327 $this->tpl->setVariable(
"POS_VAL", $this->position_value);
3328 $this->tpl->parseCurrentBlock();
3338 return $this->adm_commands_included;
3347 if ($this->acache->getLastAccessStatus() ==
"miss" &&
3348 !$this->prevent_access_caching) {
3349 $this->acache->storeEntry(
3351 serialize($this->access_cache),
3376 $a_use_asynch =
false,
3377 $a_get_asynch_commands =
false,
3384 $this->adm_commands_included =
false;
3390 $this->
initItem($a_ref_id, $a_obj_id, $a_title, $a_description);
3393 include_once
"Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
3394 if ($this->context == self::CONTEXT_REPOSITORY) {
3401 if ($a_use_asynch && $a_get_asynch_commands) {
3405 if ($this->rating_enabled) {
3410 $rating->setObject($this->obj_id, $this->type);
3419 $rating->getListGUIProperty($this->ref_id, $may_rate, $this->ajax_hash, $this->parent_ref_id),
3427 include_once(
"Services/Object/classes/class.ilListItemAccessCache.php");
3429 $cres = $this->acache->getEntry(
$ilUser->getId() .
":" . $a_ref_id);
3430 if ($this->acache->getLastAccessStatus() ==
"hit") {
3431 $this->access_cache = unserialize($cres);
3452 static::$tpl_file_name,
3455 static::$tpl_component,
3463 $this->tpl->setVariable(
3464 "COMMAND_SELECTION_LIST",
3465 $this->
insertCommands($a_use_asynch, $a_get_asynch_commands, $a_asynch_url)
3527 $this->tpl->setVariable(
"DIV_CLASS",
'ilContainerListItemOuter');
3536 return $this->tpl->get();
3545 $this->cust_prop = array();
3546 $this->cust_commands = array();
3547 $this->sub_item_html = array();
3548 $this->position_enabled =
false;
3558 $this->parent_ref_id = $a_ref_id;
3570 $id_ref = ($this->reference_ref_id > 0)
3571 ? $this->reference_ref_id
3575 if ($this->condition_depth) {
3586 return "lg_div_" . $id_ref;
3613 $this->bold_title = $a_bold_title;
3636 $lng = $DIC->language();
3640 if ($a_context == self::CONTEXT_REPOSITORY) {
3641 $active_notes = !
$ilSetting->get(
"disable_notes");
3642 $active_comments = !
$ilSetting->get(
"disable_comments");
3644 if ($active_notes || $active_comments) {
3645 include_once(
"./Services/Notes/classes/class.ilNote.php");
3648 if ($active_comments) {
3654 if (
$ilSetting->get(
'comments_tagging_in_lists')) {
3655 if ($active_notes || $active_comments) {
3658 $lng->loadLanguageModule(
"notes");
3662 if ($tags_set->get(
"enable")) {
3663 $all_users = $tags_set->get(
"enable_all_users");
3665 include_once(
"./Services/Tagging/classes/class.ilTagging.php");
3666 if (!
$ilSetting->get(
'comments_tagging_in_lists_tags')) {
3669 $tag_user_id = null;
3671 $tag_user_id =
$ilUser->getId();
3676 $lng->loadLanguageModule(
"tagging");
3680 $lng->loadLanguageModule(
"rating");
3683 self::$preload_done =
true;
3698 if ($this->comments_enabled) {
3699 if (!$this->comments_settings_enabled) {
3707 if (!$a_header_actions && self::$preload_done) {
3708 if (self::$comments_activation[$a_obj_id][
$a_type]) {
3712 include_once(
"./Services/Notes/classes/class.ilNote.php");
3730 $this->timings_enabled = (bool) $a_status;
3741 include_once(
"./Services/FileUpload/classes/class.ilFileUploadUtil.php");
3750 include_once(
"./Services/FileUpload/classes/class.ilFileUploadGUI.php");
3755 $this->tpl->setCurrentBlock(
"fileupload");
3756 $this->tpl->setVariable(
"FILE_UPLOAD", $upload->getHTML());
3757 $this->tpl->parseCurrentBlock();
parseConditions($toggle_id, $conditions, $obligatory=true)
getCommands()
get all current commands for a specific ref id (in the permission context of the current user) ...
getProgressInfoStatus()
get progress info status
static initFileUpload()
Initializes the file upload and loads the needed javascripts and styles.
insertTitle()
insert item title
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
Creates a path for a start and endnode.
insertIconsAndCheckboxes()
Insert icons and checkboxes.
const CONTEXT_WORKSPACE_SHARING
enableInfoScreen($a_info_screen)
En/disable path.
$repository_transfer_enabled
insertSearchFragment()
Insert highlighted search fragment.
setConditionTarget($a_ref_id, $a_obj_id, $a_target_type)
getDescription()
getDescription overwritten in class.ilObjLinkResourceList.php
isMode($a_mode)
check current output mode
getContainerObject()
get container object
insertLinkCommand()
insert link command
insertMultiDownloadCommand()
static commentsActivated($a_rep_obj_id, $a_obj_id, $a_obj_type, $a_news_id=0)
Are comments activated for object?
storeAccessCache()
Store access cache.
getIconStatus()
Are icons enabled?
getCommandLink($a_cmd)
Get command link url.
__construct($a_context=self::CONTEXT_REPOSITORY)
constructor
static lookupTxtById($plugin_id, $lang_var)
getTypeIcon()
Get object type specific type icon.
disableTitleLink($a_status)
enableNotes($a_value)
Toogle notes action status.
static initJavascript($a_ajax_url, ilTemplate $a_main_tpl=null)
Init javascript.
enableDelete($a_status)
En/disable delete.
insertCopyCommand($a_to_repository=false)
Insert copy command.
getCheckboxStatus()
Are checkboxes enabled?
addHeaderIcon($a_id, $a_img, $a_tooltip=null, $a_onclick=null, $a_status_text=null, $a_href=null)
const DOWNLOAD_CHECKBOX_NONE
static initJavascript($a_ajax_url, $a_type=IL_NOTE_PRIVATE, ilTemplate $a_main_tpl=null)
Init javascript.
insertPreconditions()
insert all missing preconditions
static translateOperator($a_obj_id, $a_operator)
Translate operator.
enableProperties($a_status)
En/disable properties.
static _isFileHidden($a_file_name)
Returns true, if a file with the specified name, is usually hidden from the user. ...
static _getStaticLink( $a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
addCustomCommand($a_link, $a_lang_var, $a_frame="", $onclick="")
add a custom command
getHeaderAction(ilTemplate $a_main_tpl=null)
Get header action.
resetCustomData()
reset properties and commands
getListItemHTML( $a_ref_id, $a_obj_id, $a_title, $a_description, $a_use_asynch=false, $a_get_asynch_commands=false, $a_asynch_url="")
Get all item information (title, commands, description) in HTML.
static _checkCondition($condition, $a_usr_id=0)
checks wether a single condition is fulfilled every trigger object type must implement a static metho...
if(!array_key_exists('StateId', $_REQUEST)) $id
enableCut($a_status)
En/disable cut.
getAdditionalInformation()
Get additional information.
const DOWNLOAD_CHECKBOX_ENABLED
insertPasteCommand()
Insert paste command.
Access handler for personal workspace.
getItemDetailLinkStatus()
get item detail link status
getCommandsHTML()
Get commands HTML (must be called after get list item html)
static _lookupTitle($a_id)
lookup object title
createDefaultCommand($command)
Get default command link Overwritten for e.g categories,courses => they return a goto link If search ...
setBoldTitle($a_bold_title)
public boolean $a_bold_title set the item title bold
insertCommand($a_href, $a_text, $a_frame="", $a_img="", $a_cmd="", $a_onclick="")
insert command button
getSubstitutionStatus()
Get substitution status.
enablePath($a_path, $a_start_node=null, \ilPathGUI $path_gui=null)
En/disable path.
static _isActive()
Static getter.
enableSubstitutions($a_status)
Enable substitutions.
enableSearchFragments($a_status)
En/disable description.
enableMultiDownload($a_value)
Toggles whether multiple objects can be downloaded at once or not.
static _lookupUserIsOfflineMode($a_obj_id)
Checks offlineMode and returns false if.
insertSubscribeCommand()
insert subscribe command
setContainerObject($container_obj)
set the container object (e.g categorygui) Used for link, delete ...
static preloadCommonProperties($a_obj_ids, $a_context)
Preload common properties.
$rating_categories_enabled
static hasRatingInListGUI($a_obj_id, $a_obj_type)
static $comments_activation
insertDeleteCommand()
insert cut command
static getListNotesJSCall($a_hash, $a_update_code=null)
Get list notes js call.
static lookupRenderStatus($a_obj_id)
Gets the render status for the object with the specified id.
isVisibleOnlyForced()
Force unreadable.
checkCommandAccess($a_permission, $a_cmd, $a_ref_id, $a_type, $a_obj_id="")
setDescription($a_description)
restrictToGoto($a_value)
Restrict all actions/links to goto.
enableLinkedPath($a_status)
Enable linked path.
getCommandFrame($a_cmd)
Get command target frame.
static _getInstance()
Get singleton instance of this class.
static calculateEffectiveRequiredTriggers($a_target_ref_id, $a_target_obj_id, $a_target_obj_type='')
calculate number of obligatory items
enableRepositoryTransfer($a_value)
Enable copy/move to repository (from personal workspace)
insertPositionField()
Insert field for positioning.
addCustomProperty( $a_property="", $a_value="", $a_alert=false, $a_newline=false)
add custom property
static getTagsForUserAndObject( $a_obj_id, $a_obj_type, $a_sub_obj_id, $a_sub_obj_type, $a_user_id)
Get tags for a user and an object.
setPositionInputField($a_field_index, $a_position_value)
Set position input field.
enableRating($a_value, $a_text=null, $a_categories=false, array $a_ctrl_path=null)
Toogle rating action status.
modifySAHSlaunch($a_link, $wtarget)
workaround: SAHS in new javavasript-created window or iframe
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string
static _getCommands()
get commands
getProperties()
Get item properties.
isFileUploadAllowed()
Gets a value indicating whether file uploads to this object are allowed or not.
getNoticeProperties()
get notice properties
static getInstance()
Factory.
enableSubscribe($a_status)
En/disable subscribe.
static hasPreview($a_obj_id, $a_type="")
Determines whether the object with the specified reference id has a preview.
getCommandId()
get command id Normally the ref id.
static getGotoLink($a_node_id, $a_obj_id, $a_additional=null)
const CONTEXT_PERSONAL_DESKTOP
static _countNotesAndComments( $a_rep_obj_id, $a_sub_obj_id=null, $a_obj_type="", $a_news_id=0)
Get all notes related to a specific object.
getDownloadCheckboxState()
insertProgressInfo()
insert progress info
enablePreconditions($a_status)
En/disable preconditions.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
determineProperties()
Determine properties.
enableDownloadCheckbox($a_ref_id, $a_value)
insertProperties()
insert properties
static prepareJsLinks($a_redraw_url, $a_notes_url, $a_tags_url, $a_tpl=null)
Insert js/ajax links into template.
enableDescription($a_status)
En/disable description.
insertSubItems()
Insert subitems.
static lookupOfflineStatus($a_obj_id)
Lookup offline status using objectDataCache.
static _lookupObjId($a_id)
enabledRelevance()
enabled relevance
setAdditionalInformation($a_val)
Set additional information.
special template class to simplify handling of ITX/PEAR
setSearchFragment($a_text)
set search fragment
static getListTagsJSCall($a_hash, $a_update_code=null)
Get tagging js call.
static getRepObjActivation($a_rep_obj_ids)
Get activation for repository objects.
insertInfoScreenCommand()
insert info screen command
static getListGUIStatus($a_obj_id, $a_image_only=true)
getSearchFragment()
get search fragment
static isActive()
Is folder background download active?
enableProgressInfo($a_status)
enable progress info
getDetailsLevel()
Get current details level.
enableNoticeProperties($a_status)
En/disable notices.
getSearchFragmentStatus()
Show hide search result fragments.
getCommandImage($a_cmd)
Get command icon image.
getIconImageType()
Returns the icon image type.
insertItemDetailLinks()
insert item detail links
forceVisibleOnly($a_stat)
Force visible access only.
enableCommands($a_status, $a_std_only=false)
En/disable commands.
static img($a_src, $a_alt=null, $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
static buildAjaxHash( $a_node_type, $a_node_id, $a_obj_type, $a_obj_id, $a_sub_type=null, $a_sub_id=null, $a_news_id=0)
Build ajax hash.
static _lookupType($a_id, $a_reference=false)
lookup object type
enableCopy($a_status)
En/disable copy.
static getListCommentsJSCall($a_hash, $a_update_code=null)
Get list comments js call.
setDetailsLevel($a_level)
Details level Currently used in Search which shows only limited properties of forums Currently used f...
Caches (check) access information on list items.
checkInfoPageOnAsynchronousRendering()
enableComments($a_value, $a_enable_comments_settings=true)
Toogle comments action status.
Class ilWebDAVLockBackend.
appendRepositoryFrameParameter($a_link)
workaround: all links into the repository (from outside) must tell repository to setup the frameset ...
getTitle()
getTitle overwritten in class.ilObjLinkResourceList.php
enableExpand($a_status)
En/Dis-able expand/collapse link.
User interface class for advanced drop-down selection lists.
setDefaultCommandParameters(array $a_params)
enableIcon($a_status)
En/Dis-able icons.
static _countTags($a_obj_ids, $a_all_users=false)
Count all tags for repository objects.
$prevent_duplicate_commands
setRelevance($a_rel)
set relevance
static getEffectiveOptionalConditionsOfTarget($a_target_ref_id, $a_target_obj_id, $a_obj_type='')
Get optional conditions.
setItemDetailLinks($a_detail_links, $a_intro_txt='')
set items detail links
enableItemDetailLinks($a_status)
enable item detail links E.g Direct links to chapters or pages
modifyTitleLink($a_default_link)
enableCheckbox($a_status)
En/Dis-able checkboxes.
static getInstance()
Get singleton instance.
setParentRefId($a_ref_id)
Set current parent ref id to enable unique js-ids (sessions, etc.)
addHeaderIconHTML($a_id, $a_html)
setConditionDepth($a_depth)
set depth for precondition output (stops at level 5)
getNoticePropertiesStatus()
getRelevance()
get relevance
Interface for gui classes (e.g ilLuceneSearchGUI) that offer add/remove to/from desktop.
enableTags($a_value)
Toogle tags action status.
static isUploadAllowed($a_ref_id, $a_type="")
Determines whether files can be uploaded to the object with the specified reference id...
isCommentsActivated($a_type, $a_ref_id, $a_obj_id, $a_header_actions, $a_check_write_access=true)
Check comments status against comments settings and context.
insertTimingsCommand()
insert edit timings command
isSideBlock()
Returns whether current item is a block in a side column or not.
static getInstance()
Get instance.
getUniqueItemId($a_as_div=false)
Get unique item identifier (for js-actions)
setSeparateCommands($a_val)
Set separate commands.
enableLink($a_status)
En/disable link.
setMode($a_mode)
set output mode
addHeaderGlyph($a_id, $a_glyph, $a_onclick=null)
getSeparateCommands()
Get separate commands.
const INFO_TAB_VISIBILITY
$item_detail_links_enabled
insertCommands( $a_use_asynch=false, $a_get_asynch_commands=false, $a_asynch_url="", $a_header_actions=false)
insert all commands into html code
$notice_properties_enabled
getAlertProperties()
get all alert properties
static getObjectListAction($a_ref_id)
Get object list action.
insertCommonSocialCommands($a_header_actions=false)
Insert common social commands (comments, notes, tagging)
Interface for GUI classes (PDGUI, LuceneSearchGUI...) that have to handle administration commands (cu...
getExpandStatus()
Is expand/collapse enabled.
getDefaultCommand()
Get default command.
setHeaderSubObject($a_type, $a_id)
Set sub object identifier.
$comments_settings_enabled
initItem($a_ref_id, $a_obj_id, $a_title="", $a_description="")
inititialize new item (is called by getItemHTML())
static _getListTagsForObjects(array $a_obj_ids, $a_user_id=null)
Get tags for given object ids.
$search_fragments_enabled
insertDescription()
insert item description
insertFileUpload()
Inserts a file upload component.
insertRelevance()
insert relevance
getCustomProperties($a_prop)
get custom properties
if(function_exists('posix_getuid') &&posix_getuid()===0) if(!array_key_exists('t', $options)) $tag
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d
static _lookupContainerSetting($a_id, $a_keyword, $a_default_value=null)
Lookup a container setting.
Class ilObjSCORMLearningModule.
const DOWNLOAD_CHECKBOX_DISABLED
static _countNotesAndCommentsMultiple($a_rep_obj_ids, $a_no_sub_objs=false)
Get all notes related to multiple objcts.
enableRelevance($a_status)
enable relevance
adminCommandsIncluded()
returns whether any admin commands (link, delete, cut) are included in the output ...
addSubItemHTML($a_html)
Add HTML for subitem (used for sessions)
enableTimings($a_status)
enable timings link
insertCutCommand($a_to_repository=false)
insert cut command
insertSubstitutions()
Insert substitutions.