Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluentformpro/src/Components/ColorPicker.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
namespace FluentFormPro\Components;
3
+
4
+
if ( ! defined( 'ABSPATH' ) ) {
5
+
exit; // Exit if accessed directly.
6
+
}
7
+
8
+
use FluentForm\App\Helpers\Helper;
9
+
use FluentForm\App\Services\FormBuilder\BaseFieldManager;
10
+
use FluentForm\Framework\Helpers\ArrayHelper;
11
+
12
+
class ColorPicker extends BaseFieldManager
13
+
{
14
+
public function __construct()
15
+
{
16
+
parent::__construct(
17
+
'color_picker',
18
+
'Color Picker',
19
+
['color', 'picker'],
20
+
'advanced'
21
+
);
22
+
}
23
+
24
+
function getComponent()
25
+
{
26
+
return [
27
+
'index' => 15,
28
+
'element' => $this->key,
29
+
'attributes' => [
30
+
'name' => $this->key,
31
+
'class' => '',
32
+
'value' => '',
33
+
'type' => 'text',
34
+
'placeholder' => __('Choose Color', 'fluentformpro')
35
+
],
36
+
'settings' => [
37
+
'container_class' => '',
38
+
'placeholder' => '',
39
+
'label' => $this->title,
40
+
'label_placement' => '',
41
+
'help_message' => '',
42
+
'admin_field_label' => '',
43
+
'validation_rules' => [
44
+
'required' => [
45
+
'value' => false,
46
+
'global' => true,
47
+
'message' => Helper::getGlobalDefaultMessage('required'),
48
+
'global_message' => Helper::getGlobalDefaultMessage('required'),
49
+
]
50
+
],
51
+
'conditional_logics' => []
52
+
],
53
+
'editor_options' => [
54
+
'title' => $this->title,
55
+
'icon_class' => 'ff-edit-tint',
56
+
'template' => 'inputText'
57
+
],
58
+
];
59
+
}
60
+
61
+
public function getGeneralEditorElements()
62
+
{
63
+
return [
64
+
'label',
65
+
'admin_field_label',
66
+
'placeholder',
67
+
'value',
68
+
'label_placement',
69
+
'validation_rules',
70
+
];
71
+
}
72
+
73
+
74
+
public function render($data, $form)
75
+
{
76
+
$elementName = $data['element'];
77
+
78
+
$data = apply_filters_deprecated(
79
+
'fluentform_rendering_field_data_' . $elementName,
80
+
[
81
+
$data,
82
+
$form
83
+
],
84
+
FLUENTFORM_FRAMEWORK_UPGRADE,
85
+
'fluentform/rendering_field_data_' . $elementName,
86
+
'Use fluentform/rendering_field_data_' . $elementName . ' instead of fluentform_rendering_field_data_' . $elementName
87
+
);
88
+
89
+
$data = apply_filters('fluentform/rendering_field_data_' . $elementName, $data, $form);
90
+
91
+
$data['attributes']['class'] = @trim('ff-el-form-control ff-el-color ' . $data['attributes']['class']);
92
+
$data['attributes']['id'] = $this->makeElementId($data, $form);
93
+
$data['attributes']['readonly'] = 'true';
94
+
if ($tabIndex = \FluentForm\App\Helpers\Helper::getNextTabIndex()) {
95
+
$data['attributes']['tabindex'] = $tabIndex;
96
+
}
97
+
98
+
$ariaRequired = 'false';
99
+
if (ArrayHelper::get($data, 'settings.validation_rules.required.value')) {
100
+
$ariaRequired = 'true';
101
+
}
102
+
103
+
$elMarkup = "<input " . $this->buildAttributes($data['attributes'], $form) . " aria-invalid='false' aria-required={$ariaRequired}>";
104
+
105
+
$html = $this->buildElementMarkup($elMarkup, $data, $form);
106
+
$this->pushScripts($data, $form);
107
+
108
+
$html = apply_filters_deprecated(
109
+
'fluentform_rendering_field_html_' . $elementName,
110
+
[
111
+
$html,
112
+
$data,
113
+
$form
114
+
],
115
+
FLUENTFORM_FRAMEWORK_UPGRADE,
116
+
'fluentform/rendering_field_html_' . $elementName,
117
+
'Use fluentform/rendering_field_html_' . $elementName . ' instead of fluentform_rendering_field_html_' . $elementName
118
+
);
119
+
120
+
echo apply_filters('fluentform/rendering_field_html_' . $elementName, $html, $data, $form);
121
+
}
122
+
123
+
private function pushScripts($data, $form)
124
+
{
125
+
126
+
// We can add assets for this field
127
+
wp_enqueue_style('pickr');
128
+
wp_enqueue_script('pickr');
129
+
130
+
add_action('wp_footer', function () use ($data, $form) {
131
+
?>
132
+
<script type="text/javascript">
133
+
jQuery(document).ready(function ($) {
134
+
function initColorPicker() {
135
+
var pickr = Pickr.create({
136
+
el: '#<?php echo $data['attributes']['id']; ?>',
137
+
theme: 'monolith', // or 'monolith', or 'nano'
138
+
useAsButton: true,
139
+
swatches: null,
140
+
default: '<?php echo ($data['attributes']['value']) ? $data['attributes']['value'] : '#693030'; ?>',
141
+
comparison: false,
142
+
lockOpacity: true,
143
+
autoReposition: false,
144
+
position: 'bottom-end',
145
+
146
+
components: {
147
+
// Main components
148
+
palette: true,
149
+
preview: true,
150
+
opacity: true,
151
+
hue: true,
152
+
153
+
// Input / output Options
154
+
interaction: {
155
+
hex: false,
156
+
rgba: false,
157
+
hsla: false,
158
+
hsva: false,
159
+
cmyk: false,
160
+
input: true,
161
+
clear: true,
162
+
save: true
163
+
}
164
+
},
165
+
strings: {
166
+
save: '<?php _e('Save', 'fluentformpro');?>', // Default for save button
167
+
clear: '<?php _e('Clear', 'fluentformpro');?>', // Default for clear button
168
+
cancel: '<?php _e('Cancel', 'fluentformpro');?>' // Default for cancel button
169
+
}
170
+
});
171
+
172
+
pickr.on('save', function (color, instance) {
173
+
if(!color) {
174
+
jQuery(instance._root.button).val('');
175
+
} else {
176
+
jQuery(instance._root.button).val(color.toHEXA().toString());
177
+
}
178
+
pickr.hide();
179
+
});
180
+
}
181
+
182
+
183
+
initColorPicker();
184
+
$(document).on('reInitExtras', '.<?php echo $form->instance_css_class; ?>', function () {
185
+
initColorPicker();
186
+
});
187
+
});
188
+
</script>
189
+
<?php
190
+
}, 9999);
191
+
}
192
+
}
193
+