Commit d1581fed authored by Dominik Hebeler's avatar Dominik Hebeler
Browse files

Merge branch 'development' into 'master'

Development

See merge request !1040
parents 66538d66 c06c458a
...@@ -143,12 +143,15 @@ class LanguageController extends Controller ...@@ -143,12 +143,15 @@ class LanguageController extends Controller
->with('email', $email); //Email-Adresse des Benutzers ->with('email', $email); //Email-Adresse des Benutzers
} }
public function createSynopticEditPage(Request $request, $exclude = "") public function createSynopticEditPage(Request $request, $exclude = '', $chosenFile = '')
{ {
$languageFolders = scandir($this->languageFilePath); $languageFolders = scandir($this->languageFilePath);
# Enthält zu jeder Sprache ein Objekt mit allen Daten # Enthält zu jeder Sprache ein Objekt mit allen Daten
$languageObjects = []; $languageObjects = [];
$to = []; # Alle vorhandenen Sprachen
# Alle vorhandenen Sprachen
$to = [];
# Dekodieren ausgeschlossener Dateien anhand des URL-Parameters # Dekodieren ausgeschlossener Dateien anhand des URL-Parameters
$ex = $this->decodeExcludedFiles($exclude); $ex = $this->decodeExcludedFiles($exclude);
...@@ -159,16 +162,14 @@ class LanguageController extends Controller ...@@ -159,16 +162,14 @@ class LanguageController extends Controller
$languageObjects[$folder] = new LanguageObject($folder, $this->languageFilePath.$folder); $languageObjects[$folder] = new LanguageObject($folder, $this->languageFilePath.$folder);
} }
} }
$fileNames = [];
# Speichere Daten in LanguageObject, überspringe ausgeschlossene Dateien # Speichere Daten in LanguageObject, überspringe ausgeschlossene Dateien
foreach ($languageObjects as $folder => $languageObject) { foreach ($languageObjects as $folder => $languageObject) {
$to[] = $folder; $to[] = $folder;
$di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($languageObject->filePath)); $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($languageObject->filePath));
foreach($di as $filename => $file) { foreach($di as $filename => $file) {
foreach($ex['files'] as $file) { if(!$this->endsWith($filename, ".") && !in_array(basename($filename), $fileNames)) {
if($file === basename($filename)) { $fileNames[] = basename($filename);
continue 2;
}
} }
if(!$this->endsWith($filename, ".")) { if(!$this->endsWith($filename, ".")) {
$tmp = include $filename; $tmp = include $filename;
...@@ -181,20 +182,37 @@ class LanguageController extends Controller ...@@ -181,20 +182,37 @@ class LanguageController extends Controller
$fn = ""; $fn = "";
# Wähle die erste, unbearbeitete Datei aus # Wähle die erste, unbearbeitete Datei aus, überspringe bereits bearbeitete Dateien
foreach($languageObjects as $folder => $languageObject) { if($chosenFile !== "") {
foreach($languageObject->stringMap as $languageFileName => $languageFile) { $fn = $chosenFile;
$fn = $languageFileName; } else {
break 2; foreach($languageObjects as $folder => $languageObject) {
foreach($languageObject->stringMap as $languageFileName => $languageFile) {
foreach($ex['files'] as $file) {
if($file === basename($languageFileName)) {
continue 2;
}
}
$fn = $languageFileName;
break 2;
}
} }
} }
$snippets = []; $snippets = [];
$changeTime = 0;
$recentlyChangedFiles = [];
# Speichere den Inhalt der ausgewählten Datei in allen Sprachen in $snippets ab # Speichere den Inhalt der ausgewählten Datei in allen Sprachen in $snippets ab
foreach($languageObjects as $folder => $languageObject) { foreach($languageObjects as $folder => $languageObject) {
foreach($languageObject->stringMap as $languageFileName => $languageFile) { foreach($languageObject->stringMap as $languageFileName => $languageFile) {
if($languageFileName === $fn) { if($languageFileName === $fn) {
if($changeTime < filemtime($languageObject->filePath."/".$languageFileName)) {
unset($recentlyChangedFiles);
$changeTime = filemtime($languageObject->filePath."/".$languageFileName);
$recentlyChangedFiles[] = $languageObject->language;
} else if($changeTime === filemtime($languageObject->filePath."/".$languageFileName)) {
$recentlyChangedFiles[] = $languageObject->language;
}
foreach($languageFile as $key => $value) { foreach($languageFile as $key => $value) {
$snippets[$key][$languageObject->language] = $value; $snippets[$key][$languageObject->language] = $value;
} }
...@@ -203,7 +221,7 @@ class LanguageController extends Controller ...@@ -203,7 +221,7 @@ class LanguageController extends Controller
} }
} }
# Fülle $snippets auf mit leeren Einträgen für übrige Sprachen # Fülle $snippets auf mit leeren Einträgen für die restlichen Sprachen
foreach($to as $t) { foreach($to as $t) {
foreach($snippets as $key => $langArray) { foreach($snippets as $key => $langArray) {
if(!isset($langArray[$t])) { if(!isset($langArray[$t])) {
...@@ -216,6 +234,8 @@ class LanguageController extends Controller ...@@ -216,6 +234,8 @@ class LanguageController extends Controller
->with('to', $to) # Alle vorhandenen Sprachen ->with('to', $to) # Alle vorhandenen Sprachen
->with('texts', $snippets) # Array mit Sprachsnippets ->with('texts', $snippets) # Array mit Sprachsnippets
->with('filename', $fn) # Name der Datei ->with('filename', $fn) # Name der Datei
->with('recentlyChangedFiles', $recentlyChangedFiles)
->with('otherFiles', $fileNames) # Namen der restlichen Sprachdateien
->with('title', trans('titles.languages.edit')); ->with('title', trans('titles.languages.edit'));
} }
...@@ -233,37 +253,13 @@ class LanguageController extends Controller ...@@ -233,37 +253,13 @@ class LanguageController extends Controller
return $t; return $t;
} }
public function processSynopticPageInput(Request $request, $exclude = "") { public function processSynopticPageInput(Request $request, $exclude = '', $chosenFile = '') {
$filename = $request->input('filename'); $filename = $request->input('filename');
# Identifizieren des gedrückten Buttons # Identifizieren des gedrückten Buttons
if(isset($request['nextpage'])) { if(isset($request['download'])) {
# Auslesen, zippen und herunterladen der veränderten Dateien
# 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
$data = []; $data = [];
$new = 0; $new = 0;
...@@ -348,6 +344,33 @@ class LanguageController extends Controller ...@@ -348,6 +344,33 @@ class LanguageController extends Controller
} catch(ErrorException $e) { } catch(ErrorException $e) {
echo("Failed to write ".$filename); 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']]));
}
} }
} }
......
...@@ -459,9 +459,9 @@ class MetaGer ...@@ -459,9 +459,9 @@ class MetaGer
}else{ }else{
$newurl .= "?tag=metager04-21"; $newurl .= "?tag=metager04-21";
} }
$result->link = $newurl;
$result->partnershop = true;
} }
$result->link = $newurl;
$result->partnershop = true;
} }
} }
return $results; return $results;
......
...@@ -9,9 +9,10 @@ class LanguageObject ...@@ -9,9 +9,10 @@ class LanguageObject
{ {
public $language = ""; public $language = "";
# bspw. /home/MetaGer/resources/lang/de
public $filePath = ""; public $filePath = "";
#2D-Array der Form [$filename][$key] # 2D-Array der Form [$filename][$key]
public $stringMap = []; public $stringMap = [];
public function __construct($lang, $path) public function __construct($lang, $path)
......
$(document).ready(function () {
if (localStorage) { if (localStorage) {
var theme = localStorage.getItem('theme'); var theme = localStorage.getItem('theme');
if (theme != null) { if (theme != null) {
...@@ -6,8 +6,7 @@ $(document).ready(function () { ...@@ -6,8 +6,7 @@ $(document).ready(function () {
localStorage.removeItem('theme'); localStorage.removeItem('theme');
} else { } else {
theme = theme.split(','); theme = theme.split(',');
$('#theme').attr('href', '/css/theme.css.php?r=' + theme[0] + '&g=' + theme[1] + '&b=' + theme[2] + '&a=' + theme[3]); document.getElementById('theme').setAttribute('href', '/css/theme.css.php?r=' + theme[0] + '&g=' + theme[1] + '&b=' + theme[2] + '&a=' + theme[3]);
} }
} }
} }
});
\ No newline at end of file
...@@ -103,6 +103,11 @@ function setSettings () { ...@@ -103,6 +103,11 @@ function setSettings () {
if (autocomplete !== null) { if (autocomplete !== null) {
$('input[name=eingabe]').attr('autocomplete', autocomplete); $('input[name=eingabe]').attr('autocomplete', autocomplete);
} }
// Change the request method to the given parameter
var requestMethod = localStorage.getItem('request');
if (requestMethod !== null && (requestMethod === 'GET' || requestMethod === 'POST')) {
$('#searchForm').attr('method', requestMethod);
}
if ($('fieldset#foki.mobile').length) { if ($('fieldset#foki.mobile').length) {
$('fieldset.mobile input#bilder').val('angepasst'); $('fieldset.mobile input#bilder').val('angepasst');
$('fieldset.mobile input#bilder').prop('checked', true); $('fieldset.mobile input#bilder').prop('checked', true);
......
<?php <?php
return [ return [
'achtung' => 'Achtung, da sich unsere Website in der aktiven Entwicklung befindet, kann es dazu kommen, dass sich immer wieder Änderungen an Aufbau und Funktion der Website ergeben. Wir versuchen stets das FAQ schnellstmöglich den Änderungen entsprechend anzupassen, können jedoch nicht verhindern, dass es zu temporären Unstimmigkeiten in Teilen der Erklärungen kommt.', 'achtung' => 'Achtung, da unsere Suchmaschine ständig weiterentwickelt und verbessert wird, kann es dazu kommen, dass sich immer wieder Änderungen an Aufbau und Funktion ergeben. Wir versuchen zwar die Hilfe schnellstmöglich den Änderungen entsprechend anzupassen, können jedoch nicht ausschließen, dass es zu temporären Unstimmigkeiten in Teilen der Erklärungen kommt.',
'title' => 'MetaGer - FAQ', 'title' => 'MetaGer - FAQ',
'faq.1.h' => 'Was ist MetaGer?', 'faq.1.h' => 'Was ist MetaGer?',
......
...@@ -8,5 +8,6 @@ return [ ...@@ -8,5 +8,6 @@ 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.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.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.', '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):' 'email' => '<b>E-Mail-Adresse für Rückfragen</b> (optional):',
'synoptic' => ['hinweis' => 'Datei wurde zuletzt bearbeitet.'],
]; ];
...@@ -13,16 +13,27 @@ ...@@ -13,16 +13,27 @@
</div> </div>
--> -->
*/?> */?>
<h2>{{$filename}}</h2> <h2>Aktuelle Datei: {{$filename}}</h2>
<form id="submit" method="POST"> <form id="submit" method="POST">
<input type="hidden" name="filename" value="{{$filename}}" /> <input type="hidden" name="filename" value="{{$filename}}" />
</form> </form>
<p style="display: inline;"> Andere Datei auswählen: </p>
<select name="chosenFile" form="submit" onchange="this.form.submit()" type="submit">
@foreach($otherFiles as $otherFile)
<option value={{$otherFile}}>{{ $otherFile }}</option>
@endforeach
</select>
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>#ID</th> <th>#ID</th>
@foreach($to as $t) @foreach($to as $t)
<th>{{$t}}</th> <th>
{{$t}}
@if(in_array($t, $recentlyChangedFiles))
<span style="background-color: Khaki;font-weight: normal;"><u><br>{{ trans('languages.synoptic.hinweis') }}</u><br></span>
@endif
</th>
@endforeach @endforeach
</tr> </tr>
</thead> </thead>
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{!! trans('staticPages.meta.language') !!}"> <html lang="{!! trans('staticPages.meta.language') !!}">
<head> <head>
<script src="{{ elixir('js/lib.js') }}"></script>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>@yield('title')</title> <title>@yield('title')</title>
...@@ -18,6 +17,8 @@ ...@@ -18,6 +17,8 @@
<link type="text/css" rel="stylesheet" href="/font-awesome/css/font-awesome.min.css" /> <link type="text/css" rel="stylesheet" href="/font-awesome/css/font-awesome.min.css" />
<link type="text/css" rel="stylesheet" href="{{ elixir('css/themes/default.css') }}" /> <link type="text/css" rel="stylesheet" href="{{ elixir('css/themes/default.css') }}" />
<link id="theme" type="text/css" rel="stylesheet" href="/css/theme.css.php" /> <link id="theme" type="text/css" rel="stylesheet" href="/css/theme.css.php" />
<script src="{{ elixir('js/scriptSubPages.js') }}"></script>
<script src="{{ elixir('js/lib.js') }}"></script>
@if (isset($css)) @if (isset($css))
@if(is_array($css)) @if(is_array($css))
@foreach($css as $el) @foreach($css as $el)
...@@ -220,5 +221,4 @@ ...@@ -220,5 +221,4 @@
<img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" /> <img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" />
</div> </div>
</body> </body>
<script src="{{ elixir('js/scriptSubPages.js') }}"></script>
</html> </html>
...@@ -164,8 +164,8 @@ Route::group( ...@@ -164,8 +164,8 @@ Route::group(
return redirect('https://metager.de/klassik/databund'); return redirect('https://metager.de/klassik/databund');
}); });
Route::get('languages', 'LanguageController@createOverview'); 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::post('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@processSynopticPageInput');
Route::get('languages/edit/{from}/{to}/{exclude?}/{email?}', 'LanguageController@createEditPage'); Route::get('languages/edit/{from}/{to}/{exclude?}/{email?}', 'LanguageController@createEditPage');
Route::post('languages/edit/{from}/{to}/{exclude?}/{email?}', 'MailController@sendLanguageFile'); Route::post('languages/edit/{from}/{to}/{exclude?}/{email?}', 'MailController@sendLanguageFile');
Route::get('berlin', 'StartpageController@berlin'); Route::get('berlin', 'StartpageController@berlin');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment