Fix #44: CI Pipeline mit PHP/CSS/HTML Linting #45

Merged
greggy merged 3 commits from feature/issue-44-ci-lint-pipeline into main 2026-05-19 16:05:47 +02:00
3 changed files with 68 additions and 3 deletions

64
.gitea/workflows/lint.yml Normal file
View File

@@ -0,0 +1,64 @@
name: Lint
on:
push:
pull_request:
jobs:
lint-php:
name: PHP Syntax Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install PHP
run: |
apt-get update -qq && apt-get install -y -qq php-cli > /dev/null 2>&1
- name: PHP Lint
run: |
errors=0
while IFS= read -r file; do
if ! php -l "$file" > /dev/null 2>&1; then
echo "❌ Syntax error in $file"
php -l "$file"
errors=1
fi
done < <(find . -name "*.php" -not -path "./vendor/*")
if [ "$errors" -eq 1 ]; then
echo "::error::PHP lint check failed"
exit 1
fi
echo "✅ All PHP files pass syntax check"
lint-css:
name: CSS Lint (stylelint)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Node.js & stylelint
run: |
apt-get update -qq && apt-get install -y -qq npm nodejs > /dev/null 2>&1
npm install -g stylelint stylelint-config-standard stylelint-prettier > /dev/null 2>&1
- name: CSS Lint
run: |
npx stylelint "**/*.css" --config .stylelintrc.json --allow-empty-input
echo "✅ All CSS files pass lint"
lint-html:
name: HTML Lint (htmlhint)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Node.js & htmlhint
run: |
apt-get update -qq && apt-get install -y -qq npm nodejs > /dev/null 2>&1
npm install -g htmlhint > /dev/null 2>&1
- name: HTML Lint
run: |
npx htmlhint "**/*.html" --config .htmlhintrc
echo "✅ All HTML files pass lint"

View File

@@ -1216,7 +1216,7 @@ footer {
gap: 0; gap: 0;
z-index: 95; z-index: 95;
border-bottom: 1px solid var(--warm); border-bottom: 1px solid var(--warm);
animation: slideDown 0.3s ease; animation: slide-down 0.3s ease;
} }
nav.mobile-open .nav-links a { nav.mobile-open .nav-links a {
@@ -1239,11 +1239,12 @@ footer {
background: transparent; background: transparent;
} }
@keyframes slideDown { @keyframes slide-down {
from { from {
opacity: 0; opacity: 0;
transform: translateY(-10px); transform: translateY(-10px);
} }
to { to {
opacity: 1; opacity: 1;
transform: translateY(0); transform: translateY(0);

View File

@@ -737,7 +737,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</div> </div>
<?php else: ?> <?php else: ?>
<?php if (!empty($formErrors)): ?> <?php if (!empty($formErrors)): ?>
<div id="form-result" class="form-errors"> <div id="form-errors" class="form-errors">
<ul> <ul>
<?php foreach ($formErrors as $error): ?> <?php foreach ($formErrors as $error): ?>
<li><?= escapeContactValue($error) ?></li> <li><?= escapeContactValue($error) ?></li>