Transfer von GitLab

This commit is contained in:
Florian Otto
2026-04-13 23:59:49 +02:00
parent 8f3f5fd1cf
commit c4651e518d
33 changed files with 1504 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
// constants.js
// Projektname und zentrale Konfigurationen
const PROJECT_NAME = "CookieKop";
// Standardwert: Soll der Banner angezeigt werden?
const SHOW_BANNER_DEFAULT = true;
// Standardwert: Soll die Statistik anonymisiert geteilt werden?
const SHARE_STATS_DEFAULT = false;
// (Platzhalter) URL für anonymen Statistik-Upload
const STATS_UPLOAD_URL = "https://your-stats-endpoint.example.com/upload"; // aktuell deaktiviert
// Verfügbare Cookie-Verstoßtypen
const VIOLATION_TYPES = [
"Kein 'Ablehnen'-Button sichtbar",
"Voreingestellte Zustimmung (Checkboxen vorausgefüllt)",
"Intransparente Sprache",
"Keine echte Auswahlmöglichkeit",
"Tracking startet vor Einwilligung",
"Andere (bitte in Kommentar beschreiben)"
];
+46
View File
@@ -0,0 +1,46 @@
// util/pdf.js
async function generatePDF(url, violations, note, screenshotDataUrl) {
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
let y = 10;
doc.setFontSize(16);
doc.text("Cookie-Banner Verstoßmeldung", 10, y);
y += 10;
doc.setFontSize(12);
doc.text(`Datum: ${new Date().toLocaleString()}`, 10, y);
y += 10;
doc.text(`URL:`, 10, y);
doc.text(url, 30, y);
y += 10;
doc.text("Verstöße:", 10, y);
violations.forEach(v => {
y += 7;
doc.text(`- ${v}`, 15, y);
});
y += 10;
doc.text("Zusätzliche Hinweise:", 10, y);
y += 7;
const splitNote = doc.splitTextToSize(note || "Keine Angabe", 180);
doc.text(splitNote, 10, y);
y += splitNote.length * 7;
if (screenshotDataUrl) {
y += 10;
doc.text("Screenshot:", 10, y);
y += 5;
try {
doc.addImage(screenshotDataUrl, 'PNG', 10, y, 180, 100);
} catch (error) {
console.error("Fehler beim Einfügen des Screenshots ins PDF:", error);
}
}
doc.save('cookiekop_meldung.pdf');
}
+25
View File
@@ -0,0 +1,25 @@
// util/screenshot.js
// Macht einen Screenshot vom aktiven Tab und speichert ihn lokal
async function takeScreenshotAndStore() {
try {
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
const imageUri = await chrome.tabs.captureVisibleTab(tab.windowId, { format: "png" });
await saveToStorage('screenshot', imageUri);
return imageUri;
} catch (error) {
console.error("Fehler beim Screenshot erstellen:", error);
throw error;
}
}
// Lädt den Screenshot aus dem Storage
async function loadScreenshot() {
return await loadFromStorage('screenshot');
}
// Löscht gespeicherten Screenshot
async function clearScreenshot() {
await removeFromStorage('screenshot');
}
+25
View File
@@ -0,0 +1,25 @@
// util/storage.js
// Speichert beliebige Daten in chrome.storage.local
async function saveToStorage(key, value) {
const data = {};
data[key] = value;
return chrome.storage.local.set(data);
}
// Holt Daten aus chrome.storage.local
async function loadFromStorage(key) {
const result = await chrome.storage.local.get(key);
return result[key];
}
// Löscht einen bestimmten Schlüssel aus dem Storage
async function removeFromStorage(key) {
return chrome.storage.local.remove(key);
}
// Löscht ALLE gespeicherten Daten (zurücksetzen)
async function clearStorage() {
return chrome.storage.local.clear();
}