extends ../layout.pug include ../mixins/post.pug include ../mixins/boardnav.pug include ../mixins/boardheader.pug block head script(src='/js/all.js') title /#{board._id}/ - #{thread.subject||thread.postId} meta(property='og:site_name', value=meta.siteName) meta(property='og:title', content=thread.subject) meta(property='og:url', content=meta.url) meta(property='og:description', content=thread.nomarkup) if thread.files.length > 0 if thread.spoiler meta(property='og:image', content='/img/spoiler.png') else - const file = thread.files[0]; - const maintype = file.mimetype.split('/')[0]; case maintype when 'image' meta(property='og:image', content=`/img/${file.filename}`) when 'video' meta(property='og:video', content=`/img/${file.filename}`) when 'audio' meta(property='og:audio', content=`/img/${file.filename}`) default - break block content +boardheader() br include ../includes/postform.pug br include ../includes/announcements.pug include ../includes/stickynav.pug .pages +boardnav(null, true, true) - board.settings.ids ? const uids = new Set() : void 0; form(action=`/forms/board/${board._id}/actions` method='POST' enctype='application/x-www-form-urlencoded') hr(size=1) .thread +post(thread) for post in thread.replies - uids && post.userId && uids.add(post.userId) +post(post) hr(size=1) .statwrap .pages +boardnav(null, true, true) #threadstats span #{thread.replyposts} repl#{thread.replyposts === 1 ? 'y' : 'ies'} | | span #{thread.replyfiles} file#{thread.replyfiles === 1 ? '' : 's'} if board.settings.ids | | span #{uids.size} UID#{uids.size === 1 ? '' : 's'} .jsonly#livetext .dot#livecolor | Connecting... include ../includes/actionfooter.pug