=== WebDigiTech Content Shield ===
Contributors: webdigitech
Tags: content protection, adblock, privacy, copy protection, security
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 3.3.0
Requires PHP: 8.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Separate local content-interaction protection and optional TrueSift AdBlock detection in one clearly structured WordPress plugin.

== Description ==

WebDigiTech Content Shield provides two independent protection modules. Each module can be configured separately.

= Content Protection =

Content Protection runs locally in the visitor's browser and can discourage common content-copying and inspection actions:

* context-menu / right-click blocking
* copy and cut shortcut blocking
* selected browser inspection shortcut blocking
* drag-action blocking
* friendly non-blocking visitor notification
* configurable notification title, message and dismiss label
* configurable auto-hide delay

This is a deterrence layer, not DRM. Content already delivered to a browser cannot be made technically impossible to inspect, save or capture.

= AdBlock Protection =

AdBlock Protection is optional and disabled by default. When a site administrator enables it, the visitor browser uses the WebDigiTech-operated TrueSift AdBlock service as part of the detection process.

Available behavior:

* show a friendly, non-blocking bottom banner
* let the visitor disable the blocker and re-check
* open a short help guide for visitors who do not know how to disable their blocker
* let the visitor dismiss the reminder and continue browsing normally
* redirect to the AdBlock service page
* detection-only mode without a visitor action
* optional additional local detection signal

When a visitor dismisses the AdBlock reminder, the plugin stores that decision for the administrator-configured reminder period (30 days by default) in a cookie and localStorage. Logged-in users can additionally have the latest state stored in WordPress user metadata and an administrative record. The banner does not block access to the page.

= Clear administration =

The WordPress administration is divided into dedicated pages:

* Overview
* Content Protection
* AdBlock Protection
* Appearance
* AdBlock Records
* Privacy & Data

Service endpoints and internal bootstrap configuration are not exposed as normal product settings. The Appearance page lets administrators match both visitor banners to the site font, corner radius and light, dark or custom color palettes without loading third-party design resources.

= Privacy tooling =

The plugin integrates with the standard WordPress privacy tools by providing:

* privacy-policy guidance
* a personal-data exporter
* a personal-data eraser
* automatic cleanup for expired AdBlock records and logged-in user decision metadata
* manual cleanup and selected-record deletion

The plugin does not claim to guarantee legal compliance. Site operators remain responsible for selecting an appropriate legal basis and providing the notices required for their site and jurisdiction.

= Languages =

The plugin includes English source strings and bundled German and Bulgarian translations. On WordPress.org, community language packs may take precedence where available.

== External services ==

The Content Protection module does not require an external service.

The optional AdBlock Protection module uses the TrueSift AdBlock service operated by WebDigiTech. The module is disabled by default and contacts the service only after a site administrator enables it.

During detection, the visitor browser may request resources from `https://ad-detect.truesift.de`, including AdBlock probe resources. These requests necessarily transmit standard network information such as the visitor IP address, request time and normal HTTP/browser headers to the service. A cache-busting timestamp can be added to probe URLs. The plugin does not intentionally send WordPress usernames, WordPress email addresses, passwords or WordPress user metadata to the TrueSift AdBlock endpoint.

If the administrator selects redirect behavior, the visitor is navigated to the public TrueSift AdBlock information page at `https://truesift.de/adblock-check`; the technical detection host remains separate.

Service information: https://truesift.de/adblock-check
Privacy policy: https://truesift.de/datenschutz
Provider information: https://truesift.de/impressum

Existing installations of plugin releases prior to 3.2.0 may still use the former `ad-detect.libdev.net` endpoint. That legacy endpoint is maintained for backwards compatibility, while version 3.2.0 and later use `ad-detect.truesift.de`.

== Installation ==

1. Upload the plugin ZIP through **Plugins > Add New > Upload Plugin**, or install it from the WordPress Plugin Directory when available.
2. Activate **WebDigiTech Content Shield**.
3. Open **Content Shield > Overview**.
4. Configure **Content Protection** and **AdBlock Protection** independently.
5. Open **Appearance** to match both visitor notifications to the active theme.
6. If you enable AdBlock Protection, review the external-service and privacy information shown on the settings page and update your site's privacy information as appropriate.

== Frequently Asked Questions ==

= Does Content Protection send data to an external server? =

No. The Content Protection module runs locally in the visitor browser.

= Does AdBlock Protection use an external service? =

Yes, but only when the site administrator enables the module. The detection flow uses the TrueSift AdBlock service operated by WebDigiTech.

= Why is AdBlock Protection disabled by default? =

Because enabling it introduces requests from visitor browsers to an external service. The administrator must make that configuration choice deliberately.

= Can Content Protection completely prevent copying or screenshots? =

No. Browser-side controls can discourage common actions, but they cannot make publicly delivered content impossible to inspect, save or capture.

= What is stored when a visitor dismisses the AdBlock reminder? =

A browser decision state is stored in a cookie and localStorage for the configured reminder period (30 days by default). For logged-in users, the latest decision can also be stored in user metadata, and an administrative record may contain user ID, email address, IP address, user agent, decision, source and timestamps.

