class-ld-settings-fields-select-edit-delete.php
4.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
/**
* LearnDash Select with Edit and Delete Settings Field.
*
* @since 3.0.0
* @package LearnDash\Settings\Field
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ( class_exists( 'LearnDash_Settings_Fields' ) ) && ( ! class_exists( 'LearnDash_Settings_Fields_Select_Edit_Delete' ) ) ) {
/**
* Class LearnDash Select with Edit and Delete Settings Field.
*
* @since 3.0.0
* @uses LearnDash_Settings_Fields
*/
class LearnDash_Settings_Fields_Select_Edit_Delete extends LearnDash_Settings_Fields {
/**
* Public constructor for class
*
* @since 3.0.0
*/
public function __construct() {
$this->field_type = 'select-edit-delete';
parent::__construct();
}
/**
* Function to crete the settings field.
*
* @since 3.0.0
*
* @param array $field_args An array of field arguments used to process the output.
* @return void
*/
public function create_section_field( $field_args = array() ) {
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$field_args = apply_filters( 'learndash_settings_field', $field_args );
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_before', '', $field_args );
if ( ( isset( $field_args['options'] ) ) && ( ! empty( $field_args['options'] ) ) ) {
$field_id_base = $this->get_field_attribute_id( $field_args, false );
$field_class_base = $this->get_field_attribute_class( $field_args, false );
$html .= '<select ';
$html .= $this->get_field_attribute_type( $field_args );
$html .= $this->get_field_attribute_name( $field_args );
$html .= ' id="' . esc_attr( $field_id_base ) . '_select" ';
$html .= $this->get_field_attribute_class( $field_args );
$html .= $this->get_field_attribute_misc( $field_args );
$html .= $this->get_field_attribute_required( $field_args );
$html .= '" ';
$html .= ' >';
foreach ( $field_args['options'] as $option_key => $option_label ) {
$html .= '<option value="' . esc_attr( $option_key ) . '" ' . selected( $option_key, $field_args['value'], false ) . '>' . wp_kses_post( $option_label ) . '</option>';
}
$html .= '</select>';
$ajax_data = array(
'action' => $field_args['setting_option_key'],
'field_key' => $field_args['setting_option_key'],
'field_nonce' => wp_create_nonce( $field_args['setting_option_key'] ),
);
$html .= '<input class="ajax_data" type="hidden" data-ajax="' . htmlspecialchars( wp_json_encode( $ajax_data, JSON_FORCE_OBJECT ) ) . '" />';
$html .= '<div class="ld-setting-field-sub">
<input disabled="disabled" type="text" value="" id="' . esc_attr( $field_id_base ) . '_input" name="' . esc_attr( $field_id_base ) . '_input" class="medium-text ld-settings-field-input" />
</div>';
if ( ( isset( $field_args['buttons'] ) ) && ( ! empty( $field_args['buttons'] ) ) ) {
$html .= '<div class="ld-setting-field-sub">';
foreach ( $field_args['buttons'] as $button_key => $button_label ) {
// cspell:disable-next-line.
$html .= '<input type="button" disabled="disabled" value="' . esc_attr( $button_label ) . '" class="button-secondary ld-settings-fiels-button" data-action="' . esc_attr( $button_key ) . '" />';
}
// Add spinner field to be shown during the AJAX processing.
$html .= '<span class="spinner"></span>';
$html .= '</div>'; // end of setting-field-sub.
// Add an update message holder. This will be filled in with the updated message after the AJAX processing.
$html .= '<div class="message" style="display:none"></div>';
}
}
/** This filter is documented in includes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.php */
$html = apply_filters( 'learndash_settings_field_html_after', $html, $field_args );
echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Need to output HTML
}
}
}
add_action(
'learndash_settings_sections_fields_init',
function() {
LearnDash_Settings_Fields_Select_Edit_Delete::add_field_instance( 'select-edit-delete' );
}
);