* Created on: 29/08/2018 * * @package Ordering.php */ namespace Neve\Customizer\Controls; /** * Class Ordering * * @package Neve\Customizer\Controls */ class Ordering extends \WP_Customize_Control { /** * Control type. * * @var string */ public $type = 'ordering'; /** * Orderable components. * * @var array */ private $components = array(); /** * Ordering constructor. * * @param \WP_Customize_Manager $manager Wp customize. * @param string $id control id. * @param array $args control args. */ public function __construct( \WP_Customize_Manager $manager, $id, array $args = array() ) { parent::__construct( $manager, $id, $args ); $this->components = $args['components'] ? $args['components'] : array(); $this->setup_components(); } /** * Get disabled components * Add them at the and of all components in the customizer */ private function setup_components() { $val = json_decode( $this->value(), true ); $enabled = array_combine( $val, $val ); $default_setup = $this->components; array_walk( $enabled, function ( &$value, $key ) { if ( isset( $this->components[ $key ] ) ) { $value = $this->components[ $key ]; } }, $enabled ); $disabled = array_diff_assoc( $this->components, $enabled ); $this->components = array_merge( $enabled, $disabled ); $this->components = array_intersect( $default_setup, $this->components ); } /** * Render content of control. */ public function render_content() { $this->render_control_label(); $this->render_sortable_list(); $this->render_collector_input(); } /** * Render title and description. * * @return void */ private function render_control_label() { if ( empty( $this->label ) && empty( $this->description ) ) { return; } echo ''; } /** * Render sortable list. * * @return void */ private function render_sortable_list() { if ( empty( $this->components ) ) { return; } echo '
' . esc_html( $name ) . '
'; echo ''; echo '