From dae6cd149c316c1b566f56db4b7ff3d69d463ada Mon Sep 17 00:00:00 2001
From: Aria <aria@suma-ev.de>
Date: Tue, 22 Aug 2017 11:56:48 +0200
Subject: [PATCH] Auswahl ueber Dropdown funktioniert noch nicht richtig

---
 app/Http/Controllers/LanguageController.php  | 70 +++++++++++---------
 resources/views/languages/synoptic.blade.php |  2 +-
 routes/web.php                               |  2 +-
 3 files changed, 40 insertions(+), 34 deletions(-)

diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php
index e4bf28995..c78451607 100644
--- a/app/Http/Controllers/LanguageController.php
+++ b/app/Http/Controllers/LanguageController.php
@@ -143,7 +143,7 @@ class LanguageController extends Controller
             ->with('email', $email);        //Email-Adresse des Benutzers
     }
 
-    public function createSynopticEditPage(Request $request, $exclude = "") 
+    public function createSynopticEditPage(Request $request, $exclude = "", $chosenFile = "") 
     {
         $languageFolders  = scandir($this->languageFilePath); 
 
@@ -188,13 +188,16 @@ class LanguageController extends Controller
         $fn = "";
 
         # Wähle die erste, unbearbeitete Datei aus
-        foreach($languageObjects as $folder => $languageObject) {
-            foreach($languageObject->stringMap as $languageFileName => $languageFile) {
-                $fn = $languageFileName;
-                break 2;            
+        if($chosenFile !== "") {
+            $fn = $chosenFile;
+        } else {
+            foreach($languageObjects as $folder => $languageObject) {
+                foreach($languageObject->stringMap as $languageFileName => $languageFile) {
+                    $fn = $languageFileName;
+                    break 2;            
+                }
             }
         }
-
         $snippets = [];
         $changeTime = 0;
         $recentlyChangedFiles = [];
@@ -255,32 +258,8 @@ class LanguageController extends Controller
         $filename = $request->input('filename');
 
         # Identifizieren des gedrückten Buttons
-        if(isset($request['nextpage'])) {
-
-            # Leite weiter zur nächsten Seite
-            $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 = base64_encode(serialize($ex));
-
-            return redirect(url('synoptic', ['exclude' => $ex]));
-
-        } elseif(isset($request['download'])) {
-        # Andernfalls auslesen, zippen und herunterladen der veränderten Dateien 
+        if(isset($request['download'])) {
+        # Auslesen, zippen und herunterladen der veränderten Dateien 
          
             $data = [];
             $new  = 0;
@@ -365,6 +344,33 @@ class LanguageController extends Controller
                     } catch(ErrorException $e) {
                 echo("Failed to write ".$filename);
                 }
+        # Andernfalls weiterleiten zur nächsten Seite
+        } else {
+
+            $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 = base64_encode(serialize($ex));
+
+            if(isset($request['nextpage'])) {
+                return redirect(url('synoptic', ['exclude' => $ex]));
+            } elseif(isset($request['chosenFile'])) {
+                return redirect(url('synoptic', ['exclude' => $ex], ['chosenFile' => $request['chosenFile']]));
+            }
         }
     }
 
diff --git a/resources/views/languages/synoptic.blade.php b/resources/views/languages/synoptic.blade.php
index 7658718db..8a8ddd283 100644
--- a/resources/views/languages/synoptic.blade.php
+++ b/resources/views/languages/synoptic.blade.php
@@ -18,7 +18,7 @@
 		<input type="hidden" name="filename" value="{{$filename}}" />
 	</form>
 	<p style="display: inline;"> Andere Datei auswählen: </p>
-	<select name="chooseFile" form="submit" type="submit">
+	<select name="chosenFile" form="submit" onchange="this.form.submit()" type="submit">
 	@foreach($otherFiles as $otherFile)
 		<option value={{$otherFile}}>{{ $otherFile }}</option>
 	@endforeach
diff --git a/routes/web.php b/routes/web.php
index a351d702d..279e6a879 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -164,7 +164,7 @@ Route::group(
             return redirect('https://metager.de/klassik/databund');
         });
         Route::get('languages', 'LanguageController@createOverview');
-        Route::get('synoptic/{exclude?}', 'LanguageController@createSynopticEditPage');
+        Route::get('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@createSynopticEditPage');
         Route::post('synoptic/{exclude?}', 'LanguageController@processSynopticPageInput');
         Route::get('languages/edit/{from}/{to}/{exclude?}/{email?}', 'LanguageController@createEditPage');
         Route::post('languages/edit/{from}/{to}/{exclude?}/{email?}', 'MailController@sendLanguageFile');
-- 
GitLab