feat: restrict templater integration behind a setting

This commit is contained in:
Kelvin John Falk Szolnoky 2024-01-24 21:49:14 +01:00
parent 3369a4c6cc
commit 65540b5169
No known key found for this signature in database
GPG key ID: 02BA666D8C0E7E1B
2 changed files with 18 additions and 2 deletions

View file

@ -297,7 +297,9 @@ export default class MediaDbPlugin extends Plugin {
const targetFile = await this.createNote(this.mediaTypeManager.getFileName(mediaTypeModel), fileContent, options);
await useTemplaterPluginInFile(this.app, targetFile);
if (this.settings.enableTemplaterIntegration) {
await useTemplaterPluginInFile(this.app, targetFile);
}
} catch (e) {
console.warn(e);
new Notice(e.toString());
@ -376,7 +378,7 @@ export default class MediaDbPlugin extends Plugin {
frontMatter.dataSource = mediaTypeModel.dataSource;
}
if (hasTemplaterPlugin(this.app)) {
if (this.settings.enableTemplaterIntegration && hasTemplaterPlugin(this.app)) {
// Only support stringifyYaml for templater plugin
// Include the media variable in all templater commands by using a top level JavaScript execution command.
fileContent = `---\n<%* const media = ${JSON.stringify(mediaTypeModel)} %>\n${stringifyYaml(frontMatter)}---\n${fileContent}`;

View file

@ -17,6 +17,7 @@ export interface MediaDbPluginSettings {
customDateFormat: string;
openNoteInNewTab: boolean;
useDefaultFrontMatter: boolean;
enableTemplaterIntegration: boolean;
movieTemplate: string;
seriesTemplate: string;
@ -65,6 +66,7 @@ const DEFAULT_SETTINGS: MediaDbPluginSettings = {
customDateFormat: 'L',
openNoteInNewTab: true,
useDefaultFrontMatter: true,
enableTemplaterIntegration: false,
movieTemplate: '',
seriesTemplate: '',
@ -232,6 +234,18 @@ export class MediaDbSettingTab extends PluginSettingTab {
});
});
new Setting(containerEl)
.setName('Enable Templater integration')
.setDesc(
'Enable integration with the templater plugin, this also needs templater to be installed. Warning: Templater allows you to execute arbitrary JavaScript code and system commands.',
)
.addToggle(cb => {
cb.setValue(this.plugin.settings.enableTemplaterIntegration).onChange(data => {
this.plugin.settings.enableTemplaterIntegration = data;
this.plugin.saveSettings();
});
});
containerEl.createEl('h3', { text: 'New File Location' });
// region new file location
new Setting(containerEl)