Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/modals/TaskCreationModal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1349,11 +1349,14 @@ export class TaskCreationModal extends TaskModal {

private generateFilename(taskData: TaskCreationData): string {
const context: FilenameContext = {
title: taskData.title || "",
status: taskData.status || "open",
priority: taskData.priority || "normal",
dueDate: taskData.due,
scheduledDate: taskData.scheduled,
taskData: {
title: taskData.title || "",
status: taskData.status || "open",
priority: taskData.priority || "normal",
due: taskData.due,
scheduled: taskData.scheduled,
},
date: new Date(),
};

return generateTaskFilename(context, this.plugin.settings);
Expand Down
13 changes: 8 additions & 5 deletions src/services/ICSNoteService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,15 @@ export class ICSNoteService {
// Generate filename context for ICS events
// Use clean event title for filename template variables, not the formatted noteTitle
const filenameContext: ICSFilenameContext = {
title: icsEvent.title, // Use clean event title for {title} variable
priority: "",
status: "",
taskData: {
title: icsEvent.title, // Use clean event title for {title} variable
priority: "",
status: "",
due: icsEvent.end,
scheduled: icsEvent.start,
},
date: eventStartDate,
dueDate: icsEvent.end,
scheduledDate: icsEvent.start,

icsEventTitle: icsEvent.title,
icsEventLocation: icsEvent.location,
icsEventDescription: icsEvent.description,
Expand Down
13 changes: 8 additions & 5 deletions src/services/TaskService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,12 +202,15 @@ export class TaskService {

// Generate filename
const filenameContext: FilenameContext = {
title: title,
priority: priority,
status: status,
taskData: {
title: title,
priority: priority,
status: status,
projects: projectsArray,
due: taskData.due,
scheduled: taskData.scheduled,
},
date: new Date(),
dueDate: taskData.due,
scheduledDate: taskData.scheduled,
};

const baseFilename = generateTaskFilename(filenameContext, this.plugin.settings);
Expand Down
79 changes: 0 additions & 79 deletions src/settings/tabs/appearanceTab.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,85 +59,6 @@ export function renderAppearanceTab(
const currentLabels = getPropertyLabels(plugin, currentProperties);
createHelpText(container, `Currently showing: ${currentLabels.join(", ")}`);


// Task Filenames Section
createSectionHeader(container, translate("settings.appearance.taskFilenames.header"));
createHelpText(container, translate("settings.appearance.taskFilenames.description"));

createToggleSetting(container, {
name: translate("settings.appearance.taskFilenames.storeTitleInFilename.name"),
desc: translate("settings.appearance.taskFilenames.storeTitleInFilename.description"),
getValue: () => plugin.settings.storeTitleInFilename,
setValue: async (value: boolean) => {
plugin.settings.storeTitleInFilename = value;
save();
// Re-render to show/hide other options
renderAppearanceTab(container, plugin, save);
},
});

if (!plugin.settings.storeTitleInFilename) {
createDropdownSetting(container, {
name: translate("settings.appearance.taskFilenames.filenameFormat.name"),
desc: translate("settings.appearance.taskFilenames.filenameFormat.description"),
options: [
{
value: "title",
label: translate(
"settings.appearance.taskFilenames.filenameFormat.options.title"
),
},
{
value: "zettel",
label: translate(
"settings.appearance.taskFilenames.filenameFormat.options.zettel"
),
},
{
value: "timestamp",
label: translate(
"settings.appearance.taskFilenames.filenameFormat.options.timestamp"
),
},
{
value: "custom",
label: translate(
"settings.appearance.taskFilenames.filenameFormat.options.custom"
),
},
],
getValue: () => plugin.settings.taskFilenameFormat,
setValue: async (value: string) => {
plugin.settings.taskFilenameFormat = value as any;
save();
// Re-render to update visibility
renderAppearanceTab(container, plugin, save);
},
ariaLabel: "Task filename generation format",
});

if (plugin.settings.taskFilenameFormat === "custom") {
createTextSetting(container, {
name: translate("settings.appearance.taskFilenames.customTemplate.name"),
desc: translate("settings.appearance.taskFilenames.customTemplate.description"),
placeholder: translate(
"settings.appearance.taskFilenames.customTemplate.placeholder"
),
getValue: () => plugin.settings.customFilenameTemplate,
setValue: async (value: string) => {
plugin.settings.customFilenameTemplate = value;
save();
},
ariaLabel: "Custom filename template with variables",
});

createHelpText(
container,
translate("settings.appearance.taskFilenames.customTemplate.helpText")
);
}
}

// Display Formatting Section
createSectionHeader(container, translate("settings.appearance.displayFormatting.header"));
createHelpText(container, translate("settings.appearance.displayFormatting.description"));
Expand Down
84 changes: 84 additions & 0 deletions src/settings/tabs/generalTab.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,90 @@ export function renderGeneralTab(
ariaLabel: "Excluded folder paths",
});

// Task Filenames Section
createSectionHeader(container, translate("settings.appearance.taskFilenames.header"));
createHelpText(container, translate("settings.appearance.taskFilenames.description"));

createToggleSetting(container, {
name: translate("settings.appearance.taskFilenames.storeTitleInFilename.name"),
desc: translate("settings.appearance.taskFilenames.storeTitleInFilename.description"),
getValue: () => plugin.settings.storeTitleInFilename,
setValue: async (value: boolean) => {
plugin.settings.storeTitleInFilename = value;
save();
// Re-render to show/hide other options
renderGeneralTab(container, plugin, save);
},
});

if (!plugin.settings.storeTitleInFilename) {
createDropdownSetting(container, {
name: translate("settings.general.taskFilenames.filenameFormat.name"),
desc: translate("settings.general.taskFilenames.filenameFormat.description"),
options: [
{
value: "title",
label: translate(
"settings.general.taskFilenames.filenameFormat.options.title"
),
},
{
value: "zettel",
label: translate(
"settings.general.taskFilenames.filenameFormat.options.zettel"
),
},
{
value: "timestamp",
label: translate(
"settings.general.taskFilenames.filenameFormat.options.timestamp"
),
},
{
value: "project",
label: translate(
"settings.general.taskFilenames.filenameFormat.options.project"
)
},
{
value: "custom",
label: translate(
"settings.appearance.taskFilenames.filenameFormat.options.custom"
),
},
],
getValue: () => plugin.settings.taskFilenameFormat,
setValue: async (value: string) => {
plugin.settings.taskFilenameFormat = value as any;
save();
// Re-render to update visibility
renderGeneralTab(container, plugin, save);
},
ariaLabel: "Task filename generation format",
});

if (plugin.settings.taskFilenameFormat === "custom") {
createTextSetting(container, {
name: translate("settings.appearance.taskFilenames.customTemplate.name"),
desc: translate("settings.appearance.taskFilenames.customTemplate.description"),
placeholder: translate(
"settings.appearance.taskFilenames.customTemplate.placeholder"
),
getValue: () => plugin.settings.customFilenameTemplate,
setValue: async (value: string) => {
plugin.settings.customFilenameTemplate = value;
save();
},
ariaLabel: "Custom filename template with variables",
});

createHelpText(
container,
translate("settings.appearance.taskFilenames.customTemplate.helpText")
);
}
}

// UI Language Section
createSectionHeader(container, translate("settings.features.uiLanguage.header"));
createHelpText(container, translate("settings.features.uiLanguage.description"));
Expand Down
4 changes: 2 additions & 2 deletions src/types/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export interface TaskNotesSettings {
defaultTaskStatus: string; // Changed to string to support custom statuses
taskOrgFiltersCollapsed: boolean; // Save collapse state of task organization filters
// Task filename settings
taskFilenameFormat: "title" | "zettel" | "timestamp" | "custom";
taskFilenameFormat: "title" | "zettel" | "timestamp" | "project" | "custom";
storeTitleInFilename: boolean;
customFilenameTemplate: string; // Template for custom format
// Task creation defaults
Expand Down Expand Up @@ -269,7 +269,7 @@ export interface ICSIntegrationSettings {
// Default folders
defaultNoteFolder: string; // Folder for notes created from ICS events
// Filename settings for ICS event notes
icsNoteFilenameFormat: "title" | "zettel" | "timestamp" | "custom";
icsNoteFilenameFormat: "title" | "zettel" | "timestamp" | "project" | "custom";
customICSNoteFilenameTemplate: string; // Template for custom format
// Automatic export settings
enableAutoExport: boolean; // Whether to automatically export tasks to ICS file
Expand Down
Loading