2026-02-04 06:23:04 -05:00
|
|
|
{#
|
|
|
|
|
OTS Signage Modern Theme - Authenticated Shell Override
|
|
|
|
|
Replaces the header and shell structure with a modern topbar + sidebar layout
|
|
|
|
|
#}
|
|
|
|
|
{% extends "base.twig" %}
|
|
|
|
|
|
|
|
|
|
{% block head %}
|
|
|
|
|
{{ parent() }}
|
|
|
|
|
<link rel="stylesheet" href="{{ baseUrl }}/theme/custom/otssignange/css/override.css" />
|
|
|
|
|
<link rel="stylesheet" href="{{ baseUrl }}/theme/custom/otssignange/css/client.css" />
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
|
|
{% block htmlTag %}
|
2026-02-04 07:17:33 -05:00
|
|
|
<html lang="en" data-ots-theme="v1" data-mode="dark">
|
2026-02-04 06:23:04 -05:00
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
|
|
{% block body %}
|
2026-02-04 07:17:33 -05:00
|
|
|
<body class="ots-theme ots-dark-mode">
|
2026-02-04 06:23:04 -05:00
|
|
|
<div class="ots-shell">
|
|
|
|
|
{% include "authed-sidebar.twig" %}
|
|
|
|
|
|
|
|
|
|
<div class="ots-main">
|
|
|
|
|
{% block header %}
|
|
|
|
|
<header class="ots-topbar">
|
|
|
|
|
<div class="topbar-left">
|
|
|
|
|
<button class="btn-ghost topbar-toggle" data-action="toggle-sidebar" aria-label="Toggle sidebar" title="Toggle sidebar">
|
2026-02-04 07:17:33 -05:00
|
|
|
<svg class="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
|
|
|
<line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/>
|
|
|
|
|
</svg>
|
2026-02-04 06:23:04 -05:00
|
|
|
</button>
|
|
|
|
|
<div class="topbar-title">
|
|
|
|
|
<h1 class="page-title">{{ pageTitle|default('Dashboard') }}</h1>
|
|
|
|
|
{% if pageSubtitle is defined %}<p class="page-subtitle">{{ pageSubtitle }}</p>{% endif %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="topbar-right">
|
|
|
|
|
<form action="{{ baseUrl }}/search" class="topbar-search" method="get" role="search">
|
2026-02-04 07:17:33 -05:00
|
|
|
<svg class="search-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
|
|
|
<circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
|
|
|
|
|
</svg>
|
2026-02-04 06:23:04 -05:00
|
|
|
<input type="text" name="q" placeholder="Search…" aria-label="Search" class="search-input" />
|
|
|
|
|
</form>
|
|
|
|
|
<div class="topbar-actions">
|
2026-02-04 07:17:33 -05:00
|
|
|
<button class="topbar-btn" aria-label="Notifications" title="Notifications">
|
|
|
|
|
<svg class="icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
|
|
|
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/>
|
|
|
|
|
</svg>
|
|
|
|
|
</button>
|
2026-02-04 06:23:04 -05:00
|
|
|
<div class="dropdown user-menu">
|
|
|
|
|
<button class="topbar-btn user-btn" aria-label="User menu" aria-expanded="false">
|
2026-02-04 07:17:33 -05:00
|
|
|
<span class="avatar avatar-sm">{{ user.username|first|upper }}</span>
|
2026-02-04 06:23:04 -05:00
|
|
|
</button>
|
2026-02-04 07:17:33 -05:00
|
|
|
<ul class="dropdown-menu dropdown-right" role="menu">
|
2026-02-04 06:23:04 -05:00
|
|
|
<li><a href="{{ baseUrl }}/profile" role="menuitem">Profile</a></li>
|
|
|
|
|
<li><a href="{{ baseUrl }}/logout" role="menuitem">Sign out</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
|
|
<main class="ots-content">
|
|
|
|
|
{% block content %}
|
|
|
|
|
<!-- Content inserted here by page templates -->
|
|
|
|
|
{% endblock %}
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
{% block footer %}
|
|
|
|
|
<footer class="ots-footer">
|
2026-02-04 07:17:33 -05:00
|
|
|
<p class="text-muted text-xs">© {{ currentDate|date('Y') }} {{ app_name }}. Powered by <a href="https://xibosignage.com">Xibo</a>.</p>
|
2026-02-04 06:23:04 -05:00
|
|
|
</footer>
|
|
|
|
|
{% endblock %}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{% block scripts %}
|
|
|
|
|
{{ parent() }}
|
|
|
|
|
<script src="{{ baseUrl }}/theme/custom/otssignange/js/theme.js"></script>
|
|
|
|
|
{% endblock %}
|
|
|
|
|
</body>
|
|
|
|
|
{% endblock %}
|