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
->with('email', $email); //Email-Adresse des Benutzers
}
public function createSynopticEditPage(Request $request, $exclude = "")
public function createSynopticEditPage(Request $request, $exclude = '', $chosenFile = '')
{
$languageFolders = scandir($this->languageFilePath);
# Enthält zu jeder Sprache ein Objekt mit allen Daten
$languageObjects = [];
$to = []; # Alle vorhandenen Sprachen
# Alle vorhandenen Sprachen
$to = [];
# Dekodieren ausgeschlossener Dateien anhand des URL-Parameters
$ex = $this->decodeExcludedFiles($exclude);
......@@ -159,16 +162,14 @@ class LanguageController extends Controller
$languageObjects[$folder] = new LanguageObject($folder, $this->languageFilePath.$folder);
}
}
$fileNames = [];
# Speichere Daten in LanguageObject, überspringe ausgeschlossene Dateien
foreach ($languageObjects as $folder => $languageObject) {
$to[] = $folder;
$di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($languageObject->filePath));
foreach($di as $filename => $file) {
foreach($ex['files'] as $file) {
if($file === basename($filename)) {
continue 2;
}
if(!$this->endsWith($filename, ".") && !in_array(basename($filename), $fileNames)) {
$fileNames[] = basename($filename);
}
if(!$this->endsWith($filename, ".")) {
$tmp = include $filename;
......@@ -181,20 +182,37 @@ 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;
# Wähle die erste, unbearbeitete Datei aus, überspringe bereits bearbeitete Dateien
if($chosenFile !== "") {
$fn = $chosenFile;
} else {
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 = [];
$changeTime = 0;
$recentlyChangedFiles = [];
# Speichere den Inhalt der ausgewählten Datei in allen Sprachen in $snippets ab
foreach($languageObjects as $folder => $languageObject) {
foreach($languageObject->stringMap as $languageFileName => $languageFile) {
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) {
$snippets[$key][$languageObject->language] = $value;
}
......@@ -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($snippets as $key => $langArray) {
if(!isset($langArray[$t])) {
......@@ -216,6 +234,8 @@ class LanguageController extends Controller
->with('to', $to) # Alle vorhandenen Sprachen
->with('texts', $snippets) # Array mit Sprachsnippets
->with('filename', $fn) # Name der Datei
->with('recentlyChangedFiles', $recentlyChangedFiles)
->with('otherFiles', $fileNames) # Namen der restlichen Sprachdateien
->with('title', trans('titles.languages.edit'));
}
......@@ -233,37 +253,13 @@ class LanguageController extends Controller
return $t;
}
public function processSynopticPageInput(Request $request, $exclude = "") {
public function processSynopticPageInput(Request $request, $exclude = '', $chosenFile = '') {
$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;
......@@ -348,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']]));
}
}
}
......
......@@ -459,9 +459,9 @@ class MetaGer
}else{
$newurl .= "?tag=metager04-21";
}
$result->link = $newurl;
$result->partnershop = true;
}
$result->link = $newurl;
$result->partnershop = true;
}
}
return $results;
......
......@@ -9,9 +9,10 @@ class LanguageObject
{
public $language = "";
# bspw. /home/MetaGer/resources/lang/de
public $filePath = "";
#2D-Array der Form [$filename][$key]
# 2D-Array der Form [$filename][$key]
public $stringMap = [];
public function __construct($lang, $path)
......
$(document).ready(function () {
if (localStorage) {
var theme = localStorage.getItem('theme');
if (theme != null) {
......@@ -6,8 +6,7 @@ $(document).ready(function () {
localStorage.removeItem('theme');
} else {
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 () {
if (autocomplete !== null) {
$('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) {
$('fieldset.mobile input#bilder').val('angepasst');
$('fieldset.mobile input#bilder').prop('checked', true);
......
<?php
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',
'faq.1.h' => 'Was ist MetaGer?',
......
......@@ -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.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):'
'email' => '<b>E-Mail-Adresse für Rückfragen</b> (optional):',
'synoptic' => ['hinweis' => 'Datei wurde zuletzt bearbeitet.'],
];
......@@ -13,16 +13,27 @@
</div>
-->
*/?>
<h2>{{$filename}}</h2>
<h2>Aktuelle Datei: {{$filename}}</h2>
<form id="submit" method="POST">
<input type="hidden" name="filename" value="{{$filename}}" />
</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">
<thead>
<tr>
<th>#ID</th>
@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
</tr>
</thead>
......
<!DOCTYPE html>
<html lang="{!! trans('staticPages.meta.language') !!}">
<head>
<script src="{{ elixir('js/lib.js') }}"></script>
<meta charset="utf-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>@yield('title')</title>
......@@ -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="{{ elixir('css/themes/default.css') }}" />
<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(is_array($css))
@foreach($css as $el)
......@@ -220,5 +221,4 @@
<img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" />
</div>
</body>
<script src="{{ elixir('js/scriptSubPages.js') }}"></script>
</html>
......@@ -164,8 +164,8 @@ Route::group(
return redirect('https://metager.de/klassik/databund');
});
Route::get('languages', 'LanguageController@createOverview');
Route::get('synoptic/{exclude?}', 'LanguageController@createSynopticEditPage');
Route::post('synoptic/{exclude?}', 'LanguageController@processSynopticPageInput');
Route::get('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@createSynopticEditPage');
Route::post('synoptic/{exclude?}/{chosenFile?}', 'LanguageController@processSynopticPageInput');
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');
......
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