mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	fixed frontend script execution
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| const api = (function() { | ||||
| function Api() { | ||||
|     const $pluginButtons = $("#plugin-buttons"); | ||||
|  | ||||
|     async function activateNote(notePath) { | ||||
| @@ -14,8 +14,10 @@ const api = (function() { | ||||
|     } | ||||
|  | ||||
|     return { | ||||
|         __modules: {}, | ||||
|         __notes: {}, | ||||
|         addButtonToToolbar, | ||||
|         activateNote, | ||||
|         getInstanceName: noteTree.getInstanceName | ||||
|     } | ||||
| })(); | ||||
| } | ||||
| @@ -116,7 +116,16 @@ async function stopWatch(what, func) { | ||||
| } | ||||
|  | ||||
| function executeScript(script) { | ||||
|     eval(script); | ||||
|     const completeScript = ` | ||||
| (async function() { | ||||
|     const api = Api(); | ||||
|      | ||||
|     ${script} | ||||
| })();`; | ||||
|  | ||||
|     console.log(completeScript); | ||||
|  | ||||
|     eval(completeScript); | ||||
| } | ||||
|  | ||||
| function formatValueWithWhitespace(val) { | ||||
|   | ||||
| @@ -23,15 +23,15 @@ router.post('/job', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||
| })); | ||||
|  | ||||
| router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||
|     const noteIds = await attributes.getNoteIdsWithAttribute("run", "frontend_startup"); | ||||
|     const repository = new Repository(req); | ||||
|     const notes = await attributes.getNotesWithAttribute(repository, "run", "frontend_startup"); | ||||
|  | ||||
|     const scripts = []; | ||||
|  | ||||
|     for (const noteId of noteIds) { | ||||
|         const note = await repository.getNote(noteId); | ||||
|     for (const note of notes) { | ||||
|         const bundle = await script.getScriptBundle(note); | ||||
|  | ||||
|         scripts.push(await script.getNoteScript(note)); | ||||
|         scripts.push(bundle.script); | ||||
|     } | ||||
|  | ||||
|     res.send(scripts); | ||||
| @@ -40,8 +40,9 @@ router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||
| router.get('/subtree/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||
|     const repository = new Repository(req); | ||||
|     const note = await repository.getNote(req.params.noteId); | ||||
|     const bundle = await script.getScriptBundle(note); | ||||
|  | ||||
|     res.send(await script.getNoteScript(note, repository)); | ||||
|     res.send(bundle.script); | ||||
| })); | ||||
|  | ||||
| router.get('/render/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||
|   | ||||
| @@ -3,10 +3,10 @@ | ||||
| const sql = require('./sql'); | ||||
| const utils = require('./utils'); | ||||
| const sync_table = require('./sync_table'); | ||||
| const Repository = require('./repository'); | ||||
|  | ||||
| const BUILTIN_ATTRIBUTES = [ | ||||
|     'run_on_startup', | ||||
|     'frontend_startup', | ||||
|     'backend_startup', | ||||
|     'disable_versioning', | ||||
|     'calendar_root', | ||||
|     'hide_in_autocomplete', | ||||
| @@ -27,9 +27,7 @@ async function getNoteIdWithAttribute(name, value) { | ||||
|                 AND attributes.value = ?`, [name, value]); | ||||
| } | ||||
|  | ||||
| async function getNotesWithAttribute(dataKey, name, value) { | ||||
|     const repository = new Repository(dataKey); | ||||
|  | ||||
| async function getNotesWithAttribute(repository, name, value) { | ||||
|     let notes; | ||||
|  | ||||
|     if (value !== undefined) { | ||||
| @@ -44,8 +42,8 @@ async function getNotesWithAttribute(dataKey, name, value) { | ||||
|     return notes; | ||||
| } | ||||
|  | ||||
| async function getNoteWithAttribute(dataKey, name, value) { | ||||
|     const notes = getNotesWithAttribute(dataKey, name, value); | ||||
| async function getNoteWithAttribute(repository, name, value) { | ||||
|     const notes = getNotesWithAttribute(repository, name, value); | ||||
|  | ||||
|     return notes.length > 0 ? notes[0] : null; | ||||
| } | ||||
|   | ||||
| @@ -101,10 +101,6 @@ async function getRenderScript(note) { | ||||
|     return "async function() {" + subTreeScripts + note.content + "\r\n}"; | ||||
| } | ||||
|  | ||||
| async function getNoteScript(note) { | ||||
|  | ||||
| } | ||||
|  | ||||
| async function getScriptBundle(note, includedNoteIds = []) { | ||||
|     if (!note.isJavaScript()) { | ||||
|         return; | ||||
| @@ -150,6 +146,6 @@ module.exports = { | ||||
|     executeNote, | ||||
|     executeScript, | ||||
|     setJob, | ||||
|     getNoteScript, | ||||
|     getScriptBundle, | ||||
|     getRenderScript | ||||
| }; | ||||
| @@ -31,7 +31,7 @@ function ScriptContext(dataKey, startNote, allNotes) { | ||||
|     }; | ||||
|  | ||||
|     this.getNotesWithAttribute = async function (attrName, attrValue) { | ||||
|         return await attributes.getNotesWithAttribute(dataKey, attrName, attrValue); | ||||
|         return await attributes.getNotesWithAttribute(repository, attrName, attrValue); | ||||
|     }; | ||||
|  | ||||
|     this.getNoteWithAttribute = async function (attrName, attrValue) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user