= Can personal data be exported or erased through WordPress? =

Yes. Version 3.2.0 and later register exporter and eraser callbacks with the standard WordPress privacy tools for server-side data that can be associated with a user email address. Browser cookie and localStorage data remain in the visitor browser until expiry or until the visitor clears site data; WordPress cannot erase browser storage remotely. Guest audit records without an associated email cannot be targeted by WordPress's email-based eraser and are instead handled by expiry cleanup or administrator deletion.

= Will my existing 3.1.x settings be lost when I update? =

No. Version 3.2.0 and later migrate legacy 3.1.x settings to the new namespaced settings and keep the legacy options during the upgrade for rollback safety. Existing visitor text is preserved.

= Why might an upgraded site still show Bulgarian visitor text? =

Older 3.1.x releases stored Bulgarian default text directly as site settings. Version 3.2.1 automatically replaces only the exact old built-in AdBlock defaults with the new locale-aware friendly banner copy; administrator-customized text remains untouched.

== Changelog ==

= 3.3.0 =
* Added a dedicated Appearance page with site-font inheritance, system/custom font stacks, shared corner radius, and independent Light, Dark or Custom color palettes for both frontend banners.
* Replaced the blocking Content Protection modal with a compact, friendly, non-blocking notification.
* Added configurable Content Protection title, message, dismiss label and automatic hide delay.
* Added collision-aware stacking so the Content Protection notice moves above the AdBlock banner when both are visible.
* Migrated the exact legacy Bulgarian copy-protection default to the new locale-aware friendly message while preserving administrator-customized text.
* Kept all visual assets local; the plugin does not load external fonts or design libraries.

= 3.2.1 =
* Replaced the blocking AdBlock modal with a friendly non-blocking bottom banner.
* Added re-check, help, remind-later and close actions without preventing access to page content.
* Added a configurable reminder period from 1 to 365 days, with 30 days as the default.
* Dismissing or closing the banner stores the visitor decision and suppresses the reminder until the configured period expires.
* Added multilingual default banner copy and labels for English, German and Bulgarian.
* Added a safe migration from the former `modal` behavior to the new `banner` behavior.
* Automatically clears only exact legacy hard-coded Bulgarian AdBlock defaults so upgraded sites can use locale-aware text while preserving custom administrator copy.
* Updated privacy and operational documentation for the configurable reminder period.

= 3.2.0 =
* Reworked the plugin administration into separate Overview, Content Protection, AdBlock Protection, AdBlock Records, and Privacy & Data pages.
* Switched the active AdBlock service endpoint from `ad-detect.libdev.net` to `ad-detect.truesift.de` while keeping old plugin releases compatible with the legacy server.
* Removed technical endpoint/bootstrap details from the normal administrator interface.
* Added English source strings plus bundled German and Bulgarian translations.
* Added safe migration from legacy `drc_*` and `_bg` option names to namespaced `wdtcs_*` settings without deleting legacy values during upgrades.
* Added WordPress privacy-policy guidance, personal-data export, personal-data erasure, and automatic cleanup of expired server-side decision data.
* Removed the previous optional IAB detector path that could load Google Analytics code and replaced it with an additional local detection signal.
* Removed external Google Fonts loading and switched plugin UI styling to local/system fonts.
* Improved frontend modal semantics, keyboard focus behavior, responsive styling, and secure cookie handling on HTTPS.
* Clarified that Content Protection is a browser-side deterrence layer and not DRM.
* Updated WordPress.org readme metadata and synchronized Stable Tag with the plugin version.

= 3.1.5 =
* Production maintenance release. The original 3.1.5 package did not contain a detailed changelog entry; this history marker is intentionally preserved without inventing undocumented changes.

= 3.1.4 =
* Improved AdBlock detection reliability and lowered the detection threshold.
* Prevented the modal from appearing when a valid cookie or localStorage state already existed.
* Updated the plugin version used for frontend asset cache invalidation.

= 3.1.3 =
* Introduced the structured bootstrap, AdBlock, consent, administration and storage layers.
* Added browser, user-meta and administrative AdBlock decision persistence.
* Added the administrative record overview and cleanup tools.

= 3.1.2 =
* Improved the administrator-facing AdBlock decision workflow.
* Reduced aggressive repeat prompts by improving persistence behavior.

= 3.1.1 =
* Added the 30-day AdBlock decision flow for logged-in users.
* Added administrator visibility for recorded decisions.

= 3.1.0 =
* Added the initial intelligent AdBlock handling architecture alongside the content-protection layer.

== Upgrade Notice ==

= 3.3.0 =
This update adds centralized visual customization and replaces the Content Protection modal with a friendly non-blocking notification. Existing protection settings, AdBlock decisions and custom visitor text are preserved.

= 3.2.1 =
This update replaces the blocking AdBlock modal with a non-blocking bottom reminder banner. Existing settings and records are preserved, and the former modal behavior is migrated automatically to the banner.

= 3.2.0 =
This is a backwards-compatible product and publication-readiness update. Existing 3.1.x settings are migrated automatically, the legacy settings are retained for rollback safety, and the active AdBlock endpoint changes to the official TrueSift domain.
