ILIAS  release_7 Revision v7.30-3-g800a261c036
LtiViewLayoutProvider.php
Go to the documentation of this file.
1 <?php
17 namespace ILIAS\LTI\Screen;
18 
31 use ILIAS\Data\URI;
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 }
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:16
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:13
This describes the MetaBar.
Definition: MetaBar.php:14
isLTIExitMode(CalledContexts $screen_context_stack)
getPageBuilderDecorator(CalledContexts $screen_context_stack)
getMainBarModification(CalledContexts $screen_context_stack)