From 9b7eb99d208b852d9ac26fb38e7187adbcc64049 Mon Sep 17 00:00:00 2001 From: orohi Date: Wed, 17 Jun 2026 05:49:15 +0300 Subject: [PATCH] fix: site form JS conflict with window.name --- internal/handler/health.go | 23 +++++++++++++++++------ internal/handler/site.go | 2 +- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/internal/handler/health.go b/internal/handler/health.go index 59f3c30..3f09cca 100644 --- a/internal/handler/health.go +++ b/internal/handler/health.go @@ -101,8 +101,8 @@ const loginPageHTML = `
` @@ -132,10 +132,21 @@ async function loadSites(){const r=await fetch('/api/v1/sites');const d=await r. tr.innerHTML=''+site.name+''+site.primary_domain+''+(site.php_version||'-')+''+site.status+''+site.document_root+''; tb.appendChild(tr);});} document.getElementById('logout').onclick=async()=>{await fetch('/api/v1/auth/logout',{method:'POST'});location.reload();}; -document.getElementById('siteForm').onsubmit=async e=>{e.preventDefault();const btn=document.getElementById('createBtn'),msg=document.getElementById('formMsg');btn.disabled=true;msg.className='msg'; -const res=await fetch('/api/v1/sites',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:name.value.trim().toLowerCase(),domain:domain.value.trim().toLowerCase(),php_version:php_version.value})}); -const d=await res.json().catch(()=>({}));if(!res.ok){msg.className='msg error';msg.textContent=d.error||'Ошибка';btn.disabled=false;return;} -msg.className='msg ok';msg.textContent='Сайт создан';siteForm.reset();btn.disabled=false;await loadPHP();loadSites();}; +document.getElementById('siteForm').onsubmit=async e=>{ +e.preventDefault(); +const btn=document.getElementById('createBtn'),msg=document.getElementById('formMsg'); +const siteName=document.getElementById('name'),siteDomain=document.getElementById('domain'),phpSelect=document.getElementById('php_version'); +btn.disabled=true;msg.className='msg';msg.textContent=''; +try{ +const res=await fetch('/api/v1/sites',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:siteName.value.trim().toLowerCase(),domain:siteDomain.value.trim().toLowerCase(),php_version:phpSelect.value})}); +const d=await res.json().catch(()=>({})); +if(!res.ok){msg.className='msg error';msg.textContent=d.error||'Ошибка';btn.disabled=false;return;} +msg.className='msg ok';msg.textContent='Сайт создан'; +document.getElementById('siteForm').reset(); +await loadPHP();loadSites(); +}catch(err){msg.className='msg error';msg.textContent='Сетевая ошибка';} +btn.disabled=false; +}; loadPHP();loadSites(); `, baseCSS, username) } diff --git a/internal/handler/site.go b/internal/handler/site.go index 1fc1a51..0ca6174 100644 --- a/internal/handler/site.go +++ b/internal/handler/site.go @@ -67,7 +67,7 @@ func (h *SiteHandler) Create(w http.ResponseWriter, r *http.Request) { errors.Is(err, sitesvc.ErrInvalidPHPVersion): writeError(w, http.StatusBadRequest, err.Error()) default: - writeError(w, http.StatusInternalServerError, "failed to create site") + writeError(w, http.StatusInternalServerError, "failed to create site: "+err.Error()) } return }