diff --git a/.htaccess b/.htaccess index a82901db..2eb28b74 100644 --- a/.htaccess +++ b/.htaccess @@ -1,25 +1,76 @@ -Allow from All -Satisfy Any - -# – -------------------------------------------------------------- -# Belässt die Dateien, die sich selten oder gar nicht ändern, für eine bestimmte Zeit im Browser-Cache -# – -------------------------------------------------------------- -## EXPIRES CACHING ## - -ExpiresActive On -ExpiresByType text/css "access plus 0 seconds" -ExpiresByType text/html "access plus 0 seconds" -ExpiresByType text/x-javascript "access plus 0 seconds" -ExpiresByType application/json "access plus 0 seconds" - -ExpiresDefault "access plus 0 seconds" +# ============================================================ +# 🌐 Basis-Zugriffskontrolle +# ============================================================ + + Require all granted + + + Allow from all + Satisfy any -## EXPIRES CACHING ## +# ============================================================ +# 🧭 CACHING & BROWSER PERFORMANCE +# ============================================================ + + ExpiresActive On -## PHP VALUES ## + # 📄 Standard-Gültigkeit: 1 Monat + ExpiresDefault "access plus 1 month" + + # 🖼️ Bilder, Fonts, Medien (selten geändert) + ExpiresByType image/webp "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/gif "access plus 1 year" + ExpiresByType font/woff2 "access plus 1 year" + ExpiresByType font/woff "access plus 1 year" + + # 🧩 CSS, JS – wird bei Änderungen automatisch neu geladen + ExpiresByType text/css "access plus 0 days" + ExpiresByType application/javascript "access plus 0 days" + + # 📝 HTML – nie cachen, damit aktuelle Inhalte sofort sichtbar sind + ExpiresByType text/html "access plus 0 seconds" + + # 🪄 JSON, API, dynamische Daten – kurz halten + ExpiresByType application/json "access plus 0 minutes" + + +# ============================================================ +# ⚡ KOMPRIMIERUNG (Bandbreite sparen) +# ============================================================ + + AddOutputFilterByType DEFLATE text/plain + AddOutputFilterByType DEFLATE text/html + AddOutputFilterByType DEFLATE text/css + AddOutputFilterByType DEFLATE text/javascript + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE application/json + AddOutputFilterByType DEFLATE application/xml + AddOutputFilterByType DEFLATE font/woff2 + + +# ============================================================ +# 🔒 SICHERHEIT (grundlegende Header) +# ============================================================ + + # Verhindert MIME-Type-Sniffing + Header set X-Content-Type-Options "nosniff" + # Klickschutz + Header set X-Frame-Options "SAMEORIGIN" + # Cross-Site-Scripting-Schutz + Header set X-XSS-Protection "1; mode=block" + # Cache-Kontrolle für HTML (keine veralteten Seiten) + + Header set Cache-Control "no-cache, no-store, must-revalidate" + + + +# ============================================================ +# 🧮 PHP-EINSTELLUNGEN +# ============================================================ php_value upload_max_filesize 100M php_value post_max_size 100M - - - +php_value memory_limit 256M +php_value max_execution_time 120 \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index acec44e9..1ea48ba8 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,64 +1,47 @@ -// 'use strict'; -var gulp = require('gulp'); -//var sass = require('gulp-sass'); -var sass = require('gulp-sass')(require('sass')); -var cleanCSS = require('gulp-clean-css'); -var rename = require('gulp-rename'); -var autoprefixer = require('gulp-autoprefixer'); -//var imagemin = require('gulp-imagemin'); -var sourcemaps = require('gulp-sourcemaps'); -//var uglify = require('gulp-uglify'); -//var concat = require('gulp-concat'); -//var minify = require('gulp-minify'); +// ============================================================ +// 🧰 GULP CONFIG – WeihnachtsKalenderMelly +// Sass-Compiler: moderne Dart-Sass-API (keine Legacy-Warnung) +// ============================================================ +const gulp = require('gulp'); +const dartSass = require('sass'); // 🟢 offizielles Sass-Paket +const gulpSass = require('gulp-sass')(dartSass); // 🟢 moderne API +const cleanCSS = require('gulp-clean-css'); +const rename = require('gulp-rename'); +const autoprefixer = require('gulp-autoprefixer'); +const sourcemaps = require('gulp-sourcemaps'); -// scss kompilieren und in css-datei speichern -// ------------------------------------------------ +const paths = { + sass: { + src: 'src/sass/*.sass', + dest: 'main/' + }, + js: { + src: 'src/js/*.js', + dest: 'main/' + }, + images: { + src: 'src/images/*', + dest: 'media/img' + } +}; + +// 🎨 Sass → CSS gulp.task('sass', () => { - return gulp.src('src/sass/*.sass') + return gulp.src(paths.sass.src) .pipe(sourcemaps.init()) - .pipe(sass({ - errLogToConsole: true}).on('error', sass.logError)) - .pipe(autoprefixer( - "last 3 version, >1%" - )) + .pipe(gulpSass.sync({ indentedSyntax: true }).on('error', gulpSass.logError)) + .pipe(autoprefixer({ overrideBrowserslist: ['last 3 versions', '>1%'] })) .pipe(cleanCSS()) .pipe(rename('min-style.css')) .pipe(sourcemaps.write('../main/')) - .pipe(gulp.dest('main/')); + .pipe(gulp.dest(paths.sass.dest)); }); -// Js minifizieren -// ------------------------------------------------ -gulp.task('min-js', () => { - return gulp.src('src/js/*.js') - .pipe(sourcemaps.init()) - .pipe(concat('script.js')) -// .pipe(uglify()) -// .pipe(minify()) - .pipe(rename({prefix: "min-"})) - .pipe(sourcemaps.write('../main/')) - .pipe(gulp.dest('main/')); + +// 👀 Watcher +gulp.task('watch', () => { + gulp.watch(paths.sass.src, gulp.series('sass')); }); -// Jpg Bilder Verkleinern -// ------------------------------------------------ -gulp.task('min-jpg', () => { - return gulp.src('src/images/*') - .pipe(imagemin([ - imagemin.mozjpeg({ - quality: 75, - progressive: true - })])) - .pipe(rename({prefix: "min-"})) - .pipe(gulp.dest('media/img')) -}); -// gulp verzeichnisse beobachten -// ------------------------------------------------ -gulp.task('watch', function() { - gulp.series('default'); - gulp.watch('src/sass/*.sass', gulp.series('sass')); -// gulp.watch('src/js/*', //gulp.series('min-js')); - // gulp.watch('src/images/*', //gulp.series('min-jpg')); -}); -// gulp 1mal ausführen mit allen task -// ------------------------------------------------ - gulp.task('default', gulp.parallel('sass')); + +// 🚀 Default-Task +gulp.task('default', gulp.series('sass')); \ No newline at end of file diff --git a/inc/bg/hufeisen_pattern_1024.webp b/inc/bg/hufeisen_pattern_1024.webp new file mode 100644 index 00000000..be4eb273 Binary files /dev/null and b/inc/bg/hufeisen_pattern_1024.webp differ diff --git a/index.php b/index.php index 0f979146..856c030f 100644 --- a/index.php +++ b/index.php @@ -25,15 +25,17 @@ if ($tab == "") {$tab = "home";} + + - + @@ -42,7 +44,9 @@ if ($tab == "") {$tab = "home";} + +
@@ -54,11 +58,15 @@ if ($tab == "") {$tab = "home";} +
+ Schneemann +
+