50 public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
60 $DIC->language()->loadLanguageModule(
"lti");
61 $DIC->language()->loadLanguageModule(
"rep");
100 $userProviderList->setCreatorFilter($DIC->user()->getId());
102 if ($form->getFilter(
'title')) {
103 $globalProviderList->setTitleFilter($form->getFilter(
'title'));
104 $userProviderList->setTitleFilter($form->getFilter(
'title'));
107 if ($form->getFilter(
'category')) {
108 $globalProviderList->setCategoryFilter($form->getFilter(
'category'));
109 $userProviderList->setCategoryFilter($form->getFilter(
'category'));
112 if ($form->getFilter(
'keyword')) {
113 $globalProviderList->setKeywordFilter($form->getFilter(
'keyword'));
114 $userProviderList->setKeywordFilter($form->getFilter(
'keyword'));
117 if ($form->getFilter(
'outcome')) {
118 $globalProviderList->setHasOutcomeFilter(
true);
119 $userProviderList->setHasOutcomeFilter(
true);
122 if ($form->getFilter(
'internal')) {
123 $globalProviderList->setIsExternalFilter(
false);
124 $userProviderList->setIsExternalFilter(
false);
127 if ($form->getFilter(
'with_key')) {
128 $globalProviderList->setIsProviderKeyCustomizableFilter(
false);
129 $userProviderList->setIsProviderKeyCustomizableFilter(
false);
132 $globalProviderList->load();
133 $userProviderList->load();
135 $form->setData(array_merge(
136 $globalProviderList->getTableData(),
137 $userProviderList->getTableData()
151 $form->initForm($this->ctrl->getFormAction($this,
"save"),
'',
'');
153 $form->clearCommandButtons();
154 $form->addCommandButton(
"saveCustom", $this->lng->txt($a_new_type .
"_add_own_provider"));
155 $form->addCommandButton(
"cancel", $this->lng->txt(
"cancel"));
157 $form->setTitle($DIC->language()->txt($a_new_type .
'_custom_new'));
168 'applyProviderFilter',
169 'resetProviderFilter' 176 $form->applyFilter();
183 $form->resetFilter();
189 $classname =
"ilObj" . $this->objDefinition->getClassName($newType);
191 $newObj =
new $classname();
192 $newObj->setType($newType);
193 $newObj->setTitle($title);
194 $newObj->setDescription($description);
210 $new_type = $_REQUEST[
"new_type"];
211 $DIC->ctrl()->setParameter($this,
"new_type", $new_type);
213 $DIC->language()->loadLanguageModule($new_type);
217 if ($form->checkInput()) {
218 $DIC->ctrl()->setParameter($this,
"new_type",
"");
223 $form->getInput(
'title'),
224 $form->getInput(
'desc')
230 $newObj->applyDidacticTemplate($dtpl);
241 $form->setValuesByPost();
243 $DIC->ui()->mainTemplate()->setContent($form->getHtml());
251 if (isset(
$_GET[
'provider_id']) && (
int)
$_GET[
'provider_id']) {
252 $newObject->setProviderId((
int) $_GET[
'provider_id']);
253 $newObject->initProvider();
257 $newObject->setMasteryScore($newObject->getProvider()->getMasteryScore());
262 $DIC->ctrl()->redirectByClass(ilLTIConsumerSettingsGUI::class);
271 if ($form->checkInput()) {
273 $form->initProvider($provider);
275 $provider->setIsGlobal(
false);
276 $provider->setCreator($DIC->user()->getId());
279 $newObject->setProviderId($provider->getId());
280 $newObject->setProvider($provider);
283 $newObject->
setTitle($provider->getTitle());
284 $newObject->setMasteryScore($newObject->getProvider()->getMasteryScore());
289 $DIC->ctrl()->redirectByClass(ilObjLTIConsumerGUI::class);
293 'form validation seems to not have worked in ilObjLTIConsumer::saveCustom()!' 303 if (!$generalMetadata) {
307 $generalMetadata->setTitle($object->
getTitle());
308 $generalMetadata->
save();
310 $id = $generalMetadata->addIdentifier();
311 $id->setCatalog(
'ILIAS');
312 $id->setEntry(
'il__' . $object->
getType() .
'_' . $object->
getId());
315 $keywords = $object->
getProvider()->getKeywordsArray();
323 $return = parent::initHeaderAction($a_sub_type, $a_sub_id);
325 if ($this->creation_mode) {
330 if ($validator->isCertificateDownloadable((
int) $DIC->user()->getId(), (int) $this->object->getId())) {
331 $certLink = $DIC->ctrl()->getLinkTargetByClass(
332 [ilObjLTIConsumerGUI::class, ilLTIConsumerSettingsGUI::class],
336 $DIC->language()->loadLanguageModule(
'certificate');
338 $return->addCustomCommand($certLink,
'download_certificate');
340 $return->addHeaderIcon(
343 $DIC->language()->txt(
'download_certificate'),
353 public static function _goto($a_target)
356 $err = $DIC[
'ilErr'];
357 $ctrl = $DIC->ctrl();
358 $request = $DIC->http()->request();
360 $lng = $DIC->language();
362 $targetParameters = explode(
'_', $a_target);
363 $id = (int) $targetParameters[0];
366 $err->raiseError(
$lng->txt(
'msg_no_perm_read'), $err->FATAL);
369 if (
$access->checkAccess(
'read',
'', $id)) {
370 $ctrl->setTargetScript(
'ilias.php');
371 $ctrl->initBaseClass(ilRepositoryGUI::class);
372 $ctrl->setParameterByClass(ilObjLTIConsumerGUI::class,
'ref_id', $id);
373 if (isset($request->getQueryParams()[
'gotolp'])) {
374 $ctrl->setParameterByClass(ilObjLTIConsumerGUI::class,
'gotolp', 1);
376 $ctrl->redirectByClass([ilRepositoryGUI::class, ilObjLTIConsumerGUI::class]);
377 } elseif (
$access->checkAccess(
'visible',
'', $id)) {
379 } elseif (
$access->checkAccess(
'read',
'', ROOT_FOLDER_ID)) {
382 $DIC->language()->txt(
'msg_no_perm_read_item'),
391 $err->raiseError($DIC->language()->txt(
"msg_no_perm_read_lm"), $err->FATAL);
408 if (!$this->creation_mode) {
411 if ($this->object->getProvider()->hasProviderIcon()) {
412 $DIC->ui()->mainTemplate()->setTitleIcon(
413 $this->object->getProvider()->getProviderIcon()->getAbsoluteFilePath(),
414 'Icon ' . $this->
object->getProvider()->getTitle()
418 $link =
ilLink::_getLink($this->object->getRefId(), $this->
object->getType());
419 $navigationHistory = $DIC[
'ilNavigationHistory'];
420 $navigationHistory->addItem($this->object->getRefId(), $link, $this->
object->getType());
423 switch ($DIC->ctrl()->getNextClass()) {
424 case strtolower(ilObjectCopyGUI::class):
427 $gui->setType($this->
getType());
428 $DIC->ctrl()->forwardCommand($gui);
431 case strtolower(ilCommonActionDispatcherGUI::class):
434 $DIC->ctrl()->forwardCommand($gui);
437 case strtolower(ilLearningProgressGUI::class):
439 $DIC->tabs()->activateTab(self::TAB_ID_LEARNING_PROGRESS);
443 $this->object->getRefId()
446 $DIC->ctrl()->forwardCommand($gui);
450 case strtolower(ilObjectMetaDataGUI::class):
452 $DIC->tabs()->activateTab(self::TAB_ID_METADATA);
455 $DIC->ctrl()->forwardCommand($gui);
458 case strtolower(ilPermissionGUI::class):
460 $DIC->tabs()->activateTab(self::TAB_ID_PERMISSIONS);
463 $DIC->ctrl()->forwardCommand($gui);
466 case strtolower(ilLTIConsumerSettingsGUI::class):
468 $DIC->tabs()->activateTab(self::TAB_ID_SETTINGS);
471 $DIC->ctrl()->forwardCommand($gui);
474 case strtolower(ilLTIConsumerXapiStatementsGUI::class):
476 $DIC->tabs()->activateTab(self::TAB_ID_STATEMENTS);
479 $DIC->ctrl()->forwardCommand($gui);
483 case strtolower(ilLTIConsumerScoringGUI::class):
485 $DIC->tabs()->activateTab(self::TAB_ID_SCORING);
488 $DIC->ctrl()->forwardCommand($gui);
492 case strtolower(ilLTIConsumerEmbeddedContentGUI::class):
494 $DIC->tabs()->activateTab(self::TAB_ID_CONTENT);
497 $DIC->ctrl()->forwardCommand($gui);
502 $command = $DIC->ctrl()->getCmd(self::DEFAULT_CMD);
510 $DIC->language()->loadLanguageModule(
'lti');
512 $DIC->tabs()->addTab(
514 $DIC->language()->txt(self::TAB_ID_INFO),
515 $DIC->ctrl()->getLinkTargetByClass(self::class)
518 if (!$this->object->getOfflineStatus() && $this->
object->isLaunchMethodEmbedded() &&
521 $DIC->tabs()->addTab(
522 self::TAB_ID_CONTENT,
523 $DIC->language()->txt(self::TAB_ID_CONTENT),
524 $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerEmbeddedContentGUI::class)
528 if ($this->ltiAccess->hasWriteAccess()) {
529 $DIC->tabs()->addTab(
530 self::TAB_ID_SETTINGS,
531 $DIC->language()->txt(self::TAB_ID_SETTINGS),
532 $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerSettingsGUI::class)
536 if ($this->ltiAccess->hasStatementsAccess()) {
537 $DIC->tabs()->addTab(
538 self::TAB_ID_STATEMENTS,
539 $DIC->language()->txt(self::TAB_ID_STATEMENTS),
540 $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerXapiStatementsGUI::class)
544 if ($this->ltiAccess->hasHighscoreAccess()) {
545 $DIC->language()->loadLanguageModule(
'lti');
546 $DIC->tabs()->addTab(
547 self::TAB_ID_SCORING,
548 $DIC->language()->txt(self::TAB_ID_SCORING),
549 $DIC->ctrl()->getLinkTargetByClass(ilLTIConsumerScoringGUI::class)
553 if ($this->ltiAccess->hasLearningProgressAccess() && $this->
object->getProvider()->getHasOutcome()) {
554 $DIC->tabs()->addTab(
555 self::TAB_ID_LEARNING_PROGRESS,
556 $DIC->language()->txt(self::TAB_ID_LEARNING_PROGRESS),
557 $DIC->ctrl()->getLinkTargetByClass(ilLearningProgressGUI::class)
561 if ($this->ltiAccess->hasWriteAccess()) {
563 $link = $gui->getTab();
566 $DIC->tabs()->addTab(
567 self::TAB_ID_METADATA,
568 $DIC->language()->txt(
'meta_data'),
574 if ($this->ltiAccess->hasEditPermissionsAccess()) {
575 $DIC->tabs()->addTab(
576 self::TAB_ID_PERMISSIONS,
577 $DIC->language()->txt(self::TAB_ID_PERMISSIONS),
578 $DIC->ctrl()->getLinkTargetByClass(ilPermissionGUI::class,
'perm')
582 if (defined(
'DEVMODE') && DEVMODE) {
583 $DIC->tabs()->addTab(
586 $DIC->ctrl()->getLinkTarget($this,
'debug')
595 $DIC->tabs()->activateTab(
'debug');
598 $filter->setActivityId($this->object->getActivityId());
600 $aggregateEndPointUrl = str_replace(
602 'api/statements/aggregate',
603 $this->object->getProvider()->getXapiLaunchUrl()
608 $aggregateEndPointUrl,
613 $this->object->getProvider()->getXapiLaunchKey(),
614 $this->
object->getProvider()->getXapiLaunchSecret()
623 $report = $request->queryReport($this->
object);
625 $DIC->ui()->mainTemplate()->setContent(
626 $report->getResponseDebug()
643 $this->object->getTitle(),
644 $this->ctrl->getLinkTarget($this, self::DEFAULT_CMD),
655 $this->object->getType(),
656 $this->
object->getRefId(),
657 $this->
object->getId(),
658 $DIC->user()->getId()
668 $DIC->tabs()->activateTab(self::TAB_ID_INFO);
670 $DIC->ctrl()->setCmd(
"showSummary");
671 $DIC->ctrl()->setCmdClass(
"ilinfoscreengui");
681 $ilErr->raiseError($DIC->language()->txt(
"msg_no_perm_read"));
689 $info->enablePrivateNotes();
695 $info->enableNewsEditing(
false);
699 $enable_internal_rss = $news_set->get(
"enable_rss_for_internal");
701 if ($enable_internal_rss) {
702 $info->setBlockProperty(
"news",
"settings",
true);
703 $info->setBlockProperty(
"news",
"public_notifications_option",
true);
708 $info->addMetaDataSections($this->object->getId(), 0, $this->
object->getType());
712 $info->addSection(
'DEVMODE Info');
713 $info->addProperty(
'Local Object ID', $this->object->getId());
714 $info->addProperty(
'Current User ID', $DIC->user()->getId());
717 require_once(
'Services/Tracking/classes/class.ilLPObjSettings.php');
719 $info->addSection($DIC->language()->txt(
"lti_info_learning_progress_section"));
721 $DIC->language()->txt(
"mastery_score"),
722 ($this->
object->getMasteryScorePercent()) .
' %' 727 $info->addSection($DIC->language()->txt(
"lti_info_privacy_section"));
730 $DIC->language()->txt(
"lti_con_prov_url"),
731 $this->
object->getProvider()->getProviderUrl()
735 $DIC->language()->txt(
"conf_privacy_name"),
740 $DIC->language()->txt(
"conf_privacy_ident"),
743 if ($this->object->getProvider()->isExternalProvider()) {
745 $DIC->language()->txt(
"lti_info_external_provider_label"),
746 $DIC->language()->txt(
'lti_info_external_provider_info')
750 if ($this->object->getProvider()->getUseXapi()) {
752 $DIC->language()->txt(
"lti_con_prov_xapi_launch_url"),
753 $this->
object->getProvider()->getXapiLaunchUrl()
758 $this->ctrl->forwardCommand($info);
765 if ($this->object->getOfflineStatus() ||
766 $this->
object->isLaunchMethodEmbedded() ||
771 $cmixUser =
new ilCmiXapiUser($this->object->getId(), $this->
user->getId(), $this->
object->getProvider()->getPrivacyIdent());
773 if ($user_ident ==
'' || $user_ident == null) {
775 $cmixUser->setUsrIdent($user_ident);
779 include_once(
"./Modules/LTIConsumer/classes/class.ilLTIConsumerLaunch.php");
781 $context = $ilLTIConsumerLaunch->getContext();
782 $contextType = $ilLTIConsumerLaunch::getLTIContextType($context[
"type"]);
783 $contextId = $context[
"id"];
784 $contextTitle = $context[
"title"];
786 require_once(
"Modules/SystemFolder/classes/class.ilObjSystemFolder.php");
787 require_once(
'./Services/Link/classes/class.ilLink.php');
790 $DIC->user()->getId(),
791 $this->
object->getRefId(),
792 $this->
object->getId()
795 $returnUrl = !$this->
object->isLaunchMethodOwnWin() ?
'' : str_replace(
798 ILIAS_HTTP_PATH .
"/" . $DIC->ctrl()->getLinkTarget($this,
"",
"",
false)
801 $launchParameters = $this->
object->buildLaunchParameters(
810 $button =
'<input class="btn btn-default ilPre" type="button" onClick="ltilaunch()" value = "' . $this->lng->txt(
"launch") .
'" />';
811 $target = $this->
object->getLaunchMethod() ==
"newWin" ?
"_blank" :
"_self";
813 $output =
'<form id="lti_launch_form" name="lti_launch_form" action="' . $this->
object->getProvider()->getProviderUrl() .
'" method="post" target="' . $target .
'" encType="application/x-www-form-urlencoded">';
814 foreach ($launchParameters as $field => $value) {
815 $output .= sprintf(
'<input type="hidden" name="%s" value="%s" />', $field, $value) .
"\n";
818 $output .=
'</form>';
819 $output .=
'<span id ="lti_launched" style="display:none">' . $this->lng->txt(
"launched") .
'</span>';
820 $output .=
'<script type="text/javascript"> 821 function ltilaunch() { 822 document.lti_launch_form.submit(); 823 document.getElementById("lti_launch_form").style.display = "none"; 824 document.getElementById("lti_launched").style.display = "inline"; 826 $DIC->toolbar()->addText($output);
832 if ($this->object->getProvider()->getProviderUrl() ==
'') {
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
initCustomCreateForm($a_new_type)
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
GUI class for the workflow of copying objects.
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
afterSave(ilObject $newObject)
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
fillCloneTemplate($a_tpl_varname, $a_type)
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
const AVAILABILITY_CREATE
static _lookupTitle($a_id)
lookup object title
createObject()
create new object form
setTitle($a_title)
set object title
static updateKeywords(ilMDGeneral $a_md_section, array $a_keywords)
Update keywords from input array.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _lookupDBMode($a_obj_id)
createNewObject($newType, $title, $description)
getId()
get object id public
static getPrivacyIdentString(int $ident)
const TAB_ID_LEARNING_PROGRESS
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
static getPrivacyNameString(int $ident)
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static hasCustomProviderCreationAccess()
static _lookupObjId($a_id)
static buildBasicAuth($lrsKey, $lrsSecret)
Validates if an active certificate is stored in the database and can be downloaded by the user...
handleAutoRating(ilObject $a_new_obj)
getTitle()
get object title public
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
getType()
get object type public
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static fillToken($usrId, $refId, $objId, $lrsTypeId=0)
putObjectInTree(ilObject $a_obj, $a_parent_node_id=null)
Add object to tree at given position.
buildProviderSelectionForm($a_new_type)
const CMD_DELIVER_CERTIFICATE
static isEmbeddedLaunchRequest()
__construct(Container $dic, ilPlugin $plugin)
const LP_CONTEXT_REPOSITORY
handleAvailablityMessage()
static getIdent($userIdentMode, ilObjUser $user)
prepareOutput($a_show_subobjects=true)
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
initMetadata(ilObjLTIConsumer $object)
update()
update object in db
initCreateForm($a_new_type)
initHeaderAction($a_sub_type=null, $a_sub_id=null)
addHeaderAction()
Add header action menu.
Class ilObjUserTrackingGUI.
static _getLink($a_ref_id, $a_type='', $a_params=array(), $append="")
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
initCreationForms($a_new_type)