174 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
// vars
 | 
						|
$disabled = false;
 | 
						|
 | 
						|
// empty
 | 
						|
if ( empty( $field['conditional_logic'] ) ) {
 | 
						|
 | 
						|
	$disabled                   = true;
 | 
						|
	$field['conditional_logic'] = array(
 | 
						|
 | 
						|
		// group 0
 | 
						|
		array(
 | 
						|
 | 
						|
			// rule 0
 | 
						|
			array(),
 | 
						|
		),
 | 
						|
	);
 | 
						|
}
 | 
						|
 | 
						|
?>
 | 
						|
<div class="acf-field acf-field-true-false acf-field-setting-conditional_logic" data-type="true_false" data-name="conditional_logic">
 | 
						|
	<div class="acf-conditional-toggle">
 | 
						|
		<div class="acf-label">
 | 
						|
			<?php $acf_label_for = acf_idify( $field['prefix'] . '[conditional_logic]' ); ?>
 | 
						|
			<label for="<?php echo esc_attr( $acf_label_for ); ?>"><?php _e( 'Conditional Logic', 'acf' ); ?></label>
 | 
						|
		</div>
 | 
						|
		<div class="acf-input">
 | 
						|
			<?php
 | 
						|
 | 
						|
			acf_render_field(
 | 
						|
				array(
 | 
						|
					'type'   => 'true_false',
 | 
						|
					'name'   => 'conditional_logic',
 | 
						|
					'prefix' => $field['prefix'],
 | 
						|
					'value'  => $disabled ? 0 : 1,
 | 
						|
					'ui'     => 1,
 | 
						|
					'class'  => 'conditions-toggle',
 | 
						|
				)
 | 
						|
			);
 | 
						|
 | 
						|
			?>
 | 
						|
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
	<div class="rule-groups" <?php if ( $disabled ) echo ' style="display:none"'; ?>>
 | 
						|
		<?php
 | 
						|
		foreach ( $field['conditional_logic'] as $group_id => $group ) :
 | 
						|
 | 
						|
			// validate
 | 
						|
			if ( empty( $group ) ) {
 | 
						|
				continue;
 | 
						|
			}
 | 
						|
 | 
						|
 | 
						|
			// vars
 | 
						|
			// $group_id must be completely different to $rule_id to avoid JS issues
 | 
						|
			$group_id = "group_{$group_id}";
 | 
						|
			$h4       = ( $group_id == 'group_0' ) ? __( 'Show this field if', 'acf' ) : __( 'or', 'acf' );
 | 
						|
 | 
						|
			?>
 | 
						|
			<div class="rule-group" data-id="<?php echo $group_id; ?>">
 | 
						|
 | 
						|
				<h4><?php echo $h4; ?></h4>
 | 
						|
 | 
						|
				<table class="acf-table -clear">
 | 
						|
					<tbody>
 | 
						|
					<?php
 | 
						|
					foreach ( $group as $rule_id => $rule ) :
 | 
						|
 | 
						|
						// valid rule
 | 
						|
						$rule = wp_parse_args(
 | 
						|
							$rule,
 | 
						|
							array(
 | 
						|
								'field'    => '',
 | 
						|
								'operator' => '',
 | 
						|
								'value'    => '',
 | 
						|
							)
 | 
						|
						);
 | 
						|
 | 
						|
 | 
						|
						// vars
 | 
						|
						// $group_id must be completely different to $rule_id to avoid JS issues
 | 
						|
						$rule_id = "rule_{$rule_id}";
 | 
						|
						$prefix  = "{$field['prefix']}[conditional_logic][{$group_id}][{$rule_id}]";
 | 
						|
 | 
						|
						// data attributes
 | 
						|
						$attributes = array(
 | 
						|
							'data-id'       => $rule_id,
 | 
						|
							'data-field'    => $rule['field'],
 | 
						|
							'data-operator' => $rule['operator'],
 | 
						|
							'data-value'    => $rule['value'],
 | 
						|
						);
 | 
						|
 | 
						|
						?>
 | 
						|
						<tr class="rule" <?php echo acf_esc_attrs( $attributes ); ?>>
 | 
						|
							<td class="param">
 | 
						|
								<?php
 | 
						|
 | 
						|
								acf_render_field(
 | 
						|
									array(
 | 
						|
										'type'     => 'select',
 | 
						|
										'prefix'   => $prefix,
 | 
						|
										'name'     => 'field',
 | 
						|
										'class'    => 'condition-rule-field',
 | 
						|
										'disabled' => $disabled,
 | 
						|
										'value'    => $rule['field'],
 | 
						|
										'choices'  => array(
 | 
						|
											$rule['field'] => $rule['field'],
 | 
						|
										),
 | 
						|
									)
 | 
						|
								);
 | 
						|
 | 
						|
								?>
 | 
						|
							</td>
 | 
						|
							<td class="operator">
 | 
						|
								<?php
 | 
						|
 | 
						|
								acf_render_field(
 | 
						|
									array(
 | 
						|
										'type'     => 'select',
 | 
						|
										'prefix'   => $prefix,
 | 
						|
										'name'     => 'operator',
 | 
						|
										'class'    => 'condition-rule-operator',
 | 
						|
										'disabled' => $disabled,
 | 
						|
										'value'    => $rule['operator'],
 | 
						|
										'choices'  => array(
 | 
						|
											$rule['operator'] => $rule['operator'],
 | 
						|
										),
 | 
						|
									)
 | 
						|
								);
 | 
						|
 | 
						|
								?>
 | 
						|
							</td>
 | 
						|
							<td class="value">
 | 
						|
								<?php
 | 
						|
 | 
						|
								// create field
 | 
						|
								acf_render_field(
 | 
						|
									array(
 | 
						|
										'type'     => 'select',
 | 
						|
										'prefix'   => $prefix,
 | 
						|
										'name'     => 'value',
 | 
						|
										'class'    => 'condition-rule-value',
 | 
						|
										'disabled' => $disabled,
 | 
						|
										'value'    => $rule['value'],
 | 
						|
										'choices'  => array(
 | 
						|
											$rule['value'] => $rule['value'],
 | 
						|
										),
 | 
						|
									)
 | 
						|
								);
 | 
						|
 | 
						|
								?>
 | 
						|
							</td>
 | 
						|
							<td class="add">
 | 
						|
								<a href="#" class="button add-conditional-rule"><?php _e( 'and', 'acf' ); ?></a>
 | 
						|
							</td>
 | 
						|
							<td class="remove">
 | 
						|
								<a href="#" class="acf-icon -minus remove-conditional-rule"></a>
 | 
						|
							</td>
 | 
						|
							</tr>
 | 
						|
						<?php endforeach; ?>
 | 
						|
					</tbody>
 | 
						|
				</table>
 | 
						|
 | 
						|
			</div>
 | 
						|
		<?php endforeach; ?>
 | 
						|
 | 
						|
		<h4><?php _e( 'or', 'acf' ); ?></h4>
 | 
						|
 | 
						|
		<a href="#" class="button add-conditional-group"><?php _e( 'Add rule group', 'acf' ); ?></a>
 | 
						|
	</div>							
 | 
						|
</div>
 |