added 404 page, added title+description to pages
This commit is contained in:
@@ -20,14 +20,9 @@ all: build/css/cwsvJudo.css images
|
|||||||
make -j graphiken
|
make -j graphiken
|
||||||
make build/css/cwsvJudo.css
|
make build/css/cwsvJudo.css
|
||||||
|
|
||||||
# minimizing wallpaper sizes
|
.PHONY: wallpapers
|
||||||
build/graphiken/wallpapers/%.jpg: graphiken/wallpapers/%.jpg
|
wallpapers:
|
||||||
mkdir -p build/graphiken/wallpapers
|
find graphiken/wallpapers/ -name *.jpg -exec ./scripts/mk-wallpaper {} \;
|
||||||
# guetzli $^ $@
|
|
||||||
$(LN) $^ $@
|
|
||||||
build/graphiken/wallpapers/%.svg: graphiken/wallpapers/%.svg
|
|
||||||
mkdir -p build/graphiken/wallpapers
|
|
||||||
$(LN) $^ $@
|
|
||||||
|
|
||||||
.PHONY: images
|
.PHONY: images
|
||||||
images: $(wallpapers)
|
images: $(wallpapers)
|
||||||
@@ -148,7 +143,7 @@ dist: all
|
|||||||
find ./build/graphiken/cwsvJudoLogoWappen -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/graphiken/logos \;
|
find ./build/graphiken/cwsvJudoLogoWappen -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/graphiken/logos \;
|
||||||
# - wallpapers
|
# - wallpapers
|
||||||
mkdir -p $(distDir)/httpdocs/ressourcen/graphiken/wallpapers
|
mkdir -p $(distDir)/httpdocs/ressourcen/graphiken/wallpapers
|
||||||
find ./build/graphiken/wallpapers -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/graphiken/wallpapers \;
|
find ./build/graphics/wallpapers -type d -exec cp -r {} $(distDir)/httpdocs/ressourcen/graphiken/wallpapers \;
|
||||||
# - icons
|
# - icons
|
||||||
mkdir -p $(distDir)/httpdocs/ressourcen/graphiken/icons
|
mkdir -p $(distDir)/httpdocs/ressourcen/graphiken/icons
|
||||||
find ./graphiken/icons -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/graphiken/icons \;
|
find ./graphiken/icons -type f -exec $(LN) {} $(distDir)/httpdocs/ressourcen/graphiken/icons \;
|
||||||
@@ -180,7 +175,7 @@ dist: all
|
|||||||
$(LN) ./src/htaccess/heliohost/pages/responsive/.htaccess $(distDir)/httpdocs/pages/responsive/.htaccess
|
$(LN) ./src/htaccess/heliohost/pages/responsive/.htaccess $(distDir)/httpdocs/pages/responsive/.htaccess
|
||||||
|
|
||||||
# config files
|
# config files
|
||||||
$(LN) ./configs/heliohost/pages.config.inc.php $(distDir)/httpdocs/pages/responsive/config.php
|
$(LN) ./configs/localDocker/pages.config.inc.php $(distDir)/httpdocs/pages/responsive/config.php
|
||||||
|
|
||||||
mkdir -p $(distDir)/.local
|
mkdir -p $(distDir)/.local
|
||||||
$(LN) configs/heliohost/config.json $(distDir)/.local/config.json
|
$(LN) configs/heliohost/config.json $(distDir)/.local/config.json
|
||||||
|
|||||||
@@ -4,6 +4,12 @@ FROM php:8.2-apache
|
|||||||
# startup scripts for the image
|
# startup scripts for the image
|
||||||
# - docker-php-ext-install -- install helper script from PHP
|
# - docker-php-ext-install -- install helper script from PHP
|
||||||
RUN docker-php-ext-install pdo pdo_mysql
|
RUN docker-php-ext-install pdo pdo_mysql
|
||||||
|
# install aditional php extensions
|
||||||
|
# - international time
|
||||||
|
RUN apt-get -y update \
|
||||||
|
&& apt-get install -y libicu-dev \
|
||||||
|
&& docker-php-ext-configure intl \
|
||||||
|
&& docker-php-ext-install intl
|
||||||
|
|
||||||
# install and add xdebug extension
|
# install and add xdebug extension
|
||||||
# @todo What is pecl?
|
# @todo What is pecl?
|
||||||
|
|||||||
25
homepage/cwsvJudo/configs/localDocker/pages.config.inc.php
Normal file
25
homepage/cwsvJudo/configs/localDocker/pages.config.inc.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
/// Die Basisdomain, unter der die Hauptseite zu erreichen ist
|
||||||
|
$baseDomain = "localhost";
|
||||||
|
/// Subdomain, unter dem dieses Verzeichnis zu finden ist (falls der Fall gegeben ist)
|
||||||
|
$subDomain = "";
|
||||||
|
/// homeverzeichnis auf dem server
|
||||||
|
$home = "/home/cwsvjudo.de";
|
||||||
|
|
||||||
|
/// Basis(/Root)-Verzeichnis auf dem Server (für Dateizugriffe, insbesondere phpIncludes)
|
||||||
|
/// (ist eigentlich das serve verzeichnis, aka www-data)
|
||||||
|
$basePath = "/var/www/html";
|
||||||
|
|
||||||
|
/// Url zum Zugriff auf "shared Data" unter der Hauptadresse
|
||||||
|
$baseUrl = "http://" . $baseDomain;
|
||||||
|
/// Die kanonische Url dieses Verzeichnisses (unter welcher
|
||||||
|
/// Domainadresse die Seiten dieses Verzeichnisses bevorzugt zu
|
||||||
|
/// erreichen seien sollen, also entweder eine SubdomainUrl, oder die
|
||||||
|
/// baseUrl mit dem Verzeichnis angehängt)
|
||||||
|
/// Achtung: Gedacht für eine einheitliche Bezeichnung bei internem
|
||||||
|
/// Verlinken. Der canonicalLink im Header ist bei ampSeiten nicht die
|
||||||
|
/// eigene Adresse, sondern die (kanonische) Adresse der "normalen"
|
||||||
|
/// Version der Seite.
|
||||||
|
$canonicalBaseUrl =
|
||||||
|
"https://" . (empty($subDomain) ? "" : $subDomain . ".") . $baseDomain;
|
||||||
|
?>
|
||||||
@@ -6,6 +6,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: PHP.dockerfile
|
dockerfile: PHP.dockerfile
|
||||||
|
network: host
|
||||||
ports:
|
ports:
|
||||||
# this line maps your pc port to the container port
|
# this line maps your pc port to the container port
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
|
|||||||
@@ -8,4 +8,5 @@ set ftp:ssl-allow off
|
|||||||
# upload:
|
# upload:
|
||||||
mirror --verbose --continue --parallel=8 --reverse ./build/dist/heliohost /
|
mirror --verbose --continue --parallel=8 --reverse ./build/dist/heliohost /
|
||||||
put configs/heliohost/db.config.php -o /.local/db.config.php
|
put configs/heliohost/db.config.php -o /.local/db.config.php
|
||||||
|
put configs/heliohost/pages.config.inc.php -o httpdocs/pages/responsive/config.php
|
||||||
# exit
|
# exit
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,14 +5,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Material Icons';
|
font-family: "Material Icons";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/ressourcen/fonts/MaterialIcons-Regular.ttf);
|
src: url(/ressourcen/fonts/MaterialIcons-Regular.ttf);
|
||||||
}
|
}
|
||||||
|
|
||||||
.material-icons {
|
.material-icons {
|
||||||
font-family: 'Material Icons';
|
font-family: "Material Icons";
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
@@ -23,7 +23,31 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
word-wrap: normal;
|
word-wrap: normal;
|
||||||
direction: ltr;
|
direction: ltr;
|
||||||
font-feature-settings: 'liga';
|
font-feature-settings: "liga";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fallback */
|
||||||
|
@font-face {
|
||||||
|
font-family: "Material Symbols Outlined";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url(ressourcen/fonts/MaterialIconsOutlined-Regular.otf);
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-symbols-outlined {
|
||||||
|
font-family: "Material Symbols Outlined";
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: normal;
|
||||||
|
text-transform: none;
|
||||||
|
display: inline-block;
|
||||||
|
white-space: nowrap;
|
||||||
|
word-wrap: normal;
|
||||||
|
direction: ltr;
|
||||||
|
-moz-font-feature-settings: "liga";
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* responsive font sizes */
|
/* responsive font sizes */
|
||||||
|
|||||||
680
homepage/cwsvJudo/src/css/materialize/shiai-calendar.css
Normal file
680
homepage/cwsvJudo/src/css/materialize/shiai-calendar.css
Normal file
@@ -0,0 +1,680 @@
|
|||||||
|
.wkKalender {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
/* background-color: #FFAE00; */
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkKalender > thead,
|
||||||
|
.wkKalender > tfoot {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkKalender > tbody {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkKalender > tbody > tr:empty,
|
||||||
|
.wkKalender > tbody > tr > th:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr {
|
||||||
|
display: block;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-bottom: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkKalender th {
|
||||||
|
display: block;
|
||||||
|
background-color: #666;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkKalender > tbody > tr > td {
|
||||||
|
display: block;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td:nth-child(odd) {
|
||||||
|
/* background-color: #FF8100; */
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td[data-title]:before {
|
||||||
|
content: attr(data-title);
|
||||||
|
float: left;
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #757575;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kalenderDatum {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4)::after {
|
||||||
|
content: ", d. ";
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4) {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(3)::after {
|
||||||
|
content: ". ";
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(3) {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(2)::after {
|
||||||
|
content: " ";
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(2) {
|
||||||
|
order: 3;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(1) {
|
||||||
|
order: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1280px) {
|
||||||
|
.wkKalender > thead {
|
||||||
|
display: table-header-group;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr {
|
||||||
|
display: table-row;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td[data-title]:before {
|
||||||
|
display: none;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.wkKalender > tbody {
|
||||||
|
display: table-row-group;
|
||||||
|
}
|
||||||
|
.wkKalender > tfoot {
|
||||||
|
display: table-footer-group;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr {
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-bottom: 1.6rem;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td {
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: initial;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr:nth-child(odd) {
|
||||||
|
/* background-color: #FF8100; */
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td:nth-child(odd) {
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td[data-title]:before {
|
||||||
|
content: initial;
|
||||||
|
}
|
||||||
|
.wkKalender tr,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.wkKalender th {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kalenderDatum {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4)::after {
|
||||||
|
content: initial;
|
||||||
|
white-space: initial;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(3)::after {
|
||||||
|
content: ".";
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(2)::after {
|
||||||
|
content: initial;
|
||||||
|
white-space: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://codepen.io/denilsonsa/pen/Etrba */
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Styling rules, such as font and colors */
|
||||||
|
.date-as-calendar {
|
||||||
|
font-variant: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: "Helvetica", "Arial", sans-serif;
|
||||||
|
|
||||||
|
/* It seems vertical-align: baseline does not work correctly with display: inline-flex. */
|
||||||
|
vertical-align: top;
|
||||||
|
|
||||||
|
/* margin: 1ex; */
|
||||||
|
|
||||||
|
color: black;
|
||||||
|
background: white;
|
||||||
|
background: linear-gradient(to bottom right, #fff 0%, #eee 100%);
|
||||||
|
|
||||||
|
border: 1px solid #888;
|
||||||
|
border-radius: 3px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
box-shadow: 2px 2px 2px -2px black;
|
||||||
|
}
|
||||||
|
.date-as-calendar .weekday,
|
||||||
|
.date-as-calendar .day,
|
||||||
|
.date-as-calendar .month,
|
||||||
|
.date-as-calendar .year {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.date-as-calendar .month {
|
||||||
|
font-family: "Oswald", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
background: #b11;
|
||||||
|
background: linear-gradient(to bottom right, #d66 0%, #a00 100%);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using position: absolute and pixels. */
|
||||||
|
.position-pixels.date-as-calendar {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .weekday,
|
||||||
|
.position-pixels.date-as-calendar .day,
|
||||||
|
.position-pixels.date-as-calendar .month,
|
||||||
|
.position-pixels.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .month {
|
||||||
|
top: 0px;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .weekday {
|
||||||
|
top: 16px;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .day {
|
||||||
|
top: 26px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .year {
|
||||||
|
top: 50px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using position: absolute and relative dimensions using em. */
|
||||||
|
.position-em.date-as-calendar {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
width: 4em;
|
||||||
|
height: 4em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .weekday,
|
||||||
|
.position-em.date-as-calendar .day,
|
||||||
|
.position-em.date-as-calendar .month,
|
||||||
|
.position-em.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .month {
|
||||||
|
top: 0px;
|
||||||
|
font-size: 0.75em;
|
||||||
|
padding: 0.1em 0;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .weekday {
|
||||||
|
top: 1.6em;
|
||||||
|
font-size: 0.6125em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .day {
|
||||||
|
top: 1.1em;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .year {
|
||||||
|
bottom: 0px;
|
||||||
|
font-size: 0.8775em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using display: inline-flex and relative dimensions using em. */
|
||||||
|
.inline-flex.date-as-calendar {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
width: 4em;
|
||||||
|
height: 4em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .weekday,
|
||||||
|
.inline-flex.date-as-calendar .day,
|
||||||
|
.inline-flex.date-as-calendar .month,
|
||||||
|
.inline-flex.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .month {
|
||||||
|
order: 1;
|
||||||
|
font-size: 0.75em;
|
||||||
|
padding: 0.1em 0;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .weekday {
|
||||||
|
order: 2;
|
||||||
|
font-size: 0.6125em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .day {
|
||||||
|
order: 3;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .year {
|
||||||
|
order: 4;
|
||||||
|
font-size: 0.8775em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Multiple sizes. */
|
||||||
|
.date-as-calendar.size0_5x {
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size0_75x {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1x {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_25x {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_5x {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_75x {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size2x {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size3x {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*abgeschaut*/
|
||||||
|
.shadow-z-1 {
|
||||||
|
box-shadow:
|
||||||
|
0 1px 3px 0 rgba(0, 0, 0, 0.12),
|
||||||
|
0 1px 2px 0 rgba(0, 0, 0, 0.24);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mit Text overlay-tes Bild
|
||||||
|
*/
|
||||||
|
|
||||||
|
.textoverlayedImage {
|
||||||
|
position: relative;
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
.textoverlayedImage > img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.textoverlayedImage > div {
|
||||||
|
z-index: 99;
|
||||||
|
width: fit-content;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
.textoverlayedImage > div > p {
|
||||||
|
text-align: center;
|
||||||
|
color: white;
|
||||||
|
font-weight: lighter;
|
||||||
|
line-height: 2;
|
||||||
|
padding: 0 10%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Die Galerie der Galerien in der wkInfoBox
|
||||||
|
*/
|
||||||
|
.wkBoxMediaGallery {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.wkBoxMediaGallery > * {
|
||||||
|
flex-basis: 50%;
|
||||||
|
padding: 5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tooltipps
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Tooltip container */
|
||||||
|
.tooltip {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tooltip text */
|
||||||
|
.tooltip .tooltiptext {
|
||||||
|
visibility: hidden;
|
||||||
|
width: 120px;
|
||||||
|
background-color: black;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
padding: 5px 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
/* Position the tooltip text - see examples below! */
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show the tooltip text when you mouse over the tooltip container */
|
||||||
|
.tooltip:hover .tooltiptext {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkMonthBar {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: wrap;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wkMonthBar > a {
|
||||||
|
text-align: center;
|
||||||
|
width: 30%;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.25em 0.25em 0.25em 0.25em;
|
||||||
|
margin: 0.25em 0.25em 0.25em 0.25em;
|
||||||
|
box-shadow: 0.1em 0.1em 0.05em grey;
|
||||||
|
/* background-color: #FF8100; */
|
||||||
|
border-radius: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
.wkMonthBar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.wkKalender > thead {
|
||||||
|
display: table-header-group;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr {
|
||||||
|
display: table-row;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
/*qrCode*/
|
||||||
|
.wkKalender > tbody > tr > td > img {
|
||||||
|
width: 1cm;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td:nth-of-type(5) > a {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td[data-title]:before {
|
||||||
|
display: none;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.wkKalender > tbody {
|
||||||
|
display: table-row-group;
|
||||||
|
}
|
||||||
|
.wkKalender > tfoot {
|
||||||
|
display: table-footer-group;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr {
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-bottom: 1.6rem;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td {
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: initial;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr:nth-child(odd) {
|
||||||
|
/* background-color: #FF8100; */
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td:nth-child(odd) {
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
.wkKalender > tbody > tr > td[data-title]:before {
|
||||||
|
content: initial;
|
||||||
|
}
|
||||||
|
.wkKalender tr,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.wkKalender th {
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kalenderDatum {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4)::after {
|
||||||
|
content: initial;
|
||||||
|
white-space: initial;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(4) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(3)::after {
|
||||||
|
content: ".";
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.kalenderDatum > span:nth-child(2)::after {
|
||||||
|
content: initial;
|
||||||
|
white-space: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://codepen.io/denilsonsa/pen/Etrba */
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Styling rules, such as font and colors */
|
||||||
|
.date-as-calendar {
|
||||||
|
font-variant: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: "Helvetica", "Arial", sans-serif;
|
||||||
|
|
||||||
|
/* It seems vertical-align: baseline does not work correctly with display: inline-flex. */
|
||||||
|
vertical-align: top;
|
||||||
|
|
||||||
|
/* margin: 1ex; */
|
||||||
|
|
||||||
|
color: black;
|
||||||
|
background: white;
|
||||||
|
background: linear-gradient(to bottom right, #fff 0%, #eee 100%);
|
||||||
|
|
||||||
|
border: 1px solid #888;
|
||||||
|
border-radius: 3px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
box-shadow: 2px 2px 2px -2px black;
|
||||||
|
}
|
||||||
|
.date-as-calendar .weekday,
|
||||||
|
.date-as-calendar .day,
|
||||||
|
.date-as-calendar .month,
|
||||||
|
.date-as-calendar .year {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.date-as-calendar .month {
|
||||||
|
font-family: "Oswald", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
background: #b11;
|
||||||
|
background: linear-gradient(to bottom right, #d66 0%, #a00 100%);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using position: absolute and pixels. */
|
||||||
|
.position-pixels.date-as-calendar {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .weekday,
|
||||||
|
.position-pixels.date-as-calendar .day,
|
||||||
|
.position-pixels.date-as-calendar .month,
|
||||||
|
.position-pixels.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .month {
|
||||||
|
top: 0px;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .weekday {
|
||||||
|
top: 16px;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .day {
|
||||||
|
top: 26px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.position-pixels.date-as-calendar .year {
|
||||||
|
top: 50px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using position: absolute and relative dimensions using em. */
|
||||||
|
.position-em.date-as-calendar {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
width: 4em;
|
||||||
|
height: 4em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .weekday,
|
||||||
|
.position-em.date-as-calendar .day,
|
||||||
|
.position-em.date-as-calendar .month,
|
||||||
|
.position-em.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .month {
|
||||||
|
top: 0px;
|
||||||
|
font-size: 0.75em;
|
||||||
|
padding: 0.1em 0;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .weekday {
|
||||||
|
top: 1.6em;
|
||||||
|
font-size: 0.6125em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .day {
|
||||||
|
top: 1.1em;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.position-em.date-as-calendar .year {
|
||||||
|
bottom: 0px;
|
||||||
|
font-size: 0.8775em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Layout rules using display: inline-flex and relative dimensions using em. */
|
||||||
|
.inline-flex.date-as-calendar {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
width: 4em;
|
||||||
|
height: 4em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .weekday,
|
||||||
|
.inline-flex.date-as-calendar .day,
|
||||||
|
.inline-flex.date-as-calendar .month,
|
||||||
|
.inline-flex.date-as-calendar .year {
|
||||||
|
display: block;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .month {
|
||||||
|
order: 1;
|
||||||
|
font-size: 0.75em;
|
||||||
|
padding: 0.1em 0;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .weekday {
|
||||||
|
order: 2;
|
||||||
|
font-size: 0.6125em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .day {
|
||||||
|
order: 3;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.inline-flex.date-as-calendar .year {
|
||||||
|
order: 4;
|
||||||
|
font-size: 0.8775em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/* Multiple sizes. */
|
||||||
|
.date-as-calendar.size0_5x {
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size0_75x {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1x {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_25x {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_5x {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size1_75x {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size2x {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
.date-as-calendar.size3x {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
homepage/cwsvJudo/src/favIcons/android-chrome-512x512.png
Normal file
BIN
homepage/cwsvJudo/src/favIcons/android-chrome-512x512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
@@ -1,3 +1,19 @@
|
|||||||
|
## EXPIRES CACHING ##
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive On
|
||||||
|
ExpiresByType image/jpg "access 1 year"
|
||||||
|
ExpiresByType image/jpeg "access 1 year"
|
||||||
|
ExpiresByType image/gif "access 1 year"
|
||||||
|
ExpiresByType image/png "access 1 year"
|
||||||
|
ExpiresByType text/css "access 1 month"
|
||||||
|
ExpiresByType text/html "access 1 month"
|
||||||
|
ExpiresByType application/pdf "access 1 month"
|
||||||
|
ExpiresByType text/x-javascript "access 1 month"
|
||||||
|
ExpiresByType image/x-icon "access 1 year"
|
||||||
|
ExpiresDefault "access 1 month"
|
||||||
|
</IfModule>
|
||||||
|
## EXPIRES CACHING ##
|
||||||
|
|
||||||
# Auf die Fontdatei wird von der Subdomain aus zugegriffen
|
# Auf die Fontdatei wird von der Subdomain aus zugegriffen
|
||||||
# - das gesamte ressourcenVerzeichnis wird auf die Maindomain umgeleitet
|
# - das gesamte ressourcenVerzeichnis wird auf die Maindomain umgeleitet
|
||||||
# - die mainDomain erlaubt aber anscheinend nicht, das fremde domains bei ihr anfragen startet
|
# - die mainDomain erlaubt aber anscheinend nicht, das fremde domains bei ihr anfragen startet
|
||||||
@@ -12,6 +28,10 @@
|
|||||||
# Url-Rewriting aktivieren
|
# Url-Rewriting aktivieren
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
|
|
||||||
|
# consequently using the non-www version
|
||||||
|
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
|
||||||
|
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
|
||||||
|
|
||||||
# if the requested resource doesn't exist as ...
|
# if the requested resource doesn't exist as ...
|
||||||
# - file or ...
|
# - file or ...
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
|||||||
7
homepage/cwsvJudo/src/page_data/404/404.md
Normal file
7
homepage/cwsvJudo/src/page_data/404/404.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# 404
|
||||||
|
|
||||||
|
Die gesuchte Seite wurde nicht gefunden!
|
||||||
|
|
||||||
|
Vielleicht kann die [Startseite][startseite] weiterhelfen.
|
||||||
|
|
||||||
|
[startseite]: /
|
||||||
24
homepage/cwsvJudo/src/page_data/404/meta.json
Normal file
24
homepage/cwsvJudo/src/page_data/404/meta.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"head": {
|
||||||
|
"meta": {
|
||||||
|
"title": "404",
|
||||||
|
"description": "Fehlerseite"
|
||||||
|
},
|
||||||
|
"navTargets": [
|
||||||
|
{
|
||||||
|
"url": "training",
|
||||||
|
"caption": "Training",
|
||||||
|
"title": "Trainingszeiten und -orte der Judoka des Chemnitzer WSV"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"main": {
|
||||||
|
"wallpapers": {
|
||||||
|
"root_path": "/ressourcen/graphiken/wallpapers",
|
||||||
|
"images": ["osae-komi", "nage", "kata"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"sections": [["404.md"]]
|
||||||
|
},
|
||||||
|
"footer": {}
|
||||||
|
}
|
||||||
@@ -10,6 +10,12 @@ $promos = [
|
|||||||
"caption"=> "Dojo",
|
"caption"=> "Dojo",
|
||||||
"target"=> "/training#karten-der-trainingsstätten",
|
"target"=> "/training#karten-der-trainingsstätten",
|
||||||
"text"=> "Wegbeschreibung zu unserem Dojo"
|
"text"=> "Wegbeschreibung zu unserem Dojo"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"icon"=> "calendar_today",
|
||||||
|
"caption"=> "Kalender",
|
||||||
|
"target"=> "/kalender",
|
||||||
|
"text"=> "Kalender mit anstehenden Wettkämpfen"
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
return CwsvJudo\Promo\promos_html($promos);
|
return CwsvJudo\Promo\promos_html($promos);
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{
|
{
|
||||||
"head": {
|
"head": {
|
||||||
|
"meta": {
|
||||||
|
"title": "Wettkampfkalender der Judoka des Chemnitzer Freizeit- und Wohngebiets­sportvereines e. V.",
|
||||||
|
"description": "Ein Kalender mit Judo-Wettkampfterminen zur Übersicht"
|
||||||
|
},
|
||||||
"navTargets": [
|
"navTargets": [
|
||||||
{
|
{
|
||||||
"url": "training",
|
"url": "training",
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* home directory on the server
|
|
||||||
* - meaning the users home directory (aka ~) in the environment, not the directory served via http
|
|
||||||
*/
|
|
||||||
$home = "/home/cwsvjudo.de";
|
|
||||||
@@ -1,9 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<?php
|
<?php
|
||||||
require_once "bootstrap.php";
|
require_once "bootstrap.php";
|
||||||
|
|
||||||
$page = $_GET["page"] ?? "index";
|
$page = $_GET["page"] ?? "index";
|
||||||
|
|
||||||
|
if (!is_dir(filename: "{$home}/pages/{$page}")) {
|
||||||
|
header(header: "HTTP/1.0 404 Not Found");
|
||||||
|
$page = "404";
|
||||||
|
}
|
||||||
|
|
||||||
$meta = json_decode(
|
$meta = json_decode(
|
||||||
json: file_get_contents(filename: $home . "/pages/" . $page . "/meta.json"),
|
json: file_get_contents(filename: $home . "/pages/" . $page . "/meta.json"),
|
||||||
associative: true
|
associative: true
|
||||||
@@ -106,53 +110,43 @@ class Main
|
|||||||
$wallpaper_root_path = $data["wallpapers"]["root_path"];
|
$wallpaper_root_path = $data["wallpapers"]["root_path"];
|
||||||
return new Main(
|
return new Main(
|
||||||
sections: array_map(
|
sections: array_map(
|
||||||
callback: function ($file) use ($root_path): Section {
|
callback: fn($file) => Section::create(
|
||||||
return Section::create(
|
file_names: $file,
|
||||||
file_names: $file,
|
root_directory: $root_path
|
||||||
root_directory: $root_path
|
),
|
||||||
);
|
|
||||||
},
|
|
||||||
array: $data["sections"]
|
array: $data["sections"]
|
||||||
),
|
),
|
||||||
wallpapers: array_map(function ($name) use (
|
wallpapers: array_map(
|
||||||
$wallpaper_root_path
|
fn($name) => Wallpaper::create($name, $wallpaper_root_path),
|
||||||
): Wallpaper {
|
array: $data["wallpapers"]["images"]
|
||||||
return Wallpaper::create($name, $wallpaper_root_path);
|
)
|
||||||
}, array: $data["wallpapers"]["images"])
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Wallpaper
|
class Wallpaper
|
||||||
{
|
{
|
||||||
private string $src;
|
private string $src_dir;
|
||||||
private string $data_src;
|
|
||||||
|
|
||||||
public function __construct(string $src, string $data_src)
|
public function __construct(string $src_dir)
|
||||||
{
|
{
|
||||||
$this->src = $src;
|
$this->src_dir = $src_dir;
|
||||||
$this->data_src = $data_src;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_html()
|
public function get_html()
|
||||||
{
|
{
|
||||||
return "<img" .
|
$format = "avif"; //"webp";
|
||||||
' class="lazyload" ' .
|
$widths = [1200, 600, 992, 1200, 2400];
|
||||||
' src="' .
|
$src_sets = implode(
|
||||||
$this->src .
|
", ",
|
||||||
'" ' .
|
array_map(fn($w) => "{$this->src_dir}/1200.{$format}", $widths)
|
||||||
' data-src="' .
|
);
|
||||||
$this->data_src .
|
// return "<img class=\"lazyload\" src=\"{$this->src}\" data-src=\"{$this->data_src}\" alt=\"Wallpaper\">";
|
||||||
'" ' .
|
return "<img data-sizes=\"auto\" src=\"{$this->src_dir}/mosaic.svg\" data-src=\"{$this->src_dir}/1200.{$format}\" data-srcset=\"{$src_sets}\" class=\"lazyload\" alt=\"Wallpaper\">";
|
||||||
' alt="Wallpaper"' .
|
|
||||||
">";
|
|
||||||
}
|
}
|
||||||
public static function create(string $name, string $root_path)
|
public static function create(string $name, string $root_path)
|
||||||
{
|
{
|
||||||
return new Wallpaper(
|
return new Wallpaper(src_dir: "{$root_path}/{$name}");
|
||||||
src: $root_path . "/" . $name . ".svg",
|
|
||||||
data_src: $root_path . "/" . $name . ".jpg"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +178,7 @@ class Newsboard
|
|||||||
"outCharset" => Newsboard::$config["outCharset"],
|
"outCharset" => Newsboard::$config["outCharset"],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
if (!is_null($entries)) {
|
if ($entries !== null) {
|
||||||
foreach ($entries as $entryData) {
|
foreach ($entries as $entryData) {
|
||||||
$entry = new \CwsvJudo\News\Entry($entryData);
|
$entry = new \CwsvJudo\News\Entry($entryData);
|
||||||
$html .=
|
$html .=
|
||||||
@@ -237,6 +231,7 @@ function mainNavTargets($mainNav)
|
|||||||
echo "</ul>";
|
echo "</ul>";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
@@ -244,12 +239,17 @@ function mainNavTargets($mainNav)
|
|||||||
<!-- - materialize Framework -->
|
<!-- - materialize Framework -->
|
||||||
<link type="text/css" rel="stylesheet" href="/ressourcen/css/materialize.min.css" media="screen">
|
<link type="text/css" rel="stylesheet" href="/ressourcen/css/materialize.min.css" media="screen">
|
||||||
<!-- - cwsvJudo adjustments -->
|
<!-- - cwsvJudo adjustments -->
|
||||||
|
<!---
|
||||||
<link type="text/css" rel="stylesheet" href="/ressourcen/css/cwsvJudo.css">
|
<link type="text/css" rel="stylesheet" href="/ressourcen/css/cwsvJudo.css">
|
||||||
|
--->
|
||||||
|
<style>
|
||||||
|
<?php include_once "{$basePath}/ressourcen/css/cwsvJudo.css"; ?>
|
||||||
|
</style>
|
||||||
|
|
||||||
<!--Let browser know website is optimized for mobile-->
|
<!--Let browser know website is optimized for mobile-->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<title>Judo im Chemnitzer WSV - Kinder- und Erwachsenentraining</title>
|
<title><?php echo $meta["head"]["meta"]["title"]; ?></title>
|
||||||
|
|
||||||
<?php require_once "{$home}/shared/favicon.html.inc"; ?>
|
<?php require_once "{$home}/shared/favicon.html.inc"; ?>
|
||||||
<meta name="description" content="<?php echo $meta["head"]["meta"][
|
<meta name="description" content="<?php echo $meta["head"]["meta"][
|
||||||
|
|||||||
@@ -2,6 +2,32 @@
|
|||||||
|
|
||||||
use function CwsvJudo\News\filter_integer_range;
|
use function CwsvJudo\News\filter_integer_range;
|
||||||
|
|
||||||
|
function new_strftime($format, $time)
|
||||||
|
{
|
||||||
|
$formatter = new IntlDateFormatter(
|
||||||
|
"de_DE",
|
||||||
|
IntlDateFormatter::NONE,
|
||||||
|
IntlDateFormatter::NONE
|
||||||
|
);
|
||||||
|
$formatter->setPattern($format);
|
||||||
|
return $formatter->format($time);
|
||||||
|
}
|
||||||
|
|
||||||
|
setlocale(LC_ALL, "de_DE@euro", "de_DE", "de", "ge");
|
||||||
|
function toAscii($str, $replace = [], $delimiter = "-")
|
||||||
|
{
|
||||||
|
if (!empty($replace)) {
|
||||||
|
$str = str_replace((array) $replace, " ", $str);
|
||||||
|
}
|
||||||
|
|
||||||
|
$clean = iconv("UTF-8", "ASCII//TRANSLIT", $str);
|
||||||
|
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", "", $clean);
|
||||||
|
$clean = strtolower(trim($clean, "-"));
|
||||||
|
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
|
||||||
|
|
||||||
|
return $clean;
|
||||||
|
}
|
||||||
|
|
||||||
class Kalender
|
class Kalender
|
||||||
{
|
{
|
||||||
private static array $config;
|
private static array $config;
|
||||||
@@ -17,6 +43,205 @@ class Kalender
|
|||||||
password: $password
|
password: $password
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Aus einer Liste von Wettkämpfen den htmlCode der Wettkampftabelle bereit stellen
|
||||||
|
private static function wkList2htmlWkTable(
|
||||||
|
$aWkList,
|
||||||
|
array $someOptions = []
|
||||||
|
) {
|
||||||
|
setlocale(LC_ALL, "de_DE.utf8");
|
||||||
|
|
||||||
|
// @todo bring back
|
||||||
|
// require_once $GLOBALS["basePath"] .
|
||||||
|
// "/ressourcen/phpLib/phpqrcode/qrlib.php";
|
||||||
|
|
||||||
|
if (empty($aWkList)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
$htmlWkTableString = "";
|
||||||
|
|
||||||
|
$htmlWkTableString .=
|
||||||
|
"<table class=\"wkKalender\">" .
|
||||||
|
"<thead>" .
|
||||||
|
"<tr>" .
|
||||||
|
"<th>Datum</th>" .
|
||||||
|
"<th>Veranstaltung</th>" .
|
||||||
|
"<th>Ort</th>" .
|
||||||
|
"<th>Altersklasse(n)</th>" .
|
||||||
|
// "<th>iCal</th>" .
|
||||||
|
"</tr>" .
|
||||||
|
"</thead>" .
|
||||||
|
"<tbody>";
|
||||||
|
|
||||||
|
$lastMonthName = "";
|
||||||
|
|
||||||
|
foreach ($aWkList as $wk) {
|
||||||
|
// Zeichensatzkonvertierung
|
||||||
|
array_walk($wk, function (&$value, $key) {
|
||||||
|
$value = iconv("ISO-8859-1", "UTF-8", $value);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (
|
||||||
|
$lastMonthName !=
|
||||||
|
new_strftime("MMMM yyyy", strtotime($wk["Datum"]))
|
||||||
|
) {
|
||||||
|
$lastMonthName = new_strftime(
|
||||||
|
"MMMM yyyy",
|
||||||
|
strtotime($wk["Datum"])
|
||||||
|
);
|
||||||
|
$htmlWkTableString .=
|
||||||
|
"<tr id=\"" .
|
||||||
|
toAscii(new_strftime("MM yyyy", strtotime($wk["Datum"]))) .
|
||||||
|
"\"><th colspan=\"5\" >" .
|
||||||
|
$lastMonthName .
|
||||||
|
"</th></tr><tr class=\"displayNone\" ><th colspan=\"5\"></th></tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// @todo reactivate strctured data
|
||||||
|
// $wkJsonSd = wkArray2jsonSdEvent($wk);
|
||||||
|
|
||||||
|
// schlechter Hack solange die Browser nicht von selbst ordentlich trennen
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"meisterschaft",
|
||||||
|
"­meisterschaft",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"turnier",
|
||||||
|
"­turnier",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"pokal",
|
||||||
|
"­pokal",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"randori",
|
||||||
|
"­randori",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"spiele",
|
||||||
|
"­spiele",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
$wk["Veranstaltung"] = str_replace(
|
||||||
|
"mannschaft",
|
||||||
|
"mann­schaft",
|
||||||
|
$wk["Veranstaltung"]
|
||||||
|
);
|
||||||
|
|
||||||
|
$htmlWkTableString .=
|
||||||
|
// "<a href=\"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."-am-".$wk['Datum']."\"><tr>".
|
||||||
|
"<tr>" .
|
||||||
|
// "<script type=\"application/ld+json\">" .
|
||||||
|
// $wkJsonSd .
|
||||||
|
// "</script>" .
|
||||||
|
"<td data-title=\"Datum\" class=\"noWrap\">" .
|
||||||
|
"<a href=\"{https://cwsvjudo.de/kalender/" .
|
||||||
|
$wk["lfdeNr"] .
|
||||||
|
"/" .
|
||||||
|
toAscii(html_entity_decode($wk["Veranstaltung"])) .
|
||||||
|
"-am-" .
|
||||||
|
$wk["Datum"] .
|
||||||
|
"\">" .
|
||||||
|
"<time class=\"kalenderDatum\" datetime=" .
|
||||||
|
$wk["Datum"] .
|
||||||
|
">" .
|
||||||
|
"<span>" .
|
||||||
|
new_strftime("yyyy", strtotime($wk["Datum"])) .
|
||||||
|
"</span>" .
|
||||||
|
"<span>" .
|
||||||
|
new_strftime("MMMM", strtotime($wk["Datum"])) .
|
||||||
|
"</span>" .
|
||||||
|
"<span>" .
|
||||||
|
new_strftime("dd", strtotime($wk["Datum"])) .
|
||||||
|
"</span>" .
|
||||||
|
"<span>" .
|
||||||
|
new_strftime("EEEE", strtotime($wk["Datum"])) .
|
||||||
|
"</span>" .
|
||||||
|
"</time>" .
|
||||||
|
"</a>" .
|
||||||
|
"</td>" .
|
||||||
|
"<td data-title=\"Ausschreibung\" class=\"hyphenate\">" .
|
||||||
|
"<a title=\"Ausschreibung " .
|
||||||
|
$wk["Veranstaltung"] .
|
||||||
|
"\" href=\"http://cwsvjudo.bplaced.net" .
|
||||||
|
$wk["Ausschreibung"] .
|
||||||
|
"\"><span property=\"name\">" .
|
||||||
|
$wk["Veranstaltung"] .
|
||||||
|
"</span></a>" .
|
||||||
|
"</td>" .
|
||||||
|
"<td data-title=\"Wegbeschreibung\">" .
|
||||||
|
"<a title=\"Wegbeschreibung " .
|
||||||
|
$wk["Veranstaltung"] .
|
||||||
|
"\" href=\"" .
|
||||||
|
$wk["Routenplaner"] .
|
||||||
|
"\"><span>" .
|
||||||
|
$wk["Ort"] .
|
||||||
|
"</span></a>" .
|
||||||
|
"</td>" .
|
||||||
|
"<td data-title=\"Altersklassen\" class=\"tooltip\">" .
|
||||||
|
$wk["Altersklassen"] .
|
||||||
|
// @todo reactivate
|
||||||
|
// "<span class=\"tooltiptext\">" .
|
||||||
|
// json_encode(akListString2jgArray($wk["Altersklassen"])) .
|
||||||
|
// "</span>" .
|
||||||
|
"</td>" .
|
||||||
|
// "<td data-title=\"iCal\">" .
|
||||||
|
// "<a title=\"Termin für " .
|
||||||
|
// $wk["Veranstaltung"] .
|
||||||
|
// " in Kalender übernehmen\" href=\"/ressourcen/phpLib/calendar.php?wkID=" .
|
||||||
|
// $wk["lfdeNr"] .
|
||||||
|
// "\">iCal</a>" .
|
||||||
|
// "<img class=\"print-only\" alt=\"http://cwsvjudo.bplaced.net/wkKalender/" .
|
||||||
|
// $wk["lfdeNr"] .
|
||||||
|
// "/" .
|
||||||
|
// toAscii(html_entity_decode($wk["Veranstaltung"])) .
|
||||||
|
// "-am-" .
|
||||||
|
// $wk["Datum"] .
|
||||||
|
// "\" height=\"111\" width=\"111\" src=\"http://cwsvjudo.bplaced.net/pages/responsive/wkQrCode.php?id=" .
|
||||||
|
// $wk["lfdeNr"] .
|
||||||
|
// "\" />" .
|
||||||
|
"</td>" .
|
||||||
|
"</tr>\n";
|
||||||
|
}
|
||||||
|
$htmlWkTableString .=
|
||||||
|
"</tbody>" .
|
||||||
|
"<tfoot>" .
|
||||||
|
"<tr>" .
|
||||||
|
"<th>Datum</th>" .
|
||||||
|
"<th>Veranstaltung</th>" .
|
||||||
|
"<th>Ort</th>" .
|
||||||
|
"<th>Altersklasse(n)</th>" .
|
||||||
|
// "<th>iCal</th>" .
|
||||||
|
"</tr>" .
|
||||||
|
"</tfoot>" .
|
||||||
|
"</table>";
|
||||||
|
|
||||||
|
// @todo evaluate if it should be reactivate
|
||||||
|
// Für den Fall einer ampSeite müssen die imgTags angepasst werden
|
||||||
|
// if (check_for_amp_site()) {
|
||||||
|
// $htmlWkTableString = str_replace(
|
||||||
|
// "<img",
|
||||||
|
// // width und height sind gesetzt
|
||||||
|
// // @todo: es sollte besser gehen!
|
||||||
|
// // "<amp-img layout=\"responsive\" width=\"".($aNews['promoImg']['width']?$aNews['promoImg']['width']:"200")."\" height=\"".($aNews['promoImg']['height']?$aNews['promoImg']['height']:"133")."\"",
|
||||||
|
// "<amp-img layout=\"responsive\" ",
|
||||||
|
// $htmlWkTableString
|
||||||
|
// );
|
||||||
|
// $htmlWkTableString = str_replace(
|
||||||
|
// "/>",
|
||||||
|
// "></amp-img>",
|
||||||
|
// $htmlWkTableString
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
|
return $htmlWkTableString;
|
||||||
|
}
|
||||||
|
|
||||||
public static function get_html()
|
public static function get_html()
|
||||||
{
|
{
|
||||||
$db_connection = Kalender::$dbHandle->getDbConnection();
|
$db_connection = Kalender::$dbHandle->getDbConnection();
|
||||||
@@ -71,7 +296,7 @@ class Kalender
|
|||||||
"<li>Datum: <time datetime=" .
|
"<li>Datum: <time datetime=" .
|
||||||
$wk["Datum"] .
|
$wk["Datum"] .
|
||||||
">" .
|
">" .
|
||||||
strftime("%a, %d. %B %Y", strtotime($wk["Datum"])) .
|
new_strftime("EEE, d. MMMM yyyy", strtotime($wk["Datum"])) .
|
||||||
"</time></li>" .
|
"</time></li>" .
|
||||||
"<li>Altersklassen: " .
|
"<li>Altersklassen: " .
|
||||||
$wk["Altersklassen"] .
|
$wk["Altersklassen"] .
|
||||||
@@ -193,11 +418,11 @@ class Kalender
|
|||||||
$siteData["mainContent"] .= htmlWkMonthBar($ergebnis);
|
$siteData["mainContent"] .= htmlWkMonthBar($ergebnis);
|
||||||
|
|
||||||
$ergebnis = $db_connection->query($query);
|
$ergebnis = $db_connection->query($query);
|
||||||
$siteData["mainContent"] .= wkList2htmlWkTable($ergebnis);
|
$siteData["mainContent"] .= Kalender::wkList2htmlWkTable($ergebnis);
|
||||||
|
|
||||||
$siteData["mainContent"] .=
|
$siteData["mainContent"] .=
|
||||||
"<div class=\"fontSizeXxSmall\">Alle Angaben ohne Gewähr! Fehler und Ergänzungen dürfen gerne gemeldet werden.</div>" .
|
"<div class=\"fontSizeXxSmall\">Alle Angaben ohne Gewähr!</div>";
|
||||||
"<a href=\"/downloads/Ausschreibungen/\">Link zum Archiv mit allen Ausschreibungen</a>.";
|
// "<a href=\"/downloads/Ausschreibungen/\">Link zum Archiv mit allen Ausschreibungen</a>.";
|
||||||
/* @todo: Wettkampfselektor wieder ergänzen
|
/* @todo: Wettkampfselektor wieder ergänzen
|
||||||
<hr />
|
<hr />
|
||||||
<div class="wkSelektor">
|
<div class="wkSelektor">
|
||||||
@@ -230,9 +455,7 @@ class Kalender
|
|||||||
// die();
|
// die();
|
||||||
}
|
}
|
||||||
|
|
||||||
//var_dump( $siteData['errors'] );
|
return $siteData["mainContent"];
|
||||||
echo $siteData["mainContent"];
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,10 +469,12 @@ function htmlWkMonthBar($aWkList)
|
|||||||
|
|
||||||
$lastMonthName = "";
|
$lastMonthName = "";
|
||||||
foreach ($aWkList as $wk) {
|
foreach ($aWkList as $wk) {
|
||||||
if ($lastMonthName != strftime("%b %Y", strtotime($wk["Datum"]))) {
|
if (
|
||||||
$lastMonthName = strftime("%b %Y", strtotime($wk["Datum"]));
|
$lastMonthName != new_strftime("MMM yyyy", strtotime($wk["Datum"]))
|
||||||
|
) {
|
||||||
|
$lastMonthName = new_strftime("MMM yyyy", strtotime($wk["Datum"]));
|
||||||
$wkMonthBar .=
|
$wkMonthBar .=
|
||||||
"<a href=\"#" .
|
"<a class=\"btn filled rounded\" href=\"#" .
|
||||||
toAscii($lastMonthName) .
|
toAscii($lastMonthName) .
|
||||||
"\">" .
|
"\">" .
|
||||||
$lastMonthName .
|
$lastMonthName .
|
||||||
|
|||||||
@@ -2,35 +2,35 @@
|
|||||||
rel="apple-touch-icon"
|
rel="apple-touch-icon"
|
||||||
sizes="180x180"
|
sizes="180x180"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/apple-touch-icon.png"
|
href="/ressourcen/graphiken/logos/favIcons/apple-touch-icon.png"
|
||||||
/>
|
>
|
||||||
<link
|
<link
|
||||||
rel="icon"
|
rel="icon"
|
||||||
type="image/png"
|
type="image/png"
|
||||||
sizes="32x32"
|
sizes="32x32"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/favicon-32x32.png"
|
href="/ressourcen/graphiken/logos/favIcons/favicon-32x32.png"
|
||||||
/>
|
>
|
||||||
<link
|
<link
|
||||||
rel="icon"
|
rel="icon"
|
||||||
type="image/png"
|
type="image/png"
|
||||||
sizes="16x16"
|
sizes="16x16"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/favicon-16x16.png"
|
href="/ressourcen/graphiken/logos/favIcons/favicon-16x16.png"
|
||||||
/>
|
>
|
||||||
<link
|
<link
|
||||||
type="application/manifest+json"
|
type="application/manifest+json"
|
||||||
rel="manifest"
|
rel="manifest"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/site.webmanifest"
|
href="/ressourcen/graphiken/logos/favIcons/site.webmanifest"
|
||||||
/>
|
>
|
||||||
<link
|
<link
|
||||||
rel="mask-icon"
|
rel="mask-icon"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/safari-pinned-tab.svg"
|
href="/ressourcen/graphiken/logos/favIcons/safari-pinned-tab.svg"
|
||||||
color="#ff8100"
|
color="#ff8100"
|
||||||
/>
|
>
|
||||||
<link
|
<link
|
||||||
rel="shortcut icon"
|
rel="shortcut icon"
|
||||||
href="/ressourcen/graphiken/logos/favIcons/favicon.ico"
|
href="/ressourcen/graphiken/logos/favIcons/favicon.ico"
|
||||||
/>
|
>
|
||||||
<meta
|
<meta
|
||||||
name="msapplication-config"
|
name="msapplication-config"
|
||||||
content="/ressourcen/graphiken/logos/favIcons/browserconfig.xml"
|
content="/ressourcen/graphiken/logos/favIcons/browserconfig.xml"
|
||||||
/>
|
>
|
||||||
<meta name="theme-color" content="#ff8100" />
|
<meta name="theme-color" content="#003450" >
|
||||||
|
|||||||
Reference in New Issue
Block a user