Merge branch 'crazy-css-tabs' into develop

indiachan-spamvector
Thomas Lynch 2 years ago
commit db6ceaf6b6
  1. 98
      gulp/res/css/style.css
  2. 1672
      views/pages/globalmanagesettings.pug
  3. 542
      views/pages/managesettings.pug

@ -1331,6 +1331,9 @@ iframe.bypass {
margin-right: 0;
margin-left: 1px;
}
.box-wrap .label {
flex: 0 1 175px;
}
hr {
border-top: 1px solid var(--hr);
@ -1456,6 +1459,89 @@ row.wrap.sb .col {
white-space: nowrap;
}
.tabs.group:after {
display: block;
content: " ";
clear: both;
}
.tabs li {
display: inline;
}
.tabs li a {
color: var(--font-color);
float: left;
display: block;
padding: 4px 10px;
margin-left: -1px;
position: relative;
left: 1px;
background: var(--post-color);
text-decoration: none;
}
.tabs li:last-of-type {
margin-right: 1px;
}
.tabs {
padding: 0;
margin: 0 0 -1px 0;
list-style: none;
}
.box-wrap .col {
background: var(--background-rest);
padding: 10px;
}
.box-wrap, .tabs li a {
border: 1px solid var(--post-outline-color);
}
/* Default selected tab 1 */
.tab {
display:none;
}
.tab-1 {
display: flex;
}
:target .tab-1 {
display:none;
}
.sm {
scroll-margin-top: 100px;
}
#tab-1:target .tab-1,
#tab-2:target .tab-2,
#tab-3:target .tab-3,
#tab-4:target .tab-4,
#tab-5:target .tab-5,
#tab-6:target .tab-6,
#tab-7:target .tab-7,
#tab-8:target .tab-8,
#tab-9:target .tab-9,
#tab-10:target .tab-10 {
display: flex;
}
#tab-1:target a[href="#tab-1"],
#tab-2:target a[href="#tab-2"],
#tab-3:target a[href="#tab-3"],
#tab-4:target a[href="#tab-4"],
#tab-5:target a[href="#tab-5"],
#tab-6:target a[href="#tab-6"],
#tab-7:target a[href="#tab-7"],
#tab-8:target a[href="#tab-8"],
#tab-9:target a[href="#tab-9"],
#tab-10:target a[href="#tab-10"] {
border-bottom: 1px solid var(--background-rest);
background: var(--background-rest);
}
@media only screen and (max-height: 400px) {
.modal {
top: 5px;
@ -1484,7 +1570,17 @@ row.wrap.sb .col {
max-width: 32px;
max-height: 32px;
}
.box-wrap .label {
flex: unset;
}
.tabs li a {
padding: 8px 15px;
margin-top: -1px;
border: 1px solid var(--post-outline-color)!important;
}
select[name="countries"] {
max-width: 220px;
}
.postmenu {
border-left: .5em solid transparent;
border-right: .5em solid transparent;

File diff suppressed because it is too large Load Diff

@ -38,266 +38,284 @@ block content
.form-wrapper.flexleft.mt-10
form.form-post(action=`/forms/board/${board._id}/settings` method='POST' enctype='application/x-www-form-urlencoded')
input(type='hidden' name='_csrf' value=csrf)
.row.wrap.sb
.col.mr-5
.row
h4.mv-5 Settings:
.row
.label Board name
input(type='text' name='name' value=board.settings.name)
.row
.label Board Description
input(type='text' name='description' value=board.settings.description)
.row
.label Tags
textarea(name='tags' placeholder='Newline separated, max 10') #{board.tags.join('\n')}
.row
.label Announcement
textarea(name='announcement' placeholder='Supports post styling') #{board.settings.announcement.raw}
.row
.label Theme
select(name='theme')
each theme in themes
option(value=theme selected=board.settings.theme === theme) #{theme}
.row
.label Code Theme
select(name='code_theme')
each theme in codeThemes
option(value=theme selected=board.settings.codeTheme === theme) #{theme}
if globalLimits.customCss.enabled
.row
.label Custom CSS
textarea(name='custom_css' placeholder='Test first in top-right settings if you have javascript enabled' maxlength=globalLimits.customCss.max) #{board.settings.customCss}
.row
.label IDs
label.postform-style.ph-5
input(type='checkbox', name='ids', value='true' checked=board.settings.ids)
.row
.label Geo Flags
label.postform-style.ph-5
input(type='checkbox', name='geo_flags', value='true' checked=board.settings.geoFlags)
.row
.label Custom Flags
label.postform-style.ph-5
input(type='checkbox', name='custom_flags', value='true' checked=board.settings.customFlags)
.row
.label Reverse Image Search Links
label.postform-style.ph-5
input(type='checkbox', name='reverse_image_search_links', value='true' checked=board.settings.reverseImageSearchLinks)
.row
.label External Archive Links
label.postform-style.ph-5
input(type='checkbox', name='archive_links', value='true' checked=board.settings.archiveLinks)
.row
.label Enable Tegaki
label.postform-style.ph-5
input(type='checkbox', name='enable_tegaki', value='true' checked=board.settings.enableTegaki)
.row
.label SFW
label.postform-style.ph-5
input(type='checkbox', name='sfw', value='true' checked=board.settings.sfw)
.row
.label Unlist locally
label.postform-style.ph-5
input(type='checkbox', name='unlisted_local', value='true' checked=board.settings.unlistedLocal)
.row
.label Unlist from webring
label.postform-style.ph-5
input(type='checkbox', name='unlisted_webring', value='true' checked=board.settings.unlistedWebring)
.row
h4.mv-5 File Options:
.row
.label Max Files
input(type='number' name='max_files' value=board.settings.maxFiles max=globalLimits.postFiles.max)
.row
.label Allow Video Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_video', value='true' checked=board.settings.allowedFileTypes.video)
.row
.label Allow Image Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_image', value='true' checked=board.settings.allowedFileTypes.image)
.row
.label Allow Animated Image Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_animated_image', value='true' checked=board.settings.allowedFileTypes.animatedImage)
.row
.label Allow Audio Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_audio', value='true' checked=board.settings.allowedFileTypes.audio)
.row
.label Allow Other Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_other', value='true' checked=board.settings.allowedFileTypes.other)
.row
.label User File Spoilering
label.postform-style.ph-5
input(type='checkbox', name='user_post_spoiler', value='true' checked=board.settings.userPostSpoiler)
.row
.label User File Unlinking
label.postform-style.ph-5
input(type='checkbox', name='user_post_unlink', value='true' checked=board.settings.userPostUnlink)
.col.mr-5
.row
h4.mv-5 Post Options:
.row
.label Anon Name
input(type='text' name='default_name' value=board.settings.defaultName)
.row
.label User Post Deletion
label.postform-style.ph-5
input(type='checkbox', name='user_post_delete', value='true' checked=board.settings.userPostDelete)
.row
.label Force Anon
label.postform-style.ph-5
input(type='checkbox', name='force_anon', value='true' checked=board.settings.forceAnon)
.row
.label Sage Only Email
label.postform-style.ph-5
input(type='checkbox', name='sage_only_email', value='true' checked=board.settings.sageOnlyEmail)
.row
.label Force Thread Subject
label.postform-style.ph-5
input(type='checkbox', name='force_thread_subject', value='true' checked=board.settings.forceThreadSubject)
.row
.label Force Thread Message
label.postform-style.ph-5
input(type='checkbox', name='force_thread_message', value='true' checked=board.settings.forceThreadMessage)
.row
.label Force Thread File
label.postform-style.ph-5
input(type='checkbox', name='force_thread_file', value='true' checked=board.settings.forceThreadFile)
.row
.label Force Reply Message
label.postform-style.ph-5
input(type='checkbox', name='force_reply_message', value='true' checked=board.settings.forceReplyMessage)
.row
.label Force Reply File
label.postform-style.ph-5
input(type='checkbox', name='force_reply_file', value='true' checked=board.settings.forceReplyFile)
.row
.label Disable Reply Subject
label.postform-style.ph-5
input(type='checkbox', name='disable_reply_subject', value='true' checked=board.settings.disableReplySubject)
.row
.label Min Thread Message Length
input(type='number' name='min_thread_message_length' value=board.settings.minThreadMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Min Reply Message Length
input(type='number' name='min_reply_message_length' value=board.settings.minReplyMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Max Thread Message Length
input(type='number' name='max_thread_message_length' value=board.settings.maxThreadMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Max Reply Message Length
input(type='number' name='max_reply_message_length' value=board.settings.maxReplyMessageLength min=0 max=globalLimits.fieldLength.message)
.row
h4.mv-5 Limits:
.row
.label Thread Limit
input(type='number' name='thread_limit' value=board.settings.threadLimit min=globalLimits.threadLimit.min max=globalLimits.threadLimit.max)
.row
.label Reply Limit
input(type='number' name='reply_limit' value=board.settings.replyLimit min=globalLimits.replyLimit.min max=globalLimits.replyLimit.max)
.row
.label Bump Limit
input(type='number' name='bump_limit' value=board.settings.bumpLimit min=globalLimits.bumpLimit.min max=globalLimits.bumpLimit.max)
.row
.label Enforce Unique Files
select(name='file_r9k_mode')
option(value='0', selected=board.settings.fileR9KMode === 0) Off
option(value='1', selected=board.settings.fileR9KMode === 1) Per Thread
option(value='2', selected=board.settings.fileR9KMode === 2) Board Wide
.row
.label Enforce Unique Messages
select(name='message_r9k_mode')
option(value='0', selected=board.settings.messageR9KMode === 0) Off
option(value='1', selected=board.settings.messageR9KMode === 1) Per Thread
option(value='2', selected=board.settings.messageR9KMode === 2) Board Wide
.row
.label OP Reply Count Delete Protection
input(type='number' name='delete_protection_count' value=board.settings.deleteProtectionCount)
.row
.label OP Thread Age Delete Protection
input(type='text' name='delete_protection_age' placeholder='e.g. 1w' value=board.settings.deleteProtectionAge)
.col.w900
.row
h4.mv-5 Antispam
| (
a(href='/faq.html#antispam') more info
| ):
.row
.label Lock Mode
select(name='lock_mode')
option(value='0', selected=board.settings.lockMode === 0) Unlocked
option(value='1', selected=board.settings.lockMode === 1) Lock thread creation
option(value='2', selected=board.settings.lockMode === 2) Lock board
.row
.label Captcha Mode
select(name='captcha_mode')
option(value='0', selected=board.settings.captchaMode === 0) No Captcha
option(value='1', selected=board.settings.captchaMode === 1) Captcha for new thread
option(value='2', selected=board.settings.captchaMode === 2) Captcha for all posts
.row
.label PPH Trigger Threshold
input(type='number', name='pph_trigger', value=board.settings.pphTrigger)
.row
.label PPH Trigger Action
select(name='pph_trigger_action')
option(value='0', selected=board.settings.pphTriggerAction === 0) Do nothing
option(value='1', selected=board.settings.pphTriggerAction === 1) Enable captcha for new thread
option(value='2', selected=board.settings.pphTriggerAction === 2) Enable captcha for all posts
option(value='3', selected=board.settings.pphTriggerAction === 3) Lock thread creation
option(value='4', selected=board.settings.pphTriggerAction === 4) Lock board
.row
.label TPH Trigger Threshold
input(type='number', name='tph_trigger', value=board.settings.tphTrigger)
.row
.label TPH Trigger Action
select(name='tph_trigger_action')
option(value='0', selected=board.settings.tphTriggerAction === 0) Do nothing
option(value='1', selected=board.settings.tphTriggerAction === 1) Enable captcha for new thread
option(value='2', selected=board.settings.tphTriggerAction === 2) Enable captcha for all posts
option(value='3', selected=board.settings.tphTriggerAction === 3) Lock thread creation
option(value='4', selected=board.settings.tphTriggerAction === 4) Lock board
.row
.label Trigger Reset Lock Mode
select(name='lock_reset')
option(value='0', selected=board.settings.lockReset === 0) No change
option(value='1', selected=board.settings.lockReset === 1) Unlock board
option(value='2', selected=board.settings.lockReset === 2) Lock thread creation
.row
.label Trigger Reset Captcha Mode
select(name='captcha_reset')
option(value='0', selected=board.settings.captchaReset === 0) No change
option(value='1', selected=board.settings.captchaReset === 1) Captcha disabled
option(value='2', selected=board.settings.captchaReset === 2) Captcha for new thread
.row
.label Early 404
label.postform-style.ph-5
input(type='checkbox', name='early404', value='true' checked=board.settings.early404)
.row
.label Disable anonymizer file posting
label.postform-style.ph-5
input(type='checkbox', name='disable_anonymizer_file_posting', value='true' checked=board.settings.disableAnonymizerFilePosting)
.row
.label Blocked Countries
include ../includes/2charisocountries.pug
.row
.label Filters
textarea(name='filters' placeholder='Newline separated') #{board.settings.filters.join('\n')}
.row
.label Strict Filtering
label.postform-style.ph-5
input(type='checkbox', name='strict_filtering', value='true' checked=board.settings.strictFiltering)
.row
.label Filter Mode
select(name='filter_mode')
option(value='0', selected=board.settings.filterMode === 0) Do nothing
option(value='1', selected=board.settings.filterMode === 1) Block post
option(value='2', selected=board.settings.filterMode === 2) Ban
.row
.label Filter Auto Ban Duration
input(type='text' name='ban_duration' placeholder='e.g. 1w' value=board.settings.filterBanDuration)
.mv-10
.sm#tab-1
.sm#tab-2
.sm#tab-3
.sm#tab-4
.sm#tab-5
.tabbed-area
ul.tabs.group
li
a(href='#tab-1') General
li
a(href='#tab-2') Posting
li
a(href='#tab-3') Files
li
a(href='#tab-4') Limits
li
a(href='#tab-5') Antispam
.box-wrap
.tab.tab-1
.col
.row
.label Board name
input(type='text' name='name' value=board.settings.name)
.row
.label Board Description
input(type='text' name='description' value=board.settings.description)
.row
.label Tags
textarea(name='tags' placeholder='Newline separated, max 10') #{board.tags.join('\n')}
.row
.label Announcement
textarea(name='announcement' placeholder='Supports post styling') #{board.settings.announcement.raw}
.row
.label Theme
select(name='theme')
each theme in themes
option(value=theme selected=board.settings.theme === theme) #{theme}
.row
.label Code Theme
select(name='code_theme')
each theme in codeThemes
option(value=theme selected=board.settings.codeTheme === theme) #{theme}
if globalLimits.customCss.enabled
.row
.label Custom CSS
textarea(name='custom_css' placeholder='Test first in top-right settings if you have javascript enabled' maxlength=globalLimits.customCss.max) #{board.settings.customCss}
.row
.label IDs
label.postform-style.ph-5
input(type='checkbox', name='ids', value='true' checked=board.settings.ids)
.row
.label Geo Flags
label.postform-style.ph-5
input(type='checkbox', name='geo_flags', value='true' checked=board.settings.geoFlags)
.row
.label Custom Flags
label.postform-style.ph-5
input(type='checkbox', name='custom_flags', value='true' checked=board.settings.customFlags)
.row
.label Reverse Image Search Links
label.postform-style.ph-5
input(type='checkbox', name='reverse_image_search_links', value='true' checked=board.settings.reverseImageSearchLinks)
.row
.label External Archive Links
label.postform-style.ph-5
input(type='checkbox', name='archive_links', value='true' checked=board.settings.archiveLinks)
.row
.label Enable Tegaki
label.postform-style.ph-5
input(type='checkbox', name='enable_tegaki', value='true' checked=board.settings.enableTegaki)
.row
.label SFW
label.postform-style.ph-5
input(type='checkbox', name='sfw', value='true' checked=board.settings.sfw)
.row
.label Unlist locally
label.postform-style.ph-5
input(type='checkbox', name='unlisted_local', value='true' checked=board.settings.unlistedLocal)
.row
.label Unlist from webring
label.postform-style.ph-5
input(type='checkbox', name='unlisted_webring', value='true' checked=board.settings.unlistedWebring)
input.row(type='submit', value='Save')
.tab.tab-2
.col
.row
.label Anon Name
input(type='text' name='default_name' value=board.settings.defaultName)
.row
.label User Post Deletion
label.postform-style.ph-5
input(type='checkbox', name='user_post_delete', value='true' checked=board.settings.userPostDelete)
.row
.label Force Anon
label.postform-style.ph-5
input(type='checkbox', name='force_anon', value='true' checked=board.settings.forceAnon)
.row
.label Sage Only Email
label.postform-style.ph-5
input(type='checkbox', name='sage_only_email', value='true' checked=board.settings.sageOnlyEmail)
.row
.label Force Thread Subject
label.postform-style.ph-5
input(type='checkbox', name='force_thread_subject', value='true' checked=board.settings.forceThreadSubject)
.row
.label Force Thread Message
label.postform-style.ph-5
input(type='checkbox', name='force_thread_message', value='true' checked=board.settings.forceThreadMessage)
.row
.label Force Thread File
label.postform-style.ph-5
input(type='checkbox', name='force_thread_file', value='true' checked=board.settings.forceThreadFile)
.row
.label Force Reply Message
label.postform-style.ph-5
input(type='checkbox', name='force_reply_message', value='true' checked=board.settings.forceReplyMessage)
.row
.label Force Reply File
label.postform-style.ph-5
input(type='checkbox', name='force_reply_file', value='true' checked=board.settings.forceReplyFile)
.row
.label Disable Reply Subject
label.postform-style.ph-5
input(type='checkbox', name='disable_reply_subject', value='true' checked=board.settings.disableReplySubject)
.row
.label Min Thread Message Length
input(type='number' name='min_thread_message_length' value=board.settings.minThreadMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Min Reply Message Length
input(type='number' name='min_reply_message_length' value=board.settings.minReplyMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Max Thread Message Length
input(type='number' name='max_thread_message_length' value=board.settings.maxThreadMessageLength min=0 max=globalLimits.fieldLength.message)
.row
.label Max Reply Message Length
input(type='number' name='max_reply_message_length' value=board.settings.maxReplyMessageLength min=0 max=globalLimits.fieldLength.message)
.tab.tab-3
.col
.row
.label Max Files
input(type='number' name='max_files' value=board.settings.maxFiles max=globalLimits.postFiles.max)
.row
.label Allow Video Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_video', value='true' checked=board.settings.allowedFileTypes.video)
.row
.label Allow Image Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_image', value='true' checked=board.settings.allowedFileTypes.image)
.row
.label Allow Animated Image Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_animated_image', value='true' checked=board.settings.allowedFileTypes.animatedImage)
.row
.label Allow Audio Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_audio', value='true' checked=board.settings.allowedFileTypes.audio)
.row
.label Allow Other Files
label.postform-style.ph-5
input(type='checkbox', name='files_allow_other', value='true' checked=board.settings.allowedFileTypes.other)
.row
.label User File Spoilering
label.postform-style.ph-5
input(type='checkbox', name='user_post_spoiler', value='true' checked=board.settings.userPostSpoiler)
.row
.label User File Unlinking
label.postform-style.ph-5
input(type='checkbox', name='user_post_unlink', value='true' checked=board.settings.userPostUnlink)
.tab.tab-4
.col
.row
.label Thread Limit
input(type='number' name='thread_limit' value=board.settings.threadLimit min=globalLimits.threadLimit.min max=globalLimits.threadLimit.max)
.row
.label Reply Limit
input(type='number' name='reply_limit' value=board.settings.replyLimit min=globalLimits.replyLimit.min max=globalLimits.replyLimit.max)
.row
.label Bump Limit
input(type='number' name='bump_limit' value=board.settings.bumpLimit min=globalLimits.bumpLimit.min max=globalLimits.bumpLimit.max)
.row
.label Enforce Unique Files
select(name='file_r9k_mode')
option(value='0', selected=board.settings.fileR9KMode === 0) Off
option(value='1', selected=board.settings.fileR9KMode === 1) Per Thread
option(value='2', selected=board.settings.fileR9KMode === 2) Board Wide
.row
.label Enforce Unique Messages
select(name='message_r9k_mode')
option(value='0', selected=board.settings.messageR9KMode === 0) Off
option(value='1', selected=board.settings.messageR9KMode === 1) Per Thread
option(value='2', selected=board.settings.messageR9KMode === 2) Board Wide
.row
.label OP Reply Count Delete Protection
input(type='number' name='delete_protection_count' value=board.settings.deleteProtectionCount)
.row
.label OP Thread Age Delete Protection
input(type='text' name='delete_protection_age' placeholder='e.g. 1w' value=board.settings.deleteProtectionAge)
.tab.tab-5
.col
.row
a.label(href='/faq.html#antispam') Antispam FAQ
.row
.label Lock Mode
select(name='lock_mode')
option(value='0', selected=board.settings.lockMode === 0) Unlocked
option(value='1', selected=board.settings.lockMode === 1) Lock thread creation
option(value='2', selected=board.settings.lockMode === 2) Lock board
.row
.label Captcha Mode
select(name='captcha_mode')
option(value='0', selected=board.settings.captchaMode === 0) No Captcha
option(value='1', selected=board.settings.captchaMode === 1) Captcha for new thread
option(value='2', selected=board.settings.captchaMode === 2) Captcha for all posts
.row
.label PPH Trigger Threshold
input(type='number', name='pph_trigger', value=board.settings.pphTrigger)
.row
.label PPH Trigger Action
select(name='pph_trigger_action')
option(value='0', selected=board.settings.pphTriggerAction === 0) Do nothing
option(value='1', selected=board.settings.pphTriggerAction === 1) Enable captcha for new thread
option(value='2', selected=board.settings.pphTriggerAction === 2) Enable captcha for all posts
option(value='3', selected=board.settings.pphTriggerAction === 3) Lock thread creation
option(value='4', selected=board.settings.pphTriggerAction === 4) Lock board
.row
.label TPH Trigger Threshold
input(type='number', name='tph_trigger', value=board.settings.tphTrigger)
.row
.label TPH Trigger Action
select(name='tph_trigger_action')
option(value='0', selected=board.settings.tphTriggerAction === 0) Do nothing
option(value='1', selected=board.settings.tphTriggerAction === 1) Enable captcha for new thread
option(value='2', selected=board.settings.tphTriggerAction === 2) Enable captcha for all posts
option(value='3', selected=board.settings.tphTriggerAction === 3) Lock thread creation
option(value='4', selected=board.settings.tphTriggerAction === 4) Lock board
.row
.label Trigger Reset Lock Mode
select(name='lock_reset')
option(value='0', selected=board.settings.lockReset === 0) No change
option(value='1', selected=board.settings.lockReset === 1) Unlock board
option(value='2', selected=board.settings.lockReset === 2) Lock thread creation
.row
.label Trigger Reset Captcha Mode
select(name='captcha_reset')
option(value='0', selected=board.settings.captchaReset === 0) No change
option(value='1', selected=board.settings.captchaReset === 1) Captcha disabled
option(value='2', selected=board.settings.captchaReset === 2) Captcha for new thread
.row
.label Early 404
label.postform-style.ph-5
input(type='checkbox', name='early404', value='true' checked=board.settings.early404)
.row
.label Disable anonymizer file posting
label.postform-style.ph-5
input(type='checkbox', name='disable_anonymizer_file_posting', value='true' checked=board.settings.disableAnonymizerFilePosting)
.row
.label Blocked Countries
include ../includes/2charisocountries.pug
.row
.label Filters
textarea(name='filters' placeholder='Newline separated') #{board.settings.filters.join('\n')}
.row
.label Strict Filtering
label.postform-style.ph-5
input(type='checkbox', name='strict_filtering', value='true' checked=board.settings.strictFiltering)
.row
.label Filter Mode
select(name='filter_mode')
option(value='0', selected=board.settings.filterMode === 0) Do nothing
option(value='1', selected=board.settings.filterMode === 1) Block post
option(value='2', selected=board.settings.filterMode === 2) Ban
.row
.label Filter Auto Ban Duration
input(type='text' name='ban_duration' placeholder='e.g. 1w' value=board.settings.filterBanDuration)
input.row(type='submit', value='save settings')

Loading…
Cancel
Save