SwitchCheckboxOption.php
2.19 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
<?php namespace MeowCrew\RoleAndCustomerBasedPricing\Settings\CustomOptions;
use WC_Admin_Settings;
class SwitchCheckboxOption {
const FIELD_TYPE = 'ps_switch_checkbox';
public function __construct() {
add_action( 'woocommerce_admin_field_' . self::FIELD_TYPE, array( $this, 'render' ) );
add_action( 'woocommerce_admin_settings_sanitize_option', function ( $value, $option, $rawValue ) {
if ( self::FIELD_TYPE === $option['type'] ) {
$value = in_array( $value, array( 1, 'yes' ) ) ? 'yes' : 'no';
}
return $value;
}, 10, 3 );
}
public function render( $value ) {
if ( ! isset( $value['id'] ) ) {
$value['id'] = '';
}
if ( ! isset( $value['title'] ) ) {
$value['title'] = isset( $value['name'] ) ? $value['name'] : '';
}
if ( ! isset( $value['default'] ) ) {
$value['default'] = '';
}
if ( ! isset( $value['value'] ) ) {
$value['value'] = WC_Admin_Settings::get_option( $value['id'], $value['default'] );
}
if ( ! isset( $value['on_label'] ) ) {
$value['on_label'] = __( 'On', 'role-and-customer-based-pricing-for-woocommerce' );
}
if ( ! isset( $value['off_label'] ) ) {
$value['off_label'] = __( 'Off', 'role-and-customer-based-pricing-for-woocommerce' );
}
if ( ! isset( $value['desc'] ) ) {
$value['desc'] = '';
}
$option_value = $value['value'];
?>
<tr valign="top">
<th scope="row" class="titledesc">
<label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label>
</th>
<td class="forminp forminp-<?php echo esc_attr( sanitize_title( $value['type'] ) ); ?>">
<div>
<input
name="<?php echo esc_attr( $value['id'] ); ?>"
id="<?php echo esc_attr( $value['id'] ); ?>"
type="checkbox"
value="1"
<?php checked( $option_value, 'yes' ); ?>
class="rcbp-toggle-switch"
/>
<label for="<?php echo esc_attr( $value['id'] ); ?>">
<span data-rcbp-toggle-switch-on><?php echo esc_attr( $value['on_label'] ); ?></span>
<span data-rcbp-toggle-switch-off><?php echo esc_attr( $value['off_label'] ); ?></span>
</label>
</div>
<p class="description"><?php echo esc_html( $value['desc'] ); ?></p>
</td>
</tr>
<?php
}
}