CyTube/templates/channeloptions.pug
Calvin Montgomery 966da1ac58 Revert "Replace quadratic emote list impl with Map"
This reverts commit 0f9bc44925.

The original commit was not backwards compatible with use cases that
users were relying on, such as emotes being sorted in insertion order by
default.

I will develop a new patch which fixes the performance issue in a
backwards compatible way.
2018-02-01 17:39:45 -08:00

228 lines
7.8 KiB
Plaintext

mixin lcheckbox(id, label)
.form-group
label.control-label.col-sm-4(for=id)= label
.col-sm-8
.checkbox
input(type="checkbox", id=id)
mixin rcheckbox(id, label)
.form-group
.col-sm-8.col-sm-offset-4
.checkbox
label(for=id)
input(type="checkbox", id=id)
= label
mixin textbox(id, label, placeholder)
.form-group
label.control-label.col-sm-4(for=id)= label
.col-sm-8
if placeholder
input.form-control(id=id, type="text", placeholder=placeholder)
else
input.form-control(id=id, type="text")
mixin lcheckbox-auto(id, label)
.form-group
label.control-label.col-sm-4(for=id)= label
.col-sm-8
.checkbox
input.cs-checkbox(type="checkbox", id=id)
mixin rcheckbox-auto(id, label)
.form-group
.col-sm-8.col-sm-offset-4
.checkbox
label(for=id)
input.cs-checkbox(type="checkbox", id=id)
= label
mixin textbox-auto(id, label, placeholder)
.form-group
label.control-label.col-sm-4(for=id)= label
.col-sm-8
if placeholder
input.form-control.cs-textbox(id=id, type="text", placeholder=placeholder)
else
input.form-control.cs-textbox(id=id, type="text")
mixin textbox-timeinput-auto(id, label, placeholder)
.form-group
label.control-label.col-sm-4(for=id)= label
.col-sm-8
if placeholder
input.form-control.cs-textbox-timeinput(id=id, type="text", placeholder=placeholder)
else
input.form-control.cs-textbox-timeinput(id=id, type="text")
mixin miscoptions
#cs-miscoptions.tab-pane.active
h4 General Settings
form.form-horizontal(action="javascript:void(0)")
+rcheckbox-auto("cs-allow_voteskip", "Allow voteskip")
+rcheckbox-auto("cs-allow_dupes", "Allow duplicate videos on the playlist")
+textbox-auto("cs-voteskip_ratio", "Voteskip ratio", "0.5")
+textbox-auto("cs-maxlength", "Max video length", "HH:MM:SS")
+textbox-timeinput-auto("cs-playlist_max_duration_per_user", "Max total queue time per user", "HH:MM:SS")
+textbox-auto("cs-afk_timeout", "Auto-AFK Delay", "0 (disabled)")
.form-group
.col-sm-offset-4
h4 Chat Settings
form.form-horizontal(action="javascript:void(0)")
+rcheckbox-auto("cs-enable_link_regex", "Convert URLs in chat to links")
+rcheckbox-auto("cs-chat_antiflood", "Throttle chat")
+textbox-auto("cs-chat_antiflood_burst", "# of messages allowed before throttling")
+textbox-auto("cs-chat_antiflood_sustained", "# of messages (after burst) allowed per second")
+textbox-timeinput-auto("cs-new_user_chat_delay", "Delay before new accounts can chat", "0")
.form-group
.col-sm-8.col-sm-offset-4
span.text-info Restrictions to new accounts can be disabled by setting the delay to 0.
+textbox-timeinput-auto("cs-new_user_chat_link_delay", "Delay before new accounts can post links in chat", "0")
.form-group
.col-sm-8.col-sm-offset-4
span.text-info Changes are automatically saved.
mixin adminoptions
#cs-adminoptions.tab-pane
h4 Admin-Only Settings
form.form-horizontal(action="javascript:void(0)")
- var defname = `CyTube - /${channelPath}/${channelName}`
+textbox-auto("cs-pagetitle", "Page title", defname)
+textbox-auto("cs-password", "Password", "leave blank to disable")
+textbox-auto("cs-externalcss", "External CSS", "Stylesheet URL")
+textbox-auto("cs-externaljs", "External Javascript", "Script URL")
+rcheckbox-auto("cs-show_public", "List channel publicly")
+rcheckbox-auto("cs-torbanned", "Block connections from Tor")
+rcheckbox-auto("cs-allow_ascii_control", "Allow ASCII control characters (e.g. newlines)")
+textbox-auto("cs-playlist_max_per_user", "Maximum # of videos per user")
.form-group
.col-sm-8.col-sm-offset-4
span.text-info Set to 0 for no limit
.form-group
.col-sm-8.col-sm-offset-4
span.text-info Changes are automatically saved.
mixin motdeditor
#cs-motdeditor.tab-pane
h4 MOTD editor
p The MOTD can be formatted using a subset of HTML. Tags which attempt to execute Javascript will be removed.
textarea.form-control#cs-motdtext(rows="10")
button.btn.btn-primary#cs-motdsubmit Save MOTD
mixin csseditor
#cs-csseditor.tab-pane
h4 CSS editor
p Maximum size 20KB. If more space is required, use the External CSS option under General Settings to link to an externally hosted stylesheet.
textarea.form-control#cs-csstext(rows="10")
button.btn.btn-primary#cs-csssubmit Save CSS
mixin jseditor
#cs-jseditor.tab-pane
h4 JS editor
p Maximum size 20KB. If more space is required, use the External JS option under General Settings to link to an externally hosted stylesheet.
textarea.form-control#cs-jstext(rows="10")
button.btn.btn-primary#cs-jssubmit Save JS
mixin banlist
#cs-banlist.tab-pane
h4 Ban list
table.table.table-striped
thead
tr
th Unban
th IP
th Name
th Banned by
mixin recentjoins
#cs-recentjoins.tab-pane
h4 Recent connections
table.table.table-striped
thead
tr
th Name
th Aliases
th Time
mixin chanranks
#cs-chanranks.tab-pane
h4 Moderator List
form.form-inline(action="javascript:void(0)", role="form")
.input-group
input#cs-chanranks-name.form-control(type="text", placeholder="Name")
span.input-group-btn
button#cs-chanranks-mod.btn.btn-success +Mod
button#cs-chanranks-adm.btn.btn-info +Admin
button#cs-chanranks-owner.btn.btn-info +Owner
table.table.table-striped
thead
tr
th Name
th Rank
mixin chatfilters
#cs-chatfilters.tab-pane
h4 Chat Filters
form.form-horizontal(action="javascript:void(0)", role="form")
+textbox("cs-chatfilters-newname", "Filter name")
+textbox("cs-chatfilters-newregex", "Filter regex")
.form-group
label.control-label.col-sm-4(for="cs-chatfilters-newflags") Flags
.col-sm-8
input#cs-chatfilters-newflags.form-control.cs-textbox(type="text", value="g")
+textbox("cs-chatfilters-newreplace", "Replacement")
.form-group
.col-sm-8.col-sm-offset-4
button#cs-chatfilters-newsubmit.btn.btn-primary Create Filter
table.table.table-striped.table-condensed
thead
tr
th Control
th Name
th Active
button#cs-chatfilters-export.btn.btn-default Export filter list
button#cs-chatfilters-import.btn.btn-default Import filter list
textarea#cs-chatfilters-exporttext.form-control(rows="5")
mixin emotes
#cs-emotes.tab-pane
h4 Emotes
form.form-horizontal(action="javascript:void(0)", role="form")
+textbox("cs-emotes-newname", "Emote name")
+textbox("cs-emotes-newimage", "Emote image")
.form-group
.col-sm-8.col-sm-offset-4
button#cs-emotes-newsubmit.btn.btn-primary Create Emote
form.form-inline
.form-group
input.emotelist-search.form-control(type="text", placeholder="Search")
.form-group
.checkbox
label
input.emotelist-alphabetical(type="checkbox")
| Sort alphabetically
.emotelist-paginator-container
table.emotelist-table.table.table-striped.table-condensed
thead
tr
th Delete
th Name
th Image
tbody
button#cs-emotes-export.btn.btn-default Export emote list
button#cs-emotes-import.btn.btn-default Import emote list
textarea#cs-emotes-exporttext.form-control(rows="5")
mixin chanlog
#cs-chanlog.tab-pane
h4 Channel Log
strong Filter Log:
select#cs-chanlog-filter.form-control(multiple="multiple")
pre#cs-chanlog-text
button.btn.btn-default#cs-chanlog-refresh Refresh
mixin permeditor
#cs-permedit.tab-pane