This commit is contained in:
Hoang Huu
2020-06-18 11:09:45 +07:00
parent 22c65f696a
commit 4fe7aecb30
19 changed files with 176 additions and 93 deletions

View File

@@ -373,6 +373,14 @@ class Opalestate_Settings_Property_Tab extends Opalestate_Settings_Base_Tab {
'options' => apply_filters( 'opalestate_single_layout_templates', [ '' => esc_html__( 'Inherit', 'opalestate-pro' ) ] ),
];
$fields[] = [
'name' => esc_html__( 'Single Preview Display', 'opalestate-pro' ),
'desc' => esc_html__( 'Choose preview layout for single property.', 'opalestate-pro' ),
'id' => 'single_preview',
'type' => 'select',
'options' => opalestate_single_layout_preview(),
];
$fields[] = [
'name' => esc_html__( 'Enable Request Viewing', 'opalestate-pro' ),
'desc' => esc_html__( 'Enable Request Viewing feature in the single property page.', 'opalestate-pro' ),

View File

@@ -423,7 +423,7 @@ class Opalestate_Agent_Front {
$radius = isset( $_GET['geo_radius'] ) ? sanitize_text_field( $_GET['geo_radius'] ) : 5;
$post_ids = Opalestate_Query::filter_by_location(
sanitize_text_field( $_GET['geo_lat'] ),
sanitize_text_field( $_GET['geo_long'] ), $radius, $prefix );
sanitize_text_field( $_GET['geo_long'] ), $radius, 'km', $prefix );
$args['post__in'] = $post_ids;

View File

@@ -382,16 +382,16 @@ class Opalestate_Property_Api extends Opalestate_Base_API {
if ( is_array( $request['info'] ) ) {
$info_array = $request['info'];
} elseif ( is_string( $request['info'] ) ) {
$info = $request['info'];
$array = json_decode($info);
$array = json_decode(json_encode($array), true);
$info = $request['info'];
$array = json_decode( $info );
$array = json_decode( json_encode( $array ), true );
if ( is_array( $array ) ) {
$info_array = $array;
}
}
if ( $info_array && ! empty($info_array) ) {
if ( $info_array && ! empty( $info_array ) ) {
$metaquery = [];
foreach ( $info_array as $key => $value ) {
if ( trim( $value ) ) {
@@ -492,8 +492,9 @@ class Opalestate_Property_Api extends Opalestate_Base_API {
'operator' => 'OR',
] );
} elseif ( $request['geo_lat'] && $request['geo_long'] ) {
$radius = isset( $request['geo_radius'] ) ? $request['geo_radius'] : 5;
$post_ids = Opalestate_Query::filter_by_location( $request['geo_lat'], $request['geo_long'], $radius );
$radius_measure = isset( $request['radius_measure'] ) ? sanitize_text_field( $request['radius_measure'] ) : 'km';
$radius = isset( $request['geo_radius'] ) ? sanitize_text_field( $request['geo_radius'] ) : 10;
$post_ids = Opalestate_Query::filter_by_location( sanitize_text_field( $request['geo_lat'] ), sanitize_text_field( $request['geo_long'] ), $radius_measure, $radius );
$args['post__in'] = $post_ids;
}
}

View File

@@ -34,8 +34,9 @@ function opalestate_property_render_field_template( $field, $label, $type = 'sel
<label class="opalestate-label opalestate-label--<?php echo sanitize_html_class( $field ); ?>"><?php echo esc_html( $label ); ?></label>
<div class="input-group-number">
<i class="<?php echo opalestate_get_property_meta_icon( $field ); ?>"></i>
<input class="form-control" value="<?php echo esc_attr( $qvalue ? $qvalue : $input_default_value ); ?>" type="text" name="info[<?php echo $field; ?>]" placeholder="<?php echo esc_attr(
$label ); ?>"/>
<input class="form-control" value="<?php echo esc_attr( $qvalue ? $qvalue : $input_default_value ); ?>" type="text" name="info[<?php echo $field; ?>]"
placeholder="<?php echo esc_attr(
$label ); ?>"/>
<div class="btn-actions">
<span class="btn-minus"><i class="fa fa-minus"></i></span>
<span class="btn-plus"><i class="fa fa-plus"></i></span>
@@ -55,14 +56,16 @@ function opalestate_property_render_field_template( $field, $label, $type = 'sel
$display_type_search = opalestate_options( $setting_search_type, 'select' );
if ( $display_type_search == 'select' ) {
$option_values = (array) explode( ',', opalestate_options( $setting_search_type_options, '1,2,3,4,5,6,7,8,9,10' ) );
$option_values = array_map( 'trim', $option_values );
$option_values = array_combine( $option_values, $option_values );
$option_values = apply_filters( 'opalestate_search_select_type_options', $option_values, $setting_search_type_options, $field );
$template = '<label class="opalestate-label opalestate-label--' . sanitize_html_class( $label ) . '">' . esc_html( $label ) . '</label>';
$template .= '<select class="form-control" name="info[%s]"><option value="">%s</option>';
foreach ( $option_values as $value ) {
foreach ( $option_values as $option_key => $value ) {
$selected = $value == $qvalue ? 'selected="selected"' : '';
$template .= '<option ' . $selected . ' value="' . esc_attr( $value ) . '">' . esc_html( $value ) . '</option>';
$template .= '<option ' . $selected . ' value="' . esc_attr( $option_key ) . '">' . esc_html( $value ) . '</option>';
}
$template .= '</select>';
$template = sprintf( $template, $field, $label );

View File

@@ -483,7 +483,7 @@ class Opalestate_Property_MetaBox {
public function metaboxes_layout_fields() {
$prefix = OPALESTATE_PROPERTY_PREFIX;
$templates = opalestate_single_layout_prieview();
$templates = opalestate_single_layout_preview();
$fields = [
[

View File

@@ -319,12 +319,11 @@ class Opalestate_Query {
}
if ( isset( $args['featured'] ) && $args['featured'] ) {
$args = array_merge( $args,
[
'meta_key' => OPALESTATE_PROPERTY_PREFIX . 'featured',
'meta_value' => 'on',
'meta_compare' => '=',
] );
$args = array_merge( $args, [
'meta_key' => OPALESTATE_PROPERTY_PREFIX . 'featured',
'meta_value' => 'on',
'meta_compare' => '=',
] );
unset( $args['featured'] );
}
@@ -342,17 +341,21 @@ class Opalestate_Query {
}
/**
*
* Filter_by_location
*/
public static function filter_by_location( $geo_lat, $geo_long, $radius, $prefix = OPALESTATE_PROPERTY_PREFIX ) {
public static function filter_by_location( $geo_lat, $geo_long, $radius, $radius_measure = '', $prefix = OPALESTATE_PROPERTY_PREFIX ) {
global $wpdb;
$radius_measure = '';
$earth = 3959;
if ( $radius_measure == 'km' ) {
$earth = 6371;
switch ( $radius_measure ) {
case 'km':
$earth = 6371;
break;
case 'miles':
$earth = 3959;
break;
default :
$earth = 6371;
break;
}
$latitude = $prefix . 'map_latitude';
@@ -382,7 +385,6 @@ class Opalestate_Query {
ORDER BY $wpdb->posts.menu_order ASC, distance ASC";
$query = $wpdb->prepare( $sql,
$earth,
$geo_lat,
$geo_long,

View File

@@ -288,10 +288,10 @@ class OpalEstate_Search {
'compare' => 'LIKE',
'operator' => 'OR',
];
} elseif ( $_GET['geo_lat'] && $_GET['geo_long'] ) {
$radius = isset( $_GET['geo_radius'] ) ? $_GET['geo_radius'] : 5;
$post_ids = Opalestate_Query::filter_by_location( $_GET['geo_lat'], $_GET['geo_long'], $radius );
$radius_measure = isset( $_GET['radius_measure'] ) ? sanitize_text_field( $_GET['radius_measure'] ) : 'km';
$radius = isset( $_GET['geo_radius'] ) ? sanitize_text_field( $_GET['geo_radius'] ) : 10;
$post_ids = Opalestate_Query::filter_by_location( sanitize_text_field( $_GET['geo_lat'] ), sanitize_text_field( $_GET['geo_long'] ), $radius_measure, $radius );
$args['post__in'] = $post_ids;
}
}

View File

@@ -456,10 +456,14 @@ function opalestate_single_the_property_layout() {
return $layout;
}
function opalestate_single_layout_prieview() {
$layout = [
'' => esc_html__( 'Inherit', 'opalestate-pro' ),
/**
* Single layout preview.
*
* @param bool $show_none_option
* @return array
*/
function opalestate_single_layout_preview( $show_none_option = true ) {
$layouts = [
'gallery-thumbnail' => esc_html__( 'Gallery Thumb Nav', 'opalestate-pro' ),
'gallery-slider' => esc_html__( 'Gallery Slider', 'opalestate-pro' ),
'map' => esc_html__( 'Maps', 'opalestate-pro' ),
@@ -471,7 +475,11 @@ function opalestate_single_layout_prieview() {
'mark-picture' => esc_html__( 'Mark Picture', 'opalestate-pro' ),
];
return $layout;
if ( $show_none_option ) {
$layouts = array_merge( [ '' => esc_html__( 'Inherit', 'opalestate-pro' ) ], $layouts );
}
return apply_filters( 'opalestate_single_layout_preview', $layouts );
}
@@ -491,10 +499,6 @@ function opalestate_property_status() {
echo opalestate_load_template_path( 'parts/property-status' );
}
/**
* Single property logic functions
*/
/**
* Single property logic functions
*/
@@ -512,9 +516,15 @@ function opalestate_single_show_map() {
function opalestate_property_preview() {
global $property;
$preview = $property->get_preview_template();
if ( ! $preview ) {
$preview = opalestate_get_option( 'single_preview', '' );
}
if ( isset( $_GET['preview'] ) && $_GET['preview'] ) {
$preview = sanitize_text_field( $_GET['preview'] );
}
switch ( $preview ) {
case 'tour360':
echo opalestate_load_template_path( 'single-property/preview/virtualtour' );
@@ -522,7 +532,6 @@ function opalestate_property_preview() {
case 'gallery-slider':
echo opalestate_load_template_path( 'single-property/preview/gallery-slider' );
break;
case 'tabs-gallery':
echo opalestate_load_template_path( 'single-property/preview/tabs', [ 'tab_active' => 'gallery-slider' ] );
remove_action( 'opalestate_after_single_property_summary', 'opalestate_property_map', 30 );
@@ -850,7 +859,7 @@ function opalestate_properties_nearby() {
}
$radius = 5;
$post_ids = Opalestate_Query::filter_by_location( $geo_lat, $geo_long, $radius );
$post_ids = Opalestate_Query::filter_by_location( $geo_lat, $geo_long, 'km', $radius );
if ( empty( $post_ids ) ) {
return;

View File

@@ -185,6 +185,34 @@ class Opalestate_Searchbox_Elementor_Widget extends Opalestate_Elementor_Widget_
]
);
$this->add_control(
'range_unit',
[
'label' => esc_html__( 'Range Unit', 'opalestate-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'km' => esc_html__( 'km', 'opalestate-pro' ),
'miles' => esc_html__( 'miles', 'opalestate-pro' ),
],
'default' => 'km',
'condition' => [
'style' => $this->get_radius_form(),
],
]
);
$this->add_control(
'max_range',
[
'label' => esc_html__( 'Max Range', 'opalestate-pro' ),
'type' => Controls_Manager::NUMBER,
'default' => '10',
'condition' => [
'style' => $this->get_radius_form(),
],
]
);
$this->end_controls_section();
$this->start_controls_section(
@@ -414,4 +442,13 @@ class Opalestate_Searchbox_Elementor_Widget extends Opalestate_Elementor_Widget_
'search-form-v3',
];
}
protected function get_radius_form() {
return [
'search-form-v2',
'collapse-advanced',
'collapse-city',
'simple-city',
];
}
}