PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.14
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.14
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Services / FormBuilder / Components / Container.php

Container.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.14, at app/Services/FormBuilder/Components/Container.php

83 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentForm\App\Services\FormBuilder\Components;
4
5 use FluentForm\Framework\Helpers\ArrayHelper;
6
7 class Container extends BaseComponent
8 {
9 /**
10 * Max columns for container
11 *
12 * @var integer
13 */
14 protected $maxColumns = 12;
15
16 /**
17 * Container column class
18 *
19 * @var string
20 */
21 protected $columnClass = 'ff-t-cell';
22
23 /**
24 * Container wrapper class
25 *
26 * @var string
27 */
28 protected $wrapperClass = 'ff-t-container ff-column-container';
29
30 /**
31 * Compile and echo the html element
32 *
33 * @param array $data [element data]
34 * @param \stdClass $form [Form Object]
35 *
36 * @return void
37 */
38 public function compile($data, $form)
39 {
40 $elementName = $data['element'];
41
42
43 $data = apply_filters('fluentform/rendering_field_data_' . $elementName, $data, $form);
44
45 $containerClass = ArrayHelper::get($data, 'settings.container_class');
46
47 $hasConditions = $this->hasConditions($data) ? 'has-conditions ' : '';
48 $containerClass .= ' ' . $hasConditions;
49
50 $container_css_class = $this->wrapperClass . ' ff_columns_total_' . count($data['columns']);
51 if ($containerClass) {
52 $container_css_class = $container_css_class . ' ' . wp_strip_all_tags($containerClass);
53 }
54
55 $atts = $this->buildAttributes(
56 ArrayHelper::except($data['attributes'], 'name')
57 );
58
59 $columnClass = $this->columnClass;
60 echo '<div ' . $atts . " class='" . esc_attr($container_css_class) . "'>"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- $atts is escaped before being passed in.
61 if (isset($data['settings']['label'])) {
62 echo '<strong>' . fluentform_sanitize_html($data['settings']['label']) . '</strong>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped using fluentform_sanitize_html
63 }
64 foreach ($data['columns'] as $columnIndex => $column) {
65 if (! isset($column['width'])) {
66 $column['width'] = ceil(100 / count($data['columns']));
67 }
68
69 $newColumnClass = $columnClass . ' ff-t-column-' . ($columnIndex + 1);
70 echo "<div class='" . esc_attr($newColumnClass) . "' style='flex-basis: " . esc_attr($column['width']) . "%;'>";
71
72 foreach ($column['fields'] as $item) {
73
74 $item = apply_filters('fluentform/before_render_item', $item, $form);
75
76 do_action('fluentform/render_item_' . $item['element'], $item, $form);
77 }
78 echo '</div>';
79 }
80 echo '</div>';
81 }
82 }
83