Files
mailova/app/templates/base.html

66 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}星笺{% endblock %}</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
{% block nav %}
<nav class="navbar">
<a href="/" class="nav-brand">{{ 'brand'|t(user.language if user else 'zh') }}</a>
{% if user is defined and user %}
<button class="nav-hamburger" onclick="document.querySelector('.nav-links').classList.toggle('open')"></button>
<div class="nav-links">
<a href="/profiles">{{ 'nav.profiles'|t(user.language) }}</a>
<a href="/u/{{ user.username }}" target="_blank">{{ 'nav.showcase'|t(user.language) }}</a>
<a href="/settings">{{ 'nav.settings'|t(user.language) }}</a>
{% if user.is_admin %}
<a href="/admin">{{ 'nav.admin'|t(user.language) }}</a>
{% endif %}
<a href="/api/docs">{{ 'nav.api_docs'|t(user.language) }}</a>
<div class="lang-switcher" id="langSwitcher">
<button type="button" class="lang-globe" onclick="document.getElementById('langDropdown').classList.toggle('show')">🌐</button>
<div class="lang-dropdown" id="langDropdown">
{% for code, name in available_languages.items() %}
<form method="post" action="/settings/language">
<input type="hidden" name="language" value="{{ code }}">
<button type="submit" class="lang-option {% if user.language == code %}active{% endif %}">{{ name }}</button>
</form>
{% endfor %}
</div>
</div>
<a href="/logout" class="nav-logout">{{ 'nav.logout'|t(user.language) }}</a>
</div>
{% endif %}
</nav>
{% endblock %}
<main class="container">
{% block content %}{% endblock %}
</main>
{% set _c = get_copyright() %}
{% if _c %}
<footer style="text-align:center;padding:2rem 1rem;color:var(--text-muted);font-size:.8rem;border-top:1px solid var(--border);margin-top:2rem">
{{ _c|safe }}
</footer>
{% endif %}
</body>
<script>
// Auto-trim whitespace from all text inputs and textareas on form submit
document.addEventListener('submit', function(e) {
e.target.querySelectorAll('input[type="text"], textarea').forEach(function(el) {
el.value = el.value.trim();
});
}, true);
// Close language dropdown when clicking outside
document.addEventListener('click', function(e) {
var sw = document.getElementById('langSwitcher');
var dd = document.getElementById('langDropdown');
if (sw && dd && !sw.contains(e.target)) {
dd.classList.remove('show');
}
});
</script>
</html>