init
This commit is contained in:
151
templates/repo/course_view_list.tmpl
Normal file
151
templates/repo/course_view_list.tmpl
Normal file
@ -0,0 +1,151 @@
|
||||
<table id="repo-files-table" class="ui single line table">
|
||||
<thead>
|
||||
<tr class="commit-list">
|
||||
<th>
|
||||
{{if .LatestCommitUser}}
|
||||
{{ctx.AvatarUtils .LatestCommitUser 24}}
|
||||
{{if .LatestCommitUser.FullName}}
|
||||
<a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommitUser.FullName}}</strong></a>
|
||||
{{else}}
|
||||
<a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{if .LatestCommit.Author}}{{.LatestCommit.Author.Name}}{{else}}{{.LatestCommitUser.Name}}{{end}}</strong></a>
|
||||
{{end}}
|
||||
{{else}}
|
||||
{{if .LatestCommit.Author}}
|
||||
{{ctx.AvatarUtils.AvatarByEmail .LatestCommit.Author.Email .LatestCommit.Author.Name 24}}
|
||||
<strong>{{.LatestCommit.Author.Name}}</strong>
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
</th>
|
||||
<th>{{ $commitLink:= printf "%s/commit/%s" .RepoLink .LatestCommit.ID }}
|
||||
{{template "repo/commit_statuses" dict "Status" .LatestCommitStatus "Statuses" .LatestCommitStatuses "root" $}}
|
||||
<span class="grey commit-summary" title="{{.LatestCommit.Summary}}"><span
|
||||
class="message-wrapper">{{RenderCommitMessageLinkSubject .LatestCommit.Message $.RepoLink $commitLink $.Repository.ComposeMetas}}</span>
|
||||
{{if IsMultilineCommitMessage .LatestCommit.Message}}
|
||||
<button class="basic compact mini ui icon button commit-button"><i
|
||||
class="ellipsis horizontal icon"></i></button>
|
||||
<pre class="commit-body"
|
||||
style="display: none;">{{RenderCommitBody .LatestCommit.Message $.RepoLink $.Repository.ComposeMetas}}</pre>
|
||||
{{end}}
|
||||
</span>
|
||||
</th>
|
||||
<th id="total"></th>
|
||||
<th class="text grey right age">{{if .LatestCommit.Author}}{{TimeSince .LatestCommit.Author.When $.Lang}}{{end}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if .HasParentPath}}
|
||||
<tr class="has-parent">
|
||||
<td colspan="3">{{svg "octicon-reply"}}<a href="{{$.BranchLink}}{{.ParentPath}}">..</a></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{range $item := .Files}}
|
||||
{{$entry := $item.Entry}}
|
||||
{{$commit := $item.Commit}}
|
||||
{{$subModuleFile := $item.SubModuleFile}}
|
||||
<tr>
|
||||
<td class="name four wide">
|
||||
<span class="truncate">
|
||||
{{if $entry.IsSubModule}}
|
||||
{{svg "octicon-file-submodule"}}
|
||||
{{$refURL := $subModuleFile.RefURL AppUrl $.Repository.FullName $.SSHDomain}}
|
||||
{{if $refURL}}
|
||||
<a href="{{$refURL}}">{{$entry.Name}}</a><span class="at">@</span><a
|
||||
href="{{$refURL}}/commit/{{$subModuleFile.RefID}}">{{ShortSha $subModuleFile.RefID}}</a>
|
||||
{{else}}
|
||||
{{$entry.Name}}<span class="at">@</span>{{ShortSha $subModuleFile.RefID}}
|
||||
{{end}}
|
||||
{{else}}
|
||||
{{if $entry.IsDir}}
|
||||
{{$subJumpablePathName := $entry.GetSubJumpablePathName}}
|
||||
{{svg "octicon-file-directory-fill"}}
|
||||
<a class="muted" href="{{$.TreeLink}}/{{PathEscapeSegments $subJumpablePathName}}" title="{{$subJumpablePathName}}">
|
||||
{{$subJumpablePathFields := StringUtils.Split $subJumpablePathName "/"}}
|
||||
{{$subJumpablePathFieldLast := (Eval (len $subJumpablePathFields) "-" 1)}}
|
||||
{{if eq $subJumpablePathFieldLast 0}}
|
||||
{{$subJumpablePathName}}
|
||||
{{else}}
|
||||
{{$subJumpablePathPrefixes := slice $subJumpablePathFields 0 $subJumpablePathFieldLast}}
|
||||
<span class="text light-2">{{StringUtils.Join $subJumpablePathPrefixes "/"}}</span>/{{index $subJumpablePathFields $subJumpablePathFieldLast}}
|
||||
{{end}}
|
||||
</a>
|
||||
{{else}}
|
||||
{{svg (printf "octicon-%s" (EntryIcon $entry))}}
|
||||
<a href="{{$.TreeLink}}/{{$entry.Name}}"
|
||||
title="{{$entry.Name}}">{{$entry.Name}}</a>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</span>
|
||||
</td>
|
||||
<td class="message five wide">
|
||||
<span class="truncate">
|
||||
<a href="{{$.RepoLink}}/commit/{{$commit.ID}}"
|
||||
title="{{$commit.Summary}}">{{$commit.Summary | RenderEmoji}}</a>
|
||||
</span>
|
||||
</td>
|
||||
<td class="message four wide center centered">
|
||||
<span style="display: none;" class="ui basic label" id="{{$entry.Name}}">
|
||||
</span>
|
||||
</td>
|
||||
<td class="text right age three wide">{{TimeSince $commit.Committer.When $.Lang}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{if .ReadmeExist}}
|
||||
{{template "repo/view_file" .}}
|
||||
{{end}}
|
||||
<script>
|
||||
if (!("{{.Name}}" === "tutors" || "{{.Name}}" === "template")) {
|
||||
fetch(COURSES_URL + "/courses/{{$.Repository.Owner.Name}}/{{$.Repository.Name}}/exercises", {
|
||||
referrerPolicy: "origin",
|
||||
credentials: "include",
|
||||
redirect: 'follow'
|
||||
}).then(res => {
|
||||
if (!res.ok) {
|
||||
if (res.status === 401) {
|
||||
const form = document.createElement("form")
|
||||
form.action = "/user/logout"
|
||||
form.method = "POST"
|
||||
document.body.appendChild(form);
|
||||
form.submit()
|
||||
}
|
||||
} else {
|
||||
res.text().then(res => {
|
||||
let json = JSON.parse(res)
|
||||
let total = document.getElementById("total")
|
||||
total.innerText = json["total"] + " / " + json["max_total"] + " (" + json["percentage"] + "%)"
|
||||
for (let [name, info] of Object.entries(json["exercises"])) {
|
||||
let el = document.getElementById(name)
|
||||
if (el !== null) {
|
||||
if (info["finished"]) {
|
||||
if (info["points"] !== null) {
|
||||
el.innerText = info["points"].toString() + " / " + info["max_points"].toString()
|
||||
el.classList.add("black")
|
||||
} else {
|
||||
el.innerText = "grading in process"
|
||||
el.classList.add("black")
|
||||
}
|
||||
} else {
|
||||
el.innerText = info["message"]
|
||||
if (info["important_message"]) {
|
||||
el.classList.add("red")
|
||||
}
|
||||
}
|
||||
el.style.removeProperty("display")
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}).catch(_ => {
|
||||
{{if .IsAdmin}}
|
||||
{{else}}
|
||||
const form = document.createElement("form")
|
||||
form.action = "/user/logout"
|
||||
form.method = "POST"
|
||||
document.body.appendChild(form);
|
||||
form.submit()
|
||||
{{end}}
|
||||
})
|
||||
}
|
||||
</script>
|
Reference in New Issue
Block a user