mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
share support for attachment file download
This commit is contained in:
parent
44bcfd47c0
commit
0234ff5fca
@ -62,12 +62,29 @@ function renderText(result, note) {
|
|||||||
for (const linkEl of document.querySelectorAll("a")) {
|
for (const linkEl of document.querySelectorAll("a")) {
|
||||||
const href = linkEl.getAttribute("href");
|
const href = linkEl.getAttribute("href");
|
||||||
|
|
||||||
if (href?.startsWith("#")) {
|
if (!href?.startsWith("#")) {
|
||||||
const notePathSegments = href.split("/");
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const linkRegExp = /attachmentId=([a-zA-Z0-9_]+)/g;
|
||||||
|
let attachmentMatch
|
||||||
|
if (attachmentMatch = linkRegExp.exec(href)) {
|
||||||
|
const attachmentId = attachmentMatch[1];
|
||||||
|
const attachment = shaca.getAttachment(attachmentId);
|
||||||
|
|
||||||
|
if (attachment) {
|
||||||
|
linkEl.setAttribute("href", `api/attachments/${attachmentId}/download`);
|
||||||
|
linkEl.classList.add(`attachment-link`);
|
||||||
|
linkEl.classList.add(`role-${attachment.role}`);
|
||||||
|
linkEl.innerText = attachment.title;
|
||||||
|
} else {
|
||||||
|
linkEl.removeAttribute("href");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const [notePath] = href.split('?');
|
||||||
|
const notePathSegments = notePath.split("/");
|
||||||
const noteId = notePathSegments[notePathSegments.length - 1];
|
const noteId = notePathSegments[notePathSegments.length - 1];
|
||||||
const linkedNote = shaca.getNote(noteId);
|
const linkedNote = shaca.getNote(noteId);
|
||||||
|
|
||||||
if (linkedNote) {
|
if (linkedNote) {
|
||||||
linkEl.setAttribute("href", linkedNote.shareId);
|
linkEl.setAttribute("href", linkedNote.shareId);
|
||||||
linkEl.classList.add(`type-${linkedNote.type}`);
|
linkEl.classList.add(`type-${linkedNote.type}`);
|
||||||
|
@ -8,6 +8,7 @@ const shareRoot = require("./share_root");
|
|||||||
const contentRenderer = require("./content_renderer");
|
const contentRenderer = require("./content_renderer");
|
||||||
const assetPath = require("../services/asset_path");
|
const assetPath = require("../services/asset_path");
|
||||||
const appPath = require("../services/app_path");
|
const appPath = require("../services/app_path");
|
||||||
|
const utils = require("../services/utils.js");
|
||||||
|
|
||||||
function getSharedSubTreeRoot(note) {
|
function getSharedSubTreeRoot(note) {
|
||||||
if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) {
|
if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) {
|
||||||
@ -253,6 +254,29 @@ function register(router) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.get('/share/api/attachments/:attachmentId/download', (req, res, next) => {
|
||||||
|
shacaLoader.ensureLoad();
|
||||||
|
|
||||||
|
let attachment;
|
||||||
|
|
||||||
|
if (!(attachment = checkAttachmentAccess(req.params.attachmentId, req, res))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
addNoIndexHeader(attachment.note, res);
|
||||||
|
|
||||||
|
const utils = require("../services/utils");
|
||||||
|
|
||||||
|
const filename = utils.formatDownloadTitle(attachment.title, null, attachment.mime);
|
||||||
|
|
||||||
|
res.setHeader('Content-Disposition', utils.getContentDisposition(filename));
|
||||||
|
|
||||||
|
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||||
|
res.setHeader('Content-Type', attachment.mime);
|
||||||
|
|
||||||
|
res.send(attachment.getContent());
|
||||||
|
});
|
||||||
|
|
||||||
// used for PDF viewing
|
// used for PDF viewing
|
||||||
router.get('/share/api/notes/:noteId/view', (req, res, next) => {
|
router.get('/share/api/notes/:noteId/view', (req, res, next) => {
|
||||||
shacaLoader.ensureLoad();
|
shacaLoader.ensureLoad();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user