From e065f07315358bee5aae402defcfd1e340611749 Mon Sep 17 00:00:00 2001
From: Aria <aria@suma-ev.de>
Date: Tue, 2 May 2017 11:08:00 +0200
Subject: [PATCH] =?UTF-8?q?Arbeit=20an=20synoptischer=20=C3=9Cbersicht=20a?=
 =?UTF-8?q?ller=20Sprachdateien?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/Http/Controllers/LanguageController.php  | 100 +++++++++++++++++++
 resources/lang/de/languages.php              |   1 +
 resources/lang/en/languages.php              |   3 +-
 resources/views/languages/edit.blade.php     |   2 +-
 resources/views/languages/synoptic.blade.php |   1 +
 routes/web.php                               |   1 +
 6 files changed, 106 insertions(+), 2 deletions(-)
 create mode 100644 resources/views/languages/synoptic.blade.php

diff --git a/app/Http/Controllers/LanguageController.php b/app/Http/Controllers/LanguageController.php
index fa8b1c05a..0b839ce4f 100644
--- a/app/Http/Controllers/LanguageController.php
+++ b/app/Http/Controllers/LanguageController.php
@@ -157,6 +157,106 @@ class LanguageController extends Controller
             ->with('email', $email);
     }
 
+    public function createSynopticEditPage(Request $request) 
+    {
+        $languageFilePath = resource_path() . "/lang/";
+        $files            = scandir($languageFilePath);
+        $dirs             = [];
+        foreach ($files as $file) {
+            if (is_dir($languageFilePath . $file) && $file !== "." && $file !== "..") {
+                $dirs[$file] = $file;
+            }
+
+        }
+
+        $texts = [];
+        $langTexts = [];
+        $sum       = [];
+        $filePath  = [];
+        foreach ($dirs as $dir) {
+            # Wir überprüfen nun für jede Datei die Anzahl der vorhandenen Übersetzungen
+            $di              = new RecursiveDirectoryIterator($languageFilePath . $dir);
+            $langTexts[$dir] = 0;
+            foreach (new RecursiveIteratorIterator($di) as $filename => $file) {
+                if (!$this->endsWith($filename, ".")) {
+                    $tmp = include $filename;
+                    foreach ($tmp as $key => $value) {
+                        $sum                                    = array_merge($sum, $this->getValues([$key => $value], basename($filename)));
+                        $texts[basename($filename)][$key][$dir] = $value;
+                        $langTexts[$dir] += count($this->getValues([$key => $value]));
+                    }
+                    //$filePath[basename($filename)] = preg_replace("/lang\/.*?\//si", "lang/$to/", substr($filename, strpos($filename, "lang")));
+
+                }
+
+            }
+        }
+        die(var_dump($texts));
+        return view('languages.synoptic');
+       /* $langs = [];
+        $fn    = "";
+        $t     = [];
+        $ex    = ['files' => [], 'new' => 0];
+        if ($exclude !== "") {
+            try {
+                $ex = unserialize(base64_decode($exclude));
+            } catch (\ErrorException $e) {
+                $ex = ['files' => [], 'new' => 0];
+            }
+        }
+        foreach ($texts as $filename => $text) {
+            $has = false;
+            foreach ($ex['files'] as $file) {
+                if ($file === $filename) {
+                    $has = true;
+                }
+            }
+            if ($has) {
+                continue;
+            }
+            while ($this->hasToMuchDimensions($text)) {
+                $text = $this->deMultidimensionalizeArray($text);
+            }
+            # Hier können wir später die bereits bearbeiteten Dateien ausschließen.
+            foreach ($text as $textname => $languages) {
+
+                if ($languages === "") {
+                    continue;
+                }
+
+                $complete = true;
+                foreach ($languages as $lang => $value) {
+                    if ($lang !== $to) {
+                        $langs = array_add($langs, $lang, $lang);
+                    }
+                    if (!isset($languages[$to]) && isset($languages[$lang])) {
+                        $complete = false;
+                    }
+
+                }
+                if (!isset($languages[$to])) {
+                    $fn = $filePath[$filename];
+                    $t  = $text;
+                    break;
+                }
+            }
+
+        }
+
+        $t = $this->htmlEscape($t, $to);
+        $t = $this->createHints($t, $to);
+
+        return view('languages.synoptic')
+            ->with('texts', $t)
+            ->with('filename', $fn)
+            ->with('title', trans('titles.languages.edit'))
+            ->with('langs', $langs)
+            ->with('langTexts', $langTexts)
+            ->with('sum', $sum)
+            ->with('new', $ex["new"])*/
+
+    }
+
     private function htmlEscape($t, $to)
     {
         foreach ($t as $key => $langTexts) {
diff --git a/resources/lang/de/languages.php b/resources/lang/de/languages.php
index b4eb50fef..c298807f6 100644
--- a/resources/lang/de/languages.php
+++ b/resources/lang/de/languages.php
@@ -8,4 +8,5 @@ return [
     'hinweis.1'      => 'Sobald du mit deinen Texten zufrieden bist, kannst du uns diese mit einem Klick auf folgenden Knopf automatisch zusenden. Wenn es mehr fehlende Texte in der angegebenen Sprache gibt, wird dein Browser dich danach direkt zu diesen leiten.',
     'hinweis.2'      => '<b>Hinweis</b>: Die übermittelten Texte werden von diesem Tool erst erkannt, sobald diese von uns gesichtet und eingefügt wurden. Wenn du deine Arbeit sichern möchtest um diese zu einem späteren Zeitpunkt fortzusetzen (auch wenn wir deine bisherige Arbeit noch nicht übernehmen konnten), so reicht es vollkommen, den aktuellen Link aus deiner Browserleiste zu kopieren und zu einem späteren Zeitpunkt wieder aufzurufen.',
     'hinweis.3'      => '<b>Achtung</b>: Mit der Einsendung stimmst du einer <a href="https://gitlab.metager3.de/open-source/MetaGer" target="_blank" rel="noopener">Veröffentlichung</a> deiner Texte unter AGPL-v3-Lizenz durch uns zu. Falls du namentlich genannt werden möchtest, teile uns dies bitte in einer email an <a href="mailto:office@suma-ev.de">office@suma-ev.de</a> mit.',
+    'email'			 => '<b>E-Mail-Adresse für Rückfragen</b> (optional):'
 ];
diff --git a/resources/lang/en/languages.php b/resources/lang/en/languages.php
index e13dfb229..b1bee6bca 100644
--- a/resources/lang/en/languages.php
+++ b/resources/lang/en/languages.php
@@ -7,5 +7,6 @@ return [
     "progress"	=>	":uebersetzteTexte/:textCount snippets translated (:percentage%)",
     "hinweis.1"	=>	"Please click \"Submit data\" when finished. You don't have to translate all items.",
     "hinweis.2"	=>	"<b>Hint</b>: You won't see your translations until we checked and inserted it. Save your work by setting a bookmark.",
-    "hinweis.3"	=>	"<b>Note</b>: We publish the hole content of your work on  a<a href=\"https://gitlab.metager3.de/open-source/MetaGer\" target=\"_blank\" rel=\"noopener\">Publication</a>. This is subject to a AGPL-v3-License. You agree with clicking the \"Submit data\" button."
+    "hinweis.3"	=>	"<b>Note</b>: We publish the hole content of your work on  a<a href=\"https://gitlab.metager3.de/open-source/MetaGer\" target=\"_blank\" rel=\"noopener\">Publication</a>. This is subject to a AGPL-v3-License. You agree with clicking the \"Submit data\" button.",
+    "email"		=> "<b>Email address for possible inquiries</b> (optional):"
 ];
\ No newline at end of file
diff --git a/resources/views/languages/edit.blade.php b/resources/views/languages/edit.blade.php
index b196f3fa5..27101a30a 100644
--- a/resources/views/languages/edit.blade.php
+++ b/resources/views/languages/edit.blade.php
@@ -54,7 +54,7 @@
 	<p>{{ trans('languages.hinweis.1') }}</p>
 	<p>{!! trans('languages.hinweis.2') !!}</p>
 	<p>{!! trans('languages.hinweis.3') !!}</p>
-	<p><b>E-Mail-Adresse für Rückfragen</b> (optional):</p>
+	<p>{!! trans('languages.email') !!}</p>
 	<p><input type="email" name="email" form="submit" value="{{$email}}"/></p>
 	<button class="btn btn-success" type="submit" form="submit">Daten übermitteln</button>
 	<script type="text/javascript" src="{{ elixir('js/lib.js') }}"></script>
diff --git a/resources/views/languages/synoptic.blade.php b/resources/views/languages/synoptic.blade.php
new file mode 100644
index 000000000..2072b3cfa
--- /dev/null
+++ b/resources/views/languages/synoptic.blade.php
@@ -0,0 +1 @@
+@extends('layouts.subPages')
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 199228a15..249960333 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -158,6 +158,7 @@ Route::group(
             return redirect('https://metager.de/klassik/databund');
         });
         Route::get('languages', 'LanguageController@createOverview');
+        Route::get('synoptic', 'LanguageController@createSynopticEditPage');
         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