false, 'acfe_flexible_modal_title' => false, 'acfe_flexible_modal_size' => 'xlarge', 'acfe_flexible_modal_col' => '4', 'acfe_flexible_modal_categories' => false, ); return $field; } /** * defaults_layout * * @param $layout * * @return mixed */ function defaults_layout($layout){ $layout['acfe_flexible_category'] = false; return $layout; } /** * render_field_settings * * @param $field */ function render_field_settings($field){ acf_render_field_setting($field, array( 'label' => __('Select Modal', 'acfe'), 'name' => 'acfe_flexible_modal', 'key' => 'acfe_flexible_modal', 'instructions' => __('Select layouts in a modal', 'acfe') . '. ' . '' . __('See documentation', 'acfe') . '', 'type' => 'group', 'layout' => 'block', 'sub_fields' => array( array( 'label' => '', 'name' => 'acfe_flexible_modal_enabled', 'key' => 'acfe_flexible_modal_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_title', 'key' => 'acfe_flexible_modal_title', 'type' => 'text', 'prepend' => __('Modal Title', 'acfe'), 'placeholder' => $field['button_label'], 'instructions' => false, 'required' => false, 'wrapper' => array( 'width' => '25', 'class' => '', 'id' => '', ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_modal_enabled', 'operator' => '==', 'value' => '1', ) ) ) ), array( 'label' => '', 'name' => 'acfe_flexible_modal_size', 'key' => 'acfe_flexible_modal_size', 'type' => 'select', 'prepend' => '', 'instructions' => false, 'required' => false, 'choices' => array( 'small' => __('Small', 'acfe'), 'medium' => __('Medium', 'acfe'), 'large' => __('Large', 'acfe'), 'xlarge' => __('Extra Large', 'acfe'), 'full' => __('Full', 'acfe'), ), 'default_value' => 'large', 'wrapper' => array( 'width' => '25', 'class' => '', 'id' => '', 'data-acfe-prepend' => __('Size', 'acfe'), ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_modal_enabled', 'operator' => '==', 'value' => '1', ) ) ) ), array( 'label' => '', 'name' => 'acfe_flexible_modal_col', 'key' => 'acfe_flexible_modal_col', 'type' => 'select', 'prepend' => '', 'instructions' => false, 'required' => false, 'choices' => array( '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', ), 'default_value' => '4', 'wrapper' => array( 'width' => '15', 'class' => '', 'id' => '', 'data-acfe-prepend' => __('Cols', 'acfe'), ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_modal_enabled', 'operator' => '==', 'value' => '1', ) ) ) ), array( 'label' => '', 'name' => 'acfe_flexible_modal_categories', 'key' => 'acfe_flexible_modal_categories', 'type' => 'select', 'prepend' => '', 'instructions' => false, 'required' => false, 'choices' => array( '1' => __('Enabled', 'acfe'), ), 'default_value' => '', 'allow_null' => true, 'placeholder' => __('Disabled', 'acfe'), 'wrapper' => array( 'width' => '25', 'class' => '', 'id' => '', 'data-acfe-prepend' => __('Categories', 'acfe'), ), 'conditional_logic' => array( array( array( 'field' => 'acfe_flexible_modal_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']['acfe_flexible_modal_categories']){ return; } // Title echo ''; acf_render_field_wrap(array( 'label' => __('Select Modal', 'acfe'), 'type' => 'hidden', 'name' => 'acfe_flexible_grid_label', 'wrapper' => array( 'class' => 'acfe-flexible-field-setting', ) ), 'ul'); echo '
  • '; acf_render_field_wrap(array( 'prepend' => __('Category', 'acfe'), 'name' => 'acfe_flexible_category', 'type' => 'select', 'ui' => 1, 'multiple' => 1, 'allow_custom' => 1, 'class' => 'acf-fc-meta-name', 'prefix' => $prefix, 'value' => $layout['acfe_flexible_category'], 'placeholder' => __('Enter category', 'acfe'), 'wrapper' => array( 'data-acfe-prepend' => 'Categories', ), ), 'ul'); } /** * wrapper_attributes * * @param $wrapper * @param $field * * @return mixed */ function wrapper_attributes($wrapper, $field){ if(!$field['acfe_flexible_modal']['acfe_flexible_modal_enabled']){ return $wrapper; } // modal settings $wrapper['data-acfe-flexible-modal'] = 1; $wrapper['data-acfe-flexible-modal-col'] = $field['acfe_flexible_modal']['acfe_flexible_modal_col']; $wrapper['data-acfe-flexible-modal-size'] = $field['acfe_flexible_modal']['acfe_flexible_modal_size']; $wrapper['data-acfe-flexible-modal-categories'] = $field['acfe_flexible_modal']['acfe_flexible_modal_categories']; $wrapper['data-acfe-flexible-modal-title'] = $field['button_label']; // modal title if(!empty($field['acfe_flexible_modal']['acfe_flexible_modal_title'])){ $wrapper['data-acfe-flexible-modal-title'] = $field['acfe_flexible_modal']['acfe_flexible_modal_title']; } return $wrapper; } /** * select_atts * * @param $atts * @param $layout * @param $field * * @return mixed */ function select_atts($atts, $layout, $field){ // check setting if($field['acfe_flexible_modal']['acfe_flexible_modal_categories']){ $atts['data-category'] = $this->get_layout_categories_names($layout); } // return return $atts; } /** * select_label * * @param $label * @param $layout * @param $field * * @return mixed|string */ function select_label($label, $layout, $field){ // check modal select + thumbnail if($field['acfe_flexible_modal']['acfe_flexible_modal_enabled']){ $label = "
    {$label}
    "; } return $label; } /** * render_popup_select_open_wrapper * * @param $field * * @return void */ function render_popup_select_open_wrapper($field){ // open wrapper if($field['acfe_flexible_modal']['acfe_flexible_modal_enabled']){ echo '
    '; } } /** * render_popup_select_categories * * @param $field * * @return void */ function render_popup_select_categories($field){ // categories if(!$field['acfe_flexible_modal']['acfe_flexible_modal_categories']){ return; } // wrapper filters $wrapper = array('class' => 'acfe-nav-tabs acfe-fc-categories'); $wrapper = apply_filters("acfe/flexible/modal_select_categories_wrapper", $wrapper, $field); $wrapper = apply_filters("acfe/flexible/modal_select_categories_wrapper/name={$field['_name']}", $wrapper, $field); $wrapper = apply_filters("acfe/flexible/modal_select_categories_wrapper/key={$field['key']}", $wrapper, $field); // wrapper echo '
    '; // loop categories foreach($this->get_categories($field) as $name => $category){ $atts = array( 'href' => '#', 'class' => 'acfe-nav-tab', 'data-category' => $name, ); if($name === 'acfe-all'){ $atts['class'] .= ' -active'; } echo ''; echo acf_esc_html($category); echo ''; } echo '
    '; } /** * render_popup_select_before_layouts * * @param $field * * @return void */ function render_popup_select_before_layouts($field){ // check setting if(!$field['acfe_flexible_modal']['acfe_flexible_modal_enabled']){ return; } $atts = array( 'class' => 'acfe-fc-layouts', ); // get col size $col = (int) $field['acfe_flexible_modal']['acfe_flexible_modal_col']; $atts['class'] .= " -col-{$col}"; if(!$field['acfe_flexible_layouts_thumbnails']){ $atts['class'] .= ' -no-thumbnails'; } // get col size echo '
    '; } /** * render_popup_select_close_wrapper * * @param $field * * @return void */ function render_popup_select_close_wrapper($field){ // close wrapper if($field['acfe_flexible_modal']['acfe_flexible_modal_enabled']){ echo '
    '; } } /** * get_categories * * @param $field * * @return array */ function get_categories($field){ // initial array $storage = array(); // check settings if(!$field['acfe_flexible_modal']['acfe_flexible_modal_categories']){ return $storage; } // loop layouts foreach($field['layouts'] as $layout){ // loop categories foreach($this->get_layout_categories($layout) as $name => $category){ // make sure category is unique if(!isset($storage[ $name ])){ $storage[ $name ] = $category; } } } // sort by keys alphabetically ksort($storage); // prepare categories array $categories = array( 'acfe-all' => '' . __('All Layouts', 'acfe') . '', ); // loop storage foreach($storage as $name => $category){ $categories[ $name ] = $category; } // filters $categories = apply_filters("acfe/flexible/modal_select_categories", $categories, $field); $categories = apply_filters("acfe/flexible/modal_select_categories/name={$field['_name']}", $categories, $field); $categories = apply_filters("acfe/flexible/modal_select_categories/key={$field['key']}", $categories, $field); // return return $categories; } /** * get_layout_categories * * @param $layout * * @return array */ function get_layout_categories($layout){ // get layout categories $categories = $layout['acfe_flexible_category']; // back-compatibility if(is_string($categories) && !empty($categories)){ $categories = explode('|', $categories); $categories = array_map('trim', $categories); } // sanitize $categories = acf_get_array($categories); $categories = array_filter($categories); $storage = array(); // loop categories foreach($categories as $category){ //slugify $name = sanitize_title($category); // make sure category is unique if(!isset($storage[ $name ])){ $storage[ $name ] = $category; } } // return return $storage; } /** * get_layout_categories_names * * @param $layout * * @return array */ function get_layout_categories_names($layout){ // get layout categories $layout_categories = $this->get_layout_categories($layout); $layout_categories = array_keys($layout_categories); // return return $layout_categories; } } acf_new_instance('acfe_field_flexible_content_select'); endif;