/* sections-admin.js - constructeur de sections en live (mode admin) */
(function(){
  var EP='/admin/section_builder.php';
  function post(data){
    var fd=new FormData();
    Object.keys(data).forEach(function(k){ fd.append(k,data[k]); });
    return fetch(EP,{method:'POST',body:fd,credentials:'same-origin'}).then(function(r){return r.json();});
  }
  function reload(){ location.reload(); }

  document.addEventListener('click',function(e){
    var t=e.target;
    if(!t.closest) return;

    // ajouter une section
    var addSec=t.closest('.sx-add-sec-btn');
    if(addSec){ e.preventDefault();
      post({action:'add_section',hote:addSec.getAttribute('data-hote'),n:addSec.getAttribute('data-n')}).then(reload); return; }

    // disposition
    var disp=t.closest('.sx-disp');
    if(disp){ e.preventDefault();
      post({action:'set_disposition',sec:disp.getAttribute('data-sec'),n:disp.getAttribute('data-n')}).then(reload); return; }

    // monter / descendre
    var up=t.closest('.sx-up');
    if(up){ e.preventDefault(); post({action:'move_section',sec:up.getAttribute('data-sec'),dir:'up'}).then(reload); return; }
    var down=t.closest('.sx-down');
    if(down){ e.preventDefault(); post({action:'move_section',sec:down.getAttribute('data-sec'),dir:'down'}).then(reload); return; }

    // supprimer section
    var del=t.closest('.sx-del');
    if(del){ e.preventDefault();
      if(confirm('Supprimer cette section et tout son contenu ?')) post({action:'del_section',sec:del.getAttribute('data-sec')}).then(reload); return; }

    // ajouter un bloc
    var addB=t.closest('.sx-add-bloc button');
    if(addB){ e.preventDefault();
      post({action:'add_bloc',sec:addB.getAttribute('data-sec'),col:addB.getAttribute('data-col'),type:addB.getAttribute('data-type')}).then(reload); return; }

    // supprimer un bloc
    var delB=t.closest('.sx-bloc-del');
    if(delB){ e.preventDefault();
      if(confirm('Retirer ce bloc ?')) post({action:'del_bloc',bloc:delB.getAttribute('data-bloc')}).then(reload); return; }
  });
})();
