preparing file deletion
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -136,6 +136,7 @@ public class FileModule extends BaseHandler implements FileService {
|
||||
if (file.isDirectory()){
|
||||
Map<String,Object> map = getDirectory(file);
|
||||
map.put("title",filename.replace("/company/"+cpId,company.name()));
|
||||
map.put("delete",true);
|
||||
return sendContent(ex,map);
|
||||
}
|
||||
return getFile(ex, file);
|
||||
@@ -192,6 +193,7 @@ public class FileModule extends BaseHandler implements FileService {
|
||||
if (file.isDirectory()){
|
||||
Map<String,Object> map = getDirectory(file);
|
||||
map.put("title",filename.replace("/project/"+prjId,project.name()));
|
||||
map.put("delete",true);
|
||||
return sendContent(ex,map);
|
||||
}
|
||||
return getFile(ex, file);
|
||||
@@ -214,6 +216,7 @@ public class FileModule extends BaseHandler implements FileService {
|
||||
if (file.isDirectory()){
|
||||
Map<String,Object> map = getDirectory(file);
|
||||
map.put("title",filename);
|
||||
map.put("delete",true);
|
||||
return sendContent(ex,map);
|
||||
}
|
||||
return getFile(ex, file);
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
let files = $state();
|
||||
let parent = $state(false);
|
||||
let form = $state(false);
|
||||
let path = $state(null)
|
||||
|
||||
let path = $state(null);
|
||||
let delete_allowed = $state(false);
|
||||
let available = $derived.by(isAvailable);
|
||||
|
||||
function isAvailable(){
|
||||
@@ -50,11 +50,33 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
function dropDir(p,name){
|
||||
if (confirm(t('confirm_delete',{element:name})+"\n\n"+t('deletes_nested'))) dropElement(p);
|
||||
}
|
||||
|
||||
|
||||
async function dropElement(url){
|
||||
const res = await fetch(url,{
|
||||
credentials: 'include',
|
||||
method: 'DELETE'
|
||||
});
|
||||
if (res.ok) {
|
||||
handleDirectory(res);
|
||||
} else {
|
||||
error(res);
|
||||
}
|
||||
}
|
||||
|
||||
function dropFile(p,name){
|
||||
if (confirm(t('confirm_delete',{element:name}))) dropElement(p);
|
||||
}
|
||||
|
||||
async function handleDirectory(res){
|
||||
let json = await res.json();
|
||||
if (json.dirs) children.dirs = json.dirs;
|
||||
if (json.files) children.files = json.files;
|
||||
if (json.title) children.title = json.title;
|
||||
delete_allowed = json.delete;
|
||||
yikes();
|
||||
}
|
||||
|
||||
@@ -136,7 +158,9 @@
|
||||
<li class="dir">
|
||||
<span class="symbol"></span>
|
||||
<a href={'/files'+k} {onclick}>{v}</a>
|
||||
<button class="symbol">x</button>
|
||||
{#if delete_allowed}
|
||||
<button class="symbol" onclick={e => dropDir(`/api/files${k}`,v)}></button>
|
||||
{/if}
|
||||
</li>
|
||||
{/each}
|
||||
{/if}
|
||||
@@ -153,7 +177,10 @@
|
||||
{#each Object.entries(children.files) as [k,v]}
|
||||
<li class="file">
|
||||
<span class="symbol"></span>
|
||||
<a href={'/api/files'+k} target="_blank">{v}</a>
|
||||
<a href={`/api/files${k}`} target="_blank">{v}</a>
|
||||
{#if delete_allowed}
|
||||
<button class="symbol" onclick={e => dropFile(`/api/files${k}`,v)}></button>
|
||||
{/if}
|
||||
</li>
|
||||
{/each}
|
||||
{/if}
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
"delete": "löschen",
|
||||
"delete_object": "{object} löschen",
|
||||
"DELETE_USERS": "Nutzer löschen",
|
||||
"deletes_nested": "Das wird auch alle enthaltenen Dateien löschen!",
|
||||
"delivery_date": "Lieferdatum",
|
||||
"depends_on": "hängt ab von",
|
||||
"description": "Beschreibung",
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
"delete": "delete",
|
||||
"delete_object": "delete {object}",
|
||||
"DELETE_USERS": "delete user",
|
||||
"deletes_nested": "This will also delete all contained files!",
|
||||
"delivery_date": "delivery date",
|
||||
"depends_on": "depends on",
|
||||
"description": "description",
|
||||
|
||||
Reference in New Issue
Block a user