184 lines
6.8 KiB
Cheetah
184 lines
6.8 KiB
Cheetah
<div class="ui container">
|
|
<div class="ui container" style="margin-bottom: 2vh; display: none" id="info">
|
|
<h4 class="ui top attached header">
|
|
Information
|
|
</h4>
|
|
<div class="ui attached segment" id="info_content">
|
|
Currently there are no courses available, check back later.
|
|
</div>
|
|
</div>
|
|
<div class="ui container" style="margin-bottom: 2vh; display: none" id="my_courses">
|
|
<h4 class="ui top attached header">
|
|
Your Courses
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped table">
|
|
<thead>
|
|
<tr>
|
|
<th>UID</th>
|
|
<th>Name</th>
|
|
<th>Website</th>
|
|
<th>Role</th>
|
|
<th>Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="my_courses_table">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ui container" style="margin-bottom: 2vh; display: none" id="courses">
|
|
<h4 class="ui top attached header">
|
|
Available Courses
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped table">
|
|
<thead>
|
|
<tr>
|
|
<th>UID</th>
|
|
<th>Name</th>
|
|
<th>Website</th>
|
|
<th>Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="courses_table"></tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
fetch(COURSES_URL + "/courses/list", {
|
|
referrerPolicy: "origin",
|
|
credentials: "include",
|
|
redirect: 'follow',
|
|
}).then(res => res.text()).then(res => {
|
|
for (let [name, info] of Object.entries(JSON.parse(res))) {
|
|
if (info["role"] !== null && info["role"] !== "admin" && (!info["restricted"] || info["role"] !== "student")) {
|
|
const tr = document.createElement("tr")
|
|
|
|
const uid = document.createElement("td")
|
|
const link = document.createElement("a")
|
|
link.href = "/" + name
|
|
link.innerText = name
|
|
uid.appendChild(link)
|
|
tr.appendChild(uid)
|
|
|
|
const display = document.createElement("td")
|
|
display.innerText = info["display_name"]
|
|
tr.appendChild(display)
|
|
|
|
const website = document.createElement("td")
|
|
const link2 = document.createElement("a")
|
|
link2.href = info["website"]
|
|
link2.innerText = info["website"]
|
|
website.appendChild(link2)
|
|
tr.appendChild(website)
|
|
|
|
const role = document.createElement("td")
|
|
role.innerText = info["role"]
|
|
tr.appendChild(role)
|
|
|
|
const repo = document.createElement("td")
|
|
|
|
const form2 = document.createElement("form")
|
|
if (info["role"] === "student") {
|
|
form2.action = "/" + name + "/{{.SignedUser.Name}}"
|
|
} else {
|
|
form2.action = "/" + name
|
|
}
|
|
form2.method = "GET"
|
|
|
|
|
|
const btn2 = document.createElement("button")
|
|
btn2.type = "submit"
|
|
btn2.classList.add("ui", "button", "green")
|
|
btn2.innerText = "OPEN"
|
|
form2.appendChild(btn2)
|
|
|
|
repo.appendChild(form2)
|
|
tr.appendChild(repo)
|
|
|
|
document.getElementById("my_courses_table").appendChild(tr)
|
|
} else if (info["open"] || info["role"] === "admin") {
|
|
const tr = document.createElement("tr")
|
|
|
|
const uid = document.createElement("td")
|
|
uid.innerText = name
|
|
tr.appendChild(uid)
|
|
|
|
const display = document.createElement("td")
|
|
display.innerText = info["display_name"]
|
|
tr.appendChild(display)
|
|
|
|
const website = document.createElement("td")
|
|
const link = document.createElement("a")
|
|
link.href = info["website"]
|
|
link.innerText = info["website"]
|
|
website.appendChild(link)
|
|
tr.appendChild(website)
|
|
|
|
|
|
const join = document.createElement("td")
|
|
|
|
const form = document.createElement("form")
|
|
if (info["role"] !== "admin") {
|
|
form.method = "POST"
|
|
form.action = COURSES_URL + "/courses/join"
|
|
const hidden = document.createElement("input")
|
|
hidden.type = "hidden"
|
|
hidden.name = "course"
|
|
hidden.value = name
|
|
form.appendChild(hidden)
|
|
} else {
|
|
form.method = "GET"
|
|
form.action = "/" + name
|
|
}
|
|
const btn = document.createElement("button")
|
|
btn.type = "submit"
|
|
btn.classList.add("ui", "button", "red")
|
|
if (info["role"] !== "admin") {
|
|
btn.innerText = "JOIN"
|
|
btn.id = name
|
|
btn.onsubmit = function () {
|
|
document.getElementById(name).disabled = true
|
|
}
|
|
} else {
|
|
btn.innerText = "OPEN"
|
|
}
|
|
form.appendChild(btn)
|
|
|
|
join.appendChild(form)
|
|
tr.appendChild(join)
|
|
|
|
document.getElementById("courses_table").appendChild(tr)
|
|
}
|
|
}
|
|
let my_c = document.getElementById("my_courses_table").childElementCount
|
|
let c = document.getElementById("courses_table").childElementCount
|
|
if (my_c !== 0) {
|
|
document.getElementById("my_courses").style.removeProperty("display")
|
|
}
|
|
if (c !== 0) {
|
|
document.getElementById("courses").style.removeProperty("display")
|
|
}
|
|
if (my_c === 0 && c === 0) {
|
|
document.getElementById("info").style.removeProperty("display")
|
|
}
|
|
}).catch(_ => {
|
|
{{if .IsAdmin}}
|
|
document.getElementById("info").style.removeProperty("display")
|
|
document.getElementById("info_content").innerText = "you are admin. if you are non-oauth-user -> no courses, otherwise re-login to gitea."
|
|
{{else}}
|
|
const form = document.createElement("form")
|
|
form.action = "/user/logout"
|
|
form.method = "POST"
|
|
document.body.appendChild(form);
|
|
form.submit()
|
|
{{end}}
|
|
});
|
|
</script>
|