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

102 lines
3.5 KiB
PHP

<?php if (!defined('ABSPATH')) {
die;
}
/**
*
* Field: map
*
* @since 1.0.0
* @version 1.0.0
*
*/
if (!class_exists('CSF_Field_map')) {
class CSF_Field_map extends CSF_Fields
{
public $version = '1.7.1';
public $cdn_url = 'https://cdn.jsdelivr.net/npm/leaflet@';
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(
'placeholder' => esc_html__('Search...', 'csf'),
'latitude_text' => esc_html__('Latitude', 'csf'),
'longitude_text' => esc_html__('Longitude', 'csf'),
'address_field' => '',
'height' => '',
));
$value = wp_parse_args($this->value, array(
'address' => '',
'latitude' => '20',
'longitude' => '0',
'zoom' => '2',
));
$default_settings = array(
'center' => array($value['latitude'], $value['longitude']),
'zoom' => $value['zoom'],
'scrollWheelZoom' => false,
);
$settings = (!empty($this->field['settings'])) ? $this->field['settings'] : array();
$settings = wp_parse_args($settings, $default_settings);
$style_attr = (!empty($args['height'])) ? ' style="min-height:' . esc_attr($args['height']) . ';"' : '';
$placeholder = (!empty($args['placeholder'])) ? array('placeholder' => $args['placeholder']) : '';
echo $this->field_before();
if (empty($args['address_field'])) {
echo '<div class="csf--map-search">';
echo '<input type="text" name="' . esc_attr($this->field_name('[address]')) . '" value="' . esc_attr($value['address']) . '"' . $this->field_attributes($placeholder) . ' />';
echo '</div>';
} else {
echo '<div class="csf--address-field" data-address-field="' . esc_attr($args['address_field']) . '"></div>';
}
echo '<div class="csf--map-osm-wrap"><div class="csf--map-osm" data-map="' . esc_attr(json_encode($settings)) . '"' . $style_attr . '></div></div>';
echo '<div class="csf--map-inputs">';
echo '<div class="csf--map-input">';
echo '<label>' . esc_attr($args['latitude_text']) . '</label>';
echo '<input type="text" name="' . esc_attr($this->field_name('[latitude]')) . '" value="' . esc_attr($value['latitude']) . '" class="csf--latitude" />';
echo '</div>';
echo '<div class="csf--map-input">';
echo '<label>' . esc_attr($args['longitude_text']) . '</label>';
echo '<input type="text" name="' . esc_attr($this->field_name('[longitude]')) . '" value="' . esc_attr($value['longitude']) . '" class="csf--longitude" />';
echo '</div>';
echo '</div>';
echo '<input type="hidden" name="' . esc_attr($this->field_name('[zoom]')) . '" value="' . esc_attr($value['zoom']) . '" class="csf--zoom" />';
echo $this->field_after();
}
public function enqueue()
{
if (!wp_script_is('csf-leaflet')) {
wp_enqueue_script('csf-leaflet', esc_url($this->cdn_url . $this->version . '/dist/leaflet.js'), array('csf'), $this->version, true);
}
if (!wp_style_is('csf-leaflet')) {
wp_enqueue_style('csf-leaflet', esc_url($this->cdn_url . $this->version . '/dist/leaflet.css'), array(), $this->version);
}
if (!wp_script_is('jquery-ui-autocomplete')) {
wp_enqueue_script('jquery-ui-autocomplete');
}
}
}
}