Commit 619e5401 authored by Karl Hasselbring's avatar Karl Hasselbring

Merge branch 'development' into 816-mobile-ansicht-optimieren

parents 1e3db193 68464a40
<?php
namespace App\Http\Controllers;
use File;
use Illuminate\Http\Request;
use PiwikTracker;
use Response;
class ImageController extends Controller
{
public function generateImage(Request $request)
{
/*
#Piwik Code
PiwikTracker::$URL = 'http://piwik.metager3.de';
$piwikTracker = new PiwikTracker($idSite = 1);
// Cookies ausschalten
$piwikTracker->disableCookieSupport();
$piwikTracker->deleteCookies();
$site = $request->input('site', '/');
// Sendet Tracker request per http
$piwikTracker->doTrackPageView($site);
*/
$path = public_path() . '/img/1px.png';
$fileType = File::type($path);
$response = Response::make(File::get($path), 200);
$response->header('Content-Type', $fileType);
return $response;
}
}
......@@ -256,7 +256,9 @@ class MetaGer
$this->results = $newResults;
#Adgoal Implementation
$this->results = $this->parseAdgoal($this->results);
if (!$this->apiAuthorized) {
$this->results = $this->parseAdgoal($this->results);
}
# Human Verification
$this->results = $this->humanVerification($this->results);
......@@ -1371,12 +1373,10 @@ class MetaGer
IP-Adress older than one day stored on our servers. (Except the ones who got banned in that short period of course) ;-)
*/
$logEntry .= " ip=" . $this->request->ip();
$logEntry .= " pid=" . getmypid();
$logEntry .= " ref=" . $this->request->header('Referer');
$logEntry .= " time=" . round((microtime(true) - $this->starttime), 2) . " serv=" . $this->fokus;
$logEntry .= " interface=" . LaravelLocalization::getCurrentLocale();
$logEntry .= " sprachfilter=" . $this->lang;
$logEntry .= " search=" . $this->eingabe;
# 2 Arten von Logs in einem wird die Anzahl der Abfragen an eine Suchmaschine gespeichert und in der anderen
# die Anzahl, wie häufig diese Ergebnisse geliefert hat.
......
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
......@@ -13,7 +16,6 @@
"laravelcollective/html": "^5.2.0",
"mcamara/laravel-localization": "^1.1",
"mews/captcha": "^2.2",
"piwik/piwik-php-tracker": "^1.0",
"predis/predis": "^1.1"
},
"require-dev": {
......@@ -40,8 +42,7 @@
},
"extra": {
"laravel": {
"dont-discover": [
]
"dont-discover": []
}
},
"scripts": {
......@@ -61,4 +62,4 @@
"sort-packages": true,
"optimize-autoloader": true
}
}
}
\ No newline at end of file
......@@ -4300,7 +4300,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.1.1",
......@@ -4375,6 +4376,7 @@
"version": "2.10.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"hoek": "2.x.x"
}
......@@ -4544,6 +4546,7 @@
"version": "1.0.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
......@@ -4611,7 +4614,8 @@
"graceful-fs": {
"version": "4.1.11",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"har-schema": {
"version": "1.0.5",
......@@ -4798,12 +4802,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
......@@ -5093,6 +5099,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
......
......@@ -16,7 +16,7 @@ $(document).ready(function () {
var search = getMetaTag('q') || '';
var locale = getMetaTag('l') || 'de';
// loadQuicktips(search, locale, sprueche) // load the quicktips
// loadQuicktips(search, locale, sprueche) // load the quicktips
});
/*
......@@ -25,11 +25,11 @@ function readLocaleFromUrl (defaultLocale) {
}
*/
function getURLParameter (name, defaultValue) {
function getURLParameter(name, defaultValue) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || defaultValue;
}
function getMetaTag (name) {
function getMetaTag(name) {
if (typeof $('meta[name="' + name + '"')[0] !== 'undefined') {
return $('meta[name="' + name + '"')[0].content || null;
} else {
......@@ -37,12 +37,12 @@ function getMetaTag (name) {
}
}
function activateJSOnlyContent () {
function activateJSOnlyContent() {
$('#searchplugin').removeClass('hide');
$('.js-only').removeClass('js-only');
}
function tabs () {
function tabs() {
$('#foki > li.tab-selector > a').each(function () {
if ($(this).attr('target') != '_blank') {
$(this).attr('href', '#' + $(this).attr('aria-controls'));
......@@ -68,10 +68,9 @@ function tabs () {
$('#search-delete-btn').removeClass('hidden');
}
function getDocumentReadyForUse (fokus, custom) {
function getDocumentReadyForUse(fokus, custom) {
if (typeof custom == 'undefined') custom = false;
activateJSOnlyContent();
clickLog();
popovers();
if (fokus === 'bilder') imageLoader();
if (custom) initialLoadContent(fokus);
......@@ -85,15 +84,15 @@ function getDocumentReadyForUse (fokus, custom) {
addListeners();
}
function addListeners () {
function addListeners() {
$('#search-delete-btn').click(resetSearchbar);
}
function resetSearchbar () {
function resetSearchbar() {
$('.search-input input').val('').focus();
}
function pluginInfo () {
function pluginInfo() {
if (localStorage) {
if (localStorage.getItem('pluginInfo') == 'off') $('#searchplugin').css('display', 'none');
$('#searchplugin').on('close.bs.alert', function () {
......@@ -106,7 +105,7 @@ function pluginInfo () {
}
}
function theme () {
function theme() {
if (localStorage) {
var theme = localStorage.getItem('theme');
if (theme != null) {
......@@ -120,20 +119,7 @@ function theme () {
}
}
function clickLog () {
$('.result a.title, .result div.link-link a').off();
$('.result a.title, .result div.link-link a').click(function () {
$.get('/clickstats', {
i: $('meta[name=p]').attr('content'),
s: $(this).attr('data-hoster'),
q: $('meta[name=q]').attr('content'),
p: $(this).attr('data-count'),
url: $(this).attr('href')
});
});
}
function botProtection () {
function botProtection() {
$('.result').find('a').click(function () {
var link = $(this).attr('href');
var newtab = false;
......@@ -143,7 +129,7 @@ function botProtection () {
$.ajax({
url: '/img/cat.jpg',
type: 'post',
data: { mm: $('meta[name=mm]').attr('content')},
data: { mm: $('meta[name=mm]').attr('content') },
timeout: 2000
})
.always(function () {
......@@ -157,7 +143,7 @@ function botProtection () {
});
}
function popovers () {
function popovers() {
$('[data-toggle=popover]').each(function (e) {
$(this).popover({
// html : true,
......@@ -167,14 +153,14 @@ function popovers () {
});
}
function pagination () {
function pagination() {
$('.pagination li:not(.active) > a').attr('href', '#');
$('.pagination li.disabled > a').removeAttr('href');
$('.pagination li:not(.active) > a').off();
$('.pagination li:not(.active) > a').click(paginationHandler);
}
function paginationHandler () {
function paginationHandler() {
var link = $(this).attr('data-href');
if (link.length == 0) {
return;
......@@ -191,7 +177,7 @@ function paginationHandler () {
});
}
function imageLoader () {
function imageLoader() {
if (typeof $('#container').masonry == 'undefined') {
return;
}
......@@ -206,7 +192,7 @@ function imageLoader () {
});
}
function eliminateHost (host) {
function eliminateHost(host) {
$('.result:not(.ad)').each(function (e) {
var host2 = $(this).find('.link-link > a').attr('data-host');
if (host2.indexOf(host) === 0) {
......@@ -215,7 +201,7 @@ function eliminateHost (host) {
});
}
function fokiChanger () {
function fokiChanger() {
$('#fokiChanger ul > li').click(function () {
document.location.href = $(this).attr('data-href');
});
......@@ -291,7 +277,7 @@ function fokiChanger () {
/**
* Loads the content for a given fokus
*/
function initialLoadContent (fokus) {
function initialLoadContent(fokus) {
var link = $('#' + fokus + 'TabSelector a').attr('data-href');
$.get(link, function (data) {
$('#' + fokus).html(data);
......
......@@ -246,11 +246,11 @@ summary {
.inlink {
&:after {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font: normal normal normal 14px/1 'Font Awesome 5 Free';
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
content: "\f08e";
content: "\f35d";
}
}
......@@ -258,11 +258,11 @@ summary {
.outlink {
&:after {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font: normal normal normal 14px/1 'Font Awesome 5 Free';
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
content: "\f08e";
content: "\f35d";
}
}
......
......@@ -114,7 +114,7 @@
p {
text-align: justify;
font-style: italic;
quotes: '„' '';
quotes: '„' '';
&:before {
content: open-quote;
}
......
......@@ -124,6 +124,9 @@ body {
.alert ul {
list-style-type: none;
padding-left: 49px;
@media (max-width: @screen-xs-max) {
padding-left: 0px;
}
}
.fa.fa-twitter {
......
......@@ -7,10 +7,13 @@
.result {
.card;
margin: @resultpage-leftbox-min-dist-top-bottom 0px @resultpage-leftbox-min-dist-top-bottom 0px;
padding: 15px;
padding: 8px 15px 5px 15px;
width: 100%;
.result-header {
display: flex;
flex-wrap: wrap;
.result-headline {
width: 100%;
display: flex;
justify-content: space-between;
.result-title {
......@@ -43,26 +46,42 @@
white-space: nowrap;
}
}
.result-link {
.overflow-ellipsis;
display: block;
font-size: @result-font-small;
width: fit-content;
max-width: 100%;
&,
&:active,
&:hover,
&:focus,
&:visited {
font-size: @result-font-url;
text-decoration: none;
.result-subheadline {
width: 100%;
display: flex;
.result-link {
.overflow-ellipsis;
display: block;
font-size: @result-font-small;
width: fit-content;
max-width: 100%;
&,
&:active,
&:hover,
&:focus,
&:visited {
font-size: @result-font-url;
text-decoration: none;
}
span.advertisement-mark {
background-color: #0d9c0d;
color: white;
padding: 3px;
border-radius: 4px;
font-weight: bold;
font-size: 10px;
margin-right: 10px;
}
}
span.advertisement-mark {
background-color: #0d9c0d;
color: white;
padding: 3px;
span.partnershop-info {
background-color: white;
color: #333;
text-shadow: none;
font-weight: inherit;
border: 1px solid #686868 ;
padding: 2px;
margin-left: 20px;
border-radius: 4px;
font-weight: bold;
font-size: 10px;
margin-right: 10px;
}
......@@ -112,7 +131,7 @@
}
}
.result-footer {
margin-top: 10px;
margin-top: 5px;
display: flex;
flex-wrap: wrap;
&>*:not(:first-child) {
......@@ -162,6 +181,11 @@
}
}
}
.result-footer * {
font-size: 10px !important;
}
&.ad .ad-label {
&,
& a,
......
......@@ -2,7 +2,7 @@
return [
'headline.1' => 'Kontakt',
'form.1' => 'Sicheres Kontakformular',
'form.1' => 'Sicheres Kontaktformular',
'form.2' => 'Über dieses Formular können Sie uns kontaktieren.
Alternativ können Sie uns natürlich auch per <a href="mailto:support@suma-ev.de">E-Mail</a> erreichen.',
'form.name' => 'Name (Vorname Nachname)',
......
<?php
return [
'heading1' => 'MetaGer-Partnershop',
'absatz1' => 'Wenn in der MetaGer-Ergebnisliste Links erscheinen, bei denen das Wort
"Partnershop" steht, dann sind das zunächst normale Ergebnisse einer
MetaGer-Suche. Sie werden im Ranking nicht bevorzugt oder höher eingestuft,
sondern wie alle anderen Suchergebnisse auch behandelt. Bei der Anzeige
dieser Links werden - ebenso wie bei ALLEN MetaGer-Ergebnissen - auch keine
Nutzerdaten weitergegeben.',
'absatz2' => 'Hinter diesem Link steht dann eine Firma, von der wir dann, wenn der Link
angeklickt wird, einen geringen Betrag zur Finanzierung von MetaGer
erhalten. Beim Ergebnis wird das zugehörige Firmenlogo angezeigt. Auch daran
erkennen Sie immer unsere Partnershops. Beim Anlicken (und nur dann) eines solchen Ergebnisses werden
auch die Nutzerdaten an die Klickadresse weitergegeben - wie bei allen Links
aller Suchmaschinen. Wenn Sie dieses vermeiden wollen, dann können Sie bei
MetaGer aber auf "anonym öffnen" klicken. Sie müssen also auch dabei Ihre
Daten nicht weitergeben. Allerdings erhalten wir dann auch keinen Beitrag
zur Finanzierung von MetaGer. Wir bitten Sie dann um eine Spende, damit wir
MetaGer als unabhängige Alternative in einem gemeinnützigen Verein weiter
entwickeln und betreiben können: <a href="/spende">https://metager.de/spende</a>',
'heading' => 'MetaGer-Partnershop',
'paragraph.1' => 'Wenn in der MetaGer-Ergebnisliste Links erscheinen, bei dennen das Wort "Partnershop" steht, dann sind das zunächst normale Ergebnisse einer MetaGer-Suche. Sie werden im Ranking nicht bevorzugt oder höher eingestuft, sondern wie alle anderen Suchergebnisse auch behandelt.',
'paragraph.2' => 'Hinter diesem Link steht dann eine Firma, von der wir dann, wenn der Link angeklickt wird, einen geringen Betrag zur Finanzierung von MetaGer erhalten. Beim Ergebnis wird das zugehörige Firmenlogo angezeigt. Auch daran erkennen Sie immer unsere Partnershops. Beim Anklicken (und nur dann) eines solchen Ergebnisses werden auch Nutzerdaten an die Klickadresse weitergegeben. Zu diesen Nutzerdaten gehören auch die Suchbegriffe, die Sie auf MetaGer eingegeben haben, in Verbindung mit Ihrer IP-Adresse. Wenn Sie dies vermeiden wollen, dann können Sie bei MetaGer aber auf "anonym&nbspöffnen" klicken. Sie müssen also auch dabei Ihre Daten nicht weitergeben. Allerdings erhalten wir dann auch keinen Beitrag zur Finanzierung von MetaGer. Wir bitten Sie dann um eine Spende, damit wir MetaGer als unabhängige Alternative in einem gemeinnützigen Verein weiter entwickeln und betreiben können: <a href="/spende">www.metager.de/spende</a>',
'paragraph.3' => 'Mitglieder des SUMA_EV können unsere werbefreie Suche nutzen. <a href="/beitritt">Werden Sie Mitglied!</a>',
];
......@@ -5,6 +5,6 @@ return [
'startseite' => 'MetaGer-Startseite',
'impressum' => 'Impressum',
'search-placeholder' => 'Suchbegriff(e) eingeben',
'metager3' => 'Sie befinden sich auf einer MetaGer Testversion. Hier werden Features vor der Veröffentlichung getestet. Unter Umständen funktioniert hier nicht alles wie gewohnt.
Unsere stabile Version finden Sie hier: <a href="https://metager.de" target="_self">metager.de</a>.',
'metager3' => 'Sie befinden sich auf einer MetaGer Testversion. <span class="hidden-xs">Hier werden Features vor der Veröffentlichung getestet. Unter Umständen funktioniert hier nicht alles wie gewohnt.
Unsere stabile Version finden Sie hier: <a href="https://metager.de" target="_self">metager.de</a>.</span>',
];
......@@ -41,8 +41,8 @@ return [
"about.3.1" => "Everyone might check our data protection & privacy features.",
'lang.tooltip' => 'Language',
'key.placeholder' => 'Insert member key',
'key.tooltip' => 'Insert member key',
'key.placeholder' => 'Enter member key',
'key.tooltip' => 'Enter member key',
"placeholder" => "MetaGer: Privacy Protected Search & Find",
......
<?php
return [
'heading1' => 'MetaGer-Partnershop',
'absatz1' => 'If the MetaGer result list shows links which have the word "Partnershop" in
that line, these are at first normal search results. They are not ranked
higher or differently treated than all other search results of MetaGer. By
showing these links we do not transfer any of your data to third parties -
in the same way we do not transfer such data for ANY search.',
'absatz2' => 'Behind such links are companies which will pay us with a small amount of
money if you click on that link. The result shows the company logo as well.
By that you additionally recognize our partnershops (except links to Amazon via the Boost-Project). If you click on such
link (and ONLY then) the user data will be given to the click address - in
the same way as done by clicking the result links of all search engines. If
you do not want that, then MetaGer optionally gives the possibility to click
on "anonym öffnen" (open anonymously). So you do not have to give your user
data to third parties. But in that case we do not receive a share to
finance MetaGer. We appeal for a donation in that case, so that we are able
to run and develope MetaGer as an independent alternative within a
non-commercial NGO: <a href="/en/spende">https://metager.de/en/spende</a>',
'heading' => 'MetaGer-Partnershop',
];
......@@ -27,7 +27,7 @@
<ul class="startpage">
@foreach($sponsors as $link)
<li class="sponsor">
<a href="{{ $link->link }}" target="_blank" rel="noopener"><p>{{ $link->linktext }}</p> <i class="fa fa-external-link"></i></a>
<a href="{{ $link->link }}" target="_blank" rel="noopener"><p>{{ $link->linktext }}</p> <i class="fa fa-external-link-alt"></i></a>
</li>
@endforeach
</ul>
......
......@@ -10,10 +10,12 @@
</h2>
<a class="ad-label" href="{{ $ad->gefVonLink }}" target="_blank" rel="noopener">{!! $ad->gefVon !!}</a>
</div>
<a class="result-link" href="{{ $ad->link }}" target="{{ $metager->getNewtab() }}">
<span class="advertisement-mark">Anzeige</span>
{{ $ad->anzeigeLink }}
</a>
<div class="result-subheadline">
<a class="result-link" href="{{ $ad->link }}" target="{{ $metager->getNewtab() }}">
<span class="advertisement-mark">Anzeige</span>
{{ $ad->anzeigeLink }}
</a>
</div>
</div>
<div class="result-body">
<div class="result-description">
......
......@@ -14,15 +14,16 @@
</h2>
<a class="result-hoster" href="{{ $result->gefVonLink }}" target="{{ $metager->getNewtab() }}" rel="noopener">{{ $result->gefVon }}</a>
</div>
<a class="result-link" href="{{ $result->link }}" target="{{ $metager->getNewtab() }}" rel="noopener">
{{ $result->anzeigeLink }}
</a>
@if( isset($result->partnershop) && $result->partnershop === TRUE )
<span class="partnershop-info">
<img src="/img/boosticon.png" height="13" alt="Partnershops">
<a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/partnershops") }}" target="_blank" rel="noopener">{!! trans('result.options.4') !!}</a>
</span>
@endif
<div class="result-subheadline">
<a class="result-link" href="{{ $result->link }}" target="{{ $metager->getNewtab() }}" rel="noopener">
{{ $result->anzeigeLink }}
</a>
@if( isset($result->partnershop) && $result->partnershop === TRUE)
<a href="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/partnershops") }}" target="_blank" rel="noopener">
<span class="partnershop-info">{!! trans('result.options.4') !!}</span>
</a>
@endif
</div>
</div>
<div class="result-body">
@if( isset($result->logo) )
......
......@@ -40,7 +40,6 @@
</div>
@endif
@include('parts.footer', ['type' => 'resultpage', 'id' => 'resultPageFooter'])
<img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" alt=""/>
<script src="{{ mix('js/lib.js') }}"></script>
<script src="{{ mix('js/scriptResultPage.js') }}" defer></script>
<script src="{{ mix('js/focus-creator.js') }}" defer></script>
......
......@@ -8,9 +8,11 @@
</h2>
<a class="result-hoster" href="javascript:void(0);" data-tooltip="{{ trans('fake-result.link') }}">MetaGer</a>
</div>
<a class="result-link" href="javascript:void(0);" data-tooltip="{{ trans('fake-result.link') }}">
de.wikipedia.org
</a>
<div class="result-subheadline">
<a class="result-link" href="javascript:void(0);" data-tooltip="{{ trans('fake-result.link') }}">
de.wikipedia.org
</a>
</div>
</div>
<div class="resultpage-body">
<div class="result-description" data-tooltip="{{ trans('fake-result.description') }}">
......@@ -60,4 +62,4 @@
</ul>
</div>
</div>
</div>
\ No newline at end of file
</div>
......@@ -55,6 +55,5 @@
<footer class="footer-text">
<a href="https://metager.de/impressum" target="_blank">Impressum</a>
</footer>
<img src="{{ action('ImageController@generateImage')}}?site={{ urlencode(url()->current()) }}" class="hidden" />
</body>
</html>
......@@ -5,7 +5,8 @@
@section('navbarFocus.datenschutz', 'class="active"')
@section('content')