Files
bbs-server/lib/ui/windows/wiki_window.rb
2026-05-13 21:00:54 +02:00

29 lines
908 B
Ruby

# frozen_string_literal: true
module UI
module Windows
module_function
# Split-view wiki browser. Left=titles, right=selected page content
# (rendered with markdown-aware formatting).
def wiki(app, services:, category:, title:)
items = services[:wiki].list(category)
BBS::Windows::MasterDetail.open(app,
title: " #{title} ",
items: items,
item_label: ->(p) { p.title },
list_width: [32, app.cols / 3].max,
empty_message: ' (no pages found)',
close_button: false,
render_detail: ->(page, width) {
text = services[:wiki].content(page.id)
BBS::Markdown.to_lines(text, width: width - 1, theme: app.theme)
},
bottom_meta: ->(page) {
"#{page.created_at.to_s[0, 10]} #{services[:wiki].page_url(page.locale, page.path)}"
}
)
end
end
end