=== Plugixa Testimonial ===
Contributors: plugixa, freemius
Tags: testimonials, reviews, ratings, customer reviews, social proof
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Collect, manage, and showcase customer testimonials with star ratings, photos, an approval workflow, and grid, slider, masonry, and list layouts.

== Description ==

Plugixa Testimonial is a modern testimonial management plugin built around a fast React admin panel. Collect testimonials from your customers, approve them, and display them anywhere on your site with beautiful, responsive layouts — no coding required.

Add testimonials manually or let visitors submit their own through a frontend form, organize them into categories, attach client photos and star ratings, and publish them through a clean pending/approved/rejected workflow. Display them with a Gutenberg block or shortcodes, and preview every change live as you build.

Plugixa Testimonial is fully multilingual, integrating with Polylang and WPML so each testimonial can have per-language translations grouped together.

= Free features =

* Unlimited testimonials with star ratings and client photos
* Approval workflow (pending / approved / rejected / draft)
* Categories to organize and filter testimonials
* Four display layouts: grid, list, masonry, and slider
* Gutenberg block and shortcodes for placing testimonials anywhere
* Frontend submission form so customers can leave testimonials
* Live preview while you configure displays
* Multilingual support via Polylang and WPML
* Up to 2 saved display configurations (views)

= Pro features =

* Unlimited saved display configurations (views)
* AI testimonial generator (from a topic, URL, or uploaded document)
* Import testimonials from CSV and JSON, and export to CSV, JSON, and PDF
* Custom fields for capturing extra testimonial data
* Video testimonials and in-form video recording
* Premium templates and an advanced slider
* Import reviews from Google, Yelp, Facebook, Trustpilot, and Capterra
* Advanced form builder and advanced notifications
* Scheduled publishing and advanced analytics
* Review aggregation, testimonial walls, and badge generator
* White label, custom CSS/JS, webhooks, and CRM/Mailchimp integration
* A/B testing, AI chatbot, and team collaboration

== Installation ==

1. Upload the plugin files to the `/wp-content/plugins/plugixatestimonial` directory, or install the plugin through the WordPress Plugins screen directly.
2. Activate the plugin through the "Plugins" screen in WordPress.
3. Open the "Plugixa Testimonial" menu in the WordPress admin to add your first testimonial and create a display.
4. Place a display on your site using the Gutenberg block ("Plugixa Testimonial") or a shortcode.

== Frequently Asked Questions ==

= How do I display testimonials on my site? =

Create a view (display configuration) in the admin, then add it to any page using the Gutenberg block or the provided shortcode. You can choose grid, list, masonry, or slider layouts.

= Can visitors submit their own testimonials? =

Yes. The frontend submission form lets visitors leave testimonials, which arrive as pending and can be approved from the admin.

= Is it compatible with multilingual sites? =

Yes. Plugixa Testimonial integrates with Polylang and WPML, grouping translations of the same testimonial together.

= Does it work with the block editor? =

Yes. A dedicated Gutenberg block is included, alongside shortcodes for classic editor and page builders.

== External services ==

This plugin can connect to the third-party services listed below. Every connection is optional: it must be enabled and configured by the site administrator using their own API keys, and it is only made in the situations described. No data is sent to any of these services unless you turn the relevant feature on.

= OpenAI (Pro) =

Used only when an administrator runs the AI testimonial generator (or tests the AI connection) with OpenAI selected as the provider. The text you provide — your topic, the text extracted from a URL you enter, or the text of a document you upload — together with your OpenAI API key, is sent to OpenAI to generate testimonial content. Requests go to https://api.openai.com.
Terms of use: https://openai.com/policies/terms-of-use
Privacy policy: https://openai.com/policies/privacy-policy

= Google Gemini (Pro) =

Used only when an administrator runs the AI testimonial generator (or tests the AI connection) with Google Gemini selected as the provider. The text you provide and your Google API key are sent to Google's Generative Language API to generate testimonial content. Requests go to https://generativelanguage.googleapis.com.
Terms of service: https://policies.google.com/terms
Gemini API additional terms: https://ai.google.dev/gemini-api/terms
Privacy policy: https://policies.google.com/privacy

= Google reCAPTCHA (Free) =

