teddit/views/post.pug
2021-06-01 23:17:06 +02:00

247 lines
12 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

doctype html
html
head
title #{cleanTitle(post.title)} : #{subreddit}
include includes/head.pug
body(class=""+ (user_preferences.theme === 'auto' ? 'dark' : user_preferences.theme) + "")
include includes/topbar.pug
if post === null
h1 Error occured
p #{JSON.stringify(error_data)}
else
#post
if (post.over_18 && instance_nsfw_enabled === false && user_preferences.nsfw_enabled != 'true') || (post.over_18 && user_preferences.nsfw_enabled === 'false')
.nsfw-warning
span 18+
h2 You must be 18+ to view this community
p You must be at least eighteen years old to view this content. Are you over eighteen and willing to see adult content?
a(href="/") No thank you
a(href="?nsfw_enabled=true") Continue
p If you continue, <code>nsfw_enabled</code> cookie preference will be automatically set to <code>true</code>.
else
header
div
p subreddit:
a(href="/r/" + subreddit + "")
p /r/#{subreddit}
if user_preferences.post_media_max_height
if(post_media_max_heights.hasOwnProperty(user_preferences.post_media_max_height))
style.
#post .image img, #post .video video {
max-height: #{post_media_max_heights[user_preferences.post_media_max_height]}px;
max-width: 100%;
}
else if(!isNaN(user_preferences.post_media_max_height))
style.
#post .image img, #post .video video {
max-height: #{user_preferences.post_media_max_height}px;
max-width: 100%;
}
-
let video_muted = false
if(instance_videos_muted === true || user_preferences.videos_muted === 'true') {
video_muted = true
}
if(user_preferences.videos_muted === 'false') {
video_muted = false
}
.info
.score
div.arrow
span #{kFormatter(post.ups)}
if user_preferences.show_upvoted_percentage === 'true'
- let downvoted = parseInt(post.ups * (1 - post.upvote_ratio))
span.ratio(title="~"+ downvoted +" downvoted") #{(post.upvote_ratio * 100).toFixed(0)}%
div.arrow.down
.title
a(href="" + post.url + "", rel="noopener noreferrer")
h2 #{cleanTitle(post.title)}
!= post.link_flair
span(class="domain") (#{post.domain})
p.submitted
span(title="" + toUTCString(post.created) + "") submitted #{timeDifference(post.created)} by
if post.author === '[deleted]'
span [deleted]
else
a(href="/u/" + post.author + "")
| #{post.author}
!= post.user_flair
.links
if post.over_18
span.tag.nsfw NSFW
-
let back_url = "/r/" + subreddit + "/comments/" + post.id
let saved_post = false
if user_preferences.saved
each post_id in user_preferences.saved
if post_id === post.id
- saved_post = true
if saved_post
a(href="/unsave/" + post.id + "/?rk=" + redis_key + "&b=" + back_url + "") unsave
else
a(href="/save/" + post.id + "/?rk=" + redis_key + "&b=" + back_url + "") save
if post.crosspost.is_crosspost === true
.crosspost
.title
a(href="" + post.crosspost.permalink + "", rel="noopener noreferrer")
h2 #{cleanTitle(post.crosspost.title)}
span(class="domain") (#{post.domain})
.num_comments
| #{post.crosspost.num_comments} comments
.score
div.arrow
span #{kFormatter(post.crosspost.ups)}
if user_preferences.show_upvoted_percentage === 'true'
- let downvoted = parseInt(post.ups * (1 - post.upvote_ratio))
span.ratio(title="~"+ downvoted +" downvoted") #{post.upvote_ratio * 100}%
div.arrow.down
p.submitted
span(title="" + toUTCString(post.crosspost.created) + "") submitted #{timeDifference(post.crosspost.created)} by
if post.crosspost.author === '[deleted]'
span [deleted]
else
a(href="/u/" + post.crosspost.author + "")
| #{post.crosspost.author}
!= post.user_flair
p.to to
a(href="/r/" + post.crosspost.subreddit + "")
| #{post.crosspost.subreddit}
if !post.has_media
if post.images
.image
a(href="" + post.images.source + "")
img(src="" + post.images.source + "", alt="")
else
if post.media.not_hosted_in_reddit
.video
a(href="" + post.media.source + "")
img(src=""+ post.media.source +"")
p Embed URL:
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
p #{post.media.embed_src}
else
.video
video(controls="controls", autoplay="autoplay", loop="loop", muted=(video_muted ? true : false))
source(src="" + post.media.source + "", type="video/mp4")
| Your browser does not support the video element.
a(href="" + post.media.source + "") [media]
else
if !post.has_media
if post.gallery
.gallery
each item in post.gallery_items
.item
div
a(href="" + item.large + "", target="_blank")
img(src=""+ item.thumbnail +"", alt="")
a(href="" + item.source + "", target="_blank", class="source-link")
small source
if post.images
.image
a(href="" + post.images.source + "")
img(src="" + post.images.source + "", alt="")
else
if post.media
if post.media.not_hosted_in_reddit
if post.media.source === 'YouTube'
.video
.title
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
p #{cleanTitle(post.media.title)}
span(class="domain") (#{post.domain})
.video-holder
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
img(src="" + post.media.thumbnail + "")
div(class="youtube-info")
p YouTube video info:
p #{cleanTitle(post.media.title)} <a href="#{post.media.embed_src}">#{post.media.embed_src}</a>
p #{post.media.author_name} <a href="#{post.media.author_url}">#{post.media.author_url}</a>
else
if post.media.source === 'external'
if post.images
.image
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
img(src="" + post.images.source + "", alt="")
if !post.media.embed_src.startsWith("https://twitter.com")
p
| source:
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
p(class="source-url") #{post.media.embed_src}
else
.video
a(href="" + post.media.source + "")
img(src="" + post.media.source + "")
p Embed URL:
a(href="" + post.media.embed_src + "", target="_blank", rel="noopener noreferrer")
p #{post.media.embed_src}
else
.video
video(controls="controls", autoplay="autoplay", loop="loop", muted=(video_muted ? true : false))
source(src="" + post.media.source + "", type="video/mp4")
| Your browser does not support the video element.
a(href="" + post.media.source + "") [media]
if post.selftext
div.usertext-body !{post.selftext}
if post.poll_data
.poll
.votes #{post.poll_data.total_vote_count} votes
if !post.poll_data.options[0].vote_count
em Cannot fetch poll data (either the poll is only for logged in users, or the result is shown after voting is complete).
br
em Showing only voting options:
br
each option in post.poll_data.options
.option
if(option.vote_count)
- let perc = option.vote_count / post.poll_data.total_vote_count * 100
.background(style="width:" + perc + "%")
.vote_count #{option.vote_count} (#{perc.toFixed(0)} %)
.text #{option.text}
else
.vote_count
.text #{option.text}
.meta
if post.poll_data.voting_end_timestamp < new Date().getTime()
em voting ended #{timeDifference(post.poll_data.voting_end_timestamp/1000)}
else
em voting will end in #{timeDifference(post.poll_data.voting_end_timestamp/1000, true)}
if post.contest_mode
.infobar.blue
p this thread is in contest mode - contest mode randomizes comment sorting and hides scores.
if viewing_comment
div(class="infobar", id="c")
p you are viewing a single comment's thread.
a(href="" + post_url + "") view the rest of the comments →
.comments-info
p all #{post.num_comments} comments
.comments-sort
details
summary
if sortby === 'confidence'
span sorted by: <strong>best</strong>
if sortby === 'top'
span sorted by: <strong>top</strong>
if sortby === 'new'
span sorted by: <strong>new</strong>
if sortby === 'controversial'
span sorted by: <strong>controversial</strong>
if sortby === 'old'
span sorted by: <strong>old</strong>
if sortby === 'qa'
span sorted by: <strong>q&a</strong>
ul
li(class=sortby === 'confidence' ? 'active' : '')
a(href="?sort=confidence") best
li(class=sortby === 'top' ? 'active' : '')
a(href="?sort=top") top
li(class=sortby === 'new' ? 'active' : '')
a(href="?sort=new") new
li(class=sortby === 'controversial' ? 'active' : '')
a(href="?sort=controversial") controversial
li(class=sortby === 'old' ? 'active' : '')
a(href="?sort=old") old
li(class=sortby === 'qa' ? 'active' : '')
a(href="?sort=qa") Q&A
!= comments
include includes/footer.pug