v1.6.25 — intégration IA éditeur, onglet admin IA, corrections CSP #98
@@ -9,7 +9,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
var resultEl = document.getElementById('ai-result-content');
|
||||
var btnApply = document.getElementById('btn-ai-apply');
|
||||
var btnClose = document.getElementById('btn-ai-close');
|
||||
var ta = document.getElementById('content');
|
||||
var ta = document.getElementById('wz-content') || document.getElementById('content');
|
||||
var titleEl = document.getElementById('title');
|
||||
|
||||
var lastRewrite = '';
|
||||
@@ -33,12 +33,18 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
lastRewrite = '';
|
||||
|
||||
try {
|
||||
var titleVal = titleEl ? titleEl.value : '';
|
||||
if (!titleVal && ta) {
|
||||
var m = ta.value.match(/^#\s+(.+)/m);
|
||||
if (m) { titleVal = m[1].trim(); }
|
||||
}
|
||||
|
||||
var res = await fetch('/?action=ai_query', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
||||
body: new URLSearchParams({
|
||||
action: action,
|
||||
title: titleEl ? titleEl.value : '',
|
||||
title: titleVal,
|
||||
content: ta ? ta.value : '',
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -49,15 +49,44 @@ $_hasUuid = $_wizUuid !== '';
|
||||
|
||||
</div><!-- /col-lg-9 -->
|
||||
|
||||
<!-- Plan (TOC dynamique) ───────────────────────────────────────────────── -->
|
||||
<!-- Sidebar droite : TOC + IA ──────────────────────────────────────────── -->
|
||||
<div class="col-lg-3 d-none d-lg-block">
|
||||
<div class="position-sticky" style="top:1rem">
|
||||
<div class="card border-secondary-subtle">
|
||||
<div class="card border-secondary-subtle mb-3">
|
||||
<div class="card-header bg-transparent py-2 small fw-semibold text-muted">Plan</div>
|
||||
<div class="card-body p-2" style="max-height:80vh;overflow-y:auto">
|
||||
<div class="card-body p-2" style="max-height:40vh;overflow-y:auto">
|
||||
<ul id="wz-toc-list" class="list-unstyled mb-0"></ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if ($mode === 'edit'): ?>
|
||||
<div class="card border-secondary-subtle">
|
||||
<div class="card-header bg-transparent py-2 small fw-semibold text-muted">IA</div>
|
||||
<div class="card-body p-2">
|
||||
<div class="d-flex flex-column gap-2">
|
||||
<button type="button" id="btn-ai-critique" class="btn btn-outline-secondary btn-sm">
|
||||
Analyse critique
|
||||
</button>
|
||||
<button type="button" id="btn-ai-rewrite" class="btn btn-outline-secondary btn-sm">
|
||||
Réécrire l'article
|
||||
</button>
|
||||
</div>
|
||||
<div id="ai-result-panel" class="mt-2" style="display:none">
|
||||
<div class="d-flex align-items-center justify-content-between mb-1">
|
||||
<span id="ai-result-label" class="fw-semibold small"></span>
|
||||
<button type="button" id="btn-ai-close" class="btn-close btn-sm" aria-label="Fermer"></button>
|
||||
</div>
|
||||
<div id="ai-result-content"
|
||||
class="border rounded p-2 small"
|
||||
style="max-height:340px;overflow-y:auto;white-space:pre-wrap;font-family:inherit;background:#f8f9fa">
|
||||
</div>
|
||||
<button type="button" id="btn-ai-apply" class="btn btn-warning btn-sm mt-2" style="display:none">
|
||||
Appliquer dans l'éditeur
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /row -->
|
||||
@@ -172,4 +201,5 @@ $_hasUuid = $_wizUuid !== '';
|
||||
<?php
|
||||
$content = ob_get_clean();
|
||||
$title = ($mode === 'create' ? 'Nouvel article' : 'Modifier') . ' — Étape 1/' . $totalSteps;
|
||||
if ($mode === 'edit') { $aiEditor = true; }
|
||||
include BASE_PATH . '/templates/layout.php';
|
||||
|
||||
Reference in New Issue
Block a user