Bans, ban, boardlist, catalog, changepassword, create, +mixins/include + some fixes

indiachan-spamvector
Thomas Lynch 1 year ago
parent c04f9d90dd
commit 64290c57dd
  1. 70
      locales/en.json
  2. 68
      locales/pt.json
  3. 6
      views/includes/banform.pug
  4. 26
      views/includes/bantable.pug
  5. 20
      views/includes/managebanform.pug
  6. 14
      views/mixins/ban.pug
  7. 16
      views/mixins/boardtable.pug
  8. 6
      views/pages/ban.pug
  9. 2
      views/pages/board.pug
  10. 30
      views/pages/boardlist.pug
  11. 4
      views/pages/catalog.pug
  12. 22
      views/pages/changepassword.pug
  13. 18
      views/pages/create.pug

@ -67,27 +67,40 @@
"one": "%s year from now",
"other": "%s years from now"
},
"2FA Code": "2FA Code",
"Account": "Account",
"Accounts": "Accounts",
"Actions": "Actions",
"Active sessions": "Active sessions",
"alphanumeric only": "alphanumeric only",
"Appeal": "Appeal",
"Appealable?": "Appealable?",
"Archive": "Archive",
"Ascending": "Ascending",
"Ban duration e.g. 7d": "Ban duration e.g. 7d",
"Ban Poster": "Ban Poster",
"Ban reason": "Ban reason",
"Ban Reporters": "Ban Reporters",
"Banned!": "Banned!",
"Banners": "Banners",
"Bans": "Bans",
"Bans currently in place against your IP": "Bans currently in place against your IP",
"Block Bypass": "Block Bypass",
"Board": "Board",
"Board List": "Board List",
"Boards": "Boards",
"Boards you are staff on": "Boards you are staff on",
"Boards you own": "Boards you own",
"Bump Order": "Bump Order",
"Bypass": "Bypass",
"Captcha text": "Captcha text",
"Catalog": "Catalog",
"Change password": "Change password",
"Change Password": "Change Password",
"Confirm New Password": "Confirm New Password",
"Create": "Create",
"Create a board": "Create a board",
"Create Board": "Create Board",
"Creation Date": "Creation Date",
"Custom Pages": "Custom Pages",
"Delete": "Delete",
@ -97,6 +110,9 @@
"Delete from IP on board": "Delete from IP on board",
"Delete Posts": "Delete Posts",
"Delete your account": "Delete your account",
"Deny Appeal": "Deny Appeal",
"Descending": "Descending",
"Description": "Description",
"Dismiss Global Reports": "Dismiss Global Reports",
"Dismiss Reports": "Dismiss Reports",
"Double click to highlight (%s)": {
@ -107,8 +123,12 @@
},
"Draw": "Draw",
"Edit": "Edit",
"Edit Duration": "Edit Duration",
"Edit Note": "Edit Note",
"Edit Post": "Edit Post",
"Email": "Email",
"Existing Password": "Existing Password",
"Expiry": "Expiry",
"Files": {
"one": "File",
"other": "Files"
@ -122,18 +142,30 @@
"focus to load captcha": "focus to load captcha",
"General": "General",
"Geographic Flag": "Geographic Flag",
"Global": "Global",
"Global Ban Poster": "Global Ban Poster",
"Global Ban Reporters": "Global Ban Reporters",
"Global management": "Global management",
"Global Report": "Global Report",
"Global Settings": "Global Settings",
"Hidden User": "Hidden User",
"Hide": "Hide",
"Hide Username In Modlog": "Hide Username In Modlog",
"Home": "Home",
"Hover to view": "Hover to view",
"I'm sure": "I'm sure",
"if enabled": "if enabled",
"Index": "Index",
"IP/ID": "IP/ID",
"IPV4": "IPV4",
"IPV6": "IPV6",
"Issue Date": "Issue Date",
"Issuer": "Issuer",
"Latest Activity": "Latest Activity",
"loading": "loading",
"Local First": "Local First",
"Log out": "Log out",
"Login": "Login",
"Logs": "Logs",
"Manage": "Manage",
"Max %s files": {
@ -148,17 +180,26 @@
"Move": "Move",
"My permissions": "My permissions",
"Name": "Name",
"Narrow": "Narrow",
"Narrow Range": "Narrow Range",
"New Password": "New Password",
"New Reply": "New Reply",
"New Thread": "New Thread",
"Newline separated, max 10": "Newline separated, max 10",
"News": "News",
"No posts.": "Sem publicações.",
"No appeal submitted": "No appeal submitted",
"No bans.": "No bans.",
"No posts.": "No posts.",
"No video/audio files in this thread.": "No video/audio files in this thread.",
"Non-appealable Ban": "Non-appealable Ban",
"None": "None",
"Not Shown": "Not Shown",
"Note": "Note",
"Nothing": "None",
"Now": "Now",
"Order": "Order",
"Overboard": "Overboard",
"Owner": "Owner",
"Page": "Page",
"Page %s": {
"other": "Page %s"
@ -167,8 +208,18 @@
"Payload Too Large": "Payload Too Large",
"Playlist": "Playlist",
"Please enable JavaScript to solve the captcha.": "Please enable JavaScript to solve the captcha.",
"Popularity": "Popularity",
"Post(s)": "Post(s)",
"Posts": "Posts",
"Posts must include a message or file": "Posts must include a message or file",
"Posts not shown": "Posts not shown",
"PPD": "PPD",
"PPH": "PPH",
"Pruned IP": "Pruned IP",
"Range": "Range",
"Reason": "Reason",
"Recent": "Recent",
"Register": "Register",
"Register an account": "Register an account",
"Replayable?": "Replayable?",
"Replies": {
@ -184,15 +235,21 @@
"Reverse": "Reverse",
"Reverse Image Search": "Reverse Image Search",
"Roles": "Roles",
"Search": "Search",
"Seen?": "Visto?",
"Select/Drop/Paste files": {
"one": "Select/Drop/Paste file",
"other": "Select/Drop/Paste files"
},
"Settings": "Settings",
"Setup 2FA (TOTP)": "Setup 2FA (TOTP)",
"SFW": "SFW",
"Show": "Show",
"Show Post Actions": "Show Post Actions",
"Show Post In Ban": "Show Post In Ban",
"Shown": "Shown",
"Single": "Single",
"Sort": "Sort",
"Sort By": "Sort By",
"Spoiler": "Spoiler",
"Spoiler File": "Spoiler File",
@ -202,6 +259,7 @@
"Strip Filename": "Strip Filename",
"Subject": "Subject",
"Submit": "Submit",
"Tags": "Tags",
"Tegaki": "Tegaki",
"Thread No.": "Thread No.",
"Thread Watcher": "Thread Watcher",
@ -209,12 +267,20 @@
"Toggle Cycle": "Toggle Cycle",
"Toggle Lock": "Toggle Lock",
"total": "total",
"Type": "Type",
"Unban": "Unban",
"Unlink Files": "Unlink Files",
"Upgrade Ban": "Upgrade Ban",
"URI e.g. /uri/": "URI e.g. /uri/",
"Username": "Username",
"Users": "Users",
"Watch": "Watch",
"Webring": "Webring",
"Welcome": "Welcome",
"Wide": "Wide",
"Wide Range": "Wide Range",
"You": "You",
"You moderate": "You moderate",
"You own": "You own",
"Your upload was too large": "Your upload was too large"
}
}

@ -67,27 +67,40 @@
"one": "%s ano desde agora",
"other": "%s anos desde agora"
},
"2FA Code": "2FA Code",
"Account": "Conta",
"Accounts": "Contas",
"Actions": "Ações",
"Active sessions": "Sessões ativas",
"alphanumeric only": "Alfanumérico apenas",
"Appeal": "Recurso",
"Appealable?": "Recurso?",
"Archive": "Arquivo",
"Ascending": "Ascendente",
"Ban duration e.g. 7d": "Duração do ban e.g. 7d",
"Ban Poster": "Banir Utilizador",
"Ban reason": "Motivodo do Ban",
"Ban Reporters": "Banir Denunciantes",
"Banned!": "Banned!",
"Banners": "Banners",
"Bans": "Bans",
"Bans currently in place against your IP": "Bans colocados no teu IP",
"Block Bypass": "Bypass",
"Board": "Tábua",
"Board List": "Tábuas",
"Boards": "Tábuas",
"Boards you are staff on": "Tábuas em que fazes parte do staff",
"Boards you own": "Administrador das tábuas",
"Bump Order": "Bump",
"Bypass": "Bypass",
"Captcha text": "Código captcha",
"Catalog": "Catálogo",
"Change password": "Alterar password",
"Change Password": "Change Password",
"Confirm New Password": "Confirm New Password",
"Create": "Criar",
"Create a board": "Criar tábua",
"Create Board": "Criar Tábua",
"Creation Date": "Criação",
"Custom Pages": "Páginas",
"Delete": "Apagar",
@ -97,6 +110,9 @@
"Delete from IP on board": "Apagar do IP na Tábua",
"Delete Posts": "Apagar Publicação",
"Delete your account": "Apagar conta",
"Deny Appeal": "Negar Recurso",
"Descending": "Descendente",
"Description": "Descrição",
"Dismiss Global Reports": "Dismiss Global Reports",
"Dismiss Reports": "Dismiss Denúncias",
"Double click to highlight (%s)": {
@ -107,8 +123,12 @@
},
"Draw": "Desenhar",
"Edit": "Editar",
"Edit Duration": "Alterar Duração",
"Edit Note": "Editar Nota",
"Edit Post": "Editar Publicação",
"Email": "Opção",
"Existing Password": "Existing Password",
"Expiry": "Expira",
"Files": {
"one": "Ficheiro",
"other": "Ficheiros"
@ -122,18 +142,30 @@
"focus to load captcha": "Seleciona para carregar captcha",
"General": "Geral",
"Geographic Flag": "Bandeira Geográfica",
"Global": "Global",
"Global Ban Poster": "Banir Globalmente Utilizador",
"Global Ban Reporters": "Global Ban Reporters",
"Global management": "Global management",
"Global Report": "Denúncia Global",
"Global Settings": "Opções Globais",
"Hidden User": "Esconder",
"Hide": "Esconder",
"Hide Username In Modlog": "Esconder Username",
"Home": "Início",
"Hover to view": "Hover to view",
"I'm sure": "Tenho a certeza",
"if enabled": "opcional, se ativo",
"Index": "Index",
"IP/ID": "IP/ID",
"IPV4": "IPV4",
"IPV6": "IPV6",
"Issue Date": "Data",
"Issuer": "Autor",
"Latest Activity": "Última Atividade",
"loading": "loading",
"Local First": "Locais Primeiro",
"Log out": "Log out",
"Login": "Entrar",
"Logs": "Logs",
"Manage": "Gerir",
"Max %s files": {
@ -148,17 +180,26 @@
"Move": "Move",
"My permissions": "Minhas permissões",
"Name": "Nome",
"Narrow": "Curto",
"Narrow Range": "Range Curto",
"New Password": "New Password",
"New Reply": "Nova Resposta",
"New Thread": "Novo Fio",
"Newline separated, max 10": "Separadas por nova linha, máx 10",
"News": "Notícias",
"No appeal submitted": "Sem recurso enviado",
"No bans.": "Sem bans.",
"No posts.": "Sem publicações.",
"No video/audio files in this thread.": "No video/audio files in this thread.",
"Non-appealable Ban": "Ban sem Recurso",
"None": "Nada",
"Not Shown": "Not Shown",
"Note": "Nota",
"Nothing": "Nenhuma",
"Now": "Agora",
"Order": "Ordem",
"Overboard": "Tudo",
"Owner": "Admin",
"Page": "Página",
"Page %s": {
"other": "Página %s"
@ -167,8 +208,18 @@
"Payload Too Large": "Payload Too Large",
"Playlist": "Playlist",
"Please enable JavaScript to solve the captcha.": "Necessita JavaScript.",
"Popularity": "Popularidade",
"Post(s)": "Publicação",
"Posts": "Publicações",
"Posts must include a message or file": "Posts must include a message or file",
"Posts not shown": "Posts sem",
"PPD": "PPD",
"PPH": "PPH",
"Pruned IP": "IP Removido",
"Range": "Range",
"Reason": "Motivo",
"Recent": "Recentes",
"Register": "Registar",
"Register an account": "Registar conta",
"Replayable?": "Replay?",
"Replies": {
@ -184,16 +235,22 @@
"Reverse": "ImgOps",
"Reverse Image Search": "Procura reversa de imagem",
"Roles": "Permissões",
"Search": "Procurar",
"Seen?": "Visto?",
"Select/Drop/Paste files": {
"one": "Seleciona/Arrasta/Cola ficheiro",
"other": "Seleciona/Arrasta/Cola ficheiros"
},
"Settings": "Opções",
"Setup 2FA (TOTP)": "Configurar 2FA (TOTP)",
"SFW": "SFW",
"Show": "Mostrar",
"Show Post Actions": "Denunciar/Moderar",
"Show Post In Ban": "Mostrar Publicação no Ban",
"Sort By": "Ordenar",
"Shown": "Shown",
"Single": "Único",
"Sort": "Ordenar",
"Sort By": "Ordem",
"Spoiler": "Spoiler",
"Spoiler File": "Spoiler Ficheiro",
"Spoiler Files": "Spoiler Ficheiros",
@ -202,6 +259,7 @@
"Strip Filename": "Limpar Nome",
"Subject": "Assunto",
"Submit": "Enviar",
"Tags": "Tags",
"Tegaki": "Tegaki",
"Thread No.": "Fio n.º",
"Thread Watcher": "Favoritos",
@ -209,9 +267,17 @@
"Toggle Cycle": "Toggle Cycle",
"Toggle Lock": "Trancar",
"total": "total",
"Type": "Tipo",
"Unban": "Remover Ban",
"Unlink Files": "Unlink Ficheiros",
"Upgrade Ban": "Alterar Range",
"URI e.g. /uri/": "URI e.g. /uri/",
"Username": "Username",
"Users": "Utilizadores",
"Watch": "+Favorito",
"Webring": "Webring",
"Welcome": "Bem-vindo",
"Wide": "Longo",
"Wide Range": "Range Longo",
"You": "You",
"You moderate": "Que moderas",

@ -4,14 +4,14 @@ form.form-post(action=`/forms/appeal`, enctype='application/x-www-form-urlencode
+ban(ban, true)
- const allowAppeal = bans.filter(ban => ban.allowAppeal === true && !ban.appeal).length > 0;
if allowAppeal === true
h4.no-m-p Appeal:
h4.no-m-p #{__('Appeal')}:
.form-wrapper.flexleft.mt-10
input(type='hidden' name='_csrf' value=csrf)
.row
.label Message
.label #{__('Message')}
textarea(rows='5' name='message' required)
if captchaOptions.type === 'text'
include ./captchasidelabel.pug
else
include ./captchafieldrow.pug
input(type='submit', value='Submit')
input(type='submit', value=__('Submit'))

@ -2,16 +2,16 @@
table.bantable
tr
th
th Board
th Reason
th IP/ID
th Type
th Range
th Issuer
th Issue Date
th Expiry
th Post(s)
th Seen?
th Appealable?
th Appeal
th Note
th #{__('Board')}
th #{__('Reason')}
th #{__('IP/ID')}
th #{__('Type')}
th #{__('Range')}
th #{__('Issuer')}
th #{__('Issue Date')}
th #{__('Expiry')}
th #{__('Post(s)')}
th #{__('Seen?')}
th #{__('Appealable?')}
th #{__('Appeal')}
th #{__('Note')}

@ -1,5 +1,5 @@
if bans.length === 0
p No bans.
p #{__('No bans.')}
else
input(type='hidden' name='_csrf' value=csrf)
include ../includes/bantable.pug
@ -7,30 +7,30 @@ else
+ban(ban)
.action-wrapper.mv-10
.row
.label Unban
.label #{__('Unban')}
label.postform-style.ph-5
input(type='radio' name='option' value='unban' checked='checked')
.row
.label Deny Appeal
.label #{__('Deny Appeal')}
label.postform-style.ph-5
input(type='radio' name='option' value='deny_appeal')
.row
.label Upgrade Ban
.label #{__('Upgrade Ban')}
label.postform-style.ph-5.mr-1
input(type='radio' name='option' value='upgrade')
select(name='upgrade')
option(value='')
option(value='1') Narrow Range
option(value='2') Wide Range
option(value='1') #{__('Narrow Range')}
option(value='2') #{__('Wide Range')}
.row
.label Edit Duration
.label #{__('Edit Duration')}
label.postform-style.ph-5.mr-1
input(type='radio' name='option' value='edit_duration')
input(type='text' name='ban_duration' placeholder='Ban duration e.g. 7d' autocomplete='off')
input(type='text' name='ban_duration' placeholder=__('Ban duration e.g. 7d') autocomplete='off')
.row
.label Edit Note
.label #{__('Edit Note')}
label.postform-style.ph-5.mr-1
input(type='radio' name='option' value='edit_note')
input(type='text' name='ban_note')
input(type='submit' value='Submit')
input(type='submit' value=__('Submit'))

@ -9,28 +9,28 @@ mixin ban(ban, banpage)
if ban.board
a(href=`/${ban.board}/`) /#{ban.board}/
else
| Global
| #{__('Global')}
td= ban.reason
- const ip = viewRawIp === true ? ban.ip.raw : ban.ip.cloak;
if viewRawIp === true
td #{ip}
else
td #{ip}#{'.*'.repeat(ban.range)}
td #{['IPV4', 'IPV6', 'Bypass', 'Pruned IP'][ban.ip.type]}
td #{['Single', 'Narrow', 'Wide'][ban.range]}
td #{(!banpage || ban.showUser === true) ? ban.issuer : 'Hidden User'}
td #{__(['IPV4', 'IPV6', 'Bypass', 'Pruned IP'][ban.ip.type])}
td #{__(['Single', 'Narrow', 'Wide'][ban.range])}
td #{(!banpage || ban.showUser === true) ? ban.issuer : __('Hidden User')}
- const banDate = new Date(ban.date);
td: time.right.reltime(datetime=banDate.toISOString()) #{banDate.toLocaleString(undefined, {hourCycle:'h23'})}
- const expireDate = new Date(ban.expireAt);
td: time.right.reltime(datetime=expireDate.toISOString()) #{expireDate.toLocaleString(undefined, {hourCycle:'h23'})}
td.banposts
if ban.posts && ban.posts.length > 0
| Hover to view
| #{__('Hover to view')}
.thread
each p in ban.posts
+post(p, false, false, false, true)
else
Posts not shown
#{__('Posts not shown')}
td
if ban.seen
| ✓
@ -45,7 +45,7 @@ mixin ban(ban, banpage)
if ban.appeal
textarea(rows=1 disabled='true') #{ban.appeal}
else if ban.allowAppeal
| No appeal submitted
| #{__('No appeal submitted')}
else
| -
td

@ -2,15 +2,15 @@ mixin boardtable(ppd=false, activity=false, owner=false)
.table-container.flex-center.mv-10.text-center
table(class=`boardtable${activity ? ' w900' : ''}`)
tr
th Board
th #{__('Board')}
if owner
th Owner
th Description
th PPH
th #{__('Owner')}
th #{__('Description')}
th #{__('PPH')}
if ppd
th PPD
th Users
th Posts
th #{__('PPD')}
th #{__('Users')}
th #{__('Posts')}
if activity
th Last Activity
th #{__('Latest Activity')}
block

@ -2,9 +2,9 @@ extends ../layout.pug
include ../mixins/ban.pug
block head
title Banned!
title #{__('Banned!')}
block content
h1.board-title Banned!
h4.board-description Bans currently in place against your IP:
h1.board-title #{__('Banned!')}
h4.board-description #{__('Bans currently in place against your IP')}:
include ../includes/banform.pug

@ -9,7 +9,7 @@ block head
title /#{board._id}/ - #{board.settings.name} - #{__n('Page %s', page)}
block content
+boardheader(modview ? 'Mod Index' : null)
+boardheader(modview ? __('Mod Index') : null)
br
include ../includes/postform.pug
br

@ -2,42 +2,42 @@ extends ../layout.pug
include ../mixins/boardtable.pug
block head
title Board List
title #{__('Board List')}
block content
h1.board-title Board List
h1.board-title #{__('Board List')}
.flexcenter.mv-10
form.form-post(action='/boards.html' method='GET')
input(type='hidden' value=page)
.row.wrap.sb
div(class=`col${enableWebring ? ' mr-5' : ''}`)
.row
.label Search
.label #{__('Search')}
input(type='text' name='search' value=search placeholder='Uri or tags')
.row
.label Sort
.label #{__('Sort')}
select(name='sort')
option(value='popularity') Popularity
option(value='activity' selected=query.sort === 'activity') Latest Activity
option(value='popularity') #{__('Popularity')}
option(value='activity' selected=query.sort === 'activity') #{__('Latest Activity')}
.row
.label Order
.label #{__('Order')}
select(name='direction')
option(value='desc') Descending
option(value='asc' selected=query.direction === 'asc') Ascending
option(value='desc') #{__('Descending')}
option(value='asc' selected=query.direction === 'asc') #{__('Ascending')}
if enableWebring
.row
.label Local First
.label #{__('Local First')}
label.postform-style.ph-5
input(type='checkbox', name='local_first', value='true' checked=localFirst)
if enableWebring
.col
.row
.label Sites
.label #{__('Sites')}
select(name='sites' size='5' multiple)
optgroup(label='Shown')
optgroup(label=__('Shown'))
each site in shown
option(value=site selected=true) #{site}
optgroup(label='Not Shown')
optgroup(label=__('Not Shown'))
each site in notShown
option(value=site) #{site}
input(type='submit', value='Filter')
@ -49,10 +49,10 @@ block content
td
span.left
if board.webring === true
span.help(title='Webring') 🔗
span.help(title=__('Webring')) 🔗
|
if board.settings.sfw === true
span.help(title='SFW') 💼
span.help(title=__('SFW')) 💼
|
a(href=path) #{board.webring ? board.siteName : ''} /#{board.webring ? board.uri : board._id}/ - #{board.settings.name}
td #{board.settings.description || '-'}

@ -6,10 +6,10 @@ include ../mixins/boardheader.pug
include ../mixins/announcements.pug
block head
title /#{board._id}/ - Catalog
title /#{board._id}/ - #{__('Catalog')}
block content
+boardheader(modview ? 'Mod Catalog' : 'Catalog')
+boardheader(modview ? __('Mod Catalog') : __('Catalog'))
br
include ../includes/postform.pug
br

@ -1,31 +1,31 @@
extends ../layout.pug
block head
title Change Password
title #{__('Change Password')}
block content
h1.board-title Change Password
h1.board-title #{__('Change Password')}
.form-wrapper.flex-center.mv-10
form.form-post(action='/forms/changepassword' method='POST' data-captcha-preload='true')
.row
.label Username
.label #{__('Username')}
input(type='text', name='username', maxlength='50' required)
.row
.label Existing Password
.label #{__('Existing Password')}
input(type='password', name='password', maxlength='100' required)
.row
.label New Password
.label #{__('New Password')}
input(type='password', name='newpassword', maxlength='100' required)
.row
.label Confirm New Password
.label #{__('Confirm New Password')}
input(type='password', name='newpasswordconfirm', maxlength='100' required)
.row
.label 2FA Code
input(type='number' name='twofactor' placeholder='if enabled')
.label #{__('2FA Code')}
input(type='number' name='twofactor' placeholder=__('if enabled'))
if captchaOptions.type === 'text'
include ../includes/captchasidelabel.pug
else
include ../includes/captchafieldrow.pug
input(type='submit', value='Change Password')
p: a(href='/login.html') Login
p: a(href='/register.html') Register
input(type='submit', value=__('Change Password'))
p: a(href='/login.html') #{__('Login')}
p: a(href='/register.html') #{__('Register')}

@ -1,27 +1,27 @@
extends ../layout.pug
block head
title Create Board
title #{__('Create Board')}
block content
h1.board-title Create Board
h1.board-title #{__('Create Board')}
.form-wrapper.flex-center.mv-10
form.form-post(action='/forms/create' method='POST' data-captcha-preload='true')
.row
.label URI e.g. /uri/
input(type='text', name='uri', maxlength=globalLimits.fieldLength.uri pattern='[a-zA-Z0-9]+' required title='alphanumeric only')
.label #{__('URI e.g. /uri/')}
input(type='text', name='uri', maxlength=globalLimits.fieldLength.uri pattern='[a-zA-Z0-9]+' required title=__('alphanumeric only'))
.row
.label Name
.label #{__('Name')}
input(type='text', name='name', maxlength=globalLimits.fieldLength.boardname required)
.row
.label Description
.label #{__('Description')}
input(type='text', name='description', maxlength=globalLimits.fieldLength.description)
.row
.label Tags
textarea(name='tags' placeholder='Newline separated, max 10')
.label #{__('Tags')}
textarea(name='tags' placeholder=__('Newline separated, max 10'))
if captchaOptions.type === 'text'
include ../includes/captchasidelabel.pug
else
include ../includes/captchafieldrow.pug
input(type='submit', value='Submit')
input(type='submit', value=__('Create'))

Loading…
Cancel
Save