=== NDT Maintenance ===
Contributors: nguyenduytan
Tags: maintenance, coming soon, under construction, wordpress maintenance
Requires at least: 5.0
Tested up to: 6.8
Stable tag: 1.0.1
Requires PHP: 7.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Plugin URI: https://nguyenduytan.com/1375-ndt-maintenance-wordpress-plugin/

Easily set up a customizable maintenance page for your WordPress site with countdown, progress bar, contact form, and social links.

== Description ==

NDT Maintenance is a lightweight plugin that helps you create a customizable maintenance page for your WordPress site. It allows you to display a professional "Under Maintenance" or "Coming Soon" page while your site is being worked on, with features like a countdown timer, progress bar, contact form, and social media links.

Key features include:

- Enable/disable maintenance mode with a toggle switch.
- Multiple pre-designed themes (Default, Nova) to choose from.
- Customizable title, heading, description, and footer.
- Optional contact form with reCAPTCHA integration.
- Countdown timer and progress bar to show site progress.
- Custom logo, background image, and color options.
- Exclude specific pages and posts from maintenance mode.
- Social media links integration.
- Google Analytics tracking support.
- Custom CSS for advanced styling.

Developed and maintained by Tony Nguyễn, this plugin is designed to provide a seamless maintenance experience and will be supported as long as necessary.

== External Services ==

This plugin integrates with the following third-party services to provide functionality. Below is a detailed explanation of each service, including what data is sent, why, and links to their terms of service and privacy policies.

**Google reCAPTCHA**
- **Purpose**: Used to prevent spam submissions on the contact form displayed during maintenance mode.
- **Data Sent**: When a user submits the contact form, the plugin sends the user's reCAPTCHA response token and IP address to Google's reCAPTCHA API (`https://www.google.com/recaptcha/api/siteverify`) for verification.
- **When Data is Sent**: Data is sent only when the contact form is enabled and a user submits it.
- **Terms of Service**: https://www.google.com/intl/en/policies/terms/
- **Privacy Policy**: https://www.google.com/intl/en/policies/privacy/

**Google Analytics**
- **Purpose**: Optionally tracks user interactions on the maintenance mode page.
- **Data Sent**: When enabled, the plugin loads the Google Analytics script (`https://www.googletagmanager.com/gtag/js`), which may collect data such as page views, user interactions, and device information as per Google's policies.
- **When Data is Sent**: Data is sent only if a Google Analytics ID is configured in the plugin settings and the maintenance mode page is loaded.
- **Terms of Service**: https://www.google.com/analytics/terms/
- **Privacy Policy**: https://www.google.com/intl/en/policies/privacy/

**Pinterest**
- **Note**: The plugin includes a settings field for entering a Pinterest profile URL, which is displayed as a social media link on the maintenance page. No data is sent to Pinterest unless explicitly configured by the site administrator.
- **Terms of Service**: Not applicable.
- **Privacy Policy**: Not applicable.

== Installation ==

1. Upload the `ndt-maintenance` folder to the `/wp-content/plugins/` directory.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Go to **NDT Solutions > NDT Maintenance** in the admin dashboard to configure settings.

== Frequently Asked Questions ==

= How do I enable maintenance mode? =
Go to **NDT Solutions > NDT Maintenance**, toggle the "Enable Maintenance Mode" switch, and save changes. You can also toggle it directly from the WordPress admin bar.

= Can I exclude specific pages or posts? =
Yes, in the settings page, under "Advanced Settings," you can select pages and posts to exclude from maintenance mode.

= How do I customize the maintenance page? =
Go to **NDT Solutions > NDT Maintenance** to choose a theme, set a custom logo, background image, colors, and add features like a countdown timer, progress bar, or contact form.

= Does the contact form support reCAPTCHA? =
Yes, you can enable a contact form with reCAPTCHA integration. You’ll need to provide your reCAPTCHA Site Key and Secret Key in the settings.

= Can I preview the maintenance page without enabling it? =
Yes, when maintenance mode is enabled, a "Preview" button will appear in the settings page, allowing you to view the maintenance page without affecting visitors.

= How can I support the developer? =
You can support the developer by donating via the PayPal.me link provided in the plugin's admin settings page under "About the Author".

== Screenshots ==
1. Settings page for configuring maintenance mode.
2. Default theme preview.
3. Nova theme preview.

== Changelog ==

= 1.0.1 =
* New: Safe "Preview" flow – the preview button is always visible in the settings page and uses a nonce-protected URL so admins can preview changes even when maintenance mode is OFF.
* New: Background image fallback – if no background is set, the theme falls back to /themes/default/assets/img/bg_default.jpg.
* New: Stricter asset isolation – the maintenance template dequeues theme/other plugin assets and prints only this plugin’s CSS/JS to prevent theme elements from leaking into the maintenance page.
* Update: Block WordPress Speculative Loading on the maintenance page to avoid extra head/footer output.
* Update: Consistent versioning – all enqueued assets now use the plugin version constant for cache busting.
* Update: Logo rendering keeps proper aspect ratio inside a square box sized by “Logo Width”.
* Fix: Contact form init – ensure jQuery is printed before plugin scripts; form renders only when reCAPTCHA keys are provided.
* Fix: Prevent plugin frontend assets from loading when maintenance mode is OFF.
* Fix: 503 status header and no-cache headers for non-preview maintenance responses.
* Security/Hardening: Nonce + capability checks for preview; sanitize/escape output on the maintenance template and admin.
* Compatibility: Tested with WordPress 6.8; Requires PHP 7.0.

= 1.0.0 =
* Initial release for WordPress.org submission:
  - Standardized code to comply with WordPress.org guidelines.
  - Moved inline CSS/JS to separate files.
  - Added nonce and permission checks for security.
  - Improved settings page layout and toggle switch design.
  - Enhanced theme selection with preview images.
  - Added support for reCAPTCHA, countdown, progress bar, and social links.

== Upgrade Notice ==

= 1.0.0 =
This version standardizes the plugin for WordPress.org submission, improves security, and enhances the user interface. Please update to ensure compatibility and a better experience.

== Support ==
For support, please contact me via:
- Email: admin@ndtan.net
- Telegram: @nguyenduytan
- Website: https://nguyenduytan.com