web/wp-content/plugins/acf-extended/includes/fields/field-flexible-content-edit.php (218 lines of code) (raw):

<?php if(!defined('ABSPATH')){ exit; } if(!class_exists('acfe_field_flexible_content_edit')): class acfe_field_flexible_content_edit{ /** * construct */ function __construct(){ // Hooks add_filter('acfe/flexible/defaults_field', array($this, 'defaults_field'), 9); add_filter('acfe/flexible/defaults_layout', array($this, 'defaults_layout'), 9); add_action('acfe/flexible/render_field_settings', array($this, 'render_field_settings'), 9); add_action('acfe/flexible/render_layout_settings', array($this, 'render_layout_settings'), 19, 3); add_filter('acfe/flexible/validate_field', array($this, 'validate_edit')); add_filter('acfe/flexible/wrapper_attributes', array($this, 'wrapper_attributes'), 10, 2); add_action('acfe/flexible/pre_render_layout', array($this, 'pre_render_layout'), 5, 5); add_action('acfe/flexible/render_layout', array($this, 'render_layout'), 20, 5); add_filter('acfe/flexible/layouts/div', array($this, 'layout_div'), 10, 3); add_filter('acfe/flexible/layouts/icons', array($this, 'layout_icons'), 50, 3); add_filter('acfe/flexible/layouts/handle', array($this, 'layout_handle'), 10, 3); add_filter('acfe/flexible/layouts/placeholder', array($this, 'layout_handle'), 10, 3); } /** * defaults_field * * @param $field * * @return mixed */ function defaults_field($field){ $field['acfe_flexible_modal_edit'] = array( 'acfe_flexible_modal_edit_enabled' => false, 'acfe_flexible_modal_edit_size' => 'large', ); return $field; } /** * defaults_layout * * @param $layout * * @return mixed */ function defaults_layout($layout){ $layout['acfe_flexible_modal_edit_size'] = false; return $layout; } /** * render_field_settings * * @param $field */ function render_field_settings($field){ acf_render_field_setting($field, array( 'label' => __('Edit Modal', 'acfe'), 'name' => 'acfe_flexible_modal_edit', 'key' => 'acfe_flexible_modal_edit', 'instructions' => __('Edit layout content in a modal', 'acfe') . '. ' . '<a href="https://www.acf-extended.com/features/fields/flexible-content/modal-settings#edit-modal" target="_blank">' . __('See documentation', 'acfe') . '</a>', 'type' => 'group', 'layout' => 'block', 'sub_fields' => array( array( 'label' => '', 'name' => 'acfe_flexible_modal_edit_enabled', 'key' => 'acfe_flexible_modal_edit_enabled', 'type' => 'true_false', 'instructions' => '', 'required' => false, 'wrapper' => array( 'class' => 'acfe_width_auto', 'id' => '', ), 'message' => '', 'default_value' => false, 'ui' => true, 'ui_on_text' => '', 'ui_off_text' => '', 'conditional_logic' => false, ), array( 'label' => '', 'name' => 'acfe_flexible_modal_edit_size', 'key' => 'acfe_flexible_modal_edit_size', 'type' => 'select', 'prepend' => '', 'instructions' => false, 'required' => false, 'choices' => array( 'small' => 'Small', 'medium' => 'Medium', 'large' => 'Large', 'xlarge' => 'Extra Large', 'full' => 'Full', ), 'default_value' => 'large', 'wrapper' => array( 'width' => '25', 'class' => '', 'id' => '', 'data-acfe-prepend' => 'Size', ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_modal_edit_enabled', 'operator' => '==', 'value' => '1', ) ) ) ), ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_advanced', 'operator' => '==', 'value' => '1', ), ) ), 'wrapper' => array( 'class' => 'acfe-field-setting-flex' ) )); } /** * render_layout_settings * * @param $field * @param $layout * @param $prefix */ function render_layout_settings($field, $layout, $prefix){ if(!$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return; } // Title echo '</li>'; acf_render_field_wrap(array( 'label' => __('Modal settings', 'acfe'), 'type' => 'hidden', 'name' => 'acfe_flexible_modal_edit_label', 'wrapper' => array( 'class' => 'acfe-flexible-field-setting', ) ), 'ul'); echo '<li>'; acf_render_field_wrap(array( 'label' => '', 'name' => 'acfe_flexible_modal_edit_size', 'type' => 'select', 'class' => '', 'prefix' => $prefix, 'value' => $layout['acfe_flexible_modal_edit_size'], 'placeholder' => 'Default', 'choices' => array( 'small' => 'Small', 'medium' => 'Medium', 'large' => 'Large', 'xlarge' => 'Extra Large', 'full' => 'Full', ), 'wrapper' => array( 'width' => '100', 'data-acfe-prepend' => 'Modal size', ), 'default_value' => '', 'allow_null' => 1, 'multiple' => 0, 'ui' => 0, 'ajax' => 0, 'return_format' => 0, ), 'ul'); } /** * validate_edit * * @param $field * * @return array|mixed */ function validate_edit($field){ if(!isset($field['acfe_flexible_modal_edition'])){ return $field; } $field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled'] = $field['acfe_flexible_modal_edition']; unset($field['acfe_flexible_modal_edition']); return $field; } /** * wrapper_attributes * * @param $wrapper * @param $field * * @return mixed */ function wrapper_attributes($wrapper, $field){ // check setting if(!$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return $wrapper; } $wrapper['data-acfe-flexible-modal-edition'] = 1; return $wrapper; } /** * pre_render_layout * * @param $layout * @param $field * @param $i * @param $value * @param $prefix */ function pre_render_layout($layout, $field, $i, $value, $prefix){ if(empty($layout['sub_fields']) || !$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return; } // modal $modal = array( 'class' => "acfe-modal -fields acfe-modal-edit-{$field['_name']} acfe-modal-edit-{$field['key']} acfe-modal-edit-{$layout['name']}", 'data-size' => $field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_size'], ); if(!empty($layout['acfe_flexible_modal_edit_size'])){ $modal['data-size'] = $layout['acfe_flexible_modal_edit_size']; } if(in_array('close', $field['acfe_flexible_add_actions'])){ $modal['data-footer'] = __('Close', 'acfe'); } ?> <div <?php echo acf_esc_atts($modal); ?>> <div class="acfe-modal-wrapper"> <div class="acfe-modal-content"> <?php } /** * render_layout * * @param $layout * @param $field * @param $i * @param $value * @param $prefix */ function render_layout($layout, $field, $i, $value, $prefix){ if(empty($layout['sub_fields']) || !$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return; } ?> </div> </div> </div> <?php } /** * layout_div * * @param $div * @param $layout * @param $field * * @return mixed */ function layout_div($div, $layout, $field){ if(!$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return $div; } // Already in class if(in_array('-collapsed', explode(' ', $div['class']))){ return $div; } $div['class'] .= ' -collapsed'; return $div; } /** * layout_icons * * @param $icons * @param $layout * @param $field * * @return mixed */ function layout_icons($icons, $layout, $field){ if(!$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return $icons; } acfe_unset($icons, 'collapse'); return $icons; } /** * layout_handle * * @param $handle * @param $layout * @param $field * * @return mixed */ function layout_handle($handle, $layout, $field){ if(!$field['acfe_flexible_modal_edit']['acfe_flexible_modal_edit_enabled']){ return $handle; } $handle['data-action'] = 'acfe-flexible-modal-edit'; return $handle; } } acf_new_instance('acfe_field_flexible_content_edit'); endif;