feat #58 : wizard multi-étapes création/édition article #59
+1
-1
File diff suppressed because one or more lines are too long
+50
-14
@@ -544,7 +544,10 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if ($draft === null) { header('Location: /new'); exit; }
|
||||
if ($draft === null) {
|
||||
header('Location: /new');
|
||||
exit;
|
||||
}
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$articles->updatePartialMeta($uuid, [
|
||||
'published' => isset($_POST['published']) && $_POST['published'] !== '',
|
||||
@@ -559,7 +562,10 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if ($draft === null) { header('Location: /new'); exit; }
|
||||
if ($draft === null) {
|
||||
header('Location: /new');
|
||||
exit;
|
||||
}
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$articles->updatePartialMeta($uuid, ['category' => trim($_POST['category'] ?? '')]);
|
||||
header('Location: /new/' . rawurlencode($uuid) . '/4');
|
||||
@@ -572,7 +578,10 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if ($draft === null) { header('Location: /new'); exit; }
|
||||
if ($draft === null) {
|
||||
header('Location: /new');
|
||||
exit;
|
||||
}
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$_vals = array_values(array_filter(array_map('trim', explode(',', (string)($_POST['tags_flat'] ?? ''))), fn ($_v) => $_v !== ''));
|
||||
$articles->updatePartialMeta($uuid, ['tags' => $_vals !== [] ? ['tags' => $_vals] : []]);
|
||||
@@ -582,14 +591,22 @@ switch ($action) {
|
||||
$_tagTypes = $articles->getTagTypes();
|
||||
$flatTagValues = [];
|
||||
foreach ($_tagTypes as $_tk => $_) {
|
||||
foreach ($articles->getAllTagValues($_tk) as $_v) { $flatTagValues[$_v] = true; }
|
||||
foreach ($articles->getAllTagValues($_tk) as $_v) {
|
||||
$flatTagValues[$_v] = true;
|
||||
}
|
||||
}
|
||||
foreach ($articles->getAllTagValues('tags') as $_v) {
|
||||
$flatTagValues[$_v] = true;
|
||||
}
|
||||
foreach ($articles->getAllTagValues('tags') as $_v) { $flatTagValues[$_v] = true; }
|
||||
ksort($flatTagValues);
|
||||
$flatTagValues = array_keys($flatTagValues);
|
||||
$flatArticleTags = [];
|
||||
foreach (($draft['tags'] ?? []) as $_tagVals) {
|
||||
foreach ((array)$_tagVals as $_v) { if (!in_array($_v, $flatArticleTags, true)) $flatArticleTags[] = $_v; }
|
||||
foreach ((array)$_tagVals as $_v) {
|
||||
if (!in_array($_v, $flatArticleTags, true)) {
|
||||
$flatArticleTags[] = $_v;
|
||||
}
|
||||
}
|
||||
}
|
||||
$draftContent = (string)($draft['content'] ?? '');
|
||||
require_once BASE_PATH . '/src/TagSuggester.php';
|
||||
@@ -597,7 +614,10 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if ($draft === null) { header('Location: /new'); exit; }
|
||||
if ($draft === null) {
|
||||
header('Location: /new');
|
||||
exit;
|
||||
}
|
||||
require_once BASE_PATH . '/src/Parsedown.php';
|
||||
$_pd = new Parsedown();
|
||||
$autoSeoDesc = mb_strimwidth(trim((string)preg_replace('/\s+/', ' ', strip_tags($_pd->text((string)($draft['content'] ?? ''))))), 0, 155, '…');
|
||||
@@ -903,14 +923,22 @@ switch ($action) {
|
||||
$_tagTypes = $articles->getTagTypes();
|
||||
$flatTagValues = [];
|
||||
foreach ($_tagTypes as $_tk => $_) {
|
||||
foreach ($articles->getAllTagValues($_tk) as $_v) { $flatTagValues[$_v] = true; }
|
||||
foreach ($articles->getAllTagValues($_tk) as $_v) {
|
||||
$flatTagValues[$_v] = true;
|
||||
}
|
||||
}
|
||||
foreach ($articles->getAllTagValues('tags') as $_v) {
|
||||
$flatTagValues[$_v] = true;
|
||||
}
|
||||
foreach ($articles->getAllTagValues('tags') as $_v) { $flatTagValues[$_v] = true; }
|
||||
ksort($flatTagValues);
|
||||
$flatTagValues = array_keys($flatTagValues);
|
||||
$flatArticleTags = [];
|
||||
foreach (($draft['tags'] ?? []) as $_tagVals) {
|
||||
foreach ((array)$_tagVals as $_v) { if (!in_array($_v, $flatArticleTags, true)) $flatArticleTags[] = $_v; }
|
||||
foreach ((array)$_tagVals as $_v) {
|
||||
if (!in_array($_v, $flatArticleTags, true)) {
|
||||
$flatArticleTags[] = $_v;
|
||||
}
|
||||
}
|
||||
}
|
||||
$draftContent = (string)($draft['content'] ?? '');
|
||||
require_once BASE_PATH . '/src/TagSuggester.php';
|
||||
@@ -962,10 +990,18 @@ switch ($action) {
|
||||
$autoSlug = slugify($draftData['title'] ?? '');
|
||||
$postSlug = $draftData['slug'] ?? $article['slug'];
|
||||
$changes = [];
|
||||
if ($titleChanged) { $changes[] = 'titre modifié'; }
|
||||
if (($draftData['category'] ?? '') !== ($article['category'] ?? '')) { $changes[] = 'catégorie modifiée'; }
|
||||
if (($draftData['tags'] ?? []) !== ($article['tags'] ?? [])) { $changes[] = 'tags modifiés'; }
|
||||
if (($draftData['content'] ?? '') !== ($article['content'] ?? '')) { $changes[] = 'contenu modifié'; }
|
||||
if ($titleChanged) {
|
||||
$changes[] = 'titre modifié';
|
||||
}
|
||||
if (($draftData['category'] ?? '') !== ($article['category'] ?? '')) {
|
||||
$changes[] = 'catégorie modifiée';
|
||||
}
|
||||
if (($draftData['tags'] ?? []) !== ($article['tags'] ?? [])) {
|
||||
$changes[] = 'tags modifiés';
|
||||
}
|
||||
if (($draftData['content'] ?? '') !== ($article['content'] ?? '')) {
|
||||
$changes[] = 'contenu modifié';
|
||||
}
|
||||
if ((bool)($draftData['published'] ?? false) !== (bool)($article['published'] ?? false)) {
|
||||
$changes[] = ($draftData['published'] ?? false) ? 'article publié' : 'article dépublié';
|
||||
}
|
||||
|
||||
@@ -73,7 +73,8 @@ $_slugFinal = ($titleChanged && $autoSlug !== $postSlug) ? $autoSlug : $postSlu
|
||||
<?php if (!isset($show[$i])): ?>
|
||||
<?php if (!$inEllipsis): $inEllipsis = true; ?>
|
||||
<div class="diff-ellipsis text-muted px-2">⋯</div>
|
||||
<?php endif; continue; ?>
|
||||
<?php endif;
|
||||
continue; ?>
|
||||
<?php else: $inEllipsis = false; endif; ?>
|
||||
<?php if ($op === '-'): ?>
|
||||
<div class="diff-del px-2">− <?= htmlspecialchars($line) ?></div>
|
||||
|
||||
Reference in New Issue
Block a user