Plugin Directory

Changeset 3794174


Ignore:
Timestamp:
11/10/2026 10:59:22 AM (less than one hour ago)
Author:
coolplugins
Message:

Update to version 2.7.12 from GitHub

Location:
extensions-for-elementor-form
Files:
2 deleted
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • extensions-for-elementor-form/tags/2.7.12/assets/addons/js/global.js

    r3652011 r3794174  
    6161};
    6262
     63/**
     64 * Keep nested repeater rows (form_fields -> cfef_repeater_data) from mutating the document config.
     65 *
     66 * Elementor's BaseSettings.handleRepeaterData() writes a Backbone.Collection back into the attrs
     67 * object it receives. For a repeater row that holds another repeater, that object is the raw row
     68 * from elementor.documents.getCurrent().config.elements, so the config ends up holding a circular
     69 * Backbone.Collection. Elementor Pro's editor-templates-extended package then walks the config
     70 * recursively (collectShortcodeTemplateIdsFromValue) and throws "Maximum call stack size exceeded".
     71 * Cloning the rows first means the Collection is written onto a copy, not onto the config.
     72 *
     73 * Runs once on load and again on elementor/init, in case elementorModules is not ready yet.
     74 */
     75const cfefPatchNestedRepeaterSettings = () => {
     76  const models = window.elementorModules && elementorModules.editor && elementorModules.editor.elements && elementorModules.editor.elements.models;
     77  const proto = models && models.BaseSettings && models.BaseSettings.prototype;
     78
     79  if (!proto || typeof proto.convertRepeaterValueToCollection !== 'function' || proto.cfefNestedRepeaterPatched) {
     80    return;
     81  }
     82
     83  const originalConvert = proto.convertRepeaterValueToCollection;
     84  const hasNestedRepeater = (control) => Object.values(control.fields || {}).some(
     85    (field) => field && ('repeater' === field.type || field.is_repeater)
     86  );
     87
     88  proto.convertRepeaterValueToCollection = function (attrs, repeaterControl) {
     89    const rows = attrs ? attrs[repeaterControl.name] : null;
     90
     91    if (Array.isArray(rows) && hasNestedRepeater(repeaterControl)) {
     92      const clonedRows = rows.map((row) => (
     93        row && 'object' === typeof row && !(row instanceof Backbone.Model) ? Object.assign({}, row) : row
     94      ));
     95      attrs = Object.assign({}, attrs, { [repeaterControl.name]: clonedRows });
     96    }
     97
     98    return originalConvert.call(this, attrs, repeaterControl);
     99  };
     100  proto.cfefNestedRepeaterPatched = true;
     101};
     102
     103cfefPatchNestedRepeaterSettings();
     104window.addEventListener('elementor/init', cfefPatchNestedRepeaterSettings);
     105
    63106window.addEventListener('elementor/init', function () {
    64107  var RepeaterControlItemView = elementor.modules.controls.Repeater.extend({
  • extensions-for-elementor-form/tags/2.7.12/extensions-for-elementor-form.php

    r3783885 r3794174  
    88 * Author URI: https://coolplugins.net/?utm_source=cfkl_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    99 * Text Domain: extensions-for-elementor-form
    10  * Version: 2.7.11
     10 * Version: 2.7.12
    1111 * Requires at least: 6.2
    1212 * Requires PHP: 7.4
    … …  
    1414 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
    1515 * Requires Plugins: elementor
    16  * Elementor tested up to: 4.3.5
    17  * Elementor Pro tested up to: 4.3.2
     16 * Elementor tested up to: 4.4.0
     17 * Elementor Pro tested up to: 4.4.0
    1818 */
    1919
    … …  
    3434}
    3535
    36 define('CFL_VERSION', '2.7.11');
     36define('CFL_VERSION', '2.7.12');
    3737define('PHP_MINIMUM_VERSION', '7.4');
    3838define('WP_MINIMUM_VERSION', '6.2');
    … …  
    9191                        add_action('elementor_pro/forms/actions/register', array($this, 'cfl_register_new_form_actions'));
    9292                        add_action( 'plugins_loaded',array($this,'formdb_elementor_marketing'));
    93                         add_filter( 'elementor-pro/editor/v2/packages', array( $this, 'filter_elementor_pro_editor_packages' ) );
    94                         add_action( 'elementor/editor/v2/scripts/enqueue', array( $this, 'enqueue_editor_templates_extended_stub' ), 20 );
    9593                }
    9694        }
    … …  
    396394        }
    397395
    398         /**
    399          * Skips Elementor Pro's editor-templates-extended package (crashes editor with nested form controls).
    400          *
    401          * @param mixed $packages Editor v2 packages.
    402          * @return mixed
    403          */
    404         public function filter_elementor_pro_editor_packages( $packages ) {
    405                 if ( ! is_array( $packages ) ) {
    406                         return $packages;
    407                 }
    408 
    409                 return array_values( array_diff( $packages, array( 'editor-templates-extended' ) ) );
    410         }
    411 
    412         /**
    413          * Stub the removed package handle for other Pro packages that depend on it.
    414          */
    415         public function enqueue_editor_templates_extended_stub() {
    416                 wp_register_script(
    417                         'elementor-v2-editor-templates-extended',
    418                         CFL_PLUGIN_URL . 'assets/js/cfl-editor-templates-extended-stub.js',
    419                         array(),
    420                         CFL_VERSION,
    421                         true
    422                 );
    423                 wp_enqueue_script( 'elementor-v2-editor-templates-extended' );
    424         }
    425 
    426396        public function EEF_plugin_dashboard_link($links)
    427397        {
  • extensions-for-elementor-form/tags/2.7.12/readme.txt

    r3783885 r3794174  
    55Requires at least: 6.2
    66Tested up to: 7.1
    7 Stable tag: 2.7.11
     7Stable tag: 2.7.12
    88Requires PHP: 7.4
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
    11 Elementor tested up to: 4.3.5
    12 Elementor Pro tested up to: 4.3.2
     11Elementor tested up to: 4.4.0
     12Elementor Pro tested up to: 4.4.0
    1313
    1414Contact form addon for Elementor. Create forms in Elementor Free or extend Elementor Pro forms with conditional logic, country code and extra fields.
    … …  
    197197== Changelog ==
    198198
     199= 2.7.12 - 2026-11-10 =
     200* Fixed: Unstyled Theme Builder Header/Footer in the Elementor editor.
     201
    199202= 2.7.11 - 2026-11-04 =
    200203* Improved: Processing order of field values and shortcodes in the Email action.
  • extensions-for-elementor-form/trunk/assets/addons/js/global.js

    r3652011 r3794174  
    6161};
    6262
     63/**
     64 * Keep nested repeater rows (form_fields -> cfef_repeater_data) from mutating the document config.
     65 *
     66 * Elementor's BaseSettings.handleRepeaterData() writes a Backbone.Collection back into the attrs
     67 * object it receives. For a repeater row that holds another repeater, that object is the raw row
     68 * from elementor.documents.getCurrent().config.elements, so the config ends up holding a circular
     69 * Backbone.Collection. Elementor Pro's editor-templates-extended package then walks the config
     70 * recursively (collectShortcodeTemplateIdsFromValue) and throws "Maximum call stack size exceeded".
     71 * Cloning the rows first means the Collection is written onto a copy, not onto the config.
     72 *
     73 * Runs once on load and again on elementor/init, in case elementorModules is not ready yet.
     74 */
     75const cfefPatchNestedRepeaterSettings = () => {
     76  const models = window.elementorModules && elementorModules.editor && elementorModules.editor.elements && elementorModules.editor.elements.models;
     77  const proto = models && models.BaseSettings && models.BaseSettings.prototype;
     78
     79  if (!proto || typeof proto.convertRepeaterValueToCollection !== 'function' || proto.cfefNestedRepeaterPatched) {
     80    return;
     81  }
     82
     83  const originalConvert = proto.convertRepeaterValueToCollection;
     84  const hasNestedRepeater = (control) => Object.values(control.fields || {}).some(
     85    (field) => field && ('repeater' === field.type || field.is_repeater)
     86  );
     87
     88  proto.convertRepeaterValueToCollection = function (attrs, repeaterControl) {
     89    const rows = attrs ? attrs[repeaterControl.name] : null;
     90
     91    if (Array.isArray(rows) && hasNestedRepeater(repeaterControl)) {
     92      const clonedRows = rows.map((row) => (
     93        row && 'object' === typeof row && !(row instanceof Backbone.Model) ? Object.assign({}, row) : row
     94      ));
     95      attrs = Object.assign({}, attrs, { [repeaterControl.name]: clonedRows });
     96    }
     97
     98    return originalConvert.call(this, attrs, repeaterControl);
     99  };
     100  proto.cfefNestedRepeaterPatched = true;
     101};
     102
     103cfefPatchNestedRepeaterSettings();
     104window.addEventListener('elementor/init', cfefPatchNestedRepeaterSettings);
     105
    63106window.addEventListener('elementor/init', function () {
    64107  var RepeaterControlItemView = elementor.modules.controls.Repeater.extend({
  • extensions-for-elementor-form/trunk/extensions-for-elementor-form.php

    r3783885 r3794174  
    88 * Author URI: https://coolplugins.net/?utm_source=cfkl_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    99 * Text Domain: extensions-for-elementor-form
    10  * Version: 2.7.11
     10 * Version: 2.7.12
    1111 * Requires at least: 6.2
    1212 * Requires PHP: 7.4
    … …  
    1414 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
    1515 * Requires Plugins: elementor
    16  * Elementor tested up to: 4.3.5
    17  * Elementor Pro tested up to: 4.3.2
     16 * Elementor tested up to: 4.4.0
     17 * Elementor Pro tested up to: 4.4.0
    1818 */
    1919
    … …  
    3434}
    3535
    36 define('CFL_VERSION', '2.7.11');
     36define('CFL_VERSION', '2.7.12');
    3737define('PHP_MINIMUM_VERSION', '7.4');
    3838define('WP_MINIMUM_VERSION', '6.2');
    … …  
    9191                        add_action('elementor_pro/forms/actions/register', array($this, 'cfl_register_new_form_actions'));
    9292                        add_action( 'plugins_loaded',array($this,'formdb_elementor_marketing'));
    93                         add_filter( 'elementor-pro/editor/v2/packages', array( $this, 'filter_elementor_pro_editor_packages' ) );
    94                         add_action( 'elementor/editor/v2/scripts/enqueue', array( $this, 'enqueue_editor_templates_extended_stub' ), 20 );
    9593                }
    9694        }
    … …  
    396394        }
    397395
    398         /**
    399          * Skips Elementor Pro's editor-templates-extended package (crashes editor with nested form controls).
    400          *
    401          * @param mixed $packages Editor v2 packages.
    402          * @return mixed
    403          */
    404         public function filter_elementor_pro_editor_packages( $packages ) {
    405                 if ( ! is_array( $packages ) ) {
    406                         return $packages;
    407                 }
    408 
    409                 return array_values( array_diff( $packages, array( 'editor-templates-extended' ) ) );
    410         }
    411 
    412         /**
    413          * Stub the removed package handle for other Pro packages that depend on it.
    414          */
    415         public function enqueue_editor_templates_extended_stub() {
    416                 wp_register_script(
    417                         'elementor-v2-editor-templates-extended',
    418                         CFL_PLUGIN_URL . 'assets/js/cfl-editor-templates-extended-stub.js',
    419                         array(),
    420                         CFL_VERSION,
    421                         true
    422                 );
    423                 wp_enqueue_script( 'elementor-v2-editor-templates-extended' );
    424         }
    425 
    426396        public function EEF_plugin_dashboard_link($links)
    427397        {
  • extensions-for-elementor-form/trunk/readme.txt

    r3783885 r3794174  
    55Requires at least: 6.2
    66Tested up to: 7.1
    7 Stable tag: 2.7.11
     7Stable tag: 2.7.12
    88Requires PHP: 7.4
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
    11 Elementor tested up to: 4.3.5
    12 Elementor Pro tested up to: 4.3.2
     11Elementor tested up to: 4.4.0
     12Elementor Pro tested up to: 4.4.0
    1313
    1414Contact form addon for Elementor. Create forms in Elementor Free or extend Elementor Pro forms with conditional logic, country code and extra fields.
    … …  
    197197== Changelog ==
    198198
     199= 2.7.12 - 2026-11-10 =
     200* Fixed: Unstyled Theme Builder Header/Footer in the Elementor editor.
     201
    199202= 2.7.11 - 2026-11-04 =
    200203* Improved: Processing order of field values and shortcodes in the Email action.
Note: See TracChangeset for help on using the changeset viewer.