Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions CLAUDE.md

Large diffs are not rendered by default.

31 changes: 18 additions & 13 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion datenschutz/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
10 changes: 5 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,10 @@
<link rel="stylesheet" href="assets/fonts/inter/inter.css">
<!-- Zugeschnitten auf die verwendeten Icons (tools/build-icons.py) – das
vollstaendige all.min.css bleibt als Quelle im Repo, wird aber nicht geladen. -->
<link rel="stylesheet" href="assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="assets/fonts/fa/icons.min.css?v=65">

<link rel="stylesheet" href="css/tokens.css?v=64">
<link rel="stylesheet" href="css/styles.css?v=64">
<link rel="stylesheet" href="css/tokens.css?v=65">
<link rel="stylesheet" href="css/styles.css?v=65">
</head>
<body>

Expand Down Expand Up @@ -893,7 +893,7 @@ <h2 class="consult-card-headline">Umsetzung besprechen</h2>
Brands-Familie und h&auml;tte daf&uuml;r 116 KB Schrift nachgeladen. -->
<a href="https://github.com/daimpad/datenlotse" target="_blank" rel="noopener" title="GitHub Repository" aria-label="DatenLotse auf GitHub"><svg class="footer-github" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true" focusable="false"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg></a>
</nav>
<span class="footer-version">v64</span>
<span class="footer-version">v65</span>
</footer>

<!-- ── FAQ-Modal ─────────────────────────────────────────────── -->
Expand Down Expand Up @@ -1109,7 +1109,7 @@ <h2 id="license-title"><i class="fas fa-id-card"></i> Lizenz-Wegweiser</h2>
</div>
</div>

<script src="js/app.js?v=64"></script>
<script src="js/app.js?v=65"></script>

