UNPKG

@rr0/cms

Version:

RR0 Content Management System (CMS)

64 lines (63 loc) 2.26 kB
import { LinkType } from "ssg-api"; export class TimeLinkDefaultHandler { constructor(service, urlBuilder, timeTextBuilder) { this.service = service; this.urlBuilder = urlBuilder; this.timeTextBuilder = timeTextBuilder; } contents(context) { const prevLink = this.prev(context); if (prevLink) { const urlBuilder = this.urlBuilder; let contentUrl = urlBuilder.matchExistingTimeFile(prevLink.url.substring(1)); if (contentUrl != urlBuilder.options.rootDir) { const text = this.service.titleFromFile(context, contentUrl, this.timeTextBuilder); if (text) { return { type: LinkType.prev, text, url: "/" + contentUrl }; } } } } next(context) { let fileName = context.file.name; if (this.isTimeFile(fileName)) { const service = this.service; const pos = service.files.indexOf(fileName); if (pos >= 0) { const nextFile = service.files[pos + 1]; if (nextFile) { const text = service.titleFromFile(context, nextFile, this.timeTextBuilder); return { type: LinkType.next, text, url: "/" + nextFile }; } } } } prev(context) { let fileName = context.file.name; if (this.isTimeFile(fileName)) { const service = this.service; const pos = service.files.indexOf(fileName); if (pos >= 0) { const prevFile = service.files[pos - 1]; if (prevFile) { const text = service.titleFromFile(context, prevFile, this.timeTextBuilder); if (text) { return { type: LinkType.prev, text, url: "/" + prevFile }; } } } } } start(context) { if (this.isTimeFile(context.file.name)) { return { type: LinkType.contents, text: "Chronologie", url: "/time/" }; } } isTimeFile(fileName) { return fileName.startsWith("time/"); } }