From 9c92eeb2fea9a112dd855842edc4e10919f61892 Mon Sep 17 00:00:00 2001 From: Aria <aria@suma-ev.de> Date: Thu, 18 May 2017 14:12:40 +0200 Subject: [PATCH] =?UTF-8?q?Weiterleitung=20zur=20n=C3=A4chsten=20Datei=20i?= =?UTF-8?q?mplementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/LanguageController.php | 17 ++-- app/Http/Controllers/MailController.php | 91 +++++++++++++++++++- app/Models/LanguageObject.php | 2 +- resources/views/languages/synoptic.blade.php | 16 ++-- routes/web.php | 1 + 5 files changed, 113 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php index 0e6330453..e3b2f1eb5 100644 --- a/app/Http/Controllers/LanguageController.php +++ b/app/Http/Controllers/LanguageController.php @@ -200,15 +200,20 @@ class LanguageController extends Controller #Wähle die erste Datei aus, welche nicht ausgeschlossen worden ist foreach($languageObjects as $folder => $languageObject) { foreach($languageObject->stringMap as $languageFileName => $languageFile) { - if(isset($ex[$languageFileName])) { - continue 2; - } else { - $fn = $languageFileName; - break 2; - } + foreach($ex['files'] as $file) { + if($file === $languageFileName) { + continue 2; + } + } + $fn = $languageFileName; + break 2; } } + if($fn === "") { + //Alles bearbeitet -> zeige entsprechende Nachricht + } + $snippets = []; #Speichere den Inhalt der ausgewählten Datei in allen Sprachen in $snippets ab diff --git a/app/Http/Controllers/MailController.php b/app/Http/Controllers/MailController.php index 90dd4dcee..2c7a35e76 100644 --- a/app/Http/Controllers/MailController.php +++ b/app/Http/Controllers/MailController.php @@ -204,11 +204,11 @@ class MailController extends Controller if ($new > 0) { if($emailAddress !== "") { - Mail::to("dev@suma-ev.de") + Mail::to("aria@suma-ev.de") ->send(new Sprachdatei($message, $output, basename($filename), $emailAddress)); } else { - Mail::to("dev@suma-ev.de") + Mail::to("aria@suma-ev.de") ->send(new Sprachdatei($message, $output, basename($filename))); } } @@ -216,4 +216,91 @@ class MailController extends Controller return redirect(url('languages/edit', ['from' => $from, 'to' => $to, 'exclude' => $ex, 'email' => $emailAddress])); } + + + public function downloadModifiedLanguagefiles(Request $request, $exclude = "") { + $filename = $request->input('filename'); + # Wir erstellen nun zunächst den Inhalt der Datei: + $data = []; + $new = 0; + $emailAddress = ""; + $editedKeys = ""; + foreach ($request->all() as $key => $value) { + + if ($key === "filename" || $value === "") { + continue; + } + if($key === "email") { + $emailAddress = $value; + continue; + } + $key = base64_decode($key); + if (strpos($key, "_new_") === 0 && $value !== "") { + $new++; + $key = substr($key, strpos($key, "_new_") + 5); + $editedKeys = $editedKeys."\n".$key; + + } + else if ($this->isEdited($key, $value, $filename)) { + $new++; + $editedKeys = $editedKeys."\n".$key; + } + + $key = trim($key); + if (!strpos($key, "#")) { + $data[$key] = $value; + } else { + $ref = &$data; + do { + $ref = &$ref[substr($key, 0, strpos($key, "#"))]; + $key = substr($key, strpos($key, "#") + 1); + } while (strpos($key, "#")); + $ref = &$ref[$key]; + $ref = $value; + } + } + + $output = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $output = preg_replace("/\{/si", "[", $output); + $output = preg_replace("/\}/si", "]", $output); + $output = preg_replace("/\": ([\"\[])/si", "\"\t=>\t$1", $output); + + $output = "<?php\n\nreturn $output;\n"; + + $message = "Moin moin,\n\nein Benutzer hat eine Sprachdatei aktualisiert.\nBearbeitet wurden die Einträge: $editedKeys\n\nSollten die Texte so in Ordnung sein, ersetzt, oder erstellt die Datei aus dem Anhang in folgendem Pfad:\n$filename\n\nFolgend zusätzlich der Inhalt der Datei:\n\n$output"; + + # Wir haben nun eine Mail an uns geschickt, welche die entsprechende Datei beinhaltet. + # Nun müssen wir den Nutzer eigentlich nur noch zurück leiten und die Letzte bearbeitete Datei ausschließen: + $ex = []; + if ($exclude !== "") { + try { + $ex = unserialize(base64_decode($exclude)); + } catch (\ErrorException $e) { + $ex = []; + } + + if (!isset($ex["files"])) { + $ex["files"] = []; + } + } + if (!isset($ex["new"])) { + $ex["new"] = 0; + } + $ex['files'][] = basename($filename); + $ex["new"] += $new; + + if ($new > 0) { + + } + + // var_dump($ex); + //die(); + $ex = base64_encode(serialize($ex)); + + return redirect(url('synoptic', ['exclude' => $ex])); + + } + + + } diff --git a/app/Models/LanguageObject.php b/app/Models/LanguageObject.php index b4f00ff6b..c6ef5b9e5 100644 --- a/app/Models/LanguageObject.php +++ b/app/Models/LanguageObject.php @@ -3,7 +3,7 @@ namespace App\Models; /* -* Beinhaltet zu je einer Sprache Angaben zum Pfad der jeweiligen Datei, sowie die vorhandenen Übersetzungen +* Hilfsklasse, welche zu je einer Sprache Angaben zum Pfad der jeweiligen Datei, sowie die vorhandenen Übersetzungen enthält */ class LanguageObject { diff --git a/resources/views/languages/synoptic.blade.php b/resources/views/languages/synoptic.blade.php index 1ce303621..f51b93173 100644 --- a/resources/views/languages/synoptic.blade.php +++ b/resources/views/languages/synoptic.blade.php @@ -31,21 +31,27 @@ <tr> <!--Key --> <td class="name language-name">{{preg_replace("/(\s*).*#(.*)$/si", "$1$2", $key)}}</td> @foreach($language as $lang => $languageValue) - <td> - <textarea class="language-text-area" rows="1" cols="50" form="submit" name="{{base64_encode("_new_" . $key)}}">{{ $languageValue }} </textarea> - </td> + @if($lang === "de") + <td> + <textarea class="language-text-area" rows="1" readonly cols="20" form="submit" name="{{base64_encode("_new_".$lang."_".$key)}}">{{ $languageValue }} </textarea> + </td> + @else + <td> + <textarea class="language-text-area" rows="1" cols="20" form="submit" name="{{base64_encode("_new_".$lang."_".$key)}}">{{ $languageValue }} </textarea> + </td> + @endif @endforeach </tr> @endforeach </tbody> </table> - <!-- +<!-- <p>{{ trans('languages.hinweis.1') }}</p> <p>{!! trans('languages.hinweis.2') !!}</p> <p>{!! trans('languages.hinweis.3') !!}</p> <p>{!! trans('languages.email') !!}</p> - --> +--> <button class="btn btn-success" type="submit" form="submit">Daten übermitteln</button> <script type="text/javascript" src="{{ elixir('js/lib.js') }}"></script> <script type="text/javascript" src="{{ elixir('js/editLanguage.js') }}"></script> diff --git a/routes/web.php b/routes/web.php index 7bae34efa..0ef9d4e20 100644 --- a/routes/web.php +++ b/routes/web.php @@ -159,6 +159,7 @@ Route::group( }); Route::get('languages', 'LanguageController@createOverview'); Route::get('synoptic/{exclude?}', 'LanguageController@createSynopticEditPage'); + Route::post('synoptic/{exclude?}', 'MailController@downloadModifiedLanguagefiles'); Route::get('languages/edit/{from}/{to}/{exclude?}/{email?}', 'LanguageController@createEditPage'); Route::post('languages/edit/{from}/{to}/{exclude?}/{email?}', 'MailController@sendLanguageFile'); Route::get('berlin', 'StartpageController@berlin'); -- GitLab