19declare(strict_types=1);
28use Psr\Http\Message\ServerRequestInterface;
42 private ServerRequestInterface $request,
44 private bool $has_write_access,
50 $cmd = $this->
ctrl->getCmd(
"view");
59 if ($this->has_write_access) {
70 $a_get_post_values =
false,
71 bool $add_entry =
false
74 $post = $this->request->getParsedBody();
76 if ($a_get_post_values) {
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));
86 $vals[] = array(
"title" =>
"",
91 $table->setData($vals);
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;
99 $data[
"Fobject"][$k][
"default"] =
false;
103 $data[
"Fobject"] = array();
105 $table->setData(
$data[
"Fobject"]);
107 $this->tpl->setContent($table->getHTML());
113 public function add(): void
115 $this->view(
true,
true);
121 public function save(
bool $delete =
false)
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"]);
136 if (!isset(
$post[
"default"]) && count(
$post[
"lang"]) > 0) {
137 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_default_language"));
143 if (array_key_exists(
"",
$post[
"lang"])) {
144 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_language_selected"));
150 if (count(array_unique(
$post[
"lang"])) < count(
$post[
"lang"])) {
151 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_multi_language_selected"));
157 $this->repo->removeHeaderTitleTranslations();
158 foreach (
$post[
"title"] as $k => $v) {
159 $desc =
$post[
"desc"][$k] ??
"";
160 $this->repo->addHeaderTitleTranslation(
163 (
$post[
"default"] == $k)
168 $this->
ctrl->redirect($this,
"view");
174 public function delete():
void
Class ilCtrl provides processing control methods.
TableGUI class for title/description translations.
Util class various functions, usage as namespace.
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
const MESSAGE_TYPE_SUCCESS