[frontend] Restructure Frontend Sources (#634)

* 🐸restructure frontend stuff, include admin and future user panel in main repo, properly deduplicate bundles for css+js across uses

* rename bundled to dist, caught by gitignore

* re-include status.css for profile template

* default to localhost

* serve frontend panels

* add todo message for abstraction

* refactor oauth registration flow

* oauth restructure

* update footer template

* change panel routes

* remove superfluous css imports

* write bundle to disk from test server, use forked budo-express

* wrap all page content in container

for robustness with addons etc injection other elements in body

* update documentation, goreleaser, Dockerfile

* update template meta tags

* add AGPL-3.0+ license header everywhere

* only attach update listener on EventEmitter

* cleaner config for various frontend bundles

* fix bundler script paths

* Merge commit 'd191931932b9293ce1be44ed08a1e69b9fcc1e25'

* fix up dockerfile, goreleaser

* go mod tidy

* add uglifyify

* move status hide/show js to frontend bundle

* fix stylesheet color( func regressions

* update contributing docs for new build path

* update goreleaser + docker building

* resolve dependency paths properly

* update package name

* use api errorhandler

Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
This commit is contained in:
f0x52
2022-06-09 12:51:19 +02:00
committed by GitHub
parent f30a581268
commit b43f9ceca9
47 changed files with 8061 additions and 1918 deletions

View File

@@ -1,19 +1,25 @@
<!-- footer.tmpl -->
<footer>
<div id="version">
GoToSocial: <span class="accent">{{.instance.Version}}</span><br>
<a href="https://github.com/superseriousbusiness/gotosocial">Source Code</a>
</div>
<div id="contact">
{{ if .instance.ContactAccount }}
Contact: <a href="{{.instance.ContactAccount.URL}}" class="nounderline">{{.instance.ContactAccount.Username}}</a><br>
{{ end }}
</div>
<div id="email">
{{ if .instance.Email }}
Email: <a href="mailto:{{.instance.Email}}" class="nounderline">{{.instance.Email}}</a><br>
{{ end }}
</div>
</footer>
<!-- footer.tmpl -->
<footer>
<div id="version">
GoToSocial: <span class="accent">{{.instance.Version}}</span><br>
<a href="https://github.com/superseriousbusiness/gotosocial">Source Code</a>
</div>
<div id="contact">
{{ if .instance.ContactAccount }}
Contact: <a href="{{.instance.ContactAccount.URL}}" class="nounderline">{{.instance.ContactAccount.Username}}</a><br>
{{ end }}
</div>
<div id="email">
{{ if .instance.Email }}
Email: <a href="mailto:{{.instance.Email}}" class="nounderline">{{.instance.Email}}</a><br>
{{ end }}
</div>
</footer>
</div>
{{ if .javascript }}
{{ range .javascript }}
<script src="{{.}}"></script>
{{ end }}
{{ end }}
</body>
</html>

View File

@@ -0,0 +1,5 @@
{{ template "header.tmpl" .}}
<main class="lightgray">
<div id="root"></div>
</main>
{{ template "footer.tmpl" .}}

View File

@@ -1,29 +1,31 @@
<!DOCTYPE html>
<!-- Header tmpl -->
<!-- header.tmpl -->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="og:title" content="GoToSocial Testing Instance">
<meta name="og:description" content="">
<meta name="og:title" content="{{.instance.Title}} - GoToSocial">
<meta name="og:description" content="{{.instance.ShortDescription}}">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/assets/base.css">
<link rel="stylesheet" href="/assets/dist/_colors.css">
<link rel="stylesheet" href="/assets/dist/base.css">
{{range .stylesheets}}<link rel="stylesheet" href="{{.}}">
{{end}}
<link rel="shortcut icon" href="/assets/logo.png" type="image/png">
<title>{{.instance.Title}} - GoToSocial</title>
</head>
<body>
<a href="/" class="nounderline">
<header>
<img src="/assets/logo.png" alt="Instance Logo"/>
<div>
<h1>
{{.instance.Title}}
</h1>
</div>
<div></div>
</header>
</a>
<div class="page">
<a href="/" class="nounderline">
<header>
<img src="/assets/logo.png" alt="Instance Logo"/>
<div>
<h1>
{{.instance.Title}}
</h1>
</div>
<div></div>
</header>
</a>

View File

@@ -31,19 +31,4 @@
{{end}}
</div>
</main>
<script>
Array.from(document.getElementsByClassName("spoiler-label")).forEach((label) => {
let checkbox = document.getElementById(label.htmlFor);
function update() {
if(checkbox.checked) {
label.innerHTML = "Show more";
} else {
label.innerHTML = "Show less";
}
}
update();
label.addEventListener("click", () => {setTimeout(update, 1)});
});
</script>
{{ template "footer.tmpl" .}}

View File

@@ -16,19 +16,4 @@
{{end}}
</div>
</main>
<script>
Array.from(document.getElementsByClassName("spoiler-label")).forEach((label) => {
let checkbox = document.getElementById(label.htmlFor);
function update() {
if(checkbox.checked) {
label.innerHTML = "Show more";
} else {
label.innerHTML = "Show less";
}
}
update();
label.addEventListener("click", () => {setTimeout(update, 1)});
});
</script>
{{ template "footer.tmpl" .}}