Add /preview pages
@@ -12,8 +12,8 @@
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
||||
<meta property="og:site_name" content="Elwig"/>
|
||||
<meta property="og:title" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
|
||||
<meta property="og:site_name" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
|
||||
<meta property="og:title" content="Über - Elwig"/>
|
||||
<meta property="og:description" content="Elwig ist eine spezialisierte, praxisnah entwickelte Softwarelösung zur Unterstützung von Winzergenossenschaften bei ihren zentralen organisatorischen und administrativen Aufgaben entlang der tatsächlichen Abläufe im genossenschaftlichen Weinbau – von der Traubenübernahme bis zur jährlichen Abrechnung."/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="https://elwig.at/"/>
|
||||
@@ -32,9 +32,9 @@
|
||||
<a href="https://elwig.at/de/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="#">Start</a></li>
|
||||
<li><a href="#about">Über</a></li>
|
||||
<li><a href="#clients">Genossenschaften</a></li>
|
||||
<li><a href="/de/vorschau">Vorschau</a></li>
|
||||
<li><a href="/files/">Downloads</a></li>
|
||||
<li><a href="https://git.necronda.net/winzer/">Quellcode</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de" prefix="og: https://ogp.me/ns#">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Vorschau - Elwig - Elektronische Winzergenossenschaftsverwaltung</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="16x16 20x20 24x24 30x30 32x32 36x36 40x40 48x48 60x60 64x64 72x72 80x80 96x96 128x128 256x256"/>
|
||||
<link rel="stylesheet" href="/res/style.css?v=2025-01-12"/>
|
||||
<link rel="alternate" href="/en/preview" hreflang="en"/>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
|
||||
<meta name="theme-color" content="#A040C0"/>
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
||||
<meta property="og:site_name" content="Elwig - Elektronische Winzergenossenschaftsverwaltung"/>
|
||||
<meta property="og:title" content="Vorschau - Elwig"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="https://elwig.at/preview"/>
|
||||
<meta property="og:image" content="https://elwig.at/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<meta property="og:image:width" content="1136"/>
|
||||
<meta property="og:image:height" content="713"/>
|
||||
<meta property="og:locale" content="de"/>
|
||||
<meta property="og:ttl" content="60"/>
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<script src="/res/preview.js"></script>
|
||||
</head>
|
||||
<body class="header-footer" style="background-color: var(--bg-color);">
|
||||
<header>
|
||||
<nav class="index">
|
||||
<div>
|
||||
<a href="https://elwig.at/de/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="/de/#about">Über</a></li>
|
||||
<li><a href="/de/#clients">Genossenschaften</a></li>
|
||||
<li><a href="/de/vorschau">Vorschau</a></li>
|
||||
<li><a href="/files/">Downloads</a></li>
|
||||
<li><a href="https://git.necronda.net/winzer/">Quellcode</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<a href="/en/preview" class="flag">
|
||||
<div></div>
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="preview">
|
||||
|
||||
<div class="window members" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder.png" class="selected" alt="Mitglieder-Fenster, ohne ausgewähltes Mitglied"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Musterbauer.png" alt="Mitglieder-Fenster, MUSTERBAUER Matthäus ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Mustermann.png" alt="Mitglieder-Fenster, MUSTERMANN Max ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinbauer.png" alt="Mitglieder-Fenster, WEINBAUER Wernhardt ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinland-Weine.png" alt="Mitglieder-Fenster, Weinland Weine AG ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Winzer.png" alt="Mitglieder-Fenster, WINZER Waltraud ausgewählt"/>
|
||||
<canvas width="1236" height="693"></canvas>
|
||||
</div>
|
||||
|
||||
<p style="text-align: center;">Die Fenster können teilweise interaktiv erkundet werden.</p>
|
||||
|
||||
<div class="window deliveries" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen.png" class="selected" alt="Lieferungen-Fenster, ohne ausgewählte Lieferung"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-1.png" alt="Lieferungen-Fenster, Lieferung 20250930X002, Teillieferung 1 ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-2.png" alt="Lieferungen-Fenster, Lieferung 20250930X002, Teillieferung 2 ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 1 ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-2.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 2 ausgewählt"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-3.png" alt="Lieferungen-Fenster, Lieferung 20250930X001, Teillieferung 3 ausgewählt"/>
|
||||
<canvas width="1136" height="713"></canvas>
|
||||
</div>
|
||||
|
||||
<div class="window receipt" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Übernahme.png" class="selected" alt="Übernahme-Fenster"/>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<h4>Dokumente – Mitglieder</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Mitgliederliste.pdf">Mitgliederliste</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERBAUER_Matthäus.pdf">Stammdatenblatt MUSTERBAUER Matthäus</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERMANN_Max.pdf">Stammdatenblatt MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WEINBAUER_Wernhardt.pdf">Stammdatenblatt WEINBAUER Wernhardt</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_Weinland_Weine_AG.pdf">Stammdatenblatt Weinland Weine AG</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WINZER_Waltraud.pdf">Stammdatenblatt WINZER Waltraud</a></li>
|
||||
</ul>
|
||||
<h4>Dokumente – Lieferungen</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/Lieferjournal_2025.pdf">Lieferjournal 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X001.pdf">Lieferschein 20250930X001</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X002.pdf">Lieferschein 20250930X002</a></li>
|
||||
</ul>
|
||||
<h4>Dokumente – Auszahlung</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Mustermann.pdf">Anlieferungsbestätigung 2025 – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Weinbauer.pdf">Anlieferungsbestätigung 2025 – WEINBAUER Wernhart</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_1_Teilzahlung.pdf">Variantendaten 1. Teilzahlung 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-001_1_Teilzahlung.pdf">Traubengutschrift Nr. 2025/001 – 1. Teilzahlung – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-002_1_Teilzahlung.pdf">Traubengutschrift Nr. 2025/002 – 1. Teilzahlung – WEINBAUER Wernhart</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_Endauszahlung.pdf">Variantendaten Endauszahlung 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-003_Endauszahlung.pdf">Traubengutschrift Nr. 2025/003 – Endauszahlung – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-004_Endauszahlung.pdf">Traubengutschrift Nr. 2025/004 – Endauszahlung – WEINBAUER Wernhart</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<a href="https://elwig.at/"><img src="/res/elwig.png" alt="Elwig"/></a>
|
||||
<p>
|
||||
<strong>Impressum</strong><br/>
|
||||
Lorenz Stechauner, Thomas Hilscher<br/>
|
||||
Österreich (Austria)<br/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Kontakt</strong><br/>
|
||||
E-Mail: <a href="mailto:contact%40necronda%2enet">contact<!--(at)-->@necronda<!--.net-->.net</a><br/>
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
||||
<meta property="og:site_name" content="Elwig"/>
|
||||
<meta property="og:title" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
|
||||
<meta property="og:site_name" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
|
||||
<meta property="og:title" content="About - Elwig"/>
|
||||
<meta property="og:description" content="Elwig is a specialized, practice-oriented software solution designed to support vintners' cooperatives in their core organizational and administrative tasks, aligned with real-world cooperative wine production workflows – from grape intake to annual settlement."/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="https://elwig.at/"/>
|
||||
@@ -32,9 +32,9 @@
|
||||
<a href="https://elwig.at/en/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="#">Start</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#clients">Cooperatives</a></li>
|
||||
<li><a href="/en/preview">Preview</a></li>
|
||||
<li><a href="/files/">Downloads</a></li>
|
||||
<li><a href="https://git.necronda.net/winzer/">Source Code</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" prefix="og: https://ogp.me/ns#">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Preview - Elwig - Electronic Management for Vintners' Cooperatives</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="16x16 20x20 24x24 30x30 32x32 36x36 40x40 48x48 60x60 64x64 72x72 80x80 96x96 128x128 256x256"/>
|
||||
<link rel="stylesheet" href="/res/style.css?v=2025-01-12"/>
|
||||
<link rel="alternate" href="/de/vorschau" hreflang="de"/>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
|
||||
<meta name="theme-color" content="#A040C0"/>
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
|
||||
<meta property="og:site_name" content="Elwig - Electronic Management for Vintners' Cooperatives"/>
|
||||
<meta property="og:title" content="Preview - Elwig"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:url" content="https://elwig.at/preview"/>
|
||||
<meta property="og:image" content="https://elwig.at/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<meta property="og:image:width" content="1136"/>
|
||||
<meta property="og:image:height" content="713"/>
|
||||
<meta property="og:locale" content="en"/>
|
||||
<meta property="og:ttl" content="60"/>
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<script src="/res/preview.js"></script>
|
||||
</head>
|
||||
<body class="header-footer" style="background-color: var(--bg-color);">
|
||||
<header>
|
||||
<nav class="index">
|
||||
<div>
|
||||
<a href="https://elwig.at/en/"><img src="/res/elwig.png" alt="Elwig Logo"/></a>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="/en/#about">About</a></li>
|
||||
<li><a href="/en/#clients">Cooperatives</a></li>
|
||||
<li><a href="/en/preview">Preview</a></li>
|
||||
<li><a href="/files/">Downloads</a></li>
|
||||
<li><a href="https://git.necronda.net/winzer/">Source Code</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
<a href="/de/vorschau" class="flag">
|
||||
<div></div>
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<main class="preview">
|
||||
|
||||
<div class="window members" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder.png" class="selected" alt="Member window, with no member selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Musterbauer.png" alt="Member window, with MUSTERBAUER Matthäus selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Mustermann.png" alt="Member window, with MUSTERMANN Max selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinbauer.png" alt="Member window, with WEINBAUER Wernhardt selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Weinland-Weine.png" alt="Member window, with Weinland Weine AG selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Mitglieder/Mitglieder-Winzer.png" alt="Member window, with WINZER Waltraud selected"/>
|
||||
<canvas width="1236" height="693"></canvas>
|
||||
</div>
|
||||
|
||||
<p style="text-align: center;">The windows may be explored interactively.</p>
|
||||
|
||||
<div class="window deliveries" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen.png" class="selected" alt="Delivery window, with no delivery selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-1.png" alt="Delivery window, with delivery 20250930X002, delivery part 1, selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-002-2.png" alt="Delivery window, with delivery 20250930X002, delivery part 2, selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-1.png" alt="Delivery window, with delivery 20250930X001, delivery part 1, selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-2.png" alt="Delivery window, with delivery 20250930X001, delivery part 2, selected"/>
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Lieferungen-001-3.png" alt="Delivery window, with delivery 20250930X001, delivery part 3, selected"/>
|
||||
<canvas width="1136" height="713"></canvas>
|
||||
</div>
|
||||
|
||||
<div class="window receipt" tabindex="0">
|
||||
<img src="/res/preview/v1.0.5.2/Lieferungen/Übernahme.png" class="selected" alt="Receipt window"/>
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<h4>Documents – Members</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Mitgliederliste.pdf">Member List</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERBAUER_Matthäus.pdf">Member Data Sheet MUSTERBAUER Matthäus</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_MUSTERMANN_Max.pdf">Member Data Sheet MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WEINBAUER_Wernhardt.pdf">Member Data Sheet WEINBAUER Wernhardt</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_Weinland_Weine_AG.pdf">Member Data Sheet Weinland Weine AG</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Mitglieder/Stammdatenblatt_WINZER_Waltraud.pdf">Member Data Sheet WINZER Waltraud</a></li>
|
||||
</ul>
|
||||
<h4>Documents – Deliveries</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/Lieferjournal_2025.pdf">Delivery Journall 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X001.pdf">Delivery Note 20250930X001</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Lieferungen/20250930X002.pdf">Delivery Note 20250930X002</a></li>
|
||||
</ul>
|
||||
<h4>Documents – Annual settlement</h4>
|
||||
<ul>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Mustermann.pdf">Delivery Confirmation 2025 – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Anlieferungsbestätigung_2025_Weinbauer.pdf">Delivery Confirmation 2025 – WEINBAUER Wernhart</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_1_Teilzahlung.pdf">Payment Variant Data 1. Teilzahlung 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-001_1_Teilzahlung.pdf">Credit Note No. 2025/001 – 1. Teilzahlung – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-002_1_Teilzahlung.pdf">Credit Note No. 2025/002 – 1. Teilzahlung – WEINBAUER Wernhart</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Auszahlungsvariante_2025_-_Endauszahlung.pdf">Payment Variant Data Endauszahlung 2025</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-003_Endauszahlung.pdf">Credit Note No. 2025/003 – Endauszahlung – MUSTERMANN Max</a></li>
|
||||
<li><a href="/res/preview/v1.0.5.2/Auszahlung/Traubengutschrift_Nr_2025-004_Endauszahlung.pdf">Credit Note No. 2025/004 – Endauszahlung – WEINBAUER Wernhart</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<a href="https://elwig.at/"><img src="/res/elwig.png" alt="Elwig"/></a>
|
||||
<p>
|
||||
<strong>Imprint</strong><br/>
|
||||
Lorenz Stechauner, Thomas Hilscher<br/>
|
||||
Austria<br/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Contact</strong><br/>
|
||||
E-Mail: <a href="mailto:contact%40necronda%2enet">contact<!--(at)-->@necronda<!--.net-->.net</a><br/>
|
||||
</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +1,28 @@
|
||||
<?php
|
||||
$lang = 'de'; // prefer german
|
||||
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $pref) {
|
||||
$l = substr($pref, 0, 2);
|
||||
if ($l === 'de') {
|
||||
$lang = 'de';
|
||||
break; // force german
|
||||
} else if ($l === 'en') {
|
||||
$lang = 'en'; // use english only, if user specifically asks for it
|
||||
}
|
||||
}
|
||||
}
|
||||
header("Content-Length: 0");
|
||||
switch ($_SERVER['PATH_INFO']) {
|
||||
case '':
|
||||
case '/':
|
||||
$lang = 'de'; // prefer german
|
||||
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $pref) {
|
||||
$l = substr($pref, 0, 2);
|
||||
if ($l === 'de') {
|
||||
$lang = 'de';
|
||||
break; // force german
|
||||
} else if ($l === 'en') {
|
||||
$lang = 'en'; // use english only, if user specifically asks for it
|
||||
}
|
||||
}
|
||||
}
|
||||
header("Status: 303");
|
||||
header("Location: /$lang/");
|
||||
break;
|
||||
case '/preview':
|
||||
case '/vorschau':
|
||||
header("Status: 303");
|
||||
header("Location: /$lang/" . ($lang === 'de' ? 'vorschau' : 'preview'));
|
||||
break;
|
||||
case '/changelog':
|
||||
header("Status: 303");
|
||||
header("Location: https://git.necronda.net/winzer/elwig/src/branch/main/CHANGELOG.md#changelog");
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
"use strict";
|
||||
|
||||
function getMembersRow(x, y, w=1236) {
|
||||
const r = 1236 / w;
|
||||
x *= r;
|
||||
y *= r;
|
||||
if (x <= 12 || x > 346) return -1;
|
||||
const row = Math.floor((y - 113) / 20.5);
|
||||
return (row >= 0 && row < 5) ? row : -1;
|
||||
}
|
||||
|
||||
function getDeliveriesRow(x, y, w=1136) {
|
||||
const r = 1136 / w;
|
||||
x *= r;
|
||||
y *= r;
|
||||
if (x <= 12 || x > 395) return -1;
|
||||
const row = Math.floor((y - 120) / 20.5);
|
||||
return (row >= 0 && row < 2) ? row : -1;
|
||||
}
|
||||
|
||||
function getDeliveryPartsRow(x, y, w=1136) {
|
||||
const r = 1136 / w;
|
||||
x *= r;
|
||||
y *= r;
|
||||
if (x <= 424 || x > 753) return [-1, -1];
|
||||
const win = document.getElementsByClassName("window")[1];
|
||||
const idx = Array.prototype.indexOf.call(win.children, win.getElementsByClassName("selected")[0]);
|
||||
const len = {1: 2, 2: 2, 3: 3, 4: 3, 5: 3}[idx] ?? 0;
|
||||
const row = Math.floor((y - 319) / 20);
|
||||
return [{0: 0, 1: 1, 2: 1, 3: 2, 4: 2, 5: 2}[idx], len === 0 ? -1 : (row >= 0 && row < len) ? row : -1];
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const windows = document.getElementsByClassName("window");
|
||||
|
||||
const w1 = windows[0];
|
||||
const canvas1 = w1.getElementsByTagName("canvas")[0];
|
||||
const ctx1 = canvas1.getContext("2d");
|
||||
w1.addEventListener("mousemove", (evt) => {
|
||||
ctx1.clearRect(0, 0, canvas1.width, canvas1.height);
|
||||
const row = getMembersRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
|
||||
if (row === -1) return;
|
||||
ctx1.fillStyle = "#0078d740";
|
||||
ctx1.fillRect(12, 113 + 20.5 * row, 334, 20.5);
|
||||
});
|
||||
w1.addEventListener("click", (evt) => {
|
||||
const row = getMembersRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
|
||||
for (const img of w1.getElementsByTagName("img")) img.classList.remove("selected");
|
||||
w1.getElementsByTagName("img")[row + 1].classList.add("selected");
|
||||
});
|
||||
|
||||
const w2 = windows[1];
|
||||
const canvas2 = w2.getElementsByTagName("canvas")[0];
|
||||
const ctx2 = canvas2.getContext("2d");
|
||||
w2.addEventListener("mousemove", (evt) => {
|
||||
ctx2.clearRect(0, 0, canvas2.width, canvas2.height);
|
||||
const row = getDeliveriesRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
|
||||
const partRow = getDeliveryPartsRow(evt.offsetX, evt.offsetY, evt.target.clientWidth)[1];
|
||||
if (row !== -1) {
|
||||
ctx2.fillStyle = "#0078d740";
|
||||
ctx2.fillRect(12, 120 + 20.5 * row, 383, 20.5);
|
||||
} else if (partRow !== -1) {
|
||||
ctx2.fillStyle = "#0078d740";
|
||||
ctx2.fillRect(424, 319 + 20 * partRow, 329, 20);
|
||||
}
|
||||
});
|
||||
w2.addEventListener("click", (evt) => {
|
||||
const row = getDeliveriesRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
|
||||
const partRow = getDeliveryPartsRow(evt.offsetX, evt.offsetY, evt.target.clientWidth);
|
||||
if (row !== -1 || partRow[1] !== -1) {
|
||||
const idx = row !== -1 ? row * 2 + 1 : (partRow[0] - 1) * 2 + partRow[1] + 1;
|
||||
for (const img of w2.getElementsByTagName("img")) img.classList.remove("selected");
|
||||
w2.getElementsByTagName("img")[idx].classList.add("selected");
|
||||
} else {
|
||||
for (const img of w2.getElementsByTagName("img")) img.classList.remove("selected");
|
||||
w2.getElementsByTagName("img")[0].classList.add("selected");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener("keydown", (evt) => {
|
||||
const act = document.activeElement;
|
||||
if (!act.classList.contains("window")) return;
|
||||
let el = null;
|
||||
if (evt.key === "ArrowUp" || evt.key === "ArrowLeft") {
|
||||
el = act.getElementsByClassName("selected")[0].previousElementSibling;
|
||||
evt.stopImmediatePropagation();
|
||||
evt.preventDefault();
|
||||
} else if (evt.key === "ArrowDown" || evt.key === "ArrowRight") {
|
||||
el = act.getElementsByClassName("selected")[0].nextElementSibling;
|
||||
evt.stopImmediatePropagation();
|
||||
evt.preventDefault();
|
||||
}
|
||||
if (el && el.tagName === "IMG") {
|
||||
for (const img of act.getElementsByTagName("img")) img.classList.remove("selected");
|
||||
el.classList.add("selected");
|
||||
}
|
||||
});
|
||||
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 52 KiB |
@@ -77,7 +77,7 @@ nav li a {
|
||||
}
|
||||
|
||||
nav li a:hover,
|
||||
nav li.active a{
|
||||
nav li.active a {
|
||||
color: var(--main-color);
|
||||
}
|
||||
|
||||
@@ -92,15 +92,15 @@ nav a.flag div {
|
||||
margin: 0.75rem 1rem;
|
||||
}
|
||||
|
||||
nav a.flag[href='/de/'] div::before,
|
||||
nav a.flag[href='/en/']:hover div::before,
|
||||
nav a.flag[href='/en/']:focus div::before {
|
||||
nav a.flag[href^='/de/'] div::before,
|
||||
nav a.flag[href^='/en/']:hover div::before,
|
||||
nav a.flag[href^='/en/']:focus div::before {
|
||||
content: '\1F1EC\1F1E7'; /* GB */
|
||||
}
|
||||
|
||||
nav a.flag[href='/en/'] div::before,
|
||||
nav a.flag[href='/de/']:hover div::before,
|
||||
nav a.flag[href='/de/']:focus div::before {
|
||||
nav a.flag[href^='/en/'] div::before,
|
||||
nav a.flag[href^='/de/']:hover div::before,
|
||||
nav a.flag[href^='/de/']:focus div::before {
|
||||
content: '\1F1E6\1F1F9'; /* AT */
|
||||
}
|
||||
|
||||
@@ -416,7 +416,7 @@ table .unit {
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 650px) {
|
||||
@media screen and (max-width: 700px) {
|
||||
nav.index li:first-child {
|
||||
display: none;
|
||||
}
|
||||
@@ -425,7 +425,7 @@ table .unit {
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 550px) {
|
||||
@media screen and (max-width: 600px) {
|
||||
nav.index li:nth-child(2) {
|
||||
display: none;
|
||||
}
|
||||
@@ -435,7 +435,7 @@ table .unit {
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
nav.index li:nth-child(3) {
|
||||
nav.index li:nth-child(4) {
|
||||
display: none;
|
||||
}
|
||||
.home {
|
||||
@@ -448,3 +448,120 @@ table .unit {
|
||||
font-size: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/**** Preview ****/
|
||||
|
||||
main.preview {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin: 4em 0;
|
||||
gap: 4em;
|
||||
}
|
||||
|
||||
main.preview section {
|
||||
background-color: #FFFFFF;
|
||||
padding: 2em 4em;
|
||||
border-radius: 0.5em;
|
||||
box-shadow: 0 0 2em #00000060;
|
||||
border: 1px solid #C0C0C0;
|
||||
}
|
||||
|
||||
main.preview section h4:not(:first-child) {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
main.preview a {
|
||||
color: var(--main-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
main.preview a:hover,
|
||||
main.preview a:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
main.preview section {
|
||||
padding: 2em 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.window {
|
||||
position: relative;
|
||||
box-shadow: 0 0 2em #00000060;
|
||||
display: flex;
|
||||
font-size: 1rem;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
.window img {
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 2480px) {
|
||||
.window:nth-of-type(1) {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.window:nth-of-type(1) * {
|
||||
width: 2472px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1240px) {
|
||||
.window:nth-of-type(1) {
|
||||
font-size: 0.5rem;
|
||||
}
|
||||
.window:nth-of-type(1) * {
|
||||
width: 618px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 620px) {
|
||||
.window:nth-of-type(1) {
|
||||
font-size: 0.25rem;
|
||||
}
|
||||
.window:nth-of-type(1) * {
|
||||
width: 309px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 2280px) {
|
||||
.window:nth-of-type(2), .window:nth-of-type(3) {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
|
||||
width: 2272px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1140px) {
|
||||
.window:nth-of-type(2), .window:nth-of-type(3) {
|
||||
font-size: 0.5rem;
|
||||
}
|
||||
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
|
||||
width: 568px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 570px) {
|
||||
.window:nth-of-type(2), .window:nth-of-type(3) {
|
||||
font-size: 0.25rem;
|
||||
}
|
||||
.window:nth-of-type(2) *, .window:nth-of-type(3) * {
|
||||
width: 284px;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.window canvas {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.window img:not(.selected) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# robots.txt for elwig.at
|
||||
User-Agent: *
|
||||
Sitemap: https://elwig.at/sitemap.xml
|
||||
Disallow: /res/preview/
|
||||
|
||||
@@ -10,6 +10,16 @@
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://elwig.at/de/vorschau</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://elwig.at/en/preview</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://elwig.at/files/</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
|
||||