PluginProbe
Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) / 1.3.2
Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) v1.3.2
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.3.2, at src/Admin/Framework/fields/group/group.php

168 lines 6.3 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 'accordion_title_by' => array(),
34 'accordion_title_by_prefix' => ' ',
35 )
36 );
37
38 $title_prefix = ( ! empty( $args['accordion_title_prefix'] ) ) ? $args['accordion_title_prefix'] : '';
39 $title_number = ( ! empty( $args['accordion_title_number'] ) ) ? true : false;
40 $title_auto = ( ! empty( $args['accordion_title_auto'] ) ) ? true : false;
41 $title_first = ( isset( $this->field['fields'][0]['id'] ) ) ? $this->field['fields'][0]['id'] : $this->field['fields'][1]['id'];
42 $title_by = ( is_array( $args['accordion_title_by'] ) ) ? $args['accordion_title_by'] : (array) $args['accordion_title_by'];
43 $title_by = ( empty( $title_by ) ) ? array( $title_first ) : $title_by;
44 $title_by_prefix = ( ! empty( $args['accordion_title_by_prefix'] ) ) ? $args['accordion_title_by_prefix'] : '';
45
46 if ( preg_match( '/' . preg_quote( '[' . $this->field['id'] . ']' ) . '/', $this->unique ) ) {
47
48 echo '<div class="darkify-notice darkify-notice-danger">' . esc_html__( 'Error: Field ID conflict.', 'darkify' ) . '</div>';
49
50 } else {
51
52 echo wp_kses_post( $this->field_before() );
53
54 echo '<div class="darkify-cloneable-item darkify-cloneable-hidden" data-depend-id="' . esc_attr( $this->field['id'] ) . '">';
55
56 echo '<div class="darkify-cloneable-helper">';
57 echo '<i class="darkify-cloneable-sort icofont-expand"></i>';
58 echo '<i class="darkify-cloneable-clone far fa-clone"></i>';
59 echo '<i class="darkify-cloneable-remove darkify-confirm fas fa-times" data-confirm="' . esc_html__( 'Are you sure to delete this item?', 'darkify' ) . '"></i>';
60 echo '</div>';
61
62 echo '<h4 class="darkify-cloneable-title">';
63 echo '<span class="darkify-cloneable-text">';
64 echo ( $title_number ) ? '<span class="darkify-cloneable-title-number"></span>' : '';
65 echo ( $title_prefix ) ? '<span class="darkify-cloneable-title-prefix">' . esc_attr( $title_prefix ) . '</span>' : '';
66 echo ( $title_auto ) ? '<span class="darkify-cloneable-value"><span class="darkify-cloneable-placeholder"></span></span>' : '';
67 echo '</span>';
68 echo '</h4>';
69
70 echo '<div class="darkify-cloneable-content">';
71 foreach ( $this->field['fields'] as $field ) {
72
73 $field_default = ( isset( $field['default'] ) ) ? $field['default'] : '';
74 $field_unique = ( ! empty( $this->unique ) ) ? $this->unique . '[' . $this->field['id'] . '][0]' : $this->field['id'] . '[0]';
75
76 Darkify::field( $field, $field_default, '___' . $field_unique, 'field/group' );
77
78 }
79 echo '</div>';
80
81 echo '</div>';
82
83 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'] ) . '">';
84
85 if ( ! empty( $this->value ) ) {
86
87 $num = 0;
88
89 foreach ( $this->value as $value ) {
90
91 $title = '';
92
93 if ( ! empty( $title_by ) ) {
94
95 $titles = array();
96
97 foreach ( $title_by as $title_key ) {
98 if ( isset( $value[ $title_key ] ) ) {
99 $titles[] = $value[ $title_key ];
100 }
101 }
102
103 $title = join( $title_by_prefix, $titles );
104
105 }
106
107 $title = ( is_array( $title ) ) ? reset( $title ) : $title;
108
109 echo '<div class="darkify-cloneable-item">';
110
111 echo '<div class="darkify-cloneable-helper">';
112 echo '<i class="darkify-cloneable-sort icofont-expand"></i>';
113 echo '<i class="darkify-cloneable-clone far fa-clone"></i>';
114 echo '<i class="darkify-cloneable-remove darkify-confirm fas fa-times" data-confirm="' . esc_html__( 'Are you sure to delete this item?', 'darkify' ) . '"></i>';
115 echo '</div>';
116
117 echo '<h4 class="darkify-cloneable-title">';
118 echo '<span class="darkify-cloneable-text">';
119 echo ( $title_number ) ? '<span class="darkify-cloneable-title-number">' . esc_attr( $num + 1 ) . '.</span>' : '';
120 echo ( $title_prefix ) ? '<span class="darkify-cloneable-title-prefix">' . esc_attr( $title_prefix ) . '</span>' : '';
121 echo ( $title_auto ) ? '<span class="darkify-cloneable-value">' . esc_attr( $title ) . '</span>' : '';
122 echo '</span>';
123 echo '</h4>';
124
125 echo '<div class="darkify-cloneable-content">';
126
127 foreach ( $this->field['fields'] as $field ) {
128
129 $field_unique = ( ! empty( $this->unique ) ) ? $this->unique . '[' . $this->field['id'] . '][' . $num . ']' : $this->field['id'] . '[' . $num . ']';
130 $field_value = ( isset( $field['id'] ) && isset( $value[ $field['id'] ] ) ) ? $value[ $field['id'] ] : '';
131
132 Darkify::field( $field, $field_value, $field_unique, 'field/group' );
133
134 }
135
136 echo '</div>';
137
138 echo '</div>';
139
140 ++$num;
141
142 }
143 }
144
145 echo '</div>';
146
147 echo '<div class="darkify-cloneable-alert darkify-cloneable-max">' . esc_html__( 'You cannot add more.', 'darkify' ) . '</div>';
148 echo '<div class="darkify-cloneable-alert darkify-cloneable-min">' . esc_html__( 'You cannot remove more.', 'darkify' ) . '</div>';
149 echo '<a href="#" class="button button-primary darkify-cloneable-add">' . esc_html( $args['button_title'] ) . '</a>';
150
151 echo wp_kses_post( $this->field_after() );
152
153 }
154 }
155
156 public function enqueue() {
157
158 if ( ! wp_script_is( 'jquery-ui-accordion' ) ) {
159 wp_enqueue_script( 'jquery-ui-accordion' );
160 }
161
162 if ( ! wp_script_is( 'jquery-ui-sortable' ) ) {
163 wp_enqueue_script( 'jquery-ui-sortable' );
164 }
165 }
166 }
167 }
168