=== EfficiencyNext Data Connector ===
Contributors: efficiencynext
Tags: external data, rest, api, JSON, template
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 8.0
Stable tag: 1.0.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Display external API data in WordPress posts and pages using placeholders, shortcodes, and templates.

== Description ==

EfficiencyNext Data Connector is a modern, lightweight WordPress plugin that lets you fetch data from external APIs and display it in your posts and pages using simple placeholders, shortcodes, and Mustache-style templates.

**Key Features:**

* **Zero Dependencies** - No external libraries required, pure PHP 8.0+ code
* **PHP 8.3 Compatible** - Built from the ground up for modern PHP
* **Shortcode Support** - Use `[effcncynxtdc source="Name"]` in your content
* **Mustache-style Templates** - Familiar `{{variable}}` syntax
* **Loop Support** - Iterate over arrays with `{{#items}}...{{/items}}`
* **Secure** - All output is HTML-escaped, templates are sanitized with wp_kses
* **Smart Admin Interface** - Add, edit, and delete data sources with a modern UI
* **API Preview** - Test your API endpoints and discover available fields right in the editor
* **Template Helpers** - Insert common template patterns with one click
* **Translation Ready** - Fully internationalized with text domain and language file support

**Template Syntax:**

* `{{variable}}` - Display a simple value
* `{{#section}}...{{/section}}` - Loop over arrays or conditional sections
* `{{^section}}...{{/section}}` - Show content when a value is empty or missing
* `{{.}}` - Current item in a simple loop
* `{{object.property}}` - Access nested properties with dot notation

**Shortcode Usage:**

* `[effcncynxtdc source="SourceName"]` - Render a configured data source
* `[effcncynxtdc source="SourceName" url="https://..."]` - Override the API URL
* `[effcncynxtdc source="SourceName" template="<b>{{name}}</b>"]` - Override the template
* `[effcncynxtdc_inline source="SourceName"]` - For inline usage

== Installation ==

1. Upload the `efficiencynext-data-connector` folder to `/wp-content/plugins/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Go to **Settings → Data Connector** in the admin menu to configure your data sources

== Configuration ==

1. Click **Add New Source** to create a data source
2. Enter a **Source Name** (used with shortcodes and for identification)
3. A **Placeholder** is auto-generated (e.g., `{{Positions}}`) - this goes in your page/post content
4. Enter your **API URL** that returns JSON data
5. Click **Preview API** to see the JSON response and available template fields
6. Create your **Template** using Mustache-style syntax - click the available fields to insert them
7. Toggle **Inline** if the placeholder appears within a paragraph

== Frequently Asked Questions ==

= What PHP version is required? =

PHP 8.0 or higher is required. The plugin is fully tested with PHP 8.3.

= How do I use shortcodes? =

Add `[effcncynxtdc source="YourSourceName"]` in your post or page content. The source name must match a configured data source. You can optionally override the URL or template via shortcode attributes.

= Can I use dynamic URLs? =

Yes! You can use query parameters in your API URLs. For example:
`https://api.example.com/data?id={{id}}`

The `{{id}}` will be replaced with the `id` query parameter from the current page URL.

= How do I loop over an array? =

Use section tags:

`{{#items}}<li>{{name}}</li>{{/items}}`

= Is the output secure? =

Yes. All variable output is automatically HTML-escaped to prevent XSS attacks. Templates are sanitized using WordPress's wp_kses function, which strips dangerous HTML tags like script, iframe, and form elements while preserving safe formatting tags.

= Can I translate the plugin? =

Yes! EfficiencyNext Data Connector is fully internationalized. Place your translation files in the `wp-content/plugins/efficiencynext-data-connector/languages/` directory using the text domain `efficiencynext-data-connector` (e.g., `efficiencynext-data-connector-fr_FR.po`). All admin interface strings, including JavaScript-rendered text, are translatable.

= What HTML tags are allowed in templates? =

Templates support common structural and formatting tags including: table elements, divs, spans, paragraphs, headings, lists, links, images, strong, em, code, pre, and semantic HTML5 elements. Script, iframe, form, and other potentially dangerous tags are stripped.

== Changelog ==

= 1.0.0 =
* Initial release for WordPress.org
* Modern admin interface with add/edit/delete source management
* AJAX-powered settings with modal editor
* API preview with automatic field discovery
* Template helper toolbar with common patterns
* WordPress shortcode support: [effcncynxtdc] and [effcncynxtdc_inline]
* Input sanitization: wp_kses for templates, esc_url_raw for URLs, placeholder validation
* Mustache-style template engine with loops, conditionals, inverted sections, and dot notation
* Zero external dependencies, PHP 8.0+ compatible
* Full internationalization (i18n) with load_plugin_textdomain and translatable JavaScript strings
* Automatic migration from pre-release storage format

= 1.0.1 =
* Added support for Basic Authentication and API Key Authentication
