init
This commit is contained in:
183
templates/user/dashboard/courses.tmpl
Normal file
183
templates/user/dashboard/courses.tmpl
Normal file
@ -0,0 +1,183 @@
|
||||
<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>
|
15
templates/user/dashboard/dashboard.tmpl
Normal file
15
templates/user/dashboard/dashboard.tmpl
Normal file
@ -0,0 +1,15 @@
|
||||
{{template "base/head" .}}
|
||||
<div class="page-content dashboard feeds">
|
||||
<div class="ui container">
|
||||
{{template "base/alert" .}}
|
||||
<div class="ui stackable grid">
|
||||
<div class="ui row">
|
||||
<div class="ui container ten wide column">
|
||||
{{template "user/dashboard/courses" .}}
|
||||
</div>
|
||||
{{template "user/dashboard/named_feeds" .}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{template "base/footer" .}}
|
11
templates/user/dashboard/named_feeds.tmpl
Normal file
11
templates/user/dashboard/named_feeds.tmpl
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="ui container six wide column">
|
||||
<h4 class="ui top attached header">
|
||||
Feed
|
||||
</h4>
|
||||
<div class="ui attached segment">
|
||||
{{template "user/dashboard/feeds" .}}
|
||||
{{ $length := len .Feeds }} {{ if eq $length 0 }}
|
||||
Nothing to see here, at least yet.
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
Reference in New Issue
Block a user