diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php index e4bf289951972ef90d1f4de456abb2eed43a4ed8..c78451607df857628d3558cbfd64f155b46dcec5 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 7658718db89e5987ea16a37783bb896c447aad54..8a8ddd28367a2c9c9f34d8a979180352d57252cf 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 a351d702ddba8167116926b5b757fcd7eec8e912..279e6a8795e29ea711a3495c954e24a3b8b72870 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');