mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
added "restore this revision" button
This commit is contained in:
parent
a3661cb763
commit
0e4eec10b9
@ -82,6 +82,21 @@ async function setContentPane() {
|
|||||||
|
|
||||||
$title.html(revisionItem.title);
|
$title.html(revisionItem.title);
|
||||||
|
|
||||||
|
const $restoreRevisionButton = $('<button class="btn btn-sm" type="button">Restore this revision</button>');
|
||||||
|
|
||||||
|
$restoreRevisionButton.on('click', async () => {
|
||||||
|
const confirmDialog = await import('../dialogs/confirm.js');
|
||||||
|
const text = 'Do you want to restore this revision? This will overwrite current title/content of the note with this revision.';
|
||||||
|
|
||||||
|
if (await confirmDialog.confirm(text)) {
|
||||||
|
await server.put(`notes/${revisionItem.noteId}/restore-revision/${revisionItem.noteRevisionId}`);
|
||||||
|
|
||||||
|
$dialog.modal('hide');
|
||||||
|
|
||||||
|
toastService.showMessage('Note revision has been restored.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const $eraseRevisionButton = $('<button class="btn btn-sm" type="button">Delete this revision</button>');
|
const $eraseRevisionButton = $('<button class="btn btn-sm" type="button">Delete this revision</button>');
|
||||||
|
|
||||||
$eraseRevisionButton.on('click', async () => {
|
$eraseRevisionButton.on('click', async () => {
|
||||||
@ -98,6 +113,8 @@ async function setContentPane() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$titleButtons
|
$titleButtons
|
||||||
|
.append($restoreRevisionButton)
|
||||||
|
.append(' ')
|
||||||
.append($eraseRevisionButton)
|
.append($eraseRevisionButton)
|
||||||
.append(' ');
|
.append(' ');
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
const repository = require('../../services/repository');
|
const repository = require('../../services/repository');
|
||||||
const noteCacheService = require('../../services/note_cache');
|
const noteCacheService = require('../../services/note_cache');
|
||||||
const protectedSessionService = require('../../services/protected_session');
|
const protectedSessionService = require('../../services/protected_session');
|
||||||
|
const noteRevisionService = require('../../services/note_revisions');
|
||||||
const utils = require('../../services/utils');
|
const utils = require('../../services/utils');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
@ -109,6 +110,20 @@ async function eraseNoteRevision(req) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function restoreNoteRevision(req) {
|
||||||
|
const noteRevision = await repository.getNoteRevision(req.params.noteRevisionId);
|
||||||
|
|
||||||
|
if (noteRevision && !noteRevision.isErased) {
|
||||||
|
const note = await noteRevision.getNote();
|
||||||
|
|
||||||
|
await noteRevisionService.createNoteRevision(note);
|
||||||
|
|
||||||
|
note.title = noteRevision.title;
|
||||||
|
await note.setContent(await noteRevision.getContent());
|
||||||
|
await note.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function getEditedNotesOnDate(req) {
|
async function getEditedNotesOnDate(req) {
|
||||||
const date = utils.sanitizeSql(req.params.date);
|
const date = utils.sanitizeSql(req.params.date);
|
||||||
|
|
||||||
@ -141,5 +156,6 @@ module.exports = {
|
|||||||
downloadNoteRevision,
|
downloadNoteRevision,
|
||||||
getEditedNotesOnDate,
|
getEditedNotesOnDate,
|
||||||
eraseAllNoteRevisions,
|
eraseAllNoteRevisions,
|
||||||
eraseNoteRevision
|
eraseNoteRevision,
|
||||||
|
restoreNoteRevision
|
||||||
};
|
};
|
@ -145,6 +145,7 @@ function register(app) {
|
|||||||
apiRoute(GET, '/api/notes/:noteId/revisions/:noteRevisionId', noteRevisionsApiRoute.getNoteRevision);
|
apiRoute(GET, '/api/notes/:noteId/revisions/:noteRevisionId', noteRevisionsApiRoute.getNoteRevision);
|
||||||
apiRoute(DELETE, '/api/notes/:noteId/revisions/:noteRevisionId', noteRevisionsApiRoute.eraseNoteRevision);
|
apiRoute(DELETE, '/api/notes/:noteId/revisions/:noteRevisionId', noteRevisionsApiRoute.eraseNoteRevision);
|
||||||
route(GET, '/api/notes/:noteId/revisions/:noteRevisionId/download', [auth.checkApiAuthOrElectron], noteRevisionsApiRoute.downloadNoteRevision);
|
route(GET, '/api/notes/:noteId/revisions/:noteRevisionId/download', [auth.checkApiAuthOrElectron], noteRevisionsApiRoute.downloadNoteRevision);
|
||||||
|
apiRoute(PUT, '/api/notes/:noteId/restore-revision/:noteRevisionId', noteRevisionsApiRoute.restoreNoteRevision);
|
||||||
apiRoute(POST, '/api/notes/relation-map', notesApiRoute.getRelationMap);
|
apiRoute(POST, '/api/notes/relation-map', notesApiRoute.getRelationMap);
|
||||||
apiRoute(PUT, '/api/notes/:noteId/change-title', notesApiRoute.changeTitle);
|
apiRoute(PUT, '/api/notes/:noteId/change-title', notesApiRoute.changeTitle);
|
||||||
apiRoute(POST, '/api/notes/:noteId/duplicate/:parentNoteId', notesApiRoute.duplicateNote);
|
apiRoute(POST, '/api/notes/:noteId/duplicate/:parentNoteId', notesApiRoute.duplicateNote);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user