19 declare(strict_types=1);
39 protected \ILIAS\DI\Container
$dic;
46 public function __construct(array $a_data,
int $a_id,
bool $a_call_by_reference, ?
bool $a_prepare_output =
true)
50 $this->
lng = $DIC->language();
51 $this->
access = $DIC->access();
52 $this->
ctrl = $DIC->ctrl();
53 $this->tpl = $DIC[
"tpl"];
54 $this->
tabs = $DIC->tabs();
55 $this->rbacsystem = $DIC->rbac()->system();
56 $this->tree = $DIC->repositoryTree();
57 $this->
toolbar = $DIC->toolbar();
59 $this->
help = $DIC[
"ilHelp"];
60 $this->error = $DIC[
"ilErr"];
61 $this->
user = $DIC->user();
62 $this->tool_context = $DIC->globalScreen()->tool()->context();
63 $lng = $DIC->language();
71 #$this->tabs_gui = new ilTabsGUI(); 80 if ($this->call_by_reference) {
93 $cmd = $ilCtrl->getCmd();
94 parent::executeCommand();
113 $ilTabs->setSubTabActive(
'cont_settings');
115 $ilToolbar->addButtonInstance($this->
object->getViewButton());
133 $this->
object->checkMasteryScoreValues();
136 $this->
form->setFormAction($ilCtrl->getFormAction($this));
137 $this->
form->setTitle($this->
lng->txt(
"cont_lm_properties"));
141 $ti->setMaxLength(200);
142 $this->
form->addItem($ti);
148 $this->
form->addItem($ti);
153 $this->
form->addItem($ne);
157 $ne->setValue($this->
object->getModuleVersion());
158 $ne->setInfo($this->
lng->txt(
"cont_sc_version_info"));
159 $this->
form->addItem($ne);
165 $sh->setTitle($this->
lng->txt(
"activation"));
166 $this->
form->addItem($sh);
170 $cb->setInfo($this->
lng->txt(
"cont_online_info"));
171 $this->
form->addItem($cb);
178 $sh->setTitle($this->
lng->txt(
"cont_presentation"));
179 $this->
form->addItem($sh);
196 $op0->
setInfo($this->
lng->txt(
"cont_open_normal_info"));
197 $radg->addOption($op0);
199 $op1->
setInfo($this->
lng->txt(
"cont_open_iframe_info"));
200 $radg->addOption($op1);
202 $op2->
setInfo($this->
lng->txt(
"cont_open_window_info"));
203 $radg->addOption($op2);
208 $op1->addSubItem($ni);
212 $op2->addSubItem($ni);
217 $ni->setInfo($this->
lng->txt(
"cont_width_height_info"));
218 $op1->addSubItem($ni);
222 $ni->setInfo($this->
lng->txt(
"cont_width_height_info"));
223 $op2->addSubItem($ni);
228 $cb->setInfo($this->
lng->txt(
"cont_ie_force_render_info"));
229 $op2->addSubItem($cb);
231 $this->
form->addItem($radg);
238 $cb->setInfo($this->
lng->txt(
"cont_nomenu_info"));
239 $this->
form->addItem($cb);
245 $cb->setInfo($this->
lng->txt(
"cont_hidenavig_info"));
246 $this->
form->addItem($cb);
251 $cb->setInfo($this->
lng->txt(
"cont_auto_last_visited_info"));
252 $this->
form->addItem($cb);
255 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->addTileImage();
261 $sh->setTitle($this->
lng->txt(
"cont_scorm_options"));
262 $this->
form->addItem($sh);
266 $op0 =
new ilRadioOption($this->
lng->txt(
"cont_sc_less_mode_normal"),
"normal");
267 $op0->
setInfo($this->
lng->txt(
"cont_sc_less_mode_normal_info"));
268 $radg->addOption($op0);
269 $op1 =
new ilRadioOption($this->
lng->txt(
"cont_sc_less_mode_browse"),
"browse");
270 $op1->
setInfo($this->
lng->txt(
"cont_sc_less_mode_browse_info"));
271 $radg->addOption($op1);
274 "n" => $this->
lng->txt(
"cont_sc_auto_review_no"),
275 "r" => $this->
lng->txt(
"cont_sc_auto_review_completed_not_failed_or_passed"),
276 "p" => $this->
lng->txt(
"cont_sc_auto_review_passed"),
277 "q" => $this->
lng->txt(
"cont_sc_auto_review_passed_or_failed"),
278 "c" => $this->
lng->txt(
"cont_sc_auto_review_completed"),
279 "d" => $this->
lng->txt(
"cont_sc_auto_review_completed_and_passed"),
280 "y" => $this->
lng->txt(
"cont_sc_auto_review_completed_or_passed"),
281 "s" => $this->
lng->txt(
"cont_sc_store_if_previous_score_was_lower")
285 $si->setInfo($this->
lng->txt(
"cont_sc_auto_review_info_2004"));
288 $this->
form->addItem($radg);
291 if ($this->
object->getMasteryScoreValues() !=
"") {
295 $ni->setInfo($this->
lng->txt(
"cont_mastery_score_2004_info") .
' ' . $this->
object->getMasteryScoreValues());
296 $this->
form->addItem($ni);
303 $sh->setTitle($this->
lng->txt(
"cont_rte_settings"));
304 $this->
form->addItem($sh);
309 $cb->setInfo($this->
lng->txt(
"cont_sc_usession_info"));
310 $this->
form->addItem($cb);
315 $cb->setInfo($this->
lng->txt(
"cont_fourth_edition_info"));
316 $this->
form->addItem($cb);
321 $cb->setInfo($this->
lng->txt(
"cont_sequencing_info"));
322 $this->
form->addItem($cb);
327 $cb->setInfo($this->
lng->txt(
"cont_interactions_info"));
328 $this->
form->addItem($cb);
333 $cb->setInfo($this->
lng->txt(
"cont_objectives_info"));
334 $this->
form->addItem($cb);
339 $cb->setInfo($this->
lng->txt(
"cont_comments_info"));
340 $this->
form->addItem($cb);
345 $cb->setInfo($this->
lng->txt(
"cont_time_from_lms_info"));
346 $this->
form->addItem($cb);
351 $cb->setInfo($this->
lng->txt(
"cont_check_values_info"));
352 $this->
form->addItem($cb);
357 $cb->setInfo($this->
lng->txt(
"cont_auto_suspend_info"));
358 $this->
form->addItem($cb);
362 0 => $this->
lng->txt(
"cont_sc_id_setting_user_id"),
363 1 => $this->
lng->txt(
"cont_sc_id_setting_user_login"),
364 2 => $this->
lng->txt(
"cont_sc_id_setting_user_id_plus_ref_id"),
365 3 => $this->
lng->txt(
"cont_sc_id_setting_user_login_plus_ref_id"),
366 4 => $this->
lng->txt(
"cont_sc_id_setting_user_id_plus_obj_id"),
367 5 => $this->
lng->txt(
"cont_sc_id_setting_user_login_plus_obj_id")
371 $si->setInfo($this->
lng->txt(
"cont_sc_id_setting_info"));
372 $this->
form->addItem($si);
376 0 => $this->
lng->txt(
"cont_sc_name_setting_last_firstname"),
377 1 => $this->
lng->txt(
"cont_sc_name_setting_first_lastname"),
378 2 => $this->
lng->txt(
"cont_sc_name_setting_fullname"),
379 3 => $this->
lng->txt(
"cont_sc_name_setting_salutation_lastname"),
380 4 => $this->
lng->txt(
"cont_sc_name_setting_first_name"),
381 9 => $this->
lng->txt(
"cont_sc_name_setting_no_name")
385 $si->setInfo($this->
lng->txt(
"cont_sc_name_setting_info"));
386 $this->
form->addItem($si);
392 $sh->setTitle($this->
lng->txt(
"cont_debugging"));
393 $this->
form->addItem($sh);
398 if ($this->
object->getDebugActivated() ==
false) {
399 $cb->setDisabled(
true);
400 $cb->setInfo($this->
lng->txt(
"cont_debug_deactivated"));
402 $cb->setInfo($this->
lng->txt(
"cont_debug_deactivate"));
404 $this->
form->addItem($cb);
405 $this->
form->addCommandButton(
"saveProperties",
$lng->
txt(
"save"));
415 $values[
"Fobject_title"] = $this->
object->getTitle();
416 $values[
"Fobject_description"] = $this->
object->getLongDescription();
417 if (!$this->
object->getOfflineStatus()) {
418 $values[
"cobj_online"] =
true;
420 $values[
"open_mode"] = $this->
object->getOpenMode();
421 $values[
"width_0"] = $this->
object->getWidth();
422 $values[
"width_1"] = $this->
object->getWidth();
423 $values[
"height_0"] = $this->
object->getHeight();
424 $values[
"height_1"] = $this->
object->getHeight();
425 $values[
"cobj_ie_force_render"] = $this->
object->getIe_force_render();
426 $values[
"cobj_nomenu"] = $this->
object->getNoMenu();
427 $values[
"cobj_hidenavig"] = $this->
object->getHideNavig();
428 $values[
"cobj_auto_last_visited"] = $this->
object->getAuto_last_visited();
429 $values[
"lesson_mode"] = $this->
object->getDefaultLessonMode();
430 $values[
"auto_review"] = $this->
object->getAutoReviewChar();
431 $values[
"mastery_score"] = $this->
object->getMasteryScore();
432 $values[
"cobj_session"] = $this->
object->getSession();
433 $values[
"cobj_fourth_edition"] = $this->
object->getFourth_edition();
434 $values[
"cobj_sequencing"] = $this->
object->getSequencing();
435 $values[
"cobj_interactions"] = $this->
object->getInteractions();
436 $values[
"cobj_objectives"] = $this->
object->getObjectives();
437 $values[
"cobj_comments"] = $this->
object->getComments();
438 $values[
"cobj_time_from_lms"] = $this->
object->getTime_from_lms();
439 $values[
"cobj_check_values"] = $this->
object->getCheck_values();
440 $values[
"cobj_auto_suspend"] = $this->
object->getAutoSuspend();
441 $values[
"id_setting"] = $this->
object->getIdSetting();
442 $values[
"name_setting"] = $this->
object->getNameSetting();
443 $values[
"cobj_debug"] = $this->
object->getDebug();
444 $this->
form->setValuesByArray($values);
455 $this->
form->checkInput();
456 if ($this->dic->http()->wrapper()->post()->has(
'mastery_score')) {
457 $sMasteryScore = $this->dic->http()->wrapper()->post()->retrieve(
'mastery_score', $this->dic->refinery()->kindlyTo()->string());
458 if ($sMasteryScore !==
"") {
459 $this->
object->setMasteryScore((
int) $sMasteryScore);
461 $this->
object->setMasteryScore(
null);
465 $t_auto_review = $this->dic->http()->wrapper()->post()->retrieve(
'auto_review', $this->dic->refinery()->kindlyTo()->string());
466 $t_auto_suspend = $this->dic->http()->wrapper()->post()->has(
'cobj_auto_suspend');
467 $t_session = $this->dic->http()->wrapper()->post()->has(
'cobj_session');
468 if ($t_auto_review ===
"s") {
469 $t_auto_suspend =
true;
474 $t_height = $this->
object->getHeight();
475 if ($this->dic->http()->wrapper()->post()->retrieve(
'height_0', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getHeight()) {
476 $t_height = $this->dic->http()->wrapper()->post()->retrieve(
'height_0', $this->dic->refinery()->kindlyTo()->int());
478 if ($this->dic->http()->wrapper()->post()->retrieve(
'height_1', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getHeight()) {
479 $t_height = $this->dic->http()->wrapper()->post()->retrieve(
'height_1', $this->dic->refinery()->kindlyTo()->int());
482 $t_width = $this->
object->getWidth();
483 if ($this->dic->http()->wrapper()->post()->retrieve(
'width_0', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getWidth()) {
484 $t_width = $this->dic->http()->wrapper()->post()->retrieve(
'width_0', $this->dic->refinery()->kindlyTo()->int());
486 if ($this->dic->http()->wrapper()->post()->retrieve(
'width_1', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getWidth()) {
487 $t_width = $this->dic->http()->wrapper()->post()->retrieve(
'width_1', $this->dic->refinery()->kindlyTo()->int());
490 $this->
object->setOfflineStatus(!($this->dic->http()->wrapper()->post()->has(
'cobj_online')));
491 $this->
object->setOpenMode($this->dic->http()->wrapper()->post()->retrieve(
'open_mode', $this->dic->refinery()->kindlyTo()->int()));
492 $this->
object->setWidth($t_width);
493 $this->
object->setHeight($t_height);
495 $this->
object->setAutoReviewChar($t_auto_review);
496 $this->
object->setDefaultLessonMode($this->dic->http()->wrapper()->post()->retrieve(
'lesson_mode', $this->dic->refinery()->kindlyTo()->string()));
497 $this->
object->setSession($t_session);
498 $this->
object->setNoMenu($this->dic->http()->wrapper()->post()->has(
'cobj_nomenu'));
499 $this->
object->setHideNavig($this->dic->http()->wrapper()->post()->has(
'cobj_hidenavig'));
500 $this->
object->setAuto_last_visited($this->dic->http()->wrapper()->post()->has(
'cobj_auto_last_visited'));
501 $this->
object->setIe_force_render($this->dic->http()->wrapper()->post()->has(
'cobj_ie_force_render'));
502 $this->
object->setFourth_edition($this->dic->http()->wrapper()->post()->has(
'cobj_fourth_edition'));
503 $this->
object->setSequencing($this->dic->http()->wrapper()->post()->has(
'cobj_sequencing'));
504 $this->
object->setInteractions($this->dic->http()->wrapper()->post()->has(
'cobj_interactions'));
505 $this->
object->setObjectives($this->dic->http()->wrapper()->post()->has(
'cobj_objectives'));
506 $this->
object->setComments($this->dic->http()->wrapper()->post()->has(
'cobj_comments'));
507 $this->
object->setTime_from_lms($this->dic->http()->wrapper()->post()->has(
'cobj_time_from_lms'));
508 $this->
object->setCheck_values($this->dic->http()->wrapper()->post()->has(
'cobj_check_values'));
509 $this->
object->setAutoSuspend($t_auto_suspend);
511 $this->
object->setDebug($this->dic->http()->wrapper()->post()->has(
'cobj_debug'));
512 $this->
object->setIdSetting($this->dic->http()->wrapper()->post()->retrieve(
'id_setting', $this->dic->refinery()->kindlyTo()->int()));
513 $this->
object->setNameSetting($this->dic->http()->wrapper()->post()->retrieve(
'name_setting', $this->dic->refinery()->kindlyTo()->int()));
514 $this->
object->setTitle($this->dic->http()->wrapper()->post()->retrieve(
'Fobject_title', $this->dic->refinery()->kindlyTo()->string()));
515 $this->
object->setDescription($this->dic->http()->wrapper()->post()->retrieve(
'Fobject_description', $this->dic->refinery()->kindlyTo()->string()));
518 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
520 $this->
object->update();
521 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
522 $this->
ctrl->redirect($this,
"properties");
533 $ilTabs->setTabActive(
"cont_tracking_data");
534 $ilTabs->setSubTabActive(
"cont_tracking_bysco");
536 $reports = array(
'exportSelectedCore',
'exportSelectedInteractions',
'exportSelectedObjectives',
'tracInteractionItem',
'tracInteractionUser',
'tracInteractionUserAnswers');
538 $scoSelected =
"all";
539 if ($this->dic->http()->wrapper()->query()->has(
'scoSelected')) {
540 $scoSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'scoSelected', $this->dic->refinery()->kindlyTo()->string()));
542 if ($this->dic->http()->wrapper()->post()->has(
'scoSelected')) {
543 $scoSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'scoSelected', $this->dic->refinery()->kindlyTo()->string()));
546 $this->
ctrl->setParameter($this,
'scoSelected', $scoSelected);
549 if ($this->dic->http()->wrapper()->query()->has(
'report')) {
550 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
552 if ($this->dic->http()->wrapper()->post()->has(
'report')) {
553 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
555 $this->
ctrl->setParameter($this,
'report', $report);
557 $filter->parse($scoSelected, $report, $reports);
558 if ($report ===
"choose") {
559 $this->tpl->setContent($filter->form->getHTML());
561 $scosSelected = array();
562 if ($scoSelected !==
"all") {
563 $scosSelected[] = $scoSelected;
565 $tmpscos = $this->
object->getTrackedItems();
566 foreach ($tmpscos as $i => $value) {
567 $scosSelected[] = $value[
"id"];
572 $this->tpl->setContent($filter->form->getHTML() . $tbl->getHTML());
582 $ilTabs->setTabActive(
'cont_tracking_data');
584 if ($ilAccess->checkAccess(
"read_learning_progress",
"", $this->object->getRefId())) {
586 $ilTabs->setSubTabActive(
'cont_tracking_byuser');
588 $reports = array(
'exportSelectedSuccess',
'exportSelectedCore',
'exportSelectedInteractions',
'exportSelectedObjectives',
'exportObjGlobalToSystem');
590 $userSelected =
"all";
591 if ($this->dic->http()->wrapper()->query()->has(
'userSelected')) {
592 $userSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'userSelected', $this->dic->refinery()->kindlyTo()->string()));
594 if ($this->dic->http()->wrapper()->post()->has(
'userSelected')) {
595 $userSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'userSelected', $this->dic->refinery()->kindlyTo()->string()));
597 $this->
ctrl->setParameter($this,
'userSelected', $userSelected);
600 if ($this->dic->http()->wrapper()->query()->has(
'report')) {
601 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
603 if ($this->dic->http()->wrapper()->post()->has(
'report')) {
604 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
606 $this->
ctrl->setParameter($this,
'report', $report);
608 $filter->parse($userSelected, $report, $reports);
609 if ($report ===
"choose") {
610 $this->tpl->setContent($filter->form->getHTML());
612 $usersSelected = array();
613 if ($userSelected !==
"all") {
614 $usersSelected[] = $userSelected;
617 foreach ($users as $usr) {
620 $usersSelected[] =
$user;
624 $scosSelected = array();
625 $tmpscos = $this->
object->getTrackedItems();
626 foreach ($tmpscos as $i => $value) {
627 $scosSelected[] = $value[
"id"];
630 $this->tpl->setContent($filter->form->getHTML() . $tbl->getHTML());
632 } elseif ($ilAccess->checkAccess(
"edit_learning_progress",
"", $this->object->getRefId())) {
This class represents an option in a radio group.
Class ilObjSCORMLearningModuleGUI.
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...
saveProperties()
save scorm 2004 module properties
ContextServices $tool_context
Class ilSCORM2004TrackingItemsPerUserFilterGUI.
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
setContent(string $a_html)
Sets content for standard template.
loadLanguageModule(string $a_module)
Load language module.
setSettingsSubTabs()
List files.
getPropertiesFormValues()
Get values for properties form.
static _lookupSubType(int $a_obj_id)
lookup subtype id (scorm, )
Class ilSCORM2004TrackingItemsPerScoFilterGUI.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
getNextClass($a_gui_class=null)
Class ilSCORM2004TrackingItemsTableGUI.
ilGlobalTemplateInterface $tpl
showTrackingItemsBySco()
show tracking data
form( $class_path, string $cmd, string $submit_caption="")
__construct(Container $dic, ilPlugin $plugin)
Class ilObjSCORM2004LearningModule.
This class represents a text area property in a property form.
static getParticipantsForObject(int $a_ref_id)
Get participant ids for given object.
assignObject()
assign scorm object to scorm gui object
__construct(array $a_data, int $a_id, bool $a_call_by_reference, ?bool $a_prepare_output=true)
addHeaderAction()
Add header action menu.
initPropertiesForm()
Initialize properties form.
properties()
Scorm 2004 module properties.
Class ilObjSCORMLearningModuleGUI.