Compare commits
2 commits
375fcbb2c7
...
fa82bf579a
| Author | SHA1 | Date | |
|---|---|---|---|
| fa82bf579a | |||
| 1d01583913 |
5 changed files with 168 additions and 44 deletions
|
|
@ -95,5 +95,7 @@
|
||||||
packages = { inherit start; };
|
packages = { inherit start; };
|
||||||
defaultPackage.x86_64-linux = start;
|
defaultPackage.x86_64-linux = start;
|
||||||
|
|
||||||
|
nixosModule = (import ./module.nix);
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -329,13 +329,11 @@ function Xe() {
|
||||||
a.open(r, o, !0), a.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), a.setRequestHeader("X-Requested-With", "XMLHttpRequest"), a.onload = () => {
|
a.open(r, o, !0), a.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), a.setRequestHeader("X-Requested-With", "XMLHttpRequest"), a.onload = () => {
|
||||||
var l, u;
|
var l, u;
|
||||||
if (e.dataset.modalcontainer) {
|
if (e.dataset.modalcontainer) {
|
||||||
const d = document.querySelector(e.dataset.modalcontainer);
|
const modalElement = document.querySelector(e.dataset.modalcontainer);
|
||||||
d != null && (new $(d).show(), console.log("got modal"));
|
if (modalElement) {
|
||||||
|
const modal = new bootstrap.Modal(modalElement);
|
||||||
const modalElement = document.getElementById('govplan-searchmodal-275111');
|
modal.show();
|
||||||
const modal = new bootstrap.Modal(modalElement);
|
}
|
||||||
modal.show();
|
|
||||||
|
|
||||||
} else if (e.dataset.modal) {
|
} else if (e.dataset.modal) {
|
||||||
const d = document.getElementById(e.dataset.modal);
|
const d = document.getElementById(e.dataset.modal);
|
||||||
(l = d == null ? void 0 : d.dataset) != null && l.bsTarget && ((u = $.getInstance(document.querySelector(d.dataset.bsTarget))) == null || u.hide())
|
(l = d == null ? void 0 : d.dataset) != null && l.bsTarget && ((u = $.getInstance(document.querySelector(d.dataset.bsTarget))) == null || u.hide())
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,51 @@
|
||||||
{% block body %}
|
{% block body %}
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
#govplan-searchresult-275111 .card-body {
|
#govplan-searchresult-275111 .card-body,
|
||||||
|
#govplan-searchresult-mobile .card-body {
|
||||||
padding: 1rem !important;
|
padding: 1rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.header-logo { height: 32px !important; }
|
||||||
|
.header-title { font-size: 1.1rem !important; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
#mobile-nav-menu { display: none !important; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger-btn {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 6px 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.burger-icon {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
.burger-icon span {
|
||||||
|
display: block;
|
||||||
|
height: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background: currentColor;
|
||||||
|
transition: transform 0.3s ease, opacity 0.3s ease;
|
||||||
|
transform-origin: center;
|
||||||
|
}
|
||||||
|
.burger-btn[aria-expanded="true"] .burger-icon span:nth-child(1) {
|
||||||
|
transform: translateY(7px) rotate(45deg);
|
||||||
|
}
|
||||||
|
.burger-btn[aria-expanded="true"] .burger-icon span:nth-child(2) {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scaleX(0);
|
||||||
|
}
|
||||||
|
.burger-btn[aria-expanded="true"] .burger-icon span:nth-child(3) {
|
||||||
|
transform: translateY(-7px) rotate(-45deg);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
|
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
|
||||||
|
|
@ -75,53 +117,54 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-10 mx-auto p-4 py-md-5">
|
<div class="col-lg-10 mx-auto p-4 py-md-5">
|
||||||
<header class="d-flex align-items-center pb-3 mb-5 border-bottom">
|
<header class="d-flex align-items-center flex-wrap pb-3 mb-5 border-bottom">
|
||||||
<a href="/" class="d-flex align-items-center text-body-emphasis text-decoration-none text-reset">
|
<a href="/" class="d-flex align-items-center text-body-emphasis text-decoration-none text-reset">
|
||||||
<img src="{% static 'froide_govplan/images/logo.svg' %}" class="bi me-2" height="50">
|
<img src="{% static 'froide_govplan/images/logo.svg' %}" class="bi me-2 header-logo" height="50">
|
||||||
<span class="fs-4">VerwaltungsTracker</span>
|
<span class="fs-4 header-title">VerwaltungsTracker</span>
|
||||||
</a>
|
</a>
|
||||||
<div style="margin-left: auto; max-width: 350px;" class="search">
|
|
||||||
|
<!-- Desktop search -->
|
||||||
|
<div style="margin-left: auto; max-width: 350px;" class="search d-none d-md-block">
|
||||||
<form method="get" action="/search/" class="ajaxified" data-container="#govplan-searchresult-275111" data-modalcontainer="#govplan-searchmodal-275111">
|
<form method="get" action="/search/" class="ajaxified" data-container="#govplan-searchresult-275111" data-modalcontainer="#govplan-searchmodal-275111">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" name="q" class="form-control" aria-label="Suchbegriff" placeholder="Suchbegriff">
|
<input type="text" name="q" class="form-control" aria-label="Suchbegriff" placeholder="Suchbegriff">
|
||||||
<select name="status" class="form-select" style="display: none;">
|
<select name="status" class="form-select" style="display: none;">
|
||||||
<option value="">Status filtern</option>
|
<option value="">Status filtern</option>
|
||||||
|
<option value="not_started">nicht begonnen</option>
|
||||||
<option value="not_started">nicht begonnen</option>
|
<option value="started">begonnen</option>
|
||||||
|
<option value="partially_implemented">teilweise umgesetzt</option>
|
||||||
<option value="started">begonnen</option>
|
<option value="implemented">umgesetzt</option>
|
||||||
|
<option value="deferred">zurückgestellt</option>
|
||||||
<option value="partially_implemented">teilweise umgesetzt</option>
|
|
||||||
|
|
||||||
<option value="implemented">umgesetzt</option>
|
|
||||||
|
|
||||||
<option value="deferred">zurückgestellt</option>
|
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
<button class="btn btn-outline-secondary" type="submit">
|
<button class="btn btn-outline-secondary" type="submit">Suchen</button>
|
||||||
Suchen
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<input type="hidden" name="government" value="1"/>
|
||||||
<input type="hidden" name="government" value="1"/>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
</div>
|
||||||
<div class="modal fade" id="govplan-searchmodal-275111">
|
|
||||||
<div class="modal-dialog modal-dialog-centered modal-xl">
|
<!-- Mobile burger button -->
|
||||||
<div class="modal-content">
|
<button class="burger-btn d-md-none ms-auto" type="button"
|
||||||
<div class="modal-header">
|
data-bs-toggle="collapse" data-bs-target="#mobile-nav-menu"
|
||||||
<h5 class="modal-title">Suchergebnisse</h5>
|
aria-expanded="false" aria-controls="mobile-nav-menu"
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen">
|
aria-label="Menü öffnen">
|
||||||
</button>
|
<span class="burger-icon">
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- Mobile collapsible menu -->
|
||||||
|
<div class="collapse w-100" id="mobile-nav-menu">
|
||||||
|
<div class="pt-3 pb-1">
|
||||||
|
<form method="get" action="/search/" class="ajaxified" data-container="#govplan-searchresult-mobile" data-modalcontainer="#govplan-searchmodal-mobile">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" name="q" class="form-control" aria-label="Suchbegriff" placeholder="Suchbegriff">
|
||||||
|
<button class="btn btn-outline-secondary" type="submit">Suchen</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<input type="hidden" name="government" value="1"/>
|
||||||
<div id="govplan-searchresult-275111"></div>
|
</form>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
@ -237,4 +280,32 @@
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="govplan-searchmodal-275111">
|
||||||
|
<div class="modal-dialog modal-dialog-centered modal-xl">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Suchergebnisse</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div id="govplan-searchresult-275111"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" id="govplan-searchmodal-mobile">
|
||||||
|
<div class="modal-dialog modal-dialog-centered modal-xl">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Suchergebnisse</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Schließen"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div id="govplan-searchresult-mobile"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock body %}
|
{% endblock body %}
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
{% endblock meta %}
|
{% endblock meta %}
|
||||||
{% block app_body %}
|
{% block app_body %}
|
||||||
|
|
||||||
<h1 class="text-body-emphasis">{{ object.title }}</h1>
|
<h1 class="text-body-emphasis text-break">{{ object.title }}</h1>
|
||||||
<p class="fs-5 col-md-8">
|
<p class="fs-5 col-md-8">
|
||||||
<div class="d-md-flex my-4 align-items-center">
|
<div class="d-md-flex my-4 align-items-center">
|
||||||
<ul class="list-unstyled d-flex m-0">
|
<ul class="list-unstyled d-flex m-0">
|
||||||
|
|
|
||||||
53
module.nix
Normal file
53
module.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
options,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.verwaltungstracker;
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
services.verwaltungstracker = {
|
||||||
|
|
||||||
|
enable = lib.mkEnableOption "Verwaltungstracker web app";
|
||||||
|
|
||||||
|
} // options.services.froide-govplan.settings;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
froide-govplan = super.froide-govplan.overridePythonAttrs (oldAttrs: {
|
||||||
|
src = pkgs.fetchFromGitea {
|
||||||
|
domain = "git.project-insanity.org";
|
||||||
|
owner = "onny";
|
||||||
|
repo = "verwaltungstracker";
|
||||||
|
rev = "e5acfdf19d5af71bc5223c72713c128f3948f39f";
|
||||||
|
hash = "sha256-SRxPKherMz9xv/1XZjmwYg74r7Qln+vfLWgHyG5RbxQ=";
|
||||||
|
};
|
||||||
|
dependencies = oldAttrs.dependencies ++ [ oldAttrs.passthru.python.pkgs.mastodon-py ];
|
||||||
|
passthru = oldAttrs.passthru // {
|
||||||
|
pythonPath = "${pkgs.python3.pkgs.makePythonPath [pkgs.python3.pkgs.mastodon-py]}:${oldAttrs.passthru.pythonPath}";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
services.froide-govplan = {
|
||||||
|
enable = true;
|
||||||
|
settings = cfg.settings;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = with lib.maintainers; [ onny ];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue