Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into e2e-test
Browse files Browse the repository at this point in the history
alxndr-w authored Jan 26, 2025

Verified

This commit was signed with the committer’s verified signature.
ronnnnn Seiya Kokushi
2 parents ca98020 + e758802 commit 8018762
Showing 26 changed files with 541 additions and 349 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/code-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: PHP-CS-Fixer

on:
push:
branches: [ master, main ]
pull_request:
branches: [ master, main ]

permissions:
contents: read

jobs:
code-style:

runs-on: ubuntu-latest
permissions:
contents: write # for Git to git apply

steps:
- uses: actions/checkout@v3

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: gd, intl, pdo_mysql
coverage: none # disable xdebug, pcov

# install dependencies from composer.json
- name: Install test dependencies
env:
COMPOSER: composer.json
run: composer install --prefer-dist --no-progress

# run php-cs-fixer, fix code styles
- name: Run PHP CS Fixer
run: composer cs-fix

# commit and push fixed files
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -7,3 +7,7 @@ fragments/.DS_Store
/playwright-report/
/playwright/.cache/
/screens/
/.idea
/composer.lock
/.php-cs-fixer.cache
/vendor
11 changes: 11 additions & 0 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

$finder = (new PhpCsFixer\Finder())
->in(__DIR__)
;

return (new Redaxo\PhpCsFixerConfig\Config())
->setFinder($finder)
;
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ Das AddOn ermöglicht es Administratoren, das Frontend und/oder des Backend von
* Optionales Sperren des Frontends auch für REDAXO-Benutzer (außer Admins)
* Optionale Weiterleitung zu einer festgelegten URL, z.B. REDAXO-Login
* Festlegen des HTTP-Statuscodes (z.B. 503 Service Unavailable)
* Anpassen der Sperrseite durch eigenes Fragment (`maintenance_page.php`)
* Anpassen der Sperrseite durch eigenes Fragment (`maintenance/frontend.php`)
* Definieren von Ausnahmen, die dennoch Zugriff erhalten, z.B. für
* IP-Adressen
* Hosts
@@ -42,16 +42,17 @@ Eine für Nutzer*innen hilfreiche Meldung ist beispielsweise:

Standardmäßig wird eine einfache HTML-Seite angezeigt, die den Wartungsmodus anzeigt.

Diese kann durch eine eigene HTML-Seite ersetzt werden. Dazu muss im Projekt-AddOn ein Ordner `fragments` angelegt werden. In diesem Ordner kann eine Datei `maintenance_page.php` mit eigenem HTML-Code erstellt werden.
Diese kann durch eine eigene HTML-Seite ersetzt werden. Dazu muss im Projekt-AddOn ein Ordner `fragments/maintenance` angelegt werden. In diesem Ordner kann eine Datei `frontend.php` mit eigenem HTML-Code erstellt werden. D.h. `/src/addons/maintenance/fragments/maintenance/frontend.php`

So kann bspw. eigener Text, Logo oder komplett andere Gestaltung erfolgen.

## Anzeige des aktuellen Status im REDAXO-Hauptmenü

Das AddOn-Symbol erhält bei Aktivierung einer der Wartungsmodi eine Farbkennung.
Der Menüeintrag erhält bei Aktivierung einer der Wartungsmodi ein zusätzliches Tag.

* Standard: Alle Funktionen sind deaktiviert.
* Rot: Der Wartungsmodus ist für Frontend und/oder Backend aktiv!
* `F` in rotem Tag: Der Wartungsmodus ist für das Frontend aktiv.
* `B` in blauem Tag: Der Wartungsmodus ist für das Backend aktiv.

## Extensionpoint MAINTENANCE_MEDIA_UNBLOCK_LIST

@@ -78,7 +79,7 @@ Deaktivieren mit `maintenance:off` oder `frontend:on`
* <http://www.redaxo.org>
* <https://github.com/FriendsOfREDAXO>

### Projekt-Team
## Projekt-Team

