app = wpFluentForm(); } /** * Build unique ID concating form id and name attribute * @param array $data $form * @return string for id value */ protected function makeElementId($data, $form) { if (isset($data['attributes']['name'])) { if (!empty($data['attributes']['id'])) { return $data['attributes']['id']; } $elementName = $data['attributes']['name']; $elementName = str_replace(['[', ']', ' '], '_', $elementName); return "ff_{$form->id}_{$elementName}"; } } /** * Build attributes for any html element * @param array $attributes * @return string [Compiled key='value' attributes] */ protected function buildAttributes($attributes, $form = null) { $atts = ''; foreach ($attributes as $key => $value) { if ($value || $value === 0 || $value === '0') { $value = htmlspecialchars($value); $atts .= $key . '="' . $value . '" '; } } return $atts; } /** * Extract value attribute from attribute list * @param array &$element * @return string */ protected function extractValueFromAttributes(&$element) { $value = ''; if (isset($element['attributes']['value'])) { $value = $element['attributes']['value']; unset($element['attributes']['value']); } return $value; } protected function extractDynamicValues($data, $form) { $defaultValues = []; if ($dynamicDefaultValue = ArrayHelper::get($data, 'settings.dynamic_default_value')) { $parseValue = $this->parseEditorSmartCode($dynamicDefaultValue, $form); if ($parseValue) { $defaultValues = explode(',', $parseValue); $defaultValues = array_map('trim', $defaultValues); } } return $defaultValues; } /** * Determine if the given element has conditions bound * @param array $element [Html element being compiled] * @return boolean */ protected function hasConditions($element) { $conditionals = ArrayHelper::get($element, 'settings.conditional_logics'); if (isset($conditionals['status']) && $conditionals['status']) { return array_filter($conditionals['conditions'], function ($item) { return $item['field'] && $item['operator']; }); } } /** * Generate a unique id for an element * @param string $str [preix] * @return string [Unique id] */ protected function getUniqueId($str) { return $str . '_' . md5(uniqid(mt_rand(), true)); } /** * Get a default class for each form element wrapper * @return string */ protected function getDefaultContainerClass() { return 'ff-el-group '; } /** * Get required class for form element wrapper * @param array $rules [Validation rules] * @return mixed */ protected function getRequiredClass($rules) { if (isset($rules['required'])) { return $rules['required']['value'] ? 'ff-el-is-required ' : ''; } } /** * Get asterisk placement for the required form elements * @return String */ protected function getAsteriskPlacement($form) { // for older version compatibility $asteriskPlacement = 'asterisk-right'; if (isset($form->settings['layout']['asteriskPlacement'])) { $asteriskPlacement = $form->settings['layout']['asteriskPlacement']; } return $asteriskPlacement . ' '; } /** * Generate a label for any element * @param array $data * @return string [label Html element] */ protected function buildElementLabel($data, $form) { $helpMessage = ''; if ($form->settings['layout']['helpMessagePlacement'] == 'with_label') { $helpMessage = $this->getLabelHelpMessage($data); } $id = isset($data['attributes']['id']) ? $data['attributes']['id'] : ''; $label = isset($data['settings']['label']) ? $data['settings']['label'] : ''; $requiredClass = $this->getRequiredClass(ArrayHelper::get($data, 'settings.validation_rules', [])); $classes = trim('ff-el-input--label ' . $requiredClass . $this->getAsteriskPlacement($form)); return "