mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-28 09:17:17 +00:00
* Allow to use single web instance for any repository * some improvements * drop includes from user home directory, introduce new variables to docker The old solution didn't actually work as expected, because devtools configuration belongs to filesystem (as well as sudo one), so it was still required to run setup command. In order to handle additional repositories, the POSTSETUP and PRESETUP commands variables have been introduced. FAQ has been updated as well * raise 404 in case if repository is unknown
165 lines
8.9 KiB
Django/Jinja
165 lines
8.9 KiB
Django/Jinja
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>ahriman</title>
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<link rel="shortcut icon" href="/static/favicon.ico">
|
|
|
|
{% include "utils/style.jinja2" %}
|
|
{% include "user-style.jinja2" ignore missing %}
|
|
</head>
|
|
|
|
<body>
|
|
|
|
{% include "utils/bootstrap-scripts.jinja2" %}
|
|
|
|
<div class="container">
|
|
<nav class="navbar navbar-expand-lg">
|
|
<div class="navbar-brand"><img src="/static/logo.svg" width="30" height="30" alt=""> ahriman</div>
|
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-supported-content" aria-controls="navbar-supported-content" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
|
|
<div id="navbar-supported-content" class="collapse navbar-collapse">
|
|
<ul id="repositories" class="nav nav-tabs">
|
|
{% for repository in repositories %}
|
|
<li class="nav-item">
|
|
<a id="{{ repository.id }}-lnk" class="nav-link" href="#{{ repository.id }}" data-repository="{{ repository.repository }}" data-architecture="{{ repository.architecture }}">{{ repository.repository }} ({{ repository.architecture }})</a>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</div>
|
|
|
|
<div id="alert-placeholder" class="toast-container p3 top-0 start-50 translate-middle-x"></div>
|
|
|
|
<div class="container">
|
|
<div id="toolbar" class="dropdown">
|
|
<a id="badge-status" tabindex="0" role="button" class="btn btn-outline-secondary" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-content="no run data"><i class="bi bi-info-circle"></i></a>
|
|
|
|
{% if not auth.enabled or auth.username is not none %}
|
|
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="bi bi-box"></i> packages
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<button id="package-add-button" class="btn dropdown-item" data-bs-toggle="modal" data-bs-target="#package-add-modal" hidden>
|
|
<i class="bi bi-plus"></i> add
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button id="package-update-button" class="btn dropdown-item" onclick="updatePackages()" hidden>
|
|
<i class="bi bi-play"></i> update
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button id="package-rebuild-button" class="btn dropdown-item" data-bs-toggle="modal" data-bs-target="#package-rebuild-modal" hidden>
|
|
<i class="bi bi-arrow-clockwise"></i> rebuild
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button id="package-remove-button" class="btn dropdown-item" onclick="removePackages()" disabled hidden>
|
|
<i class="bi bi-trash"></i> remove
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
|
|
<button id="key-import-button" type="button" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#key-import-modal" hidden>
|
|
<i class="bi bi-key"></i> import key
|
|
</button>
|
|
{% endif %}
|
|
|
|
<button type="button" class="btn btn-secondary" onclick="reload()">
|
|
<i class="bi bi-arrow-clockwise"></i> reload
|
|
</button>
|
|
</div>
|
|
|
|
<table id="packages" class="table table-striped table-hover"
|
|
data-export-options='{"fileName": "packages"}'
|
|
data-filter-control="true"
|
|
data-filter-control-visible="false"
|
|
data-page-list="[10, 25, 50, 100, all]"
|
|
data-page-size="10"
|
|
data-pagination="true"
|
|
data-resizable="true"
|
|
data-search="true"
|
|
data-show-columns="true"
|
|
data-show-columns-search="true"
|
|
data-show-columns-toggle-all="true"
|
|
data-show-export="true"
|
|
data-show-filter-control-switch="true"
|
|
data-show-fullscreen="true"
|
|
data-show-search-clear-button="true"
|
|
data-sortable="true"
|
|
data-sort-name="base"
|
|
data-sort-order="asc"
|
|
data-toggle="table"
|
|
data-toolbar="#toolbar">
|
|
<thead class="table-primary">
|
|
<tr>
|
|
<th data-checkbox="true"></th>
|
|
<th data-sortable="true" data-switchable="false" data-field="base" data-filter-control="input" data-filter-control-placeholder="(any base)">package base</th>
|
|
<th data-sortable="true" data-field="version" data-filter-control="input" data-filter-control-placeholder="(any version)">version</th>
|
|
<th data-sortable="true" data-field="packages" data-filter-control="input" data-filter-control-placeholder="(any package)">packages</th>
|
|
<th data-sortable="true" data-visible="false" data-field="groups" data-filter-control="select" data-filter-data="func:filterListGroups" data-filter-custom-search="filterList" data-filter-control-placeholder="(any group)">groups</th>
|
|
<th data-sortable="true" data-visible="false" data-field="licenses" data-filter-control="select" data-filter-data="func:filterListLicenses" data-filter-custom-search="filterList" data-filter-control-placeholder="(any license)">licenses</th>
|
|
<th data-sortable="true" data-visible="false" data-field="packager" data-filter-control="select" data-filter-custom-search="filterContains" data-filter-control-placeholder="(any packager)">packager</th>
|
|
<th data-sortable="true" data-field="timestamp" data-filter-control="input" data-filter-custom-search="filterDateRange" data-filter-control-placeholder="(any date)">last update</th>
|
|
<th data-sortable="true" data-cell-style="statusFormat" data-field="status" data-filter-control="select" data-filter-control-placeholder="(any status)">status</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<footer class="d-flex flex-wrap justify-content-between align-items-center border-top">
|
|
<ul class="nav">
|
|
<li><a id="badge-version" class="nav-link" href="https://github.com/arcan1s/ahriman" title="sources"><i class="bi bi-github"></i> ahriman</a></li>
|
|
<li><a class="nav-link" href="https://github.com/arcan1s/ahriman/releases" title="releases list">releases</a></li>
|
|
<li><a class="nav-link" href="https://github.com/arcan1s/ahriman/issues" title="issues tracker">report a bug</a></li>
|
|
<li><a class="nav-link" href="/api-docs" title="API documentation">api</a></li>
|
|
</ul>
|
|
|
|
{% if index_url is not none %}
|
|
<ul class="nav">
|
|
<li><a class="nav-link" href="{{ index_url }}" title="repo index"><i class="bi bi-house"></i> repo index</a></li>
|
|
</ul>
|
|
{% endif %}
|
|
|
|
{% if auth.enabled %}
|
|
<ul class="nav">
|
|
{% if auth.username is none %}
|
|
<li>{{ auth.control | safe }}</li>
|
|
{% else %}
|
|
<li>
|
|
<form action="/api/v1/logout" method="post">
|
|
<button class="btn btn-link" style="text-decoration: none"><i class="bi bi-box-arrow-right"></i> logout ({{ auth.username }})</button>
|
|
</form>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
{% endif %}
|
|
</footer>
|
|
</div>
|
|
|
|
{% if auth.enabled %}
|
|
{% include "build-status/login-modal.jinja2" %}
|
|
{% endif %}
|
|
|
|
{% include "build-status/alerts.jinja2" %}
|
|
|
|
{% include "build-status/package-add-modal.jinja2" %}
|
|
{% include "build-status/package-rebuild-modal.jinja2" %}
|
|
{% include "build-status/key-import-modal.jinja2" %}
|
|
|
|
{% include "build-status/package-info-modal.jinja2" %}
|
|
|
|
{% include "build-status/table.jinja2" %}
|
|
|
|
</body>
|
|
|
|
</html>
|