extends ../layout.pug include ../mixins/globalmanagenav.pug block head title #{__('Settings')} block content h1.board-title #{__('Global Management')} br +globalmanagenav('settings') hr(size=1) h4.no-m-p #{__('Delete board')}: .form-wrapper.flexleft.mt-10 form.form-post(action=`/forms/global/deleteboard`, enctype='application/x-www-form-urlencoded', method='POST') input(type='hidden' name='_csrf' value=csrf) .row .label #{__('Board URI')}: input(type='text' name='uri' required) .row .label #{__("I'm sure")} label.postform-style.ph-5 input(type='checkbox', name='confirm', value='true' required) input(type='submit', value=__('Submit')) hr(size=1) h4.no-m-p #{__('Settings')}: .form-wrapper.flexleft form.form-post(action=`/forms/global/settings`, enctype='application/x-www-form-urlencoded', method='POST') input(type='hidden' name='_csrf' value=csrf) .mv-10 .sm#tab-1 .sm#tab-2 .sm#tab-3 .sm#tab-4 .sm#tab-5 .sm#tab-6 .sm#tab-7 .sm#tab-8 .sm#tab-9 .sm#tab-10 .tabbed-area ul.tabs.group li a(href='#tab-1') #{__('General')} li a(href='#tab-2') #{__('Security')} li a(href='#tab-3') #{__('Limits')} li a(href='#tab-4') #{__('Captcha')} li a(href='#tab-5') #{__('Antispam')} li a(href='#tab-6') #{__('Style')} li a(href='#tab-7') #{__('Webring')} li a(href='#tab-8') #{__('Web3')} li a(href='#tab-9') #{__('Files & Thumbnails')} li a(href='#tab-10') #{__('Frontend Script Defaults')} li a(href='#tab-11') #{__('Board Defaults')} .box-wrap .tab.tab-1 .col .row .label #{__('Global Announcement')} textarea(name='global_announcement') #{settings.globalAnnouncement.raw} .row .label #{__('Country Code Header')} input(type='text' name='country_code_header' value=settings.countryCodeHeader) .row .label #{__('IP Header')} input(type='text' name='ip_header' value=settings.ipHeader) .row .label #{__('Meta Site Name')} input(type='text' name='meta_site_name' value=settings.meta.siteName) .row .label #{__('Meta URL')} input(type='text' name='meta_url' value=settings.meta.url) .row .label #{__('Language')} select(name='language') each language in languages option(value=language selected=settings.language === language) #{__(language)} (#{language}) .row .label #{__('Disable Anonymizer File Posting')} label.postform-style.ph-5 input(type='checkbox', name='disable_anonymizer_file_posting', value='true' checked=settings.disableAnonymizerFilePosting) .row .label #{__('Stats Count Anonymizers')} label.postform-style.ph-5 input(type='checkbox', name='stats_count_anonymizers', value='true' checked=settings.statsCountAnonymizers) .row .label #{__('Prune Files Immediately')} label.postform-style.ph-5 input(type='checkbox', name='prune_immediately', value='true' checked=settings.pruneImmediately) .row .label #{__('Fuzzy Hash Images')} label.postform-style.ph-5 input(type='checkbox', name='hash_images' value='true' checked=settings.hashImages) .row .label #{__('Template Cache')} label.postform-style.ph-5 input(type='checkbox', name='cache_templates' value='true' checked=settings.cacheTemplates) .row .label #{__('Template Generation Lock Time')} input(type='number' name='lock_wait' value=settings.lockWait) .row .label #{__('Hot Threads Limit')} input(type='number' name='hot_threads_limit' value=settings.hotThreadsLimit) .row .label #{__('Hot Threads Reply Threshold')} input(type='number' name='hot_threads_threshold' value=settings.hotThreadsThreshold) .row .label #{__('Hot Threads Max Age')} input(type='text' name='hot_threads_max_age' placeholder=__('e.g. 1mo') value=settings.hotThreadsMaxAge) .row .label #{__('Overboard Index Thread Limit')} input(type='number' name='overboard_limit' value=settings.overboardLimit) .row .label #{__('Overboard Catalog Thread Limit')} input(type='number' name='overboard_catalog_limit' value=settings.overboardCatalogLimit) .row .label #{__('Overboard Reverse Image Search')} label.postform-style.ph-5 input(type='checkbox', name='overboard_reverse_links' value='true' checked=settings.overboardReverseLinks) .row .label #{__('Allow Custom Overboard')} label.postform-style.ph-5 input(type='checkbox', name='allow_custom_overboard' value='true' checked=settings.allowCustomOverboard) .row .label | #{__('External Archive Links URL')} | small | ( a(href='/faq.html#archive-reverse-url-format') ? | ) input(type='text', name='archive_links', value=settings.archiveLinksURL) .row .label | #{__('Reverse Image Search Links URL')} | small | ( a(href='/faq.html#archive-reverse-url-format') ? | ) input(type='text', name='reverse_links', value=settings.reverseImageLinksURL) .row .label #{__('Prune Modlogs Days')} input(type='number', name='prune_modlogs' value=settings.pruneModlogs) .tab.tab-2 .col .row .label #{__('Referer Check')} label.postform-style.ph-5 input(type='checkbox', name='referrer_check', value='true' checked=settings.refererCheck) .row .label #{__('Allowed Hosts')} textarea(name='allowed_hosts' placeholder=__('Newline separated')) #{settings.allowedHosts.join('\n')} .row .label #{__('Secure Cookies')} label.postform-style.ph-5 input(type='checkbox', name='secure_cookies', value='true' checked=settings.secureCookies) .row .label #{__("Don't store raw IPs")} label.postform-style.ph-5 input(type='checkbox', name='dont_store_raw_ips', value='true' checked=settings.dontStoreRawIps) .row .label #{__('Prune IPs Days')} input(type='number', name='prune_ips' value=settings.pruneIps) .row .label #{__('Use Socks Proxy')} label.postform-style.ph-5 input(type='checkbox', name='proxy_enabled', value='true' placeholder='socks5h://127.0.0.1:9050' checked=settings.proxy.enabled) .row .label #{__('Proxy Address')} input(type='text', name='proxy_address', value=settings.proxy.address) .tab.tab-3 .col .row .label #{__('Default Ban Duration')} input(type='text', name='default_ban_duration', placeholder=__('e.g. 1w'), value=settings.defaultBanDuration) .row .label #{__('Quote Limit')} input(type='number', name='quote_limit', value=settings.quoteLimit) .row .label #{__('Preview Replies')} input(type='number', name='preview_replies', value=settings.previewReplies) .row .label #{__('Sticky Preview Replies')} input(type='number', name='sticky_preview_replies', value=settings.stickyPreviewReplies) .row .label #{__('Early 404 Fraction')} input(type='number', name='early_404_fraction', value=settings.early404Fraction) .row .label #{__('Early 404 Replies')} input(type='number', name='early_404_replies', value=settings.early404Replies) .row .label #{__('Max Homepage News Entries')} input(type='number', name='max_recent_news', value=settings.maxRecentNews) .row .label #{__('Inactive Account Time')} input(type='text', name='inactive_account_time', placeholder=__('e.g. 1w'), value=settings.inactiveAccountTime) .row .label #{__('Inactive Account Action')} select(name='inactive_account_action') option(value='0', selected=settings.inactiveAccountAction === 0) #{__('Do nothing')} option(value='1', selected=settings.inactiveAccountAction === 1) #{__('Forfeit staff positions')} option(value='2', selected=settings.inactiveAccountAction === 2) #{__('Delete Account')} .row .label #{__('Abandoned Board Action')} select(name='abandoned_board_action') option(value='0', selected=settings.abandonedBoardAction === 0) #{__('Do nothing')} option(value='1', selected=settings.abandonedBoardAction === 1) #{__('Lock board')} option(value='2', selected=settings.abandonedBoardAction === 2) #{__('Lock+Unlist board')} option(value='3', selected=settings.abandonedBoardAction === 3) #{__('Delete board')} .row h4.mv-5 #{__('Global Limits')} .row .label #{__('Reply Limit Min')} input(type='number' name='global_limits_reply_limit_min' value=settings.globalLimits.replyLimit.min) .row .label #{__('Reply Limit Max')} input(type='number' name='global_limits_reply_limit_max' value=settings.globalLimits.replyLimit.max) .row .label #{__('Thread Limit Min')} input(type='number' name='global_limits_thread_limit_min' value=settings.globalLimits.threadLimit.min) .row .label #{__('Thread Limit Max')} input(type='number' name='global_limits_thread_limit_max' value=settings.globalLimits.threadLimit.max) .row .label #{__('Bump Limit Min')} input(type='number' name='global_limits_bump_limit_min' value=settings.globalLimits.bumpLimit.min) .row .label #{__('Bump Limit Max')} input(type='number' name='global_limits_bump_limit_max' value=settings.globalLimits.bumpLimit.max) .row .label #{__('Files Per Post Max')} input(type='number' name='global_limits_post_files_max' value=settings.globalLimits.postFiles.max) .row .label #{__('Post File Size Max')} input(type='number' name='global_limits_post_files_size_max' value=settings.globalLimits.postFilesSize.max) .row .label #{__('Custom Pages Max Characters')} input(type='number' name='global_limits_custom_pages_max_length' value=settings.globalLimits.customPages.maxLength) .row .label #{__('Total Custom Pages Per Board')} input(type='number' name='global_limits_custom_pages_max' value=settings.globalLimits.customPages.max) .row .label #{__('Banner Width Max')} input(type='number' name='global_limits_banner_files_width' value=settings.globalLimits.bannerFiles.width) .row .label #{__('Banner Height Max')} input(type='number' name='global_limits_banner_files_height' value=settings.globalLimits.bannerFiles.height) .row .label #{__('Force 3:1 Banner Aspect Ratio')} label.postform-style.ph-5 input(type='checkbox', name='global_limits_banner_files_force_aspect_ratio' value='true' checked=settings.globalLimits.bannerFiles.forceAspectRatio) .row .label #{__('Banner File Size Max')} input(type='number' name='global_limits_banner_files_size_max' value=settings.globalLimits.bannerFilesSize.max) .row .label #{__('Banners Per Upload Max')} input(type='number' name='global_limits_banner_files_max' value=settings.globalLimits.bannerFiles.max) .row .label #{__('Total Banners Per Board')} input(type='number' name='global_limits_banner_files_total' value=settings.globalLimits.bannerFiles.total) .row .label #{__('Flag File Size Max')} input(type='number' name='global_limits_flag_files_size_max' value=settings.globalLimits.flagFilesSize.max) .row .label #{__('Flags Per Upload Max')} input(type='number' name='global_limits_flag_files_max' value=settings.globalLimits.flagFiles.max) .row .label #{__('Total Flags Per Board')} input(type='number' name='global_limits_flag_files_total' value=settings.globalLimits.flagFiles.total) .row .label #{__('Asset File Size Max')} input(type='number' name='global_limits_asset_files_size_max' value=settings.globalLimits.assetFilesSize.max) .row .label #{__('Assets Per Upload Max')} input(type='number' name='global_limits_asset_files_max' value=settings.globalLimits.assetFiles.max) .row .label #{__('Total Assets Per Board')} input(type='number' name='global_limits_asset_files_total' value=settings.globalLimits.assetFiles.total) .row .label #{__('Max Filters Per Board')} input(type='number' name='global_limits_filters_max' value=settings.globalLimits.filters.max) .row h4.mv-5 #{__('Field Length Limits')} .row .label #{__('Name')} input(type='number', name='global_limits_field_length_name' value=settings.globalLimits.fieldLength.name) .row .label #{__('Email')} input(type='number', name='global_limits_field_length_email' value=settings.globalLimits.fieldLength.email) .row .label #{__('Subject')} input(type='number', name='global_limits_field_length_subject' value=settings.globalLimits.fieldLength.subject) .row .label #{__('Post Password')} input(type='number', name='global_limits_field_length_postpassword' value=settings.globalLimits.fieldLength.postpassword) .row .label #{__('Message')} input(type='number', name='global_limits_field_length_message' value=settings.globalLimits.fieldLength.message) .row .label #{__('Report Reason')} input(type='number', name='global_limits_field_length_report_reason' value=settings.globalLimits.fieldLength.report_reason) .row .label #{__('Ban Reason')} input(type='number', name='global_limits_field_length_ban_reason' value=settings.globalLimits.fieldLength.ban_reason) .row .label #{__('Log Messages')} input(type='number', name='global_limits_field_length_log_message' value=settings.globalLimits.fieldLength.log_message) .row .label #{__('Board URI')} input(type='number', name='global_limits_field_length_uri' value=settings.globalLimits.fieldLength.uri) .row .label #{__('Board Name')} input(type='number', name='global_limits_field_length_boardname' value=settings.globalLimits.fieldLength.boardname) .row .label #{__('Board Description')} input(type='number', name='global_limits_field_length_description' value=settings.globalLimits.fieldLength.description) .row .label #{__('Multi Input Form Anon')} input(type='number', name='global_limits_multi_input_posts_anon' value=settings.globalLimits.multiInputs.posts.anon) .row .label #{__('Multi Input Form Staff')} input(type='number', name='global_limits_multi_input_posts_staff' value=settings.globalLimits.multiInputs.posts.staff) .tab.tab-4 .col .row .label #{__('Type')} select(name='captcha_options_type') option(value='text', selected=settings.captchaOptions.type === 'text') #{__('Text')} option(value='grid', selected=settings.captchaOptions.type === 'grid') #{__('Grid v1')} option(value='grid2', selected=settings.captchaOptions.type === 'grid2') #{__('Grid v2')} option(value='google', selected=settings.captchaOptions.type === 'google') #{__('Google')} option(value='hcaptcha', selected=settings.captchaOptions.type === 'hcaptcha') #{__('Hcaptcha')} option(value='yandex', selected=settings.captchaOptions.type === 'yandex') #{__('Yandex')} .row .label #{__('Generate Limit')} input(type='number' name='captcha_options_generate_limit' value=settings.captchaOptions.generateLimit) .row .label #{__('Font')} select(name='captcha_options_font') option(value='default' selected=(settings.captchaOptions.font === 'default')) #{__('Default')} each font in fontList option(value=font.path selected=(settings.captchaOptions.font === font.path)) #{font.name} .row h4.mv-5 #{__('Text Captcha Options')} .row .label #{__('Strikethrough Effect')} label.postform-style.ph-5 input(type='checkbox', name='captcha_options_text_line', value='true' checked=settings.captchaOptions.text.line) .row .label #{__('Wave Effect Strength')} label.postform-style.ph-5 input(type='range' name='captcha_options_text_wave' min='0' max='10' value=settings.captchaOptions.text.wave) .row .label #{__('Paint Effect Strength')} label.postform-style.ph-5 input(type='range' name='captcha_options_text_paint' min='0' max='10' value=settings.captchaOptions.text.paint) .row .label #{__('Noise Effect Strength')} label.postform-style.ph-5 input(type='range' name='captcha_options_text_noise' min='0' max='10' value=settings.captchaOptions.text.noise) .row h4.mv-5 #{__('Grid Captcha Options')} .row .label #{__('Image Size')} input(type='number' name='captcha_options_grid_image_size' value=settings.captchaOptions.grid.imageSize) .row .label #{__('Grid Size')} input(type='number' name='captcha_options_grid_size' value=settings.captchaOptions.grid.size) .row .label #{__('Icon Offset')} input(type='number' name='captcha_options_grid_icon_y_offset' value=settings.captchaOptions.grid.iconYOffset) .row .label #{__('True Characters')} textarea(name='captcha_options_grid_trues' placeholder=__('Newline separated')) #{settings.captchaOptions.grid.trues.join('\n')} .row .label #{__('False Characters')} textarea(name='captcha_options_grid_falses' placeholder=__('Newline separated')) #{settings.captchaOptions.grid.falses.join('\n')} .row .label #{__('Question Text')} input(type='text' name='captcha_options_grid_question' value=settings.captchaOptions.grid.question) .row .label #{__('Edge Effect Strength')} label.postform-style.ph-5 input(type='range' name='captcha_options_grid_edge' min='0' max='50' value=settings.captchaOptions.grid.edge) .row .label #{__('Noise Effect Strength')} label.postform-style.ph-5 input(type='range' name='captcha_options_grid_noise' min='0' max='10' value=settings.captchaOptions.grid.noise) .row h4.mv-5 #{__('Captcha Distortion')} .row .label #{__('Minimum Distortions')} input(type='number' name='captcha_options_num_distorts_min' value=settings.captchaOptions.numDistorts.min) .row .label #{__('Maximum Distortions')} input(type='number' name='captcha_options_num_distorts_max' value=settings.captchaOptions.numDistorts.max) .row .label #{__('Distortion Intensity')} input(type='number' name='captcha_options_distortion' value=settings.captchaOptions.distortion) .tab.tab-5 .col .row .label #{__('Block Bypass')} label.postform-style.ph-5 input(type='checkbox', name='block_bypass_enabled', value='true' checked=settings.blockBypass.enabled) .row .label #{__('Force Anonymizers')} label.postform-style.ph-5 input(type='checkbox', name='block_bypass_force_anonymizers', value='true' checked=settings.blockBypass.forceAnonymizers) .row .label #{__('Bypass DNSBL')} label.postform-style.ph-5 input(type='checkbox', name='block_bypass_bypass_dnsbl', value='true' checked=settings.blockBypass.bypassDnsbl) .row .label #{__('Expire After Uses')} input(type='number' name='block_bypass_expire_after_uses' value=settings.blockBypass.expireAfterUses) .row .label #{__('Expire After Time')} input(type='text' name='block_bypass_expire_after_time' placeholder=__('e.g. 1d') value=settings.blockBypass.expireAfterTime) .row h4.mv-5 #{__('Flood Protection')} .row .label #{__('Same Content Same IP/ID')} input(type='number' name='flood_timers_same_content_same_ip' value=settings.floodTimers.sameContentSameIp) .row .label #{__('Same Content Any IP/ID')} input(type='number' name='flood_timers_same_content_any_ip' value=settings.floodTimers.sameContentAnyIp) .row .label #{__('Any Content Same IP/ID')} input(type='number' name='flood_timers_any_content_same_ip' value=settings.floodTimers.anyContentSameIp) .row h4.mv-5 #{__('DNSBL')} .row .label #{__('DNSBL Enabled')} label.postform-style.ph-5 input(type='checkbox', name='dnsbl_enabled', value='true' checked=settings.dnsbl.enabled) .row .label #{__('DNSBL Addresses')} textarea(name='dnsbl_blacklists' placeholder=__('Newline separated')) #{settings.dnsbl.blacklists.join('\n')} .row .label #{__('Cache Time')} input(type='text' name='dnsbl_cache_time' placeholder=__('e.g. 1h') value=settings.dnsbl.cacheTime) .row h4.mv-5 #{__('Ratelimits')} .row .label #{__('Generate Captcha')} input(type='number' name='rate_limit_cost_captcha' value=settings.rateLimitCost.captcha) .row .label #{__('Change Board Settings')} input(type='number' name='rate_limit_cost_board_settings' value=settings.rateLimitCost.boardSettings) .row .label #{__('Edit Post')} input(type='number' name='rate_limit_cost_edit_post' value=settings.rateLimitCost.editPost) .tab.tab-6 .col .row .label #{__('Allowed Themes')} textarea(name='themes' placeholder=__('Newline separated')) #{settings.themes.join('\n')} .row .label #{__('Allowed Code Themes')} textarea(name='code_themes' placeholder=__('Newline separated')) #{settings.codeThemes.join('\n')} .row .label #{__('Default Theme')} select(name='board_defaults_theme') each theme in themes option(value=theme selected=settings.boardDefaults.theme === theme) #{theme} .row .label #{__('Default Code Theme')} select(name='board_defaults_code_theme') each theme in codeThemes option(value=theme selected=settings.boardDefaults.codeTheme === theme) #{theme} .row .label | #{__('Code Highlighting Auto-Detect Languages')} | small | ( a(rel='nofollow' referrerpolicy='same-origin' target='_blank' href='https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md') #{__('Supported Languages')} | ) textarea(name='highlight_options_language_subset' placeholder=__('Newline separated')) #{settings.highlightOptions.languageSubset.join('\n')} .row .label #{__('Code Highlight Language Detect Threshold')} input(type='number' name='highlight_options_threshold' value=settings.highlightOptions.threshold) .row .label #{__('Board Custom CSS')} label.postform-style.ph-5 input(type='checkbox', name='global_limits_custom_css_enabled' value='true' checked=settings.globalLimits.customCss.enabled) .row .label #{__('Custom CSS Filters')} textarea(name='global_limits_custom_css_filters' placeholder=__('Newline separated')) #{settings.globalLimits.customCss.filters.join('\n')} .row .label #{__('Strict Filtering')} label.postform-style.ph-5 input(type='checkbox', name='global_limits_custom_css_strict' value='true' checked=settings.globalLimits.customCss.strict) .row .label #{__('Custom CSS Max Length')} input(type='number' name='global_limits_custom_css_max' value=settings.globalLimits.customCss.max) .tab.tab-7 .col .row .label #{__('Enable')} label.postform-style.ph-5 input(type='checkbox', name='enable_webring' value='true' checked=settings.enableWebring) .row .label #{__('Following')} textarea(name='webring_following' placeholder=__('Newline separated')) #{settings.following.join('\n')} .row .label #{__('Logo URLs')} textarea(name='webring_logos' placeholder=__('Newline separated')) #{settings.logo.join('\n')} .row .label #{__('Blacklist')} textarea(name='webring_blacklist' placeholder=__('Newline separated')) #{settings.blacklist.join('\n')} .tab.tab-8 .col .row .label #{__('Enable')} label.postform-style.ph-5 input(type='checkbox', name='enable_web3' value='true' checked=settings.enableWeb3) .row .label | #{__('Ethereum Links URL')} | small | ( a(href='/faq.html#archive-reverse-url-format') ? | ) input(type='text', name='ethereum_links', value=settings.ethereumLinksURL) //- .row .label | #{__('Ethereum Node')} | small | ( a(rel='nofollow' referrerpolicy='same-origin' target='_blank' href='https://ethereumnodes.com/') #{__('Nodes')} | ) input(type='text' name='ethereum_node' value=settings.ethereumNode) .tab.tab-9 .col .row .label #{__('Animated .gif Thumbnails')} label.postform-style.ph-5 input(type='checkbox', name='animated_gif_thumbnails', value='true' checked=settings.animatedGifThumbnails) .row .label #{__('Audio Thumbnails')} label.postform-style.ph-5 input(type='checkbox', name='audio_thumbnails', value='true' checked=settings.audioThumbnails) .row .label #{__('Use ffmpeg For .gif Thumbnails')} label.postform-style.ph-5 input(type='checkbox', name='ffmpeg_gif_thumbnails', value='true' checked=settings.ffmpegGifThumbnails) .row .label #{__('Thumbnail Dimensions')} input(type='number', name='thumb_size', value=settings.thumbSize) .row .label #{__('Video Thumbnail Percentage')} input(type='number', name='video_thumb_percentage', value=settings.videoThumbPercentage) .row .label #{__('Other Mime Types')} textarea(name='other_mime_types' placeholder=__('Newline separated')) #{settings.otherMimeTypes.join('\n')} .row .label #{__('Validate Mime Types')} label.postform-style.ph-5 input(type='checkbox', name='check_real_mime_types', value='true' checked=settings.checkRealMimeTypes) .row .label #{__('Unknown Types Pass Validation')} label.postform-style.ph-5 input(type='checkbox', name='allow_mime_no_match', value='true' checked=settings.allowMimeNoMatch) .row .label #{__('Space File Name Replacement')} input(type='text', name='space_file_name_replacement', value=settings.spaceFileNameReplacement) .row .label #{__('URI Decode File Names')} label.postform-style.ph-5 input(type='checkbox', name='uri_decode_file_names', value='true' checked=settings.uriDecodeFileNames) .row .label #{__('Thumbnail File Extension')} input(type='text' name='thumb_extension' value=settings.thumbExtension) .row .label #{__('Image Max Resolution')} input(type='text' name='global_limits_post_files_size_image_resolution' value=settings.globalLimits.postFilesSize.imageResolution) .row .label #{__('Video Max Resolution')} input(type='text' name='global_limits_post_files_size_video_resolution' value=settings.globalLimits.postFilesSize.videoResolution) .tab.tab-10 .col .row .label #{__('Embeds Enabled')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_embeds_enabled', value='true' checked=settings.frontendScriptDefault.embedsEnabled) .row .label #{__('Unlimit Media Height')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_height_unlimit', value='true' checked=settings.frontendScriptDefault.heightUnlimit) .row .label #{__('Recursive Post Hiding')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_hide_recursive', value='true' checked=settings.frontendScriptDefault.hideRecursive) .row .label #{__('Crisp Image Rendering')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_crisp_images', value='true' checked=settings.frontendScriptDefault.crispImages) .row .label #{__('Hide Thumbnails')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_hide_thumbnails', value='true' checked=settings.frontendScriptDefault.hideThumbnails) .row .label #{__('Non-Color IDs')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_non_color_ids', value='true' checked=settings.frontendScriptDefault.nonColorIds) .row .label #{__('Always Reveal Spoiler Markdown')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_always_show_spoilers', value='true' checked=settings.frontendScriptDefault.alwaysShowSpoilers) .row .label #{__('Hide Post Stubs')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_hide_post_stubs', value='true' checked=settings.frontendScriptDefault.hidePostStubs) .row .label #{__('Hide Deleted Post Content')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_hide_deleted_post_content', value='true' checked=settings.frontendScriptDefault.hideDeletedPostContent) .row .label #{__('Smooth Scrolling')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_smooth_scrolling', value='true' checked=settings.frontendScriptDefault.smoothScrolling) .row .label #{__('Thread Watcher')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_thread_watcher', value='true' checked=settings.frontendScriptDefault.threadWatcher) .row .label #{__('Default Volume')} label.postform-style.ph-5 input(type='range' name='frontend_script_default_volume' min='0' max='100' value=settings.frontendScriptDefault.defaultVolume) .row .label #{__('Loop Audio/Video')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_loop', value='true' checked=settings.frontendScriptDefault.loop) .row .label #{__('Image Loading Bars')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_image_loading_bars', value='true' checked=settings.frontendScriptDefault.imageLoadingBars) .row .label #{__('Live Posts')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_live', value='true' checked=settings.frontendScriptDefault.live) .row .label #{__('Scroll To New Posts')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_scroll_to_posts', value='true' checked=settings.frontendScriptDefault.scrollToPosts) .row .label #{__('Local Time')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_local_time', value='true' checked=settings.frontendScriptDefault.localTime) .row .label #{__('24 Hour Time')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_hour_24_time', value='true' checked=settings.frontendScriptDefault.hour24Time) .row .label #{__('Use Relative Time')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_relative_time', value='true' checked=settings.frontendScriptDefault.relativeTime) .row .label #{__('Notifications')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_notifications', value='true' checked=settings.frontendScriptDefault.notificationsEnabled) .row .label #{__('Show (You)s')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_show_yous', value='true' checked=settings.frontendScriptDefault.showYous) .row .label #{__('Only Notify (You)s')} label.postform-style.ph-5 input(type='checkbox', name='frontend_script_default_notifications_yous_only', value='true' checked=settings.frontendScriptDefault.notificationsYousOnly) .row .label #{__('Tegaki Width')} input(type='number', name='frontend_script_default_tegaki_width', value=settings.frontendScriptDefault.tegakiWidth) .row .label #{__('Tegaki Height')} input(type='number', name='frontend_script_default_tegaki_height', value=settings.frontendScriptDefault.tegakiHeight) .tab.tab-11 .col .row .label #{__('SFW')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_sfw' value='true' checked=settings.boardDefaults.sfw) .row .label #{__('Unlisted Locally')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_unlisted_local' value='true' checked=settings.boardDefaults.unlistedLocal) .row .label #{__('Unlisted From Webring')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_unlisted_webring' value='true' checked=settings.boardDefaults.unlistedWebring) .row .label #{__('Unique Message Enforcement')} select(name='board_defaults_message_r9k_mode') option(value='0', selected=settings.boardDefaults.messageR9KMode === 0) #{__('Off')} option(value='1', selected=settings.boardDefaults.messageR9KMode === 1) #{__('Per Thread')} option(value='2', selected=settings.boardDefaults.messageR9KMode === 2) #{__('Board Wide')} .row .label #{__('Unique File Enforcement')} select(name='board_defaults_file_r9k_mode') option(value='0', selected=settings.boardDefaults.fileR9KMode === 0) #{__('Off')} option(value='1', selected=settings.boardDefaults.fileR9KMode === 1) #{__('Per Thread')} option(value='2', selected=settings.boardDefaults.fileR9KMode === 2) #{__('Board Wide')} .row .label #{__('Lock Mode')} select(name='board_defaults_lock_mode') option(value='0', selected=settings.boardDefaults.lockMode === 0) #{__('Unlocked')} option(value='1', selected=settings.boardDefaults.lockMode === 1) #{__('Lock Thread Creation')} option(value='2', selected=settings.boardDefaults.lockMode === 2) #{__('Board Locked')} .row .label #{__('Captcha Mode')} select(name='board_defaults_captcha_mode') option(value='0', selected=settings.boardDefaults.captchaMode === 0) #{__('No Captcha')} option(value='1', selected=settings.boardDefaults.captchaMode === 1) #{__('Captcha for new thread')} option(value='2', selected=settings.boardDefaults.captchaMode === 2) #{__('Captcha for all posts')} .row .label #{__('PPH Trigger Threshold')} input(type='number', name='board_defaults_pph_trigger', value=settings.boardDefaults.pphTrigger) .row .label #{__('PPH Trigger Action')} select(name='board_defaults_pph_trigger_action') option(value='0', selected=settings.boardDefaults.pphTriggerAction === 0) #{__('Do nothing')} option(value='1', selected=settings.boardDefaults.pphTriggerAction === 1) #{__('Enable captcha for new thread')} option(value='2', selected=settings.boardDefaults.pphTriggerAction === 2) #{__('Enable captcha for all posts')} option(value='3', selected=settings.boardDefaults.pphTriggerAction === 3) #{__('Lock thread creation')} option(value='4', selected=settings.boardDefaults.pphTriggerAction === 4) #{__('Lock board')} .row .label #{__('TPH Trigger Threshold')} input(type='number', name='board_defaults_tph_trigger', value=settings.boardDefaults.tphTrigger) .row .label #{__('TPH Trigger Action')} select(name='board_defaults_tph_trigger_action') option(value='0', selected=settings.boardDefaults.tphTriggerAction === 0) #{__('Do nothing')} option(value='1', selected=settings.boardDefaults.tphTriggerAction === 1) #{__('Enable captcha for new thread')} option(value='2', selected=settings.boardDefaults.tphTriggerAction === 2) #{__('Enable captcha for all posts')} option(value='3', selected=settings.boardDefaults.tphTriggerAction === 3) #{__('Lock thread creation')} option(value='4', selected=settings.boardDefaults.tphTriggerAction === 4) #{__('Lock board')} .row .label #{__('Trigger Reset Lock Mode')} select(name='board_defaults_lock_reset') option(value='0', selected=settings.boardDefaults.lockReset === 0) #{__('No change')} option(value='1', selected=settings.boardDefaults.lockReset === 1) #{__('Unlock board')} option(value='2', selected=settings.boardDefaults.lockReset === 2) #{__('Lock thread creation')} .row .label #{__('Trigger Reset Captcha Mode')} select(name='board_defaults_captcha_reset') option(value='0', selected=settings.boardDefaults.captchaReset === 0) #{__('No change')} option(value='1', selected=settings.boardDefaults.captchaReset === 1) #{__('Captcha disabled')} option(value='2', selected=settings.boardDefaults.captchaReset === 2) #{__('Captcha for new thread')} .row .label #{__('Anon Name')} input(type='text' name='board_defaults_default_name' value=settings.boardDefaults.defaultName) .row .label #{__('Language')} select(name='board_defaults_language') each language in languages option(value=language selected=settings.boardDefaults.language === language) #{__(language)} (#{language}) .row .label #{__('Force Anon')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_anon', value='true' checked=settings.boardDefaults.forceAnon) .row .label #{__('Sage Only Email')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_sage_only_email', value='true' checked=settings.boardDefaults.sageOnlyEmail) .row .label #{__('Early 404')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_early404', value='true' checked=settings.boardDefaults.early404) .row .label #{__('IDs')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_ids', value='true' checked=settings.boardDefaults.ids) .row .label #{__('Geo Flags')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_geo_flags', value='true' checked=settings.boardDefaults.geoFlags) .row .label #{__('Custom Flags')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_custom_flags', value='true' checked=settings.boardDefaults.customFlags) .row .label #{__('Enable Tegaki')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_enable_tegaki', value='true' checked=settings.boardDefaults.enableTegaki) .row .label #{__('Enable Web3')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_enable_web3', value='true' checked=settings.boardDefaults.enableWeb3) .row .label #{__('User Post Deletion')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_user_post_delete', value='true' checked=settings.boardDefaults.userPostDelete) .row .label #{__('User File Spoilering')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_user_post_spoiler', value='true' checked=settings.boardDefaults.userPostSpoiler) .row .label #{__('User File Unlinking')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_user_post_unlink', value='true' checked=settings.boardDefaults.userPostUnlink) .row .label #{__('Thread Limit')} input(type='number' name='board_defaults_thread_limit' value=settings.boardDefaults.threadLimit) .row .label #{__('Reply Limit')} input(type='number' name='board_defaults_reply_limit' value=settings.boardDefaults.replyLimit) .row .label #{__('Bump Limit')} input(type='number' name='board_defaults_bump_limit' value=settings.boardDefaults.bumpLimit) .row .label #{__('Max Files')} input(type='number' name='board_defaults_max_files' value=settings.boardDefaults.maxFiles) .row .label #{__('Force Thread Subject')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_thread_subject', value='true' checked=settings.boardDefaults.forceThreadSubject) .row .label #{__('Force Thread Message')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_thread_message', value='true' checked=settings.boardDefaults.forceThreadMessage) .row .label #{__('Force Thread File')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_thread_file', value='true' checked=settings.boardDefaults.forceThreadFile) .row .label #{__('Force Reply Message')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_reply_message', value='true' checked=settings.boardDefaults.forceReplyMessage) .row .label #{__('Force Reply File')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_force_reply_file', value='true' checked=settings.boardDefaults.forceReplyFile) .row .label #{__('Disable Reply Subject')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_disable_reply_subject', value='true' checked=settings.boardDefaults.disableReplySubject) .row .label #{__('Hide Banners')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_hide_banners', value='true' checked=settings.boardDefaults.hideBanners) .row .label #{__('Min Thread Message Length')} input(type='number' name='board_defaults_min_thread_message_length' value=settings.boardDefaults.minThreadMessageLength) .row .label #{__('Min Reply Message Length')} input(type='number' name='board_defaults_min_reply_message_length' value=settings.boardDefaults.minReplyMessageLength) .row .label #{__('Max Thread Message Length')} input(type='number' name='board_defaults_max_thread_message_length' value=settings.boardDefaults.maxThreadMessageLength) .row .label #{__('Max Reply Message Length')} input(type='number' name='board_defaults_max_reply_message_length' value=settings.boardDefaults.maxReplyMessageLength) .row .label #{__('OP Reply Count Delete Protection')} input(type='number' name='board_defaults_delete_protection_count' value=settings.boardDefaults.deleteProtectionCount) .row .label #{__('OP Thread Age Delete Protection')} input(type='text' name='board_defaults_delete_protection_age' placeholder=__('e.g. 1w') value=settings.boardDefaults.deleteProtectionAge) .row .label #{__('Disable anonymizer file posting')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_disable_anonymizer_file_posting', value='true' checked=settings.boardDefaults.disableAnonymizerFilePosting) .row .label #{__('Allow Video Files')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_allowed_file_types_video', value='true' checked=settings.boardDefaults.allowedFileTypes.video) .row .label #{__('Allow Image Files')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_allowed_file_types_image', value='true' checked=settings.boardDefaults.allowedFileTypes.image) .row .label #{__('Allow Animated Image Files')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_allowed_file_types_animated_image', value='true' checked=settings.boardDefaults.allowedFileTypes.animatedImage) .row .label #{__('Allow Audio Files')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_allowed_file_types_audio', value='true' checked=settings.boardDefaults.allowedFileTypes.audio) .row .label #{__('Allow Other Files')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_allowed_file_types_other', value='true' checked=settings.boardDefaults.allowedFileTypes.other) .row .label #{__('Reverse Image Search Links')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_reverse_image_search_links', value='true' checked=settings.boardDefaults.reverseImageSearchLinks) .row .label #{__('External Archive Links')} label.postform-style.ph-5 input(type='checkbox', name='board_defaults_archive_links', value='true' checked=settings.boardDefaults.archiveLinks) input.row(type='submit', value=__('Save settings'))