From 062b0f25db63709be54dd6e2f527bbe44a30728b Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 17:04:46 +0100 Subject: [PATCH 01/11] fehlerhaftes Erstellen von geschachtelten p-Tags behoben --- webseite/topicEditor.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webseite/topicEditor.php b/webseite/topicEditor.php index a3b7655..040092e 100644 --- a/webseite/topicEditor.php +++ b/webseite/topicEditor.php @@ -189,6 +189,8 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { // extension=mbstring in php.ini muss aktiviert sein! $article = mb_convert_encoding($dom->saveHTML(), 'UTF-8', 'HTML-ENTITIES'); + $article = preg_replace("/^[ \r\n\t]*

/", "

", $article); + $article = preg_replace("#

[ \r\n\t]*$#", "

", $article); if (isset($allSubjects[$_POST['subjectId']]->getTopics()[$_POST['id']])) { $newTopic = $allSubjects[$_POST['subjectId']]->getTopics()[$_POST['id']]; From 004de1ebf2442082df2f9c36f7e2a3a270b29fb8 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 21:36:08 +0100 Subject: [PATCH 02/11] =?UTF-8?q?eckout=20-b=20'50-lerninhalte-interface'?= =?UTF-8?q?=20'origin/50-lerninhalte-interface'=20=09=09Formeln=20zu=20Inl?= =?UTF-8?q?ine-Darstellung=20ver=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mathe/topics/geometrie/tasks.json | 81 +++++++++---------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/webseite/config/subjects/mathe/topics/geometrie/tasks.json b/webseite/config/subjects/mathe/topics/geometrie/tasks.json index 67ed857..2c93fe3 100644 --- a/webseite/config/subjects/mathe/topics/geometrie/tasks.json +++ b/webseite/config/subjects/mathe/topics/geometrie/tasks.json @@ -1,60 +1,55 @@ [ - { - "text": "Ein Quadrat mit Seitenlänge $$a = 4 cm$$ berechne die Fläche", - "vars": { - "Fläche in cm^2": "16" + { + "text": "Ein Quadrat mit Seitenlänge \\(a = 4 cm\\) berechne die Fläche", + "vars": { + "Fläche in cm^2": "16" + } + }, + { + "text": "Ein Rechteck mit \\(l = 7 cm\\) und \\(b = 2 cm\\) berechne die Fläche", + "vars": { + "Fläche in cm^2": "14" + } + }, + { + "text": "Berechne den Umfang \\(U\\) eines Quadrats mit \\(a = 6 cm\\)", + "vars": { + "U in cm": "24" + } + }, + { + "text": "Berechne den Umfang \\(U\\) eines Rechteck mit \\(l = 8 cm\\) und \\(b = 4 cm\\)", + "vars": { + "?": "24" + } + }, + { + "text": "Ein Dreieck mit der Grundlinie \\(G = 8cm\\) und einer Höhe \\(h= 5cm\\) berechne die Fläche", + "vars": { + "Fläche in cm^2": "20" + } + }, + { + "text": "Ein Dreieck mit der Grundlinie \\(G = 10cm\\) und einer Höhe \\(h= 7cm\\) berechne die Fläche", + "vars": { + "Fläche in cm^2": "35" + } } }, { - "text": "Ein Rechteck mit $$l = 7 cm$$ und $$b = 2 cm$$ berechne die Fläche", - "vars": { - "Fläche in cm^2": "14" - } - }, - { - "text": "Berechne den Umfang $$U$$ eines Quadrats mit $$a = 6 cm$$", - "vars": { - "Umfang in cm": "24" - } - }, - { - "text": "Berechne den Umfang $$U$$ eines Rechteck mit $$l = 8 cm$$ und $$b = 4 cm$$", - "vars": { - "U in cm": "5/15" - } - }, - { - "text": "Ein Dreieck mit der Grundlinie $$G = 8cm$$ und einer Höhe $$h= 5cm$$ berechne die Fläche", - "vars": { - "Fläche in cm^2": "20" - } - }, - { - "text": "Ein Dreieck mit der Grundlinie $$G = 10cm$$ und einer Höhe $$h= 7cm$$ berechne die Fläche", - "vars": { - "Fläche in cm^2": "35" - } - }, - { - "text": "Ein Kreis hat den Radius $$r = 4cm$$ Berechne den Umfang. Runde auf eine NkSt", - "vars": { - "Umfang in cm": "25,1" - } - }, - { - "text": "Ein Kreis hat den Radius $$r = 5cm$$ Berechne den Umfang. Runde auf eine NkSt", + "text": "Ein Kreis hat den Radius \\(r = 5cm\\) Berechne den Umfang. Runde auf eine NkSt", "vars": { "Umfang in cm": "31,4" } }, { - "text": "Ein Quader hat den die Länge $$l = 4cm$$ Breite $$b = 3cm$$ und Höhe $$h=2cm$$ Berechne das Volumen $$V$$", + "text": "Ein Quader hat den die Länge \\(l = 4cm\\) Breite \\(b = 3cm\\) und Höhe \\(h=2cm\\) Berechne das Volumen \\(V\\)", "vars": { "Volumen in cm^3": "24" } }, { - "text": "Ein Quader hat den die Länge $$l = 6cm$$ Breite $$b = 4cm$$ und Höhe $$h=3cm$$ Berechne das Volumen $$V$$", + "text": "Ein Quader hat den die Länge \\(l = 6cm\\) Breite \\(b = 4cm\\) und Höhe \\(h=3cm\\) Berechne das Volumen \\(V\\)", "vars": { "Volumen in cm^3": "72" } From c56e667fe458521a440919dc6059ba5de4012442 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 21:53:49 +0100 Subject: [PATCH 03/11] Bearbeitung von Formeln verbessert --- webseite/assets/js/formula.js | 158 ++++++++++++++++++++++++++++++++++ webseite/topicEditor.php | 14 +++ 2 files changed, 172 insertions(+) create mode 100644 webseite/assets/js/formula.js diff --git a/webseite/assets/js/formula.js b/webseite/assets/js/formula.js new file mode 100644 index 0000000..14f74a8 --- /dev/null +++ b/webseite/assets/js/formula.js @@ -0,0 +1,158 @@ +function createFormula(text = "") { + const formulaInputs = document.querySelector('#formulaInputs'); + + const formulaElement = document.createElement('div'); + formulaElement.classList.add('input-formula', "pb-10"); + formulaElement.id = "f-" + crypto.randomUUID(); + + const textElement = document.createElement('textarea'); + textElement.type = 'text'; + textElement.classList.add('input-text'); + textElement.classList.add("w-full", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + textElement.rows = 3; + textElement.placeholder = "Aufgabentext"; + textElement.innerText = text; + textElement.onchange = updateFormulaText; + + formulaElement.appendChild(textElement); + + const variableSection = document.createElement('div'); + variableSection.classList.add("input-variable-section"); + formulaElement.appendChild(variableSection) + + const buttonRow = document.createElement('div'); + buttonRow.classList.add("flex", "flow-root"); + + const removeFormulaButton = document.createElement('button'); + removeFormulaButton.type = "button"; + removeFormulaButton.innerText = "Aufgabe löschen"; + removeFormulaButton.classList.add("px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + removeFormulaButton.onclick = () => { + formulaElement.remove(); + }; + buttonRow.appendChild(removeFormulaButton); + + const addVariableButton = document.createElement('button'); + addVariableButton.type = "button"; + addVariableButton.innerText = "+"; + addVariableButton.classList.add("w-1/12", "float-right", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + addVariableButton.onclick = () => { + createVariable(formulaElement.id); + }; + buttonRow.appendChild(addVariableButton); + + formulaElement.appendChild(buttonRow); + + formulaInputs.appendChild(formulaElement); + + return formulaElement.id; +} + +function createVariable(formulaUID, variableText = "", valueText = "") { + const element = document.querySelector("#" + formulaUID).querySelector(".input-variable-section"); + + const variableValueElement = document.createElement('div'); + variableValueElement.classList.add('input-variables'); + + const variableElement = document.createElement('input'); + variableElement.type = 'text'; + variableElement.classList.add('input-variable'); + variableElement.classList.add("w-6/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") + variableElement.value = variableText; + variableElement.placeholder = "Variable"; + variableElement.onchange = updateFormulaText; + variableValueElement.appendChild(variableElement); + + const valueElement = document.createElement('input'); + valueElement.type = 'text'; + valueElement.classList.add('input-value'); + valueElement.classList.add("w-5/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") + valueElement.value = valueText; + valueElement.placeholder = "Richtiger Wert"; + valueElement.onchange = updateFormulaText; + variableValueElement.appendChild(valueElement); + + const removeButton = document.createElement('button'); + removeButton.type = "button"; + removeButton.innerText = "-" + removeButton.classList.add("w-1/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + removeButton.onclick = () => { + variableValueElement.remove(); + updateFormulaText(); + }; + variableValueElement.appendChild(removeButton); + + element.appendChild(variableValueElement); +} + +function createFormulaWithVariable() { + const uuid = createFormula(); + createVariable(uuid); +} + +function createFormulasFromString(string) { + const taskStrings = string.split(";;;;"); + taskStrings.forEach((taskString) => { + const elements = taskString.split(";;"); + if(elements.length < 2) { + return; + } + + const text = elements[0]; + const variables = elements.slice(1, elements.length); + + const uid = createFormula(text); + + variables.forEach((variableValuePair) => { + const arr = variableValuePair.split("::"); + if(arr.length !== 2) { + return; + } + createVariable(uid, arr[0], arr[1]); + }); + }); +} + +function getFormulasAsString() { + const formulaInputs = document.querySelector('#formulaInputs'); + + let formulas = []; + formulaInputs.querySelectorAll('.input-formula').forEach((formulaElement) => { + const text = formulaElement.querySelector(".input-text").value; + if(text.includes(";;")) { + return; + } + + let variables = []; + formulaElement.querySelectorAll(".input-variables").forEach((variableValueElement) => { + const variable = variableValueElement.querySelector(".input-variable"); + const value = variableValueElement.querySelector(".input-value"); + + if(variable == null || value == null) { + return; + } + + if(variable.value.trim() === "" || value.value.trim() === "") { + return; + } + + if(variable.value.includes(";;") || variable.value.includes("::")) { + return; + } + + if(value.value.includes(";;") || value.value.includes("::")) { + return; + } + + variables.push(variable.value + "::" + value.value); + }); + + formulas.push(text + ";;" + variables.join(";;")); + }); + + return formulas.join(';;;;'); +} + +function updateFormulaText() { + document.querySelector('#formulas').value = getFormulasAsString(); +} \ No newline at end of file diff --git a/webseite/topicEditor.php b/webseite/topicEditor.php index 040092e..4207d26 100644 --- a/webseite/topicEditor.php +++ b/webseite/topicEditor.php @@ -263,6 +263,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { integrity="sha384-RdymN7NRJ+XoyeRY4185zXaxq9QWOOx3O7beyyrRK4KQZrPlCDQQpCu95FoCGPAE" crossorigin="anonymous"> + @@ -341,6 +342,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { +
+ +
+ +
+ +
@@ -444,6 +457,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { }); } + createFormulasFromString(document.querySelector('#formulas').value); renderFormulas(); const quill = new Quill('#quillEditor', { From b3e564e9e95bf88c9dfd64c19290399f021e98d6 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 22:09:22 +0100 Subject: [PATCH 04/11] Darstellung von Formeln behoben --- .../mathe/topics/geometrie/tasks.json | 37 +++++++++---------- .../wahrscheinlichkeitsrechnung/tasks.json | 8 ++-- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/webseite/config/subjects/mathe/topics/geometrie/tasks.json b/webseite/config/subjects/mathe/topics/geometrie/tasks.json index 2c93fe3..63218c2 100644 --- a/webseite/config/subjects/mathe/topics/geometrie/tasks.json +++ b/webseite/config/subjects/mathe/topics/geometrie/tasks.json @@ -34,24 +34,23 @@ "vars": { "Fläche in cm^2": "35" } + }, + { + "text": "Ein Kreis hat den Radius \\(r = 5cm\\) Berechne den Umfang. Runde auf eine NkSt", + "vars": { + "Umfang in cm": "31,4" + } + }, + { + "text": "Ein Quader hat den die Länge \\(l = 4cm\\) Breite \\(b = 3cm\\) und Höhe \\(h=2cm\\) Berechne das Volumen \\(V\\)", + "vars": { + "Volumen in cm^3": "24" + } + }, + { + "text": "Ein Quader hat den die Länge \\(l = 6cm\\) Breite \\(b = 4cm\\) und Höhe \\(h=3cm\\) Berechne das Volumen \\(V\\)", + "vars": { + "Volumen in cm^3": "72" + } } - }, - { - "text": "Ein Kreis hat den Radius \\(r = 5cm\\) Berechne den Umfang. Runde auf eine NkSt", - "vars": { - "Umfang in cm": "31,4" - } - }, - { - "text": "Ein Quader hat den die Länge \\(l = 4cm\\) Breite \\(b = 3cm\\) und Höhe \\(h=2cm\\) Berechne das Volumen \\(V\\)", - "vars": { - "Volumen in cm^3": "24" - } - }, - { - "text": "Ein Quader hat den die Länge \\(l = 6cm\\) Breite \\(b = 4cm\\) und Höhe \\(h=3cm\\) Berechne das Volumen \\(V\\)", - "vars": { - "Volumen in cm^3": "72" - } - } ] \ No newline at end of file diff --git a/webseite/config/subjects/mathe/topics/wahrscheinlichkeitsrechnung/tasks.json b/webseite/config/subjects/mathe/topics/wahrscheinlichkeitsrechnung/tasks.json index dff688b..5035096 100644 --- a/webseite/config/subjects/mathe/topics/wahrscheinlichkeitsrechnung/tasks.json +++ b/webseite/config/subjects/mathe/topics/wahrscheinlichkeitsrechnung/tasks.json @@ -1,14 +1,14 @@ [ { - "text": "Was ist die Wahrscheinlichkeit $$W$$, bei einem Würfel eine gerade Zahl zu würfeln?", + "text": "Was ist die Wahrscheinlichkeit \\(W\\), bei einem Würfel eine gerade Zahl zu würfeln?", "vars": { - "W": "1/2" + "W": "1\/2" } }, { - "text": "Was ist die Wahrscheinlichkeit $$W$$ für eine rote Karte aus einem Kartenspiel (52 Karten, 26 rot)", + "text": "Was ist die Wahrscheinlichkeit \\(W\\) für eine rote Karte aus einem Kartenspiel (52 Karten, 26 rot)", "vars": { - "W": "26/52" + "W": "26\/52" } } ] \ No newline at end of file From 2f27ec1094f2102619db69881227d91a9715c358 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 22:20:07 +0100 Subject: [PATCH 05/11] Anzeige von Iconauswahl optimiert --- webseite/subjectEditor.php | 2 +- webseite/topicEditor.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/webseite/subjectEditor.php b/webseite/subjectEditor.php index 109c374..429f284 100644 --- a/webseite/subjectEditor.php +++ b/webseite/subjectEditor.php @@ -159,7 +159,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-
+
-
+
Date: Mon, 6 Jan 2025 22:29:31 +0100 Subject: [PATCH 06/11] Anzeige von Formeleditor auf kleinen Bildschirmen optimiert --- webseite/assets/js/formula.js | 8 ++++---- webseite/topicEditor.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webseite/assets/js/formula.js b/webseite/assets/js/formula.js index 14f74a8..bcb3e30 100644 --- a/webseite/assets/js/formula.js +++ b/webseite/assets/js/formula.js @@ -35,7 +35,7 @@ function createFormula(text = "") { const addVariableButton = document.createElement('button'); addVariableButton.type = "button"; addVariableButton.innerText = "+"; - addVariableButton.classList.add("w-1/12", "float-right", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + addVariableButton.classList.add("w-2/12", "md:w-1/12", "float-right", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); addVariableButton.onclick = () => { createVariable(formulaElement.id); }; @@ -57,7 +57,7 @@ function createVariable(formulaUID, variableText = "", valueText = "") { const variableElement = document.createElement('input'); variableElement.type = 'text'; variableElement.classList.add('input-variable'); - variableElement.classList.add("w-6/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") + variableElement.classList.add("w-5/12", "md:w-6/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") variableElement.value = variableText; variableElement.placeholder = "Variable"; variableElement.onchange = updateFormulaText; @@ -66,7 +66,7 @@ function createVariable(formulaUID, variableText = "", valueText = "") { const valueElement = document.createElement('input'); valueElement.type = 'text'; valueElement.classList.add('input-value'); - valueElement.classList.add("w-5/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") + valueElement.classList.add("w-5/12", "md:w-5/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400") valueElement.value = valueText; valueElement.placeholder = "Richtiger Wert"; valueElement.onchange = updateFormulaText; @@ -75,7 +75,7 @@ function createVariable(formulaUID, variableText = "", valueText = "") { const removeButton = document.createElement('button'); removeButton.type = "button"; removeButton.innerText = "-" - removeButton.classList.add("w-1/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); + removeButton.classList.add("w-2/12", "md:w-1/12", "px-4", "py-3", "border", "rounded-lg", "focus:outline-none", "focus:ring-2", "focus:ring-blue-500", "text-lg", "enabled:hover:border-gray-400"); removeButton.onclick = () => { variableValueElement.remove(); updateFormulaText(); diff --git a/webseite/topicEditor.php b/webseite/topicEditor.php index 16de02e..c5092f4 100644 --- a/webseite/topicEditor.php +++ b/webseite/topicEditor.php @@ -415,7 +415,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-
Date: Mon, 6 Jan 2025 22:34:14 +0100 Subject: [PATCH 07/11] Textoverflow in Navigation bei langen Namen behoben --- webseite/index.php | 2 +- webseite/subject.php | 4 ++-- webseite/topic.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/webseite/index.php b/webseite/index.php index e764484..cf74112 100644 --- a/webseite/index.php +++ b/webseite/index.php @@ -69,7 +69,7 @@ session_start();
-
+

displayName); ?>

description); ?>

diff --git a/webseite/subject.php b/webseite/subject.php index 668e3c6..b779620 100644 --- a/webseite/subject.php +++ b/webseite/subject.php @@ -47,13 +47,13 @@ $topics = $subjectData->topics; Startseite - + displayName); ?> Übersicht diff --git a/webseite/topic.php b/webseite/topic.php index 872474f..6455750 100644 --- a/webseite/topic.php +++ b/webseite/topic.php @@ -82,10 +82,10 @@ if (!isset($topicData)) { Startseite - + displayName); ?> Übersicht - + displayName); ?> From 81f95e4f0032d2bb2232b35d1dc694672311592b Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 22:35:38 +0100 Subject: [PATCH 08/11] Textoverflow in Navigation bei langen Namen behoben --- webseite/subject.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webseite/subject.php b/webseite/subject.php index b779620..e186d17 100644 --- a/webseite/subject.php +++ b/webseite/subject.php @@ -69,7 +69,7 @@ $topics = $subjectData->topics;
-
+

displayName); ?>

From afbe57cc93231ee915c241d09ad5a98ae399f355 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 22:40:03 +0100 Subject: [PATCH 09/11] Manche Bereiche nur anzeigen, wenn sie Inhalt haben --- webseite/subject.php | 8 ++++++++ webseite/topic.php | 23 ++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/webseite/subject.php b/webseite/subject.php index e186d17..8009e95 100644 --- a/webseite/subject.php +++ b/webseite/subject.php @@ -102,6 +102,10 @@ $topics = $subjectData->topics;
-->
+ + files) > 0) { + ?>

Übungen herunterladen:

+ +
- @@ -95,6 +94,10 @@ if (!isset($topicData)) {
+ relatedTopics) > 0) { + ?> + + +

displayName); ?>

@@ -129,6 +136,9 @@ if (!isset($topicData)) { getFinishedArticle()); ?>
+ files) > 0) { + ?>

Übungen herunterladen:

@@ -148,6 +158,10 @@ if (!isset($topicData)) { ?>
+ +
@@ -206,6 +220,9 @@ if (!isset($topicData)) { ?> + relatedTopics) > 0) { + ?> + +
From 851e500eb5535e0f3199ad16d0138a742865ca0b Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Mon, 6 Jan 2025 22:45:40 +0100 Subject: [PATCH 10/11] Anzeige von Neue-Aufgabe-Button optimiert --- webseite/topicEditor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webseite/topicEditor.php b/webseite/topicEditor.php index c5092f4..8886dab 100644 --- a/webseite/topicEditor.php +++ b/webseite/topicEditor.php @@ -389,7 +389,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-
- +
+ +