ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
class.ilLMMenuGUI.php
Go to the documentation of this file.
1 <?php
2 
20 
22 
27 {
28  protected bool $offline;
29  protected \ilLMPresentationService $service;
30  protected \ilCtrl $ctrl;
31  protected \ILIAS\DI\UIServices $ui;
32  protected \ilObjLearningModule $lm;
33  protected \ilLanguage $lng;
34  protected \ilAccessHandler $access;
35  protected \ilObjUser $user;
36 
37  public function __construct(
38  \ilLMPresentationService $lm_pres_service
39  ) {
40  global $DIC;
41 
42  $this->ui = $DIC->ui();
43  $this->ctrl = $DIC->ctrl();
44  $this->service = $lm_pres_service;
45  $this->lng = $DIC->language();
46  $this->access = $DIC->access();
47  $this->lm = $this->service->getLearningModule();
48  $this->offline = $lm_pres_service->getPresentationStatus()->offline();
49  $this->user = $DIC->user();
50  }
51 
52  public function getEntries(): array
53  {
54  $ui = $this->ui;
55  $lng = $this->lng;
56  $ctrl = $this->ctrl;
57  $access = $this->access;
58  $user = $this->user;
59 
60  $entries = [];
61 
62  $ctrl->setParameterByClass("illmpresentationgui", 'ref_id', $this->lm->getRefId());
63 
64  // print selection
65  if ($this->lm->isActivePrintView() && $access->checkAccess("read", "", $this->lm->getRefId())) {
66  if (!$this->offline) {
67  $ui->mainTemplate()->addJavaScript("assets/js/Form.js");
68  $modal = $ui->factory()->modal()->roundtrip(
69  $lng->txt("cont_print_view"),
70  $ui->factory()->legacy()->content('some modal')
71  )->withAsyncRenderUrl($this->ctrl->getLinkTargetByClass("illmpresentationgui", "showPrintViewSelection"));
72 
73  $entries[] = [
74  "label" => $this->lng->txt("cont_print_view"),
75  "signal" => $modal->getShowSignal(),
76  "modal" => $modal,
77  "on_load" => ""
78  ];
79  }
80  }
81 
82  // user defined menu entries
83  $menu_editor = new \ilLMMenuEditor();
84  $menu_editor->setObjId($this->lm->getId());
85 
86  $cust_menu = $menu_editor->getMenuEntries(true);
87  $generator = new SignalGenerator();
88  if (count($cust_menu) > 0 && $access->checkAccess("read", "", $this->lm->getRefId())) {
89  foreach ($cust_menu as $entry) {
90  // build goto-link for internal resources
91  if ($entry["type"] == "intern") {
92  $entry["link"] = ILIAS_HTTP_PATH . "/goto.php?target=" . $entry["link"];
93  }
94 
95  // add http:// prefix if not exist
96  if (!strstr($entry["link"], '://') && !strstr($entry["link"], 'mailto:')) {
97  $entry["link"] = "https://" . $entry["link"];
98  }
99 
100  if (!strstr($entry["link"], 'mailto:')) {
101  $entry["link"] = \ilUtil::appendUrlParameterString($entry["link"], "ref_id=" . $this->lm->getRefId());
102  }
103 
104  $signal = $generator->create();
105 
106  $entries[] = [
107  "label" => $entry["title"],
108  "signal" => $signal,
109  "modal" => null,
110  "on_load" => "$(document).on('" .
111  $signal->getId() .
112  "', function(event, signalData) {il.LearningModule.openMenuLink('" . $entry["link"] . "');});"
113  ];
114  }
115  }
116 
117 
118  return $entries;
119  }
120 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static appendUrlParameterString(string $a_url, string $a_par, bool $xml_style=false)
__construct(\ilLMPresentationService $lm_pres_service)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
global $DIC
Definition: shib_login.php:26
Main service init and factory.