Used only if an administrator enables reCAPTCHA on the frontend testimonial submission form. When a visitor submits the form, a reCAPTCHA token is generated in the visitor's browser via the script at https://www.google.com/recaptcha/api.js, and the token plus your reCAPTCHA secret key are sent to https://www.google.com/recaptcha/api/siteverify for verification. As part of reCAPTCHA, Google also receives information about the visitor's browser and interaction.
Terms of service: https://policies.google.com/terms
Privacy policy: https://policies.google.com/privacy

= Google Places / Maps (Pro) =

Used only when an administrator imports reviews from Google. Your search query or place ID, the requested fields, and your Google Places API key are sent to https://maps.googleapis.com to find places and fetch their reviews. During import, reviewer profile photos are downloaded from the Google-supplied URLs.
Terms of service: https://cloud.google.com/maps-platform/terms
Privacy policy: https://policies.google.com/privacy

= Google Fonts (Free) =

If an administrator selects a Google font for a display's typography, the plugin downloads that font's stylesheet and font files from https://fonts.googleapis.com and https://fonts.gstatic.com to your server and then serves them locally. Neither the frontend nor the admin ever loads fonts from Google's servers — no visitor or administrator data is sent to Google when a page or the admin preview is viewed. When you browse and select fonts in the admin, the font list is fetched from the Google Fonts Web API at https://www.googleapis.com/webfonts/v1/webfonts using your Google Fonts API key.
Terms of service: https://policies.google.com/terms
Privacy policy: https://policies.google.com/privacy

= YouTube (Free) =

Used only if an administrator attaches a YouTube video to a testimonial. On any page that displays that testimonial, the video's preview thumbnail is loaded in the visitor's browser from https://img.youtube.com, so YouTube receives the visitor's IP address and browser information on page view. The video itself is not loaded until the visitor clicks play, at which point it is embedded from the privacy-enhanced domain https://www.youtube-nocookie.com. If no testimonial has a YouTube video, no request is made.
Terms of service: https://www.youtube.com/t/terms
Privacy policy: https://policies.google.com/privacy

= Vimeo (Free) =

Used only if an administrator attaches a Vimeo video to a testimonial, and only after the visitor clicks play — nothing is loaded from Vimeo on page view. On click, the player is embedded from https://player.vimeo.com, and Vimeo receives the visitor's IP address and browser information. If no testimonial has a Vimeo video, no request is made.
Terms of service: https://vimeo.com/terms
Privacy policy: https://vimeo.com/privacy

= A website URL you provide (Pro) =

Used only when an administrator uses the AI generator's "generate from URL" option. The plugin fetches the URL you enter so it can extract the page text, which is then sent to your selected AI provider above. The request goes to whatever URL you provide.

== Source Code ==

This plugin contains compiled JavaScript and CSS. The complete human-readable source for every compiled asset ships inside the plugin, alongside the build configuration needed to reproduce it — nothing is obfuscated and nothing is minified without its source.

* Admin app (React + TypeScript, built with Vite): source in `assets/backend/app/src/`, config in `assets/backend/app/vite.config.ts`. Compiled output: `assets/backend/app/build/`.
* Block editor block (built with @wordpress/scripts): source in `assets/blocks/testimonial-block/`. Compiled output: `assets/build/blocks/`.
* Frontend styles (Tailwind, built with Vite): source in `assets/frontend/app/src/`. Compiled output: `assets/frontend/build/css/`.
* Frontend scripts (`assets/frontend/js/`) are plain, unminified JavaScript — they are the source.
* Swiper (third-party, MIT) is vendored in `assets/frontend/vendor/swiper/` with both the minified files that are enqueued and the unminified upstream originals. See the README.txt in that directory for the exact upstream version and how to reproduce it.

To rebuild, with Node.js 20+ installed, run `npm install` followed by `npm run build` in each of `assets/backend/app/`, `assets/blocks/`, and `assets/frontend/app/`.

== Screenshots ==

1. React admin panel — testimonial list with ratings, statuses, and filters.
2. Display builder with live preview.
3. Grid layout on the frontend.
4. Slider layout on the frontend.
5. Frontend testimonial submission form.

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
Initial release of Plugixa Testimonial.
