52 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference)
56 $this->
lng = $DIC->language();
57 $this->
user = $DIC->user();
58 $this->
ctrl = $DIC->ctrl();
59 $this->
tabs = $DIC->tabs();
60 $this->
help = $DIC[
"ilHelp"];
61 $this->
locator = $DIC[
"ilLocator"];
62 $this->tpl = $DIC[
"tpl"];
63 $this->
toolbar = $DIC->toolbar();
64 $lng = $DIC->language();
66 $this->
lng->loadLanguageModule(
'cert');
73 $this->
ctrl->saveParameter($this,
"ass_id");
75 $this->service = $DIC->exercise()->internal();
76 $this->exercise_request = $DIC->exercise()->internal()->gui()->request();
77 $this->exercise_ui = $DIC->exercise()->internal()->gui();
78 $this->requested_ass_id = $this->exercise_request->getAssId();
81 $this->requested_ass_id
82 ) === $this->
object->getId()) {
83 $this->ass = $this->exercise_request->getAssignment();
84 } elseif ($this->requested_ass_id > 0) {
88 $this->lp_user_id = ($this->exercise_request->getUserId() > 0)
89 ?: $this->
user->getId();
90 $this->requested_sort_order = $this->exercise_request->getSortOrder();
91 $this->requested_sort_by = $this->exercise_request->getSortBy();
92 $this->requested_offset = $this->exercise_request->getOffset();
93 $this->requested_ref_id = $this->exercise_request->getRefId();
94 $this->requested_ass_id_goto = $this->exercise_request->getAssIdGoto();
108 $next_class = $this->
ctrl->getNextClass($this);
109 $cmd = $this->
ctrl->getCmd();
116 $this->tpl->setPermanentLink(
"exc", $this->
object->getRefId());
120 switch ($next_class) {
121 case "ilinfoscreengui":
122 $ilTabs->activateTab(
"info");
126 case 'ilpermissiongui':
127 $ilTabs->activateTab(
"permissions");
129 $this->
ctrl->forwardCommand($perm_gui);
132 case "illearningprogressgui":
133 $ilTabs->activateTab(
"learning_progress");
136 $this->
object->getRefId(),
139 $this->
ctrl->forwardCommand($new_gui);
140 $this->tabs_gui->setTabActive(
'learning_progress');
143 case 'ilobjectcopygui':
144 $ilCtrl->saveParameter($this,
'new_type');
145 $ilCtrl->setReturnByClass(get_class($this),
'create');
149 $this->
ctrl->forwardCommand($cp);
153 $ilTabs->activateTab(
"export");
155 $exp_gui->addFormat(
"xml");
156 $this->
ctrl->forwardCommand($exp_gui);
159 case "ilcommonactiondispatchergui":
161 $this->
ctrl->forwardCommand($gui);
164 case "ilcertificategui":
167 $this->tabs_gui->activateTab(
"settings");
168 $this->tabs_gui->activateSubTab(
"certificate");
171 $output_gui = $guiFactory->create($this->
object);
173 $this->
ctrl->forwardCommand($output_gui);
176 case "ilexassignmenteditorgui":
178 $ilTabs->activateTab(
"content");
182 $this->
object->isCompletionBySubmissionEnabled(),
185 $this->
ctrl->forwardCommand($ass_gui);
188 case "ilexsubmissiongui":
190 $random_manager = $this->service->domain()->assignment()->randomAssignments($exc);
191 if (!$random_manager->isAssignmentVisible($this->requested_ass_id, $this->user->getId())) {
194 $ilTabs->activateTab(
"content");
196 $this->
ctrl->setReturn($this,
"showOverview");
197 $sub_gui = $this->exercise_ui->getSubmissionGUI();
198 $this->
ctrl->forwardCommand($sub_gui);
201 case "ilexercisemanagementgui":
203 if (
$GLOBALS[
'DIC']->
access()->checkRbacOrPositionPermissionAccess(
204 'edit_submissions_grades',
205 'edit_submissions_grades',
208 $ilTabs->activateTab(
"grades");
210 $this->
ctrl->forwardCommand($mgmt_gui);
216 case "ilexccriteriacataloguegui":
218 $ilTabs->activateTab(
"settings");
220 $ilTabs->activateSubTab(
"crit");
222 $this->
ctrl->forwardCommand($crit_gui);
232 case "ilexcrandomassignmentgui":
233 $gui = $this->exercise_ui->getRandomAssignmentGUI();
234 $this->
ctrl->forwardCommand($gui);
237 case 'ilobjectmetadatagui':
239 $this->tabs_gui->setTabActive(
'meta_data');
241 $this->
ctrl->forwardCommand($md_gui);
267 $a_new_object->saveData();
269 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"exc_added"),
true);
271 $ilCtrl->setParameterByClass(
"ilExAssignmentEditorGUI",
"ref_id", $a_new_object->
getRefId());
272 $ilCtrl->redirectByClass(
"ilExAssignmentEditorGUI",
"addAssignment");
282 $ilCtrl->redirectByClass(
"ilExAssignmentEditorGUI",
"listAssignments");
292 $random_manager = $service->
domain()->assignment()->randomAssignments($exc);
294 $a_form->
setTitle($this->
lng->txt(
"exc_edit_exercise"));
297 $pres->setTitle($this->
lng->txt(
'obj_presentation'));
301 $a_form = $obj_service->commonSettings()->legacyForm($a_form, $this->
object)->addTileImage();
304 $section->setTitle($this->
lng->txt(
'exc_passing_exc'));
311 $this->
lng->txt(
"exc_pass_all"),
313 $this->
lng->txt(
"exc_pass_all_info")
315 $radg->addOption($op1);
317 $this->
lng->txt(
"exc_pass_minimum_nr"),
319 $this->
lng->txt(
"exc_pass_minimum_nr_info")
321 $radg->addOption($op2);
323 $this->
lng->txt(
"exc_random_selection"),
325 $this->
lng->txt(
"exc_random_selection_info")
330 $this->
lng->txt(
"exc_random_selection_not_changeable_info") .
" " .
331 implode(
" ", $random_manager->getDeniedActivationReasons())
335 $radg->setDisabled(
true);
337 $this->
lng->txt(
"exc_pass_mode_not_changeable_info") .
" " .
338 implode(
" ", $random_manager->getDeniedDeactivationReasons())
344 $rn->setMaxLength(4);
345 $rn->setRequired(
true);
346 $rn->setMinValue(1,
false);
348 $rn->setMaxValue($cnt,
true);
349 $op3->addSubItem($rn);
351 $radg->addOption($op3);
356 $ni->setMaxLength(4);
357 $ni->setRequired(
true);
359 $min = max($mand, 1);
360 $ni->setMinValue($min,
true);
361 $ni->setInfo($this->
lng->txt(
"exc_min_nr_info"));
362 $op2->addSubItem($ni);
368 $this->
lng->txt(
"exc_passed_status_determination"),
369 "completion_by_submission" 371 $op1 =
new ilRadioOption($this->
lng->txt(
"exc_completion_by_tutor"), 0,
"");
372 $subcompl->addOption($op1);
374 $this->
lng->txt(
"exc_completion_by_submission"),
376 $this->
lng->txt(
"exc_completion_by_submission_info")
378 $subcompl->addOption($op2);
387 $section->setTitle($this->
lng->txt(
'exc_publishing'));
392 $cb->
setInfo($this->
lng->txt(
"exc_show_submissions_info"));
396 $section->setTitle($this->
lng->txt(
'exc_notification'));
401 $cbox->
setInfo($this->
lng->txt(
"exc_submission_notification_info"));
407 $section->setTitle($this->
lng->txt(
'exc_feedback'));
414 $this->
lng->txt(
"exc_settings_feedback_mail"),
417 $option->
setInfo($this->
lng->txt(
"exc_settings_feedback_mail_info"));
418 $fdb->addOption($option);
420 $this->
lng->txt(
"exc_settings_feedback_file"),
423 $option->
setInfo($this->
lng->txt(
"exc_settings_feedback_file_info"));
424 $fdb->addOption($option);
426 $this->
lng->txt(
"exc_settings_feedback_text"),
429 $option->
setInfo($this->
lng->txt(
"exc_settings_feedback_text_info"));
430 $fdb->addOption($option);
434 $section->setTitle($this->
lng->txt(
'obj_features'));
440 ->getObjectPositionSettingsByType($this->
object->getType());
442 if ($position_settings->isActive()) {
458 $a_values[
"show_submissions"] = $this->
object->getShowSubmissions();
459 $a_values[
"pass_mode"] = $this->
object->getPassMode();
460 if ($a_values[
"pass_mode"] ==
"nr") {
461 $a_values[
"pass_nr"] = $this->
object->getPassNr();
464 $a_values[
"nr_random_mand"] = $this->
object->getNrMandatoryRandom();
469 $this->
object->getId()
472 $a_values[
'completion_by_submission'] = (
int) $this->
object->isCompletionBySubmissionEnabled();
474 $tfeedback = array();
475 if ($this->
object->hasTutorFeedbackMail()) {
478 if ($this->
object->hasTutorFeedbackText()) {
481 if ($this->
object->hasTutorFeedbackFile()) {
484 $a_values[
'tfeedback'] = $tfeedback;
488 ->isPositionAccessActiveForObject(
504 $this->
object->setShowSubmissions($a_form->
getInput(
"show_submissions"));
505 $this->
object->setPassMode($a_form->
getInput(
"pass_mode"));
506 if ($this->
object->getPassMode() ==
"nr") {
507 $this->
object->setPassNr($a_form->
getInput(
"pass_nr"));
510 $this->
object->setNrMandatoryRandom($a_form->
getInput(
"nr_random_mand"));
513 $this->
object->setCompletionBySubmission($a_form->
getInput(
'completion_by_submission') == 1);
515 $feedback = $a_form->
getInput(
"tfeedback");
516 $this->
object->setTutorFeedback(
518 ? array_sum($feedback)
525 $this->
object->getId(),
526 (bool) $a_form->
getInput(
"notification")
530 $obj_service->commonSettings()->legacyForm($a_form, $this->
object)->saveTileImage();
551 $ilCtrl->getLinkTarget($this,
"showOverview")
557 $ilCtrl->getLinkTargetByClass(
"ilExAssignmentEditorGUI",
"listAssignments")
560 $ilTabs->activateSubTab($a_activate);
563 protected function getTabs():
void 569 $ilHelp->setScreenIdComponent(
"exc");
572 $this->tabs_gui->addTab(
580 $this->tabs_gui->addTab(
583 $this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui",
"showSummary")
593 $this->tabs_gui->addTab(
596 $this->
ctrl->getLinkTarget($this,
'edit')
599 if ($this->
access->checkRbacOrPositionPermissionAccess(
600 'edit_submissions_grades',
601 'edit_submissions_grades',
602 $this->object->getRefId()
604 $this->tabs_gui->addTab(
606 $lng->
txt(
"exc_submissions_and_grades"),
607 $this->
ctrl->getLinkTargetByClass(
"ilexercisemanagementgui",
"members")
615 $this->tabs_gui->addTab(
617 $lng->
txt(
'learning_progress'),
618 $this->
ctrl->getLinkTargetByClass(array(
'ilobjexercisegui',
'illearningprogressgui'),
'')
623 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
625 $mdtab = $mdgui->getTab();
627 $this->tabs_gui->addTarget(
631 "ilobjectmetadatagui" 638 $this->tabs_gui->addTab(
641 $this->
ctrl->getLinkTargetByClass(
"ilexportgui",
"")
647 $this->tabs_gui->addTab(
650 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm")
660 $this->
ctrl->setCmd(
"showSummary");
661 $this->
ctrl->setCmdClass(
"ilinfoscreengui");
673 public function infoScreen():
void 679 $ilTabs->activateTab(
"info");
690 $info->enablePrivateNotes();
694 $info->enableNewsEditing();
695 $info->setBlockProperty(
"news",
"settings",
true);
700 $record_gui->parse();
703 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
706 $info->addSection($this->
lng->txt(
"exc_overview"));
710 foreach ($ass as
$a) {
712 if ($a[
"mandatory"]) {
716 $info->addProperty(
$lng->
txt(
"exc_assignments"), $cnt);
718 $info->addProperty(
$lng->
txt(
"exc_mandatory"), $mcnt);
721 $lng->
txt(
"exc_msg_all_mandatory_ass")
724 $info->addProperty(
$lng->
txt(
"exc_mandatory"), $mcnt);
727 sprintf(
$lng->
txt(
"exc_msg_min_number_ass"), $this->
object->getPassNr())
730 $info->addProperty(
$lng->
txt(
"exc_mandatory"), $exc->getNrMandatoryRandom());
733 $lng->
txt(
"exc_msg_all_mandatory_ass")
742 $st = $this->
object->determinStatusOfUser(
$ilUser->getId());
743 $status = $st[
"overall_status"];
744 if ($lpcomment !=
"" || $mark !=
"" || $status !=
"notgraded") {
745 $info->addSection($this->
lng->txt(
"exc_feedback_from_tutor"));
746 if ($lpcomment !=
"") {
748 $this->
lng->txt(
"exc_comment"),
754 $this->
lng->txt(
"exc_mark"),
765 if ($status !=
"notgraded") {
770 $path = $icons->getImagePathCompleted();
773 $path = $icons->getImagePathFailed();
782 if ($st[
"failed_a_mandatory"]) {
783 $add =
" (" .
$lng->
txt(
"exc_msg_failed_mandatory") .
")";
784 } elseif ($status ==
"failed") {
785 $add =
" (" .
$lng->
txt(
"exc_msg_missed_minimum_number") .
")";
788 $this->
lng->txt(
"status"),
789 $img .
" " . $this->
lng->txt(
"exc_" . $status) . $add
796 $this->
ctrl->forwardCommand($info);
802 $this->tabs_gui->activateSubTab(
"edit");
803 parent::editObject();
808 $this->tabs_gui->addSubTab(
810 $this->
lng->txt(
"general_settings"),
811 $this->
ctrl->getLinkTarget($this,
"edit")
814 $this->tabs_gui->addSubTab(
816 $this->
lng->txt(
"exc_criteria_catalogues"),
817 $this->
ctrl->getLinkTargetByClass(
"ilexccriteriacataloguegui",
"")
821 if ($validator->validate()) {
822 $this->tabs_gui->addSubTab(
824 $this->
lng->txt(
"certificate"),
825 $this->
ctrl->getLinkTarget($this,
"certificate")
836 $main_tpl = $DIC->ui()->mainTemplate();
838 $request = $DIC->exercise()->internal()->gui()->request();
841 $lng = $DIC->language();
842 $ilAccess = $DIC->access();
843 $ilCtrl = $DIC->ctrl();
846 $ilCtrl->setTargetScript(
"ilias.php");
850 $parts = explode(
"_", $a_raw);
871 $ilCtrl->setParameterByClass(
"ilExerciseHandlerGUI",
"ref_id", $a_target);
873 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
874 $ilCtrl->setParameterByClass(
"ilExerciseHandlerGUI",
"target", $a_raw);
877 $ilCtrl->setParameterByClass(
"ilExerciseManagementGUI",
"ass_id", $ass_id);
882 $ilCtrl->redirectByClass(
883 array(
"ilExerciseHandlerGUI",
"ilObjExerciseGUI",
"ilExerciseManagementGUI"),
894 $ilCtrl->setParameterByClass(
"ilExerciseHandlerGUI",
"member_id", $member);
895 $ilCtrl->redirectByClass(
896 array(
"ilExerciseHandlerGUI",
"ilObjExerciseGUI",
"ilExerciseManagementGUI"),
902 if ((
$parts[1] ??
"") !=
"") {
903 $ilCtrl->setParameterByClass(
"ilExerciseHandlerGUI",
"ass_id",
$parts[1]);
904 $ilCtrl->setParameterByClass(
"ilExerciseHandlerGUI",
"ass_id_goto",
$parts[1]);
906 $ilCtrl->redirectByClass(
907 array(
"ilExerciseHandlerGUI",
"ilObjExerciseGUI"),
913 } elseif ($ilAccess->checkAccess(
"visible",
"", $a_target)) {
914 $ilCtrl->redirectByClass(
915 array(
"ilExerciseHandlerGUI",
"ilObjExerciseGUI"),
919 $main_tpl->setOnScreenMessage(
'failure', sprintf(
920 $lng->
txt(
"msg_no_perm_read_item"),
934 if (is_object($this->
object)) {
937 $this->
object->getTitle(),
938 $this->
ctrl->getLinkTarget($this,
"showOverview"),
958 public function showOverviewObject():
void 969 $ilTabs->activateTab(
"content");
972 if ($this->handleRandomAssignmentEntryPage()) {
980 $this->
object->getId(),
981 $this->
object->getRefId(),
985 if ($this->certificateDownloadValidator->isCertificateDownloadable(
987 $this->
object->getId()
989 $ilToolbar->addButton(
990 $this->
lng->txt(
"certificate"),
991 $this->
ctrl->getLinkTarget($this,
"outCertificate")
998 $acc->setId(
"exc_ow_" . $this->
object->getId());
1001 $random_manager = $this->service->domain()->assignment()->randomAssignments($exc);
1002 foreach ($ass_data as $ass) {
1003 if (!$random_manager->isAssignmentVisible($ass->getId(), $this->
user->getId())) {
1008 $force_open =
false;
1009 if ($this->requested_ass_id_goto === $ass->getId()) {
1014 $ass_gui->getOverviewHeader($ass),
1015 $ass_gui->getOverviewBody($ass),
1020 if (count($ass_data) < 2) {
1021 $acc->setBehaviour(
"FirstOpen");
1023 $acc->setUseSessionStorage(
true);
1026 $mtpl =
new ilTemplate(
"tpl.exc_ass_overview.html",
true,
true,
"Modules/Exercise");
1027 $mtpl->setVariable(
"CONTENT", $acc->getHTML());
1039 $this->tabs_gui->activateTab(
"settings");
1040 $this->tabs_gui->activateSubTab(
"certificate");
1043 $output_gui = $guiFactory->create($this->
object);
1045 $output_gui->certificateEditor();
1052 $database = $DIC->database();
1053 $logger = $DIC->logger()->root();
1057 $objectId = $this->
object->
getId();
1059 if (!$this->certificateDownloadValidator->isCertificateDownloadable(
$ilUser->getId(), $objectId)) {
1060 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
1061 $this->
ctrl->redirect($this);
1065 $pdfGenerator =
new ilPdfGenerator($ilUserCertificateRepository, $logger);
1071 $this->
lng->txt(
'error_creating_certificate_pdf')
1085 if ($this->ass !== null) {
1087 if (!$state->getCommonDeadline() && $state->getRelativeDeadline()) {
1088 $idl = $state->getIndividualDeadlineObject();
1089 $idl->setStartingTimestamp(time());
1100 protected function handleRandomAssignmentEntryPage():
bool 1106 $random_manager = $service->
domain()->assignment()->randomAssignments($exc);
1107 if ($random_manager->needsStart()) {
1108 $gui = $this->exercise_ui->getRandomAssignmentGUI();
1109 $gui->renderStartPage();
Class ilExAssignmentEditorGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilPdfGeneratorConstantsTest.
Class ilExcCriteriaCatalogueGUI.
static _lookupComment(int $a_usr_id, int $a_obj_id)
getTabs()
overwrite in derived GUI class of your object type
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...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
redirect(object $a_gui_obj, string $a_cmd=null, string $a_anchor=null, bool $is_async=false)
string $requested_sort_by
setDisabled(bool $a_disabled)
GUI class for the workflow of copying objects.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
addContentSubTabs(string $a_activate)
static count(int $a_ex_id)
prepareOutput(bool $show_sub_objects=true)
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static countMandatory(int $a_ex_id)
updateCustom(ilPropertyFormGUI $a_form)
static getInstance(int $variant=ilLPStatusIcons::ICON_VARIANT_DEFAULT, ?\ILIAS\UI\Renderer $renderer=null, ?\ILIAS\UI\Factory $factory=null)
Exercise internal service.
loadLanguageModule(string $a_module)
Load language module.
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
getEditFormCustomValues(array &$a_values)
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupContainerSetting(int $a_id, string $a_keyword, string $a_default_value=null)
static _lookupObjId(int $ref_id)
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
GUI class for exercise assignments.
const TUTOR_FEEDBACK_FILE
const TUTOR_FEEDBACK_TEXT
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getAssignmentDataOfExercise(int $a_exc_id)
static _goto(string $a_target, string $a_raw)
int $requested_ass_id_goto
Exercise GUIRequest $exercise_request
ilGlobalTemplateInterface $tpl
const TUTOR_FEEDBACK_MAIL
static _lookupTitle(int $obj_id)
setContent(string $a_html)
Sets content for standard template.
static setNotification(int $type, int $user_id, int $id, bool $status=true)
Set notification status for object and user.
ServerRequestInterface $request
Class ilObjectGUI Basic methods of all Output classes.
startAssignmentObject()
Start assignment with relative deadline.
Validates if an active certificate is stored in the database and can be downloaded by the user...
static getInstanceByIds(int $a_ass_id, int $a_user_id=0)
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
addJavaScript(string $a_js_file, bool $a_add_version_parameter=true, int $a_batch=2)
Add a javascript file that should be included in the header.
clearParametersByClass(string $a_class)
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
const TYPE_EXERCISE_SUBMISSION
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
Class ilExerciseManagementGUI.
static getInstancesByExercise(int $a_exc_id)
afterSave(ilObject $a_new_object)
static _lookupMark(int $a_usr_id, int $a_obj_id)
Just a wrapper class to create Unit Test for other classes.
getLinkTarget(object $a_gui_obj, string $a_cmd=null, string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
ilCertificateDownloadValidator $certificateDownloadValidator
__construct(Container $dic, ilPlugin $plugin)
const LP_CONTEXT_REPOSITORY
addItem(string $a_title, string $a_link, string $a_frame="", int $a_ref_id=0, ?string $type=null)
static hasNotification(int $type, int $user_id, int $id)
Check notification status for object and user.
__construct($a_data, int $a_id, bool $a_call_by_reference)
getLongDescription()
get object long description (stored in object_description)
setInfoObject(ilInfoScreenGUI $info)
get info sections
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
Exercise InternalGUIService $exercise_ui
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
const ORGU_POSITION_ACCESS
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
addHeaderAction()
Add header action menu.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
initEditCustomForm(ilPropertyFormGUI $a_form)
Add custom fields to update form.
string $requested_sort_order
static lookupExerciseId(int $a_ass_id)
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
addLocatorItems()
Add locator item.
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
downloadPdf(int $userId, int $objectId)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...