{{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content status-page-500">
	<p class="gt-mt-5 center"><img src="{{AssetUrlPrefix}}/img/500.png" alt="Internal Server Error"></p>
	<div class="ui divider"></div>

	<div class="ui container gt-mt-5">
		{{if .ErrorMsg}}
			<p>{{.locale.Tr "error.occurred"}}:</p>
			<pre class="gt-whitespace-pre-wrap gt-break-all">{{.ErrorMsg}}</pre>
		{{end}}

		<div class="center gt-mt-5">
			{{if .ShowFooterVersion}}<p>{{.locale.Tr "admin.config.app_ver"}}: {{AppVer}}</p>{{end}}
			{{if .IsAdmin}}<p>{{.locale.Tr "error.report_message"  | Safe}}</p>{{end}}
		</div>
	</div>
</div>
{{/* when a sub-template triggers an 500 error, its parent template has been partially rendered,
then the 500 page will be rendered after that partially rendered page, the HTML/JS are totally broken.
so use this inline script to try to move it to main viewport */}}
<script type="module">
const embedded = document.querySelector('.page-content .page-content.status-page-500');
if (embedded) {
	// move footer to main view
	const footer = document.querySelector('footer');
	if (footer) document.querySelector('body').append(footer);
	// move the 500 error page content to main view
	const embeddedParent = embedded.parentNode;
	let main = document.querySelector('.page-content');
	main = main ?? document.querySelector('body');
	main.prepend(document.createElement('hr'));
	main.prepend(embedded);
	embeddedParent.remove(); // remove the unrelated 500-page elements (eg: the duplicate nav bar)
}
</script>
{{template "base/footer" .}}