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