403Webshell
Server IP : 217.160.0.244  /  Your IP : 216.73.216.250
Web Server : Apache
System : Linux infong-eu155 4.4.400-icpu-108 #2 SMP Wed Feb 11 11:51:01 UTC 2026 x86_64
User : u100174116 ( 6746176)
PHP Version : 8.5.10
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /homepages/13/d818981593/htdocs/GutTrechowNeu/hofladen/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /homepages/13/d818981593/htdocs/GutTrechowNeu/hofladen/assets/js/site.js
(function () {
  var doc = document;
  var body = doc.body;
  var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  var MENU_DATA = [{"title": "Burgensemble", "path": "burgensemble/index.html", "children": [{"title": "Burg", "path": "burgensemble/burg/index.html", "children": [{"title": "Angebote/Unterkünfte", "path": "burgensemble/burg/angebote-unterkuenfte/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/burg/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/burg/historie/index.html", "children": []}]}, {"title": "Gästebuch", "path": "burgensemble/gaestebuch/index.html", "children": [{"title": "Einträge", "path": "burgensemble/gaestebuch/eintraege/index.html", "children": []}, {"title": "Selbst eintragen", "path": "burgensemble/gaestebuch/selbst-eintragen/index.html", "children": []}]}, {"title": "Kornspeicher", "path": "burgensemble/kornspeicher/index.html", "children": [{"title": "Angebote/Unterkünfte", "path": "burgensemble/kornspeicher/angebote-unterkuenfte/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/kornspeicher/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/kornspeicher/historie/index.html", "children": []}]}, {"title": "Marstall", "path": "burgensemble/marstall/index.html", "children": [{"title": "Angebote", "path": "burgensemble/marstall/angebote/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/marstall/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "burgensemble/marstall/historie/index.html", "children": []}]}, {"title": "Presse", "path": "burgensemble/presse/index.html", "children": [{"title": "Aktuelles", "path": "burgensemble/presse/aktuelles/index.html", "children": []}, {"title": "Archiv", "path": "burgensemble/presse/archiv/index.html", "children": []}]}, {"title": "Projekte", "path": "burgensemble/projekte/index.html", "children": [{"title": "Bauvorhaben", "path": "burgensemble/projekte/bauvorhaben/index.html", "children": []}, {"title": "Fotogalerie", "path": "burgensemble/projekte/fotogalerie/index.html", "children": []}]}]}, {"title": "Museum der Evolution", "path": "museum-der-evolution/index.html", "children": [{"title": "Fotogalerie", "path": "museum-der-evolution/fotogalerie/index.html", "children": []}, {"title": "Philosophie", "path": "museum-der-evolution/philosophie/index.html", "children": []}, {"title": "Öffnungszeiten/Angebote", "path": "museum-der-evolution/oeffnungszeiten-angebote/index.html", "children": []}]}, {"title": "Landwirtschaft", "path": "landwirtschaft/index.html", "children": [{"title": "Bewirtschaftung", "path": "landwirtschaft/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "landwirtschaft/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "landwirtschaft/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "landwirtschaft/produkte-angebote/index.html", "children": []}]}, {"title": "Wald", "path": "wald/index.html", "children": [{"title": "Bewirtschaftung", "path": "wald/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "wald/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "wald/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "wald/produkte-angebote/index.html", "children": []}]}, {"title": "See", "path": "see/index.html", "children": [{"title": "Bewirtschaftung", "path": "see/bewirtschaftung/index.html", "children": []}, {"title": "Fotogalerie", "path": "see/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "see/historie/index.html", "children": []}, {"title": "Produkte/Angebote", "path": "see/produkte-angebote/index.html", "children": []}]}, {"title": "Kapelle", "path": "kapelle/index.html", "children": [{"title": "Historie", "path": "kapelle/historie/index.html", "children": []}, {"title": "Termine/Angebote", "path": "kapelle/termine-angebote/index.html", "children": []}]}, {"title": "Hofladen", "path": "hofladen/index.html", "children": [{"title": "Öffnungszeiten/Angebote", "path": "hofladen/oeffnungszeiten-angebote/index.html", "children": []}]}, {"title": "Veranstaltungen", "path": "veranstaltungen/index.html", "children": []}, {"title": "Förderkreis", "path": "foerderkreis/index.html", "children": [{"title": "Fotogalerie", "path": "foerderkreis/fotogalerie/index.html", "children": []}, {"title": "Historie", "path": "foerderkreis/historie/index.html", "children": []}, {"title": "Konzepte/Philosophie", "path": "foerderkreis/konzepte-philosophie/index.html", "children": []}, {"title": "Spendenkonto", "path": "foerderkreis/spendenkonto/index.html", "children": []}, {"title": "Tätigkeiten", "path": "foerderkreis/taetigkeiten/index.html", "children": []}]}];

  function setScrolledState() {
    body.classList.toggle('is-scrolled', window.scrollY > 8);
  }

  setScrolledState();
  window.addEventListener('scroll', setScrolledState, { passive: true });

  function rootPrefix() {
    var cssLink = doc.querySelector('link[href*="assets/css/styles.css"]');
    if (!cssLink) return '';
    return cssLink.getAttribute('href').replace(/assets\/css\/styles\.css.*$/, '');
  }

  var root = rootPrefix();
  var iconMap = [
    { match: 'museum-der-evolution', src: 'assets/uploads/2021/01/LOGO_MUSEUM_DER_EVOLUTIONEUM_II-79x53.png' },
    { match: 'landwirtschaft', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
    { match: 'wald', src: 'assets/uploads/2020/03/gt_menu_wald-93x53.jpg' },
    { match: 'kapelle', src: 'assets/uploads/2020/03/gt_menu_kapelle-93x53.jpg' },
    { match: 'hofladen', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
    { match: 'veranstaltungen', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
    { match: 'foerderkreis', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' },
    { match: 'see', src: 'assets/uploads/2020/03/gt_menu_see-93x53.jpg' },
    { match: 'burgensemble', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'burg/', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'kornspeicher', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'marstall', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'projekte', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'presse', src: 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg' },
    { match: 'gaestebuch', src: 'assets/uploads/2026/03/buch.png' },
    { match: 'fotogalerie', src: 'assets/uploads/2026/03/buch.png' },
    { match: 'historie', src: 'assets/uploads/2020/03/gt_menu_burgensemble-36x20.jpg' },
    { match: 'angebote', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
    { match: 'unterkuenfte', src: 'assets/uploads/2020/08/gt_menu_hofladen-93x53.jpg' },
    { match: 'bewirtschaftung', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
    { match: 'produkte', src: 'assets/uploads/2020/03/gt_menu_landwirtschaft-93x53.jpg' },
    { match: 'philosophie', src: 'assets/uploads/2021/01/LOGO_MUSEUM_DER_EVOLUTIONEUM_II-79x53.png' },
    { match: 'aktuelles', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
    { match: 'archiv', src: 'assets/uploads/2020/03/gt_menu_veranstaltungen-93x53.jpg' },
    { match: 'spendenkonto', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' },
    { match: 'taetigkeiten', src: 'assets/uploads/2020/03/gt_menu_foerderverein-93x53.jpg' }
  ];

  function iconFor(href, label) {
    href = (href || '').toLowerCase();
    label = (label || '').toLowerCase();
    for (var i = 0; i < iconMap.length; i += 1) {
      if (href.indexOf(iconMap[i].match) !== -1 || label.indexOf(iconMap[i].match) !== -1) {
        return root + iconMap[i].src;
      }
    }
    return root + 'assets/uploads/2020/03/gt_menu_burgensemble-93x53.jpg';
  }

  function enhanceLink(link) {
    if (!link || link.classList.contains('link-enhanced')) return;
    var label = (link.textContent || '').replace(/\s+/g, ' ').trim();
    var href = link.getAttribute('href') || '';
    var src = iconFor(href, label);
    var thumb = doc.createElement('img');
    thumb.className = 'nav-thumb';
    thumb.alt = '';
    thumb.setAttribute('aria-hidden', 'true');
    thumb.src = src;
    var span = doc.createElement('span');
    span.className = 'nav-label';
    span.textContent = label;
    link.textContent = '';
    link.appendChild(thumb);
    link.appendChild(span);
    link.classList.add('link-enhanced');
  }

  doc.querySelectorAll('.main-nav a, .sidebar-menu a').forEach(enhanceLink);

  function resolvePath(href) {
    try {
      var url = new URL(href, doc.baseURI);
      return url.pathname.replace(/\\/g, '/');
    } catch (e) {
      return href;
    }
  }

  function findNodeByHref(href) {
    var path = resolvePath(href);
    var result = null;
    function walk(node) {
      if (!node || result) return;
      if (path.slice(-node.path.length) === node.path) {
        result = node;
        return;
      }
      (node.children || []).forEach(walk);
    }
    MENU_DATA.forEach(walk);
    return result;
  }

  function buildFlyoutItem(item) {
    var block = doc.createElement('div');
    block.className = 'nav-flyout-item';
    var link = doc.createElement('a');
    link.href = root + item.path;
    link.className = 'nav-flyout-link';
    link.textContent = item.title;
    block.appendChild(link);
    enhanceLink(link);
    if (item.children && item.children.length) {
      var sub = doc.createElement('div');
      sub.className = 'nav-flyout-sub';
      item.children.forEach(function (child) {
        var childLink = doc.createElement('a');
        childLink.href = root + child.path;
        childLink.className = 'nav-flyout-sub-link';
        childLink.textContent = child.title;
        sub.appendChild(childLink);
      });
      block.appendChild(sub);
    }
    return block;
  }

  function buildFlyouts() {
    if (window.innerWidth <= 860) return;
    doc.querySelectorAll('.main-nav li > a').forEach(function (link) {
      var node = findNodeByHref(link.getAttribute('href') || '');
      if (!node || !node.children || !node.children.length) return;
      var li = link.parentElement;
      if (!li || li.querySelector('.nav-flyout')) return;
      var fly = doc.createElement('div');
      fly.className = 'nav-flyout';
      var childCount = node.children.length;
      var grandChildCount = node.children.reduce(function (sum, item) {
        return sum + ((item.children && item.children.length) || 0);
      }, 0);
      if (childCount >= 5 || grandChildCount >= 8) {
        fly.classList.add('is-two-column');
      }
      node.children.forEach(function (item) {
        fly.appendChild(buildFlyoutItem(item));
      });
      li.appendChild(fly);

      /* Position:fixed braucht explizite top-Koordinate */
      function positionFlyout() {
        var rect = li.getBoundingClientRect();
        var winH = window.innerHeight;
        var flyH = fly.scrollHeight || 300;
        var top = Math.min(rect.top, winH - flyH - 20);
        fly.style.top = Math.max(10, top) + 'px';
      }
      li.addEventListener('mouseenter', positionFlyout);
      li.addEventListener('focusin', positionFlyout);
    });
  }

  buildFlyouts();

  /* ── Gästebuch via GT API ── */
  function buildEntryEl(entry) {
    var article = doc.createElement('article');
    article.className = 'guestbook-entry reveal';
    var head = doc.createElement('div');
    head.className = 'guestbook-entry-head';
    var nameEl = doc.createElement('div');
    nameEl.className = 'guestbook-entry-name';
    nameEl.textContent = entry.name + (entry.context ? ' – ' + entry.context : '');
    var dateEl = doc.createElement('div');
    dateEl.className = 'guestbook-entry-date';
    var d = new Date(entry.date);
    dateEl.textContent = isNaN(d.getTime()) ? '' : d.toLocaleDateString('de-DE');
    head.appendChild(nameEl);
    head.appendChild(dateEl);
    var msg = doc.createElement('p');
    msg.textContent = entry.message;
    article.appendChild(head);
    article.appendChild(msg);
    return article;
  }

  function renderGuestbook() {
    var list = doc.getElementById('guestbookEntries');
    var empty = doc.getElementById('guestbookEmpty');
    if (!list) return;
    list.innerHTML = '<p style="font-family:CardoGT,serif;font-size:1.6rem;opacity:.5;padding:1rem 0">Einträge werden geladen …</p>';
    var api = window.GT;
    if (!api) { list.innerHTML = ''; if (empty) empty.hidden = false; return; }
    api.getPublicEntries().then(function(entries) {
      list.innerHTML = '';
      entries.forEach(function(entry, i) {
        var el = buildEntryEl(entry);
        el.style.setProperty('--reveal-delay', (i * 60) + 'ms');
        list.appendChild(el);
        setTimeout(function() { el.classList.add('is-visible'); }, 80 + i * 60);
      });
      if (empty) empty.hidden = entries.length > 0;
    }).catch(function() {
      list.innerHTML = '';
      if (empty) { empty.hidden = false; empty.textContent = 'Einträge konnten nicht geladen werden.'; }
    });
  }

  function bindGuestbookForm() {
    var form = doc.getElementById('guestbookForm');
    if (form && form.dataset.gtBound === '1') return;
    if (form) form.dataset.gtBound = '1';
    var status = doc.getElementById('guestbookStatus');
    if (!form) return;
    var api = window.GT;
    if (api && !api.isConfigured()) {
      var notice = doc.createElement('div');
      notice.className = 'gt-api-notice';
      notice.innerHTML = 'Offline-Modus aktiv. Für echte Online-Speicherung bitte <code>assets/js/api.js</code> konfigurieren (JSONBin.io).';
      form.parentNode.insertBefore(notice, form);
    }
    form.addEventListener('submit', function(event) {
      event.preventDefault();
      var btn = form.querySelector('button');
      var data = new FormData(form);
      var entry = {
        name:    String(data.get('name')    || '').trim(),
        context: String(data.get('context') || '').trim(),
        message: String(data.get('message') || '').trim()
      };
      if (!entry.name || !entry.message) return;
      if (btn) { btn.disabled = true; btn.textContent = 'Wird gespeichert …'; }
      var promise = api ? api.submitEntry(entry) : Promise.reject();
      promise.then(function() {
        form.reset();
        if (btn) { btn.disabled = false; btn.textContent = 'Eintrag speichern'; }
        if (status) {
          status.hidden = false;
          status.innerHTML = '<span style="color:#4a7a2a">✓</span> Dein Eintrag wurde eingereicht und erscheint nach Prüfung durch den Administrator.';
        }
      }).catch(function() {
        if (btn) { btn.disabled = false; btn.textContent = 'Eintrag speichern'; }
        if (status) { status.hidden = false; status.textContent = 'Fehler beim Speichern. Bitte später erneut versuchen.'; }
      });
    });
  }



  function renderEventsPage() {
    var cal = doc.getElementById('eventsCalendar');
    if (!cal || !window.GT) return;
    var MONTHS = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
    function escHtml(s){ return String(s || '').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;'); }
    cal.innerHTML = '<p class="events-empty">Veranstaltungen werden geladen …</p>';
    window.GT.getEvents().then(function(evs){
      if (!evs || !evs.length) { cal.innerHTML = '<p class="events-empty">Derzeit keine Veranstaltungen geplant.</p>'; return; }
      var now = new Date().toISOString().slice(0,10);
      var future = evs.filter(function(e){ return (e.date || '') >= now; });
      if (!future.length) { cal.innerHTML = '<p class="events-empty">Derzeit keine kommenden Veranstaltungen.</p>'; return; }
      cal.innerHTML = future.map(function(e){
        var d = new Date(e.date);
        var day = isNaN(d) ? '–' : d.getDate();
        var mon = isNaN(d) ? '' : MONTHS[d.getMonth()];
        var yr = isNaN(d) ? '' : d.getFullYear();
        return '<div class="event-card"><div class="event-date-block"><div class="event-day">' + day + '</div><div class="event-month">' + mon + '</div><div class="event-year">' + yr + '</div></div><div class="event-body"><div class="event-title">' + escHtml(e.title) + '</div>' + ((e.time || e.location) ? '<div class="event-meta">' + (e.time ? '🕐 ' + escHtml(e.time) + ' &nbsp; ' : '') + (e.location ? '📍 ' + escHtml(e.location) : '') + '</div>' : '') + (e.description ? '<div class="event-desc">' + escHtml(e.description) + '</div>' : '') + '</div></div>';
      }).join('');
    }).catch(function(){
      cal.innerHTML = '<p class="events-empty">Veranstaltungen konnten nicht geladen werden.</p>';
    });
  }

  /* Wartungsmodus beim Laden prüfen */
  (function checkMaintenance() {
    var api = window.GT;
    if (!api) return;
    api.getMaintenance().then(function(active) {
      if (!active) return;
      doc.body.classList.add('gt-maintenance-on');
      if (!doc.querySelector('.gt-maintenance-overlay')) {
        var cssLink = doc.querySelector('link[href*="styles.css"]');
        var root = cssLink ? cssLink.getAttribute('href').replace('assets/css/styles.css', '') : '';
        var ov = doc.createElement('div');
        ov.className = 'gt-maintenance-overlay';
        ov.innerHTML =
          '<img class="maint-logo" src="' + root + 'assets/images/logo-gut-trechow.png" alt="Gut Trechow">' +
          '<h2>Wartungsarbeiten</h2>' +
          '<div class="maint-ornament">· · ·</div>' +
          '<p>Diese Seite wird gerade gewartet und ist vorübergehend nicht erreichbar.<br>Wir sind bald wieder für Sie da.</p>';
        doc.body.appendChild(ov);
      }
    });
  })();

  renderGuestbook();
  bindGuestbookForm();
  renderEventsPage();

  var toggle = doc.querySelector('.nav-toggle');
  var nav = doc.getElementById('mainNav');
  if (toggle && nav) {
    toggle.addEventListener('click', function () {
      nav.classList.toggle('is-open');
      var expanded = nav.classList.contains('is-open');
      toggle.setAttribute('aria-expanded', expanded ? 'true' : 'false');
    });

    nav.querySelectorAll('a').forEach(function (link) {
      link.addEventListener('click', function () {
        nav.classList.remove('is-open');
        toggle.setAttribute('aria-expanded', 'false');
      });
    });
  }

  doc.querySelectorAll('[data-slider]').forEach(function (slider) {
    var slides = Array.prototype.slice.call(slider.querySelectorAll('.hero-slide'));
    if (slides.length < 2) return;

    var prev = slider.querySelector('.hero-prev');
    var next = slider.querySelector('.hero-next');
    var index = 0;
    var timer = null;

    function show(i) {
      index = (i + slides.length) % slides.length;
      slides.forEach(function (slide, n) {
        var active = n === index;
        slide.classList.toggle('is-active', active);
        slide.setAttribute('aria-hidden', active ? 'false' : 'true');
        if (!active) {
          var img = slide.querySelector('img');
          var overlay = slide.querySelector('.hero-overlay');
          if (img) img.style.transform = '';
          if (overlay) overlay.style.transform = '';
        }
      });
    }

    function advance(step) {
      show(index + step);
    }

    function stop() {
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
    }

    function start() {
      if (prefersReducedMotion) return;
      stop();
      timer = setInterval(function () {
        advance(1);
      }, 5200);
    }

    if (prev) {
      prev.addEventListener('click', function () {
        advance(-1);
        start();
      });
    }

    if (next) {
      next.addEventListener('click', function () {
        advance(1);
        start();
      });
    }

    slider.addEventListener('mouseenter', stop);
    slider.addEventListener('mouseleave', start);
    slider.addEventListener('focusin', stop);
    slider.addEventListener('focusout', start);

    if (!prefersReducedMotion) {
      slider.addEventListener('pointermove', function (event) {
        var rect = slider.getBoundingClientRect();
        var x = (event.clientX - rect.left) / rect.width - 0.5;
        var y = (event.clientY - rect.top) / rect.height - 0.5;
        var activeSlide = slides[index];
        if (!activeSlide) return;
        var img = activeSlide.querySelector('img');
        var overlay = activeSlide.querySelector('.hero-overlay');
        if (img) img.style.transform = 'translate(' + (-x * 12).toFixed(2) + 'px,' + (-y * 10).toFixed(2) + 'px) scale(1.03)';
        if (overlay) overlay.style.transform = 'translate(' + (x * 10).toFixed(2) + 'px,' + (y * 8).toFixed(2) + 'px)';
      });

      slider.addEventListener('pointerleave', function () {
        var activeSlide = slides[index];
        if (!activeSlide) return;
        var img = activeSlide.querySelector('img');
        var overlay = activeSlide.querySelector('.hero-overlay');
        if (img) img.style.transform = '';
        if (overlay) overlay.style.transform = '';
      });
    }

    show(0);
    start();
  });

  doc.querySelectorAll('.page-content p').forEach(function (paragraph) {
    var images = paragraph.querySelectorAll('img');
    if (images.length < 2) return;

    var clone = paragraph.cloneNode(true);
    clone.querySelectorAll('img, br').forEach(function (node) {
      node.remove();
    });
    var text = (clone.textContent || '').replace(/\s+/g, ' ').trim();

    if (text.length <= 36) {
      paragraph.classList.add('image-cluster');
    }
  });

  var revealTargets = Array.prototype.slice.call(
    doc.querySelectorAll('.hero-slider, .hero-banner, .panel, .notice-card, .menu-card, .sidebar-card, .page-content')
  );

  revealTargets.forEach(function (el, index) {
    el.classList.add('reveal');
    el.style.setProperty('--reveal-delay', Math.min(index * 70, 350) + 'ms');
  });

  if (prefersReducedMotion || !('IntersectionObserver' in window)) {
    revealTargets.forEach(function (el) {
      el.classList.add('is-visible');
    });
  } else {
    var observer = new IntersectionObserver(function (entries, io) {
      entries.forEach(function (entry) {
        if (!entry.isIntersecting) return;
        entry.target.classList.add('is-visible');
        io.unobserve(entry.target);
      });
    }, {
      threshold: 0.01,
      rootMargin: '0px 0px 0px 0px'
    });

    revealTargets.forEach(function (el) {
      observer.observe(el);
    });
  }
})();


/* ── Dynamischer Seiten-Inhalt von API laden ── */
(function(){
  if (!window.GT) return;
  var pc = document.querySelector('.page-content');
  if (!pc) return;

  // Slug aus URL ableiten
  var path = window.location.pathname.replace(/\/index\.html$/, '').replace(/\/$/, '');
  var parts = path.split('/').filter(Boolean);
  // Finde den Basis-Slug (ohne 'gt' prefix wenn lokal)
  var slug = '';
  var knownRoots = ['burgensemble','landwirtschaft','wald','see','kapelle','hofladen',
    'veranstaltungen','foerderkreis','museum-der-evolution','kontakt','impressum',
    'datenschutzerklaerung','index'];
  for (var i = parts.length - 1; i >= 0; i--) {
    if (knownRoots.indexOf(parts[i]) !== -1) {
      slug = parts.slice(i).join('/');
      break;
    }
  }
  if (!slug) {
    // Fallback: letzter Pfadteil
    slug = parts.length ? parts[parts.length - 1] : 'index';
    if (slug === '' || slug === 'gt') slug = 'index';
  }

  window.GT.getPage(slug).then(function(data) {
    if (!data || !data.content) return;
    // Nur ersetzen wenn API-Inhalt vorhanden
    var cb = pc.querySelector('.content-block');
    var target = cb || pc;
    target.innerHTML = data.content;
    // Seitenspezifische Initialisierung nach dem Ersetzen des HTML erneut ausführen
    renderGuestbook();
    bindGuestbookForm();
    renderEventsPage();
    target.classList.add('reveal');
    setTimeout(function(){ target.classList.add('is-visible'); }, 50);
  }).catch(function(){
    // Kein API-Inhalt = HTML-Inhalt behalten (kein Fehler)
  });
})();

Youez - 2016 - github.com/yon3zu
LinuXploit