ILIAS  trunk Revision v12.0_alpha-16-g3e876e53c80
HeaderTitleGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Administration;
22
23use ilCtrl;
25use ilUtil;
27use ilLanguage;
28use Psr\Http\Message\ServerRequestInterface;
30
36readonly class HeaderTitleGUI
37{
38 public function __construct(
39 private ilCtrl $ctrl,
40 private ilGlobalTemplateInterface $tpl,
41 private ilLanguage $lng,
42 private ServerRequestInterface $request,
43 private HeaderTitleRepo $repo,
44 private bool $has_write_access,
45 ) {
46 }
47
48 public function executeCommand()
49 {
50 $cmd = $this->ctrl->getCmd("view");
51 switch ($cmd) {
52 case 'view':
53 $this->view();
54 break;
55
56 case 'add':
57 case 'save':
58 case 'delete':
59 if ($this->has_write_access) {
60 $this->$cmd();
61 }
62 break;
63 }
64 }
65
69 public function view(
70 $a_get_post_values = false,
71 bool $add_entry = false
72 ): void {
73 $table = new ilInstallationHeadingTableGUI($this, "view", $this->has_write_access);
74 $post = $this->request->getParsedBody();
75
76 if ($a_get_post_values) {
77 $vals = array();
78 foreach (($post["title"] ?? []) as $k => $v) {
79 $def = $post["default"] ?? "";
80 $vals[] = array("title" => $v,
81 "desc" => ($post["desc"][$k] ?? ""),
82 "lang" => ($post["lang"][$k] ?? ""),
83 "default" => ($def == $k));
84 }
85 if ($add_entry) {
86 $vals[] = array("title" => "",
87 "desc" => "",
88 "lang" => "",
89 "default" => false);
90 }
91 $table->setData($vals);
92 } else {
93 $data = $this->repo->getHeaderTitleTranslations();
94 if (isset($data["Fobject"]) && is_array($data["Fobject"])) {
95 foreach ($data["Fobject"] as $k => $v) {
96 if ($k == $data["default_language"]) {
97 $data["Fobject"][$k]["default"] = true;
98 } else {
99 $data["Fobject"][$k]["default"] = false;
100 }
101 }
102 } else {
103 $data["Fobject"] = array();
104 }
105 $table->setData($data["Fobject"]);
106 }
107 $this->tpl->setContent($table->getHTML());
108 }
109
113 public function add(): void
114 {
115 $this->view(true, true);
116 }
117
121 public function save(bool $delete = false)
122 {
123 $post = $this->request->getParsedBody();
124 foreach ($post["title"] as $k => $v) {
125 if ($delete && ($post["check"][$k] ?? false)) {
126 unset($post["title"][$k]);
127 unset($post["desc"][$k]);
128 unset($post["lang"][$k]);
129 if ($k == $post["default"]) {
130 unset($post["default"]);
131 }
132 }
133 }
134
135 // default language set?
136 if (!isset($post["default"]) && count($post["lang"]) > 0) {
137 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("msg_no_default_language"));
138 $this->view(true);
139 return;
140 }
141
142 // all languages set?
143 if (array_key_exists("", $post["lang"])) {
144 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("msg_no_language_selected"));
145 $this->view(true);
146 return;
147 }
148
149 // no single language is selected more than once?
150 if (count(array_unique($post["lang"])) < count($post["lang"])) {
151 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("msg_multi_language_selected"));
152 $this->view(true);
153 return;
154 }
155
156 // save the stuff
157 $this->repo->removeHeaderTitleTranslations();
158 foreach ($post["title"] as $k => $v) {
159 $desc = $post["desc"][$k] ?? "";
160 $this->repo->addHeaderTitleTranslation(
162 ilUtil::stripSlashes($post["lang"][$k]),
163 ($post["default"] == $k)
164 );
165 }
166
167 $this->tpl->setOnScreenMessage(GlobalTemplate::MESSAGE_TYPE_SUCCESS, $this->lng->txt("msg_obj_modified"), true);
168 $this->ctrl->redirect($this, "view");
169 }
170
174 public function delete(): void
175 {
176 $this->save(true);
177 }
178}
GUI to change the header title of the installation.
view( $a_get_post_values=false, bool $add_entry=false)
Show header title.
save(bool $delete=false)
Save header titles.
__construct(private ilCtrl $ctrl, private ilGlobalTemplateInterface $tpl, private ilLanguage $lng, private ServerRequestInterface $request, private HeaderTitleRepo $repo, private bool $has_write_access,)
Class ilCtrl provides processing control methods.
TableGUI class for title/description translations.
language handling
Util class various functions, usage as namespace.
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
$post
Definition: ltitoken.php:46
global $lng
Definition: privfeed.php:31