6d4558c978
We now allow server operators to customize the /r/ part of the channel links The new config option in the template is commented and the config module validates and will terminate with status 78 if an improper value is used. We've also dropped some old cruft and uses a more elegant method to assign CHANNEL.name Resolves #668
228 lines
7.8 KiB
Plaintext
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
|