This commit is contained in:
Lieu Le 2019-09-30 17:30:15 +07:00
commit 6be05eed76
26 changed files with 439 additions and 100 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -38,6 +38,7 @@ class Opalestate_Admin_Property {
// add_action( 'transition_post_status', array( __CLASS__, 'save_post' ), 10, 3 ); // add_action( 'transition_post_status', array( __CLASS__, 'save_post' ), 10, 3 );
} }
/** /**
* *
*/ */

View File

@ -308,7 +308,49 @@ class Opalestate_Agency_Front {
* *
*/ */
public function register_shortcodes() { public function register_shortcodes() {
$this->shortcodes = [
'search_agencies' => [ 'code' => 'search_agencies', 'label' => esc_html__( 'Search Agencies', 'opalestate-pro' ) ],
'agency_carousel' => [ 'code' => 'agency_carousel', 'label' => esc_html__( 'Agency Carousel', 'opalestate-pro' ) ],
];
foreach ( $this->shortcodes as $shortcode ) {
add_shortcode( 'opalestate_' . $shortcode['code'], [ $this, $shortcode['code'] ] );
}
}
public function agency_carousel ( $atts ) {
$atts = is_array( $atts ) ? $atts : [];
$default = array(
'current_uri' => null,
'column' => 3,
'limit' => 12,
'paged' => 1,
'onlyfeatured' => 0,
);
$atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'shortcodes/agency-carousel' , $atts );
}
/**
*
*/
public function search_agencies ( $atts=[] ) {
$atts = is_array( $atts ) ? $atts : [];
$layout = 'search-agency-form';
$default = array(
'current_uri' => null,
'form' => $layout
);
$atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'shortcodes/search-agencies' , $atts );
} }
/** /**

View File

@ -5,7 +5,7 @@
* @version $Id$ * @version $Id$
* @package $package$ * @package $package$
* @author Opal Team <info@wpopal.com > * @author Opal Team <info@wpopal.com >
* @copyright Copyright (C) 2014 wpopal.com. All Rights Reserved. * @copyright Copyright (C) 2019 wpopal.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html * @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
* *
* @website http://www.wpopal.com * @website http://www.wpopal.com

View File

@ -3,7 +3,7 @@
* Opalestate_Agent_Front * Opalestate_Agent_Front
* *
* @author Opal Team <info@wpopal.com > * @author Opal Team <info@wpopal.com >
* @copyright Copyright (C) 2014 wpopal.com. All Rights Reserved. * @copyright Copyright (C) 2019 wpopal.com. All Rights Reserved.
*/ */
// Exit if accessed directly // Exit if accessed directly
@ -307,14 +307,34 @@ class Opalestate_Agent_Front {
'change_agent_profile' => [ 'code' => 'change_agent_profile', 'label' => esc_html__( 'Agent Profile', 'opalestate-pro' ) ], 'change_agent_profile' => [ 'code' => 'change_agent_profile', 'label' => esc_html__( 'Agent Profile', 'opalestate-pro' ) ],
'search_agents' => [ 'code' => 'search_agents', 'label' => esc_html__( 'Search Agents', 'opalestate-pro' ) ], 'search_agents' => [ 'code' => 'search_agents', 'label' => esc_html__( 'Search Agents', 'opalestate-pro' ) ],
'agent_carousel' => [ 'code' => 'agent_carousel', 'label' => esc_html__( 'Agent Carousel', 'opalestate-pro' ) ],
]; ];
foreach ( $this->shortcodes as $shortcode ) { foreach ( $this->shortcodes as $shortcode ) {
add_shortcode( 'opalestate_' . $shortcode['code'], [ $this, $shortcode['code'] ] ); add_shortcode( 'opalestate_' . $shortcode['code'], [ $this, $shortcode['code'] ] );
} }
} }
public function agent_carousel ( $atts ) {
$atts = is_array( $atts ) ? $atts : [];
$layout = 'search-agency-form';
$default = array(
'current_uri' => null,
'column' => 4,
'limit' => 12,
'paged' => 1,
'onlyfeatured' => 0,
'form' => $layout
);
$atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'shortcodes/agent-carousel' , $atts );
}
public function archives_query( $query ) { public function archives_query( $query ) {
if ( $query->is_main_query() && is_post_type_archive( 'opalestate_agent' ) ) { if ( $query->is_main_query() && is_post_type_archive( 'opalestate_agent' ) ) {

View File

@ -5,7 +5,7 @@
* @version $Id$ * @version $Id$
* @package $package$ * @package $package$
* @author Opal Team <info@wpopal.com > * @author Opal Team <info@wpopal.com >
* @copyright Copyright (C) 2014 wpopal.com. All Rights Reserved. * @copyright Copyright (C) 2019 wpopal.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html * @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
* *
* @website http://www.wpopal.com * @website http://www.wpopal.com

View File

@ -5,7 +5,7 @@
* @version $Id$ * @version $Id$
* @package $package$ * @package $package$
* @author Opal Team <info@wpopal.com > * @author Opal Team <info@wpopal.com >
* @copyright Copyright (C) 2014 wpopal.com. All Rights Reserved. * @copyright Copyright (C) 2019 wpopal.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html * @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
* *
* @website http://www.wpopal.com * @website http://www.wpopal.com
@ -287,6 +287,9 @@ class Opalestate_Emails {
], ],
//------------------------------------------
[ [
'name' => esc_html__( 'Notification For New Property Submission', 'opalestate-pro' ), 'name' => esc_html__( 'Notification For New Property Submission', 'opalestate-pro' ),
'desc' => '<hr>', 'desc' => '<hr>',
@ -354,7 +357,32 @@ class Opalestate_Emails {
'desc' => esc_html__( 'Enter the email a user should receive when they make an initial payment request.', 'opalestate-pro' ), 'desc' => esc_html__( 'Enter the email a user should receive when they make an initial payment request.', 'opalestate-pro' ),
'default' => OpalEstate_Send_Email_Approve::get_default_template(), 'default' => OpalEstate_Send_Email_Approve::get_default_template(),
], ],
/// enquire contact template ////
[
'name' => esc_html__( 'Email Enquiry Contact Templates (Template Tags)', 'opalestate-pro' ),
'desc' => $contact_list_tags . '<br><hr>',
'id' => 'opalestate_title_email_settings_6_1',
'type' => 'title',
],
[
'id' => 'enquiry_email_subject',
'name' => esc_html__( 'Email Subject', 'opalestate-pro' ),
'type' => 'text',
'desc' => esc_html__( 'The email subject a user should receive when they make an initial property request.', 'opalestate-pro' ),
'attributes' => [
'placeholder' => 'Your property at I Love WordPress is pending',
get_bloginfo( 'name' ),
'rows' => 3,
],
'default' => esc_html__( 'You got a message', 'opalestate-pro' ),
],
[
'id' => 'enquiry_email_body',
'name' => esc_html__( 'Email Body', 'opalestate-pro' ),
'type' => 'wysiwyg',
'default' => OpalEstate_Send_Email_Notification::get_default_template( 'enquiry' )
],
/// email contact template //// /// email contact template ////
[ [
'name' => esc_html__( 'Email Contact Templates (Template Tags)', 'opalestate-pro' ), 'name' => esc_html__( 'Email Contact Templates (Template Tags)', 'opalestate-pro' ),
@ -362,7 +390,6 @@ class Opalestate_Emails {
'id' => 'opalestate_title_email_settings_6', 'id' => 'opalestate_title_email_settings_6',
'type' => 'title', 'type' => 'title',
], ],
[ [
'id' => 'contact_email_subject', 'id' => 'contact_email_subject',
'name' => esc_html__( 'Email Subject', 'opalestate-pro' ), 'name' => esc_html__( 'Email Subject', 'opalestate-pro' ),
@ -380,15 +407,33 @@ class Opalestate_Emails {
'id' => 'contact_email_body', 'id' => 'contact_email_body',
'name' => esc_html__( 'Email Body', 'opalestate-pro' ), 'name' => esc_html__( 'Email Body', 'opalestate-pro' ),
'type' => 'wysiwyg', 'type' => 'wysiwyg',
'desc' => trim( preg_replace( '/\t+/', '', "Hi {receive_name},<br> 'default' => OpalEstate_Send_Email_Notification::get_default_template()
You have got message from {name} with email {email}. Here is detail: ],
<br> /// Email Request Review ///
<br> [
{message} 'name' => esc_html__( 'Email Request Review Templates (Template Tags)', 'opalestate-pro' ),
<br> 'desc' => $contact_list_tags . '<br><hr>',
&nbsp;<br> 'id' => 'opalestate_title_email_settings_7',
<br> 'type' => 'title',
<em>This message was sent by {site_link} on {current_time}.</em>" ) ), ],
[
'id' => 'request_review_email_subject',
'name' => esc_html__( 'Email Subject', 'opalestate-pro' ),
'type' => 'text',
'desc' => esc_html__( 'The email subject a user should receive when they make an initial property request.', 'opalestate-pro' ),
'attributes' => [
'placeholder' => 'Your property at I Love WordPress is pending',
get_bloginfo( 'name' ),
'rows' => 3,
],
'default' =>esc_html__( 'You have a message request reviewing at: %s', 'opalestate-pro' ),
],
[
'id' => 'request_review_email_body',
'name' => esc_html__( 'Email Body', 'opalestate-pro' ),
'type' => 'wysiwyg',
'default' => OpalEstate_Send_Email_Request_Reviewing::get_default_template()
], ],
] ]
), ),

View File

@ -103,6 +103,7 @@ class OpalEstate_Enqueue {
* Register and enqueue javascript, css library * Register and enqueue javascript, css library
*/ */
public function register_enqueue() { public function register_enqueue() {
wp_register_script( wp_register_script(
'jquery-modernizr', 'jquery-modernizr',
OPALESTATE_PLUGIN_URL . '/assets/3rd/magnific-popup/jquery.magnific-popup.min.js', OPALESTATE_PLUGIN_URL . '/assets/3rd/magnific-popup/jquery.magnific-popup.min.js',
@ -112,6 +113,7 @@ class OpalEstate_Enqueue {
'4.4.3', '4.4.3',
true true
); );
wp_enqueue_script( 'jquery-magnific-popup' ); wp_enqueue_script( 'jquery-magnific-popup' );
wp_register_script( 'jquery-sticky-kit', trailingslashit( OPALESTATE_PLUGIN_URL ) . 'assets/3rd/sticky/jquery.sticky-kit.min.js', [], null, true ); wp_register_script( 'jquery-sticky-kit', trailingslashit( OPALESTATE_PLUGIN_URL ) . 'assets/3rd/sticky/jquery.sticky-kit.min.js', [], null, true );
wp_enqueue_script( 'jquery-sticky-kit' ); wp_enqueue_script( 'jquery-sticky-kit' );
@ -124,6 +126,7 @@ class OpalEstate_Enqueue {
wp_enqueue_script( 'jquery-toast' ); wp_enqueue_script( 'jquery-toast' );
wp_register_script( wp_register_script(
'jquery-swiper', 'jquery-swiper',
OPALESTATE_PLUGIN_URL . '/assets/3rd/swiper/js/swiper.min.js', OPALESTATE_PLUGIN_URL . '/assets/3rd/swiper/js/swiper.min.js',
@ -132,8 +135,12 @@ class OpalEstate_Enqueue {
], ],
'4.4.3', '4.4.3',
true true
); );
if( !defined("ELEMENTOR_VERSION") ) {
wp_enqueue_style( 'jquery-swiper', OPALESTATE_PLUGIN_URL . '/assets/3rd/swiper/css/swiper.min.css' );
}
wp_enqueue_script( 'jquery-swiper' ); wp_enqueue_script( 'jquery-swiper' );
} }

View File

@ -28,7 +28,11 @@ class OpalEstate_Send_Email_Approve extends OpalEstate_Abstract_Email_Template {
*/ */
public function get_subject () { public function get_subject () {
$propety_title = '' ; $propety_title = '' ;
return sprintf( esc_html__( 'New Property Listing Submitted: {property_name}', 'opalestate-pro' ), $propety_title );
$subject = sprintf( esc_html__( 'The Property Listing Approved: {property_name}', 'opalestate-pro' ), $propety_title );
$subject = opalestate_options( 'approve_email_body' , $subject );
return $subject;
} }
/** /**
@ -58,7 +62,9 @@ class OpalEstate_Send_Email_Approve extends OpalEstate_Abstract_Email_Template {
* *
*/ */
public function get_content_template() { public function get_content_template() {
return opalestate_load_template_path( 'emails/request-reviewing' );
$content = opalestate_options( 'approve_email_body' , self::get_default_template() );
return $content;
} }
/** /**

View File

@ -31,11 +31,17 @@ class OpalEstate_Send_Email_Notification extends OpalEstate_Abstract_Email_Templ
public function get_subject () { public function get_subject () {
switch ( $this->type ) { switch ( $this->type ) {
case 'enquiry': case 'enquiry':
$subject = html_entity_decode( esc_html__('You got a message enquiry', 'opalestate-pro') ); $subject = html_entity_decode( esc_html__('You got a message enquiry', 'opalestate-pro') );
$subject = opalestate_options( 'enquiry_email_subject', $subject );
break; break;
default: default:
$subject = html_entity_decode( esc_html__('You got a message contact', 'opalestate-pro') ); $subject = html_entity_decode( esc_html__('You got a message contact', 'opalestate-pro') );
$subject = opalestate_options( 'contact_email_subject', $subject );
break; break;
} }
@ -46,14 +52,12 @@ class OpalEstate_Send_Email_Notification extends OpalEstate_Abstract_Email_Templ
* Send Email * Send Email
*/ */
public function get_content_template() { public function get_content_template() {
switch ( $this->type ) { switch ( $this->type ) {
case 'enquiry': case 'enquiry':
return opalestate_load_template_path( 'emails/enquiry' ); return opalestate_options( 'enquiry_email_body', self::get_default_template( 'enquiry' ) );
break; break;
default: default:
return opalestate_load_template_path( 'emails/contact' ); return opalestate_options( 'contact_email_body', self::get_default_template( ) );
break; break;
} }
} }
@ -70,5 +74,15 @@ class OpalEstate_Send_Email_Notification extends OpalEstate_Abstract_Email_Templ
$this->args['email'] = $this->args['receiver_email']; $this->args['email'] = $this->args['receiver_email'];
return parent::get_body(); return parent::get_body();
} }
/***/
public static function get_default_template ( $type='contact' ) {
if( $type == 'enquiry' ) {
return opalestate_load_template_path( 'emails/enquiry' );
}
return opalestate_load_template_path( 'emails/contact' );
}
} }
?> ?>

View File

@ -62,8 +62,7 @@ class OpalEstate_Send_Email_New_Submitted extends OpalEstate_Abstract_Email_Temp
*/ */
public function get_content_template() { public function get_content_template() {
$body = opalestate_get_option( 'newproperty_email_body', self::newproperty_email_body() ); $body = opalestate_get_option( 'newproperty_email_body', self::get_default_template() );
return $body; return $body;
} }
@ -103,7 +102,6 @@ class OpalEstate_Send_Email_New_Submitted extends OpalEstate_Abstract_Email_Temp
* Send Email * Send Email
*/ */
public function get_body() { public function get_body() {
return parent::get_body(); return parent::get_body();
} }
} }

View File

@ -29,14 +29,18 @@ class OpalEstate_Send_Email_Request_Reviewing extends OpalEstate_Abstract_Email_
public function get_subject() { public function get_subject() {
$propety_title = ''; $propety_title = '';
return sprintf( esc_html__( 'You have a message request reviewing: %s at', 'opalestate-pro' ), $propety_title ); $content = sprintf( esc_html__( 'You have a message request reviewing: %s at', 'opalestate-pro' ), $propety_title );
$content = opalestate_options( 'request_review_email_subject', $content );
return $content;
} }
/** /**
* Send Email * Send Email
*/ */
public function get_content_template() { public function get_content_template() {
return opalestate_load_template_path( 'emails/request-reviewing' ); $content = opalestate_options( 'request_review_email_body', self::get_default_template() );
return $content;
} }
/** /**
@ -65,4 +69,9 @@ class OpalEstate_Send_Email_Request_Reviewing extends OpalEstate_Abstract_Email_
return parent::get_body(); return parent::get_body();
} }
public static function get_default_template() {
return opalestate_load_template_path( 'emails/request-reviewing' );
}
} }

View File

@ -23,6 +23,17 @@ if ( ! defined( 'ABSPATH' ) ) {
*/ */
class OpalEstate_Shortcodes { class OpalEstate_Shortcodes {
/**
* Get instance of this object
*/
public static function get_instance(){
static $_instance;
if( !$_instance ){
$_instance = new OpalEstate_Shortcodes();
}
return $_instance;
}
/** /**
* Static $shortcodes * Static $shortcodes
*/ */
@ -39,11 +50,11 @@ class OpalEstate_Shortcodes {
'properties' => [ 'code' => 'properties', 'label' => esc_html__( 'Properties', 'opalestate-pro' ) ], 'properties' => [ 'code' => 'properties', 'label' => esc_html__( 'Properties', 'opalestate-pro' ) ],
'search_properties_result' => [ 'code' => 'search_properties_result', 'label' => esc_html__( 'Search Properties Result', 'opalestate-pro' ) ], 'search_properties_result' => [ 'code' => 'search_properties_result', 'label' => esc_html__( 'Search Properties Result', 'opalestate-pro' ) ],
'search_properties' => [ 'code' => 'search_properties', 'label' => esc_html__( 'Search Properties', 'opalestate-pro' ) ], 'search_properties' => [ 'code' => 'search_properties', 'label' => esc_html__( 'Search Properties', 'opalestate-pro' ) ],
'search_properties_v' => [ 'code' => 'search_properties_v', 'label' => esc_html__( 'Search Properties Vertical', 'opalestate-pro' ) ], 'search_split_maps' => [ 'code' => 'search_split_maps', 'label' => esc_html__( 'Search Split Maps', 'opalestate-pro' ) ],
'search_map_properties' => [ 'code' => 'search_map_properties', 'label' => esc_html__( 'Search Map Properties', 'opalestate-pro' ) ], 'search_map_properties' => [ 'code' => 'search_map_properties', 'label' => esc_html__( 'Show Map + Search Box and Properties', 'opalestate-pro' ) ],
'ajax_map_search' => [ 'code' => 'ajax_map_search', 'label' => esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ], 'ajax_map_search' => [ 'code' => 'ajax_map_search', 'label' => esc_html__( 'Ajax Search Map Properties And Horizontal Search', 'opalestate-pro' ) ],
'ajax_map_quick_search' => [ 'code' => 'ajax_map_quick_search', 'label' => esc_html__( 'Ajax Search Map Properties', 'opalestate-pro' ) ],
'register_form' => [ 'code' => 'register_form', 'label' => esc_html__( 'Register User Form', 'opalestate-pro' ) ], 'register_form' => [ 'code' => 'register_form', 'label' => esc_html__( 'Register User Form', 'opalestate-pro' ) ],
'login_form' => [ 'code' => 'login_form', 'label' => esc_html__( 'Login Form', 'opalestate-pro' ) ], 'login_form' => [ 'code' => 'login_form', 'label' => esc_html__( 'Login Form', 'opalestate-pro' ) ],
]; ];
@ -58,6 +69,9 @@ class OpalEstate_Shortcodes {
} }
/**
* Display all properties follow user when logined
*/
public function shortcode_button() { public function shortcode_button() {
} }
@ -67,19 +81,67 @@ class OpalEstate_Shortcodes {
*/ */
public function search_properties_form ( $atts=[] ) { public function search_properties_form ( $atts=[] ) {
$atts = is_array( $atts ) ? $atts : []; $atts = is_array( $atts ) ? $atts : [];
$layout = 'collapse-advanced';
$default = array(
'hidden_labels' => true,
'display_more_options' => true,
'nobutton' => false,
'layout' => $layout
);
$atts['hidden_labels'] = true; $atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'search-box/collapse-advanced', $atts ); return opalestate_load_template_path( 'search-box/'.$layout, $atts );
} }
public function properties() { /**
return opalestate_load_template_path( 'shortcodes/properties' ); * Display all properties follow user when logined
*/
public function properties( $atts=[] ) {
$atts = is_array( $atts ) ? $atts : [];
$default = array (
'posts_per_page' => 9,
'show_pagination' => true,
'column' => apply_filters( 'opalestate_properties_column_row', 3 ),
'layout' => 'content-property-grid-v2',
'showmode' => '',
'categories' => null,
'types' => null,
'labels' => null,
'cities' => null,
'statuses' => null,
);
$atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'shortcodes/properties', $atts );
} }
public function search_properties_result() { /**
return opalestate_load_template_path( 'shortcodes/search-properties-result' ); * [opalestate_search_properties_result] Display all properties follow user when logined
*/
public function search_properties_result( $atts=[] ) {
$atts = is_array( $atts ) ? $atts : [];
$default = array(
'style' => null,
'style_list' => null,
'column' => null,
);
$atts = array_merge( $default, $atts );
$html = '<div class="opalesate-properties-ajax opalesate-properties-results" data-mode="html">';
$html .= opalestate_load_template_path( 'shortcodes/ajax-map-search-result', $atts );
$html .= '</div>';
return $html;
} }
/** /**
@ -99,25 +161,40 @@ class OpalEstate_Shortcodes {
/** /**
* Render search property page with vertical form and map * Render search property page with vertical form and map
*/ */
public function search_properties_v() { public function search_split_maps( $atts=[] ) {
return opalestate_load_template_path( 'shortcodes/search-properties-v', [ 'loop' => '' ] );
$atts = is_array( $atts ) ? $atts : [];
$default = array(
'search_form' => 'simple-city',
'paged' => 1
);
$atts = array_merge( $default, $atts );
return opalestate_load_template_path( 'shortcodes/search-split-maps', $atts );
} }
/**
* Render search property page with vertical form and map
*/
public function search_map_properties() { public function search_map_properties() {
return opalestate_load_template_path( 'shortcodes/search-map-properties', [ 'loop' => '' ] ); return opalestate_load_template_path( 'shortcodes/search-map-properties', [ 'loop' => '' ] );
} }
/**
* Render search property page with vertical form and map
*/
public function ajax_map_search() { public function ajax_map_search() {
wp_enqueue_script( 'sticky-kit', OPALESTATE_PLUGIN_URL . 'assets/js/jquery.sticky-kit.min.js' ); wp_enqueue_script( 'sticky-kit', OPALESTATE_PLUGIN_URL . 'assets/js/jquery.sticky-kit.min.js' );
return opalestate_load_template_path( 'shortcodes/ajax-map-search', [ 'loop' => '' ] ); return opalestate_load_template_path( 'shortcodes/ajax-map-search', [ 'loop' => '' ] );
} }
public function ajax_map_quick_search() {
return opalestate_load_template_path( 'shortcodes/ajax-map-quick-search', [ 'loop' => '' ] );
}
/* register form show up */ /*
* Register form show up
*/
public function register_form( $atts = [] ) { public function register_form( $atts = [] ) {
$atts = shortcode_atts( [ $atts = shortcode_atts( [
'message' => '', 'message' => '',
@ -128,7 +205,9 @@ class OpalEstate_Shortcodes {
return opalestate_load_template_path( 'user/register-form', $atts ); return opalestate_load_template_path( 'user/register-form', $atts );
} }
/* sign in show up */ /*
* sign in show up
*/
public function login_form( $atts = [] ) { public function login_form( $atts = [] ) {
$atts = shortcode_atts( [ $atts = shortcode_atts( [
'message' => '', 'message' => '',
@ -141,4 +220,4 @@ class OpalEstate_Shortcodes {
} }
new OpalEstate_Shortcodes(); OpalEstate_Shortcodes::get_instance();

View File

@ -219,7 +219,13 @@ add_action( 'opalestate_single_property_preview', 'opalestate_property_preview',
function opalestate_property_request_viewing_button( $islink = false ) { function opalestate_property_request_viewing_button( $islink = false ) {
$class = $islink ? 'btn-link' : 'btn btn-primary'; $class = $islink ? 'btn-link' : 'btn btn-primary';
echo '<a href="#opalestate-user-form-popup" class="' . $class . ' btn-request-viewing opalestate-popup-button" data-target="#property-request-view-popup" > if ( ! is_user_logged_in() ) {
$class .= ' opalestate-need-login';
} else {
$class .= ' opalestate-popup-button';
}
echo '<a href="#opalestate-user-form-popup" class="' . $class . ' btn-request-viewing" data-target="#property-request-view-popup" >
<i class="fa fa-calendar-check-o"></i> <i class="fa fa-calendar-check-o"></i>
<span class="btn-request-viewing__text">' . esc_html__( 'Request Viewing', 'opalestate-pro' ) . '</span> <span class="btn-request-viewing__text">' . esc_html__( 'Request Viewing', 'opalestate-pro' ) . '</span>
</a>'; </a>';
@ -254,6 +260,10 @@ add_action( 'opalestate_single_property_layout', 'opalestate_single_property_lay
* Forms * Forms
*/ */
function opalestate_property_request_view_form() { function opalestate_property_request_view_form() {
if ( ! is_user_logged_in() ) {
return;
}
if ( ! is_single_property() ) { if ( ! is_single_property() ) {
return; return;
} }

View File

@ -89,7 +89,7 @@ class OpalEstate_Membership {
add_action( 'opalmembership_dashboard_container_before', [ __CLASS__, 'check_membership_validation_message' ] ); add_action( 'opalmembership_dashboard_container_before', [ __CLASS__, 'check_membership_validation_message' ] );
// included logic functions // included logic functions
require_once( 'free-package.php' ); // require_once( 'free-package.php' );
require_once( 'functions.php' ); require_once( 'functions.php' );
add_action( 'opalmembership_current_package_summary_after', [ __CLASS__, 'render_membership_summary' ], 10, 2 ); add_action( 'opalmembership_current_package_summary_after', [ __CLASS__, 'render_membership_summary' ], 10, 2 );

View File

@ -3,7 +3,7 @@
* Plugin Name: Opal Estate Pro * Plugin Name: Opal Estate Pro
* Plugin URI: http://www.wpopal.com/product/opal-estate-wordpress-plugin/ * Plugin URI: http://www.wpopal.com/product/opal-estate-wordpress-plugin/
* Description: Opal Real Estate Plugin is an ideal solution and brilliant choice for you to set up a professional estate website. * Description: Opal Real Estate Plugin is an ideal solution and brilliant choice for you to set up a professional estate website.
* Version: 1.0.7 * Version: 1.0.8
* Author: WPOPAL * Author: WPOPAL
* Author URI: http://www.wpopal.com * Author URI: http://www.wpopal.com
* Requires at least: 4.6 * Requires at least: 4.6

View File

@ -89,13 +89,18 @@ The plugin will not make you disappointed with ease of use, friendly & flexible
-=-=-=-=-=-=-=-=-=- Shortcodes -=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=- Shortcodes -=-=-=-=-=-=-=-=-=-
- [opalestate_search_properties] => Show Search Properties horizontal form - [opalestate_search_properties] => Show Search Properties horizontal form
- [opalestate_search_properties_v] => Show Search Properties vertical form - [opalestate_search_properties_result] => Show Collection Results Working with
- [opalestate_search_properties_result] => Show Search Results - [opalestate_search_map_properties] => Show Map + Search Box and Properties
- [opalestate_search_map_properties] => Show Search Map Properties - [opalestate_search_split_maps] => Ajax Search Split Map With Collection
- [opalestate_ajax_map_search] => Ajax Search Map Properties - [opalestate_ajax_map_search] => Ajax Search Map Properties And Horizontal Search
- [opalestate_ajax_map_quick_search] => Ajax Search Map Properties
- [opalestate_register_form] => Register User Form - [opalestate_register_form] => Register User Form
- [opalestate_login_form] => Login Form - [opalestate_login_form] => Login Form
- [opalestate_properties] => Display list of property estate in grid with pagination
- [opalestate_search_agents] => Dislay Search box and agents collection
- [opalestate_agent_carousel] => Display List of Agent in carousel style
- [opalestate_agency_carousel] => Display List of Agency in carousel style
= Elementor Widgets = = Elementor Widgets =

View File

@ -39,7 +39,7 @@
<?php endif; ?> <?php endif; ?>
<div class="agents-collection-wrap"> <div class="agents-collection-wrap">
<?php if( $query->have_posts() ): ?> <?php if( $query->have_posts() ): ?>
<div class="agents-container"> <div class="agents-container">
<div <?php echo $attrs; ?>> <div <?php echo $attrs; ?>>
<?php $cnt=0; while( $query->have_posts() ): $query->the_post(); ?> <?php $cnt=0; while( $query->have_posts() ): $query->the_post(); ?>
<div class="column-item "> <div class="column-item ">

View File

@ -1,37 +1,10 @@
<?php <?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$rowcls = apply_filters( 'opalestate_row_container_class', 'opal-row' ); $rowcls = apply_filters( 'opalestate_row_container_class', 'opal-row' );
$atts = array(
'paged' => 1,
'search_form' => $settings['search_form']
);
?> ?>
<div class="ajax-map-search-split full-width"> <?php echo opalestate_load_template_path( 'shortcodes/search-split-maps', $atts ); ?>
<div class="inner">
<div class="<?php echo esc_attr( $rowcls ); ?>">
<div class="col-lg-6 col-md-12 col-sm-12 split-maps-container">
<div id="opalestate-map-preview" style="height:800px;" data-page="<?php echo esc_attr( $paged ); ?>">
<div id="mapView">
<div class="mapPlaceholder"><span class="fa fa-spin fa-spinner"></span> <?php esc_html_e( 'Loading map...', 'opalestate-pro' ); ?>
<div class="sk-folding-cube">
<div class="sk-cube1 sk-cube"></div>
<div class="sk-cube2 sk-cube"></div>
<div class="sk-cube4 sk-cube"></div>
<div class="sk-cube3 sk-cube"></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-12 pull-right">
<div class="split-search-container">
<div class="ajax-search-form">
<?php echo opalestate_load_template_path( 'search-box/' . $settings['search_form'], [ 'nobutton' => true ] ); ?>
</div>
<div class="opalesate-properties-ajax opalesate-properties-results" data-mode="html">
<?php echo opalestate_load_template_path( 'shortcodes/ajax-map-search-result', [ 'column' => 2 ] ); ?>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -36,6 +36,9 @@ switch ( $supports[ $post_type ]['post_type'] ) {
break; break;
} }
if( !is_object($object) ) {
return;
}
$cpt_feature = $supports[ $post_type ]['features_cpt']; $cpt_feature = $supports[ $post_type ]['features_cpt'];
$features = Opalestate_Rating_Helper::get_features( $cpt_feature ); $features = Opalestate_Rating_Helper::get_features( $cpt_feature );

View File

@ -0,0 +1,37 @@
<?php
$_id = time();
$query = Opalestate_Query::get_agencies( array("posts_per_page"=>$limit, 'paged' => $paged), $onlyfeatured );
$item = $column;
$data = [
'slidesPerView' => $item,
'spaceBetween' => 30,
'slidesPerGroup' => $item,
'loop' => false,
];
?>
<div class="opalesate-agency-carousel opalestate-rows">
<?php if ( $query->have_posts() ) : ?>
<div class="opalestate-swiper-play swiper-container" id="postcarousel-<?php echo esc_attr( $_id ); ?>" data-swiper="<?php echo esc_attr( wp_json_encode( $data ) ); ?>">
<div class="swiper-wrapper">
<?php
$column = 5;
$clscol = floor( 12 / $column );
while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="swiper-slide">
<?php echo opalestate_load_template_path( 'content-agency-grid' ); ?>
</div>
<?php endwhile; ?>
</div>
<?php if ( absint( $query->post_count ) > absint( $item ) ) : ?>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"> <i class="fas fa-angle-left"></i></div>
<div class="swiper-button-next"> <i class="fas fa-angle-right"></i></div>
<?php endif; ?>
</div>
<?php else: ?>
<?php echo opalestate_load_template_path( 'content-no-results' ); ?>
<?php endif; ?>
</div>

View File

@ -0,0 +1,37 @@
<?php
$_id = time();
$query = Opalestate_Query::get_agents( array("posts_per_page"=>$limit, 'paged' => $paged), $onlyfeatured );
$item = $column;
$data = [
'slidesPerView' => $item,
'spaceBetween' => 30,
'slidesPerGroup' => $item,
'loop' => false,
];
?>
<div class="opalesate-agent-carousel opalestate-rows">
<?php if ( $query->have_posts() ) : ?>
<div class="opalestate-swiper-play swiper-container" id="postcarousel-<?php echo esc_attr( $_id ); ?>" data-swiper="<?php echo esc_attr( wp_json_encode( $data ) ); ?>">
<div class="swiper-wrapper">
<?php
$column = 5;
$clscol = floor( 12 / $column );
while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="swiper-slide">
<?php echo opalestate_load_template_path( 'content-agent-grid' ); ?>
</div>
<?php endwhile; ?>
</div>
<?php if ( absint( $query->post_count ) > absint( $item ) ) : ?>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"> <i class="fas fa-angle-left"></i></div>
<div class="swiper-button-next"> <i class="fas fa-angle-right"></i></div>
<?php endif; ?>
</div>
<?php else: ?>
<?php echo opalestate_load_template_path( 'content-no-results' ); ?>
<?php endif; ?>
</div>

View File

@ -1,22 +1,45 @@
<?php <?php
$args = [ $args = [
'posts_per_page' => -1, 'posts_per_page' => $posts_per_page,
'showmode' => $showmode,
'categories' => $categories,
'types' => $types,
'labels' => $labels,
'cities' => $cities,
'statuses' => $statuses,
]; ];
$query = Opalestate_Query::get_property_query( $args ); $query = Opalestate_Query::get_property_query( $args );
$class = 'column-item'; $class = 'column-item';
$clscol = floor( 12 / $column );
?> ?>
<div class="opalesate-property-collection"> <div class="opalesate-property-collection">
<?php if ( $query->have_posts() ): ?> <?php if ( $query->have_posts() ): ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?> <div class="opal-row">
<div class="column-item"> <?php $cnt=0; while ( $query->have_posts() ) : $query->the_post(); ?>
<?php echo opalestate_load_template_path( 'content-property-grid-v2' ); ?> <?php
</div> $cls = '';
<?php endwhile; ?> if ( $cnt++ % $column == 0 ) {
$cls .= ' first-child';
}
?>
<div class="<?php echo $cls; ?> col-lg-<?php echo esc_attr( $clscol ); ?> col-md-<?php echo esc_attr( $clscol ); ?> col-sm-6" data-related="map" data-id="<?php echo
esc_attr( $cnt - 1 );
?>">
<?php echo opalestate_load_template_path( $layout ); ?>
</div>
<?php endwhile; ?>
</div>
<?php if ( $query->max_num_pages > 1 && $show_pagination ): ?>
<div class="w-pagination"><?php opalestate_pagination( $query->max_num_pages ); ?></div>
<?php endif; ?>
<?php else: ?> <?php else: ?>
<?php echo opalestate_load_template_path( 'content-no-results' ); ?> <?php echo opalestate_load_template_path( 'content-no-results' ); ?>
<?php endif; ?> <?php endif; ?>

View File

@ -0,0 +1,4 @@
<div class="search-agency-form-wrap">
<?php echo opalestate_load_template_path( 'parts/'.$form, array('current_uri' => $current_uri ) ); ?>
</div>

View File

@ -1,5 +0,0 @@
<div class="opalestate-search-properties-v">
<div class="search-properies-form">
<?php echo opalestate_load_template_path( 'parts/search-form-v' ); ?>
</div>
</div>

View File

@ -0,0 +1,31 @@
<div class="ajax-map-search-split full-width">
<div class="inner">
<div class="opal-row">
<div class="col-lg-6 col-md-12 col-sm-12 split-maps-container">
<div id="opalestate-map-preview" style="height:800px;" data-page="<?php echo esc_attr( $paged ); ?>">
<div id="mapView">
<div class="mapPlaceholder"><span class="fa fa-spin fa-spinner"></span> <?php esc_html_e( 'Loading map...', 'opalestate-pro' ); ?>
<div class="sk-folding-cube">
<div class="sk-cube1 sk-cube"></div>
<div class="sk-cube2 sk-cube"></div>
<div class="sk-cube4 sk-cube"></div>
<div class="sk-cube3 sk-cube"></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-md-12 col-sm-12 pull-right">
<div class="split-search-container">
<div class="ajax-search-form">
<?php echo opalestate_load_template_path( 'search-box/'.$search_form, [ 'nobutton' => true ] ); ?>
</div>
<div class="opalesate-properties-ajax opalesate-properties-results" data-mode="html">
<?php echo opalestate_load_template_path( 'shortcodes/ajax-map-search-result', [ 'column' => 2 ] ); ?>
</div>
</div>
</div>
</div>
</div>
</div>