mirror of https://github.com/vtrois/kratos
98 lines
4.5 KiB
PHP
98 lines
4.5 KiB
PHP
<?php if (!defined('ABSPATH')) {
|
|
die;
|
|
}
|
|
/**
|
|
*
|
|
* Field: media
|
|
*
|
|
* @since 1.0.0
|
|
* @version 1.0.0
|
|
*
|
|
*/
|
|
if (!class_exists('CSF_Field_media')) {
|
|
class CSF_Field_media 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(
|
|
'url' => true,
|
|
'preview' => true,
|
|
'preview_width' => '',
|
|
'preview_height' => '',
|
|
'library' => array(),
|
|
'button_title' => esc_html__('Upload', 'csf'),
|
|
'remove_title' => esc_html__('Remove', 'csf'),
|
|
'preview_size' => 'thumbnail',
|
|
));
|
|
|
|
$default_values = array(
|
|
'url' => '',
|
|
'id' => '',
|
|
'width' => '',
|
|
'height' => '',
|
|
'thumbnail' => '',
|
|
'alt' => '',
|
|
'title' => '',
|
|
'description' => ''
|
|
);
|
|
|
|
// fallback
|
|
if (is_numeric($this->value)) {
|
|
|
|
$this->value = array(
|
|
'id' => $this->value,
|
|
'url' => wp_get_attachment_url($this->value),
|
|
'thumbnail' => wp_get_attachment_image_src($this->value, 'thumbnail', true)[0],
|
|
);
|
|
}
|
|
|
|
$this->value = wp_parse_args($this->value, $default_values);
|
|
|
|
$library = (is_array($args['library'])) ? $args['library'] : array_filter((array) $args['library']);
|
|
$library = (!empty($library)) ? implode(',', $library) : '';
|
|
$preview_src = ($args['preview_size'] !== 'thumbnail') ? $this->value['url'] : $this->value['thumbnail'];
|
|
$hidden_url = (empty($args['url'])) ? ' hidden' : '';
|
|
$hidden_auto = (empty($this->value['url'])) ? ' hidden' : '';
|
|
$placeholder = (empty($this->field['placeholder'])) ? ' placeholder="' . esc_html__('Not selected', 'csf') . '"' : '';
|
|
|
|
echo $this->field_before();
|
|
|
|
if (!empty($args['preview'])) {
|
|
|
|
$preview_width = (!empty($args['preview_width'])) ? 'max-width:' . esc_attr($args['preview_width']) . 'px;' : '';
|
|
$preview_height = (!empty($args['preview_height'])) ? 'max-height:' . esc_attr($args['preview_height']) . 'px;' : '';
|
|
$preview_style = (!empty($preview_width) || !empty($preview_height)) ? ' style="' . esc_attr($preview_width . $preview_height) . '"' : '';
|
|
|
|
echo '<div class="csf--preview' . esc_attr($hidden_auto) . '">';
|
|
echo '<div class="csf-image-preview"' . $preview_style . '>';
|
|
echo '<i class="csf--remove fas fa-times"></i><span><img src="' . esc_url($preview_src) . '" class="csf--src" /></span>';
|
|
echo '</div>';
|
|
echo '</div>';
|
|
}
|
|
|
|
echo '<div class="csf--placeholder">';
|
|
echo '<input type="text" name="' . esc_attr($this->field_name('[url]')) . '" value="' . esc_attr($this->value['url']) . '" class="csf--url' . esc_attr($hidden_url) . '" readonly="readonly"' . $this->field_attributes() . $placeholder . ' />';
|
|
echo '<a href="#" class="button button-primary csf--button" data-library="' . esc_attr($library) . '" data-preview-size="' . esc_attr($args['preview_size']) . '">' . $args['button_title'] . '</a>';
|
|
echo (empty($args['preview'])) ? '<a href="#" class="button button-secondary csf-warning-primary csf--remove' . esc_attr($hidden_auto) . '">' . $args['remove_title'] . '</a>' : '';
|
|
echo '</div>';
|
|
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[id]')) . '" value="' . esc_attr($this->value['id']) . '" class="csf--id"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[width]')) . '" value="' . esc_attr($this->value['width']) . '" class="csf--width"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[height]')) . '" value="' . esc_attr($this->value['height']) . '" class="csf--height"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[thumbnail]')) . '" value="' . esc_attr($this->value['thumbnail']) . '" class="csf--thumbnail"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[alt]')) . '" value="' . esc_attr($this->value['alt']) . '" class="csf--alt"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[title]')) . '" value="' . esc_attr($this->value['title']) . '" class="csf--title"/>';
|
|
echo '<input type="hidden" name="' . esc_attr($this->field_name('[description]')) . '" value="' . esc_attr($this->value['description']) . '" class="csf--description"/>';
|
|
|
|
echo $this->field_after();
|
|
}
|
|
}
|
|
}
|