44 lines
1.4 KiB
Swift
44 lines
1.4 KiB
Swift
import Foundation
|
|
|
|
struct FeedEntry {
|
|
|
|
let data: FeedEntryData
|
|
|
|
init(data: FeedEntryData) {
|
|
self.data = data
|
|
}
|
|
|
|
var content: String {
|
|
#warning("TODO: Select CSS classes based on existence of link (hover effects, mouse pointer")
|
|
var result = "<div class='card'>"
|
|
ImageGallery(id: data.entryId, images: data.images)
|
|
.addContent(to: &result)
|
|
|
|
if let url = data.link?.url {
|
|
result += "<div class='card-content' onclick=\"window.location.href='\(url)'\">"
|
|
} else {
|
|
result += "<div class='card-content'>"
|
|
}
|
|
result += "<h3>\(data.textAboveTitle)</h3>"
|
|
if let title = data.title {
|
|
result += "<h2>\(title.htmlEscaped())</h2>"
|
|
}
|
|
if !data.tags.isEmpty {
|
|
result += "<div class='tags'>"
|
|
for tag in data.tags {
|
|
result += "<span class='tag' onclick=\"location.href='\(tag.url)'; event.stopPropagation();\">\(tag.name)</span>"
|
|
//result += "<a class='tag' href='\(tag.url)'>\(tag.name)</a>"
|
|
}
|
|
result += "</div>"
|
|
}
|
|
for paragraph in data.text {
|
|
result += "<p>\(paragraph)</p>"
|
|
}
|
|
if let url = data.link {
|
|
result += "<div class='link-center'><div class='link'>\(url.text)</div></div>"
|
|
}
|
|
result += "</div></div>" // Closes card-content and card
|
|
return result
|
|
}
|
|
}
|