47 lines
2.6 KiB
TypeScript
47 lines
2.6 KiB
TypeScript
import { App, PluginSettingTab, Setting } from "obsidian";
|
|
import type JekyllPublishPlugin from "./main";
|
|
|
|
export class JekyllPublishSettingTab extends PluginSettingTab {
|
|
constructor(app: App, private plugin: JekyllPublishPlugin) {
|
|
super(app, plugin);
|
|
}
|
|
|
|
display(): void {
|
|
const { containerEl } = this;
|
|
containerEl.empty();
|
|
const s = this.plugin.settings;
|
|
const save = () => this.plugin.saveSettings();
|
|
|
|
new Setting(containerEl).setName("Remote URL").setDesc("https:// or ssh:// git URL")
|
|
.addText((t) => t.setValue(s.remoteUrl).onChange((v) => { s.remoteUrl = v; save(); }));
|
|
new Setting(containerEl).setName("Branch")
|
|
.addText((t) => t.setValue(s.branch).onChange((v) => { s.branch = v; save(); }));
|
|
new Setting(containerEl).setName("Page directory")
|
|
.addText((t) => t.setValue(s.publishDir).onChange((v) => { s.publishDir = v; save(); }));
|
|
new Setting(containerEl).setName("Images directory")
|
|
.addText((t) => t.setValue(s.imagesDir).onChange((v) => { s.imagesDir = v; save(); }));
|
|
new Setting(containerEl).setName("Default image strategy")
|
|
.addDropdown((d) => d.addOption("flat-slug", "Flat, renamed to slug")
|
|
.addOption("per-post-folder", "Per-post subfolder")
|
|
.setValue(s.defaultImageStrategy)
|
|
.onChange((v) => { s.defaultImageStrategy = v as typeof s.defaultImageStrategy; save(); }));
|
|
new Setting(containerEl).setName("Commit message template").setDesc("{{title}} is substituted")
|
|
.addText((t) => t.setValue(s.commitMessageTemplate).onChange((v) => { s.commitMessageTemplate = v; save(); }));
|
|
new Setting(containerEl).setName("Git author name (optional)")
|
|
.addText((t) => t.setValue(s.authorName).onChange((v) => { s.authorName = v; save(); }));
|
|
new Setting(containerEl).setName("Git author email (optional)")
|
|
.addText((t) => t.setValue(s.authorEmail).onChange((v) => { s.authorEmail = v; save(); }));
|
|
|
|
containerEl.createEl("h3", { text: "Preset frontmatter" });
|
|
s.presetFrontmatter.forEach((row, i) => {
|
|
new Setting(containerEl)
|
|
.addText((t) => t.setPlaceholder("key").setValue(row.key).onChange((v) => { s.presetFrontmatter[i].key = v; save(); }))
|
|
.addText((t) => t.setPlaceholder("value").setValue(row.value).onChange((v) => { s.presetFrontmatter[i].value = v; save(); }))
|
|
.addExtraButton((b) => b.setIcon("trash").onClick(() => { s.presetFrontmatter.splice(i, 1); save(); this.display(); }));
|
|
});
|
|
new Setting(containerEl).addButton((b) =>
|
|
b.setButtonText("Add preset property").onClick(() => { s.presetFrontmatter.push({ key: "", value: "" }); save(); this.display(); })
|
|
);
|
|
}
|
|
}
|