ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
LtiViewLayoutProvider.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
21 namespace ILIAS\LTI\Screen;
22 
37 
43 {
44  public const GS_EXIT_LTI = 'lti_exit_mode';
45 
46  private const MODIFICATION_PRIORITY = 63;
47 
49  {
50  return $this->context_collection->lti();
51  }
52 
58  public function getPageBuilderDecorator(CalledContexts $screen_context_stack): ?PageBuilderModification
59  {
60  $this->globalScreen()->layout()->meta()->addCss('./Services/LTI/templates/default/lti.css');
61  $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
62  $external_css = ($is_exit_mode) ? '' : $this->dic["lti"]->getExternalCss();
63  if ($external_css !== '') {
64  $this->globalScreen()->layout()->meta()->addCss($external_css);
65  }
66 
67  return $this->factory->page()
68  ->withModification(
69  function (PagePartProvider $parts): Page {
70  $p = new StandardPageBuilder();
71  $page = $p->build($parts);
72 
73  $mv_modeinfo = MemberViewLayoutProvider::getMemberViewModeInfo($this->dic);
74  if ($mv_modeinfo) {
75  $page = $page->withModeInfo($mv_modeinfo);
76  }
77 
78  return $page->withNoFooter();
79  }
80  )
81  ->withPriority(self::MODIFICATION_PRIORITY);
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  )
113  ->withPriority(self::MODIFICATION_PRIORITY);
114  }
115 
119  public function getMetaBarModification(CalledContexts $screen_context_stack): ?MetaBarModification
120  {
121  $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
122 
123  return $this->globalScreen()->layout()->factory()->metabar()
124  ->withModification(
125  function (?MetaBar $metabar) use ($is_exit_mode, $screen_context_stack): ?Metabar {
126  $metabar = $metabar->withClearedEntries();
127  if ($is_exit_mode) {
128  return $metabar;
129  }
130  $f = $this->dic->ui()->factory();
131  $exit_symbol = $f->symbol()->glyph()->close();
132  $exit_txt = $this->dic['lti']->lng->txt('lti_exit');
133  $exit = $f->button()->bulky($exit_symbol, $exit_txt, $this->dic["lti"]->getCmdLink('exit'));
134  $metabar = $metabar->withAdditionalEntry('exit', $exit);
135  return $metabar;
136  }
137  )
138  ->withPriority(self::MODIFICATION_PRIORITY);
139  }
140 
145  public function getTitleModification(CalledContexts $screen_context_stack): ?TitleModification
146  {
147  $is_exit_mode = $this->isLTIExitMode($screen_context_stack);
148 
149  return $this->globalScreen()->layout()->factory()->title()
150  ->withModification(
151  function (?string $content) use ($is_exit_mode): string {
152  if ($is_exit_mode) {
153  return $this->dic["lti"]->getTitleForExitPage();
154  }
155  return $this->dic["lti"]->getTitle();
156  }
157  )
158  ->withPriority(self::MODIFICATION_PRIORITY);
159  }
160 }
withAdditionalToolEntry(string $id, Slate\Slate $entry, bool $initially_hidden=false, Button\Close $close_button=null)
Append a tool-entry.
This describes the MainBar.
Definition: MainBar.php:33
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
Definition: ltitoken.php:64
withClearedEntries()
Get a copy of this MetaBar without any entries.
withAdditionalEntry(string $id, $entry)
Append an entry.
getTitleModification(CalledContexts $screen_context_stack)
getMetaBarModification(CalledContexts $screen_context_stack)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
withClearedEntries()
Get a copy of this MainBar without any entries.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This describes the Page.
Definition: Page.php:30
This describes the MetaBar.
Definition: MetaBar.php:32
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
isLTIExitMode(CalledContexts $screen_context_stack)
getPageBuilderDecorator(CalledContexts $screen_context_stack)
getMainBarModification(CalledContexts $screen_context_stack)