=== Logicfire Migration Toolkit for Elementor ===
Contributors: logicfire
Tags: elementor, page builder, migration, converter, shortcodes
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Elementor tested up to: 4.2.3
Elementor Pro tested up to: 4.0.1

Convert WPBakery Page Builder and Ultimate Addons shortcodes into native Elementor layouts, with configurable mapping and meta extraction.

== Description ==

This toolkit migrates pages built with WPBakery Page Builder (js_composer) to Elementor. It supports:

* Direct conversion to Elementor JSON (sections/columns or containers based on your Elementor setup)
* Ultimate Addons for WPBakery (Ultimate_VC_Addons) shortcode conversion
* Extract content into post meta fields for use with Elementor dynamic templates
* Configurable shortcode-to-widget mapping admin page
* Non-destructive conversion with per-post restore
* Batch AJAX conversion with progress reporting

Shortcodes without a faithful Elementor equivalent are preserved inside an Elementor Shortcode widget, so nothing is lost when the source plugin stays active.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Ensure Elementor is installed and activated
4. Go to Tools → Migration Toolkit to convert pages

== Frequently Asked Questions ==

= Does WPBakery need to remain active? =

No. The converter reads stored shortcode content from post_content. WPBakery does not need to be active after conversion.

= Will my original content be preserved? =

Yes. Original WPBakery content is backed up to post meta before conversion and can be restored individually.

= Are Ultimate Addons shortcodes supported? =

Yes. Shortcodes with a genuine Elementor counterpart (headings, buttons, counters, info boxes, tabs, pricing tables, countdowns, hotspots and more) are converted to native widgets. The rest are wrapped in a Shortcode widget so they keep rendering.

== Changelog ==

= 2.1.2 =
* Added Migration Toolkit and Settings links on the Plugins list page

= 2.1.1 =
* Verified nonce before reading any request data on convert, restore, mapping, and settings actions
* Checked manage_options after nonce verification on every privileged handler, including AJAX
* Stopped writing post meta on the post editor GET request
* Carried conversion notices in a user transient instead of query arguments

= 2.1.0 =
* Renamed the plugin to comply with WordPress.org naming and trademark guidelines
* Verified against Elementor 4.2.3 and Elementor Pro 4.0.1 widget schemas
* Added Ultimate Addons for WPBakery shortcode conversion (~30 shortcodes to native widgets)
* Fixed multi-bar `vc_progress_bar` so each bar becomes its own Progress widget
* Fixed Alert widget content control (`alert_description`)
* Fixed Image Carousel and Gallery image arrays to match the Gallery control format
* Fixed `vc_custom_heading` to read tag, alignment and colour from `font_container`
* Fixed WordPress widget conversion to use Elementor's `wp-widget-{id_base}` types
* Fixed `vc_gmaps` embeds to preserve the original iframe instead of dropping it
* Fixed Font Awesome 4 icon classes to Elementor's Font Awesome 5 values
* Fixed responsive column widths to use `_inline_size_tablet` / `_inline_size_mobile`
* Column widths now snap to Elementor's supported grid sizes
* Fixed plain URLs in link attributes being mangled during parsing
* Post scans now detect Ultimate Addons content that contains no `vc_` shortcodes
* Removed the non-functional atomic widget setting
* Cached mapping lookups to speed up batch conversion

= 2.0.0 =
* Complete rebuild with proper plugin architecture
* Container/column auto-detection based on Elementor experiments
* Shortcode mapping admin page
* Meta field extraction with dynamic tags
* AJAX batch conversion
* WP-CLI support
