drop zone, and remove beta tag from mraid checker

This commit is contained in:
2026-05-29 13:20:33 +08:00
parent a1d3fde774
commit 5625d94106
21 changed files with 632 additions and 48 deletions

View File

@@ -67,10 +67,13 @@ func MobilePage(w http.ResponseWriter, r *http.Request) {
<div class="panel-header"><h3 class="panel-title">Inputs</h3></div>
<div class="panel-body">
<div class="control-group">
<div class="file-row">
<button id="pickFolder" class="secondary">Select Folder</button>
<button id="pick" class="secondary">Select File(s)</button>
<button id="clear" class="secondary">Clear</button>
<div id="dropZone" class="drop-zone">
<div class="file-row">
<button id="pickFolder" class="secondary">Select Folder</button>
<button id="pick" class="secondary">Select File(s)</button>
<button id="clear" class="secondary">Clear</button>
</div>
<div class="drop-zone-text">or drop HTML files or folders here</div>
</div>
<div id="fileName" class="file-name" style="margin-top:8px;">(no files selected)</div>
<div id="fileList" class="selected-list"></div>
@@ -165,6 +168,10 @@ function addFiles(files) {
renderSelection();
}
renderSelection();
setupDropZone('dropZone', statusEl, (j) => {
addFiles(j.files || []);
if (j.skipped) statusEl.textContent = 'Skipped ' + j.skipped + ' non-HTML or unavailable item(s).';
});
pickFolderBtn.addEventListener('click', async () => {
const r = await fetch('/api/mobile/pickFolder', { method:'POST' });
@@ -181,6 +188,7 @@ clearBtn.addEventListener('click', () => {
selectedPaths = [];
selectedPage = 0;
statusEl.textContent = '';
statusEl.classList.remove('is-busy');
renderSelection();
});
@@ -192,17 +200,20 @@ startBtn.addEventListener('click', async () => {
}
startBtn.disabled = true;
statusEl.textContent = 'Starting server...';
statusEl.classList.add('is-busy');
const r = await fetch('/api/mobile/start', {
method:'POST', headers:{'Content-Type':'application/json'},
body: JSON.stringify({ paths: selectedPaths }),
});
const j = await r.json();
if (j.error) {
statusEl.classList.remove('is-busy');
statusEl.innerHTML = '<span class="err">' + j.error + '</span>';
startBtn.disabled = false;
return;
}
currentUrls = j.urls;
statusEl.classList.remove('is-busy');
selectedIdx = 0;
statusEl.innerHTML = '<span class="ok">Sharing: ' + j.filename + '</span>';
shareInfo.style.display = '';
@@ -213,6 +224,7 @@ startBtn.addEventListener('click', async () => {
stopBtn.addEventListener('click', async () => {
await fetch('/api/mobile/stop', { method:'POST' });
statusEl.classList.remove('is-busy');
statusEl.textContent = 'Stopped.';
shareInfo.style.display = 'none';
currentUrls = [];