get_css_selector_from_string($form['success']['wrapper']); // add selector if(!empty($selector)){ acfe_set_form_data($form, 'selector', $selector); } } } } /** * prepare_form * * acfe/form/prepare_form * * @param $form * * @return mixed */ function prepare_form($form){ if(!$form){ return false; } // field values // we must inject values earlier than 10 so custom check in acf/prepare_field can be done // this fix an issue with Select 'custom value' which is checked on acf/prepare_field/type=select add_filter('acf/prepare_field', array($this, 'prepare_field_values'), 9); // field settings add_filter('acf/prepare_field', array($this, 'prepare_field_settings'), 15); // field attributes add_filter('acf/prepare_field', array($this, 'prepare_field_attributes'), 15); // uploader (always set in case of multiple forms on the page) acf_disable_filter('acfe/form/uploader'); if($form['settings']['uploader'] !== 'default'){ acf_enable_filter('acfe/form/uploader'); acf_update_setting('uploader', $form['settings']['uploader']); } // custom instruction placement acf_enable_filter('acfe/override_instruction'); acf_disable_filter('acfe/instruction_tooltip'); acf_disable_filter('acfe/instruction_above_field'); if($form['attributes']['fields']['instruction'] === 'tooltip'){ acf_enable_filter('acfe/instruction_tooltip'); }elseif($form['attributes']['fields']['instruction'] === 'above_field'){ acf_enable_filter('acfe/instruction_above_field'); } // generate render if($form['render']){ // added mapped fields to context // this allow {render:field_name} to first check fields of the mapped field groups $mapped_fields = $this->get_form_fields_keys($form); acfe_add_context('mapped_fields', $mapped_fields); // check if render has {render:submit} tag $has_render_submit = false; // array render if(is_array($form['render'])){ $html = array_map(function($row){ return "{render:$row}"; }, $form['render']); $html = implode('', $html); // assign new render $form['render'] = $html; } // check render if(is_string($form['render'])){ // check {render:submit} exists if(strpos($form['render'], '{render:submit}') !== false){ $has_render_submit = true; } } // parse template tags $form['render'] = acfe_parse_tags($form['render'], array('context' => 'display')); // render is empty even after tags parsing // we must set it to true to render nothing // and avoid rendering default field group if(empty($form['render'])){ $form['render'] = true; } // render has the {render:submit} tag // disallow default submit button after the form render if($has_render_submit){ $form['attributes']['submit'] = false; } } // flexible content dynamic preview if(acfe_is_dynamic_preview()){ $form['attributes']['form']['element'] = 'div'; } return $form; } /** * render_before_form * * acfe/form/render_before_form * * @param $form */ function render_before_form($form){ // atts $atts = array( 'method' => 'post', 'class' => 'acfe-form', 'data-cid' => $form['cid'], ); // form class if($form['attributes']['form']['class']){ $atts['class'] .= ' ' . $form['attributes']['form']['class']; } // form id if($form['attributes']['form']['id']){ $atts['id'] = $form['attributes']['form']['id']; } $element = $form['attributes']['form']['element']; // validate element if(!in_array($element, array('form', 'div'))){ $element = 'form'; } // unset method & action for