ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
LtiViewLayoutProvider.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
38
44{
45 public const GS_EXIT_LTI = 'lti_exit_mode';
46
47 private const LTI_PRIORITY = 63;
48
50 {
51 return $this->context_collection->lti();
52 }
53
59 public function getPageBuilderDecorator(CalledContexts $screen_context_stack): ?PageBuilderModification
60 {
61 $this->globalScreen()->layout()->meta()->addCss('./components/ILIAS/LTIProvider/templates/default/lti.css');
62 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
63 $external_css = ($is_exit_mode) ? '' : $this->dic["lti"]->getExternalCss();
64 if ($external_css !== '') {
65 $this->globalScreen()->layout()->meta()->addCss($external_css);
66 }
67
68 return $this->factory->page()
69 ->withModification(
70 function (PagePartProvider $parts): Page {
71 $p = new StandardPageBuilder();
72 $customParts = new CustomBreadcrumbPagePartProvider($parts);
73 $page = $p->build($customParts);
74 $mv_modeinfo = MemberViewLayoutProvider::getMemberViewModeInfo($this->dic);
75 if ($mv_modeinfo) {
76 $page = $page->withModeInfo($mv_modeinfo);
77 }
78 return $page->withNoFooter();
79 }
80 )
81 ->withHighPriority();
82 }
83
84 protected function isLTIExitMode(CalledContexts $screen_context_stack): bool
85 {
86 $data_collection = $screen_context_stack->current()->getAdditionalData();
87 $is_exit_mode = $data_collection->is(self::GS_EXIT_LTI, true);
88 return $is_exit_mode;
89 }
90
94 public function getMainBarModification(CalledContexts $screen_context_stack): ?MainBarModification
95 {
96 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
97
98 return $this->globalScreen()->layout()->factory()->mainbar()
99 ->withModification(
100 function (?MainBar $mainbar) use ($is_exit_mode): ?MainBar {
101 $tools = $mainbar->getToolEntries();
102 $mainbar = $mainbar->withClearedEntries();
103 if ($is_exit_mode) {
104 return $mainbar;
105 }
106 foreach ($tools as $id => $entry) {
107 $mainbar = $mainbar->withAdditionalToolEntry($id, $entry);
108 }
109 //$mainbar = $mainbar->withAdditionalEntry('lti_home', $lti_home);
110 return $mainbar;
111 }
112 )->withPriority(self::LTI_PRIORITY);
113 }
114
118 public function getMetaBarModification(CalledContexts $screen_context_stack): ?MetaBarModification
119 {
120 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
121
122 return $this->globalScreen()->layout()->factory()->metabar()
123 ->withModification(
124 function (?MetaBar $metabar) use ($is_exit_mode, $screen_context_stack): ?Metabar {
125 $metabar = $metabar->withClearedEntries();
126 if ($is_exit_mode) {
127 return $metabar;
128 }
129 $f = $this->dic->ui()->factory();
130 $exit_symbol = $f->symbol()->glyph()->close();
131 $exit_txt = $this->dic['lti']->lng->txt('lti_exit');
132 $exit = $f->button()->bulky($exit_symbol, $exit_txt, $this->dic["lti"]->getCmdLink('exit'));
133 $metabar = $metabar->withAdditionalEntry('exit', $exit);
134 return $metabar;
135 }
136 )->withPriority(self::LTI_PRIORITY);
137 }
138
143 public function getTitleModification(CalledContexts $screen_context_stack): ?TitleModification
144 {
145 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
146
147 return $this->globalScreen()->layout()->factory()->title()
148 ->withModification(
149 function (?string $content) use ($is_exit_mode): string {
150 if ($is_exit_mode) {
151 return $this->dic["lti"]->getTitleForExitPage();
152 }
153 return $this->dic["lti"]->getTitle();
154 }
155 )->withPriority(self::LTI_PRIORITY);
156 }
157}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
factory()
getMainBarModification(CalledContexts $screen_context_stack)
@inheritDoc
getTitleModification(CalledContexts $screen_context_stack)
getPageBuilderDecorator(CalledContexts $screen_context_stack)
isLTIExitMode(CalledContexts $screen_context_stack)
getMetaBarModification(CalledContexts $screen_context_stack)
@inheritDoc
This describes the Page.
Definition: Page.php:31
This describes the MainBar.
Definition: MainBar.php:34
withClearedEntries()
Get a copy of this MainBar without any entries.
withAdditionalToolEntry(string $id, Slate\Slate $entry, bool $initially_hidden=false, ?Button\Close $close_button=null)
Append a tool-entry.
This describes the MetaBar.
Definition: MetaBar.php:33
withClearedEntries()
Get a copy of this MetaBar without any entries.
withAdditionalEntry(string $id, $entry)
Append an entry.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
Definition: ltitoken.php:61