<!-- Anonyme Seitenzählung (GoatCounter). Der EINZIGE externe Aufruf der
Seite: keine Cookies, kein LocalStorage, keine Kennung, kein
Expand Down
13 changes: 12 additions & 1 deletion js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ function clearState() {
Teile defensiv. grafRows wird mitgesichert (anders als im
LocalStorage), damit der Import-Kontext vollständig ist. */
const PROJECT_SCHEMA = 1;
const APP_VERSION = 'v64';
const APP_VERSION = 'v65';

function buildProjectJSON() {
return JSON.stringify({
Expand Down Expand Up @@ -3257,6 +3257,17 @@ const PRUEF_WERKZEUGE = [
{ name: 'OParl 1.1',
summary: 'Einheitliche Schnittstelle für kommunale Ratsinformationssysteme (REST/JSON-LD, Objekttypen wie Body, Meeting, Paper, File). Getragen von der Open Knowledge Foundation Deutschland, lizenziert unter CC BY 3.0 DE. Relevant, wenn Rats- und Gremiendaten nachgenutzt oder als Open Data beschrieben werden sollen.',
url: 'https://oparl.org/' },
/* ⚠️ Schwächste Quellenlage im ganzen Werkzeug: die Angaben stammen aus
Suchergebnissen, nicht aus dem Volltext – die Netzwerkrichtlinie sperrt
beide Seiten. Der Text nennt deshalb ausdrücklich nur einen Ausschnitt
der zehn Punkte und verweist für den Wortlaut auf die Quelle. Wer das
später ergänzt, muss es am Original tun, nicht aus dem Gedächtnis. */
{ name: 'Initiative Transparente Zivilgesellschaft',
summary: 'Freiwillige Selbstverpflichtung für gemeinnützige Organisationen, getragen von Transparency International Deutschland (seit 2010): zehn festgelegte Angaben, die Unterzeichnende auf ihrer Website veröffentlichen – darunter die Satzung, die Namen der wesentlichen Entscheidungsträger sowie Angaben zu Mittelherkunft, Mittelverwendung und Personalstruktur. Strukturell dasselbe wie ein Transparenzgesetz, nur freiwillig: ein fester Katalog, den man abarbeitet. Den vollständigen Wortlaut der zehn Punkte finden Sie auf der verlinkten Seite.',
url: 'https://www.transparente-zivilgesellschaft.de/' },
{ name: 'Offene Daten der Zivilgesellschaft – Leitfaden',
summary: 'Praxisleitfaden von Bernhard Krabina, herausgegeben von der Bertelsmann Stiftung: Grundlagen und die einzelnen Schritte zur Veröffentlichung offener Daten – ausdrücklich für zivilgesellschaftliche Akteure geschrieben und nicht für Verwaltungen.',
url: 'https://www.bertelsmann-stiftung.de/en/our-projects/data-for-society/project-news/new-guide-to-open-data-from-civil-society' },
];

const LAENDER_KIND = {
Expand Down
54 changes: 54 additions & 0 deletions tests/governance.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,8 @@ test.describe('Beispieldaten, Verlauf & Prüfwerkzeuge', () => {
'Musterdatenkatalog': 'govdata.de',
'ARX Data Anonymization Tool': 'arx.deidentifier.org',
'OParl 1.1': 'oparl.org',
'Initiative Transparente Zivilgesellschaft': 'transparente-zivilgesellschaft.de',
'Offene Daten der Zivilgesellschaft – Leitfaden': 'bertelsmann-stiftung.de',
};
const eintraege = await page.evaluate(() => PRUEF_WERKZEUGE.map(w => ({ n: w.name, u: w.url })));
expect(eintraege.map(e => e.n).sort()).toEqual(Object.keys(HERKUNFT).sort());
Expand Down Expand Up @@ -1144,3 +1146,55 @@ test.describe('Zivilgesellschaftliche Anknüpfungspunkte (v64)', () => {
await expect(page.locator('#wissen-models')).toContainText('DigComp');
});
});

/* v65: Initiative Transparente Zivilgesellschaft. Quelle sind
Suchergebnisse, nicht der Volltext – die Formulierung darf deshalb
keine Vollständigkeit behaupten. Genau das halten diese Tests fest. */
test.describe('Initiative Transparente Zivilgesellschaft (v65)', () => {
const eintrag = page => page.evaluate(() =>
PRUEF_WERKZEUGE.find(w => /Transparente Zivilgesellschaft/.test(w.name)));

test('steht mit der Seite der Initiative selbst in der Liste', async ({ page }) => {
await openApp(page);
const e = await eintrag(page);
expect(e).toBeTruthy();
expect(e.url).toBe('https://www.transparente-zivilgesellschaft.de/');
expect(e.summary).toMatch(/Transparency International Deutschland/);
expect(e.summary).toMatch(/zehn/);
});

test('die genannten Punkte sind ausdrücklich ein Ausschnitt', async ({ page }) => {
await openApp(page);
const s = (await eintrag(page)).summary;
// Aus den Suchergebnissen sind fünf der zehn Punkte belegt. Der Text
// muss das als Ausschnitt kennzeichnen und für den Wortlaut auf die
// Quelle verweisen – sonst liest es sich als vollständige Liste.
expect(s).toMatch(/darunter/);
expect(s).toMatch(/vollständigen Wortlaut/);
// Und er darf die Zahl der Unterzeichnenden nicht führen: sie altert,
// wie alle Jahreszahlen, die das Werkzeug bewusst nicht führt.
expect(s).not.toMatch(/\d\.\d{3}\s*(Organisationen|Unterzeichn)/);
});

test('der Praxisleitfaden nennt Autor und Herausgeberin', async ({ page }) => {
await openApp(page);
const e = await page.evaluate(() =>
PRUEF_WERKZEUGE.find(w => /Offene Daten der Zivilgesellschaft/.test(w.name)));
expect(e).toBeTruthy();
expect(e.summary).toMatch(/Krabina/);
expect(e.summary).toMatch(/Bertelsmann Stiftung/);
// Für zivilgesellschaftliche Akteure geschrieben – das ist der Punkt
expect(e.summary).toMatch(/nicht für Verwaltungen/);
// Keine Lizenzangabe: sie war aus den Suchergebnissen nicht belegt
expect(e.summary).not.toMatch(/CC BY/);
});

test('beide sind über die Volltextsuche auffindbar', async ({ page }) => {
await openApp(page);
await page.evaluate(() => navTo('wissen'));
await page.fill('#wissen-search', 'zivilgesellschaft');
const tools = page.locator('#wissen-tools');
await expect(tools).toContainText('Initiative Transparente Zivilgesellschaft');
await expect(tools).toContainText('Offene Daten der Zivilgesellschaft');
});
});
2 changes: 1 addition & 1 deletion tools/generate-wissen.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ function seite({ slug, title, description, lead, bodyHTML, jsonld, pfad, eigenst
<meta name="twitter:image" content="${BASE}/social-preview.png">
${daten.map(d => ` <script type="application/ld+json">\n ${JSON.stringify(d, null, 2).replace(/\n/g, '\n ')}\n </script>`).join('\n')}
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/glossar/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/kommunale-satzungen/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/lizenzen/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
12 changes: 11 additions & 1 deletion wissen/pruefwerkzeuge/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down Expand Up @@ -107,6 +107,16 @@ <h2><a href="https://arx.deidentifier.org/" target="_blank" rel="noopener">ARX D
<h2><a href="https://oparl.org/" target="_blank" rel="noopener">OParl 1.1 <i class="fas fa-arrow-up-right-from-square"></i></a></h2>

<p>Einheitliche Schnittstelle für kommunale Ratsinformationssysteme (REST/JSON-LD, Objekttypen wie Body, Meeting, Paper, File). Getragen von der Open Knowledge Foundation Deutschland, lizenziert unter CC BY 3.0 DE. Relevant, wenn Rats- und Gremiendaten nachgenutzt oder als Open Data beschrieben werden sollen.</p>
</article>
<article class="static-card">
<h2><a href="https://www.transparente-zivilgesellschaft.de/" target="_blank" rel="noopener">Initiative Transparente Zivilgesellschaft <i class="fas fa-arrow-up-right-from-square"></i></a></h2>

<p>Freiwillige Selbstverpflichtung für gemeinnützige Organisationen, getragen von Transparency International Deutschland (seit 2010): zehn festgelegte Angaben, die Unterzeichnende auf ihrer Website veröffentlichen – darunter die Satzung, die Namen der wesentlichen Entscheidungsträger sowie Angaben zu Mittelherkunft, Mittelverwendung und Personalstruktur. Strukturell dasselbe wie ein Transparenzgesetz, nur freiwillig: ein fester Katalog, den man abarbeitet. Den vollständigen Wortlaut der zehn Punkte finden Sie auf der verlinkten Seite.</p>
</article>
<article class="static-card">
<h2><a href="https://www.bertelsmann-stiftung.de/en/our-projects/data-for-society/project-news/new-guide-to-open-data-from-civil-society" target="_blank" rel="noopener">Offene Daten der Zivilgesellschaft – Leitfaden <i class="fas fa-arrow-up-right-from-square"></i></a></h2>

<p>Praxisleitfaden von Bernhard Krabina, herausgegeben von der Bertelsmann Stiftung: Grundlagen und die einzelnen Schritte zur Veröffentlichung offener Daten – ausdrücklich für zivilgesellschaftliche Akteure geschrieben und nicht für Verwaltungen.</p>
</article></div>
<aside class="static-cta">
<h2>Im Werkzeug anwenden</h2>
Expand Down
2 changes: 1 addition & 1 deletion wissen/rechtsgrundlagen-laender/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/rechtsgrundlagen/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
2 changes: 1 addition & 1 deletion wissen/reifegrad-modelle/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
}
</script>
<link rel="stylesheet" href="/assets/fonts/inter/inter.css">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=64">
<link rel="stylesheet" href="/assets/fonts/fa/icons.min.css?v=65">
<link rel="stylesheet" href="/css/tokens.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
Expand Down
Loading