kratos/inc/codestar-framework/fields/image_select/image_select.php

81 lines
2.3 KiB
PHP

<?php if (!defined('ABSPATH')) {
die;
}
/**
*
* Field: image_select
*
* @since 1.0.0
* @version 1.0.0
*
*/
if (!class_exists('CSF_Field_image_select')) {
class CSF_Field_image_select extends CSF_Fields
{
public function __construct($field, $value = '', $unique = '', $where = '', $parent = '')
{
parent::__construct($field, $value, $unique, $where, $parent);
}
public function render()
{
$args = wp_parse_args($this->field, array(
'multiple' => false,
'inline' => false,
'options' => array(),
));
$inline = ($args['inline']) ? ' csf--inline-list' : '';
$value = (is_array($this->value)) ? $this->value : array_filter((array) $this->value);
echo $this->field_before();
if (!empty($args['options'])) {
echo '<div class="csf-siblings csf--image-group' . esc_attr($inline) . '" data-multiple="' . esc_attr($args['multiple']) . '">';
$num = 1;
foreach ($args['options'] as $key => $option) {
$type = ($args['multiple']) ? 'checkbox' : 'radio';
$extra = ($args['multiple']) ? '[]' : '';
$active = (in_array($key, $value)) ? ' csf--active' : '';
$checked = (in_array($key, $value)) ? ' checked' : '';
echo '<div class="csf--sibling csf--image' . esc_attr($active) . '">';
echo '<figure>';
echo '<img src="' . esc_url($option) . '" alt="img-' . esc_attr($num++) . '" />';
echo '<input type="' . esc_attr($type) . '" name="' . esc_attr($this->field_name($extra)) . '" value="' . esc_attr($key) . '"' . $this->field_attributes() . esc_attr($checked) . '/>';
echo '</figure>';
echo '</div>';
}
echo '</div>';
}
echo $this->field_after();
}
public function output()
{
$output = '';
$bg_image = array();
$important = (!empty($this->field['output_important'])) ? '!important' : '';
$elements = (is_array($this->field['output'])) ? join(',', $this->field['output']) : $this->field['output'];
if (!empty($elements) && isset($this->value) && $this->value !== '') {
$output = $elements . '{background-image:url(' . $this->value . ')' . $important . ';}';
}
$this->parent->output_css .= $output;
return $output;
}
}
}