<?php
// admin/pages.php - vue d'ensemble de toutes les pages du site.
require_once dirname(__DIR__) . '/inc/schema.php';
require_once __DIR__ . '/_layout.php';
init_schema();

// Pages "fichiers" reelles a la racine (hors modeles techniques / includes)
$racine = dirname(__DIR__);
$exclus = ['page.php','404.php','sitemap.php','article.php','temoignage.php','pilier.php','traite.php','specialite.php'];
$fichiers = [];
foreach (glob($racine . '/*.php') as $p) {
    $nom = basename($p);
    if (in_array($nom, $exclus, true)) continue;
    $fichiers[] = ['nom'=>$nom, 'url'=>'/'.$nom, 'slug'=>preg_replace('/\.php$/','',$nom)];
}
sort($fichiers);

layout_start('Pages du site', 'pages');
?>
<div class="panel">
  <div style="display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap">
    <h2 style="margin:0">Pages que je crée (modifiables)</h2>
    <div style="display:flex;gap:.5rem">
      <input type="text" id="newTitre" placeholder="Titre de la nouvelle page" style="padding:.5rem .7rem;border:1px solid var(--line);border-radius:6px;min-width:240px">
      <button class="btn" id="btnCreate">+ Créer une page</button>
    </div>
  </div>
  <p style="color:var(--ink2);margin:.6rem 0 0">Ces pages sont stockées en base, avec une URL propre <code>/slug</code>. Construisez leur contenu en cliquant « Voir / éditer » puis en ajoutant des sections directement sur la page.</p>
  <div id="pglist" class="pg-list"></div>
</div>

<div class="panel" style="margin-top:1.4rem">
  <h2 style="margin:0 0 .4rem">Pages existantes du site (fichiers)</h2>
  <p style="color:var(--ink2);margin:0 0 .8rem">Pages livrées avec le site. Cliquez pour les visualiser. Vous pouvez y ajouter des sections en live, mais leur structure de base n'est pas supprimable ici.</p>
  <div class="pg-grid">
    <?php foreach ($fichiers as $f): ?>
      <a class="pg-file" href="<?= e($f['url']) ?>" target="_blank"><span><?= e($f['slug']) ?></span><small><?= e($f['url']) ?></small></a>
    <?php endforeach; ?>
  </div>
</div>

<style>
.pg-list{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}
.pg-row{display:flex;align-items:center;gap:.8rem;padding:.7rem .9rem;border:1px solid var(--line);border-radius:8px;background:#fff}
.pg-row .t{font-weight:600}
.pg-row .u{font-family:monospace;font-size:.8rem;color:var(--ink2)}
.pg-row .badge{font-size:.72rem;padding:.15rem .5rem;border-radius:20px}
.pg-row .badge.pub{background:#e3f3e8;color:#1f7a44}
.pg-row .badge.br{background:#f3ece0;color:#9a7322}
.pg-row .sp{flex:1}
.pg-row button,.pg-row a.act{font-size:.78rem;padding:.35rem .6rem;border:1px solid var(--line);background:#fff;border-radius:5px;cursor:pointer;text-decoration:none;color:inherit}
.pg-row a.act{background:var(--gold);color:#fff;border-color:var(--gold)}
.pg-row .del{color:#c0392b;border-color:#e3b4ad}
.pg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.6rem}
.pg-file{display:flex;flex-direction:column;padding:.7rem .8rem;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:inherit;background:#fff}
.pg-file span{font-weight:600}
.pg-file small{color:var(--ink2);font-family:monospace;font-size:.75rem}
</style>

<script>
const EP='pages_action.php';
const list=document.getElementById('pglist');
function post(data){var fd=new FormData();Object.keys(data).forEach(k=>fd.append(k,data[k]));return fetch(EP,{method:'POST',body:fd,credentials:'same-origin'}).then(r=>r.json());}
function api(a){return fetch(EP+'?action='+a,{credentials:'same-origin'}).then(r=>r.json());}

function load(){
  api('list').then(d=>{
    list.innerHTML='';
    if(!d.pages||!d.pages.length){ list.innerHTML='<p style="color:#888">Aucune page créée pour l\'instant.</p>'; return; }
    d.pages.forEach(p=>{
      const pub=p.statut==='publie';
      const row=document.createElement('div'); row.className='pg-row';
      row.innerHTML='<span class="t">'+p.titre+'</span>'+
        '<span class="u">/'+p.slug+'</span>'+
        '<span class="badge '+(pub?'pub':'br')+'">'+(pub?'publiée':'brouillon')+'</span>'+
        '<span class="sp"></span>'+
        '<a class="act" href="/'+p.slug+'" target="_blank">Voir / éditer</a>'+
        '<button class="pub" data-id="'+p.id+'" data-s="'+(pub?'brouillon':'publie')+'">'+(pub?'Dépublier':'Publier')+'</button>'+
        '<button class="ren" data-id="'+p.id+'" data-t="'+p.titre+'">Renommer</button>'+
        '<button class="del" data-id="'+p.id+'">Suppr.</button>';
      list.appendChild(row);
    });
    list.querySelectorAll('.pub').forEach(b=>b.addEventListener('click',()=>post({action:'statut',id:b.dataset.id,statut:b.dataset.s}).then(load)));
    list.querySelectorAll('.ren').forEach(b=>b.addEventListener('click',()=>{const n=prompt('Nouveau titre :',b.dataset.t);if(n&&n.trim())post({action:'rename',id:b.dataset.id,titre:n.trim()}).then(load);}));
    list.querySelectorAll('.del').forEach(b=>b.addEventListener('click',()=>{if(confirm('Supprimer cette page et tout son contenu ?'))post({action:'delete',id:b.dataset.id}).then(load);}));
  });
}
document.getElementById('btnCreate').addEventListener('click',()=>{
  const t=document.getElementById('newTitre').value.trim(); if(!t)return;
  post({action:'create',titre:t}).then(d=>{ if(d.ok){ document.getElementById('newTitre').value=''; load(); window.open('/'+d.slug,'_blank'); } else alert(d.error||'Erreur'); });
});
load();
</script>
<?php layout_end(); ?>
