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
104 lines
4.2 KiB
Plaintext
104 lines
4.2 KiB
Plaintext
doctype html
|
|
html(lang="en")
|
|
head
|
|
include head
|
|
+head()
|
|
body
|
|
#wrap
|
|
nav.navbar.navbar-inverse.navbar-fixed-top(role="navigation")
|
|
include nav
|
|
+navheader()
|
|
#nav-collapsible.collapse.navbar-collapse
|
|
ul.nav.navbar-nav
|
|
+navdefaultlinks("/account/channels")
|
|
+navloginlogout("/account/channels")
|
|
section#mainpage
|
|
.container
|
|
if !loggedIn
|
|
.col-lg-6.col-lg-offset-3.col-md-6.col-md-offset-3
|
|
.alert.alert-danger.messagebox.center
|
|
strong Authorization Required
|
|
p You must be <a href="/login">logged in</a> to view this page.
|
|
else
|
|
.col-lg-6.col-md-6
|
|
h3 My Channels
|
|
if deleteChannelError
|
|
.alert.alert-danger.center.messagebox
|
|
strong Channel Deletion Failed
|
|
p= deleteChannelError
|
|
if channels.length == 0
|
|
.center
|
|
strong You haven't registered any channels
|
|
else
|
|
table.table.table-bordered
|
|
thead
|
|
tr
|
|
th Channel
|
|
tbody
|
|
for c in channels
|
|
tr
|
|
th
|
|
form.form-inline.pull-right(action="/account/channels", method="post", onsubmit="return confirm('Are you sure you want to delete " +c.name+ "? This cannot be undone');")
|
|
input(type="hidden", name="_csrf", value=csrfToken)
|
|
input(type="hidden", name="action", value="delete_channel")
|
|
input(type="hidden", name="name", value=c.name)
|
|
button.btn.btn-xs.btn-danger(type="submit") Delete
|
|
span.glyphicon.glyphicon-trash
|
|
a(href=`/${channelPath}/${c.name}`, style="margin-left: 5px")= c.name
|
|
.col-lg-6.col-md-6
|
|
h3 Register a new channel
|
|
if newChannelError
|
|
.alert.alert-danger.messagebox.center
|
|
strong Channel Registration Failed
|
|
p= newChannelError
|
|
form(action="/account/channels", method="post")
|
|
input(type="hidden", name="_csrf", value=csrfToken)
|
|
input(type="hidden", name="action", value="new_channel")
|
|
.form-group
|
|
label.control-label(for="channelname") Channel URL
|
|
.input-group
|
|
span.input-group-addon #{baseUrl}/#{channelPath}/
|
|
input#channelname.form-control(type="text", name="name", maxlength="30", onkeyup="checkChannel()")
|
|
p#validate_channel.text-danger.pull-right
|
|
button#register.btn.btn-primary.btn-block(type="submit") Register
|
|
|
|
include footer
|
|
+footer()
|
|
script( type='text/javascript').
|
|
function checkChannel(){
|
|
function nameIsInvalid(id){
|
|
if(/\s/.test(id)){
|
|
return 'Channel URL may not contain spaces';
|
|
}
|
|
if(id === ''){
|
|
return 'Channel URL must not be empty';
|
|
}
|
|
if(!/^[\w-]{1,30}$/.test(id)){
|
|
return 'Channel URL may only consist of a-z, A-Z, 0-9, - and _';
|
|
}
|
|
return false;
|
|
}
|
|
|
|
var box = $("#channelname");
|
|
var value = box.val();
|
|
var lastkey = Date.now();
|
|
box.data("lastkey", lastkey);
|
|
|
|
setTimeout(function () {
|
|
if (box.data("lastkey") !== lastkey || box.val() !== value) {
|
|
return;
|
|
}
|
|
if(nameIsInvalid(value)){
|
|
$('#validate_channel').text(nameIsInvalid(value))
|
|
.parent().addClass('has-error').removeClass('has-success');
|
|
$('#register').addClass('disabled');
|
|
} else {
|
|
$('#validate_channel').text('')
|
|
.parent().addClass('has-success').removeClass('has-error');
|
|
$('#register').removeClass('disabled');
|
|
}
|
|
}, 200);
|
|
|
|
}
|
|
|