diff --git a/internal/note/note.go b/internal/note/note.go
index 62c4d4d..e22179a 100644
--- a/internal/note/note.go
+++ b/internal/note/note.go
@@ -12,11 +12,10 @@ type Note struct {
Path string
Title string
Content string
+ Size int64
// HTMLContent string
- ModTime time.Time
// Directly in Note
Tags []string
- CreatedAt time.Time
UpdatedAt time.Time
Published bool
}
@@ -25,8 +24,12 @@ func NewNote() *Note {
return &Note{}
}
+func formatDateRep(date time.Time) string {
+ return date.Format("2006-01-02 15:04:05")
+}
+
func (n *Note) GetUpdateDateRep() string {
- return n.UpdatedAt.Format("2006-01-02 15:04:05")
+ return formatDateRep(n.UpdatedAt)
}
// ExtractTitle return the first level heading content ('# title')
diff --git a/internal/render/render.go b/internal/render/render.go
index a2dd740..639e08e 100644
--- a/internal/render/render.go
+++ b/internal/render/render.go
@@ -67,7 +67,7 @@ func (tm *TemplateManager) GetTemplate(td *TemplateData) (*template.Template, er
return tmpl, nil
}
-func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data interface{}) error {
+func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data any) error {
// Build the template files - include all necessary templates
var files []string
@@ -77,6 +77,9 @@ func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data inter
// Include noteList template (used by index)
files = append(files, tm.buildTemplatePath("noteList"))
+ // Include metadata template
+ files = append(files, tm.buildTemplatePath("metadata"))
+
// Add the specific template
files = append(files, tm.buildTemplatePath(name))
diff --git a/internal/render/render_test.go b/internal/render/render_test.go
index 1158653..deed064 100644
--- a/internal/render/render_test.go
+++ b/internal/render/render_test.go
@@ -100,6 +100,7 @@ func TestTemplateManagerRender(t *testing.T) {
writeTemplate(t, baseDir, "base.tmpl", `{{ define "base" }}{{ template "content" . }}{{ end }}`)
writeTemplate(t, baseDir, "noteList.tmpl", `{{ define "noteList" }}notes{{ end }}`)
writeTemplate(t, baseDir, "index.tmpl", `{{ define "content" }}hello{{ end }}`)
+ writeTemplate(t, baseDir, "metadata.tmpl", `{{ define "noteList" }}notes{{ end }}`)
tm := NewTemplateManager(baseDir)
rec := httptest.NewRecorder()
@@ -126,6 +127,7 @@ func TestTemplateManagerRender_MissingTemplate(t *testing.T) {
baseDir := t.TempDir()
writeTemplate(t, baseDir, "base.tmpl", `{{ define "base" }}{{ template "content" . }}{{ end }}`)
writeTemplate(t, baseDir, "noteList.tmpl", `{{ define "noteList" }}notes{{ end }}`)
+ writeTemplate(t, baseDir, "metadata.tmpl", `{{ define "noteList" }}notes{{ end }}`)
tm := NewTemplateManager(baseDir)
rec := httptest.NewRecorder()
diff --git a/internal/web/handler.go b/internal/web/handler.go
index 3572aa8..1c11ff4 100644
--- a/internal/web/handler.go
+++ b/internal/web/handler.go
@@ -45,6 +45,7 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// ViewState is built per-request, not shared
type ViewState struct {
Notes []*note.Note
+ Note *note.Note
RenderedNote template.HTML
SortBy string
SearchTerm string
@@ -153,6 +154,7 @@ func (h *Handler) handleNotes(w http.ResponseWriter, r *http.Request) {
}
// Add to state
+ state.Note = note
state.RenderedNote = htmlContent
state.LastActive = hash
diff --git a/internal/web/templates/index.tmpl b/internal/web/templates/index.tmpl
index 1e02112..6b42128 100644
--- a/internal/web/templates/index.tmpl
+++ b/internal/web/templates/index.tmpl
@@ -5,44 +5,5 @@