ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
LtiViewLayoutProvider.php
Go to the documentation of this file.
1 <?php namespace ILIAS\LTI\Screen;
2 
15 use ILIAS\Data\URI;
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 }
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:15
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)
withClearedEntries()
Get a copy of this Mainbar without any entries.
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)