Templates 2.0 (#636)
Templates 2.0 and a whole bunch of other refactoring
This commit is contained in:
@@ -17,8 +17,14 @@ export async function pageComplete(completeEvent: CompleteEvent) {
|
||||
/render\s+\[\[|page:\s*["']\[\[/.test(
|
||||
completeEvent.linePrefix,
|
||||
);
|
||||
const tagToQuery = isInTemplateContext ? "template" : "page";
|
||||
let allPages: PageMeta[] = await queryObjects<PageMeta>(tagToQuery, {}, 5);
|
||||
|
||||
// When in a template context, we only want to complete template pages
|
||||
// When outside of a template context, we want to complete all pages except template pages
|
||||
let allPages: PageMeta[] = isInTemplateContext
|
||||
? await queryObjects<PageMeta>("template", {}, 5)
|
||||
: await queryObjects<PageMeta>("page", {
|
||||
filter: ["!=", ["attr", "tags"], ["string", "template"]],
|
||||
}, 5);
|
||||
const prefix = match[1];
|
||||
if (prefix.startsWith("!")) {
|
||||
// Federation prefix, let's first see if we're matching anything from federation that is locally synced
|
||||
|
||||
@@ -15,6 +15,27 @@ functions:
|
||||
command:
|
||||
name: "Editor: Toggle Dark Mode"
|
||||
|
||||
openCommandPalette:
|
||||
path: editor.ts:openCommandPalette
|
||||
command:
|
||||
name: "Open Command Palette"
|
||||
key: "Ctrl-/"
|
||||
mac: "Cmd-/"
|
||||
|
||||
openPageNavigator:
|
||||
path: editor.ts:openPageNavigator
|
||||
command:
|
||||
name: "Open Page Navigator"
|
||||
key: "Ctrl-k"
|
||||
mac: "Cmd-k"
|
||||
|
||||
openTemplateNavigator:
|
||||
path: editor.ts:openTemplateNavigator
|
||||
command:
|
||||
name: "Open Template Navigator"
|
||||
key: "Ctrl-Shift-t"
|
||||
mac: "Cmd-Shift-t"
|
||||
|
||||
# Page operations
|
||||
deletePage:
|
||||
path: "./page.ts:deletePage"
|
||||
@@ -35,6 +56,11 @@ functions:
|
||||
events:
|
||||
- editor:complete
|
||||
|
||||
reloadSettingsAndCommands:
|
||||
path: editor.ts:reloadSettingsAndCommands
|
||||
command:
|
||||
name: "System: Reload Settings and Commands"
|
||||
|
||||
# Navigation
|
||||
linkNavigate:
|
||||
path: "./navigate.ts:linkNavigate"
|
||||
|
||||
@@ -10,6 +10,18 @@ export async function setEditorMode() {
|
||||
}
|
||||
}
|
||||
|
||||
export function openCommandPalette() {
|
||||
return editor.openCommandPalette();
|
||||
}
|
||||
|
||||
export async function openPageNavigator() {
|
||||
await editor.openPageNavigator("page");
|
||||
}
|
||||
|
||||
export async function openTemplateNavigator() {
|
||||
await editor.openPageNavigator("template");
|
||||
}
|
||||
|
||||
export async function toggleDarkMode() {
|
||||
let darkMode = await clientStore.get("darkMode");
|
||||
darkMode = !darkMode;
|
||||
@@ -34,3 +46,8 @@ export async function moveToPosCommand() {
|
||||
export async function customFlashMessage(_def: any, message: string) {
|
||||
await editor.flashNotification(message);
|
||||
}
|
||||
|
||||
export async function reloadSettingsAndCommands() {
|
||||
await editor.reloadSettingsAndCommands();
|
||||
await editor.flashNotification("Reloaded settings and commands");
|
||||
}
|
||||
|
||||
+20
-9
@@ -14,15 +14,20 @@ export async function deletePage() {
|
||||
await space.deletePage(pageName);
|
||||
}
|
||||
|
||||
export async function copyPage(_def: any, predefinedNewName: string) {
|
||||
const oldName = await editor.getCurrentPage();
|
||||
let suggestedName = predefinedNewName || oldName;
|
||||
export async function copyPage(
|
||||
_def: any,
|
||||
sourcePage?: string,
|
||||
toName?: string,
|
||||
) {
|
||||
const currentPage = await editor.getCurrentPage();
|
||||
const fromName = sourcePage || currentPage;
|
||||
let suggestedName = toName || fromName;
|
||||
|
||||
if (isFederationPath(oldName)) {
|
||||
const pieces = oldName.split("/");
|
||||
if (isFederationPath(fromName)) {
|
||||
const pieces = fromName.split("/");
|
||||
suggestedName = pieces.slice(1).join("/");
|
||||
}
|
||||
const newName = await editor.prompt(`Copy to new page:`, suggestedName);
|
||||
const newName = await editor.prompt(`Copy to page:`, suggestedName);
|
||||
|
||||
if (!newName) {
|
||||
return;
|
||||
@@ -44,11 +49,17 @@ export async function copyPage(_def: any, predefinedNewName: string) {
|
||||
}
|
||||
}
|
||||
|
||||
const text = await editor.getText();
|
||||
const text = await space.readPage(fromName);
|
||||
|
||||
console.log("Writing new page to space");
|
||||
await space.writePage(newName, text);
|
||||
|
||||
console.log("Navigating to new page");
|
||||
await editor.navigate(newName);
|
||||
if (currentPage === fromName) {
|
||||
// If we're copying the current page, navigate there
|
||||
console.log("Navigating to new page");
|
||||
await editor.navigate(newName);
|
||||
} else {
|
||||
// Otherwise just notify of success
|
||||
await editor.flashNotification("Page copied successfully");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user