Add flash messaging for newsletter actions in index.php and wiki.php. Implemented session handling for success and error messages, and added redirection after form submissions to enhance user experience.
This commit is contained in:
28
index.php
28
index.php
@@ -726,6 +726,15 @@ $error = '';
|
|||||||
$previewHtml = '';
|
$previewHtml = '';
|
||||||
$previewClipboardHtml = '';
|
$previewClipboardHtml = '';
|
||||||
|
|
||||||
|
$flash = $_SESSION['wiki_newsletter_flash'] ?? null;
|
||||||
|
if (is_array($flash)) {
|
||||||
|
$message = (string)($flash['message'] ?? '');
|
||||||
|
$error = (string)($flash['error'] ?? '');
|
||||||
|
$previewHtml = (string)($flash['preview_html'] ?? '');
|
||||||
|
$previewClipboardHtml = (string)($flash['preview_clipboard_html'] ?? '');
|
||||||
|
unset($_SESSION['wiki_newsletter_flash']);
|
||||||
|
}
|
||||||
|
|
||||||
$isCron = (PHP_SAPI === 'cli' && cliArg('cron') !== null) || isset($_GET['cron']);
|
$isCron = (PHP_SAPI === 'cli' && cliArg('cron') !== null) || isset($_GET['cron']);
|
||||||
|
|
||||||
if ($isCron) {
|
if ($isCron) {
|
||||||
@@ -755,6 +764,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'login
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login') {
|
||||||
|
$redirectUrl = strtok($_SERVER['REQUEST_URI'], '?');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
requireAdmin();
|
requireAdmin();
|
||||||
$config = configFromPost($config);
|
$config = configFromPost($config);
|
||||||
@@ -774,9 +785,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login
|
|||||||
} elseif ($action === 'monthly_send') {
|
} elseif ($action === 'monthly_send') {
|
||||||
$message = sendMonthlyIfDue($config);
|
$message = sendMonthlyIfDue($config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_SESSION['wiki_newsletter_flash'] = [
|
||||||
|
'message' => $message,
|
||||||
|
'error' => '',
|
||||||
|
'preview_html' => $previewHtml,
|
||||||
|
'preview_clipboard_html' => $previewClipboardHtml,
|
||||||
|
];
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
$error = $e->getMessage();
|
$_SESSION['wiki_newsletter_flash'] = [
|
||||||
|
'message' => '',
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'preview_html' => '',
|
||||||
|
'preview_clipboard_html' => '',
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header('Location: ' . $redirectUrl);
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$isLoggedIn = isAdminLoggedIn();
|
$isLoggedIn = isAdminLoggedIn();
|
||||||
|
|||||||
32
wiki.php
32
wiki.php
@@ -170,6 +170,10 @@ function fetchLatestArticles(string $wikiUrl, int $limit = 150): array
|
|||||||
$nodes = $xpath->query('//li');
|
$nodes = $xpath->query('//li');
|
||||||
|
|
||||||
foreach ($nodes as $li) {
|
foreach ($nodes as $li) {
|
||||||
|
if (!$li instanceof DOMElement) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$text = trim(preg_replace('/\s+/', ' ', $li->textContent ?? ''));
|
$text = trim(preg_replace('/\s+/', ' ', $li->textContent ?? ''));
|
||||||
|
|
||||||
if (!preg_match('/\((\d{2}\.\d{2}\.\d{4})\)/', $text, $dateMatch)) {
|
if (!preg_match('/\((\d{2}\.\d{2}\.\d{4})\)/', $text, $dateMatch)) {
|
||||||
@@ -722,6 +726,15 @@ $error = '';
|
|||||||
$previewHtml = '';
|
$previewHtml = '';
|
||||||
$previewClipboardHtml = '';
|
$previewClipboardHtml = '';
|
||||||
|
|
||||||
|
$flash = $_SESSION['wiki_newsletter_flash'] ?? null;
|
||||||
|
if (is_array($flash)) {
|
||||||
|
$message = (string)($flash['message'] ?? '');
|
||||||
|
$error = (string)($flash['error'] ?? '');
|
||||||
|
$previewHtml = (string)($flash['preview_html'] ?? '');
|
||||||
|
$previewClipboardHtml = (string)($flash['preview_clipboard_html'] ?? '');
|
||||||
|
unset($_SESSION['wiki_newsletter_flash']);
|
||||||
|
}
|
||||||
|
|
||||||
$isCron = (PHP_SAPI === 'cli' && cliArg('cron') !== null) || isset($_GET['cron']);
|
$isCron = (PHP_SAPI === 'cli' && cliArg('cron') !== null) || isset($_GET['cron']);
|
||||||
|
|
||||||
if ($isCron) {
|
if ($isCron) {
|
||||||
@@ -751,6 +764,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'login
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login') {
|
||||||
|
$redirectUrl = strtok($_SERVER['REQUEST_URI'], '?');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
requireAdmin();
|
requireAdmin();
|
||||||
$config = configFromPost($config);
|
$config = configFromPost($config);
|
||||||
@@ -770,9 +785,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') !== 'login
|
|||||||
} elseif ($action === 'monthly_send') {
|
} elseif ($action === 'monthly_send') {
|
||||||
$message = sendMonthlyIfDue($config);
|
$message = sendMonthlyIfDue($config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_SESSION['wiki_newsletter_flash'] = [
|
||||||
|
'message' => $message,
|
||||||
|
'error' => '',
|
||||||
|
'preview_html' => $previewHtml,
|
||||||
|
'preview_clipboard_html' => $previewClipboardHtml,
|
||||||
|
];
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
$error = $e->getMessage();
|
$_SESSION['wiki_newsletter_flash'] = [
|
||||||
|
'message' => '',
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
'preview_html' => '',
|
||||||
|
'preview_clipboard_html' => '',
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header('Location: ' . $redirectUrl);
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$isLoggedIn = isAdminLoggedIn();
|
$isLoggedIn = isAdminLoggedIn();
|
||||||
|
|||||||
Reference in New Issue
Block a user