// ==UserScript== // @name MyDealz Enhancer // @namespace mydealz_enhancer // @description Verbessert Funktionen von MyDealz, oder stellt sie wieder her // @author BAERnado // @contributor lolnickname (remodelNavBar, grabQuote, maxQuotes, error-display [avatar border]) // @contributor richi2k (modifySearch-Teile, showUserInfo, embedYoutube, minimizeQuotes, dealTextPreview) // @contributor vielleichtmann1 (Image Preview) // @contributor Nico (insertDirectLink-Idee) // @include http://www.mydealz.de/* // @include https://www.mydealz.de/* // @version 1.5.017 // @require http://code.jquery.com/jquery-2.1.4.min.js // @grant GM_getValue // @grant GM_setValue // @grant GM_log // @grant GM_info // @downloadURL https://update.greasyfork.org/scripts/10885/MyDealz%20Enhancer.user.js // @updateURL https://update.greasyfork.org/scripts/10885/MyDealz%20Enhancer.meta.js // ==/UserScript== function ModifyPage() { var defaultSettings = {behavior: {showGreenDots: true}, comments: {maxQuoteLevel: 1, editReason: '', signature: '', useSignature: false}, deals: {hide: ''}, userMenuDirect : {pn: false, account: false}, hideAds: {topBar: true, gsWidget: true, inside: true,nlSection: true, app: true}, moveButtons: {_: true, deals: true, gutscheine: true, freebies: true, custom: true, gesuche: false, diverses: false}, fromTo: {deals: 'deals-new', gutscheine: 'gutscheine-new', freebies: 'freebies-new', gesuche: 'gesuche', diverses: 'diverses', bugreports: 'bugreports'}, smileys: {}, oldSmileys: {use: false, show: false}, display: {embedYoutube: true, minimizeQuotes: true, userInfo: true, dealPreview: 0}, search: {presetCategory: 1}}; var settings = {}; var oldSmileys = {oO: 'http://up.picr.de/24681919lc.png', ':(': 'http://up.picr.de/24681920wk.png', ':)': 'http://up.picr.de/24681921vt.png', ':p': 'http://up.picr.de/24681922sp.png', ';)': 'http://up.picr.de/24681923bn.png', '(_;)': 'http://up.picr.de/24681924zb.png', ':|': 'http://up.picr.de/24681925vj.png', ':{': 'http://up.picr.de/24682144sm.png', '8)': 'http://up.picr.de/24682161iz.png', 'X)': 'http://up.picr.de/24682170wf.png', '<3': 'http://up.picr.de/24682514fl.png'}; var searchCategories = {all: {id: 0, category: 'Alle'}, deals: {id: 1, category: 'Deals'}, gutscheine: {id: 2, category: 'Gutscheine'}, freebies: {id: 3, category: 'Freebies'}, gesuche: {id: 4, category: 'Gesuche'}, diverses: {id: 5, category: 'Diverses'}, bugreports: {id: 7, category: 'Bug Reports'}}; var timer = {}; var lastFocus = null; var save = {pn: {}}; var userName; $.fn.hasAttr = function(name) { return this.attr(name) !== undefined; }; $.fn.extend({ insertAtCaret: function(myValue) { var elem = this[0]; if (document.selection) { elem.focus(); sel = document.selection.createRange(); sel.text = myValue; elem.focus(); } else if (elem.selectionStart || elem.selectionStart == '0') { var startPos = elem.selectionStart; var endPos = elem.selectionEnd; var scrollTop = elem.scrollTop; var oldLength = elem.value.length; elem.value = elem.value.substring(0, startPos)+myValue+elem.value.substring(endPos,elem.value.length); elem.focus(); elem.selectionStart = startPos + elem.value.length - oldLength; elem.selectionEnd = startPos + elem.value.length - oldLength; elem.scrollTop = scrollTop; } else { elem.value += myValue; elem.focus(); } } }); $.fn.setCursorPosition = function(pos) { var _elem = this[0]; if (_elem.setSelectionRange) { _elem.setSelectionRange(pos, pos); } else if (_elem.createTextRange) { var range = _elem.createTextRange(); range.collapse(true); if(pos < 0) { pos = $(_elem).val().length + pos; } range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } if(!RegExp.escape){ RegExp.escape = function(s){ return String(s).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); }; } function printUTCDate(_date) { return ('0'+_date.getUTCHours().toString()).replace(/^0*([0-9]{2})$/, '$1') + ':' + ('0'+_date.getUTCMinutes().toString()).replace(/^0*([0-9]{2})$/, '$1') + ':' + ('0'+_date.getUTCSeconds().toString()).replace(/^0*([0-9]{2})$/, '$1'); } function printDate(_date) { return ('0'+_date.getHours().toString()).replace(/^0*([0-9]{2})$/, '$1') + ':' + ('0'+_date.getMinutes().toString()).replace(/^0*([0-9]{2})$/, '$1') + ':' + ('0'+_date.getSeconds().toString()).replace(/^0*([0-9]{2})$/, '$1'); } function timeTick() { var _allTimes = document.getElementsByClassName('bf-carousel-date'); var _remain; var _until; var _diffDate; var _toDate; var _diffTime; var _now = new Date(); for(var _i = 0; _i < _allTimes.length; _i++) { _until = _allTimes[_i]; _remain = _allTimes[_i].parentNode.getElementsByClassName('bf-carousel-date-remain')[0]; _toDate = new Date(); _toDate.setTime(parseInt(_until.innerHTML, 10)*1000); _diffDate = new Date(); _diffTime = _toDate.getTime() - _now.getTime(); if(_diffTime <= 0) { $(_allTimes[_i]).parent().find('.space--left-2').text(/Beginnt in/.test($(_allTimes[_i]).parent().find('.space--left-2').text('')) ? 'Begonnen' : 'Abgelaufen'); $(_remain).remove(); } else { _diffDate.setTime(_diffTime); _remain.innerHTML = printUTCDate(_diffDate); // + ' (' + printDate(_toDate) + ')'; } } } function addTimes() { var _allTimes = document.getElementsByClassName('bf-carousel-date'); var _newSpan; for(var _i = 0; _i < _allTimes.length; _i++) { _allTimes[_i].style.display = 'none'; _newSpan = document.createElement('span'); _newSpan.setAttribute('class', 'bf-carousel-date-remain'); _allTimes[_i].parentNode.insertBefore(_newSpan, null); } timeTick(); window.setInterval(timeTick, 1000); } function fixPositions() { var _allElems = document.getElementsByTagName('article'); for(var _i = 0;_i < _allElems.length; _i++) { _allElems[_i].setAttribute('style', 'position: absolute; width: 1200px; left: 0px; top: ' + _i*404 + 'px'); } window.setTimeout("document.getElementsByTagName('article')[0].parentNode.setAttribute('style', 'height: " + _allElems.length * 404 + "px;');", 20); } function changeLinks() { var _allLinks = $('a.navTrigger1, .navTrigger1-row-items .menu:last .menu-list .navMenu1-item'); var _fromTo = settings.fromTo; var _loc; $(_allLinks).each(function (_lInd, _lVal) { var _link = $(_lVal); if(_link.hasAttr('href')) { _loc = _link.attr('href').replace(/^https?:\/\/www\.mydealz\.de(\/(hot|discussed|new)?)?$/, '/').replace(/^https?:\/\/www\.mydealz\.de\/([a-zA-Z-]+)?$/, '$1').replace(/-?(new|discussed)?$/,''); if(_loc in _fromTo) { _link.attr('href', _link.attr('href').replace(/^(https?:\/\/www\.mydealz\.de).*$/, '$1' + '/' + _fromTo[_loc])); } } }); } function remodelNavBar() { var _subMenu = $('header strong[data-handler="menu"]'); _subMenu.find('span[class!="navTrigger-arrow"]').remove(); _subMenu = _subMenu.parent().parent(); var _buttonIndex = 1; var _buttonBeforeSubIndex = 0; var _button; var _subHiddenButton; var _selected; var _moreHighlight = true; for(_bInd in settings.moveButtons) { if(_bInd == '_') { _button = $('.navTrigger1-row-items > li > a.navTrigger1[href="http://www.mydealz.de/"], .navTrigger1-row-items li.menu ul.menu-list li.hide--downThrough- a[href="http://www.mydealz.de/"]'); } else { _button = $('.navTrigger1-row-items > li > a.navTrigger1[href*="' + _bInd + '"], .navTrigger1-row-items li.menu ul.menu-list li.hide--downThrough- a[href*="' + _bInd + '"]'); } _selected = _button.hasClass('navTrigger1--selected') || _button.hasClass('navMenu1-item--selected'); if(_button.hasClass('navTrigger1') && settings.moveButtons[_bInd]) { _button.attr('class', 'navTrigger1 navTrigger1hide--upTo-menu' + _buttonIndex++); } else if (_button.hasClass('navTrigger1') && !settings.moveButtons[_bInd]) { // Verschiebe in Untermenu _subMenu.find('li.hide--downThrough- a.navMenu1-item').eq(_buttonBeforeSubIndex++).parent().before(_button.attr('class', 'navMenu1-item').parent().attr('class', 'hide--downThrough-')); } else if(_button.hasClass('navMenu1-item') && settings.moveButtons[_bInd]) { // Verschiebe ins Hauptmenu _subMenu.before(_button.removeClass('navMenu1-item navMenu1-item--selected').addClass('navTrigger1').parent().removeClass('navMenu1-item hide--downThrough-').addClass('tGrid-cell hide--upTo-menu' + _buttonIndex)); } if(_selected) { if(_button.hasClass('navTrigger1')) { _button.addClass('navTrigger1--selected'); _moreHighlight = false; } else { _button.addClass('navMenu1-item--selected'); if($('header.header .navTrigger1-row .navTrigger1-row-items a.navTrigger1[href="' + _button.attr('href') + '"]').length == 0) { _moreHighlight = true; } else { _moreHighlight = false; } } } } for(_buttonIndex = 1; _buttonIndex <= 4; _buttonIndex++) { _button = $('.navTrigger1-row-items > li.hide--upTo-menu' + _buttonIndex + ' > a.navTrigger1'); if(_button.length) { _subHiddenButton = $('.navTrigger1-row-items li.menu ul.menu-list li.hide--downThrough-menu' + _buttonIndex + ' a'); _subHiddenButton.attr('href', _button.attr('href')).html(_button.html()); } else { $('.navTrigger1-row-items li.menu ul.menu-list li.hide--downThrough-menu' + _buttonIndex).remove(); } } $('header strong[data-handler="menu"]').removeClass('navTrigger1--selected'); if(_moreHighlight) { $('header strong[data-handler="menu"]').addClass('navTrigger1--selected'); } if(settings.userMenuDirect.pn) { var _menuElem = $('ul.userBar label.userBar-button--pm').removeAttr('data-menu').removeAttr('data-handler'); _menuElem.find('input').removeAttr('data-handler').click(function() { window.location.href = document.location.protocol + '//' + document.location.hostname + '/profile/' + userName + '/messages'; }); } if(settings.userMenuDirect.account) { var _menuElem = $('ul.userBar label.userBar-button--user').removeAttr('data-menu').removeAttr('data-handler'); _menuElem.find('input').removeAttr('data-handler').click(function() { window.location.href = document.location.protocol + '//' + document.location.hostname + '/profile/' + userName; }); } var _addDeal = $('.navTrigger1-row ul.header-user>li.userbar-padding-right span.inline'); _addDeal.text(_addDeal.text().replace(/ eintragen/,'')); } function addCyberDealz() { var _newMenu = $('