PluginProbe
Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) / 1.4.8
Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) v1.4.8
2.1.3 2.1.2 2.1.1 2.1.0 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0 1.5.5 1.5.4 1.5.3 1.5.2 1.5.1 1.5.0 trunk 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 All 57 releases
darkify / src / Admin / Framework / fields / group / group.php

group.php in Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) 1.4.8, at src/Admin/Framework/fields/group/group.php

170 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use ThemeAtelier\Darkify\Admin\Framework\Classes\Darkify;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 die; } // Cannot access directly.
7 /**
8 *
9 * Field: group
10 *
11 * @since 1.0.0
12 * @version 1.0.0
13 */
14 if ( ! class_exists( 'DarkifyField_group' ) ) {
15 class DarkifyField_group extends DarkifyFields {
16
17 public function __construct( $field, $value = '', $unique = '', $where = '', $parent = '' ) {
18 parent::__construct( $field, $value, $unique, $where, $parent );
19 }
20
21 public function render() {
22
23 $args = wp_parse_args(
24 $this->field,
25 array(
26 'max' => 0,
27 'min' => 0,
28 'fields' => array(),
29 'button_title' => esc_html__( 'Add New', 'darkify' ),
30 'accordion_title_prefix' => '',
31 'accordion_title_number' => false,
32 'accordion_title_auto' => true,
33 'add_more_text' => esc_html__('You cannot add more.', 'darkify'),
34 'remove_more_text' => esc_html__('You cannot remove more.', 'darkify'),
35 'accordion_title_by' => array(),
36 'accordion_title_by_prefix' => ' ',
37 )
38 );
39
40 $title_prefix = ( ! empty( $args['accordion_title_prefix'] ) ) ? $args['accordion_title_prefix'] : '';
41 $title_number = ( ! empty( $args['accordion_title_number'] ) ) ? true : false;
42 $title_auto = ( ! empty( $args['accordion_title_auto'] ) ) ? true : false;
43 $title_first = ( isset( $this->field['fields'][0]['id'] ) ) ? $this->field['fields'][0]['id'] : $this->field['fields'][1]['id'];
44 $title_by = ( is_array( $args['accordion_title_by'] ) ) ? $args['accordion_title_by'] : (array) $args['accordion_title_by'];
45 $title_by = ( empty( $title_by ) ) ? array( $title_first ) : $title_by;
46 $title_by_prefix = ( ! empty( $args['accordion_title_by_prefix'] ) ) ? $args['accordion_title_by_prefix'] : '';
47
48 if ( preg_match( '/' . preg_quote( '[' . $this->field['id'] . ']' ) . '/', $this->unique ) ) {
49
50 echo '<div class="darkify-notice darkify-notice-danger">' . esc_html__( 'Error: Field ID conflict.', 'darkify' ) . '</div>';
51
52 } else {
53
54 echo wp_kses_post( $this->field_before() );
55
56 echo '<div class="darkify-cloneable-item darkify-cloneable-hidden" data-depend-id="' . esc_attr( $this->field['id'] ) . '">';
57
58 echo '<div class="darkify-cloneable-helper">';
59 echo '<i class="darkify-cloneable-sort icofont-expand"></i>';
60 echo '<i class="darkify-cloneable-clone icofont-copy-invert"></i>';
61 echo '<i class="darkify-cloneable-remove darkify-confirm icofont-close" data-confirm="' . esc_html__( 'Are you sure to delete this item?', 'darkify' ) . '"></i>';
62 echo '</div>';
63
64 echo '<h4 class="darkify-cloneable-title">';
65 echo '<span class="darkify-cloneable-text">';
66 echo ( $title_number ) ? '<span class="darkify-cloneable-title-number"></span>' : '';
67 echo ( $title_prefix ) ? '<span class="darkify-cloneable-title-prefix">' . esc_attr( $title_prefix ) . '</span>' : '';
68 echo ( $title_auto ) ? '<span class="darkify-cloneable-value"><span class="darkify-cloneable-placeholder"></span></span>' : '';
69 echo '</span>';
70 echo '</h4>';
71
72 echo '<div class="darkify-cloneable-content">';
73 foreach ( $this->field['fields'] as $field ) {
74
75 $field_default = ( isset( $field['default'] ) ) ? $field['default'] : '';
76 $field_unique = ( ! empty( $this->unique ) ) ? $this->unique . '[' . $this->field['id'] . '][0]' : $this->field['id'] . '[0]';
77
78 Darkify::field( $field, $field_default, '___' . $field_unique, 'field/group' );
79
80 }
81 echo '</div>';
82
83 echo '</div>';
84
85 echo '<div class="darkify-cloneable-wrapper darkify-data-wrapper" data-title-by="' . esc_attr( wp_json_encode( $title_by ) ) . '" data-title-by-prefix="' . esc_attr( $title_by_prefix ) . '" data-title-number="' . esc_attr( $title_number ) . '" data-field-id="[' . esc_attr( $this->field['id'] ) . ']" data-max="' . esc_attr( $args['max'] ) . '" data-min="' . esc_attr( $args['min'] ) . '">';
86
87 if ( ! empty( $this->value ) ) {
88
89 $num = 0;
90
91 foreach ( $this->value as $value ) {
92
93 $title = '';
94
95 if ( ! empty( $title_by ) ) {
96
97 $titles = array();
98
99 foreach ( $title_by as $title_key ) {
100 if ( isset( $value[ $title_key ] ) ) {
101 $titles[] = $value[ $title_key ];
102 }
103 }
104
105 $title = join( $title_by_prefix, $titles );
106
107 }
108
109 $title = ( is_array( $title ) ) ? reset( $title ) : $title;
110
111 echo '<div class="darkify-cloneable-item">';
112
113 echo '<div class="darkify-cloneable-helper">';
114 echo '<i class="darkify-cloneable-sort icofont-expand"></i>';
115 echo '<i class="darkify-cloneable-clone icofont-copy-invert"></i>';
116 echo '<i class="darkify-cloneable-remove darkify-confirm icofont-close" data-confirm="' . esc_html__( 'Are you sure to delete this item?', 'darkify' ) . '"></i>';
117 echo '</div>';
118
119 echo '<h4 class="darkify-cloneable-title">';
120 echo '<span class="darkify-cloneable-text">';
121 echo ( $title_number ) ? '<span class="darkify-cloneable-title-number">' . esc_attr( $num + 1 ) . '.</span>' : '';
122 echo ( $title_prefix ) ? '<span class="darkify-cloneable-title-prefix">' . esc_attr( $title_prefix ) . '</span>' : '';
123 echo ( $title_auto ) ? '<span class="darkify-cloneable-value">' . esc_attr( $title ) . '</span>' : '';
124 echo '</span>';
125 echo '</h4>';
126
127 echo '<div class="darkify-cloneable-content">';
128
129 foreach ( $this->field['fields'] as $field ) {
130
131 $field_unique = ( ! empty( $this->unique ) ) ? $this->unique . '[' . $this->field['id'] . '][' . $num . ']' : $this->field['id'] . '[' . $num . ']';
132 $field_value = ( isset( $field['id'] ) && isset( $value[ $field['id'] ] ) ) ? $value[ $field['id'] ] : '';
133
134 Darkify::field( $field, $field_value, $field_unique, 'field/group' );
135
136 }
137
138 echo '</div>';
139
140 echo '</div>';
141
142 ++$num;
143
144 }
145 }
146
147 echo '</div>';
148
149 echo '<div class="darkify-cloneable-alert darkify-cloneable-max">'. wp_kses_post($args['add_more_text']) .'</div>';
150 echo '<div class="darkify-cloneable-alert darkify-cloneable-min">'. esc_html($args['remove_more_text']) .'</div>';
151 echo '<a href="#" class="button button-primary darkify-cloneable-add">' . esc_html( $args['button_title'] ) . '</a>';
152
153 echo wp_kses_post( $this->field_after() );
154
155 }
156 }
157
158 public function enqueue() {
159
160 if ( ! wp_script_is( 'jquery-ui-accordion' ) ) {
161 wp_enqueue_script( 'jquery-ui-accordion' );
162 }
163
164 if ( ! wp_script_is( 'jquery-ui-sortable' ) ) {
165 wp_enqueue_script( 'jquery-ui-sortable' );
166 }
167 }
168 }
169 }
170