diff --git a/data/classes.txt b/data/classes.txt index 996aaaf..9f66bdc 100644 --- a/data/classes.txt +++ b/data/classes.txt @@ -15,6 +15,7 @@ gdprCookieBanner-acceptedAll hasCookieBanner ibeugdpr-disabled modal--is-open +modal-open no-scroll no_scroll shopee-no-scroll diff --git a/data/elements.txt b/data/elements.txt index 5695fce..6a0afd1 100644 --- a/data/elements.txt +++ b/data/elements.txt @@ -12768,4 +12768,9 @@ s4s-privacy-module tp-yt-iron-overlay-backdrop #wxp_gdpr_container .privacy-consent--modal -.privacy-consent--backdrop \ No newline at end of file +.privacy-consent--backdrop +#cheerfy-cookies-modal--wrapper +script[src*="wirkaufendeinauto.de"] + div.modal-root > div +#bcc-outer +#StickieCookies +[class="block z-50 w-full max-w-full md:max-w-small fixed bottom-0 left-0 md:bottom-[20px] md:left-[20px]"] diff --git a/data/skips.txt b/data/skips.txt index f8ef5af..f08be51 100644 --- a/data/skips.txt +++ b/data/skips.txt @@ -21,4 +21,6 @@ stackage.org steamcommunity.com substack.com sucuri.net -youtube.com \ No newline at end of file +youtube.com +godotvr.github.io +tesla.com \ No newline at end of file diff --git a/packages/api/src/routes/v2/data.ts b/packages/api/src/routes/v2/data.ts index 3499894..996acbb 100644 --- a/packages/api/src/routes/v2/data.ts +++ b/packages/api/src/routes/v2/data.ts @@ -21,7 +21,7 @@ export default (server: FastifyInstance, options: RouteShorthandOptions, done: ( reply.send({ data: { - classes: (await results[0].text()).split('\n'), + classes: (await results[0].text()).split('\n').filter((x) => !!x), commonWords: [ 'banner', 'cc', @@ -37,10 +37,10 @@ export default (server: FastifyInstance, options: RouteShorthandOptions, done: ( 'popup', 'privacy', ], - elements: (await results[1].text()).split('\n'), - fixes: (await results[2].text()).split('\n'), - skips: (await results[3].text()).split('\n'), - tags: (await results[4].text()).split('\n'), + elements: (await results[1].text()).split('\n').filter((x) => !!x), + fixes: (await results[2].text()).split('\n').filter((x) => !!x), + skips: (await results[3].text()).split('\n').filter((x) => !!x), + tags: (await results[4].text()).split('\n').filter((x) => !!x), }, success: true, }); diff --git a/packages/browser-extension/src/_locales/de/messages.json b/packages/browser-extension/src/_locales/de/messages.json index 0eb6fa4..dd4b140 100644 --- a/packages/browser-extension/src/_locales/de/messages.json +++ b/packages/browser-extension/src/_locales/de/messages.json @@ -3,7 +3,10 @@ "message": "Hat jemand Dialoge zur Cookie-Zustimmung gesagt? 😋" }, "contextMenu_reportOption": { - "message": "Webseite melden..." + "message": "Diese Website melden" + }, + "contextMenu_settingsOption": { + "message": "Ausnahmeliste verwalten" }, "options_clearButton": { "message": "Liste leeren" diff --git a/packages/browser-extension/src/_locales/en/messages.json b/packages/browser-extension/src/_locales/en/messages.json index b9082e4..e92f463 100644 --- a/packages/browser-extension/src/_locales/en/messages.json +++ b/packages/browser-extension/src/_locales/en/messages.json @@ -3,7 +3,10 @@ "message": "Did someone say cookie consent dialogs? 😋" }, "contextMenu_reportOption": { - "message": "Report site..." + "message": "Report this website" + }, + "contextMenu_settingsOption": { + "message": "Manage exclusion list" }, "options_clearButton": { "message": "Clear list" diff --git a/packages/browser-extension/src/_locales/es/messages.json b/packages/browser-extension/src/_locales/es/messages.json index b06a079..71fcfcd 100644 --- a/packages/browser-extension/src/_locales/es/messages.json +++ b/packages/browser-extension/src/_locales/es/messages.json @@ -3,7 +3,10 @@ "message": "¿Alguien dijo diálogos de consentimiento de cookies? 😋" }, "contextMenu_reportOption": { - "message": "Reportar sitio..." + "message": "Reportar este sitio web" + }, + "contextMenu_settingsOption": { + "message": "Gestionar lista de exclusión" }, "options_clearButton": { "message": "Borrar lista" diff --git a/packages/browser-extension/src/_locales/fr/messages.json b/packages/browser-extension/src/_locales/fr/messages.json index d7fc993..61193e3 100644 --- a/packages/browser-extension/src/_locales/fr/messages.json +++ b/packages/browser-extension/src/_locales/fr/messages.json @@ -3,7 +3,10 @@ "message": "Quelqu'un a-t-il dit boîtes de dialogue de consentement aux cookies? 😋" }, "contextMenu_reportOption": { - "message": "Signaler le site..." + "message": "Signaler ce site web" + }, + "contextMenu_settingsOption": { + "message": "Gérer la liste d'exclusion" }, "options_clearButton": { "message": "Effacer la liste" diff --git a/packages/browser-extension/src/_locales/it/messages.json b/packages/browser-extension/src/_locales/it/messages.json index c1534a1..8ff36e4 100644 --- a/packages/browser-extension/src/_locales/it/messages.json +++ b/packages/browser-extension/src/_locales/it/messages.json @@ -3,7 +3,10 @@ "message": "Qualcuno ha detto finestre di dialogo per il consenso ai cookie? 😋" }, "contextMenu_reportOption": { - "message": "Segnala sito..." + "message": "Segnala questo sito web" + }, + "contextMenu_settingsOption": { + "message": "Gestisci elenco di esclusione" }, "options_clearButton": { "message": "Cancella elenco" diff --git a/packages/browser-extension/src/_locales/pt_BR/messages.json b/packages/browser-extension/src/_locales/pt_BR/messages.json index eb19af5..f84475f 100644 --- a/packages/browser-extension/src/_locales/pt_BR/messages.json +++ b/packages/browser-extension/src/_locales/pt_BR/messages.json @@ -3,7 +3,10 @@ "message": "Alguém disse diálogos de consentimento de cookies? 😋" }, "contextMenu_reportOption": { - "message": "Reportar site..." + "message": "Denunciar este site" + }, + "contextMenu_settingsOption": { + "message": "Gerenciar lista de exclusão" }, "options_clearButton": { "message": "Limpar lista" diff --git a/packages/browser-extension/src/_locales/pt_PT/messages.json b/packages/browser-extension/src/_locales/pt_PT/messages.json index eb19af5..f84475f 100644 --- a/packages/browser-extension/src/_locales/pt_PT/messages.json +++ b/packages/browser-extension/src/_locales/pt_PT/messages.json @@ -3,7 +3,10 @@ "message": "Alguém disse diálogos de consentimento de cookies? 😋" }, "contextMenu_reportOption": { - "message": "Reportar site..." + "message": "Denunciar este site" + }, + "contextMenu_settingsOption": { + "message": "Gerenciar lista de exclusão" }, "options_clearButton": { "message": "Limpar lista" diff --git a/packages/browser-extension/src/_locales/ro/messages.json b/packages/browser-extension/src/_locales/ro/messages.json index deeeafa..2eca065 100644 --- a/packages/browser-extension/src/_locales/ro/messages.json +++ b/packages/browser-extension/src/_locales/ro/messages.json @@ -3,7 +3,10 @@ "message": "A spus cineva dialoguri de consimțământ pentru cookie? 😋" }, "contextMenu_reportOption": { - "message": "Raportați site-ul..." + "message": "Raportați acest site web" + }, + "contextMenu_settingsOption": { + "message": "Gestionați lista de excludere" }, "options_clearButton": { "message": "Ștergeți lista" diff --git a/packages/browser-extension/src/_locales/ru/messages.json b/packages/browser-extension/src/_locales/ru/messages.json index b12a04a..bdb6e1c 100644 --- a/packages/browser-extension/src/_locales/ru/messages.json +++ b/packages/browser-extension/src/_locales/ru/messages.json @@ -3,7 +3,10 @@ "message": "Кто-то сказал диалоги согласия на использование файлов cookie? 😋" }, "contextMenu_reportOption": { - "message": "Сообщить о сайте..." + "message": "Сообщить об этом веб-сайте" + }, + "contextMenu_settingsOption": { + "message": "Управление списком исключений" }, "options_clearButton": { "message": "Очистить список" diff --git a/packages/browser-extension/src/manifest.json b/packages/browser-extension/src/manifest.json index fd8b09d..6d884c7 100644 --- a/packages/browser-extension/src/manifest.json +++ b/packages/browser-extension/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Cookie Dialog Monster", - "version": "6.4.1", + "version": "6.4.3", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { @@ -23,21 +23,22 @@ "all_frames": true, "exclude_matches": [ "*://*.googleapis.com/embed/*", + "*://*.codesandbox.io/*", "*://*.sharepoint.com/*", "*://*.youtube.com/embed/*", "*://*.youtube-nocookie.com/embed/*", - "https://translate.google.ca/*", - "https://translate.google.co.in/*", - "https://translate.google.co.jp/*", - "https://translate.google.co.uk/*", - "https://translate.google.com.au/*", - "https://translate.google.com.br/*", - "https://translate.google.com/*", - "https://translate.google.de/*", - "https://translate.google.es/*", - "https://translate.google.fr/*", - "https://translate.google.it/*", - "https://www.cookie-dialog-monster.com/*" + "*://translate.google.ca/*", + "*://translate.google.co.in/*", + "*://translate.google.co.jp/*", + "*://translate.google.co.uk/*", + "*://translate.google.com.au/*", + "*://translate.google.com.br/*", + "*://translate.google.com/*", + "*://translate.google.de/*", + "*://translate.google.es/*", + "*://translate.google.fr/*", + "*://translate.google.it/*", + "*://www.cookie-dialog-monster.com/*" ], "js": ["scripts/content.js", "scripts/dialog.js"], "matches": ["http://*/*", "https://*/*"], diff --git a/packages/browser-extension/src/scripts/background.js b/packages/browser-extension/src/scripts/background.js index 54ce3a2..4080097 100644 --- a/packages/browser-extension/src/scripts/background.js +++ b/packages/browser-extension/src/scripts/background.js @@ -10,7 +10,21 @@ const apiUrl = 'https://api.cookie-dialog-monster.com/rest/v2'; * @type {string} */ -const reportMenuItemId = 'REPORT'; +const extensionMenuItemId = 'CDM-MENU'; + +/** + * @description Context menu identifier + * @type {string} + */ + +const reportMenuItemId = 'CDM-REPORT'; + +/** + * @description Context menu identifier + * @type {string} + */ + +const settingsMenuItemId = 'CDM-SETTINGS'; /** * @description A shortcut for chrome.scripting @@ -67,6 +81,9 @@ chrome.contextMenus.onClicked.addListener((info, tab) => { case reportMenuItemId: if (tab) chrome.tabs.sendMessage(tab.id, { type: 'SHOW_REPORT_DIALOG' }); break; + case settingsMenuItemId: + chrome.runtime.openOptionsPage(); + break; default: break; } @@ -153,10 +170,24 @@ chrome.runtime.onMessage.addListener((message, sender, callback) => { */ chrome.runtime.onInstalled.addListener(() => { + chrome.contextMenus.create({ + contexts: ['all'], + documentUrlPatterns: chrome.runtime.getManifest().content_scripts[0].matches, + id: extensionMenuItemId, + title: 'Cookie Dialog Monster', + }); + chrome.contextMenus.create({ + contexts: ['all'], + documentUrlPatterns: chrome.runtime.getManifest().content_scripts[0].matches, + id: settingsMenuItemId, + parentId: extensionMenuItemId, + title: chrome.i18n.getMessage('contextMenu_settingsOption'), + }); chrome.contextMenus.create({ contexts: ['all'], documentUrlPatterns: chrome.runtime.getManifest().content_scripts[0].matches, id: reportMenuItemId, + parentId: extensionMenuItemId, title: chrome.i18n.getMessage('contextMenu_reportOption'), }); }); diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index e717af9..58416b4 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -144,7 +144,7 @@ function fix() { const backdrop = document.getElementsByClassName('modal-backdrop')[0]; const facebook = document.getElementsByClassName('_31e')[0]; const fixes = data?.fixes ?? []; - const skips = data?.skips ?? []; + const skips = (data?.skips ?? []).map((x) => (x.split('.').length < 3 ? `*${x}` : x)); if (backdrop?.children.length === 0) { backdrop.remove(); @@ -177,7 +177,7 @@ function fix() { } } - if (skips.indexOf(hostname) === -1) { + if (skips.some((x) => !hostname.match(x.replace(/\*/g, '[^ ]*')))) { for (const element of [document.body, document.documentElement]) { element?.classList.remove(...(data?.classes ?? [])); element?.style.setProperty('position', 'initial', 'important'); @@ -245,7 +245,7 @@ const observer = new MutationObserver((mutations) => { window.addEventListener('focus', async () => { if (!data) { await runSetup(true); - forceClean(document.body); + clean([...document.body.children]); } }); diff --git a/packages/browser-extension/src/scripts/options.js b/packages/browser-extension/src/scripts/options.js index 9419877..707cdc6 100644 --- a/packages/browser-extension/src/scripts/options.js +++ b/packages/browser-extension/src/scripts/options.js @@ -119,15 +119,17 @@ async function handleDeleteClick(event) { function handleExportClick() { const anchor = document.createElement('a'); const now = new Date(); - const day = now.getUTCDay().toString().padStart(2, '0'); - const month = now.getUTCMonth().toString().padStart(2, '0'); + const day = now.getDate().toString().padStart(2, '0'); + const month = now.getMonth().toString().padStart(2, '0'); const year = now.getUTCFullYear(); const text = exclusionList.join('\n'); + const defaultTitle = `${year}${month}${day}`; + const customTitle = window.prompt('Enter a file name', defaultTitle); const blob = new Blob([text], { type: 'octet/stream' }); const url = window.URL.createObjectURL(blob); anchor.href = url; - anchor.download = `${year}${month}${day}.cdm`; + anchor.download = `${customTitle || defaultTitle}.cdm`; anchor.click(); window.URL.revokeObjectURL(url); } diff --git a/packages/web/src/images/options.png b/packages/web/src/images/options.png new file mode 100644 index 0000000..484035f Binary files /dev/null and b/packages/web/src/images/options.png differ diff --git a/packages/web/src/images/popup.png b/packages/web/src/images/popup.png index 5e3c036..bbc4a4a 100644 Binary files a/packages/web/src/images/popup.png and b/packages/web/src/images/popup.png differ diff --git a/packages/web/src/images/report.png b/packages/web/src/images/report.png index fb04211..862eca8 100644 Binary files a/packages/web/src/images/report.png and b/packages/web/src/images/report.png differ diff --git a/packages/web/src/index.html b/packages/web/src/index.html index 13f11f9..1223a5f 100644 --- a/packages/web/src/index.html +++ b/packages/web/src/index.html @@ -1,4 +1,4 @@ - +
- Disable our extension if you would like to accept cookies in a specific page, rate us, - refresh the current page cleaning the cache or start a conversation because you need - help. + Disable the extension if you would like to accept cookies in a specific page, contribute + to the project, open settings to manage the exclusion list, help us rating the extension + or start a conversation because you need help.
+ Clear, import and export your preferences with one click. Users have full control over + which websites should be exempt from the cookie consent dialog removal functionality. +
++ This feature is especially useful for websites that have unique cookie consent dialog + implementations or where the extension may cause unintended side effects. +
+