The German Bicycle Club (ADFC) tested our veloheld.lane city bike in comparison with other “steel bikes” in its magazine “Radwelt” issue 6.2016. We are pleased that we are not “old hat”. On the left you can see a short excerpt of the article. The entire article is available in the magazine for all ADFC members and certainly in the offices of the local groups.

jQuery(window).on('load', function() { jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function(e) { Waypoint.refreshAll(); }); }); jQuery(window).on('load',function(){ jQuery(".nav-tabs").on( 'shown.bs.tab', function() { window.dispatchEvent(new CustomEvent('boxResized')); } ); }); jQuery(function($){ setTimeout( function() { $('.elementor-tab-content .dataTable').DataTable({retrieve:true}).columns.adjust().draw(); $('.elementor-tab-title').one('click', function(){$('#'+this.getAttribute('aria-controls')+' .dataTable').DataTable({retrieve:true}).columns.adjust().draw();}); }, 10 ); }); (function () { function initSonstigesIn(root) { // root = Popup-DOM oder document const forms = root.querySelectorAll('form.wpcf7-form'); if (!forms.length) return; forms.forEach(form => { const wrap = form.querySelector('.sonstiges-wrap'); if (!wrap) return; function update() { const boxes = form.querySelectorAll('input[name="woher[]"]'); let show = false; boxes.forEach(cb => { if (cb.checked && cb.value === 'Sonstiges') show = true; }); wrap.style.display = show ? 'block' : 'none'; } // einmal initial update(); // change-handler (nur einmal binden) if (!form.dataset.sonstigesBound) { form.addEventListener('change', function(e){ if (e.target && e.target.matches('input[name="woher[]"]')) update(); }); form.dataset.sonstigesBound = "1"; } }); } // normaler Seitenload document.addEventListener('DOMContentLoaded', function () { initSonstigesIn(document); }); // CF7 re-init (Ajax) document.addEventListener('wpcf7init', function () { initSonstigesIn(document); }); // Popup Maker: wenn Popup geöffnet wurde document.addEventListener('pumAfterOpen', function (e) { // e.detail[0] ist meist das Popup-Element (jQuery object in manchen Setups) let popupEl = null; // Versuch 1: jQuery object if (e.detail && e.detail.length && e.detail[0] && e.detail[0][0]) { popupEl = e.detail[0][0]; } // Versuch 2: direktes Element if (!popupEl && e.target && e.target.classList && e.target.classList.contains('pum')) { popupEl = e.target; } initSonstigesIn(popupEl || document); }); })(); /* Top-Bar */ (function() { function rotateUSPs() { if (window.innerWidth <= 768) { return; // Beende Funktion auf Mobile } // Die ersten beiden b-Elemente auswählen const container1 = document.querySelector('.menu-bloginfo-inner b:nth-child(1)'); const container2 = document.querySelector('.menu-bloginfo-inner b:nth-child(2)'); if (!container1 || !container2) return; const items1 = container1.querySelectorAll('i'); const items2 = container2.querySelectorAll('i'); // Nur rotieren wenn mindestens ein Container mehrere Items hat if (items1.length <= 1 && items2.length <= 1) return; let currentIndex1 = 0; let currentIndex2 = 0; // gemeinsame Interval-Funktion für beide setInterval(() => { // Container 1 rotieren (falls mehrere spans) if (items1.length > 1) { const current1 = items1[currentIndex1]; const nextIndex1 = (currentIndex1 + 1) % items1.length; const next1 = items1[nextIndex1]; current1.style.opacity = '0'; current1.style.transform = 'translateY(-100%)'; setTimeout(() => { items1.forEach((item, idx) => { if (idx !== nextIndex1) { item.style.transform = 'translateY(100%)'; item.style.opacity = '0'; } }); next1.style.opacity = '1'; next1.style.transform = 'translateY(0)'; currentIndex1 = nextIndex1; }, 300); } // Container 2 rotieren (falls mehrere spans) if (items2.length > 1) { const current2 = items2[currentIndex2]; const nextIndex2 = (currentIndex2 + 1) % items2.length; const next2 = items2[nextIndex2]; current2.style.opacity = '0'; current2.style.transform = 'translateY(-100%)'; setTimeout(() => { items2.forEach((item, idx) => { if (idx !== nextIndex2) { item.style.transform = 'translateY(100%)'; item.style.opacity = '0'; } }); next2.style.opacity = '1'; next2.style.transform = 'translateY(0)'; currentIndex2 = nextIndex2; }, 300); } }, 10000); // Alle 10 Sekunden } // Starten wenn DOM geladen if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', rotateUSPs); } else { rotateUSPs(); } })(); add_action('wp_footer', function() { if (!is_product()) return; global $product; if (!$product || $product->get_id() != 0) { // 0 = Platzhalter, wird unten dynamisch geprüft } ?> .searchwp-live-search-results { opacity: 0; transition: opacity .25s ease-in-out; -moz-transition: opacity .25s ease-in-out; -webkit-transition: opacity .25s ease-in-out; height: 0; overflow: hidden; z-index: 9999995; /* Exceed SearchWP Modal Search Form overlay. */ position: absolute; display: none; } .searchwp-live-search-results-showing { display: block; opacity: 1; height: auto; overflow: auto; } .searchwp-live-search-no-results { padding: 3em 2em 0; text-align: center; } .searchwp-live-search-no-min-chars:after { content: "Continue typing"; display: block; text-align: center; padding: 2em 2em 0; }