implemented image embedding links

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-10-05 23:25:49 +02:00
parent 20d0247c90
commit 9cefc402b5
7 changed files with 39 additions and 2 deletions

View File

@@ -6,6 +6,7 @@
import { t } from '../../translations.svelte';
import { user } from '../../user.svelte';
const image_extensions = ['jpg','jpeg','gif','png','svg'];
const router = useTinyRouter();
let children = $state({});
let new_dir = $state(null);
@@ -80,12 +81,17 @@
yikes();
}
function is_image(file){
let parts = file.toLowerCase().split('.');
let ext = parts.pop();
return image_extensions.includes(ext);
}
async function loadChildren(p){
p = p.substring(6);
if (p == '') p = '/';
children = { dirs : {}, files : {}, title : p};
path = p;
console.log(p);
if (p == '/'){
children.dirs[`/user/${user.id}`] = t('my_files');
children.dirs['/project'] = t('projects')
@@ -106,6 +112,12 @@
}
}
function markdown(file){
let parts = file.split('/');
let md = `![${parts.pop()}](/api/files${file})`;
navigator.clipboard.writeText(md);
}
function onclick(ev){
ev.preventDefault();
ev.stopPropagation();
@@ -178,8 +190,11 @@
<li class="file">
<span class="symbol"></span>
<a href={`/api/files${k}`} target="_blank">{v}</a>
{#if is_image(k)}
<button class="symbol" title={'markdown_code'} onclick={e => markdown(k)}></button>
{/if}
{#if delete_allowed}
<button class="symbol" onclick={e => dropFile(`/api/files${k}`,v)}></button>
<button class="symbol" title={t('delete_object',{'object':t('file')})} onclick={e => dropFile(`/api/files${k}`,v)}></button>
{/if}
</li>
{/each}

View File

@@ -84,6 +84,7 @@
"failed": "fehlgeschlagen",
"failed_login_attempts" : "Account nach {attempts} fehlgeschlagenen Logins gesperrt bis {release_time}",
"file": "Datei",
"files": "Dateien",
"filter": "Filter",
"footer": "Fuß-Text",
@@ -123,6 +124,7 @@
"logout_user": "{user} abmelden",
"long_click_to_edit": "lang klicken zum Bearbeiten",
"markdown_code": "Markdown-Code",
"MANAGE_LOGIN_SERVICES": "Login-Services verwalten",
"member": "Mitarbeiter",
"members": "Mitarbeiter",

View File

@@ -123,6 +123,7 @@
"logout_user": "logout {user}",
"long_click_to_edit": "click long to edit",
"markdown_code": "Markdown-Code",
"MANAGE_LOGIN_SERVICES": "manage login services",
"member": "member",
"members": "members",

View File

@@ -659,4 +659,8 @@ li.task button.symbol:nth-child(1){
.timetracks .selected td:not(.year):not(.month){
background: skyblue;
}
.markdown image{
max-width: 75%;
}

View File

@@ -298,6 +298,11 @@ span.timetracking {
right: 0;
top: 0;
}
.markdown img{
max-width: 75%;
}
table{
min-width: 30vw;
}

View File

@@ -294,6 +294,11 @@ span.timetracking {
right: 0;
top: 0;
}
.markdown img{
max-width: 75%;
}
table{
min-width: 30vw;
}

View File

@@ -298,6 +298,11 @@ span.timetracking {
right: 0;
top: 0;
}
.markdown img{
max-width: 75%;
}
table{
min-width: 30vw;
}