* [Alexander Walther](https://github.com/alxndr-w)
* [KLXM Crossmedia / Thomas Skerbis](https://klxm.de)
86 changes: 86 additions & 0 deletions assets/css/maintenance-frontend.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
html, body {
height: 100%;
background-color: #f7f7f7;
}
body {
display: flex;
align-items: center;
}
.maintenance-container {
max-width: 500px;
min-width: 300px;
width: 50%;
margin: 0 auto;
color: #999;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
font-size: 15px;
line-height: 1.5;
text-align: center;
}
.maintenance-error a {
color: #666;
}
.maintenance-error a:hover {
color: #111;
}
.maintenance-error-title {
margin: 0;
font-size: 40px;
font-weight: 700;
color: #5b98d7;
text-shadow: 0 4px 2px rgba(255, 255, 255, 1);
line-height: 1.2em;
}
.maintenance-error-message {
padding: 0 20px;
}

.maintenance-login a {
color: #666;
}
.maintenance-login a:hover {
color: #111;
}
.maintenance-login-title {
margin: 0;
font-size: 40px;
font-weight: 700;
color: #5b98d7;
text-shadow: 0 4px 2px rgba(255, 255, 255, 1);
line-height: 1.2em;
}
.maintenance-login-message {
padding: 0 20px;
}

.maintenance-pw-input {
margin: 1em 1em 1em 1em;
padding: 1em 2em 1em 1em;
background: rgba(255,255,255,1);
border-radius: 30px;
border: none;
font-size: 1em;
}

.maintenance-pw-btn {
margin: 1em 1em 1em 1em;
padding: 1em 1em 1em 1em;
background: #5b98d7;
border-radius: 10px;
color: #ffffff;
border: none;
font-size: 1em;
cursor: pointer;
}

.maintenance-btn {
display: inline-block;
text-decoration: none;
margin: 1em 1em 1em 1em;
padding: 1em 1em 1em 1em;
background: #5b98d7;
border-radius: 10px;
color: #ffffff;
border: none;
font-size: 1em;
}
17 changes: 9 additions & 8 deletions boot.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

use FriendsOfREDAXO\Maintenance\Maintenance;

/**
* This file is part of the maintenance package.
*
@@ -13,19 +15,18 @@
if (rex::isSetup()) {
return;
}
rex_extension::register('PACKAGES_INCLUDED', function () {
rex_extension::register('PACKAGES_INCLUDED', static function () {
$addon = rex_addon::get('maintenance');

if (rex::isFrontend() && boolval($addon->getConfig('block_frontend'))) {

\FriendsOfREDAXO\Maintenance\Maintenance::checkFrontend();
if (rex::isFrontend() && (bool) $addon->getConfig('block_frontend')) {
Maintenance::checkFrontend();
}
if (rex::isBackend() && boolval($addon->getConfig('block_backend'))) {
\FriendsOfREDAXO\Maintenance\Maintenance::checkBackend();
if (rex::isBackend() && (bool) $addon->getConfig('block_backend')) {
Maintenance::checkBackend();
}

if (rex::isBackend()) {
\FriendsOfREDAXO\Maintenance\Maintenance::setIndicators();
Maintenance::setIndicators();
rex_view::addJsFile($addon->getAssetsUrl('dist/bootstrap-tokenfield.js'));
rex_view::addJsFile($addon->getAssetsUrl('dist/init_bootstrap-tokenfield.js'));
rex_view::addCssFile($addon->getAssetsUrl('dist/css/bootstrap-tokenfield.css'));
@@ -35,7 +36,7 @@
if ('maintenance/frontend' === rex_be_controller::getCurrentPage()) {
rex_extension::register('OUTPUT_FILTER', static function (rex_extension_point $ep) {
$suchmuster = 'class="###maintenance-settings-editor###"';
$ersetzen = strval(rex_config::get('maintenance', 'editor')); // @phpstan-ignore-line
$ersetzen = (string) rex_config::get('maintenance', 'editor'); // @phpstan-ignore-line
$ep->setSubject(str_replace($suchmuster, $ersetzen, $ep->getSubject())); // @phpstan-ignore-line
});
}
14 changes: 14 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"require-dev": {
"redaxo/php-cs-fixer-config": "^2.0",
"friendsofphp/php-cs-fixer": "^3.14"
},
"replace": {
"psr/log": "*",
"psr/container": "*"
},
"scripts": {
"cs-dry": "php-cs-fixer fix -v --ansi --dry-run --config=.php-cs-fixer.dist.php",
"cs-fix": "php-cs-fixer fix -v --ansi --config=.php-cs-fixer.dist.php"
}
}
13 changes: 13 additions & 0 deletions fragments/maintenance/announcement.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php
$announcement = rex_config::get('maintenance', 'announcement', '');
$start_date = rex_config::get('maintenance', 'announcement_start_date');
$end_date = rex_config::get('maintenance', 'announcement_end_date');
$current_date = date('Y-m-d\TH:i:s');

if ('' !== $announcement && $start_date <= $current_date && $end_date >= $current_date) {
?>
<div class="maintenance-announcement">
<?= $announcement ?>
</div>
<?php }
?>
53 changes: 11 additions & 42 deletions fragments/maintenance/frontend.php
Original file line number Diff line number Diff line change
@@ -3,53 +3,22 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Maintenance</title>
<style type="text/css">
html, body {
height: 100%;
background-color: #f7f7f7;
}
body {
display: flex;
align-items: center;
}
.maintenance-container {
max-width: 500px;
min-width: 300px;
width: 50%;
margin: 0 auto;
color: #999;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
font-size: 15px;
line-height: 1.5;
text-align: center;
}
.maintenance-error a {
color: #666;
}
.maintenance-error a:hover {
color: #111;
}
.maintenance-error-title {
margin: 0;
font-size: 40px;
font-weight: 700;
color: #5b98d7;
text-shadow: 0 4px 2px rgba(255, 255, 255, 1);
line-height: 1.2em;
}
.maintenance-error-message {
padding: 0 20px;
}
</style>
<title><?= rex::getServerName() ?> - Maintenance</title>
<link rel="stylesheet" href="<?= rex_url::addonAssets('maintenance', 'css/maintenance-frontend.css') ?>" />
</head>
<body>
<div class="maintenance-container">
<div class="maintenance-error">
<p class="maintenance-error-title">Maintenance<br>Wartung</p>
<p class="maintenance-error-message">This website is temporarily unavailable</p>
<p class="maintenance-error-message">Diese Website ist temporär nicht erreichbar</p>
<p class="maintenance-error-title">Maintenance / <span lang="de">Wartung</span></p>
<p class="maintenance-error-message">This website is temporarily unavailable.</p>
<p class="maintenance-error-message" lang="de">Diese Website ist vorübergehend nicht erreichbar.</p>
</div>
<?php
// Subfragment announcement.php ausgeben
echo $this->subfragment('maintenance/announcement.php');
echo $this->subfragment('maintenance/login.php');
echo $this->subfragment('maintenance/reload.php');
?>
</div>
</body>
</html>
Loading

0 comments on commit 8018762

Please sign in to comment.