Generate navigation links
This commit is contained in:
@@ -126,6 +126,20 @@ extension Element {
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let relatedContentText: String
|
||||
|
||||
/**
|
||||
The text to display on the navigation element pointing to this element as the next page.
|
||||
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let navigationTextAsNextPage: String
|
||||
|
||||
/**
|
||||
The text to display on a navigation element pointing to this element as the previous page.
|
||||
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let navigationTextAsPreviousPage: String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,6 +185,10 @@ extension Element.LocalizedMetadata {
|
||||
self.externalUrl = log.unexpected(data.externalUrl, name: "externalUrl", source: source)
|
||||
self.relatedContentText = log
|
||||
.required(data.relatedContentText, name: "relatedContentText", source: source) ?? ""
|
||||
self.navigationTextAsNextPage = log
|
||||
.required(data.navigationTextAsNextPage, name: "navigationTextAsNextPage", source: source) ?? ""
|
||||
self.navigationTextAsPreviousPage = log
|
||||
.required(data.navigationTextAsPreviousPage, name: "navigationTextAsPreviousPage", source: source) ?? ""
|
||||
|
||||
guard isComplete else {
|
||||
return nil
|
||||
@@ -207,6 +225,8 @@ extension Element.LocalizedMetadata {
|
||||
self.cornerText = data.cornerText
|
||||
self.externalUrl = data.externalUrl
|
||||
self.relatedContentText = data.relatedContentText ?? parent.relatedContentText
|
||||
self.navigationTextAsPreviousPage = data.navigationTextAsPreviousPage ?? parent.navigationTextAsPreviousPage
|
||||
self.navigationTextAsNextPage = data.navigationTextAsNextPage ?? parent.navigationTextAsNextPage
|
||||
|
||||
guard isComplete else {
|
||||
return nil
|
||||
|
@@ -310,6 +310,15 @@ extension Element {
|
||||
elements.filter { $0.state.isShownInOverview }
|
||||
}
|
||||
|
||||
var linkedElements: [LinkedElement] {
|
||||
let items = sortedItems
|
||||
return items.enumerated().map { i, element in
|
||||
let previous = i+1 < items.count ? items[i+1] : nil
|
||||
let next = i > 0 ? items[i-1] : nil
|
||||
return (previous, element, next)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
The url of the top-level section of the element.
|
||||
*/
|
||||
|
@@ -119,6 +119,20 @@ extension GenericMetadata {
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let relatedContentText: String?
|
||||
|
||||
/**
|
||||
The text to display on a navigation element pointing to this element as the previous page.
|
||||
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let navigationTextAsPreviousPage: String?
|
||||
|
||||
/**
|
||||
The text to display on the navigation element pointing to this element as the next page.
|
||||
|
||||
This property is mandatory at root level, and is propagated to child elements.
|
||||
*/
|
||||
let navigationTextAsNextPage: String?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +156,8 @@ extension GenericMetadata.LocalizedMetadata: Codable {
|
||||
.cornerText,
|
||||
.externalUrl,
|
||||
.relatedContentText,
|
||||
.navigationTextAsPreviousPage,
|
||||
.navigationTextAsNextPage,
|
||||
]
|
||||
}
|
||||
|
||||
@@ -172,7 +188,9 @@ extension GenericMetadata.LocalizedMetadata {
|
||||
thumbnailSuffix: nil,
|
||||
cornerText: nil,
|
||||
externalUrl: nil,
|
||||
relatedContentText: nil)
|
||||
relatedContentText: nil,
|
||||
navigationTextAsPreviousPage: nil,
|
||||
navigationTextAsNextPage: nil)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -194,7 +212,9 @@ extension GenericMetadata.LocalizedMetadata {
|
||||
thumbnailSuffix: nil,
|
||||
cornerText: nil,
|
||||
externalUrl: nil,
|
||||
relatedContentText: "")
|
||||
relatedContentText: "",
|
||||
navigationTextAsPreviousPage: "",
|
||||
navigationTextAsNextPage: "")
|
||||
}
|
||||
|
||||
static var full: GenericMetadata.LocalizedMetadata {
|
||||
@@ -213,6 +233,8 @@ extension GenericMetadata.LocalizedMetadata {
|
||||
thumbnailSuffix: "",
|
||||
cornerText: "",
|
||||
externalUrl: "",
|
||||
relatedContentText: "")
|
||||
relatedContentText: "",
|
||||
navigationTextAsPreviousPage: "",
|
||||
navigationTextAsNextPage: "")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user