ILIAS  release_7 Revision v7.30-3-g800a261c036
LtiViewLayoutProvider.php
Go to the documentation of this file.
1<?php
18
32
39
46{
47 const GS_EXIT_LTI = 'lti_exit_mode';
48
49 protected function isLTIExitMode(CalledContexts $screen_context_stack) : bool
50 {
51 $data_collection = $screen_context_stack->current()->getAdditionalData();
52 $is_exit_mode = $data_collection->is(self::GS_EXIT_LTI, true);
53 return $is_exit_mode;
54 }
55
57 {
58 return $this->context_collection->lti();
59 }
60
64 public function getPageBuilderDecorator(CalledContexts $screen_context_stack) : ?PageBuilderModification
65 {
66 $this->globalScreen()->layout()->meta()->addCss('./Services/LTI/templates/default/lti.css');
67 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
68 $external_css = ($is_exit_mode) ? '' : $this->dic["lti"]->getExternalCss();
69 if ($external_css !== '') {
70 $this->globalScreen()->layout()->meta()->addCss($external_css);
71 }
72
73 return $this->factory->page()
74 ->withModification(
75 function (PagePartProvider $parts) : Page {
76 $p = new StandardPageBuilder();
77 $page = $p->build($parts);
78
79 $mv_modeinfo = MemberViewLayoutProvider::getMemberViewModeInfo($this->dic);
80 if ($mv_modeinfo) {
81 $page = $page->withModeInfo($mv_modeinfo);
82 }
83
84 return $page->withNoFooter();
85 }
86 )
87 ->withHighPriority();
88 }
89
93 public function getMainBarModification(CalledContexts $screen_context_stack) : ?MainBarModification
94 {
95 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
96
97 return $this->globalScreen()->layout()->factory()->mainbar()
98 ->withModification(
99 function (?MainBar $mainbar) use ($is_exit_mode) : ?MainBar {
100 if ($mainbar === null) {
101 return null;
102 }
103 $tools = $mainbar->getToolEntries();
104 $mainbar = $mainbar->withClearedEntries();
105 if ($is_exit_mode) {
106 return $mainbar;
107 }
108 foreach ($tools as $id => $entry) {
109 $mainbar = $mainbar->withAdditionalToolEntry($id, $entry);
110 }
111 //$mainbar = $mainbar->withAdditionalEntry('lti_home', $lti_home);
112 return $mainbar;
113 }
114 )
115 ->withHighPriority();
116 }
117
121 public function getMetaBarModification(CalledContexts $screen_context_stack) : ?MetaBarModification
122 {
123 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
124
125 return $this->globalScreen()->layout()->factory()->metabar()
126 ->withModification(
127 function (?MetaBar $metabar) use ($is_exit_mode, $screen_context_stack) : ?Metabar {
128 if ($metabar === null) {
129 return null;
130 }
131 $metabar = $metabar->withClearedEntries();
132 if ($is_exit_mode) {
133 return $metabar;
134 }
135 $f = $this->dic->ui()->factory();
136 $exit_symbol = $f->symbol()->glyph()->close();
137 $exit_txt = $this->dic['lti']->lng->txt('lti_exit');
138 $exit = $f->button()->bulky($exit_symbol, $exit_txt, $this->dic["lti"]->getCmdLink('exit'));
139 $metabar = $metabar->withAdditionalEntry('exit', $exit);
140 return $metabar;
141 }
142 )
143 ->withHighPriority();
144 }
145
149 public function getTitleModification(CalledContexts $screen_context_stack) : ?TitleModification
150 {
151 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
152
153 return $this->globalScreen()->layout()->factory()->title()
154 ->withModification(
155 function (?string $content) use ($is_exit_mode) : ?string {
156 if ($is_exit_mode) {
157 return $this->dic["lti"]->getTitleForExitPage();
158 }
159 return $this->dic["lti"]->getTitle();
160 }
161 )
162 ->withHighPriority();
163 }
164}
An exception for terminatinating execution or to throw for unit testing.
The scope of this class is split ilias-conform URI's into components.
Definition: URI.php:18
getMainBarModification(CalledContexts $screen_context_stack)
@inheritDoc
getTitleModification(CalledContexts $screen_context_stack)
@inheritDoc
getPageBuilderDecorator(CalledContexts $screen_context_stack)
@inheritDoc
isLTIExitMode(CalledContexts $screen_context_stack)
getMetaBarModification(CalledContexts $screen_context_stack)
@inheritDoc
close()
Definition: close.php:2
This describes a bulky button.
Definition: Bulky.php:10
This describes the Page.
Definition: Page.php:14
This describes the Footer.
Definition: Footer.php:16
This describes the MainBar.
Definition: MainBar.php:17
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:15
withClearedEntries()
Get a copy of this Metabar without any entries.
withAdditionalEntry(string $id, $entry)
Append an entry.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...