ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
LtiViewLayoutProvider.php
Go to the documentation of this file.
1<?php namespace ILIAS\LTI\Screen;
2
16
23
30{
31 const GS_EXIT_LTI = 'lti_exit_mode';
32
33 protected function isLTIExitMode(CalledContexts $screen_context_stack) : bool
34 {
35 $data_collection = $screen_context_stack->current()->getAdditionalData();
36 $is_exit_mode = $data_collection->is(self::GS_EXIT_LTI, true);
37 return $is_exit_mode;
38 }
39
41 {
42 return $this->context_collection->lti();
43 }
44
48 public function getPageBuilderDecorator(CalledContexts $screen_context_stack) : ?PageBuilderModification
49 {
50 $this->globalScreen()->layout()->meta()->addCss('./Services/LTI/templates/default/lti.css');
51 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
52 $external_css = ($is_exit_mode) ? '' : $this->dic["lti"]->getExternalCss();
53 if ($external_css !== '') {
54 $this->globalScreen()->layout()->meta()->addCss($external_css);
55 }
56
57 return $this->factory->page()
58 ->withModification(
59 function (PagePartProvider $parts) : Page {
60 $p = new StandardPageBuilder();
61 $page = $p->build($parts);
62
63 $mv_modeinfo = MemberViewLayoutProvider::getMemberViewModeInfo($this->dic);
64 if ($mv_modeinfo) {
65 $page = $page->withModeInfo($mv_modeinfo);
66 }
67
68 return $page->withNoFooter();
69 }
70 )
71 ->withHighPriority();
72 }
73
77 public function getMainBarModification(CalledContexts $screen_context_stack) : ?MainBarModification
78 {
79 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
80
81 return $this->globalScreen()->layout()->factory()->mainbar()
82 ->withModification(
83 function (MainBar $mainbar) use ($is_exit_mode) : ?MainBar {
84 $tools = $mainbar->getToolEntries();
85 $mainbar = $mainbar->withClearedEntries();
86 if ($is_exit_mode) {
87 return $mainbar;
88 }
89 foreach ($tools as $id => $entry) {
90 $mainbar = $mainbar->withAdditionalToolEntry($id, $entry);
91 }
92 //$mainbar = $mainbar->withAdditionalEntry('lti_home', $lti_home);
93 return $mainbar;
94 }
95 )
96 ->withHighPriority();
97 }
98
102 public function getMetaBarModification(CalledContexts $screen_context_stack) : ?MetaBarModification
103 {
104 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
105
106 return $this->globalScreen()->layout()->factory()->metabar()
107 ->withModification(
108 function (MetaBar $metabar) use ($is_exit_mode, $screen_context_stack): ?Metabar {
109 $metabar = $metabar->withClearedEntries();
110 if ($is_exit_mode) {
111 return $metabar;
112 }
113 $f = $this->dic->ui()->factory();
114 $exit_symbol = $f->symbol()->glyph()->close();
115 $exit_txt = $this->dic['lti']->lng->txt('lti_exit');
116 $exit = $f->button()->bulky($exit_symbol, $exit_txt, $this->dic["lti"]->getCmdLink('exit'));
117 $metabar = $metabar->withAdditionalEntry('exit', $exit);
118 return $metabar;
119 }
120 )
121 ->withHighPriority();
122 }
123
127 public function getTitleModification(CalledContexts $screen_context_stack) : ?TitleModification
128 {
129 $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
130
131 return $this->globalScreen()->layout()->factory()->title()
132 ->withModification(
133 function (string $content) use ($is_exit_mode) : string {
134 if ($is_exit_mode) {
135 return $this->dic["lti"]->getTitleForExitPage();
136 }
137 return $this->dic["lti"]->getTitle();
138 }
139 )
140 ->withHighPriority();
141 }
142}
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:12
This describes the MainBar.
Definition: MainBar.php:16
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.