hueman/functions/czr/controls/class-multipicker-control.php
2016-05-06 11:38:21 +02:00

116 lines
No EOL
3.9 KiB
PHP

<?php
/**************************************************************************************************
* MULTIPICKER CLASSES
***************************************************************************************************/
if ( ! class_exists( 'HU_Customize_Multipicker_Control' ) ) :
/**
* Customize Multi-picker Control Class
*
* @package WordPress
* @subpackage Customize
* @since 3.4.10
*/
abstract class HU_Customize_Multipicker_Control extends HU_controls {
public function render_content() {
if ( ! $this -> type ) return;
do_action( '__before_setting_control' , $this -> id );
$dropdown = $this -> hu_get_dropdown_multipicker();
if ( empty( $dropdown ) ) return;
$dropdown = str_replace( '<select', '<select multiple="multiple"' . $this->get_link(), $dropdown );
//start rendering
if (!empty( $this->title)) :
?>
<h3 class="czr-customizr-title"><?php echo esc_html( $this->title); ?></h3>
<?php endif; ?>
<label>
<span class="customize-control-title"><?php echo $this->label; ?></span>
<?php echo $dropdown; ?>
<?php if(!empty( $this -> notice)) : ?>
<span class="czr-notice"><?php echo $this -> notice ?></span>
<?php endif; ?>
</label>
<?php
do_action( '__after_setting_control' , $this -> id );
}
//to define in the extended classes
abstract public function hu_get_dropdown_multipicker();
}//end class
endif;
if ( ! class_exists( 'HU_Customize_Multipicker_Categories_Control' ) ) :
class HU_Customize_Multipicker_Categories_Control extends HU_Customize_Multipicker_Control {
public function hu_get_dropdown_multipicker() {
$cats_dropdown = wp_dropdown_categories(
array(
'name' => '_customize-'.$this->type,
'id' => $this -> id,
//hide empty, set it to false to avoid complains
'hide_empty' => 0 ,
'echo' => 0 ,
'walker' => new HU_Walker_CategoryDropdown_Multipicker(),
'hierarchical' => 1,
'class' => 'select2 '.$this->type,
'selected' => implode(',', $this->value() )
)
);
return $cats_dropdown;
}
}
endif;
/**
* @ dropdown multi-select walker
* Create HTML dropdown list of Categories.
*
* @package WordPress
* @since 2.1.0
* @uses Walker
*
* we need to allow more than one "selected" attribute
*/
if ( ! class_exists( 'HU_Walker_CategoryDropdown_Multipicker' ) ) :
class HU_Walker_CategoryDropdown_Multipicker extends Walker_CategoryDropdown {
/**
* Start the element output.
*
* @Override
*
* @see Walker::start_el()
*
* @param string $output Passed by reference. Used to append additional content.
* @param object $category Category data object.
* @param int $depth Depth of category. Used for padding.
* @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist.
* See {@see wp_dropdown_categories()}.
*/
public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
$pad = str_repeat('&mdash;', $depth );
/** This filter is documented in wp-includes/category-template.php */
$cat_name = apply_filters( 'list_cats', $category->name, $category );
$value_field = 'term_id';
$output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $category->{$value_field} ) . "\"";
//Treat selected arg as array
if ( in_array( (string) $category->{$value_field}, explode( ',', $args['selected'] ) ) )
$output .= ' selected="selected"';
$output .= '>';
$output .= $pad.$cat_name;
if ( $args['show_count'] )
$output .= '&nbsp;&nbsp;('. number_format_i18n( $category->count ) .')';
$output .= "</option>\n";
}
}
endif;