239 lines
12 KiB
Plaintext
239 lines
12 KiB
Plaintext
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%;
|
|
}
|
|
.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}%
|
|
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")
|
|
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")
|
|
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
|