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

Revert "Merge branch...

Revert "Merge branch '449-einmalige-eigene-suche-ohne-ausgewahlte-suchmaschinen' into 'development'"

This reverts merge request !806
parent e8933105
This diff is collapsed.
$(document).ready(function() {
createCustomFocuses();
var focus = $("#foki > li.active > a").attr("aria-controls");
var custom = $("#foki > li.active").hasClass("custom-focus-tab-selector");
getDocumentReadyForUse(focus, custom);
});
function tabs() {
$("#foki > li.tab-selector > a").each(function() {
if ($(this).attr("target") != "_blank") {
$(this).attr("href", "#" + $(this).attr("aria-controls"));
$(this).attr("role", "tab");
$(this).attr("data-toggle", "tab");
}
});
$("#foki > li.tab-selector > a").off();
$("#foki > li.tab-selector > a").on("show.bs.tab", function(e) {
var fokus = $(this).attr("aria-controls");
var link = $("#" + fokus + "TabSelector a").attr("data-href");
if ($("#" + fokus + "TabSelector").attr("data-loaded") != "1") {
$.get(link, function(data) {
$("#" + fokus + "TabSelector").attr("data-loaded", "1");
$("#" + fokus).html(data);
$("input[name=focus]").val($("#foki li.active a").attr("aria-controls"));
getDocumentReadyForUse(fokus);
});
} else {
getDocumentReadyForUse(fokus);
}
});
}
function getDocumentReadyForUse(fokus, custom = false) {
clickLog();
popovers();
if (fokus === "bilder") imageLoader();
if (custom) initialLoadContent(fokus);
//pagination();
tabs();
theme();
fokiChanger();
pluginInfo();
productWidget();
$('iframe:not(.resized)').iFrameResize();
$('iframe').addClass("resized");
}
function pluginInfo() {
if (localStorage) {
if (localStorage.getItem('pluginInfo') == "off") $("#searchplugin").css("display", "none");
$("#searchplugin").on('close.bs.alert', function() {
$.get('/pluginClose');
localStorage.setItem('pluginInfo', 'off');
});
$("#searchplugin a.btn").click(function() {
$.get('/pluginInstall');
});
}
}
function theme() {
if (localStorage) {
var theme = localStorage.getItem("theme");
if (theme != null) {
if ((theme.match(/,/g) || []).length != 3) {
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]);
}
}
}
}
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 popovers() {
$("[data-toggle=popover]").each(function(e) {
$(this).popover("destroy");
$(this).popover({
//html : true,
//title : "<span class='glyphicon glyphicon-cog'></span> Optionen",
content: $(this).parent().find(".content").html()
});
});
}
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() {
var link = $(this).attr("data-href");
if (link.length == 0) {
return;
}
var tabPane = $(".tab-pane.active");
$(tabPane).html("<div class=\"loader\"><img src=\"/img/ajax-loader.gif\" alt=\"\" /></div>");
$.get(link, function(data) {
$(tabPane).html(data);
$(".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);
getDocumentReadyForUse();
});
}
function imageLoader() {
if (typeof $("#container").masonry == "undefined") {
return;
}
var $grid = $("#container").masonry({
columnWidth: 150,
itemSelector: '.item',
gutter: 10,
isFitWidth: true
});
$grid.imagesLoaded().progress(function(instance, image) {
$grid.masonry('layout');
});
}
function eliminateHost(host) {
$(".result:not(.ad)").each(function(e) {
var host2 = $(this).find(".link-link > a").attr("data-host");
if (host2.indexOf(host) === 0) {
$(this).css("display", "none");
}
});
}
function fokiChanger() {
$("#fokiChanger ul > li").click(function() {
document.location.href = $(this).attr("data-href");
});
}
// Polyfill for form attribute
(function($) {
/**
* polyfill for html5 form attr
*/
// detect if browser supports this
var sampleElement = $('[form]').get(0);
var isIE11 = !(window.ActiveXObject) && "ActiveXObject" in window;
if (sampleElement && window.HTMLFormElement && sampleElement.form instanceof HTMLFormElement && !isIE11) {
// browser supports it, no need to fix
return;
}
/**
* Append a field to a form
*
*/
$.fn.appendField = function(data) {
// for form only
if (!this.is('form')) return;
// wrap data
if (!$.isArray(data) && data.name && data.value) {
data = [data];
}
var $form = this;
// attach new params
$.each(data, function(i, item) {
$('<input/>').attr('type', 'hidden').attr('name', item.name).val(item.value).appendTo($form);
});
return $form;
};
/**
* Find all input fields with form attribute point to jQuery object
*
*/
$('form[id]').submit(function(e) {
var $form = $(this);
// serialize data
var data = $('[form=' + $form.attr('id') + ']').serializeArray();
// append data to form
$form.appendField(data);
}).each(function() {
var form = this,
$form = $(form),
$fields = $('[form=' + $form.attr('id') + ']');
$fields.filter('button, input').filter('[type=reset],[type=submit]').click(function() {
var type = this.type.toLowerCase();
if (type === 'reset') {
// reset form
form.reset();
// for elements outside form
$fields.each(function() {
this.value = this.defaultValue;
this.checked = this.defaultChecked;
}).filter('select').each(function() {
$(this).find('option').each(function() {
this.selected = this.defaultSelected;
});
});
} else if (type.match(/^submit|image$/i)) {
$(form).appendField({
name: this.name,
value: this.value
}).submit();
}
});
});
})(jQuery);
function productWidget() {
var isMobile = false; //initiate as false
// device detection
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) isMobile = true;
if (isMobile) {
$('.lightSlider').lightSlider({
item: 5,
loop: false,
slideMove: 2,
easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
speed: 600,
pager: false,
prevHtml: '<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span><span class="sr-only">Previous</span>',
nextHtml: '<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span><span class="sr-only">Next</span>',
responsive: [{
breakpoint: 1400,
settings: {
item: 4,
slideMove: 2,
}
}, {
breakpoint: 1200,
settings: {
item: 3,
slideMove: 2,
}
}, {
breakpoint: 980,
settings: {
item: 4,
slideMove: 2,
}
}, {
breakpoint: 720,
settings: {
item: 3,
slideMove: 1
}
}, {
breakpoint: 520,
settings: {
item: 2,
slideMove: 1,
}
}, ]
});
} else {
$('.lightSlider').lightSlider({
item: 5,
loop: false,
slideMove: 2,
easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
speed: 600,
pager: false,
enableTouch: false,
enableDrag: false,
prevHtml: '<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span><span class="sr-only">Previous</span>',
nextHtml: '<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span><span class="sr-only">Next</span>',
responsive: [{
breakpoint: 1400,
settings: {
item: 4,
slideMove: 2,
}
}, {
breakpoint: 1200,
settings: {
item: 3,
slideMove: 2,
}
}, {
breakpoint: 980,
settings: {
item: 4,
slideMove: 2,
}
}, {
breakpoint: 720,
settings: {
item: 3,
slideMove: 1
}
}, {
breakpoint: 520,
settings: {
item: 2,
slideMove: 1,
}
}, ]
});
}
$(".lightSliderContainer").removeClass("hidden");
}
/**
* Creates focus tab and tab selector for every stored focus in local storage
*/
function createCustomFocuses() {
for (var key in localStorage) {
if (key.startsWith("focus_")) {
var focus = loadFocusById(key);
var active = false;
if (getActiveFocusId() === getIdFromName(focus.name)) {
active = true;
}
addFocus(focus, active);
addTab(focus, active);
}
}
}
/**
* Adds a focuses tab selector to the tab selector section
*
* @if( $metager->getFokus() === "produktsuche" )
* <li id="produktsucheTabSelector" class="active tab-selector" role="presentation" data-loaded="1">
* <a aria-controls="produktsuche" data-href="#produktsuche" href="#produktsuche">
* <span class='glyphicon glyphicon-shopping-cart'></span>
* <span class="hidden-xs">{{ trans('index.foki.produkte') }}</span>
* </a>
* </li>
* @else
* <li id="produktsucheTabSelector" class="tab-selector" role="presentation" data-loaded="0">
* <a aria-controls="produktsuche" data-href="{!! $metager->generateSearchLink('produktsuche') !!}" href="{!! $metager->generateSearchLink('produktsuche', false) !!}">
* <span class='glyphicon glyphicon-shopping-cart'></span>
* <span class="hidden-xs">{{ trans('index.foki.produkte') }}</span>
* </a>
* </li>
* @endif
*/
function addFocus(focus, active = false) {
var id = getIdFromName(focus.name);
var foki = document.getElementById("foki");
// create <input>
var focusElement = document.createElement("li");
focusElement.id = id + "TabSelector";
focusElement.classList.add("tab-selector");
focusElement.classList.add("custom-focus-tab-selector");
if (active) {
focusElement.classList.add("active");
focusElement.setAttribute("data-loaded", "1");
} else {
focusElement.setAttribute("data-loaded", "0");
}
focusElement.setAttribute("role", "presentation");
// create <a>
var focusElementLink = document.createElement("a");
focusElementLink.setAttribute("aria-controls", id);
var searchLink = generateSearchLinkForFocus(focus)
focusElementLink.setAttribute("data-href", searchLink);
focusElementLink.setAttribute("href", searchLink);
// create <span> glyphicon
var focusElementIcon = document.createElement("span");
focusElementIcon.classList.add("glyphicon");
focusElementIcon.classList.add("glyphicon-cog");
// create <span> focusname
var focusElementName = document.createElement("span");
focusElementName.classList.add("hidden-xs");
focusElementName.innerHTML = focus.name;
// add new elements
var mapsTabSelector = document.getElementById("mapsTabSelector");
foki.insertBefore(focusElement, mapsTabSelector);
focusElement.appendChild(focusElementLink);
focusElementLink.appendChild(focusElementIcon);
focusElementLink.appendChild(focusElementName);
}
/**
* Adds a focuses tab to the tab section
*
* @if( $metager->getFokus() === "produktsuche" )
* <div role="tabpanel" class="tab-pane active" id="produktsuche">
* <div class="row">
* @yield('results')
* </div>
* </div>
* @else
* <div role="tabpanel" class="tab-pane" id="produktsuche">
* <div class="loader">
* <img src="/img/ajax-loader.gif" alt="" />
* </div>
* </div>
* @endif
*/
function addTab(focus, active = false) {
var id = getIdFromName(focus.name);
// create tab div
var tabPane = document.createElement("div");
tabPane.id = id;
tabPane.classList.add("tab-pane");
if (active) {
tabPane.classList.add("active");
}
tabPane.setAttribute("role", "tabpanel");
// create row div
var row = document.createElement("div");
row.classList.add("loader");
// create loader image
var img = document.createElement("img");
img.setAttribute("src", "/img/ajax-loader.gif");
img.setAttribute("alt", "");
row.appendChild(img);
// add new elements
var tabs = document.getElementById("main-content-tabs");
tabs.appendChild(tabPane)
tabPane.appendChild(row);
}
/**
* Turns a name into an id
* Converts special characters and spaces
*/
function getIdFromName(name) {
return "focus_" + name.split(" ").join("_").toLowerCase();
}
/**
* Loads the focus object for the given id from local storage
*/
function loadFocusById(id) {
return JSON.parse(localStorage.getItem(id));
}
/**
* Gets the id of the currently active focus
*/
function getActiveFocusId() {
var search = window.location.search;
var from = search.indexOf("focus=") + "focus=".length;
var to = search.substring(from).indexOf("&") + from;
if (to <= 0) {
to = search.substring(from).length;
}
id = search.substring(from, to);
return id;
}
/**
* Turns the link of the current page into a search link for the given focus
*/
// TODO catch error if link is http://localhost:8000/meta/meta.ger3?
function generateSearchLinkForFocus(focus) {
var link = document.location.href;
// remove old engine settings
// not yet tested, only for compability problems with old versions of bookmarks and plugins
/*
while (link.indexOf("engine_") !== -1) {
var from = search.indexOf("engine_");
var to = search.substring(from).indexOf("&") + from;
if (to === 0) {
to = search.substring(from).length;
}
link = link.substring(0, from) + link.substring(to);
}
*/
// add new engine settings
for (var key in focus) {
if (key.startsWith("engine_")) {
var focusName = key.substring("engine_".length);
link += "&" + focusName + "=" + focus[key];
}
}
link += "&out=results";
link = replaceFocusInUrl(link);
return link;
}
/**
* Replaces the focus in a given url with the "angepasst" focus
*/
function replaceFocusInUrl(url) {
var from = url.indexOf("focus=");
var to = url.substring(from).indexOf("&") + from;
if (to === 0) {
to = url.substring(from).length;
}
url = url.substring(0, from) + url.substring(to);
return url + "&focus=angepasst";
}
/**
* Loads the content for a given fokus
*/
function initialLoadContent(fokus) {
var link = $("#" + fokus + "TabSelector a").attr("data-href");
$.get(link, function(data) {
$("#" + fokus).html(data);
getDocumentReadyForUse(fokus);
});
}
\ No newline at end of file
$(document).ready(function() {
// checkPlugin();
if (location.href.indexOf("#plugin-modal") > -1) {
$("#plugin-modal").modal("show");
}
$('#addFocusBtn').removeClass('hide');
$("button").popover();
if (localStorage) {
var theme = localStorage.getItem("theme");
if (theme != null) {
if ((theme.match(/,/g) || []).length != 3) {
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]);
}
}
if (localStorage.getItem("pers") && !isUseOnce()) {
setSettings();
}
}
setActionListeners();
loadInitialCustomFocuses()
});
function setActionListeners() {
$("button").on("shown.bs.popover", function() {
$("#color-chooser a").click(function() {
var theme = $(this).attr("data-rgba");
if (localStorage) {
localStorage.setItem("theme", theme);
location.href = "/";
}
});
});
$("#mobileFoki").change(function() {
var focus = $("#mobileFoki > option:selected").val();
if (focus == "angepasst") {
window.location = "./settings/";
} else {
window.location = "./?focus=" + focus;
}
});
if ($("fieldset#foki.mobile").length) {
$("fieldset#foki.mobile label#anpassen-label").click(function() {
window.location = "./settings/";
});
}
$("#addFocusBtn").click(function() {
showFocusCreateDialog("");
});
$("#save-focus-btn").click(saveFocus);
$("#delete-focus-btn").click(deleteFocus);
}
function setSettings() {
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
var value = localStorage.getItem(key);
if (key.startsWith("param_") && !key.endsWith("lang") && !key.endsWith('autocomplete')) {
key = key.substring(key.indexOf("param_") + 6);
$("#searchForm").append("<input type=\"hidden\" name=\"" + key + "\" value=\"" + value + "\">");
}
$("#foki input[type=radio]#angepasst").attr("checked", true);
}
if (localStorage.getItem("param_lang") !== null) {
var value = localStorage.getItem("param_lang");
// Change the value of the lang input field to the given parameter
$("input[name=lang]").val(value);
}
if (localStorage.getItem("param_autocomplete") !== null) {
var value = localStorage.getItem("param_autocomplete");
// Change the value of the lang input field to the given parameter
$("input[name=eingabe]").attr("autocomplete", value);
}
if ($("fieldset#foki.mobile").length) {
$("fieldset.mobile input#bilder").val("angepasst");
$("fieldset.mobile input#bilder").prop("checked", true);
$("fieldset.mobile input#bilder").attr("id", "angepasst");
$("fieldset.mobile label#bilder-label").attr("id", "anpassen-label");
$("fieldset.mobile label#anpassen-label").attr("for", "angepasst");