jschan - Anonymous imageboard software. Classic look, modern features and feel. Works without JavaScript and supports Tor, I2P, Lokinet, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

80 lines
2.6 KiB

extends ../layout.pug
include ../mixins/post.pug
include ../mixins/boardnav.pug
include ../mixins/managenav.pug
include ../mixins/boardheader.pug
include ../mixins/announcements.pug
block head
- const subjectString = thread.subject || (thread.nomarkup ? `${thread.nomarkup.substring(0, globalLimits.fieldLength.subject)}${thread.nomarkup.length > globalLimits.fieldLength.subject ? '...' : ''}` : thread.postId);
title /#{board._id}/ - #{subjectString}
if !modview
meta(property='og:title', content=thread.subject)
meta(property='og:description', content=thread.nomarkup)
if thread.files.length > 0
if thread.spoiler || thread.files[0].spoiler
meta(property='og:image', content='/file/spoiler.png')
else
- const file = thread.files[0];
- const maintype = file.mimetype.split('/')[0];
case maintype
when 'image'
when 'video'
when 'audio'
meta(property=`og:${maintype}`, content=`/file/${file.filename}`)
- break
default
- break
block content
+boardheader(modview ? __('Mod View') : null)
br
if thread.replyposts >= board.settings.replyLimit && !thread.cyclic && !modview
p.title.text-center #{__('⊖ Thread has reached reply limit.')}
else
include ../includes/postform.pug
br
+announcements()
include ../includes/stickynav.pug
if modview
+managenav(null, true)
else
.pages
+boardnav(null, true, true)
- const uids = board.settings.ids ? new Set() : void 0;
form(action=`/forms/board/${board._id}/${modview ? 'mod' : ''}actions` method='POST' enctype='application/x-www-form-urlencoded')
if modview
input(type='hidden' name='_csrf' value=csrf)
hr(size=1)
.thread
- uids && thread.userId && uids.add(thread.userId)
+post(thread)
for post in thread.replies
- uids && post.userId && uids.add(post.userId)
+post(post)
if thread.replyposts >= board.settings.replyLimit && !thread.cyclic && !modview
p.title.text-center #{__('⊖ Thread has reached reply limit.')}
else
a.bottom-reply.no-decoration.post-button(href='#postform') [#{__('New Reply')}]
hr(size=1)
.wrapbar
if modview
+managenav(null, true)
else
.pages
+boardnav(null, true, true)
#threadstats
span #{__n('%s replies', thread.replyposts)}
| |
span #{__n('%s files', thread.replyfiles + thread.files.length)}
if board.settings.ids
| |
span #{__n('%s UIDs', uids.size)}
.jsonly#livetext
.dot#livecolor
| #{__('Connecting...')}
input.postform-style.ml-5.di#updatepostsbutton(type='button' value=__('Update'))
if modview
include ../includes/actionfooter_manage.pug
else
include ../includes/actionfooter.pug